summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camera/CameraMetadata.cpp10
-rw-r--r--cmds/screenrecord/Android.mk7
-rw-r--r--cmds/screenrecord/EglWindow.cpp146
-rw-r--r--cmds/screenrecord/EglWindow.h84
-rw-r--r--cmds/screenrecord/FontBitmap.h6571
-rw-r--r--cmds/screenrecord/Overlay.cpp401
-rw-r--r--cmds/screenrecord/Overlay.h157
-rw-r--r--cmds/screenrecord/Program.cpp303
-rw-r--r--cmds/screenrecord/Program.h92
-rw-r--r--cmds/screenrecord/TextRenderer.cpp358
-rw-r--r--cmds/screenrecord/TextRenderer.h140
-rw-r--r--cmds/screenrecord/screenrecord.cpp310
-rw-r--r--cmds/screenrecord/screenrecord.h23
-rw-r--r--include/camera/CameraMetadata.h5
-rw-r--r--include/media/AudioTrack.h10
-rw-r--r--include/media/IAudioFlinger.h1
-rw-r--r--include/media/MediaPlayerInterface.h1
-rw-r--r--include/media/stagefright/ACodec.h1
-rw-r--r--include/media/stagefright/CameraSourceTimeLapse.h6
-rw-r--r--include/media/stagefright/DataSource.h4
-rw-r--r--include/media/stagefright/Utils.h3
-rw-r--r--include/private/media/AudioTrackShared.h5
-rwxr-xr-xlibvideoeditor/lvpp/VideoEditorPlayer.h1
-rw-r--r--media/libmedia/AudioTrack.cpp20
-rw-r--r--media/libmedia/AudioTrackShared.cpp10
-rw-r--r--media/libmedia/IAudioFlinger.cpp5
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp19
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.h11
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.cpp31
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.h3
-rw-r--r--media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp11
-rw-r--r--media/libstagefright/ACodec.cpp27
-rw-r--r--media/libstagefright/AudioSource.cpp4
-rw-r--r--media/libstagefright/AwesomePlayer.cpp55
-rw-r--r--media/libstagefright/CameraSourceTimeLapse.cpp12
-rw-r--r--media/libstagefright/DataSource.cpp43
-rw-r--r--media/libstagefright/MPEG4Extractor.cpp26
-rw-r--r--media/libstagefright/MediaCodec.cpp3
-rw-r--r--media/libstagefright/MetaData.cpp3
-rw-r--r--media/libstagefright/OMXCodec.cpp8
-rw-r--r--media/libstagefright/TimedEventQueue.cpp94
-rw-r--r--media/libstagefright/Utils.cpp5
-rw-r--r--media/libstagefright/include/TimedEventQueue.h4
-rw-r--r--media/libstagefright/mpeg2ts/ATSParser.cpp5
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.cpp40
-rw-r--r--media/libstagefright/omx/GraphicBufferSource.h5
-rw-r--r--media/libstagefright/omx/OMXNodeInstance.cpp19
-rw-r--r--services/audioflinger/AudioFlinger.cpp11
-rw-r--r--services/audioflinger/AudioFlinger.h1
-rw-r--r--services/audioflinger/PlaybackTracks.h10
-rw-r--r--services/audioflinger/RecordTracks.h3
-rw-r--r--services/audioflinger/Threads.cpp205
-rw-r--r--services/audioflinger/Threads.h13
-rw-r--r--services/audioflinger/TrackBase.h3
-rw-r--r--services/audioflinger/Tracks.cpp46
-rw-r--r--services/camera/libcameraservice/Android.mk1
-rw-r--r--services/camera/libcameraservice/CameraService.cpp5
-rw-r--r--services/camera/libcameraservice/api1/Camera2Client.cpp19
-rw-r--r--services/camera/libcameraservice/api1/client2/FrameProcessor.cpp181
-rw-r--r--services/camera/libcameraservice/api1/client2/FrameProcessor.h30
-rw-r--r--services/camera/libcameraservice/api1/client2/Parameters.cpp56
-rw-r--r--services/camera/libcameraservice/api1/client2/Parameters.h3
-rw-r--r--services/camera/libcameraservice/api2/CameraDeviceClient.cpp3
-rw-r--r--services/camera/libcameraservice/common/FrameProcessorBase.cpp17
-rw-r--r--services/camera/libcameraservice/common/FrameProcessorBase.h7
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp256
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.h31
-rw-r--r--services/camera/libcameraservice/utils/CameraTraces.cpp94
-rw-r--r--services/camera/libcameraservice/utils/CameraTraces.h66
69 files changed, 9725 insertions, 438 deletions
diff --git a/camera/CameraMetadata.cpp b/camera/CameraMetadata.cpp
index f447c5b..7765914 100644
--- a/camera/CameraMetadata.cpp
+++ b/camera/CameraMetadata.cpp
@@ -133,11 +133,19 @@ void CameraMetadata::acquire(CameraMetadata &other) {
}
status_t CameraMetadata::append(const CameraMetadata &other) {
+ return append(other.mBuffer);
+}
+
+status_t CameraMetadata::append(const camera_metadata_t* other) {
if (mLocked) {
ALOGE("%s: CameraMetadata is locked", __FUNCTION__);
return INVALID_OPERATION;
}
- return append_camera_metadata(mBuffer, other.mBuffer);
+ size_t extraEntries = get_camera_metadata_entry_count(other);
+ size_t extraData = get_camera_metadata_data_count(other);
+ resizeIfNeeded(extraEntries, extraData);
+
+ return append_camera_metadata(mBuffer, other);
}
size_t CameraMetadata::entryCount() const {
diff --git a/cmds/screenrecord/Android.mk b/cmds/screenrecord/Android.mk
index b4a5947..d77fdb6 100644
--- a/cmds/screenrecord/Android.mk
+++ b/cmds/screenrecord/Android.mk
@@ -18,10 +18,14 @@ include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
screenrecord.cpp \
+ EglWindow.cpp \
+ TextRenderer.cpp \
+ Overlay.cpp \
+ Program.cpp
LOCAL_SHARED_LIBRARIES := \
libstagefright libmedia libutils libbinder libstagefright_foundation \
- libjpeg libgui libcutils liblog
+ libjpeg libgui libcutils liblog libEGL libGLESv2
LOCAL_C_INCLUDES := \
frameworks/av/media/libstagefright \
@@ -30,6 +34,7 @@ LOCAL_C_INCLUDES := \
external/jpeg
LOCAL_CFLAGS += -Wno-multichar
+#LOCAL_CFLAGS += -UNDEBUG
LOCAL_MODULE_TAGS := optional
diff --git a/cmds/screenrecord/EglWindow.cpp b/cmds/screenrecord/EglWindow.cpp
new file mode 100644
index 0000000..aa0517f
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.cpp
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#define EGL_EGLEXT_PROTOTYPES
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+
+#include "EglWindow.h"
+
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+
+status_t EglWindow::createWindow(const sp<IGraphicBufferProducer>& surface) {
+ status_t err = eglSetupContext();
+ if (err != NO_ERROR) {
+ return err;
+ }
+
+ surface->query(NATIVE_WINDOW_WIDTH, &mWidth);
+ surface->query(NATIVE_WINDOW_HEIGHT, &mHeight);
+
+ // Output side (EGL surface to draw on).
+ sp<ANativeWindow> anw = new Surface(surface);
+ mEglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, anw.get(),
+ NULL);
+ if (mEglSurface == EGL_NO_SURFACE) {
+ ALOGE("eglCreateWindowSurface error: %#x", eglGetError());
+ eglRelease();
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+status_t EglWindow::makeCurrent() const {
+ if (!eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
+ ALOGE("eglMakeCurrent failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+ return NO_ERROR;
+}
+
+status_t EglWindow::eglSetupContext() {
+ EGLBoolean result;
+
+ mEglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
+ if (mEglDisplay == EGL_NO_DISPLAY) {
+ ALOGE("eglGetDisplay failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ EGLint majorVersion, minorVersion;
+ result = eglInitialize(mEglDisplay, &majorVersion, &minorVersion);
+ if (result != EGL_TRUE) {
+ ALOGE("eglInitialize failed: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+ ALOGV("Initialized EGL v%d.%d", majorVersion, minorVersion);
+
+ EGLint numConfigs = 0;
+ EGLint configAttribs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_RECORDABLE_ANDROID, 1,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_NONE
+ };
+ result = eglChooseConfig(mEglDisplay, configAttribs, &mEglConfig, 1,
+ &numConfigs);
+ if (result != EGL_TRUE) {
+ ALOGE("eglChooseConfig error: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ EGLint contextAttribs[] = {
+ EGL_CONTEXT_CLIENT_VERSION, 2,
+ EGL_NONE
+ };
+ mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT,
+ contextAttribs);
+ if (mEglContext == EGL_NO_CONTEXT) {
+ ALOGE("eglCreateContext error: %#x", eglGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+void EglWindow::eglRelease() {
+ ALOGV("EglWindow::eglRelease");
+ if (mEglDisplay != EGL_NO_DISPLAY) {
+ eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE,
+ EGL_NO_CONTEXT);
+
+ if (mEglContext != EGL_NO_CONTEXT) {
+ eglDestroyContext(mEglDisplay, mEglContext);
+ }
+
+ if (mEglSurface != EGL_NO_SURFACE) {
+ eglDestroySurface(mEglDisplay, mEglSurface);
+ }
+ }
+
+ mEglDisplay = EGL_NO_DISPLAY;
+ mEglContext = EGL_NO_CONTEXT;
+ mEglSurface = EGL_NO_SURFACE;
+ mEglConfig = NULL;
+
+ eglReleaseThread();
+}
+
+// Sets the presentation time on the current EGL buffer.
+void EglWindow::presentationTime(nsecs_t whenNsec) const {
+ eglPresentationTimeANDROID(mEglDisplay, mEglSurface, whenNsec);
+}
+
+// Swaps the EGL buffer.
+void EglWindow::swapBuffers() const {
+ eglSwapBuffers(mEglDisplay, mEglSurface);
+}
diff --git a/cmds/screenrecord/EglWindow.h b/cmds/screenrecord/EglWindow.h
new file mode 100644
index 0000000..02a2efc
--- /dev/null
+++ b/cmds/screenrecord/EglWindow.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2013 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 SCREENRECORD_EGL_WINDOW_H
+#define SCREENRECORD_EGL_WINDOW_H
+
+#include <gui/BufferQueue.h>
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Wraps EGL display, context, surface, config for a window surface.
+ *
+ * Not thread safe.
+ */
+class EglWindow {
+public:
+ EglWindow() :
+ mEglDisplay(EGL_NO_DISPLAY),
+ mEglContext(EGL_NO_CONTEXT),
+ mEglSurface(EGL_NO_SURFACE),
+ mEglConfig(NULL),
+ mWidth(0),
+ mHeight(0)
+ {}
+ ~EglWindow() { eglRelease(); }
+
+ // Creates an EGL window for the supplied surface.
+ status_t createWindow(const sp<IGraphicBufferProducer>& surface);
+
+ // Return width and height values (obtained from IGBP).
+ int getWidth() const { return mWidth; }
+ int getHeight() const { return mHeight; }
+
+ // Release anything we created.
+ void release() { eglRelease(); }
+
+ // Make this context current.
+ status_t makeCurrent() const;
+
+ // Sets the presentation time on the current EGL buffer.
+ void presentationTime(nsecs_t whenNsec) const;
+
+ // Swaps the EGL buffer.
+ void swapBuffers() const;
+
+private:
+ EglWindow(const EglWindow&);
+ EglWindow& operator=(const EglWindow&);
+
+ // Init display, create config and context.
+ status_t eglSetupContext();
+ void eglRelease();
+
+ // Basic EGL goodies.
+ EGLDisplay mEglDisplay;
+ EGLContext mEglContext;
+ EGLSurface mEglSurface;
+ EGLConfig mEglConfig;
+
+ // Surface dimensions.
+ int mWidth;
+ int mHeight;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_EGL_WINDOW_H*/
diff --git a/cmds/screenrecord/FontBitmap.h b/cmds/screenrecord/FontBitmap.h
new file mode 100644
index 0000000..2b94f35
--- /dev/null
+++ b/cmds/screenrecord/FontBitmap.h
@@ -0,0 +1,6571 @@
+// auto-generated from Android default system font at 24pts
+class FontBitmap {
+public:
+ static const uint32_t width = 256;
+ static const uint32_t height = 204;
+ static const uint32_t numGlyphs = 95;
+ static const uint32_t firstGlyphChar = 32;
+ static const uint32_t maxGlyphHeight = 34;
+ static const uint32_t outlineWidth = 1;
+ static const uint8_t pixels[];
+ static const uint16_t yoffset[];
+ static const uint16_t glyphWidth[];
+};
+const uint8_t FontBitmap::pixels[] = {
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0xca, 0xd2,
+ 0xb4, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xe, 0x40, 0x68, 0x62, 0x4a,
+ 0x4a, 0x6a, 0x5c, 0x30, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4, 0x9b, 0xd7,
+ 0x4b, 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0x40, 0x68, 0x66, 0x3e, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0x66, 0x9a, 0x98,
+ 0x56, 0x0, 0x1c, 0xa0, 0xa8, 0x9c, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x3e, 0x27, 0x67, 0x67, 0x13,
+ 0x39, 0x67, 0x61, 0xde, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x12, 0x16, 0x10, 0x6,
+ 0xc, 0x16, 0x14, 0xa, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x14, 0xe4, 0xbb, 0xff,
+ 0x5b, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x10, 0x3e, 0x5a, 0x54, 0x2c,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1a, 0x4a, 0x6c, 0x62, 0x38, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3e, 0x27, 0x67, 0x67, 0x21, 0x32, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x9c, 0xd, 0x9d, 0x8d,
+ 0xcc, 0x0, 0x74, 0x43, 0xc7, 0x39, 0xdc, 0x24,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x14, 0x18, 0x10, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa, 0x14, 0x1a, 0x12, 0x6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0x4a, 0x6c, 0x68, 0x40,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x2a, 0x58, 0x76,
+ 0x68, 0x3e, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x54, 0x11, 0x23, 0x23, 0x23, 0xfe,
+ 0x0, 0x0, 0x0, 0x64, 0x63, 0xff, 0xff, 0x35,
+ 0x8d, 0xff, 0xf1, 0xf8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x9c, 0x19, 0x23, 0x15, 0x7e,
+ 0xb, 0x23, 0x21, 0xb8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xba, 0xfe, 0x35, 0xcb, 0xff,
+ 0x77, 0x5, 0xd8, 0x4a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0x78, 0xfc, 0x2f, 0x5f, 0x51, 0x19,
+ 0xe0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x20, 0xba, 0xfe, 0x41, 0x67, 0x5f, 0x21, 0xf2,
+ 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x63, 0xff, 0xff, 0x57, 0x4e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x88, 0x15, 0xcb, 0xff, 0xdb,
+ 0xd4, 0x0, 0x7a, 0x9b, 0xff, 0xef, 0x4f, 0xd8,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x9c, 0x1d, 0x23, 0x13, 0x56, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xfa, 0x21, 0x23, 0x17, 0x5a, 0x0, 0x0, 0x0,
+ 0x0, 0x3e, 0xd0, 0xfe, 0x43, 0x67, 0x61, 0x33,
+ 0xfe, 0xae, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x16, 0x4e, 0x98, 0xd4, 0xf8,
+ 0x5, 0xde, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x70, 0xf0, 0x11, 0x53, 0x69,
+ 0x5f, 0x2f, 0xfe, 0xb2, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xff, 0x27,
+ 0x8d, 0xff, 0xeb, 0xfc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0x89, 0xbe,
+ 0x71, 0xff, 0xdf, 0xdc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x38, 0xf6, 0x5d, 0xd9, 0xff, 0xff, 0xff,
+ 0xff, 0xe9, 0x7f, 0xfe, 0x5e, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0xb, 0xaf, 0xff, 0xff, 0xff, 0xf1,
+ 0x71, 0xec, 0x16, 0x4, 0x38, 0x38, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xde, 0x49, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x97,
+ 0xfe, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xff, 0x4d, 0x4c, 0x0, 0x0,
+ 0x0, 0x0, 0x42, 0xfe, 0xbb, 0xff, 0xfb, 0x5f,
+ 0xc0, 0x0, 0x6a, 0x25, 0xdf, 0xff, 0xed, 0x33,
+ 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd2, 0xcb, 0xff, 0x89, 0x84, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62,
+ 0x31, 0xff, 0xff, 0x8d, 0x66, 0x0, 0x0, 0x0,
+ 0x4e, 0xfe, 0x71, 0xe5, 0xff, 0xff, 0xff, 0xff,
+ 0xd1, 0x4b, 0xe8, 0x24, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0xe8, 0xfe, 0x37, 0x73, 0xa3, 0xcf,
+ 0xf5, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xa6, 0x15, 0xa5, 0xf7, 0xff, 0xff,
+ 0xff, 0xff, 0xd3, 0x53, 0xf2, 0x2e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xf5, 0xfe,
+ 0x8d, 0xff, 0xd1, 0xf6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0xfe, 0xef, 0xff, 0x5b, 0xe2,
+ 0x9b, 0xff, 0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd4, 0x6b, 0xfd, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x95, 0xf6, 0x16, 0x0, 0x0,
+ 0x0, 0xc4, 0x8f, 0xff, 0xff, 0xbf, 0xdb, 0xff,
+ 0xf9, 0x39, 0x5e, 0x68, 0x13, 0x67, 0xfe, 0x6c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+ 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x89, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xff, 0x19, 0x2a, 0x0, 0x0,
+ 0x0, 0x4, 0xda, 0x77, 0xff, 0xff, 0x89, 0xf4,
+ 0x30, 0x0, 0xc, 0xc0, 0x41, 0xf9, 0xff, 0xc9,
+ 0xfe, 0x3c, 0x0, 0x0, 0x0, 0x6, 0x2e, 0x2e,
+ 0x2a, 0xe8, 0xbf, 0xff, 0x7b, 0x9e, 0x1a, 0x1a,
+ 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2,
+ 0x1a, 0x32, 0x46, 0x34, 0x1c, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+ 0x8d, 0xff, 0xff, 0x31, 0x62, 0x0, 0x0, 0x12,
+ 0xf0, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xf7, 0x4f, 0xbc, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xd6, 0xaf, 0xef, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x64, 0x11, 0xd1, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xfb, 0x5d, 0xc8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xdb, 0xfe,
+ 0x8d, 0xff, 0xb5, 0xe2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x3c, 0x29, 0xff, 0xff, 0x23, 0xf2,
+ 0xc3, 0xff, 0x93, 0xc2, 0x0, 0x0, 0x0, 0x0,
+ 0x22, 0x9, 0xe9, 0xff, 0xff, 0xef, 0x93, 0x89,
+ 0xe5, 0xff, 0xff, 0xfd, 0x39, 0x68, 0x0, 0x0,
+ 0x0, 0xf2, 0xd5, 0xff, 0xa7, 0xfe, 0xf, 0xeb,
+ 0xff, 0x87, 0xac, 0xf4, 0x9b, 0xff, 0xa3, 0x7a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc8,
+ 0x9f, 0xff, 0xff, 0xed, 0x85, 0x9d, 0xfd, 0xff,
+ 0xeb, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xe7, 0xfe, 0x6, 0x0, 0x0,
+ 0x0, 0x4c, 0x11, 0xed, 0xff, 0xdf, 0x9, 0x52,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0xa3, 0xff, 0xff,
+ 0x6f, 0xc0, 0x0, 0x0, 0x0, 0x42, 0x17, 0x57,
+ 0xfe, 0xf8, 0xb5, 0xff, 0x6d, 0xec, 0x5, 0x41,
+ 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0xb, 0x3f, 0x3f, 0x3f, 0xf, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xfe,
+ 0xd5, 0xff, 0xd1, 0xfc, 0x12, 0x0, 0x0, 0x68,
+ 0x31, 0xf9, 0xff, 0xff, 0xdf, 0x89, 0x95, 0xf3,
+ 0xff, 0xff, 0xdd, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0xe4, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe0, 0x9b, 0xff, 0xff, 0xff, 0xbd, 0x7f,
+ 0x9f, 0xf9, 0xff, 0xff, 0xe3, 0xfe, 0x20, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x7a, 0x63, 0xff, 0xbf, 0xf8,
+ 0x8d, 0xff, 0x95, 0xc2, 0x0, 0x0, 0x0, 0x14,
+ 0x34, 0x50, 0xaa, 0x5f, 0xff, 0xeb, 0xfe, 0xfe,
+ 0xe5, 0xff, 0x69, 0xb0, 0x36, 0x16, 0x0, 0x0,
+ 0x4e, 0x4d, 0xff, 0xff, 0xff, 0x73, 0xf2, 0xe6,
+ 0x3b, 0xfd, 0xff, 0xff, 0x93, 0xb4, 0x0, 0x0,
+ 0x0, 0xfa, 0xeb, 0xff, 0x83, 0xbe, 0xf8, 0xcd,
+ 0xff, 0xa1, 0xea, 0x43, 0xfb, 0xf9, 0x3d, 0x7a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe8,
+ 0xcd, 0xff, 0xff, 0x83, 0xf4, 0xfe, 0xc1, 0xff,
+ 0xff, 0x15, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0x63, 0xff, 0xc7, 0xf0, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0x7f, 0xff, 0xff, 0x7f, 0xcc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x74, 0x2d, 0xfd, 0xff,
+ 0xd9, 0xfe, 0x22, 0x0, 0x0, 0x82, 0x71, 0xff,
+ 0xdb, 0x85, 0xb1, 0xff, 0x71, 0x8f, 0xe5, 0xeb,
+ 0x5, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x37,
+ 0xff, 0xff, 0x89, 0xc4, 0x0, 0x0, 0x0, 0xbe,
+ 0x93, 0xff, 0xff, 0xf5, 0x27, 0xe0, 0xf2, 0x61,
+ 0xff, 0xff, 0xff, 0x57, 0x76, 0x0, 0x0, 0x0,
+ 0x0, 0xcc, 0x8f, 0xa7, 0xa7, 0xc9, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0xfe, 0xed, 0xff, 0xff, 0xbf, 0xfe, 0xcc,
+ 0xfa, 0x89, 0xff, 0xff, 0xff, 0x47, 0x4e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x60, 0x63, 0xff, 0xa1, 0xe4,
+ 0x8d, 0xff, 0x75, 0x8a, 0x0, 0x0, 0x0, 0x7e,
+ 0x33, 0x4d, 0x4d, 0xa1, 0xff, 0xd5, 0x4d, 0x55,
+ 0xff, 0xff, 0x6b, 0x4d, 0x37, 0x8e, 0x0, 0x0,
+ 0x64, 0x63, 0xff, 0xff, 0xff, 0x49, 0x8a, 0x18,
+ 0xfc, 0xe1, 0xff, 0xff, 0xb7, 0xb6, 0x0, 0x0,
+ 0x0, 0xf8, 0xdf, 0xff, 0x91, 0xf4, 0xfe, 0xdb,
+ 0xff, 0x93, 0xfe, 0xcf, 0xff, 0x97, 0xf2, 0x1a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xcf, 0xff, 0xff, 0x7d, 0xe0, 0xfe, 0xd3, 0xff,
+ 0xf5, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x60, 0x63, 0xff, 0xa3, 0xc4, 0x0, 0x0, 0x0,
+ 0x8, 0xfa, 0xcf, 0xff, 0xfb, 0x21, 0x50, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xfc, 0xcb, 0xff,
+ 0xff, 0x4d, 0x78, 0x0, 0x0, 0x80, 0x8f, 0xf9,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0x43, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x91,
+ 0xff, 0xff, 0x2f, 0x5e, 0x0, 0x0, 0x0, 0xec,
+ 0xc7, 0xff, 0xff, 0xc3, 0xf8, 0xc, 0x30, 0xfe,
+ 0xef, 0xff, 0xff, 0x93, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0xa0, 0xc8, 0xee, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0x33, 0xff, 0xff, 0xff, 0x77, 0xac, 0x0,
+ 0x80, 0x43, 0xff, 0xff, 0xff, 0x67, 0x68, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x3a, 0x1f, 0x51, 0x2d, 0xa8,
+ 0x2d, 0x51, 0x1d, 0x46, 0x0, 0x0, 0x0, 0xac,
+ 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xbb, 0xbc, 0x0, 0x0,
+ 0x4c, 0x49, 0xff, 0xff, 0xff, 0x85, 0xf6, 0x60,
+ 0xc2, 0x47, 0x57, 0x57, 0x41, 0x8e, 0x0, 0x0,
+ 0x0, 0xdc, 0xb1, 0xff, 0xeb, 0x7b, 0x99, 0xff,
+ 0xff, 0x5d, 0x7d, 0xff, 0xdf, 0xf, 0x60, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xce,
+ 0xa7, 0xff, 0xff, 0xcb, 0xb, 0x9b, 0xff, 0xff,
+ 0xaf, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3a, 0x1d, 0x4d, 0x29, 0x74, 0x0, 0x0, 0x0,
+ 0x32, 0x1f, 0xfb, 0xff, 0xd5, 0xfc, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0x95, 0xff,
+ 0xff, 0x9b, 0xc6, 0x0, 0x0, 0x58, 0xee, 0x13,
+ 0x67, 0xbd, 0xff, 0xff, 0xf7, 0xaf, 0x6b, 0x19,
+ 0xee, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0xfe, 0xd9,
+ 0xff, 0xcf, 0xfc, 0x10, 0x0, 0x0, 0x0, 0xf8,
+ 0xdf, 0xff, 0xff, 0xa9, 0xda, 0x0, 0x0, 0xfa,
+ 0xd7, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0x1b, 0x63, 0x63, 0x63, 0x27, 0x4a, 0x0,
+ 0xa2, 0x5b, 0xff, 0xff, 0xff, 0x51, 0x58, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x8, 0x2e, 0x3a, 0x34, 0x1e,
+ 0x34, 0x3a, 0x2e, 0x8, 0x0, 0x0, 0x0, 0xa4,
+ 0x93, 0xdd, 0xdd, 0xfb, 0xff, 0xe7, 0xdd, 0xed,
+ 0xff, 0xf5, 0xdd, 0xdd, 0xa1, 0xb6, 0x0, 0x0,
+ 0x20, 0x9, 0xe9, 0xff, 0xff, 0xf9, 0x93, 0x1b,
+ 0xee, 0x9a, 0x6c, 0x5e, 0x40, 0x1a, 0x0, 0x0,
+ 0x0, 0x82, 0x2d, 0xe7, 0xff, 0xff, 0xff, 0xff,
+ 0xb5, 0x27, 0xf1, 0xff, 0x59, 0xc4, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+ 0x3d, 0xfb, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xdf,
+ 0x21, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x2a, 0x36, 0x30, 0xe, 0x0, 0x0, 0x0,
+ 0x6e, 0x59, 0xff, 0xff, 0xaf, 0xe2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x65, 0xff,
+ 0xff, 0xc9, 0xf0, 0x0, 0x0, 0x0, 0x4, 0x8e,
+ 0xd, 0xd1, 0xff, 0xfb, 0xfd, 0x5b, 0xee, 0x48,
+ 0x6, 0x0, 0x0, 0x20, 0x7a, 0xb0, 0xc8, 0xd4,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0xd8, 0xc8, 0xb0,
+ 0x7c, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c, 0x3b, 0xff,
+ 0xff, 0x87, 0xc2, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+ 0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x38, 0x60, 0x7a, 0x62, 0x3c, 0xc, 0x30,
+ 0xfc, 0xb7, 0xff, 0xff, 0xf3, 0x17, 0x2c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a,
+ 0xce, 0xf0, 0x5, 0xf9, 0xff, 0x4f, 0xfe, 0xa9,
+ 0xff, 0xb1, 0xfe, 0xf2, 0xd2, 0x68, 0x0, 0x0,
+ 0x0, 0xd2, 0x67, 0xfb, 0xff, 0xff, 0xff, 0xf3,
+ 0xa5, 0x2f, 0xf0, 0x5a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x10, 0xc8, 0x19, 0x85, 0xab, 0xa1, 0x69,
+ 0xfe, 0xb7, 0xff, 0xb1, 0xfc, 0x2c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0xfc, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x23,
+ 0xbc, 0x46, 0x6a, 0x7a, 0x52, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa0, 0x81, 0xff, 0xff, 0x95, 0xc2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x54, 0x43, 0xff,
+ 0xff, 0xe9, 0xfe, 0x0, 0x0, 0x0, 0x38, 0xfe,
+ 0xa7, 0xff, 0xd9, 0x7d, 0xff, 0xeb, 0x29, 0x9e,
+ 0x0, 0x0, 0x0, 0x5a, 0x49, 0x9f, 0x9f, 0x9f,
+ 0xa9, 0xff, 0xff, 0xff, 0xad, 0x9f, 0x9f, 0x9f,
+ 0x4d, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0xa6, 0xd0,
+ 0xdc, 0xdc, 0xdc, 0xda, 0xb8, 0x74, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x93, 0xff,
+ 0xfd, 0x2d, 0x5a, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0xe0,
+ 0x5f, 0xff, 0xff, 0xff, 0x99, 0xe8, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4e, 0x3d, 0xff, 0xfd, 0x15, 0xf8, 0xcf,
+ 0xff, 0x89, 0xb4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0xf2, 0x53, 0xdb, 0xff, 0xff, 0xff,
+ 0xff, 0xf9, 0x93, 0x5, 0x84, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x52, 0xa0, 0xc6, 0xc0, 0xe6,
+ 0x5d, 0xff, 0xef, 0x25, 0xd6, 0xd4, 0xd4, 0xaa,
+ 0x54, 0x4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xda,
+ 0x3b, 0xdb, 0xff, 0xff, 0xff, 0xfb, 0x47, 0xec,
+ 0x36, 0xf, 0x6f, 0x6f, 0x43, 0x6e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xbc, 0x95, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x27, 0xff,
+ 0xff, 0xfb, 0xfe, 0x6, 0x0, 0x0, 0x40, 0x6b,
+ 0xff, 0xff, 0x51, 0xfe, 0xd1, 0xff, 0xcb, 0xb4,
+ 0x0, 0x0, 0x0, 0x86, 0x77, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x7b, 0x8a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x87, 0xb3,
+ 0xb3, 0xb3, 0xb3, 0xb3, 0xab, 0xec, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe, 0xdb, 0xff,
+ 0xcd, 0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xc6, 0x37,
+ 0xf1, 0xff, 0xff, 0xd5, 0xf, 0x64, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xc0,
+ 0xea, 0xfa, 0x6f, 0xff, 0xe3, 0xfe, 0xfe, 0xf1,
+ 0xff, 0x5b, 0xf6, 0xd2, 0x78, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x26, 0xbc, 0x5, 0x6d, 0xc9, 0xff,
+ 0xff, 0xff, 0xff, 0xb9, 0xfe, 0x34, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x11,
+ 0xe3, 0xff, 0x79, 0x13, 0x8b, 0xb7, 0xb7, 0x89,
+ 0x11, 0xb0, 0x4, 0x0, 0x0, 0x0, 0xb6, 0x41,
+ 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x2d,
+ 0xca, 0x43, 0xff, 0xff, 0x93, 0x96, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc8, 0xa1, 0xff, 0xff, 0x7b, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x17, 0xff,
+ 0xff, 0xff, 0x15, 0xe, 0x0, 0x0, 0x40, 0x21,
+ 0xb7, 0xad, 0xfa, 0xbc, 0x4b, 0xf1, 0x71, 0xb0,
+ 0x0, 0x0, 0x0, 0x82, 0x77, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x7b, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc, 0xc1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfc, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6e, 0x3f, 0xff, 0xff,
+ 0x85, 0xbe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xeb, 0xff, 0xff, 0xa3, 0xce, 0x0, 0x0, 0xf2,
+ 0xd1, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa, 0xb6, 0x2b, 0xe3,
+ 0xff, 0xff, 0xeb, 0x31, 0xb0, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8e, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x77,
+ 0xd7, 0xd7, 0xe9, 0xff, 0xf5, 0xd7, 0xd7, 0xff,
+ 0xff, 0xdb, 0xd7, 0xaf, 0xce, 0x0, 0x0, 0x0,
+ 0x3a, 0x6a, 0x90, 0x80, 0x7c, 0xb8, 0xfc, 0x47,
+ 0xd3, 0xff, 0xff, 0xff, 0x65, 0x8e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x9b,
+ 0xff, 0xcb, 0x17, 0xdd, 0xff, 0xff, 0xff, 0xff,
+ 0xd9, 0x11, 0x56, 0x0, 0x0, 0x1c, 0xfe, 0xd9,
+ 0xff, 0xff, 0xd3, 0x4f, 0xf3, 0xff, 0xff, 0xd7,
+ 0x15, 0x77, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xca, 0xa3, 0xff, 0xff, 0x79, 0x9e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xf, 0xff,
+ 0xff, 0xff, 0x1d, 0xe, 0x0, 0x0, 0xa, 0x86,
+ 0xbe, 0xd, 0x76, 0x22, 0xda, 0x1f, 0xe0, 0x3e,
+ 0x0, 0x0, 0x0, 0x56, 0x41, 0x8d, 0x8d, 0x8d,
+ 0x99, 0xff, 0xff, 0xff, 0x9f, 0x8d, 0x8d, 0x8d,
+ 0x43, 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xcc, 0xc1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf5, 0xfa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd4, 0x97, 0xff, 0xfd,
+ 0x29, 0x58, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc,
+ 0xe9, 0xff, 0xff, 0xa3, 0xd0, 0x0, 0x0, 0xf4,
+ 0xd1, 0xff, 0xff, 0xbb, 0xe0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0xa8, 0x21, 0xdb, 0xff,
+ 0xff, 0xf3, 0x49, 0xd4, 0x12, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x58, 0x1b, 0x35, 0x35, 0x35, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x8d,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0xd2, 0x0, 0x0, 0x0,
+ 0xd4, 0x6d, 0x73, 0x73, 0x47, 0x88, 0x1e, 0xb2,
+ 0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x41, 0xfb,
+ 0xf9, 0x3d, 0x93, 0xff, 0xf3, 0x73, 0x79, 0xf7,
+ 0xff, 0x8b, 0xae, 0x0, 0x0, 0x48, 0x43, 0xff,
+ 0xff, 0xff, 0x67, 0xf8, 0x61, 0xfb, 0xff, 0xff,
+ 0xbf, 0xcf, 0xff, 0xff, 0x41, 0x5a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc2, 0x9b, 0xff, 0xff, 0x7f, 0xa6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x21, 0xff,
+ 0xff, 0xff, 0x5, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x2, 0x2, 0x2, 0x0, 0x8, 0x8, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0x68, 0x9c, 0xb6, 0xc2,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0xc8, 0xb6, 0x9c,
+ 0x6a, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x9, 0xd,
+ 0xd, 0xd, 0xd, 0xd, 0xb, 0xde, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0xfe, 0xdd, 0xff, 0xcb,
+ 0xfc, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8,
+ 0xdf, 0xff, 0xff, 0xa9, 0xdc, 0x0, 0x0, 0xfa,
+ 0xd7, 0xff, 0xff, 0xaf, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0x9a, 0x17, 0xd1, 0xff, 0xff,
+ 0xf9, 0x5b, 0xe4, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8, 0x1a, 0x2c, 0x36, 0x26, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x2b,
+ 0x4d, 0x4d, 0xe9, 0xff, 0x8b, 0x4d, 0xa7, 0xff,
+ 0xd3, 0x4d, 0x4d, 0x3f, 0xaa, 0x0, 0x0, 0x0,
+ 0xee, 0xe9, 0xff, 0xff, 0xaf, 0xe6, 0x6, 0x14,
+ 0xfe, 0xd9, 0xff, 0xff, 0xb9, 0xd8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xcf, 0xff,
+ 0x97, 0xfe, 0xc1, 0xff, 0xb1, 0xfa, 0xfa, 0xb9,
+ 0xff, 0xbb, 0xdc, 0x0, 0x0, 0x5c, 0x5f, 0xff,
+ 0xff, 0xff, 0x4f, 0xa8, 0xf6, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x8b, 0xff, 0xff, 0x8b, 0xb8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x35, 0xff,
+ 0xff, 0xf3, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4,
+ 0x6, 0x6, 0x6, 0x6, 0x4, 0x2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x74, 0x43, 0xff, 0xff, 0x81,
+ 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xc5, 0xff, 0xff, 0xc5, 0xf8, 0x10, 0x32, 0xfe,
+ 0xf1, 0xff, 0xff, 0x91, 0xb4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x88, 0xf, 0xc7, 0xff, 0xff, 0xfd,
+ 0x6b, 0xf0, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x30,
+ 0x68, 0x13, 0xfd, 0xff, 0x3f, 0xf2, 0xb3, 0xff,
+ 0xa7, 0xe4, 0x54, 0x3a, 0x1a, 0x0, 0x0, 0x0,
+ 0xee, 0xc9, 0xff, 0xff, 0xeb, 0x19, 0xe2, 0xe0,
+ 0x21, 0xf3, 0xff, 0xff, 0xa7, 0xc6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xe0, 0x7d, 0xff, 0xdf,
+ 0xf, 0xf0, 0xcb, 0xff, 0xa7, 0xe4, 0xe6, 0xad,
+ 0xff, 0xc5, 0xe2, 0x0, 0x0, 0x48, 0x43, 0xff,
+ 0xff, 0xff, 0x99, 0xfc, 0xd8, 0xfe, 0x9f, 0xff,
+ 0xff, 0xff, 0xff, 0x63, 0xca, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x84, 0x69, 0xff, 0xff, 0xa5, 0xd4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x57, 0xff,
+ 0xff, 0xd5, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x46, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6,
+ 0xdc, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+ 0x0, 0x0, 0x0, 0xd8, 0x9b, 0xff, 0xfb, 0x27,
+ 0x54, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+ 0x8f, 0xff, 0xff, 0xf7, 0x2d, 0xe8, 0xf4, 0x63,
+ 0xff, 0xff, 0xff, 0x53, 0x72, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x74, 0x9, 0xbd, 0xff, 0xff, 0xff, 0x7d,
+ 0xfe, 0xe6, 0xe0, 0xe0, 0xda, 0xb4, 0x66, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x4d, 0xff, 0xf9, 0x9, 0xfa, 0xd7, 0xff,
+ 0x7d, 0xa6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xb2, 0x77, 0xff, 0xff, 0xff, 0xe1, 0x95, 0x91,
+ 0xdd, 0xff, 0xff, 0xff, 0x5f, 0x8a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0x1f, 0xf1, 0xff, 0x59,
+ 0xc4, 0xd4, 0xb1, 0xff, 0xd1, 0x5, 0xfe, 0xcd,
+ 0xff, 0xab, 0xce, 0x0, 0x0, 0x1c, 0xfe, 0xdf,
+ 0xff, 0xff, 0xff, 0xb1, 0x87, 0x9f, 0xe3, 0xff,
+ 0xff, 0xff, 0xfd, 0x63, 0xea, 0x1e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x48, 0x39, 0xff, 0xff, 0xc5, 0xf4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x7f, 0xff,
+ 0xff, 0xb1, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22,
+ 0x2f, 0xff, 0xff, 0xff, 0x3f, 0x36, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3,
+ 0xaf, 0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+ 0x0, 0x0, 0x20, 0xfe, 0xe1, 0xff, 0xc9, 0xfa,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60,
+ 0x2b, 0xf7, 0xff, 0xff, 0xe5, 0x93, 0x9d, 0xf5,
+ 0xff, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xda, 0xab, 0xff, 0xff, 0xff, 0xed, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x9d, 0xd0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa4, 0x7b, 0xff, 0xd9, 0xfc, 0x5, 0xf7, 0xff,
+ 0x4f, 0x66, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x42, 0x5, 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb5, 0xfe, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xdc, 0x55, 0x8d, 0xfc,
+ 0x2c, 0x94, 0x5f, 0xff, 0xff, 0xdb, 0xd5, 0xff,
+ 0xff, 0x59, 0x8a, 0x0, 0x0, 0x0, 0xc2, 0x55,
+ 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xf5, 0x45, 0xce, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x16, 0xfe, 0xe5, 0xff, 0xef, 0x5, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb3, 0xff,
+ 0xff, 0x6d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0x11, 0x67, 0x67, 0x67, 0x19, 0x20, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff,
+ 0xc5, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36,
+ 0x0, 0x0, 0x78, 0x47, 0xff, 0xff, 0x7f, 0xb8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xea, 0x79, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xf3, 0x47, 0xb6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa2, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf6, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xf0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x94, 0xa5, 0xff, 0xb5, 0xda, 0x3d, 0xff, 0xff,
+ 0x15, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x84, 0xfe, 0x7f, 0xe1, 0xff, 0xff, 0xff,
+ 0xff, 0xdf, 0x7b, 0xfe, 0x80, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0x72, 0x72, 0x56,
+ 0x0, 0x30, 0xfe, 0x83, 0xf5, 0xff, 0xff, 0xf5,
+ 0x81, 0xfc, 0x2a, 0x0, 0x0, 0x0, 0x28, 0xec,
+ 0x47, 0xc9, 0xfd, 0xff, 0xff, 0xff, 0xf3, 0xa7,
+ 0x41, 0xe3, 0xff, 0xff, 0xe9, 0x35, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xde, 0xa5, 0xff, 0xff, 0x59, 0x98, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x44, 0xb, 0xef, 0xff,
+ 0xf3, 0x17, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0x38, 0x62, 0x80, 0x64, 0x3a, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff,
+ 0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26,
+ 0x0, 0x0, 0xdc, 0x9d, 0xff, 0xfb, 0x23, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x44, 0xf8, 0x63, 0xd9, 0xff, 0xff, 0xff, 0xfd,
+ 0xc7, 0x41, 0xe2, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0x7f, 0xff, 0xff,
+ 0xff, 0x15, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xee, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0xe8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6c, 0xfe, 0xfe, 0xfe, 0x8c, 0xfe, 0xfe, 0xfe,
+ 0xf6, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4a, 0xcc, 0xfe, 0x2f, 0xed, 0xff,
+ 0x27, 0xfe, 0xca, 0x46, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0xe8, 0xf, 0x43, 0x43, 0xf,
+ 0xe8, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0xa4, 0xfa, 0x1f, 0x4f, 0x59, 0x41, 0x9, 0xec,
+ 0xde, 0xfe, 0xfe, 0xfe, 0xfe, 0xc8, 0x10, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7a, 0x39, 0xfd, 0xff, 0xbb, 0xfa, 0x24,
+ 0x0, 0x0, 0x0, 0x4, 0xce, 0x77, 0xff, 0xff,
+ 0x9f, 0xea, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff,
+ 0xa7, 0xca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14,
+ 0x0, 0x8, 0xe6, 0xe3, 0xff, 0xc7, 0xf8, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0xbe, 0xfe, 0x31, 0x55, 0x51, 0x23,
+ 0xfc, 0xa0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xb2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xf8, 0xe9, 0xff,
+ 0xfe, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x4, 0x20, 0x38, 0x38, 0x20,
+ 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x2c, 0x50, 0x5e, 0x42, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x16, 0xf8, 0xad, 0xff, 0xfd, 0x4d, 0xc2,
+ 0x8, 0x0, 0x0, 0x74, 0x11, 0xe3, 0xff, 0xef,
+ 0x25, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff,
+ 0x5d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x21, 0x95, 0x95, 0x55, 0xa4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x12, 0x38, 0x54, 0x52, 0x30,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xda, 0x91, 0x9f,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x7c, 0x21, 0xe9, 0xff, 0xdf, 0x1d,
+ 0x9e, 0x0, 0x52, 0xfe, 0xa9, 0xff, 0xff, 0x71,
+ 0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1,
+ 0xfe, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0x62, 0x9c, 0xa8, 0x76, 0x28, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x9c, 0x9c,
+ 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa, 0xd0, 0x4b, 0xf5, 0xff, 0xcb,
+ 0xce, 0x0, 0x78, 0x89, 0xff, 0xff, 0x9b, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x22, 0xe6, 0x4b, 0xe7, 0xb5,
+ 0xd0, 0x0, 0x78, 0x6b, 0xfb, 0x8d, 0xfe, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x14, 0xb4, 0x5, 0x31, 0xde,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x22, 0xcc, 0x17, 0x39,
+ 0x88, 0x0, 0x3a, 0xb, 0x3b, 0xf2, 0x56, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x10, 0x10,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x18, 0x18,
+ 0x14, 0x0, 0x2, 0x18, 0x18, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0x30, 0x5c, 0x76,
+ 0x66, 0x3c, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2, 0xe, 0x18, 0x20, 0x18, 0xc, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1c, 0x48, 0x6c, 0x6a, 0x46, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0x22, 0x52, 0x74, 0x6e, 0x46, 0x18,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x22, 0x50, 0x70, 0x60, 0x36,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x28, 0x56,
+ 0x76, 0x6e, 0x46, 0x18, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x16, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0x86, 0xf6, 0x1b, 0x57, 0x6b,
+ 0x5f, 0x2f, 0xfe, 0xba, 0x30, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7e, 0xd, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x62, 0x11, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x5,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+ 0xda, 0xfe, 0x41, 0x63, 0x61, 0x41, 0x5, 0xd4,
+ 0x2c, 0x0, 0x0, 0x0, 0x3a, 0xd, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x1d, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0xe4, 0xb, 0x4b, 0x69, 0x63, 0x3d, 0xfe,
+ 0xc8, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xd8, 0x5, 0x4b, 0x69, 0x5b, 0x21,
+ 0xf8, 0x8c, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x70, 0xec, 0x11, 0x51,
+ 0x69, 0x63, 0x3d, 0xfe, 0xcc, 0x3e, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa, 0x46, 0x8c, 0xbe, 0xd2, 0xd2, 0xc4, 0x9a,
+ 0x56, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xfe,
+ 0x23, 0x23, 0x23, 0x15, 0x94, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x12, 0xca, 0x29, 0xb5, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xd7, 0x5f, 0xfa, 0x40, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c,
+ 0xfc, 0xb3, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x97, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x4, 0x98, 0x9,
+ 0x89, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x5b,
+ 0x44, 0x0, 0x0, 0x0, 0x66, 0x6b, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xd3, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x78,
+ 0x9, 0x93, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xe1,
+ 0x6b, 0xfc, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0xfe, 0x79, 0xeb, 0xff, 0xff, 0xff, 0xfd,
+ 0xbb, 0x2b, 0xc8, 0xe, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xa4, 0x19, 0xa5, 0xf5, 0xff,
+ 0xff, 0xff, 0xff, 0xe3, 0x71, 0xfe, 0x4c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x92,
+ 0xf8, 0x21, 0x73, 0x99, 0xab, 0xaf, 0x9d, 0x7f,
+ 0x35, 0xfe, 0xac, 0x26, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x4f,
+ 0xff, 0xff, 0xff, 0xc5, 0xf8, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8a, 0x31, 0xe7, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x75, 0xe0, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6,
+ 0x5b, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xda, 0xaf, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x2a, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x13, 0xc7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x43,
+ 0x44, 0x0, 0x0, 0x0, 0x76, 0x6b, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xd3, 0xf2, 0x0, 0x0, 0x0, 0x20, 0xfe,
+ 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x79, 0xe0, 0x4, 0x0, 0x0, 0x0, 0x26,
+ 0xfa, 0x93, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xe5, 0x2b, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x42, 0x9, 0xd1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xe8, 0x8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x42, 0xf2, 0x3d,
+ 0xbb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xcf, 0x51, 0xf8, 0x48, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xa5,
+ 0xff, 0xff, 0xff, 0xfb, 0x21, 0x50, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf0, 0xb7, 0xff, 0xff, 0xff, 0xb7, 0x7d,
+ 0x99, 0xf3, 0xff, 0xff, 0xf1, 0x13, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xf,
+ 0xe1, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xc3, 0xff, 0xff,
+ 0xd7, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x23,
+ 0x1c, 0x0, 0x0, 0x0, 0x1e, 0xfc, 0xb1, 0xff,
+ 0xff, 0xff, 0xd1, 0x8d, 0x89, 0xa7, 0xcf, 0xfe,
+ 0x1c, 0x0, 0x0, 0x0, 0x50, 0x47, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xe9, 0xff,
+ 0xff, 0xc5, 0xdc, 0x0, 0x0, 0x0, 0x6c, 0x49,
+ 0xff, 0xff, 0xff, 0xe1, 0x85, 0x93, 0xf3, 0xff,
+ 0xff, 0xf1, 0xf, 0x2a, 0x0, 0x0, 0x0, 0x9a,
+ 0x53, 0xff, 0xff, 0xff, 0xdb, 0x85, 0xa5, 0xfd,
+ 0xff, 0xff, 0xbd, 0xfa, 0x14, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa0, 0x77, 0xff, 0xff, 0xff, 0xd7,
+ 0x8b, 0x9b, 0xf3, 0xff, 0xff, 0xf5, 0x1f, 0x3e,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0xfc, 0x77, 0xfb,
+ 0xff, 0xf3, 0xb5, 0x7b, 0x5f, 0x5b, 0x73, 0xa3,
+ 0xe5, 0xff, 0xfd, 0x7f, 0xfc, 0x3c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x5, 0xe9,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xba, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xf7, 0xff, 0xff, 0xb5, 0xfe, 0xc8,
+ 0xf4, 0x73, 0xff, 0xff, 0xff, 0x5d, 0x64, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xf2, 0x97,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xf8, 0xd9, 0xff, 0xff,
+ 0x65, 0xf2, 0xe8, 0xe8, 0xe8, 0xe8, 0xce, 0x92,
+ 0xc, 0x0, 0x0, 0x0, 0x78, 0x45, 0xff, 0xff,
+ 0xff, 0xaf, 0xfe, 0xd6, 0xbe, 0xda, 0xc8, 0x9e,
+ 0x0, 0x0, 0x0, 0x0, 0x20, 0x86, 0xbe, 0xd6,
+ 0xd6, 0xd6, 0xd6, 0xda, 0xfa, 0x67, 0xff, 0xff,
+ 0xef, 0x35, 0x9a, 0x0, 0x0, 0x0, 0xa4, 0x8d,
+ 0xff, 0xff, 0xff, 0x39, 0xe2, 0xf4, 0x7b, 0xff,
+ 0xff, 0xff, 0x55, 0x56, 0x0, 0x0, 0x0, 0xec,
+ 0xbd, 0xff, 0xff, 0xef, 0x21, 0xe0, 0xfa, 0x8d,
+ 0xff, 0xff, 0xfd, 0x33, 0x52, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x52, 0x9e, 0x9c, 0x72,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x98, 0x9c, 0x62,
+ 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb2, 0xb3, 0xff, 0xff, 0xef, 0x19,
+ 0xdc, 0xf2, 0x67, 0xff, 0xff, 0xff, 0x6b, 0x78,
+ 0x0, 0x0, 0x0, 0x20, 0xf2, 0x7f, 0xff, 0xff,
+ 0xb7, 0x27, 0xf2, 0xb2, 0x82, 0x7e, 0xa4, 0xe4,
+ 0xd, 0x91, 0xff, 0xff, 0x6f, 0xdc, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0x59, 0xff,
+ 0xff, 0xf9, 0xff, 0xff, 0xcb, 0xfa, 0xe, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x9, 0x7b, 0x7b, 0x7b, 0x41, 0x8c, 0x0,
+ 0x6a, 0x31, 0xff, 0xff, 0xff, 0x73, 0x78, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x3d, 0xf9,
+ 0xff, 0xeb, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0xfe, 0xed, 0xff, 0xff,
+ 0x43, 0x6a, 0x3a, 0x34, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff,
+ 0xf5, 0x19, 0xb0, 0x98, 0x9c, 0x74, 0x34, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x92, 0x2d, 0xf1, 0xff, 0xff,
+ 0x63, 0xde, 0x14, 0x0, 0x0, 0x0, 0xb6, 0x9d,
+ 0xff, 0xff, 0xf1, 0xfe, 0x1e, 0x78, 0x41, 0xff,
+ 0xff, 0xff, 0x67, 0x68, 0x0, 0x0, 0x2, 0xfe,
+ 0xef, 0xff, 0xff, 0xa7, 0xee, 0xa, 0x5c, 0x21,
+ 0xff, 0xff, 0xff, 0x79, 0x94, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x7a, 0xec, 0x19, 0x83, 0xa9, 0xc8,
+ 0x0, 0x0, 0x0, 0x26, 0x7e, 0xb2, 0xc8, 0xc8,
+ 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xa8, 0x6c,
+ 0x8, 0x0, 0x0, 0x0, 0xae, 0x97, 0x91, 0x27,
+ 0xf6, 0x90, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x98, 0x67, 0x87, 0x87, 0x6f, 0xde,
+ 0x6, 0x4e, 0x19, 0xff, 0xff, 0xff, 0x83, 0x92,
+ 0x0, 0x0, 0x0, 0xac, 0x49, 0xf9, 0xff, 0xa5,
+ 0xfe, 0x88, 0x2c, 0x64, 0x92, 0x9c, 0x74, 0x38,
+ 0x5e, 0xfc, 0x89, 0xff, 0xef, 0x21, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad, 0xff,
+ 0xff, 0x9d, 0xf9, 0xff, 0xfd, 0x2b, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x46, 0x78, 0x9c, 0x86, 0x58, 0x1a, 0x1c,
+ 0xc2, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x46, 0xfe, 0xcd, 0xff,
+ 0xf9, 0x79, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x14, 0xb, 0xfd, 0xff, 0xff,
+ 0x19, 0x1b, 0x49, 0x39, 0xfe, 0xde, 0x52, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff,
+ 0xc7, 0xfe, 0x53, 0x85, 0x89, 0x63, 0xd, 0xc4,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xfe, 0xbf, 0xff, 0xff, 0xab,
+ 0xfc, 0x32, 0x0, 0x0, 0x0, 0x0, 0x94, 0x7f,
+ 0xff, 0xff, 0xfd, 0x1f, 0xa4, 0xd0, 0x63, 0xff,
+ 0xff, 0xff, 0x41, 0x4c, 0x0, 0x0, 0x2, 0xb,
+ 0xff, 0xff, 0xff, 0x87, 0xbe, 0x0, 0xa, 0xfe,
+ 0xf1, 0xff, 0xff, 0x9b, 0xbe, 0x0, 0x0, 0x0,
+ 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+ 0x0, 0x0, 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32,
+ 0xa6, 0xfc, 0x3b, 0xa5, 0xf3, 0xff, 0xcd, 0xea,
+ 0x0, 0x0, 0x0, 0x6a, 0x53, 0x9f, 0x9f, 0x9f,
+ 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x1d,
+ 0x18, 0x0, 0x0, 0x0, 0xd6, 0xb3, 0xff, 0xf9,
+ 0xb5, 0x4f, 0xfe, 0xbe, 0x46, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x34, 0x74, 0xa0, 0xa2, 0x78, 0x3c,
+ 0x0, 0x88, 0x3d, 0xff, 0xff, 0xff, 0x69, 0x7a,
+ 0x0, 0x0, 0x28, 0xfe, 0xcf, 0xff, 0xd3, 0x9,
+ 0x70, 0x86, 0xfe, 0x49, 0x83, 0x83, 0x63, 0x13,
+ 0xe0, 0x84, 0x5, 0xd5, 0xff, 0x8b, 0xca, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x32, 0x9, 0xef, 0xff,
+ 0xff, 0x45, 0xc3, 0xff, 0xff, 0x87, 0xc2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xf8, 0xfe, 0x9,
+ 0x43, 0xd5, 0xff, 0xff, 0xcd, 0xfe, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0xc, 0xe0, 0x7b, 0xff, 0xff,
+ 0x95, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x38, 0x31, 0xff, 0xff, 0xf9,
+ 0xc3, 0xff, 0xff, 0xff, 0xed, 0x89, 0xfe, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff,
+ 0xcb, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x47,
+ 0xd4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xb2, 0x5d, 0xff, 0xff, 0xef, 0x21,
+ 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+ 0xf1, 0xff, 0xff, 0xbb, 0x3d, 0x4d, 0xd9, 0xff,
+ 0xff, 0xcd, 0xfe, 0x1c, 0x0, 0x0, 0x2, 0xfe,
+ 0xfd, 0xff, 0xff, 0x8f, 0xc8, 0x0, 0x0, 0xfc,
+ 0xe5, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35,
+ 0x26, 0x0, 0x0, 0x0, 0x8, 0x58, 0xd0, 0xfe,
+ 0x63, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xcd, 0xe0,
+ 0x0, 0x0, 0x0, 0x98, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x26, 0x0, 0x0, 0x0, 0xc6, 0xb3, 0xff, 0xff,
+ 0xff, 0xff, 0xd5, 0x79, 0x11, 0xe6, 0x72, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0xfe, 0xaf, 0xff, 0xff, 0xf5, 0x21, 0x40,
+ 0x0, 0x0, 0x86, 0x55, 0xff, 0xff, 0x53, 0xb2,
+ 0x82, 0x11, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xef,
+ 0x81, 0xc8, 0xc4, 0x7d, 0xff, 0xd9, 0xfa, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x96, 0x63, 0xff, 0xff,
+ 0xe5, 0xfe, 0x7d, 0xff, 0xff, 0xd1, 0xfc, 0x12,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0x7d, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0x25, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x84, 0x25, 0xef, 0xff, 0xdf,
+ 0xd, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x64, 0x53, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xf8,
+ 0x16, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb,
+ 0x21, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x22, 0xfe, 0xd1, 0xff, 0xff, 0x8f, 0xe4,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xdc,
+ 0x53, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xd7, 0x2b, 0xa2, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xe7, 0xff, 0xff, 0xbb, 0xfa, 0x32, 0x5e, 0xfe,
+ 0xe5, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x14, 0x0, 0x0, 0x30, 0xe6, 0x1d, 0x89, 0xe1,
+ 0xff, 0xff, 0xff, 0xff, 0xfd, 0xc7, 0x69, 0xb2,
+ 0x0, 0x0, 0x0, 0x8c, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x22, 0x0, 0x0, 0x0, 0x90, 0x53, 0xb7, 0xf5,
+ 0xff, 0xff, 0xff, 0xff, 0xef, 0x9d, 0x33, 0xf6,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+ 0xfe, 0x89, 0xff, 0xff, 0xff, 0x8f, 0xea, 0xa,
+ 0x0, 0x0, 0xdc, 0xa7, 0xff, 0xd7, 0xfe, 0x4c,
+ 0xfe, 0xb7, 0xff, 0xff, 0xcd, 0xb1, 0xe9, 0xff,
+ 0xdd, 0xea, 0x52, 0x29, 0xff, 0xfb, 0x11, 0x24,
+ 0x0, 0x0, 0x0, 0x4, 0xee, 0xb3, 0xff, 0xff,
+ 0xa5, 0xea, 0x27, 0xfd, 0xff, 0xff, 0x31, 0x62,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x90, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xf7, 0x79, 0xfe, 0x7c, 0x0, 0x0,
+ 0x0, 0x0, 0x2e, 0xfc, 0xb3, 0xff, 0xff, 0x55,
+ 0xda, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x6e, 0x6f, 0xff, 0xff, 0xff,
+ 0xb5, 0x75, 0x8b, 0xed, 0xff, 0xff, 0xfd, 0x39,
+ 0x66, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xfd, 0xa1, 0x55, 0x53, 0xb5, 0xff, 0xff, 0xff,
+ 0x9b, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7c, 0x4d, 0xff, 0xff, 0xf9, 0x21, 0x5e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xb0,
+ 0x11, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0x77, 0xfe, 0x74, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xb1, 0xff, 0xff, 0xf9, 0x5f, 0xfe, 0xd, 0x95,
+ 0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x68, 0x5f, 0xf5, 0xff, 0xff,
+ 0xff, 0xff, 0xd7, 0x8b, 0x2b, 0xfa, 0xac, 0x38,
+ 0x0, 0x0, 0x0, 0x58, 0x25, 0x49, 0x49, 0x49,
+ 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0xd,
+ 0x12, 0x0, 0x0, 0x0, 0x26, 0x94, 0xf2, 0x15,
+ 0x75, 0xc3, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0x93,
+ 0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x5,
+ 0xa5, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x58, 0x0,
+ 0x0, 0x4, 0xfe, 0xdf, 0xff, 0x9d, 0xd6, 0x9c,
+ 0x5b, 0xff, 0xff, 0x97, 0xfe, 0xfc, 0xbf, 0xff,
+ 0xcb, 0xf0, 0xe, 0xfe, 0xf1, 0xff, 0x4b, 0x4a,
+ 0x0, 0x0, 0x0, 0x3a, 0xf, 0xf3, 0xff, 0xff,
+ 0x59, 0x8a, 0xfc, 0xcf, 0xff, 0xff, 0x8d, 0xca,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x66, 0x55, 0xad, 0xaf,
+ 0xcb, 0xff, 0xff, 0xff, 0xad, 0xfe, 0x2c, 0x0,
+ 0x0, 0x4, 0xc6, 0x5b, 0xff, 0xff, 0xad, 0xfe,
+ 0xce, 0x57, 0xff, 0xff, 0xff, 0x4d, 0xaa, 0x4a,
+ 0x8, 0x0, 0x0, 0x54, 0x49, 0x9b, 0xab, 0x99,
+ 0xfe, 0xbe, 0xea, 0x4f, 0xff, 0xff, 0xff, 0x8f,
+ 0xb2, 0x0, 0x0, 0x0, 0xfa, 0xe3, 0xff, 0xff,
+ 0xb5, 0xfe, 0x94, 0xa4, 0xfe, 0xdb, 0xff, 0xff,
+ 0xdb, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xa1, 0xff, 0xff, 0xc3, 0xf8, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x17,
+ 0xcf, 0xff, 0xff, 0xf1, 0xb7, 0xc1, 0xfb, 0xff,
+ 0xff, 0xa3, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x8a,
+ 0x43, 0xfb, 0xff, 0xff, 0xff, 0xeb, 0xf7, 0xff,
+ 0xff, 0xff, 0xff, 0xa9, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x90, 0x7b, 0xff, 0xff, 0xff,
+ 0xaf, 0x41, 0xfe, 0xd8, 0x62, 0xe, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x2c, 0x88, 0xba, 0xce, 0xce,
+ 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xae, 0x72,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x46,
+ 0xbe, 0xfc, 0x23, 0x8d, 0xf7, 0xff, 0xff, 0xb3,
+ 0xd4, 0x0, 0x0, 0x0, 0x0, 0x6, 0xf0, 0x9f,
+ 0xff, 0xff, 0xfd, 0x89, 0xfe, 0x76, 0x0, 0x0,
+ 0x0, 0x1a, 0xf, 0xff, 0xff, 0x67, 0x94, 0xf0,
+ 0xbb, 0xff, 0xf3, 0x13, 0x62, 0xf4, 0xd1, 0xff,
+ 0xb9, 0xe2, 0x0, 0xfc, 0xe3, 0xff, 0x5b, 0x6c,
+ 0x0, 0x0, 0x0, 0xa0, 0x6b, 0xff, 0xff, 0xef,
+ 0x9, 0xac, 0xea, 0x8d, 0xff, 0xff, 0xd7, 0xfe,
+ 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0x8c, 0xc2, 0xe2,
+ 0xfe, 0x6d, 0xff, 0xff, 0xff, 0x5b, 0x84, 0x0,
+ 0x0, 0x3a, 0x11, 0xe1, 0xff, 0xfd, 0x89, 0x7b,
+ 0x7b, 0x9b, 0xff, 0xff, 0xff, 0x97, 0x7b, 0x1b,
+ 0x1e, 0x0, 0x0, 0x20, 0x78, 0xb4, 0xca, 0xa8,
+ 0x60, 0x0, 0x24, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+ 0xd8, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xb1, 0xe2, 0x0, 0x0, 0xe0, 0x9d, 0xff, 0xff,
+ 0xf9, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0xfe, 0xe3, 0xff, 0xff, 0x85, 0xba, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd2, 0x99,
+ 0xff, 0xff, 0xf1, 0x2f, 0xf6, 0xfc, 0x5f, 0xff,
+ 0xff, 0xff, 0x5b, 0x8e, 0x0, 0x0, 0x0, 0x1c,
+ 0xf2, 0x73, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xd5,
+ 0xed, 0xff, 0xff, 0xa7, 0xce, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7c, 0x7b, 0xff, 0xff, 0xff,
+ 0xfd, 0xc9, 0x7b, 0x1b, 0xf6, 0xa2, 0x3a, 0x4,
+ 0x0, 0x0, 0x0, 0x68, 0x4d, 0x91, 0x91, 0x91,
+ 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x19,
+ 0x16, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x8c, 0xec,
+ 0xd, 0x6b, 0xbb, 0xf9, 0xff, 0xff, 0xff, 0xb3,
+ 0xc2, 0x0, 0x0, 0x0, 0x0, 0x22, 0x17, 0xf9,
+ 0xff, 0xff, 0x9f, 0xfc, 0x52, 0x0, 0x0, 0x0,
+ 0x0, 0x3c, 0x39, 0xff, 0xff, 0x47, 0x66, 0x5,
+ 0xf3, 0xff, 0xc3, 0xf6, 0x4, 0xfa, 0xe3, 0xff,
+ 0xa7, 0xd2, 0x0, 0xfc, 0xe1, 0xff, 0x63, 0x72,
+ 0x0, 0x0, 0x6, 0xf4, 0xb9, 0xff, 0xff, 0xd7,
+ 0x7b, 0x7b, 0x7b, 0x95, 0xff, 0xff, 0xff, 0x39,
+ 0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0x92, 0xca, 0xe2, 0xca, 0x90, 0x1a, 0x0,
+ 0x3a, 0xfe, 0xed, 0xff, 0xff, 0xa1, 0xbe, 0x0,
+ 0x0, 0x5c, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+ 0x30, 0x0, 0x0, 0x60, 0xba, 0xe4, 0xe6, 0xc6,
+ 0x6a, 0x0, 0x0, 0xfa, 0xd3, 0xff, 0xff, 0xbf,
+ 0xe0, 0x0, 0x0, 0x0, 0xf2, 0xd3, 0xff, 0xff,
+ 0xc3, 0xf0, 0x0, 0x0, 0xc8, 0x8f, 0xff, 0xff,
+ 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0x43, 0xff, 0xff, 0xff, 0x47, 0x64, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdd,
+ 0xff, 0xff, 0xaf, 0xf4, 0x10, 0x30, 0xfe, 0xdd,
+ 0xff, 0xff, 0xad, 0xcc, 0x0, 0x0, 0x0, 0x0,
+ 0x40, 0xec, 0x31, 0x93, 0xb7, 0xb7, 0x83, 0xf,
+ 0xf7, 0xff, 0xff, 0x99, 0xbe, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x4a, 0x19, 0x85, 0xdf, 0xff,
+ 0xff, 0xff, 0xff, 0xf9, 0xbb, 0x6b, 0xf, 0x96,
+ 0x0, 0x0, 0x0, 0x96, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x26, 0x0, 0x0, 0x0, 0x74, 0xfe, 0x57, 0xad,
+ 0xf1, 0xff, 0xff, 0xff, 0xff, 0xed, 0x9b, 0x2f,
+ 0x86, 0x0, 0x0, 0x0, 0x0, 0x26, 0x41, 0xff,
+ 0xff, 0xff, 0x5d, 0x84, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x54, 0x51, 0xff, 0xff, 0x2d, 0x66, 0x35,
+ 0xff, 0xff, 0x9f, 0xd2, 0x4, 0xfe, 0xf3, 0xff,
+ 0x93, 0xbc, 0xa, 0xfe, 0xef, 0xff, 0x57, 0x5e,
+ 0x0, 0x0, 0x44, 0x17, 0xf7, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95,
+ 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x30, 0x41, 0xbb, 0xbb, 0xbb, 0x3d, 0x74, 0x0,
+ 0x20, 0xfe, 0xe5, 0xff, 0xff, 0xaf, 0xcc, 0x0,
+ 0x0, 0x5e, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x39,
+ 0x30, 0x0, 0x0, 0xb4, 0x99, 0xc3, 0xcf, 0xa1,
+ 0xe2, 0x8, 0x24, 0xfe, 0xe3, 0xff, 0xff, 0xb1,
+ 0xd6, 0x0, 0x0, 0x0, 0xdc, 0xb1, 0xff, 0xff,
+ 0xe7, 0x5, 0x3c, 0xc, 0xf0, 0xad, 0xff, 0xff,
+ 0xed, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa0, 0x7b, 0xff, 0xff, 0xf9, 0xb, 0x20, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfa, 0xef,
+ 0xff, 0xff, 0xa9, 0xec, 0x4, 0x16, 0xfc, 0xd7,
+ 0xff, 0xff, 0xc1, 0xde, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x12, 0x66, 0xb4, 0xd6, 0xd4, 0xdc, 0x41,
+ 0xff, 0xff, 0xff, 0x75, 0x90, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x6, 0x52, 0xcc, 0xfe, 0x5f,
+ 0xc1, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xd6,
+ 0x0, 0x0, 0x0, 0x8e, 0x87, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f,
+ 0x22, 0x0, 0x0, 0x0, 0xb8, 0xab, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd3, 0x77, 0xf, 0xe4, 0x6e,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x20, 0x13, 0x3f,
+ 0x3f, 0x3f, 0x13, 0x32, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x5a, 0x4f, 0xff, 0xff, 0x2f, 0x7c, 0x57,
+ 0xff, 0xff, 0x8d, 0xc0, 0x1a, 0xf, 0xff, 0xff,
+ 0x7d, 0xa4, 0x54, 0x21, 0xff, 0xff, 0x29, 0x36,
+ 0x0, 0x0, 0xaa, 0x73, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd,
+ 0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x30, 0x3b, 0xff, 0xff, 0xff, 0x9d, 0xfe, 0xce,
+ 0xf0, 0x49, 0xff, 0xff, 0xff, 0x91, 0xae, 0x0,
+ 0x0, 0x34, 0x1f, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b,
+ 0x6b, 0x91, 0xff, 0xff, 0xff, 0x8b, 0x6b, 0x17,
+ 0x1c, 0x0, 0x0, 0xc4, 0xbb, 0xff, 0xff, 0xed,
+ 0x1b, 0xe0, 0xee, 0x4f, 0xff, 0xff, 0xff, 0x83,
+ 0xa6, 0x0, 0x0, 0x0, 0x9a, 0x71, 0xff, 0xff,
+ 0xff, 0x6f, 0xf8, 0xe4, 0x25, 0xf1, 0xff, 0xff,
+ 0xbf, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xd2, 0xa3, 0xff, 0xff, 0xdb, 0xfc, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf6, 0xdb,
+ 0xff, 0xff, 0xe3, 0xf, 0xdc, 0xec, 0x39, 0xf9,
+ 0xff, 0xff, 0xab, 0xcc, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0xb0, 0xd0, 0xdc, 0xbc, 0xd8, 0x9, 0xbf,
+ 0xff, 0xff, 0xf9, 0x27, 0x4a, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0x3c, 0xcc, 0xf2, 0xf6, 0xdc, 0x78,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0xa2,
+ 0xfa, 0x35, 0xa1, 0xf1, 0xff, 0xff, 0xcd, 0xee,
+ 0x0, 0x0, 0x0, 0x5a, 0x2d, 0x57, 0x57, 0x57,
+ 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, 0xf,
+ 0x14, 0x0, 0x0, 0x0, 0xda, 0xb3, 0xff, 0xff,
+ 0xf9, 0xb1, 0x4b, 0xfe, 0xbc, 0x44, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xe4, 0xfa,
+ 0xfe, 0xfc, 0xe6, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x42, 0x45, 0xff, 0xff, 0x3f, 0x90, 0x59,
+ 0xff, 0xff, 0x95, 0xda, 0x9e, 0x39, 0xff, 0xff,
+ 0x6b, 0x96, 0xd8, 0x85, 0xff, 0xd9, 0xfe, 0xe,
+ 0x0, 0x8, 0xf6, 0xc1, 0xff, 0xff, 0xcd, 0x63,
+ 0x63, 0x63, 0x63, 0x63, 0x7f, 0xff, 0xff, 0xff,
+ 0x43, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x18, 0xfe, 0xd9, 0xff, 0xff, 0xff, 0xbb, 0x89,
+ 0x9f, 0xf1, 0xff, 0xff, 0xf9, 0x39, 0x68, 0x0,
+ 0x0, 0x8, 0x3e, 0x6a, 0x86, 0x86, 0x86, 0x86,
+ 0xb8, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x9e, 0x3e,
+ 0x6, 0x0, 0x0, 0xa0, 0x6d, 0xff, 0xff, 0xff,
+ 0xdd, 0x8f, 0x99, 0xef, 0xff, 0xff, 0xf3, 0x21,
+ 0x54, 0x0, 0x0, 0x0, 0x3e, 0xb, 0xdf, 0xff,
+ 0xff, 0xf9, 0xa1, 0x8f, 0xdf, 0xff, 0xff, 0xff,
+ 0x57, 0x9c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf0, 0xc9, 0xff, 0xff, 0xc1, 0xec, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0, 0x99,
+ 0xff, 0xff, 0xff, 0xd9, 0x8f, 0x97, 0xeb, 0xff,
+ 0xff, 0xff, 0x5f, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x43, 0xd5, 0xa1, 0x89, 0x91, 0xd5, 0xff,
+ 0xff, 0xff, 0xa1, 0xf2, 0xe, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0x74, 0x71, 0xe3, 0xe3, 0xaf, 0xc4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0x76, 0xe8, 0x15, 0x7f, 0xdb, 0xcd, 0xdc,
+ 0x0, 0x0, 0x0, 0x10, 0x36, 0x58, 0x6a, 0x6a,
+ 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x4e, 0x2c,
+ 0x4, 0x0, 0x0, 0x0, 0xc2, 0xb3, 0xe5, 0x8f,
+ 0x23, 0xf4, 0x8c, 0x22, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x51, 0xf5,
+ 0xf5, 0xf5, 0x57, 0x4e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x24, 0x1b, 0xff, 0xff, 0x6b, 0xac, 0x2d,
+ 0xff, 0xff, 0xd5, 0xb, 0x1b, 0xc3, 0xff, 0xff,
+ 0x6d, 0xfa, 0x27, 0xe7, 0xff, 0x7b, 0xc4, 0x0,
+ 0x0, 0x4c, 0x1f, 0xf9, 0xff, 0xff, 0x7b, 0xd2,
+ 0x7a, 0x7a, 0x7a, 0x8a, 0xfe, 0xe9, 0xff, 0xff,
+ 0x9b, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb6, 0x49, 0xf1, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf0, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6a, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x3a, 0xfe, 0xb3, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x71, 0xe4,
+ 0xa, 0x0, 0x0, 0x0, 0x2, 0xc0, 0x47, 0xef,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x97,
+ 0xfc, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfc, 0xe5, 0xff, 0xff, 0xa7, 0xd6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x19,
+ 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xb1, 0xfe, 0x30, 0x0, 0x0, 0x0, 0x0,
+ 0x76, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xc5, 0xd, 0x6c, 0x0, 0x0, 0x0, 0x0,
+ 0x8c, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x36, 0x0,
+ 0x0, 0x0, 0x9c, 0x7f, 0xff, 0xff, 0xc5, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x6, 0x4e, 0xc8, 0xec, 0x3f, 0xa4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x88, 0x3f, 0x5, 0xd6,
+ 0x5e, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x57, 0xff,
+ 0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x8, 0xfe, 0xe3, 0xff, 0xa1, 0xe6, 0xfe,
+ 0xcf, 0xff, 0xff, 0xf3, 0xf9, 0xe9, 0xe1, 0xff,
+ 0xdb, 0xa7, 0xeb, 0xff, 0xc3, 0xfe, 0x44, 0x0,
+ 0x0, 0xb4, 0x7b, 0xff, 0xff, 0xfd, 0x27, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0xe6, 0xad, 0xff, 0xff,
+ 0xe3, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x20, 0xdc, 0x31, 0xb3, 0xf7, 0xff, 0xff,
+ 0xff, 0xfd, 0xcb, 0x57, 0xfa, 0x4a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4c, 0x57, 0xff, 0xff, 0xff, 0x4d, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x7c, 0xfe, 0x7f, 0xe1,
+ 0xff, 0xff, 0xff, 0xff, 0xd9, 0x61, 0xf8, 0x3e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0xda, 0x37,
+ 0xbb, 0xfb, 0xff, 0xff, 0xff, 0xe3, 0x75, 0xfe,
+ 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xf7, 0xff, 0xff, 0x93, 0xa4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xae,
+ 0x17, 0x9d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xe3,
+ 0x83, 0x5, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x64, 0x65, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xe5,
+ 0x87, 0x5, 0x92, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x68, 0x6f, 0xff, 0xff, 0xff, 0x35, 0x26, 0x0,
+ 0x0, 0x0, 0xa6, 0x7f, 0xff, 0xff, 0xc1, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0x16, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c, 0x57, 0xff,
+ 0xff, 0xff, 0x5b, 0x52, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xde, 0xa7, 0xff, 0xe9, 0xd, 0xc6,
+ 0x39, 0xdf, 0xff, 0xff, 0xe5, 0x4b, 0x5b, 0xf3,
+ 0xff, 0xff, 0xf5, 0xa3, 0x13, 0x92, 0x0, 0x0,
+ 0x0, 0xb2, 0xc7, 0xff, 0xff, 0xcf, 0xfc, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x90, 0x63, 0xff, 0xff,
+ 0xff, 0x4d, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x12, 0x86, 0xf2, 0xd, 0x47, 0x59,
+ 0x4d, 0x1b, 0xfc, 0xaa, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x48, 0xcc, 0xfe,
+ 0x31, 0x57, 0x55, 0x2d, 0xfe, 0xbc, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x90,
+ 0xf6, 0x19, 0x4d, 0x57, 0x39, 0xfe, 0xce, 0x40,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x5c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+ 0x68, 0xe4, 0xfe, 0x3d, 0x57, 0x55, 0x31, 0xfe,
+ 0xd0, 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x34, 0xca, 0xfe, 0x2f, 0x4f, 0x55, 0x35, 0xfe,
+ 0xd4, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x14, 0x0,
+ 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xa7, 0xca,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x2c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x82, 0x47, 0xff, 0xff, 0x91, 0xf4,
+ 0xca, 0x5, 0x45, 0x43, 0x9, 0xd2, 0xe6, 0x1f,
+ 0x55, 0x49, 0xf, 0xec, 0x6e, 0x4, 0x0, 0x0,
+ 0x0, 0x94, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x32, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0x22, 0x48, 0x5e,
+ 0x4e, 0x2a, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12,
+ 0x38, 0x58, 0x56, 0x34, 0x10, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0x2a, 0x4c, 0x58, 0x3c, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x18, 0x3e, 0x5c, 0x58, 0x38, 0x12,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x10, 0x32, 0x54, 0x54, 0x38, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6, 0xf0, 0xaf, 0xff, 0xff, 0x5d, 0x88,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1e, 0xfe, 0xaf, 0xff, 0xfb, 0x6b,
+ 0xfa, 0x8c, 0x46, 0x36, 0x1c, 0x0, 0x2c, 0x58,
+ 0x6e, 0x52, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x17, 0xf1, 0xff, 0xd1, 0xfe, 0x2e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7c, 0x1b, 0xd9, 0xff, 0xfd,
+ 0xab, 0x35, 0xfe, 0xf2, 0xee, 0xf8, 0xfe, 0x4f,
+ 0x2f, 0x5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x18, 0x37, 0xd9, 0xf1, 0x41, 0xae, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x8, 0xb4, 0x1f, 0xc7, 0xff,
+ 0xff, 0xff, 0xdf, 0xc7, 0xbf, 0xd3, 0xef, 0xff,
+ 0x87, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0xb4, 0x5, 0x31, 0xde, 0x1c, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0x98, 0xfe, 0x67,
+ 0xc7, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+ 0x5d, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xac,
+ 0xf6, 0x13, 0x49, 0x5f, 0x6b, 0x57, 0x23, 0xfc,
+ 0xb6, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0x24, 0x4c, 0x72, 0x78, 0x60, 0x34, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x1e,
+ 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x20, 0x4e, 0x72, 0x72, 0x4e, 0x20, 0x2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+ 0x20, 0x20, 0x20, 0x1c, 0x10, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0xe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x4a, 0x70, 0x74, 0x54, 0x28, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a,
+ 0x20, 0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc, 0x16, 0x20, 0x1a, 0xe, 0x4, 0x0, 0x0,
+ 0x0, 0x2, 0xc, 0x18, 0x20, 0x18, 0xc, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x2, 0xe, 0x18, 0x20, 0x16, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x16, 0xc, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16,
+ 0x20, 0x20, 0x18, 0xc, 0x2, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x20, 0x16, 0xc, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20,
+ 0x20, 0x1a, 0xe, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0x16, 0x20, 0x1a, 0xe, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x1f, 0x9, 0xfe, 0xea, 0x9e, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x60, 0xe2,
+ 0x5, 0x49, 0x65, 0x65, 0x49, 0xb, 0xec, 0x76,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x15, 0xfe, 0xf8, 0xc2,
+ 0x5c, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x32, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0xd, 0x34,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x5c, 0xe0, 0x5,
+ 0x45, 0x65, 0x67, 0x4f, 0x13, 0xf6, 0x8e, 0x14,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23,
+ 0x23, 0x23, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+ 0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e, 0x0, 0x0,
+ 0x0, 0x24, 0xb, 0x23, 0x23, 0x23, 0xb, 0x2e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x32, 0xd, 0x23, 0x23, 0x23, 0x9,
+ 0x1c, 0x0, 0x0, 0x0, 0x52, 0x11, 0x23, 0x23,
+ 0x23, 0xfe, 0x2, 0x0, 0x0, 0x40, 0xfe, 0x21,
+ 0x23, 0x23, 0x23, 0xf, 0x4, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0xfe, 0x2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0x23, 0x5, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x40, 0x9, 0x23, 0x23,
+ 0x23, 0x23, 0xf, 0x44, 0x0, 0x0, 0x0, 0x52,
+ 0x11, 0x23, 0x23, 0x23, 0xfe, 0x42, 0x0, 0x0,
+ 0x0, 0x2, 0xfe, 0x23, 0x23, 0x23, 0x11, 0x4e,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xc8,
+ 0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2, 0x8a,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xeb, 0xbd, 0x5f, 0xfe, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xa6, 0x11, 0x97,
+ 0xef, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xa7, 0x1f,
+ 0xc2, 0xe, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xd1, 0x8d,
+ 0x1b, 0xd6, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x58, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x5c,
+ 0x0, 0x0, 0x0, 0x6, 0xa4, 0xf, 0x91, 0xed,
+ 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x35, 0xdc,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+ 0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x58, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x36, 0x0, 0x0, 0x0, 0x88, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x4, 0x0, 0xe, 0xe0, 0x75, 0xff,
+ 0xff, 0xff, 0xd9, 0x15, 0x4, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x94, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x75, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x76, 0x0, 0x0, 0x0, 0x88,
+ 0x87, 0xff, 0xff, 0xff, 0x77, 0xda, 0x8, 0x0,
+ 0x0, 0x4, 0xd, 0xff, 0xff, 0xff, 0x83, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x75,
+ 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5, 0x35,
+ 0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0x36,
+ 0x0, 0x0, 0x0, 0x0, 0x86, 0x1b, 0xd1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3,
+ 0x29, 0x94, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xed, 0x59, 0xee, 0x26, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x68, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x6e,
+ 0x0, 0x0, 0x0, 0x86, 0x19, 0xcf, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x43,
+ 0xb8, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0x8a, 0x27, 0xef, 0xff,
+ 0xff, 0xf9, 0x43, 0xb8, 0x4, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xb1, 0xee, 0x4,
+ 0x0, 0x0, 0x0, 0xa, 0xf8, 0xc3, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xeb, 0x1b, 0x6e, 0x0,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1,
+ 0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xb1, 0xc7, 0xfb, 0xff, 0xff, 0xff, 0x67, 0x9a,
+ 0x0, 0x0, 0x0, 0x20, 0xfe, 0xb7, 0xff, 0xff,
+ 0xff, 0xbf, 0x7d, 0x89, 0xbd, 0xff, 0xff, 0xff,
+ 0xc3, 0xfe, 0x1c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xad, 0xad, 0xb7, 0xd7, 0xff, 0xff,
+ 0xff, 0xf9, 0x51, 0xc6, 0x2, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0x41, 0x44, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0x43, 0x4a,
+ 0x0, 0x0, 0x24, 0xfe, 0xb9, 0xff, 0xff, 0xff,
+ 0xcd, 0x85, 0x81, 0xb1, 0xfd, 0xff, 0xff, 0xdb,
+ 0x9, 0x32, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x36, 0xfe, 0xb9, 0xff, 0xff,
+ 0xff, 0x87, 0xf0, 0x1c, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xf, 0x3a,
+ 0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xa1, 0xf6, 0x1a,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff, 0xff,
+ 0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff, 0xff,
+ 0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xe0, 0xfa, 0x43, 0xf7, 0xff, 0xff, 0xb5, 0xd6,
+ 0x0, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+ 0xa3, 0xfe, 0xc6, 0xc6, 0xfe, 0x95, 0xff, 0xff,
+ 0xff, 0x43, 0x6a, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xda, 0xe8, 0xfe, 0x53, 0xed,
+ 0xff, 0xff, 0xe3, 0xb, 0x40, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xd6,
+ 0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1a, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xbc, 0x84, 0x1c,
+ 0x0, 0x0, 0x80, 0x4f, 0xff, 0xff, 0xff, 0xb1,
+ 0xfe, 0xce, 0xbe, 0xfa, 0x77, 0xff, 0xff, 0xff,
+ 0x63, 0x8c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xe, 0xd6, 0x69, 0xff, 0xff, 0xff,
+ 0xc7, 0xfe, 0x50, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0,
+ 0x0, 0x0, 0x0, 0xba, 0x7f, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x41, 0xa2,
+ 0x0, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff, 0xff,
+ 0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9, 0xff,
+ 0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x1c, 0xfc, 0xcf, 0xff, 0xff, 0xcb, 0xe6,
+ 0x0, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+ 0x21, 0x72, 0x0, 0x0, 0x60, 0x13, 0xfb, 0xff,
+ 0xff, 0x91, 0x98, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x26, 0xde, 0x67,
+ 0xff, 0xff, 0xff, 0x73, 0x9c, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xce, 0xa3, 0xff, 0xff, 0xf7, 0x27,
+ 0x80, 0x0, 0x0, 0x42, 0xfe, 0xe3, 0xff, 0xff,
+ 0xa7, 0x9a, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x7e, 0x1f, 0xeb, 0xff, 0xff, 0xef,
+ 0x2d, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xeb, 0xff, 0xff, 0xbb, 0xf4,
+ 0x6, 0x0, 0x10, 0xfc, 0xcb, 0xff, 0xff, 0xeb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0xfe,
+ 0x3a, 0x6, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff, 0xfb,
+ 0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9, 0xff,
+ 0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x6, 0x5e, 0xfe, 0xd9, 0xff, 0xff, 0xb5, 0xd4,
+ 0x0, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcb,
+ 0xf8, 0xa, 0x0, 0x0, 0x4, 0xf4, 0xa3, 0xbd,
+ 0xbd, 0x83, 0x8a, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x34, 0xfe,
+ 0xe7, 0xff, 0xff, 0xb1, 0xd8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4c, 0x46,
+ 0x46, 0x46, 0x46, 0x30, 0x1a, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xee, 0xcd, 0xff, 0xff, 0xcd, 0xfa,
+ 0xc, 0x0, 0x0, 0x0, 0xc4, 0x49, 0x63, 0x63,
+ 0x49, 0x82, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xfc, 0xaf, 0xff, 0xff, 0xff, 0x6b,
+ 0xde, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xcb, 0xe3, 0xff, 0xf7, 0x17,
+ 0x44, 0x0, 0x5e, 0x2d, 0xfd, 0xff, 0xd3, 0xdb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x6d,
+ 0xd0, 0xa, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff, 0xd3,
+ 0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53, 0xff,
+ 0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+ 0xfe, 0x17, 0x91, 0xff, 0xff, 0xff, 0x5b, 0x96,
+ 0x0, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3,
+ 0xe2, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xba, 0xde,
+ 0xd8, 0xac, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf2,
+ 0xc3, 0xff, 0xff, 0xcf, 0xf0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x43, 0x3f, 0x3f,
+ 0x3f, 0x3f, 0x3f, 0x3f, 0x9, 0xe, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xda, 0xa0, 0xa, 0x0,
+ 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb3, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x20, 0x4c, 0x70, 0x70,
+ 0x4c, 0x20, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0x33, 0x69, 0xff, 0xff, 0xff, 0xb1, 0xfe,
+ 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xd5, 0x99, 0xff, 0xff, 0x75,
+ 0xac, 0x0, 0xc6, 0x89, 0xff, 0xff, 0x85, 0xe3,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0x5f, 0xff, 0xff, 0xe5,
+ 0x13, 0x66, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xb7,
+ 0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27, 0xff,
+ 0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xf1, 0xf1,
+ 0xf3, 0xff, 0xff, 0xff, 0xf5, 0x81, 0xfc, 0x2c,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+ 0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x29, 0x1c, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xcf, 0xcd,
+ 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0x21, 0x18, 0x0,
+ 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xd8,
+ 0x0, 0x68, 0xc0, 0xe4, 0xec, 0xec, 0xec, 0xe4,
+ 0xbe, 0x62, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xcf, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+ 0xcf, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x19, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xdd, 0x3b, 0xff, 0xff, 0xc3,
+ 0xf8, 0x20, 0xfe, 0xd5, 0xff, 0xfb, 0x25, 0xeb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xbb, 0xff, 0xff,
+ 0x99, 0xf0, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xe3, 0x81, 0xfe, 0x6a,
+ 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe0,
+ 0xb7, 0xff, 0xff, 0xdd, 0xf8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x29, 0x22, 0x0,
+ 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad, 0xd6,
+ 0x0, 0xc4, 0x9f, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
+ 0x9b, 0xbe, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x27, 0x90,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xe5, 0xfe, 0xd3, 0xff, 0xfb,
+ 0x21, 0x98, 0x39, 0xff, 0xff, 0xc3, 0xfe, 0xf3,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x31, 0xf7, 0xff,
+ 0xf9, 0x37, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff, 0xad,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91,
+ 0x91, 0x95, 0xbb, 0xff, 0xff, 0xff, 0xa1, 0xf6,
+ 0x12, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xe4,
+ 0xb7, 0xff, 0xff, 0xdb, 0xf6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x9d, 0x9b, 0x9b,
+ 0x9b, 0x9b, 0x9b, 0x9b, 0x19, 0x14, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xef, 0xef,
+ 0xef, 0xef, 0xef, 0xef, 0xef, 0x27, 0x1a, 0x0,
+ 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad, 0xda,
+ 0x0, 0xda, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xc7, 0xe4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef,
+ 0xef, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xe9, 0xe9, 0xff, 0xff, 0xff, 0xbb, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xef, 0xfe, 0x85, 0xff, 0xff,
+ 0x7d, 0xf2, 0x93, 0xff, 0xff, 0x71, 0xfe, 0xfb,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xec, 0x93, 0xff,
+ 0xff, 0xbf, 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff, 0xad,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd, 0xff,
+ 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba,
+ 0xba, 0xcc, 0xfe, 0x8b, 0xff, 0xff, 0xfb, 0x31,
+ 0x46, 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5,
+ 0xe4, 0x0, 0x0, 0x0, 0x0, 0x6c, 0xb8, 0xdc,
+ 0xd6, 0xa8, 0x4c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0xf4,
+ 0xc5, 0xff, 0xff, 0xcd, 0xee, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xc8, 0xc6,
+ 0xc6, 0xc6, 0xc6, 0xa4, 0x68, 0x6, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xf8, 0xd4, 0xc, 0x0,
+ 0x0, 0x0, 0xf6, 0xdb, 0xff, 0xff, 0xb5, 0xe6,
+ 0x0, 0xc2, 0x9b, 0xc1, 0xc1, 0xef, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x4c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0xfe, 0xc1, 0xff, 0xff, 0xff, 0x71,
+ 0xde, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xf7, 0xfe, 0x25, 0xfb, 0xff,
+ 0xcb, 0xfe, 0xdd, 0xff, 0xf3, 0x11, 0xf, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x60, 0xf, 0xe3,
+ 0xff, 0xff, 0x67, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff, 0xbb,
+ 0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b, 0xff,
+ 0xff, 0xff, 0x7b, 0x98, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x70, 0x35, 0xff, 0xff, 0xff, 0x6b,
+ 0x74, 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcd,
+ 0xfa, 0xc, 0x0, 0x0, 0x6, 0xf6, 0xa3, 0xbb,
+ 0xbb, 0x81, 0x8e, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x3c, 0x5,
+ 0xeb, 0xff, 0xff, 0xaf, 0xd6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xec, 0xcb, 0xff, 0xff, 0xcf, 0xfa,
+ 0x12, 0x62, 0xb8, 0xe0, 0xfe, 0xcb, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x34, 0xe8, 0xfc, 0xfe, 0xfc, 0xe6,
+ 0x1a, 0x0, 0x80, 0x5f, 0xff, 0xff, 0xff, 0x43,
+ 0x44, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x98, 0x31, 0xf3, 0xff, 0xff, 0xef,
+ 0x27, 0x8e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0x5, 0xfa, 0xc1, 0xff,
+ 0xfd, 0x5d, 0xff, 0xff, 0xb1, 0xf0, 0x21, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xca, 0x65,
+ 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff, 0xd5,
+ 0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55, 0xff,
+ 0xff, 0xff, 0x61, 0x6e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x8c, 0x3b, 0xff, 0xff, 0xff, 0x75,
+ 0x7e, 0x0, 0x0, 0xca, 0xa1, 0xff, 0xff, 0xf7,
+ 0x23, 0x72, 0x0, 0x0, 0x6a, 0x17, 0xfb, 0xff,
+ 0xff, 0x95, 0x9c, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x32, 0xe6, 0x71,
+ 0xff, 0xff, 0xff, 0x6d, 0x98, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc8, 0x9d, 0xff, 0xff, 0xf9, 0x31,
+ 0x92, 0x0, 0x0, 0x0, 0xf0, 0xcb, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x4c, 0x67, 0xf7, 0xf7, 0xf7, 0x3f,
+ 0x5e, 0x0, 0xb2, 0x75, 0xff, 0xff, 0xff, 0x31,
+ 0x2c, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x18, 0xe8, 0x83, 0xff, 0xff, 0xff,
+ 0xbd, 0xfe, 0x3e, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xac, 0x71, 0xff,
+ 0xff, 0xe9, 0xff, 0xff, 0x5b, 0xa0, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x34, 0xfe,
+ 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff, 0xfd,
+ 0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad, 0xff,
+ 0xff, 0xfb, 0x1b, 0x36, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0,
+ 0xe2, 0xf0, 0x9, 0xad, 0xff, 0xff, 0xff, 0x4d,
+ 0x5a, 0x0, 0x0, 0x7c, 0x49, 0xff, 0xff, 0xff,
+ 0xa5, 0xfe, 0xd0, 0xd0, 0xfe, 0x9f, 0xff, 0xff,
+ 0xff, 0x4b, 0x72, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0xe4, 0xf0, 0xfe, 0x63, 0xf1,
+ 0xff, 0xff, 0xdf, 0x9, 0x3a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xc8, 0x92, 0x20, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x74, 0x41, 0xfd, 0xff, 0xff, 0xbf,
+ 0x9, 0xdc, 0xb6, 0xd6, 0xfe, 0xd1, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x4c, 0x47, 0xff, 0xff, 0xff, 0x81,
+ 0xf6, 0xd0, 0xfe, 0xb7, 0xff, 0xff, 0xf1, 0x9,
+ 0x12, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x4c, 0x5, 0xcf, 0xff, 0xff,
+ 0xff, 0x73, 0xe0, 0xe, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xe0, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xd2, 0xa6, 0x4a, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x44, 0x11, 0xf3,
+ 0xff, 0xff, 0xff, 0xe7, 0x5, 0x4e, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x98,
+ 0x39, 0xf9, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff, 0xff,
+ 0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb, 0xff,
+ 0xff, 0xb5, 0xf6, 0x8, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7,
+ 0xb7, 0xbf, 0xe3, 0xff, 0xff, 0xff, 0xdb, 0xfe,
+ 0x22, 0x0, 0x0, 0x20, 0xfe, 0xb9, 0xff, 0xff,
+ 0xff, 0xc7, 0x89, 0x93, 0xc9, 0xff, 0xff, 0xff,
+ 0xc5, 0xfe, 0x22, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xb7, 0xb7, 0xbf, 0xe1, 0xff, 0xff,
+ 0xff, 0xf7, 0x49, 0xc0, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x49, 0x50, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1c, 0xfa, 0xa7, 0xff, 0xff, 0xff,
+ 0xdb, 0x93, 0x83, 0x95, 0xd1, 0xff, 0xff, 0xff,
+ 0xc3, 0xd4, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x1e, 0xfe, 0xe3, 0xff, 0xff, 0xf7,
+ 0xa5, 0x89, 0xbb, 0xff, 0xff, 0xff, 0xa7, 0xea,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0xaa, 0x3f, 0xf9, 0xff,
+ 0xff, 0xef, 0x29, 0x90, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xb7, 0xb7, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0x7f, 0xa2, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0xa, 0xee, 0xb1,
+ 0xff, 0xff, 0xff, 0x9f, 0xde, 0x2a, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x16,
+ 0xf2, 0x9b, 0xff, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff, 0xff,
+ 0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff, 0xff,
+ 0xef, 0x31, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x45, 0xba,
+ 0x0, 0x0, 0x0, 0x0, 0x88, 0x1d, 0xcf, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+ 0x27, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xe5, 0x4d, 0xe8, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x74, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x70, 0xb, 0xb7, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf,
+ 0x37, 0x98, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x6, 0x0, 0x0, 0x0, 0x6,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0,
+ 0x0, 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70,
+ 0x0, 0x0, 0x0, 0xc8, 0x5d, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x1d, 0x74,
+ 0x0, 0x0, 0x0, 0x0, 0xac, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x6, 0x0, 0x1a, 0xf2, 0x93, 0xff,
+ 0xff, 0xff, 0xbf, 0xfe, 0x40, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb3, 0xd0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x90, 0x59,
+ 0xff, 0xff, 0xff, 0x41, 0x76, 0x2a, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x98, 0x0, 0x0, 0x0, 0xac,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0, 0x0,
+ 0x66, 0x15, 0xe9, 0xff, 0xff, 0xff, 0x83, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef,
+ 0x51, 0xda, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfd, 0xf3, 0xd3, 0x95, 0x21, 0xd4, 0x1e,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xa4, 0x11, 0x91,
+ 0xe9, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x9b, 0x17,
+ 0xba, 0xe, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xf9, 0xeb, 0xc3, 0x7f,
+ 0xf, 0xca, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x86, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0x82, 0xfe, 0x73, 0xd7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x89, 0xd,
+ 0xbc, 0x16, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff,
+ 0xff, 0xff, 0xd, 0x4, 0x0, 0x0, 0x0, 0x4,
+ 0xd, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0, 0x0,
+ 0x0, 0x42, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x52,
+ 0x0, 0x0, 0x0, 0x2e, 0xf0, 0x4d, 0xc9, 0xfd,
+ 0xff, 0xff, 0xff, 0xf3, 0xa5, 0x19, 0xb2, 0x8,
+ 0x0, 0x0, 0x0, 0x0, 0x86, 0x87, 0xff, 0xff,
+ 0xff, 0xd, 0x4, 0x0, 0x0, 0x5e, 0xd, 0xdb,
+ 0xff, 0xff, 0xff, 0x75, 0x40, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb3, 0xbc, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x2c, 0xfe,
+ 0xe7, 0xff, 0xd9, 0xfe, 0x1c, 0x1c, 0x29, 0xff,
+ 0xff, 0xff, 0x77, 0x74, 0x0, 0x0, 0x0, 0x86,
+ 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0, 0x0,
+ 0x6, 0xd4, 0x6f, 0xff, 0xff, 0xff, 0x83, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe, 0x69,
+ 0xd3, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xab, 0x2d,
+ 0xd8, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xf6, 0xc8, 0x64, 0xa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x5a, 0xda,
+ 0xfe, 0x39, 0x55, 0x55, 0x35, 0xfe, 0xe0, 0x68,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xee, 0xb0,
+ 0x4a, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xbe, 0xfe,
+ 0x25, 0x4f, 0x57, 0x43, 0x21, 0xfc, 0xc4, 0x54,
+ 0x2, 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0, 0x0, 0x2,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0, 0x0,
+ 0x0, 0x24, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2c,
+ 0x0, 0x0, 0x0, 0x0, 0x24, 0xa6, 0xfa, 0x1b,
+ 0x4d, 0x59, 0x47, 0xb, 0xea, 0x70, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x2, 0x0, 0x0, 0x2, 0xb0, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x40, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x7e, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0xc2,
+ 0xfe, 0xfe, 0xfe, 0xac, 0x0, 0xe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x42, 0x0, 0x0, 0x0, 0x50,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0, 0x0,
+ 0x0, 0x3c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0xb8,
+ 0xfc, 0x23, 0x4d, 0x57, 0x41, 0x9, 0xea, 0x7e,
+ 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x16, 0x3c, 0x5a, 0x58, 0x38, 0x14, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x2e, 0x50, 0x5c, 0x48, 0x24, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x2a,
+ 0x4e, 0x5e, 0x46, 0x20, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc, 0x2e, 0x50, 0x5a, 0x40, 0x1a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x62, 0xd0, 0xf0, 0xf8, 0xf8, 0xee, 0xca,
+ 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90,
+ 0xde, 0xf4, 0xf8, 0xf8, 0xea, 0xbc, 0x24, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb0, 0x9b, 0xdd, 0xdd, 0xdd, 0xdd, 0x83,
+ 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xc3, 0xdd, 0xdd, 0xdd, 0xdd, 0x4d, 0x4a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0x3e, 0x66, 0x72, 0x56, 0x28, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x4, 0xe, 0x1a, 0x20, 0x20, 0x20, 0x20, 0x1e,
+ 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0x32, 0x5e, 0x78, 0x6c, 0x44, 0x18, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x10, 0x1a, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x1e, 0x12, 0x8, 0x0, 0x0, 0x6,
+ 0x12, 0x1c, 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0,
+ 0x0, 0x4, 0xe, 0x1a, 0x20, 0x16, 0xc, 0x0,
+ 0x0, 0x8, 0x14, 0x1e, 0x1e, 0x14, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0xe, 0x1a, 0x20,
+ 0x18, 0xc, 0x2, 0x2, 0xe, 0x18, 0x20, 0x16,
+ 0xc, 0x0, 0x0, 0x0, 0x8, 0x14, 0x1a, 0x12,
+ 0x8, 0x0, 0x0, 0x0, 0xc, 0x16, 0x20, 0x18,
+ 0xc, 0x2, 0x0, 0x6, 0x12, 0x1c, 0x20, 0x1a,
+ 0xe, 0x4, 0x0, 0x0, 0x0, 0x2, 0xe, 0x18,
+ 0x20, 0x1c, 0x12, 0x6, 0x0, 0xa, 0x14, 0x20,
+ 0x1e, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0x12, 0x1c, 0x20, 0x16, 0xc, 0x0, 0x0,
+ 0xc, 0x16, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x18, 0xc, 0x2, 0x0,
+ 0x0, 0xd6, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+ 0xae, 0x0, 0xa, 0x16, 0x20, 0x1a, 0xe, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+ 0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x16, 0x1a,
+ 0x10, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x1d, 0xfe, 0xfc, 0xd2, 0x6a, 0xc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xc8, 0xfe, 0x35, 0x5d, 0x67, 0x51, 0x11, 0xf2,
+ 0x8a, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x52, 0x11, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x1d, 0xfe, 0xfc, 0xd4, 0x6a, 0xa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0xa8, 0xfc,
+ 0x21, 0x57, 0x69, 0x61, 0x3b, 0xfe, 0xd4, 0x4e,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x13, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x1b, 0x98, 0x0, 0x0, 0x7c,
+ 0x17, 0x23, 0x23, 0x1f, 0xbe, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xf, 0x23, 0x23, 0x23, 0x5, 0x10,
+ 0x0, 0x92, 0x1f, 0x23, 0x23, 0x1d, 0xd2, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6c, 0xf, 0x23, 0x23,
+ 0x23, 0xb, 0xe, 0x1c, 0xd, 0x23, 0x23, 0x23,
+ 0xfe, 0x1c, 0x0, 0x0, 0xd6, 0x1d, 0x23, 0x1b,
+ 0xbe, 0x0, 0x0, 0x26, 0x5, 0x23, 0x23, 0x23,
+ 0xb, 0x10, 0x0, 0x36, 0x17, 0x23, 0x23, 0x23,
+ 0x11, 0x8c, 0x0, 0x0, 0x0, 0x76, 0xd, 0x23,
+ 0x23, 0x23, 0x19, 0x4c, 0x0, 0x86, 0x21, 0x23,
+ 0x23, 0x1f, 0xf0, 0x14, 0x0, 0x0, 0x0, 0x4,
+ 0xcc, 0x19, 0x23, 0x23, 0x23, 0x7, 0x0, 0xe,
+ 0x5, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0xb, 0x24, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf7, 0xcb, 0x79,
+ 0x8a, 0x0, 0xa6, 0x21, 0x23, 0x23, 0x11, 0x82,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc,
+ 0xb3, 0xd5, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0xfe, 0x21, 0x23,
+ 0x15, 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xfd, 0xdd, 0x9b, 0x25, 0xd4, 0x20,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a, 0xfe,
+ 0x75, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xb5,
+ 0x35, 0xde, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x88, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfd, 0xdd, 0x9b, 0x21, 0xce, 0x16, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0xfa, 0x55, 0xcb,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x85, 0x5,
+ 0x8c, 0x2, 0x0, 0x0, 0x9a, 0x95, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc7, 0xd4, 0x0, 0x0, 0xba,
+ 0xb1, 0xff, 0xff, 0xe3, 0xee, 0x0, 0x0, 0x0,
+ 0x0, 0x76, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x20,
+ 0x0, 0xae, 0xc3, 0xff, 0xff, 0xef, 0x5, 0x26,
+ 0x0, 0x0, 0x0, 0x0, 0xd4, 0xa1, 0xff, 0xff,
+ 0xfd, 0x29, 0xe, 0x1c, 0x41, 0xff, 0xff, 0xff,
+ 0x41, 0x54, 0x0, 0x20, 0x5, 0xf1, 0xff, 0xe3,
+ 0xfe, 0x12, 0x0, 0x66, 0x51, 0xff, 0xff, 0xff,
+ 0x2b, 0x10, 0x0, 0x36, 0x63, 0xff, 0xff, 0xff,
+ 0xbf, 0xfc, 0x24, 0x0, 0x18, 0xf8, 0xad, 0xff,
+ 0xff, 0xff, 0x7b, 0x4c, 0x0, 0x90, 0xb7, 0xff,
+ 0xff, 0xfb, 0x35, 0x7e, 0x0, 0x0, 0x0, 0x4c,
+ 0xf, 0xeb, 0xff, 0xff, 0xdb, 0x7, 0x0, 0x1c,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x4d, 0x3c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0xb4,
+ 0x44, 0x0, 0xbe, 0xd1, 0xff, 0xff, 0xb7, 0xf2,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c,
+ 0xdc, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x96, 0x55, 0xff, 0xff,
+ 0xcd, 0xfc, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xeb, 0x49, 0xce,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x60, 0x5, 0xb1,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xf1, 0x57, 0xde, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xe9, 0x37, 0x9e, 0x0,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7f, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
+ 0xd, 0x5e, 0x0, 0x0, 0xac, 0x95, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc7, 0xe0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0xae, 0x77, 0xff, 0xff, 0xff, 0x53, 0x7c,
+ 0x0, 0x0, 0x0, 0x16, 0xfe, 0xdf, 0xff, 0xff,
+ 0xc9, 0xfc, 0xe, 0x1a, 0xfe, 0xf3, 0xff, 0xff,
+ 0x75, 0x9a, 0x0, 0x6a, 0x49, 0xff, 0xff, 0xff,
+ 0x31, 0x52, 0x0, 0xac, 0x81, 0xff, 0xff, 0xe7,
+ 0xfe, 0xe, 0x0, 0x32, 0xfe, 0xbf, 0xff, 0xff,
+ 0xff, 0x4f, 0xa4, 0x0, 0x8e, 0x3b, 0xfb, 0xff,
+ 0xff, 0xd3, 0xfe, 0x46, 0x0, 0x8c, 0x39, 0xfb,
+ 0xff, 0xff, 0xab, 0xf2, 0xe, 0x0, 0x0, 0xd0,
+ 0x81, 0xff, 0xff, 0xff, 0x67, 0xc0, 0x0, 0x22,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x3a, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0xbe, 0x7d, 0xff, 0xff, 0xf7, 0x1f,
+ 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0xc, 0xf6, 0xb7, 0xff, 0xff,
+ 0xff, 0x41, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad,
+ 0xad, 0xb3, 0xd5, 0xff, 0xff, 0xff, 0xe9, 0x17,
+ 0x50, 0x0, 0x0, 0x0, 0x12, 0xf4, 0x97, 0xff,
+ 0xff, 0xff, 0xd9, 0x91, 0x83, 0xad, 0xf9, 0xff,
+ 0xff, 0xf1, 0x35, 0x8e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xad, 0xad, 0xad,
+ 0xb9, 0xe5, 0xff, 0xff, 0xff, 0xc7, 0xfc, 0xc,
+ 0x0, 0x0, 0x0, 0x70, 0x3f, 0xfb, 0xff, 0xff,
+ 0xef, 0x99, 0x75, 0x87, 0xd5, 0xff, 0xff, 0xff,
+ 0x95, 0xde, 0x0, 0x0, 0x7e, 0x65, 0xad, 0xad,
+ 0xad, 0xad, 0xb7, 0xff, 0xff, 0xff, 0xc7, 0xad,
+ 0xad, 0xad, 0xad, 0x87, 0xb6, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x48, 0x1b, 0xf9, 0xff, 0xff, 0x9b, 0xd4,
+ 0x0, 0x0, 0x0, 0x62, 0x39, 0xff, 0xff, 0xff,
+ 0x7f, 0xb8, 0x0, 0x0, 0xf6, 0xc9, 0xff, 0xff,
+ 0xa1, 0xd0, 0x0, 0xbe, 0x8b, 0xff, 0xff, 0xff,
+ 0x79, 0xa6, 0x0, 0xdc, 0xad, 0xff, 0xff, 0xbd,
+ 0xec, 0x0, 0x0, 0x0, 0x92, 0x33, 0xf7, 0xff,
+ 0xff, 0xc9, 0xfe, 0x46, 0xfc, 0xb9, 0xff, 0xff,
+ 0xfd, 0x4b, 0xb0, 0x0, 0x0, 0x16, 0xf6, 0xab,
+ 0xff, 0xff, 0xf9, 0x29, 0x70, 0x0, 0x40, 0x9,
+ 0xe3, 0xff, 0xff, 0xd1, 0xfe, 0x36, 0x0, 0x16,
+ 0x1b, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
+ 0xb7, 0xff, 0xff, 0xff, 0xb9, 0xfe, 0x1a, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x4c, 0x19, 0xf5, 0xff, 0xff, 0x83,
+ 0xc4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x60, 0x27, 0xf9, 0xff, 0xff,
+ 0xff, 0xa7, 0xec, 0x6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8,
+ 0xd8, 0xe6, 0xfe, 0x87, 0xff, 0xff, 0xff, 0x81,
+ 0xa8, 0x0, 0x0, 0x0, 0x68, 0x31, 0xfb, 0xff,
+ 0xff, 0xc1, 0x9, 0xda, 0xc0, 0xf8, 0x51, 0xf9,
+ 0xff, 0xff, 0xb9, 0xf8, 0x8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xd8, 0xda,
+ 0xee, 0xd, 0xc3, 0xff, 0xff, 0xff, 0x25, 0x2e,
+ 0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xfb,
+ 0x3d, 0xea, 0xae, 0xd0, 0x5, 0xcf, 0xff, 0xff,
+ 0xeb, 0x5, 0xc, 0x0, 0x34, 0x92, 0xc4, 0xd6,
+ 0xd6, 0xe0, 0x35, 0xff, 0xff, 0xff, 0x6f, 0xec,
+ 0xd6, 0xd6, 0xcc, 0xa0, 0x50, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x8, 0xf6, 0xbf, 0xff, 0xff, 0xd9, 0xfe,
+ 0x10, 0x0, 0x0, 0xbe, 0x89, 0xff, 0xff, 0xfb,
+ 0x23, 0x50, 0x0, 0x0, 0xce, 0x9d, 0xff, 0xff,
+ 0xc7, 0xf2, 0x0, 0xf2, 0xc3, 0xff, 0xff, 0xff,
+ 0xb3, 0xe8, 0x0, 0xf8, 0xd3, 0xff, 0xff, 0x8d,
+ 0xbc, 0x0, 0x0, 0x0, 0x14, 0xee, 0x93, 0xff,
+ 0xff, 0xff, 0x59, 0xe2, 0x47, 0xff, 0xff, 0xff,
+ 0xab, 0xfa, 0x22, 0x0, 0x0, 0x0, 0x7c, 0x2d,
+ 0xf7, 0xff, 0xff, 0x9f, 0xec, 0x8, 0xc4, 0x75,
+ 0xff, 0xff, 0xff, 0x59, 0xb2, 0x0, 0x0, 0x8,
+ 0x7a, 0xb6, 0xd6, 0xd6, 0xd6, 0xd6, 0xde, 0xfe,
+ 0xad, 0xff, 0xff, 0xf1, 0x29, 0x8a, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x6, 0xf0, 0xb1, 0xff, 0xff, 0xd5,
+ 0xfe, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0xd8, 0x91, 0xff, 0xff, 0xd5,
+ 0xff, 0xf3, 0x17, 0x4e, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x50, 0xfe, 0xe5, 0xff, 0xff, 0xb5,
+ 0xd6, 0x0, 0x0, 0x0, 0xbe, 0x93, 0xff, 0xff,
+ 0xfb, 0x37, 0x96, 0x0, 0x0, 0x26, 0xf6, 0xa9,
+ 0xff, 0xff, 0xfd, 0x1f, 0x3a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x2, 0xb6, 0x63, 0xff, 0xff, 0xff, 0x4f, 0x44,
+ 0x0, 0x0, 0x0, 0xc8, 0xad, 0xff, 0xff, 0xe7,
+ 0xfe, 0x46, 0x0, 0x0, 0xb8, 0x7b, 0xf5, 0xf5,
+ 0xf5, 0x27, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0xa8, 0x71, 0xff, 0xff, 0xff, 0x2f,
+ 0x56, 0x0, 0x6, 0xf8, 0xc9, 0xff, 0xff, 0xc5,
+ 0xfa, 0xc, 0x0, 0x0, 0x8c, 0x69, 0xff, 0xff,
+ 0xeb, 0xfe, 0x30, 0x5, 0xf3, 0xff, 0xff, 0xff,
+ 0xe7, 0xfe, 0x2c, 0x5, 0xf5, 0xff, 0xff, 0x57,
+ 0x76, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xf, 0xe3,
+ 0xff, 0xff, 0xd1, 0xfe, 0xc3, 0xff, 0xff, 0xef,
+ 0x21, 0x7a, 0x0, 0x0, 0x0, 0x0, 0x10, 0xf0,
+ 0x9d, 0xff, 0xff, 0xf3, 0x1f, 0x82, 0xfe, 0xdb,
+ 0xff, 0xff, 0xc5, 0xfe, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc4, 0x57,
+ 0xff, 0xff, 0xff, 0x7b, 0xe2, 0xe, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x90, 0x55, 0xff, 0xff, 0xff,
+ 0x43, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x34, 0x5, 0xe5, 0xff, 0xd5, 0x65,
+ 0xff, 0xff, 0x81, 0xc6, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x4, 0xfa, 0xcf, 0xff, 0xff, 0xc1,
+ 0xe0, 0x0, 0x0, 0x0, 0xe8, 0xc5, 0xff, 0xff,
+ 0xd3, 0xfc, 0x16, 0x0, 0x0, 0x0, 0x8e, 0x53,
+ 0xff, 0xff, 0xff, 0x65, 0x72, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0xa2, 0x5b, 0xff, 0xff, 0xff, 0x41, 0x3e,
+ 0x0, 0x0, 0x0, 0xb2, 0x97, 0xff, 0xff, 0xff,
+ 0x63, 0xfc, 0x9a, 0x2e, 0x44, 0xe6, 0xfc, 0xfe,
+ 0xfa, 0xde, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x42, 0x15, 0xf7, 0xff, 0xff, 0x81,
+ 0xb4, 0x0, 0x40, 0x19, 0xf9, 0xff, 0xff, 0x7b,
+ 0xb2, 0x0, 0x0, 0x0, 0x42, 0x29, 0xff, 0xff,
+ 0xff, 0x29, 0x90, 0x4d, 0xff, 0xff, 0xfb, 0xff,
+ 0xff, 0x37, 0x8c, 0x3d, 0xff, 0xff, 0xfb, 0x15,
+ 0x2e, 0x0, 0x0, 0x0, 0x0, 0x4, 0xca, 0x63,
+ 0xff, 0xff, 0xff, 0x9b, 0xff, 0xff, 0xff, 0x7d,
+ 0xe0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c,
+ 0x21, 0xf1, 0xff, 0xff, 0x93, 0xf6, 0x67, 0xff,
+ 0xff, 0xff, 0x49, 0xa0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x11, 0xe1,
+ 0xff, 0xff, 0xc9, 0xfe, 0x44, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x28, 0xfe, 0xdf, 0xff, 0xff,
+ 0xa5, 0xe8, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0xa6, 0x65, 0xff, 0xff, 0x7f, 0x5,
+ 0xe7, 0xff, 0xd9, 0xfe, 0x26, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x6, 0x82, 0x11, 0xef, 0xff, 0xff, 0xad,
+ 0xd0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+ 0xb7, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x32, 0x27,
+ 0xff, 0xff, 0xff, 0x7d, 0x9a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xba, 0xbe,
+ 0xda, 0xfe, 0xab, 0xff, 0xff, 0xe7, 0xd, 0x1e,
+ 0x0, 0x0, 0x0, 0x6e, 0x3d, 0xfb, 0xff, 0xff,
+ 0xfd, 0xbb, 0x5d, 0x5, 0xe8, 0x88, 0x22, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x6, 0xf4, 0xbb, 0xff, 0xff, 0xc3,
+ 0xf6, 0x4, 0x9c, 0x6d, 0xff, 0xff, 0xf9, 0x1f,
+ 0x4a, 0x0, 0x0, 0x0, 0xe, 0xfe, 0xe5, 0xff,
+ 0xff, 0x63, 0xde, 0x8f, 0xff, 0xff, 0xad, 0xff,
+ 0xff, 0x7f, 0xdc, 0x71, 0xff, 0xff, 0xd9, 0xfc,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0xfe,
+ 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3, 0x5,
+ 0x48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0xe6, 0x91, 0xff, 0xff, 0xef, 0x15, 0xd1, 0xff,
+ 0xff, 0xbb, 0xfc, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x1e, 0xf6, 0x9b, 0xff,
+ 0xff, 0xf7, 0x39, 0xa0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd2, 0x8f, 0xff, 0xff,
+ 0xef, 0xd, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x14, 0xfc, 0xc3, 0xff, 0xf5, 0x1b, 0xe6,
+ 0x97, 0xff, 0xff, 0x53, 0x94, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xfa,
+ 0xfa, 0xfe, 0x19, 0xb3, 0xff, 0xff, 0xff, 0x6d,
+ 0x96, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x10, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xa8, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x93, 0x91, 0x91,
+ 0x9f, 0xcf, 0xff, 0xff, 0xf7, 0x5f, 0xce, 0x2,
+ 0x0, 0x0, 0x0, 0x1a, 0xf4, 0x7b, 0xfb, 0xff,
+ 0xff, 0xff, 0xff, 0xed, 0xad, 0x4b, 0xfe, 0x96,
+ 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0xa2, 0x6d, 0xff, 0xff, 0xf7,
+ 0x11, 0x36, 0xea, 0xb1, 0xff, 0xff, 0xc1, 0xf8,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0xec, 0xbb, 0xff,
+ 0xff, 0x91, 0xfc, 0xc5, 0xff, 0xf9, 0x31, 0xff,
+ 0xff, 0xb7, 0xfa, 0x9d, 0xff, 0xff, 0xad, 0xde,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x94,
+ 0x35, 0xf7, 0xff, 0xff, 0xff, 0xfd, 0x4d, 0xb2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x15, 0xeb, 0xff, 0xff, 0xb9, 0xff, 0xff,
+ 0xfb, 0x3d, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xb2, 0x47, 0xfb, 0xff,
+ 0xff, 0x8d, 0xee, 0x16, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x2b, 0xfb, 0xff,
+ 0xff, 0x6f, 0xac, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x32, 0x35, 0xfd, 0xff, 0xaf, 0xf0, 0x6e,
+ 0x31, 0xfd, 0xff, 0xb7, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdf, 0xdf,
+ 0xdf, 0xe5, 0xfb, 0xff, 0xff, 0xff, 0xd1, 0x5,
+ 0x3a, 0x0, 0x0, 0x0, 0xfa, 0xdf, 0xff, 0xff,
+ 0xad, 0xd6, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xac, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd1, 0x3d, 0xf4, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x46, 0xf4, 0x49, 0xc7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x31,
+ 0xd4, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0x3c, 0x11, 0xf3, 0xff, 0xff,
+ 0x63, 0xa0, 0xfe, 0xed, 0xff, 0xff, 0x75, 0xac,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xba, 0x8b, 0xff,
+ 0xff, 0xb9, 0x9, 0xf3, 0xff, 0xcb, 0xfe, 0xdb,
+ 0xff, 0xeb, 0xfe, 0xc5, 0xff, 0xff, 0x7b, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+ 0xfe, 0xc3, 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x58,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x6, 0xda, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xad, 0xf8, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x54, 0x9, 0xd5, 0xff, 0xff,
+ 0xd9, 0x9, 0x56, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xe, 0xfa, 0xc1, 0xff,
+ 0xff, 0xc5, 0xfa, 0x10, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x32, 0x4b, 0x91, 0x91, 0x3d, 0x86, 0x12,
+ 0xf6, 0x7b, 0x91, 0x89, 0xa8, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x25, 0xa6,
+ 0x0, 0x0, 0x0, 0x0, 0xf8, 0xdf, 0xff, 0xff,
+ 0xad, 0xda, 0x0, 0x0, 0x0, 0x0, 0x12, 0xd,
+ 0xff, 0xff, 0xff, 0x87, 0xa6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xb9, 0xf, 0x6e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0xa2, 0xfc,
+ 0x41, 0x9d, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xed,
+ 0x39, 0x9a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xda,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfa, 0x0, 0x0, 0x0,
+ 0x0, 0x98, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2e,
+ 0x0, 0x0, 0x0, 0x4, 0xf0, 0xb5, 0xff, 0xff,
+ 0xa9, 0xf0, 0x4f, 0xff, 0xff, 0xf7, 0x19, 0x46,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x55, 0xff,
+ 0xff, 0xdf, 0x51, 0xff, 0xff, 0x95, 0xf8, 0xa7,
+ 0xff, 0xff, 0x3d, 0xeb, 0xff, 0xff, 0x43, 0x5a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba,
+ 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0x73, 0xda,
+ 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x4e, 0xb, 0xe3, 0xff, 0xff, 0xff, 0xf9,
+ 0x2f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x16, 0xee, 0x8b, 0xff, 0xff, 0xfb,
+ 0x4b, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa6, 0x6b, 0xff,
+ 0xff, 0xfd, 0x2f, 0x66, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x20, 0x6e, 0xa0, 0x9e, 0x6a, 0x1a, 0x0,
+ 0x46, 0x86, 0xac, 0x8e, 0x52, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xdd, 0xdd,
+ 0xdd, 0xdb, 0xcf, 0xab, 0x5f, 0xfe, 0x9e, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd9, 0xff, 0xff,
+ 0xbb, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x36, 0x2b,
+ 0xff, 0xff, 0xff, 0x7b, 0x96, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0x4d, 0x49, 0x49,
+ 0x5b, 0xa5, 0xff, 0xff, 0xff, 0xa3, 0xe4, 0x0,
+ 0x0, 0x0, 0x6, 0x3a, 0x62, 0x80, 0x6a, 0x56,
+ 0x7e, 0xd8, 0xfe, 0x47, 0xb7, 0xff, 0xff, 0xff,
+ 0xc3, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8,
+ 0xb1, 0xff, 0xff, 0xe3, 0xfc, 0x0, 0x0, 0x0,
+ 0x0, 0x9c, 0x77, 0xff, 0xff, 0xff, 0x2f, 0x2a,
+ 0x0, 0x0, 0x0, 0x0, 0x9a, 0x67, 0xff, 0xff,
+ 0xe5, 0xfe, 0x9b, 0xff, 0xff, 0xbd, 0xf6, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0x13, 0xfb,
+ 0xff, 0xfb, 0x97, 0xff, 0xff, 0x55, 0xc4, 0x6b,
+ 0xff, 0xff, 0x93, 0xff, 0xff, 0xf3, 0x5, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0x9,
+ 0xd9, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xeb, 0x1f,
+ 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2, 0xd2, 0x75, 0xff, 0xff, 0xff, 0xa1,
+ 0xf4, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xa1,
+ 0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xb, 0xed,
+ 0xff, 0xff, 0x93, 0xd6, 0x0, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0xf8,
+ 0xf8, 0xf6, 0xee, 0xd4, 0x8e, 0x30, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xe8, 0xc3, 0xff, 0xff,
+ 0xd5, 0xfe, 0x1a, 0x0, 0x0, 0x0, 0x92, 0x55,
+ 0xff, 0xff, 0xff, 0x5f, 0x6a, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x58, 0x5e,
+ 0x94, 0xfe, 0xb7, 0xff, 0xff, 0xef, 0xfe, 0x6,
+ 0x0, 0x0, 0xe, 0x15, 0x67, 0x67, 0x67, 0x2d,
+ 0x5e, 0x0, 0x1e, 0x90, 0xfe, 0xb3, 0xff, 0xff,
+ 0xfb, 0x13, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd0,
+ 0xab, 0xff, 0xff, 0xeb, 0xfe, 0x8, 0x0, 0x0,
+ 0x0, 0xb2, 0x81, 0xff, 0xff, 0xff, 0x25, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x36, 0xd, 0xf1, 0xff,
+ 0xff, 0x41, 0xd9, 0xff, 0xff, 0x71, 0xa6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xfc, 0xd9,
+ 0xff, 0xff, 0xeb, 0xff, 0xf5, 0xb, 0x5c, 0x1f,
+ 0xfd, 0xff, 0xeb, 0xff, 0xff, 0xcb, 0xf6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xe6, 0x87,
+ 0xff, 0xff, 0xff, 0x75, 0xf9, 0xff, 0xff, 0xab,
+ 0xfa, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x68, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x9e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xfe, 0xc7, 0xff, 0xff, 0xe3, 0x15,
+ 0x6c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xe4, 0xa1,
+ 0xff, 0xff, 0xe3, 0xfe, 0x2c, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xba, 0x8f, 0xff, 0xff,
+ 0xfd, 0x3f, 0xa2, 0x4, 0x0, 0x2a, 0xf8, 0xad,
+ 0xff, 0xff, 0xf7, 0x15, 0x34, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0xbc, 0x81, 0xff, 0xff, 0xff, 0x19, 0x14,
+ 0x0, 0x0, 0xe, 0x1d, 0xff, 0xff, 0xff, 0x8b,
+ 0xd0, 0x6, 0x0, 0x0, 0xcc, 0x77, 0xff, 0xff,
+ 0xff, 0x31, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb6,
+ 0x97, 0xff, 0xff, 0xff, 0x1d, 0x74, 0x0, 0x0,
+ 0x16, 0xf2, 0xa5, 0xff, 0xff, 0xf9, 0x5, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0x2, 0xee, 0xb1, 0xff,
+ 0xff, 0x9f, 0xff, 0xff, 0xf7, 0x15, 0x40, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde, 0xad,
+ 0xff, 0xff, 0xff, 0xff, 0xc5, 0xf6, 0xa, 0xfc,
+ 0xd5, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xce, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x84, 0x29, 0xf3,
+ 0xff, 0xff, 0xc3, 0xfe, 0xa5, 0xff, 0xff, 0xfd,
+ 0x51, 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0xe2, 0x79, 0xff, 0xff, 0xff, 0x5d, 0xca,
+ 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x41,
+ 0xff, 0xff, 0xff, 0x5b, 0x96, 0x0, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x62, 0x2d, 0xf9, 0xff,
+ 0xff, 0xc9, 0x11, 0xe6, 0xce, 0xfa, 0x57, 0xfb,
+ 0xff, 0xff, 0xad, 0xf2, 0x6, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x94, 0x73, 0xff, 0xff, 0xff, 0x29, 0x2a,
+ 0x0, 0x0, 0x8, 0xfe, 0xdf, 0xff, 0xff, 0xdd,
+ 0x15, 0xe8, 0xb4, 0xc8, 0xfe, 0xb1, 0xff, 0xff,
+ 0xfb, 0x11, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7a,
+ 0x59, 0xff, 0xff, 0xff, 0xa7, 0xfe, 0xd8, 0xc4,
+ 0xf4, 0x37, 0xf5, 0xff, 0xff, 0xcb, 0xf8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x94, 0x5f, 0xff,
+ 0xff, 0xf3, 0xff, 0xff, 0xb9, 0xf4, 0x6, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x7b,
+ 0xff, 0xff, 0xff, 0xff, 0x8d, 0xbe, 0x0, 0xd4,
+ 0x9f, 0xff, 0xff, 0xff, 0xff, 0x6b, 0x8e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2a, 0xfc, 0xb3, 0xff,
+ 0xff, 0xfd, 0x47, 0xca, 0x27, 0xf5, 0xff, 0xff,
+ 0xd9, 0x9, 0x54, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8a, 0x27, 0xf1, 0xff, 0xff, 0xb3, 0xfe, 0xe4,
+ 0xe0, 0xe0, 0xe0, 0xe0, 0xcc, 0x98, 0x2e, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+ 0xd1, 0xff, 0xff, 0xb5, 0xf4, 0x8, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xee, 0x8f, 0xff,
+ 0xff, 0xff, 0xe3, 0x9f, 0x91, 0xb7, 0xfb, 0xff,
+ 0xff, 0xeb, 0x27, 0x7e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x7e, 0x69, 0xff, 0xff, 0xff, 0x39, 0x52,
+ 0x0, 0x0, 0x0, 0xc8, 0x75, 0xff, 0xff, 0xff,
+ 0xe9, 0x9f, 0x81, 0x89, 0xc3, 0xff, 0xff, 0xff,
+ 0xbf, 0xf8, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a,
+ 0xfe, 0xd1, 0xff, 0xff, 0xff, 0xd1, 0x97, 0x89,
+ 0xab, 0xf7, 0xff, 0xff, 0xff, 0x5f, 0xac, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x9, 0xef,
+ 0xff, 0xff, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0x41,
+ 0xff, 0xff, 0xff, 0xff, 0x49, 0x6a, 0x0, 0x86,
+ 0x61, 0xff, 0xff, 0xff, 0xff, 0x2b, 0x42, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xbc, 0x57, 0xff, 0xff,
+ 0xff, 0xb5, 0xfa, 0x2a, 0xec, 0x95, 0xff, 0xff,
+ 0xff, 0x8b, 0xec, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xfe, 0xb9, 0xff, 0xff, 0xff, 0xc3, 0xb7, 0xb7,
+ 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x5d, 0x6c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe,
+ 0x7d, 0xff, 0xff, 0xf7, 0x1d, 0x52, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0xa7,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x4f, 0xf2, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x87, 0xff, 0xff, 0xff, 0xd, 0x6, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x67, 0xba,
+ 0x0, 0x0, 0x0, 0x40, 0xfe, 0x91, 0xfd, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5,
+ 0x31, 0x92, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x36, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x8c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xaa, 0x31, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xfd, 0x8b, 0xfe, 0x30, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea, 0xad,
+ 0xff, 0xff, 0xff, 0xf3, 0x11, 0x3c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0xfe,
+ 0xf3, 0xff, 0xff, 0xef, 0x5, 0x20, 0x0, 0x34,
+ 0x15, 0xf9, 0xff, 0xff, 0xe7, 0xfe, 0xe, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0x9, 0xdb, 0xff, 0xff,
+ 0xfb, 0x35, 0x8a, 0x0, 0x62, 0x19, 0xed, 0xff,
+ 0xff, 0xf7, 0x33, 0x94, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4c, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x29, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x98, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e,
+ 0x19, 0xf5, 0xff, 0xff, 0x81, 0xc4, 0x0, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0xfe,
+ 0x69, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xdb, 0x33, 0xd6, 0x22, 0x0, 0x0, 0x0,
+ 0x86, 0x87, 0xff, 0xff, 0xff, 0xd, 0x4, 0x0,
+ 0x0, 0x28, 0xf, 0xe9, 0xff, 0xff, 0xcf, 0xb4,
+ 0x0, 0x0, 0x0, 0x0, 0x5a, 0xf8, 0x49, 0xbb,
+ 0xf7, 0xff, 0xff, 0xff, 0xff, 0xed, 0xa1, 0x21,
+ 0xc6, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x26, 0x35, 0xff, 0xff, 0xff, 0x6f, 0x68,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x12, 0xc0, 0x17, 0x97, 0xe7, 0xff, 0xff, 0xff,
+ 0xff, 0xf9, 0xc3, 0x55, 0xf8, 0x54, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8e, 0x5b,
+ 0xff, 0xff, 0xff, 0xb7, 0xee, 0x4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
+ 0xc9, 0xff, 0xff, 0xbf, 0xea, 0x0, 0x0, 0x6,
+ 0xf6, 0xcf, 0xff, 0xff, 0xbd, 0xe2, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0x89, 0xff, 0xff, 0xff,
+ 0xa7, 0xf4, 0x14, 0x0, 0x6, 0xde, 0x87, 0xff,
+ 0xff, 0xff, 0xc1, 0x94, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x36, 0x43, 0xff, 0xff, 0xff, 0x63,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e,
+ 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x83, 0x82, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfa, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6,
+ 0xf2, 0xb1, 0xff, 0xff, 0xd5, 0xfe, 0x1c, 0x0,
+ 0x5c, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36,
+ 0xb8, 0xfc, 0x23, 0x4d, 0x59, 0x3d, 0x63, 0xf5,
+ 0xff, 0xff, 0xeb, 0x4d, 0x50, 0x0, 0x0, 0x0,
+ 0x50, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x2, 0x0,
+ 0x0, 0x4, 0xc8, 0xfe, 0xfe, 0xfe, 0xfe, 0xa0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x94, 0xf2,
+ 0x9, 0x43, 0x59, 0x55, 0x35, 0xfe, 0xe4, 0x70,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x3c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6, 0x64, 0xda, 0xfe, 0x31, 0x53, 0x59,
+ 0x47, 0xf, 0xf6, 0xa0, 0x28, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x80, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x98,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x8a, 0x0, 0x0, 0x0,
+ 0x9e, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x6e, 0x0, 0x0, 0x0, 0x50, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x1c, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x4c, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xdf, 0xfe, 0x96,
+ 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x90, 0x57, 0xff, 0xff, 0xff, 0x43, 0x3e, 0x64,
+ 0xca, 0x4d, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0x2e, 0x50, 0x5a, 0x66, 0xea, 0x4b,
+ 0xed, 0xff, 0xf5, 0x67, 0x50, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1c, 0x42, 0x60, 0x5a, 0x3a, 0x14, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x12, 0x36, 0x58, 0x60,
+ 0x48, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xdc, 0xb3, 0xff, 0xff, 0xf3, 0xb1, 0x69,
+ 0x82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2a, 0xfe, 0x8d, 0x95, 0x95, 0x51, 0x3e, 0xd6,
+ 0x9b, 0xbf, 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0xd8,
+ 0x35, 0xc9, 0x49, 0xe8, 0x34, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xda, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x99,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x56, 0x94, 0xbc, 0xa8, 0x76, 0x26, 0xf2,
+ 0xe3, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0xa0, 0xac, 0xa4, 0x20, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb8, 0xab, 0xf5, 0xf5, 0xf5, 0xf5, 0x91,
+ 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xea,
+ 0xd9, 0xf5, 0xf5, 0xf5, 0xf5, 0x57, 0x4e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x74, 0xec, 0xfc, 0xfe, 0xfe, 0xfc, 0xe8,
+ 0x5a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xac,
+ 0xf4, 0xfe, 0xfe, 0xfe, 0xfc, 0xe2, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x24, 0x52, 0x76, 0x76, 0x52, 0x26,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xa, 0x3e, 0x66, 0x80, 0x66, 0x3e, 0xa,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x54,
+ 0x98, 0xba, 0xb2, 0x80, 0x34, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x28, 0x56, 0x78, 0x74, 0x50, 0x22, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+ 0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x32,
+ 0x0, 0x0, 0x0, 0x24, 0x52, 0x76, 0x78, 0x54,
+ 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c,
+ 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x3c,
+ 0x6e, 0x90, 0x86, 0x5e, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51, 0xa8,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0x21, 0x67, 0x67, 0x67, 0x21, 0x32,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e, 0xf2, 0x2d,
+ 0x7f, 0x9b, 0x99, 0x67, 0xaa, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xb4, 0x55, 0x67, 0x67, 0x4d, 0x98, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+ 0x0, 0x0, 0x74, 0x3f, 0x67, 0x67, 0x63, 0xe4,
+ 0x0, 0x0, 0x0, 0xa0, 0x4f, 0x67, 0x67, 0x51,
+ 0xac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f,
+ 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x17,
+ 0x71, 0x73, 0x73, 0x57, 0xf0, 0x22, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcb, 0xdc,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x54, 0x57, 0xff, 0xff, 0xff, 0x57, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x28, 0xfc, 0x85, 0xfb,
+ 0xff, 0xff, 0xff, 0xc7, 0xd2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe4, 0xd3, 0xff, 0xff, 0xbd, 0xce, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+ 0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfa,
+ 0x0, 0x0, 0x0, 0xd4, 0xc3, 0xff, 0xff, 0xcd,
+ 0xde, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef,
+ 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x6c,
+ 0x77, 0xfb, 0xff, 0xfb, 0x4d, 0xc8, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8e, 0x55, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xb1, 0xcc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xae, 0x9f, 0xff, 0xff, 0xef, 0xf8, 0x0,
+ 0x0, 0x0, 0xaa, 0x9b, 0xff, 0xff, 0xf5, 0xfc,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xf6, 0x6d, 0xfb, 0xff, 0xe3, 0x1d, 0x5e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xd2, 0xaf, 0xff, 0xff,
+ 0xfb, 0x7b, 0x45, 0x37, 0x86, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x78, 0x41, 0x67, 0x67, 0x5f, 0xda, 0x0,
+ 0x0, 0x0, 0x74, 0x3d, 0x63, 0x63, 0x5d, 0xe4,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x3a, 0xf2, 0x65, 0xd9, 0xd9, 0x95, 0x5e, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xec, 0xcd, 0xff, 0xff,
+ 0xc9, 0xfe, 0x6a, 0x30, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x1a, 0x4a, 0x70, 0x7e, 0x5c, 0x30, 0x0,
+ 0x0, 0x0, 0x18, 0x46, 0x6a, 0x78, 0x58, 0x2e,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x34, 0xbe, 0xea, 0xee, 0xca, 0x58, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x3c, 0xa6, 0xe8, 0xfa,
+ 0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf8,
+ 0xea, 0xf8, 0xf8, 0xe2, 0x8e, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x8e, 0xde,
+ 0xf8, 0xfc, 0xf8, 0xe4, 0x98, 0x2a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+ 0xf4, 0xe2, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x74, 0xd4,
+ 0xf6, 0xfa, 0xf8, 0xe6, 0x9e, 0x2e, 0x0, 0x0,
+ 0x0, 0x0, 0x56, 0xb6, 0xfe, 0xd3, 0xff, 0xff,
+ 0xbd, 0xfc, 0xd4, 0x9a, 0x18, 0x0, 0x0, 0x0,
+ 0x0, 0x46, 0xba, 0xf0, 0xfa, 0xf6, 0xd2, 0xa4,
+ 0xc0, 0xe2, 0xd4, 0x9e, 0x1e, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0xe0, 0xf8,
+ 0xf8, 0xea, 0xa2, 0x28, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x44, 0xae, 0xdc, 0xe6, 0xc8, 0x80, 0x0,
+ 0x0, 0x0, 0x38, 0xa8, 0xd8, 0xea, 0xce, 0x90,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x0, 0x5c, 0xb8, 0xe0, 0xea, 0xd4, 0x9e,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc,
+ 0xb2, 0x9c, 0xda, 0xf6, 0xf8, 0xee, 0xae, 0x34,
+ 0x60, 0xce, 0xf4, 0xfa, 0xf2, 0xc0, 0x48, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x68, 0xbe, 0xe2, 0xda,
+ 0xae, 0x92, 0xd6, 0xf6, 0xfa, 0xf0, 0xb6, 0x3c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14,
+ 0x78, 0xd4, 0xf6, 0xfa, 0xfa, 0xec, 0xb0, 0x44,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4, 0x8e, 0xfe, 0x6f, 0xbf, 0xe3,
+ 0xef, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x49,
+ 0xc3, 0xeb, 0xe5, 0xb7, 0x41, 0xea, 0x26, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x52, 0xfa, 0x4d, 0xb3,
+ 0xdf, 0xed, 0xe3, 0xb9, 0x57, 0xfc, 0x5c, 0x0,
+ 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+ 0xdd, 0x8f, 0x59, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x0, 0x2a, 0xe2, 0x2f, 0xa3,
+ 0xdb, 0xed, 0xe3, 0xbd, 0x5d, 0xfe, 0x60, 0x0,
+ 0x0, 0x0, 0xae, 0x8d, 0xc3, 0xf3, 0xff, 0xff,
+ 0xeb, 0xc3, 0xc3, 0x3b, 0x38, 0x0, 0x0, 0x0,
+ 0x76, 0xfe, 0x7b, 0xcf, 0xeb, 0xdf, 0x97, 0xd,
+ 0xa5, 0xc3, 0xc3, 0x45, 0x44, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0x2d, 0xb1, 0xe5,
+ 0xe9, 0xc3, 0x55, 0xf2, 0x2e, 0x0, 0x0, 0x0,
+ 0x0, 0x90, 0x79, 0xc3, 0xc3, 0xb7, 0xe8, 0x0,
+ 0x0, 0x0, 0x78, 0x69, 0xc3, 0xc3, 0xc3, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x24, 0xfa, 0x93, 0xc3, 0xc3, 0xc3, 0x53,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3,
+ 0x79, 0x27, 0xa9, 0xe1, 0xeb, 0xcb, 0x61, 0xfc,
+ 0x11, 0x95, 0xdb, 0xed, 0xd5, 0x7d, 0xfe, 0x5c,
+ 0x0, 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xc3, 0xc3,
+ 0x71, 0x1d, 0xa1, 0xdf, 0xeb, 0xcf, 0x71, 0xfe,
+ 0x4c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0xec,
+ 0x35, 0xa5, 0xd9, 0xeb, 0xe5, 0xc5, 0x79, 0x5,
+ 0x9e, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x62, 0x11, 0xc1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x93, 0xfa, 0x22, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe5, 0xf5,
+ 0xff, 0xff, 0xff, 0xff, 0xf7, 0x53, 0xc4, 0x2,
+ 0x0, 0x0, 0x0, 0x2c, 0xfa, 0x89, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xfe, 0x2e,
+ 0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xd9, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xe, 0xdc, 0x57, 0xf3, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x97, 0xfc, 0x2e,
+ 0x0, 0x0, 0xca, 0xbb, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x4d, 0x4a, 0x0, 0x0, 0x36,
+ 0xfe, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1,
+ 0xf1, 0xff, 0xff, 0x5b, 0x66, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xd1, 0xeb, 0xff, 0xff,
+ 0xff, 0xff, 0xfb, 0x5d, 0xbc, 0x0, 0x0, 0x0,
+ 0x0, 0xbc, 0x9f, 0xff, 0xff, 0xef, 0xfa, 0x0,
+ 0x0, 0x0, 0xa4, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0xb4, 0x4f, 0xff, 0xff, 0xff, 0xbf, 0xd4,
+ 0x20, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff,
+ 0xbf, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x61,
+ 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0xee,
+ 0x8, 0x0, 0x0, 0x0, 0xea, 0xd1, 0xff, 0xff,
+ 0xb1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x83,
+ 0xe0, 0x2, 0x0, 0x0, 0x0, 0x1c, 0xec, 0x6b,
+ 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd,
+ 0x1d, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd2, 0x99, 0xff, 0xff, 0xff, 0xcb,
+ 0xb7, 0xed, 0xff, 0xff, 0xff, 0x4b, 0x76, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xff,
+ 0xdb, 0xe1, 0xff, 0xff, 0xff, 0xe1, 0xb, 0x34,
+ 0x0, 0x0, 0x0, 0xac, 0x59, 0xff, 0xff, 0xff,
+ 0xef, 0xd1, 0xf3, 0xff, 0xff, 0xff, 0x5d, 0x9c,
+ 0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf9,
+ 0xd5, 0xef, 0xff, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x70, 0x29, 0xef, 0xff, 0xff,
+ 0xf9, 0xd5, 0xed, 0xff, 0xff, 0xff, 0x5d, 0xa2,
+ 0x0, 0x0, 0xb0, 0x93, 0xcb, 0xf3, 0xff, 0xff,
+ 0xef, 0xcb, 0xcb, 0x3d, 0x38, 0x0, 0x0, 0xae,
+ 0x67, 0xff, 0xff, 0xff, 0xf9, 0xd5, 0xed, 0xff,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xff, 0xf9, 0xd7, 0xeb,
+ 0xff, 0xff, 0xff, 0xd9, 0xfe, 0x10, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf4, 0x5, 0xd5, 0xff, 0xff, 0xed, 0x27, 0x8e,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xff, 0xfb, 0xd7, 0xeb, 0xff, 0xff, 0xff, 0xf9,
+ 0xff, 0xe5, 0xdb, 0xff, 0xff, 0xff, 0xf9, 0x1f,
+ 0x3c, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xff, 0xfb, 0xd9, 0xe7, 0xff, 0xff, 0xff, 0xef,
+ 0xb, 0x22, 0x0, 0x0, 0x0, 0x92, 0x41, 0xf9,
+ 0xff, 0xff, 0xf9, 0xd1, 0xe3, 0xff, 0xff, 0xff,
+ 0xb9, 0xfe, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xd4, 0xdf, 0xff, 0xff, 0xbd, 0xfe,
+ 0xf6, 0x31, 0xf9, 0xff, 0xff, 0x9b, 0xb8, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf7, 0x4f,
+ 0xfe, 0xfe, 0x8f, 0xff, 0xff, 0xff, 0x63, 0x88,
+ 0x0, 0x0, 0x8, 0xfa, 0xcb, 0xff, 0xff, 0xdb,
+ 0x19, 0xfc, 0x23, 0xdf, 0xff, 0xff, 0xbb, 0xe2,
+ 0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xf1, 0x39,
+ 0xfe, 0x11, 0xbb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xda, 0xa1, 0xff, 0xff, 0xf9,
+ 0x49, 0xfe, 0x15, 0xd5, 0xff, 0xff, 0xc3, 0xf0,
+ 0x0, 0x0, 0x5a, 0xbc, 0xfe, 0xd3, 0xff, 0xff,
+ 0xbd, 0xfe, 0xda, 0xa2, 0x18, 0x0, 0x2, 0xf8,
+ 0xcb, 0xff, 0xff, 0xf1, 0x39, 0xfe, 0xb, 0xad,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xe3, 0x35, 0xfe, 0x9,
+ 0xbb, 0xff, 0xff, 0xff, 0x2d, 0x36, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfe, 0x81, 0xff, 0xff, 0xff, 0x67, 0xda, 0xc,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xed, 0x43, 0xfe, 0xd, 0xcf, 0xff, 0xff, 0xff,
+ 0x8f, 0xfe, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0x67,
+ 0x78, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xeb, 0x43, 0xfe, 0xfe, 0xa7, 0xff, 0xff, 0xff,
+ 0x49, 0x50, 0x0, 0x0, 0x2, 0xf2, 0xbb, 0xff,
+ 0xff, 0xf1, 0x39, 0xfc, 0xfe, 0xa1, 0xff, 0xff,
+ 0xff, 0x49, 0x76, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xbc, 0x2b, 0x2f, 0x2f, 0x1d, 0xda,
+ 0xc0, 0xfe, 0xdf, 0xff, 0xff, 0xb1, 0xd4, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa,
+ 0x24, 0x5a, 0x11, 0xf7, 0xff, 0xff, 0xa1, 0xca,
+ 0x0, 0x0, 0x2a, 0x1b, 0xfd, 0xff, 0xff, 0x87,
+ 0xd4, 0x12, 0xd0, 0x89, 0xff, 0xff, 0xdd, 0xdc,
+ 0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa7, 0xee,
+ 0x1a, 0xaa, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x4, 0xfe, 0xe3, 0xff, 0xff, 0xb5,
+ 0xfe, 0xdc, 0xf8, 0x87, 0xff, 0xff, 0xf1, 0xfe,
+ 0x2, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x1c, 0xd,
+ 0xfb, 0xff, 0xff, 0xa7, 0xee, 0x18, 0x9c, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xf2, 0x14, 0xa4,
+ 0x5d, 0xff, 0xff, 0xff, 0x57, 0x60, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0x25, 0xf1, 0xff, 0xff, 0xaf, 0xfe, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xf8, 0x1e, 0xce, 0x87, 0xff, 0xff, 0xff,
+ 0x25, 0x68, 0x4e, 0x1b, 0xff, 0xff, 0xff, 0x87,
+ 0xa4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xf6, 0x1c, 0x8e, 0x4f, 0xff, 0xff, 0xff,
+ 0x67, 0x78, 0x0, 0x0, 0x1a, 0xb, 0xf7, 0xff,
+ 0xff, 0xa3, 0xee, 0x16, 0x6e, 0x1d, 0xf7, 0xff,
+ 0xff, 0x9b, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x14, 0x90, 0xfa, 0x2d, 0x6f, 0x8d,
+ 0x97, 0x99, 0xef, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x4, 0xfa, 0xd1, 0xff, 0xff, 0xc1, 0xe4,
+ 0x0, 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x59,
+ 0x80, 0x0, 0x52, 0xfe, 0xfe, 0xfe, 0xfe, 0xb4,
+ 0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x12, 0x11, 0xff, 0xff, 0xff, 0xd3,
+ 0xad, 0xad, 0xad, 0xc9, 0xff, 0xff, 0xff, 0xb,
+ 0x6, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x41,
+ 0xff, 0xff, 0xff, 0x6f, 0xa2, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x56,
+ 0x41, 0xff, 0xff, 0xff, 0x65, 0x78, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb,
+ 0xf3, 0xff, 0xff, 0xe5, 0x19, 0x7a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x9c, 0x75, 0xff, 0xff, 0xff,
+ 0x29, 0x26, 0x8, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb4, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x48, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x88, 0x0, 0x0, 0x3e, 0x3f, 0xff, 0xff,
+ 0xff, 0x6d, 0xa0, 0x0, 0x8, 0xfa, 0xd5, 0xff,
+ 0xff, 0xc1, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8c, 0x19, 0xb5, 0xfd, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0xee, 0xc3, 0xff, 0xff, 0xcd, 0xec,
+ 0x0, 0x0, 0x6a, 0x5f, 0xff, 0xff, 0xff, 0x47,
+ 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x1c, 0x2b, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15,
+ 0xa, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x58, 0x51,
+ 0xff, 0xff, 0xff, 0x59, 0x7a, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xd3, 0x5, 0x54, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x54, 0x53, 0xff, 0xff,
+ 0xff, 0x57, 0x7a, 0x0, 0x0, 0xf0, 0xc3, 0xff,
+ 0xff, 0xcd, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0xfc, 0xbd, 0xff, 0xff, 0xfb, 0xb5,
+ 0x91, 0x8d, 0xed, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee,
+ 0x0, 0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcb, 0xec,
+ 0x0, 0x0, 0x5e, 0x57, 0xff, 0xff, 0xff, 0x51,
+ 0x6e, 0x0, 0x18, 0x54, 0x80, 0x92, 0x6c, 0x38,
+ 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+ 0x0, 0x6a, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x18, 0x21, 0xff, 0xff, 0xff, 0xdb,
+ 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xf,
+ 0x8, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x52, 0x4f,
+ 0xff, 0xff, 0xff, 0x5d, 0x82, 0x0, 0x64, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf1,
+ 0xcd, 0xff, 0xff, 0xff, 0x87, 0xea, 0x12, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x48, 0x49, 0xff, 0xff,
+ 0xff, 0x65, 0x8a, 0x0, 0x0, 0xf6, 0xcf, 0xff,
+ 0xff, 0xc7, 0xe8, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2a, 0x27, 0xff, 0xff, 0xff, 0x91, 0xfc,
+ 0xc8, 0xfe, 0xdd, 0xff, 0xff, 0xb3, 0xdc, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf4,
+ 0x4, 0x1c, 0xfe, 0xdb, 0xff, 0xff, 0xb9, 0xde,
+ 0x0, 0x0, 0x3a, 0x33, 0xff, 0xff, 0xff, 0x71,
+ 0xb2, 0x0, 0x82, 0x3b, 0x77, 0x77, 0x69, 0xb6,
+ 0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+ 0x0, 0x7c, 0x57, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0xa, 0xfe, 0xf5, 0xff, 0xff, 0xab,
+ 0xfe, 0xea, 0xe8, 0xe8, 0xea, 0xea, 0xd0, 0x8e,
+ 0x4, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x34, 0x33,
+ 0xff, 0xff, 0xff, 0x7d, 0xc4, 0x0, 0x74, 0x51,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfe, 0xd1, 0xff, 0xff, 0xf5, 0x31, 0x96, 0x0,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x26, 0x1f, 0xff, 0xff,
+ 0xff, 0x89, 0xd0, 0x0, 0x36, 0x5, 0xeb, 0xff,
+ 0xff, 0xab, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x32, 0x47, 0xff, 0xff, 0xff, 0x65, 0xe8,
+ 0xd4, 0x13, 0xe9, 0xff, 0xff, 0xb3, 0xe2, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe1, 0xf,
+ 0xe2, 0xee, 0x43, 0xff, 0xff, 0xff, 0x8f, 0xb4,
+ 0x0, 0x0, 0x14, 0xfe, 0xe5, 0xff, 0xff, 0xbd,
+ 0xfe, 0xd8, 0xfe, 0xad, 0xff, 0xff, 0xd1, 0xce,
+ 0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcd, 0x5,
+ 0xde, 0xfa, 0x7b, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0xf2, 0xc1, 0xff, 0xff, 0xf5,
+ 0x39, 0xf0, 0xbe, 0xd4, 0xfc, 0x3b, 0xf4, 0x10,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x14, 0xfe,
+ 0xed, 0xff, 0xff, 0xcd, 0x5, 0xdc, 0xf8, 0x71,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xfa, 0x47, 0xfb, 0xff, 0xff, 0xc3, 0xfe, 0x3e,
+ 0x0, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x8, 0xfc, 0xd5, 0xff,
+ 0xff, 0xd7, 0x5, 0xd6, 0xf2, 0x69, 0xff, 0xff,
+ 0xff, 0x6d, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x28, 0x21, 0xff, 0xff, 0xff, 0xd9, 0x73,
+ 0x81, 0xd9, 0xff, 0xff, 0xff, 0xbf, 0xec, 0x0,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xd9,
+ 0x95, 0xa1, 0xed, 0xff, 0xff, 0xfb, 0x35, 0x64,
+ 0x0, 0x0, 0x0, 0xd4, 0x8b, 0xff, 0xff, 0xff,
+ 0xbf, 0x8d, 0xb5, 0xff, 0xff, 0xff, 0x8d, 0xc2,
+ 0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xcd,
+ 0x93, 0xaf, 0xfb, 0xff, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x9e, 0x55, 0xff, 0xff, 0xff,
+ 0xf1, 0xa1, 0x87, 0x97, 0xcd, 0xfd, 0x2f, 0x5c,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4,
+ 0xa5, 0xff, 0xff, 0xff, 0xcd, 0x93, 0xab, 0xf9,
+ 0xff, 0xff, 0xff, 0x5b, 0x70, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf2, 0xf8, 0xa3, 0xff, 0xff, 0xff, 0x71, 0xdc,
+ 0xa, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x0, 0xba, 0x6f, 0xff,
+ 0xff, 0xff, 0xcd, 0x89, 0x9d, 0xf3, 0xff, 0xff,
+ 0xe1, 0x9, 0x3a, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xa, 0xfc, 0xbb, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xfb, 0xe5, 0xff, 0xff, 0xd7, 0xfc, 0x8,
+ 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xe3, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf6, 0x14,
+ 0x0, 0x0, 0x0, 0x54, 0xb, 0xcb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf, 0x58,
+ 0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xe9, 0xfd, 0xff, 0xff, 0x57, 0x6a,
+ 0x0, 0x0, 0x0, 0x28, 0xfa, 0x91, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x64,
+ 0x0, 0x0, 0x0, 0x0, 0xf4, 0xd3, 0xff, 0xff,
+ 0xbd, 0xe4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72,
+ 0x23, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
+ 0xff, 0xff, 0xff, 0x5b, 0x6e, 0x0, 0x0, 0x0,
+ 0xf4, 0xd3, 0xff, 0xff, 0xbd, 0xe4, 0x0, 0x46,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0, 0x0,
+ 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef, 0xfe, 0x0,
+ 0x0, 0x0, 0xb0, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcd,
+ 0xf0, 0x70, 0x19, 0xe9, 0xff, 0xff, 0xed, 0x21,
+ 0x80, 0x0, 0x0, 0xc8, 0x9f, 0xff, 0xff, 0xef,
+ 0xfe, 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff,
+ 0xcb, 0xee, 0x0, 0x94, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x2a, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0xb8, 0x0, 0x0, 0x0, 0xf2, 0xd1, 0xff, 0xff,
+ 0xc1, 0xe8, 0x0, 0x3e, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x8c, 0x0, 0x0, 0x0, 0x3c, 0xfe, 0xad,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3,
+ 0x4b, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0x8c, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8a, 0x1d, 0xb9, 0xff, 0xff, 0xff,
+ 0xe9, 0x67, 0x8b, 0xff, 0xff, 0xfd, 0x1f, 0x8,
+ 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0x77, 0x97,
+ 0xf9, 0xff, 0xff, 0xf5, 0x99, 0x5, 0x66, 0x0,
+ 0x0, 0x0, 0x0, 0x2, 0x9a, 0x11, 0x9d, 0xf1,
+ 0xff, 0xff, 0xff, 0xf3, 0x9d, 0x13, 0xa2, 0x4,
+ 0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+ 0xff, 0xd9, 0x3f, 0xe3, 0xff, 0xff, 0x57, 0x4c,
+ 0x0, 0x0, 0x0, 0x0, 0x58, 0xfe, 0x6d, 0xdb,
+ 0xff, 0xff, 0xff, 0xff, 0xeb, 0xa1, 0x23, 0x58,
+ 0x0, 0x0, 0x0, 0x0, 0xe0, 0xd3, 0xff, 0xff,
+ 0xbd, 0xc8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0xce, 0x39, 0xcb, 0xff, 0xff, 0xff, 0xdf, 0x81,
+ 0xff, 0xff, 0xff, 0x59, 0x64, 0x0, 0x0, 0x0,
+ 0xe0, 0xd3, 0xff, 0xff, 0xbd, 0xc8, 0x0, 0x30,
+ 0x3f, 0xff, 0xff, 0xff, 0x67, 0x60, 0x0, 0x0,
+ 0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef, 0xf6, 0x0,
+ 0x0, 0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcd,
+ 0xd8, 0x6, 0xd4, 0x6d, 0xff, 0xff, 0xff, 0xb1,
+ 0x80, 0x0, 0x0, 0xa4, 0x9f, 0xff, 0xff, 0xef,
+ 0xf6, 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff,
+ 0xcb, 0xd6, 0x0, 0x70, 0x73, 0xff, 0xff, 0xff,
+ 0x29, 0x1c, 0x0, 0xfe, 0xfb, 0xff, 0xff, 0x91,
+ 0x94, 0x0, 0x0, 0x0, 0xdc, 0xd1, 0xff, 0xff,
+ 0xc1, 0xcc, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+ 0x6f, 0x68, 0x0, 0x0, 0x0, 0x0, 0x76, 0xfe,
+ 0x83, 0xe5, 0xff, 0xff, 0xff, 0xfb, 0xc1, 0x3f,
+ 0xe0, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc1, 0xcc, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x8, 0x88, 0xfa, 0x25, 0x53, 0x45,
+ 0x9, 0xe0, 0xfe, 0xfe, 0xfe, 0xfe, 0xf2, 0x8,
+ 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe, 0xf4,
+ 0x1d, 0x4f, 0x49, 0x11, 0xea, 0x60, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4, 0x66, 0xe4, 0x5,
+ 0x3f, 0x55, 0x45, 0xb, 0xe8, 0x68, 0x4, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+ 0x3d, 0xfe, 0xec, 0xfe, 0xfe, 0xfe, 0xfe, 0x2a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a, 0xc2, 0xfe,
+ 0x2d, 0x51, 0x51, 0x31, 0xfe, 0xe2, 0x70, 0xc,
+ 0x0, 0x0, 0x0, 0x0, 0xa6, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x88, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x1e, 0xa6, 0xfc, 0x2d, 0x53, 0x41, 0xfe, 0x73,
+ 0xff, 0xff, 0xff, 0x43, 0x42, 0x0, 0x0, 0x0,
+ 0xa6, 0xfe, 0xfe, 0xfe, 0xfe, 0x88, 0x0, 0x1a,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0, 0x0,
+ 0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe, 0xd2, 0x0,
+ 0x0, 0x0, 0xc2, 0x8d, 0xff, 0xff, 0xff, 0xfe,
+ 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x9c, 0x0, 0x3a, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x7c, 0x0, 0x0, 0x68, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xd2, 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x98, 0x0, 0x40, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xe, 0x0, 0xec, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x5a, 0x0, 0x0, 0x0, 0xa2, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x8c, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c,
+ 0xd4, 0xfe, 0x35, 0x53, 0x49, 0x1b, 0xf8, 0x98,
+ 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xfe, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xc1, 0xda, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xc, 0x30, 0x48, 0x40,
+ 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8,
+ 0x2c, 0x46, 0x42, 0x24, 0x4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0x3e, 0x54, 0x42, 0x1e, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+ 0x3c, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0x32, 0x50, 0x52, 0x36, 0x12, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x5a, 0x21, 0x15, 0xf6, 0xde, 0xe8, 0xb, 0xcf,
+ 0xff, 0xff, 0xf3, 0xb, 0x1e, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x7a, 0xbe, 0xfe, 0xb1, 0xff, 0xff, 0xef, 0xfe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x14, 0x38, 0x50, 0x48, 0x26, 0x8, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xa7, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
+ 0xa9, 0xa9, 0xa9, 0x7f, 0xac, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xba, 0x8d, 0xf3, 0xb9, 0x9b, 0x9d, 0xdb, 0xff,
+ 0xff, 0xff, 0xa1, 0xea, 0x2, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x5, 0xb1, 0xb9, 0xfd, 0xff, 0xff, 0xbf, 0xee,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x70, 0xb0, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
+ 0xd4, 0xd4, 0xc8, 0x9a, 0x48, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xc2, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xcd, 0x13, 0x6c, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x23, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x4d, 0x9a,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xa4, 0x55, 0xb1, 0xef, 0xff, 0xff, 0xfd, 0xdb,
+ 0x89, 0xb, 0x9e, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20,
+ 0x37, 0xff, 0xff, 0xff, 0xd5, 0x57, 0xf0, 0x22,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x28, 0x90, 0xea, 0xfe, 0x21, 0x2d, 0x11, 0xfc,
+ 0xc8, 0x52, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16,
+ 0xfa, 0x1b, 0x35, 0x1b, 0xfc, 0xb4, 0x2a, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xa, 0x1a, 0x1c, 0x14, 0x4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x8, 0x1a, 0x22, 0x1a, 0x8, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26,
+ 0x86, 0x86, 0x72, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x76,
+ 0x84, 0x80, 0x1e, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x7a, 0xfe,
+ 0x51, 0xa9, 0xd, 0x3a, 0x0, 0x0, 0x0, 0xa,
+ 0x16, 0x16, 0xc, 0x0, 0x0, 0x0, 0x4e, 0x1f,
+ 0xa7, 0x45, 0xfa, 0x68, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x62, 0xb, 0xb1,
+ 0xff, 0xff, 0x69, 0x4e, 0x0, 0x0, 0x0, 0xec,
+ 0x21, 0x23, 0x5, 0x10, 0x0, 0x0, 0x64, 0x7d,
+ 0xff, 0xff, 0x9f, 0xfe, 0x4c, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xaa,
+ 0xe2, 0xf6, 0xe8, 0xbc, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x6, 0xe6, 0x99, 0xff,
+ 0xff, 0xd9, 0x3f, 0x4c, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x20, 0x0, 0x0, 0x60, 0x49,
+ 0xe1, 0xff, 0xff, 0x83, 0xd4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xb,
+ 0xd7, 0xd7, 0xd7, 0x6d, 0x76, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x2c, 0x17, 0xf1, 0xff,
+ 0xff, 0x37, 0xba, 0x1a, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x20, 0xca,
+ 0x4f, 0xff, 0xff, 0xe7, 0x9, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0x9e, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x60, 0x53, 0xff, 0xff,
+ 0xdd, 0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x24,
+ 0xfe, 0xed, 0xff, 0xff, 0x39, 0x40, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb6, 0xb6, 0xea,
+ 0xf8, 0xf8, 0xe0, 0x88, 0x16, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xbc, 0xf0, 0xfa,
+ 0xf6, 0xd0, 0xa6, 0xc4, 0xe4, 0xd2, 0x9a, 0x16,
+ 0x0, 0x0, 0x0, 0x5e, 0xb8, 0xe0, 0xdc, 0xb8,
+ 0xbc, 0xec, 0xf0, 0xda, 0x46, 0x0, 0x0, 0x0,
+ 0x4, 0x54, 0xbe, 0xf0, 0xfa, 0xfc, 0xf6, 0xd6,
+ 0x80, 0x1a, 0x0, 0x0, 0x0, 0x64, 0xbc, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xf4, 0xb2, 0x4e, 0x0,
+ 0x0, 0x6a, 0xbe, 0xe2, 0xde, 0xb6, 0x56, 0x0,
+ 0x10, 0x98, 0xd2, 0xea, 0xd6, 0xa0, 0x24, 0x0,
+ 0x0, 0x5e, 0xba, 0xe0, 0xe6, 0xc4, 0x78, 0x0,
+ 0x0, 0x4e, 0xb2, 0xdc, 0xe8, 0xca, 0x86, 0x0,
+ 0x4c, 0xb2, 0xdc, 0xde, 0xb4, 0x52, 0x0, 0x38,
+ 0xa8, 0xd8, 0xd0, 0x92, 0x6, 0x2, 0x8e, 0xce,
+ 0xea, 0xd4, 0x9a, 0x18, 0x0, 0x3a, 0xaa, 0xda,
+ 0xea, 0xd8, 0xa4, 0x2e, 0xa, 0x92, 0xd0, 0xea,
+ 0xe2, 0xbe, 0x68, 0x0, 0x72, 0xc2, 0xe4, 0xe4,
+ 0xc2, 0x74, 0x0, 0x0, 0x4e, 0xb2, 0xde, 0xea,
+ 0xd0, 0x94, 0xa, 0x0, 0x86, 0xca, 0xe8, 0xea,
+ 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xd4, 0x9c,
+ 0x1c, 0x0, 0x0, 0x0, 0x88, 0x73, 0xff, 0xff,
+ 0xcb, 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xfa, 0xdb, 0xff, 0xff, 0x5d, 0x68, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x75, 0x49, 0xc3,
+ 0xeb, 0xe3, 0xb3, 0x39, 0xe2, 0x20, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x7a, 0xfe, 0x7d, 0xd1, 0xeb,
+ 0xdf, 0x93, 0xb, 0xad, 0xc3, 0xc3, 0x37, 0x32,
+ 0x0, 0x0, 0x0, 0xb8, 0x95, 0xc3, 0xc3, 0x79,
+ 0x43, 0xc9, 0xeb, 0x7b, 0x74, 0x0, 0x0, 0xc,
+ 0xb2, 0x11, 0x89, 0xcf, 0xe9, 0xed, 0xd9, 0xa9,
+ 0x3f, 0xf2, 0x40, 0x0, 0x0, 0xc4, 0x9d, 0xc5,
+ 0xff, 0xff, 0xff, 0xdb, 0xc3, 0x83, 0xa0, 0x0,
+ 0x0, 0xca, 0xa1, 0xc3, 0xc3, 0x8d, 0xae, 0x0,
+ 0x28, 0x2f, 0xc3, 0xc3, 0xc3, 0x4f, 0x52, 0x0,
+ 0x0, 0x90, 0x97, 0xc3, 0xc3, 0xaf, 0xfc, 0xe,
+ 0x0, 0xc6, 0x83, 0xc3, 0xc3, 0xbb, 0xb, 0x0,
+ 0x7c, 0x83, 0xc3, 0xc3, 0x89, 0xc6, 0x0, 0xa6,
+ 0x6b, 0xc3, 0xc3, 0x17, 0x3c, 0x22, 0xb, 0xc1,
+ 0xc3, 0xc3, 0x3f, 0x1c, 0x0, 0x40, 0x73, 0xc3,
+ 0xc3, 0xc3, 0x5b, 0xb0, 0x64, 0x21, 0xc1, 0xc3,
+ 0xc3, 0xa1, 0x84, 0x0, 0xaa, 0xa9, 0xc3, 0xc3,
+ 0xab, 0xfc, 0x10, 0x0, 0xd0, 0x85, 0xc3, 0xc3,
+ 0xc3, 0x27, 0xa, 0x0, 0xee, 0xbb, 0xc3, 0xc3,
+ 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x41,
+ 0x40, 0x0, 0x0, 0x0, 0x98, 0x7b, 0xff, 0xff,
+ 0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf6, 0xd7, 0xff, 0xff, 0x67, 0x7c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe0, 0xc3, 0xff, 0xff, 0xcf, 0xf7, 0xff,
+ 0xff, 0xff, 0xff, 0xf3, 0x49, 0xba, 0x0, 0x0,
+ 0x0, 0x0, 0x38, 0xfe, 0xb1, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xbb, 0xfb, 0xff, 0xff, 0x49, 0x4c,
+ 0x0, 0x0, 0x0, 0xe0, 0xc3, 0xff, 0xff, 0xb9,
+ 0xeb, 0xff, 0xff, 0x75, 0x8c, 0x0, 0x0, 0x7c,
+ 0x23, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xfb, 0x73, 0xec, 0x10, 0x0, 0xdc, 0xcd, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xad, 0xbe, 0x0,
+ 0x0, 0xec, 0xd3, 0xff, 0xff, 0xbb, 0xd8, 0x0,
+ 0x3e, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x76, 0x0,
+ 0x0, 0x98, 0x87, 0xff, 0xff, 0xff, 0x2b, 0x4e,
+ 0xc, 0xfc, 0xd9, 0xff, 0xff, 0xc1, 0xd6, 0x0,
+ 0x86, 0x7b, 0xff, 0xff, 0xd7, 0xfa, 0x6, 0xf4,
+ 0xc1, 0xff, 0xff, 0x69, 0x96, 0x64, 0x4b, 0xff,
+ 0xff, 0xf7, 0xf, 0x1c, 0x0, 0x40, 0x1d, 0xeb,
+ 0xff, 0xff, 0xcf, 0xfe, 0xe8, 0x97, 0xff, 0xff,
+ 0xff, 0x5d, 0x84, 0x0, 0xb4, 0x9f, 0xff, 0xff,
+ 0xff, 0x2d, 0x54, 0x1a, 0xfe, 0xe3, 0xff, 0xff,
+ 0xd7, 0xe6, 0xa, 0x0, 0xfc, 0xf5, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57,
+ 0x4c, 0x0, 0x0, 0x0, 0xa2, 0x7b, 0xff, 0xff,
+ 0xc7, 0xea, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf4, 0xd7, 0xff, 0xff, 0x67, 0x86, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xfd, 0xd9,
+ 0xe5, 0xff, 0xff, 0xff, 0xdb, 0x5, 0x2e, 0x0,
+ 0x0, 0x0, 0xb0, 0x6b, 0xff, 0xff, 0xff, 0xf7,
+ 0xcf, 0xe9, 0xff, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x57, 0x64, 0x0, 0x0, 0xe2,
+ 0xad, 0xff, 0xff, 0xf7, 0xa7, 0x9b, 0xe5, 0xff,
+ 0xff, 0xf7, 0x2f, 0x54, 0x0, 0xc6, 0xa1, 0xcb,
+ 0xff, 0xff, 0xff, 0xdf, 0xcb, 0x89, 0xa2, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x5a, 0x2d, 0xfd, 0xff, 0xff, 0x79, 0xa6,
+ 0x48, 0x25, 0xff, 0xff, 0xff, 0x75, 0xaa, 0x0,
+ 0x52, 0x31, 0xff, 0xff, 0xf9, 0xf, 0x50, 0xd,
+ 0xf5, 0xff, 0xff, 0xad, 0xe6, 0xaa, 0x81, 0xff,
+ 0xff, 0xcb, 0xf8, 0x4, 0x0, 0x8, 0xd8, 0x73,
+ 0xff, 0xff, 0xff, 0x55, 0x19, 0xf1, 0xff, 0xff,
+ 0xb9, 0xfe, 0x2e, 0x0, 0x78, 0x45, 0xff, 0xff,
+ 0xff, 0x7d, 0xb0, 0x68, 0x3f, 0xff, 0xff, 0xff,
+ 0x8b, 0xca, 0x0, 0x0, 0xf8, 0xef, 0xfb, 0xfb,
+ 0xfb, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xf3, 0x2d,
+ 0x38, 0x0, 0x0, 0x0, 0xc2, 0x87, 0xff, 0xff,
+ 0xbd, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xec, 0xcd, 0xff, 0xff, 0x73, 0xaa, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x48, 0xa6, 0xd0, 0xd0,
+ 0x9e, 0x42, 0x2, 0x0, 0x2, 0x18, 0x1a, 0x18,
+ 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xf3, 0x49, 0xfe,
+ 0xfe, 0xa5, 0xff, 0xff, 0xff, 0x5d, 0x82, 0x0,
+ 0x0, 0x4, 0xf8, 0xcb, 0xff, 0xff, 0xef, 0x33,
+ 0xfc, 0x9, 0xaf, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff,
+ 0xbb, 0x77, 0x75, 0x1d, 0x30, 0x0, 0x0, 0xf8,
+ 0xe9, 0xff, 0xff, 0x8f, 0xfc, 0xea, 0x39, 0xff,
+ 0xff, 0xff, 0x7d, 0x5c, 0x0, 0x6a, 0xc4, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xf4, 0xb8, 0x52, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x10, 0xfc, 0xcd, 0xff, 0xff, 0xb5, 0xea,
+ 0x9c, 0x73, 0xff, 0xff, 0xf7, 0x19, 0x44, 0x0,
+ 0x12, 0xfe, 0xe3, 0xff, 0xff, 0x4d, 0xb8, 0x5f,
+ 0xff, 0xff, 0xff, 0xe7, 0xfe, 0xe2, 0xad, 0xff,
+ 0xff, 0x93, 0xc8, 0x0, 0x0, 0x0, 0x3e, 0xfe,
+ 0xc9, 0xff, 0xff, 0xc3, 0x8d, 0xff, 0xff, 0xf3,
+ 0x2d, 0x8a, 0x0, 0x0, 0x1e, 0xfe, 0xdb, 0xff,
+ 0xff, 0xbf, 0xf4, 0xc6, 0x8f, 0xff, 0xff, 0xfd,
+ 0x2d, 0x60, 0x0, 0x0, 0xd2, 0xfc, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x97, 0xff, 0xff, 0xff, 0x6d, 0xe4,
+ 0x10, 0x0, 0x26, 0x98, 0xfe, 0xbb, 0xff, 0xff,
+ 0x95, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xce, 0xa7, 0xff, 0xff, 0xa9, 0xfc, 0x8c, 0x1e,
+ 0x0, 0x0, 0x0, 0x86, 0x9, 0x7d, 0xb7, 0xb1,
+ 0x77, 0xb, 0xbc, 0x1c, 0x26, 0xd, 0x39, 0xb,
+ 0xf2, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfa, 0x20,
+ 0x74, 0x23, 0xfb, 0xff, 0xff, 0x9f, 0xc6, 0x0,
+ 0x0, 0x1e, 0xf, 0xfb, 0xff, 0xff, 0xa5, 0xec,
+ 0x14, 0xa6, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xd9,
+ 0xfe, 0xba, 0x74, 0x46, 0x8, 0x0, 0x0, 0xf8,
+ 0xeb, 0xff, 0xff, 0xb3, 0x5, 0xea, 0xfe, 0x41,
+ 0x43, 0x43, 0x25, 0x50, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0xbc, 0x83, 0xff, 0xff, 0xe9, 0xfe,
+ 0xe6, 0xaf, 0xff, 0xff, 0xbd, 0xf6, 0x6, 0x0,
+ 0x0, 0xe6, 0xb1, 0xff, 0xff, 0x83, 0xf4, 0xa5,
+ 0xff, 0xff, 0xff, 0xff, 0x41, 0xfc, 0xd7, 0xff,
+ 0xff, 0x55, 0x76, 0x0, 0x0, 0x0, 0x0, 0xa2,
+ 0x3d, 0xf9, 0xff, 0xff, 0xf1, 0xff, 0xff, 0x89,
+ 0xe8, 0x10, 0x0, 0x0, 0x0, 0xd0, 0x91, 0xff,
+ 0xff, 0xf5, 0xd, 0xfc, 0xcf, 0xff, 0xff, 0xcb,
+ 0xfc, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
+ 0xda, 0x5d, 0xfd, 0xff, 0xff, 0xa7, 0xfe, 0x3a,
+ 0x0, 0x0, 0x70, 0x51, 0xbb, 0xff, 0xff, 0xef,
+ 0x2d, 0x68, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x7e, 0x3d, 0xf5, 0xff, 0xff, 0xb3, 0x45, 0x5a,
+ 0x0, 0x0, 0x30, 0xfe, 0xbb, 0xff, 0xff, 0xff,
+ 0xff, 0xdd, 0x43, 0xee, 0xca, 0x4f, 0xff, 0xfb,
+ 0x5b, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0xc, 0xfc, 0xd7, 0xff, 0xff, 0xbf, 0xe4, 0x0,
+ 0x0, 0x40, 0x41, 0xff, 0xff, 0xff, 0x6f, 0xa2,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2,
+ 0xad, 0xff, 0xff, 0xff, 0xe7, 0xb1, 0x7b, 0x2d,
+ 0xfc, 0xac, 0x38, 0xc, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x56, 0x27, 0xfb, 0xff, 0xff, 0x41,
+ 0xfe, 0xe3, 0xff, 0xff, 0x6f, 0xa4, 0x0, 0x0,
+ 0x0, 0xa2, 0x77, 0xff, 0xff, 0xb1, 0xfe, 0xdf,
+ 0xff, 0xd1, 0xff, 0xff, 0x8d, 0xf, 0xf9, 0xff,
+ 0xf5, 0xb, 0x28, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0xf4, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xd9, 0x9,
+ 0x52, 0x0, 0x0, 0x0, 0x0, 0x64, 0x31, 0xff,
+ 0xff, 0xff, 0x5f, 0x21, 0xfb, 0xff, 0xff, 0x7f,
+ 0xba, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa2,
+ 0x2d, 0xed, 0xff, 0xff, 0xd5, 0xf, 0x72, 0x0,
+ 0x0, 0x0, 0x9e, 0x8d, 0xff, 0xff, 0xeb, 0x43,
+ 0xea, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x1a, 0xf2, 0x4d, 0xed, 0xff, 0xff, 0x7b, 0x84,
+ 0x0, 0x0, 0x92, 0x5f, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xf5, 0x85, 0x4d, 0xcb, 0xff, 0xff,
+ 0x39, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0xf0, 0xc5, 0xff, 0xff, 0xcd, 0xec, 0x0,
+ 0x0, 0x58, 0x51, 0xff, 0xff, 0xff, 0x59, 0x7a,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
+ 0x19, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
+ 0xbf, 0x33, 0xcc, 0x8, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf4, 0xd3, 0xff, 0xff, 0xbb, 0xe2, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0xc, 0xfa, 0xc9, 0xff, 0xff, 0x89,
+ 0x35, 0xff, 0xff, 0xf5, 0x13, 0x3e, 0x0, 0x0,
+ 0x0, 0x4e, 0x2d, 0xff, 0xff, 0xd9, 0x35, 0xff,
+ 0xff, 0x7d, 0xd5, 0xff, 0xcb, 0x4f, 0xff, 0xff,
+ 0xc7, 0xf6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x94, 0x17, 0xf7, 0xff, 0xff, 0xff, 0x6b, 0xe4,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0xfc, 0xcf,
+ 0xff, 0xff, 0xa5, 0x75, 0xff, 0xff, 0xf9, 0x21,
+ 0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x9,
+ 0xcd, 0xff, 0xff, 0xf3, 0x37, 0xb0, 0x4, 0x0,
+ 0x0, 0x0, 0x8c, 0x89, 0xff, 0xff, 0xff, 0xa7,
+ 0xfe, 0x34, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0x46, 0x5, 0xb5, 0xff, 0xff, 0xff, 0x77, 0x74,
+ 0x0, 0x0, 0xc4, 0xaf, 0xff, 0xf9, 0x5d, 0x41,
+ 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd3,
+ 0xfe, 0x16, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0xf4, 0xcb, 0xff, 0xff, 0xcb, 0xec, 0x0,
+ 0x0, 0x52, 0x4f, 0xff, 0xff, 0xff, 0x5d, 0x82,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
+ 0x92, 0xfe, 0x4d, 0xa3, 0xd9, 0xff, 0xff, 0xff,
+ 0xff, 0xe9, 0x1f, 0x4c, 0x0, 0x0, 0x6, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xa6, 0x0, 0x0, 0x0,
+ 0x0, 0xf2, 0xd3, 0xff, 0xff, 0xbb, 0xe6, 0x0,
+ 0x46, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0xb6, 0x7d, 0xff, 0xff, 0xc3,
+ 0x7f, 0xff, 0xff, 0xb9, 0xf2, 0x4, 0x0, 0x0,
+ 0x0, 0x10, 0xfe, 0xe1, 0xff, 0xfb, 0x8b, 0xff,
+ 0xff, 0x29, 0x95, 0xff, 0xfb, 0x8d, 0xff, 0xff,
+ 0x8f, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xe6, 0x83, 0xff, 0xff, 0xff, 0xff, 0xc5, 0xfe,
+ 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe, 0x81,
+ 0xff, 0xff, 0xe1, 0xb9, 0xff, 0xff, 0xbf, 0xf8,
+ 0xa, 0x0, 0x0, 0x0, 0x0, 0x30, 0xfa, 0x9b,
+ 0xff, 0xff, 0xff, 0x6d, 0xe4, 0x16, 0x0, 0x0,
+ 0x0, 0x0, 0x52, 0xfe, 0x43, 0xeb, 0xff, 0xff,
+ 0x67, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xac, 0x7b, 0xff, 0xff, 0xdf, 0x37, 0xfe, 0x42,
+ 0x0, 0x0, 0xb6, 0xab, 0xef, 0xc1, 0xf8, 0x9e,
+ 0xfe, 0x7d, 0xf7, 0xff, 0xff, 0xff, 0xef, 0x43,
+ 0xae, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xf2, 0x0,
+ 0x2a, 0xfe, 0xe3, 0xff, 0xff, 0xb7, 0xde, 0x0,
+ 0x0, 0x34, 0x33, 0xff, 0xff, 0xff, 0x7d, 0xc4,
+ 0x0, 0x82, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x9,
+ 0x15, 0x15, 0x13, 0xfc, 0xfe, 0x27, 0x9f, 0xff,
+ 0xff, 0xff, 0x7b, 0x8c, 0x0, 0x0, 0x4, 0xd,
+ 0xff, 0xff, 0xff, 0x83, 0xac, 0x0, 0x0, 0x0,
+ 0x0, 0xee, 0xcf, 0xff, 0xff, 0xc3, 0xf2, 0x0,
+ 0x56, 0x3f, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x50, 0x21, 0xfb, 0xff, 0xf3,
+ 0xb7, 0xff, 0xff, 0x6b, 0xa0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe2, 0xad, 0xff, 0xff, 0xe9, 0xff,
+ 0xd3, 0xfe, 0x47, 0xff, 0xff, 0xe9, 0xff, 0xff,
+ 0x4f, 0x6e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88,
+ 0x29, 0xf3, 0xff, 0xff, 0xfb, 0xff, 0xff, 0x71,
+ 0xd8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x54, 0x23,
+ 0xfb, 0xff, 0xff, 0xf3, 0xff, 0xff, 0x71, 0xa8,
+ 0x0, 0x0, 0x0, 0x0, 0x10, 0xdc, 0x61, 0xff,
+ 0xff, 0xff, 0xa7, 0xfc, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x1c, 0xea, 0x99, 0xff, 0xff,
+ 0xb1, 0xd2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xe2, 0xc1, 0xff, 0xff, 0x85, 0xdc, 0x16, 0x0,
+ 0x0, 0x0, 0x74, 0xe6, 0xf4, 0x9, 0x8c, 0x0,
+ 0x48, 0xea, 0x2b, 0x87, 0xa3, 0x8d, 0x29, 0xda,
+ 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xdb, 0x5, 0xd8,
+ 0xf2, 0x59, 0xff, 0xff, 0xff, 0x8b, 0xb0, 0x0,
+ 0x0, 0x14, 0xfe, 0xef, 0xff, 0xff, 0xcb, 0x5,
+ 0xd6, 0xf8, 0x77, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x63,
+ 0xff, 0xff, 0xfb, 0x17, 0xae, 0xb4, 0xfe, 0xeb,
+ 0xff, 0xff, 0x91, 0xa0, 0x0, 0x0, 0x2, 0x5,
+ 0xff, 0xff, 0xff, 0x8d, 0xf2, 0x80, 0x30, 0x0,
+ 0x0, 0xe0, 0xbb, 0xff, 0xff, 0xe9, 0x9, 0xda,
+ 0xf6, 0x5b, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0xa, 0xfa, 0xc5, 0xff, 0xff,
+ 0xf3, 0xff, 0xf3, 0xf, 0x3a, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x9c, 0x73, 0xff, 0xff, 0xff, 0xff,
+ 0x93, 0xd2, 0xfe, 0xe7, 0xff, 0xff, 0xff, 0xf3,
+ 0x9, 0x24, 0x0, 0x0, 0x0, 0x0, 0x2e, 0xfe,
+ 0xb7, 0xff, 0xff, 0xdd, 0x99, 0xff, 0xff, 0xeb,
+ 0x1d, 0x74, 0x0, 0x0, 0x0, 0x0, 0xc, 0xf8,
+ 0xc1, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x13, 0x40,
+ 0x0, 0x0, 0x0, 0x2, 0xa6, 0x2f, 0xef, 0xff,
+ 0xff, 0xd5, 0xf, 0xee, 0xe0, 0xe0, 0xcc, 0x9a,
+ 0x32, 0x0, 0x0, 0x0, 0xac, 0x7d, 0xff, 0xff,
+ 0xc5, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf2, 0xd5, 0xff, 0xff, 0x69, 0x92, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe, 0x5a, 0x9e, 0xba, 0xa2, 0x5e, 0xe,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xff, 0xcf, 0x8b,
+ 0x9f, 0xf1, 0xff, 0xff, 0xfb, 0x2f, 0x5e, 0x0,
+ 0x0, 0x0, 0xe6, 0xa7, 0xff, 0xff, 0xff, 0xc7,
+ 0x8d, 0xa5, 0xf7, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x19,
+ 0xf3, 0xff, 0xff, 0xc1, 0x51, 0x3f, 0x8b, 0xff,
+ 0xff, 0xff, 0x67, 0x7c, 0x0, 0x0, 0x0, 0xfe,
+ 0xeb, 0xff, 0xff, 0xe9, 0x99, 0x5f, 0x8c, 0x0,
+ 0x0, 0xb2, 0x89, 0xff, 0xff, 0xff, 0xcb, 0x91,
+ 0xa9, 0xf5, 0xff, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0xb2, 0x79, 0xff, 0xff,
+ 0xff, 0xff, 0xb5, 0xf0, 0x4, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x4a, 0x29, 0xff, 0xff, 0xff, 0xff,
+ 0x45, 0x70, 0xe4, 0xab, 0xff, 0xff, 0xff, 0xc3,
+ 0xf4, 0x0, 0x0, 0x0, 0x0, 0x4, 0xc6, 0x5d,
+ 0xff, 0xff, 0xff, 0x73, 0x21, 0xf3, 0xff, 0xff,
+ 0xa7, 0xf8, 0x22, 0x0, 0x0, 0x0, 0x0, 0xaa,
+ 0x71, 0xff, 0xff, 0xff, 0xff, 0xb5, 0xf0, 0x4,
+ 0x0, 0x0, 0x0, 0x18, 0xb, 0xcf, 0xff, 0xff,
+ 0xff, 0xcd, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x63,
+ 0x74, 0x0, 0x0, 0x0, 0x9e, 0x7b, 0xff, 0xff,
+ 0xc7, 0xec, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf6, 0xd7, 0xff, 0xff, 0x67, 0x82, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xfb, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x95, 0xf4, 0x10, 0x0,
+ 0x0, 0x0, 0x76, 0x27, 0xeb, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb,
+ 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xe4,
+ 0x73, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xc7, 0x5, 0x34, 0x0, 0x0, 0x0, 0xe4,
+ 0xad, 0xff, 0xff, 0xff, 0xff, 0xa9, 0xc8, 0x0,
+ 0x0, 0x5a, 0x25, 0xef, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xe7, 0xf7, 0xff, 0xff, 0x67, 0x80, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x4a, 0x1d, 0xf9, 0xff,
+ 0xff, 0xff, 0x65, 0x9a, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xe, 0xfe, 0xdd, 0xff, 0xff, 0xe5,
+ 0xfe, 0x1e, 0x90, 0x63, 0xff, 0xff, 0xff, 0x8b,
+ 0xbc, 0x0, 0x0, 0x0, 0x0, 0x60, 0xf, 0xe1,
+ 0xff, 0xff, 0xdf, 0x5, 0xf0, 0x9d, 0xff, 0xff,
+ 0xfd, 0x4b, 0xb2, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0x13, 0xf5, 0xff, 0xff, 0xff, 0x63, 0x98, 0x0,
+ 0x0, 0x0, 0x0, 0x2c, 0x39, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+ 0xa0, 0x0, 0x0, 0x0, 0x92, 0x7b, 0xff, 0xff,
+ 0xc7, 0xee, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x0,
+ 0xf8, 0xd7, 0xff, 0xff, 0x65, 0x74, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0x9f, 0xfb,
+ 0xff, 0xff, 0xf3, 0x8f, 0xfe, 0x5e, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0xd0, 0x3d, 0xcd, 0xff, 0xff,
+ 0xff, 0xdd, 0x87, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0xce, 0xc3, 0xff, 0xff, 0xcb,
+ 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40,
+ 0xfa, 0x5d, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xed,
+ 0x99, 0x11, 0x96, 0x0, 0x0, 0x0, 0x0, 0x7a,
+ 0x21, 0xbd, 0xff, 0xff, 0xff, 0xb9, 0xba, 0x0,
+ 0x0, 0xc, 0xd8, 0x4b, 0xdb, 0xff, 0xff, 0xff,
+ 0xcf, 0x39, 0xdb, 0xff, 0xff, 0x67, 0x60, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x8, 0xf4, 0xc1, 0xff,
+ 0xff, 0xf1, 0xd, 0x36, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0xd6, 0xa9, 0xff, 0xff, 0xa7,
+ 0xdc, 0x0, 0x36, 0xf, 0xf5, 0xff, 0xff, 0x49,
+ 0x68, 0x0, 0x0, 0x0, 0x0, 0x60, 0x95, 0xff,
+ 0xff, 0xff, 0x77, 0xc8, 0x6c, 0x25, 0xf5, 0xff,
+ 0xff, 0xd5, 0x7, 0x0, 0x0, 0x0, 0x0, 0x4,
+ 0xf6, 0xb3, 0xff, 0xff, 0xed, 0x9, 0x32, 0x0,
+ 0x0, 0x0, 0x0, 0x2a, 0x39, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x89,
+ 0x8a, 0x0, 0x0, 0x0, 0x78, 0x65, 0xff, 0xff,
+ 0xd1, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x8,
+ 0xfc, 0xe3, 0xff, 0xff, 0x4d, 0x56, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xfe, 0x21,
+ 0x51, 0x49, 0xf, 0xe8, 0x58, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x18, 0xa4, 0xfc, 0x2d, 0x53,
+ 0x3f, 0xfe, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x90, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x98, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x2e, 0xb6, 0xfe, 0x25, 0x4f, 0x55, 0x39, 0xfe,
+ 0xe2, 0x64, 0x4, 0x0, 0x0, 0x0, 0x0, 0xa,
+ 0x8e, 0xfe, 0x25, 0x51, 0x43, 0x5, 0x84, 0x0,
+ 0x0, 0x0, 0x22, 0xbc, 0xfe, 0x39, 0x55, 0x33,
+ 0xfe, 0xe4, 0xfe, 0xfe, 0xfe, 0xfe, 0x36, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8c, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xd6, 0x2, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x72, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x70, 0x0, 0x4, 0xde, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x20, 0x0, 0x0, 0x0, 0x0, 0x5e, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0x42, 0xc, 0xe0, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xa8, 0x0, 0x0, 0x0, 0x0, 0x1a,
+ 0xfc, 0xbb, 0xff, 0xff, 0xa7, 0xe8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x16, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
+ 0x52, 0x0, 0x0, 0x0, 0x46, 0x39, 0xff, 0xff,
+ 0xf1, 0x9, 0x4e, 0x0, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x0, 0x66,
+ 0x1b, 0xfb, 0xff, 0xfd, 0x1f, 0x2a, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x2e,
+ 0x48, 0x44, 0x22, 0x4, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x34, 0x48,
+ 0x3c, 0x84, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0xc, 0x2e, 0x4e, 0x56, 0x3a, 0x16,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc, 0x30, 0x46, 0x3e, 0x1c, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0x3a, 0x48, 0x38,
+ 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xa0, 0xee,
+ 0x3d, 0xfb, 0xff, 0xff, 0x51, 0x86, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x16, 0xfe, 0xcd, 0xff,
+ 0xff, 0x83, 0xfc, 0x40, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x2e, 0x0, 0x0, 0x50, 0xfe,
+ 0x99, 0xff, 0xff, 0xbb, 0xfa, 0x8, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xea, 0xc3, 0xff, 0xff, 0xcb, 0xee, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x76, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x54,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xa8, 0x73, 0xb5,
+ 0xef, 0xff, 0xff, 0xd5, 0xfe, 0x26, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x4d, 0xf7,
+ 0xff, 0xff, 0x73, 0x50, 0x0, 0x0, 0x0, 0xfe,
+ 0xfb, 0xff, 0x2f, 0x22, 0x0, 0x0, 0x68, 0x87,
+ 0xff, 0xff, 0xef, 0x3b, 0x90, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xe6, 0xc3, 0xff, 0xff, 0xcb, 0xea, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x72, 0x5f, 0xff, 0xff, 0xff, 0x49, 0x50,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe2, 0xc1, 0xff,
+ 0xff, 0xff, 0xfb, 0x55, 0xb6, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0xe8, 0x41,
+ 0xc7, 0xfd, 0x37, 0x50, 0x0, 0x0, 0x0, 0xee,
+ 0x47, 0x49, 0xd, 0x12, 0x0, 0x0, 0x68, 0x4f,
+ 0xfd, 0xbd, 0x35, 0xda, 0x18, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0xc6, 0xb1, 0xe9, 0xe9, 0xb7, 0xcc, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x52, 0x57, 0xe9, 0xe9, 0xe9, 0x41, 0x38,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xd8, 0xd7, 0xff,
+ 0xff, 0xdf, 0x63, 0xf2, 0x28, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x9e,
+ 0xfa, 0x29, 0xf6, 0x16, 0x0, 0x0, 0x0, 0x1e,
+ 0x3a, 0x3c, 0x22, 0x2, 0x0, 0x0, 0x24, 0xf4,
+ 0x29, 0xfa, 0x92, 0x14, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x7c, 0xe2, 0xf8, 0xf8, 0xe4, 0x82, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x2a, 0xd0, 0xf4, 0xfc, 0xf4, 0xcc, 0x1c,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0xaa, 0x9, 0x2f,
+ 0x17, 0xfe, 0xc6, 0x32, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0xe, 0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe,
+ 0xe, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x16,
+ 0x16, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+};
+const uint16_t FontBitmap::glyphWidth[] = {
+ 8, 9, 10, 16, 16, 20, 18, 6,
+ 10, 10, 13, 15, 8, 11, 9, 11,
+ 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 9, 9, 14, 16, 14, 14,
+ 23, 17, 17, 17, 18, 16, 16, 18,
+ 19, 9, 16, 18, 15, 23, 19, 19,
+ 18, 19, 18, 17, 17, 18, 17, 23,
+ 17, 17, 16, 9, 12, 9, 13, 13,
+ 10, 15, 16, 14, 16, 15, 11, 16,
+ 16, 8, 8, 15, 8, 23, 16, 16,
+ 16, 16, 11, 14, 10, 16, 14, 20,
+ 14, 14, 14, 10, 8, 10, 18,
+};
+const uint16_t FontBitmap::yoffset[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68,
+ 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 136, 136, 136, 136, 136, 136, 136, 136,
+ 170, 170, 170, 170, 170, 170, 170, 170,
+ 170, 170, 170, 170, 170, 170, 170,
+};
diff --git a/cmds/screenrecord/Overlay.cpp b/cmds/screenrecord/Overlay.cpp
new file mode 100644
index 0000000..96e25b8
--- /dev/null
+++ b/cmds/screenrecord/Overlay.cpp
@@ -0,0 +1,401 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include <gui/BufferQueue.h>
+#include <gui/GraphicBufferAlloc.h>
+#include <gui/Surface.h>
+#include <cutils/properties.h>
+#include <utils/misc.h>
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
+#include "TextRenderer.h"
+
+using namespace android;
+
+// System properties to look up and display on the info screen.
+const char* Overlay::kPropertyNames[] = {
+ "ro.build.description",
+ // includes ro.build.id, ro.build.product, ro.build.tags, ro.build.type,
+ // and ro.build.version.release
+ "ro.product.manufacturer",
+ "ro.product.model",
+ "ro.board.platform",
+ "ro.revision",
+ "dalvik.vm.heapgrowthlimit",
+ "dalvik.vm.heapsize",
+ "persist.sys.dalvik.vm.lib",
+ //"ro.product.cpu.abi",
+ //"ro.bootloader",
+ //"this-never-appears!",
+};
+
+
+status_t Overlay::start(const sp<IGraphicBufferProducer>& outputSurface,
+ sp<IGraphicBufferProducer>* pBufferProducer) {
+ ALOGV("Overlay::start");
+ mOutputSurface = outputSurface;
+
+ // Grab the current monotonic time and the current wall-clock time so we
+ // can map one to the other. This allows the overlay counter to advance
+ // by the exact delay between frames, but if the wall clock gets adjusted
+ // we won't track it, which means we'll gradually go out of sync with the
+ // times in logcat.
+ mStartMonotonicNsecs = systemTime(CLOCK_MONOTONIC);
+ mStartRealtimeNsecs = systemTime(CLOCK_REALTIME);
+
+ Mutex::Autolock _l(mMutex);
+
+ // Start the thread. Traffic begins immediately.
+ run("overlay");
+
+ mState = INIT;
+ while (mState == INIT) {
+ mStartCond.wait(mMutex);
+ }
+
+ if (mThreadResult != NO_ERROR) {
+ ALOGE("Failed to start overlay thread: err=%d", mThreadResult);
+ return mThreadResult;
+ }
+ assert(mState == RUNNING);
+
+ ALOGV("Overlay::start successful");
+ *pBufferProducer = mBufferQueue;
+ return NO_ERROR;
+}
+
+status_t Overlay::stop() {
+ ALOGV("Overlay::stop");
+ Mutex::Autolock _l(mMutex);
+ mState = STOPPING;
+ mEventCond.signal();
+ return NO_ERROR;
+}
+
+bool Overlay::threadLoop() {
+ Mutex::Autolock _l(mMutex);
+
+ mThreadResult = setup_l();
+
+ if (mThreadResult != NO_ERROR) {
+ ALOGW("Aborting overlay thread");
+ mState = STOPPED;
+ release_l();
+ mStartCond.broadcast();
+ return false;
+ }
+
+ ALOGV("Overlay thread running");
+ mState = RUNNING;
+ mStartCond.broadcast();
+
+ while (mState == RUNNING) {
+ mEventCond.wait(mMutex);
+ if (mFrameAvailable) {
+ ALOGV("Awake, frame available");
+ processFrame_l();
+ mFrameAvailable = false;
+ } else {
+ ALOGV("Awake, frame not available");
+ }
+ }
+
+ ALOGV("Overlay thread stopping");
+ release_l();
+ mState = STOPPED;
+ return false; // stop
+}
+
+status_t Overlay::setup_l() {
+ status_t err;
+
+ err = mEglWindow.createWindow(mOutputSurface);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ mEglWindow.makeCurrent();
+
+ int width = mEglWindow.getWidth();
+ int height = mEglWindow.getHeight();
+
+ glViewport(0, 0, width, height);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+
+ // Shaders for rendering from different types of textures.
+ err = mTexProgram.setup(Program::PROGRAM_TEXTURE_2D);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ err = mExtTexProgram.setup(Program::PROGRAM_EXTERNAL_TEXTURE);
+ if (err != NO_ERROR) {
+ return err;
+ }
+
+ err = mTextRenderer.loadIntoTexture();
+ if (err != NO_ERROR) {
+ return err;
+ }
+ mTextRenderer.setScreenSize(width, height);
+
+ // Input side (buffers from virtual display).
+ glGenTextures(1, &mExtTextureName);
+ if (mExtTextureName == 0) {
+ ALOGE("glGenTextures failed: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ mBufferQueue = new BufferQueue(/*new GraphicBufferAlloc()*/);
+ mGlConsumer = new GLConsumer(mBufferQueue, mExtTextureName,
+ GL_TEXTURE_EXTERNAL_OES);
+ mGlConsumer->setName(String8("virtual display"));
+ mGlConsumer->setDefaultBufferSize(width, height);
+ mGlConsumer->setDefaultMaxBufferCount(5);
+ mGlConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_TEXTURE);
+
+ mGlConsumer->setFrameAvailableListener(this);
+
+ return NO_ERROR;
+}
+
+
+void Overlay::release_l() {
+ ALOGV("Overlay::release_l");
+ mOutputSurface.clear();
+ mGlConsumer.clear();
+ mBufferQueue.clear();
+
+ mTexProgram.release();
+ mExtTexProgram.release();
+ mEglWindow.release();
+}
+
+void Overlay::processFrame_l() {
+ float texMatrix[16];
+
+ mGlConsumer->updateTexImage();
+ mGlConsumer->getTransformMatrix(texMatrix);
+ nsecs_t monotonicNsec = mGlConsumer->getTimestamp();
+ nsecs_t frameNumber = mGlConsumer->getFrameNumber();
+ int64_t droppedFrames = 0;
+
+ if (mLastFrameNumber > 0) {
+ mTotalDroppedFrames += size_t(frameNumber - mLastFrameNumber) - 1;
+ }
+ mLastFrameNumber = frameNumber;
+
+ mTextRenderer.setProportionalScale(35);
+
+ if (false) { // DEBUG - full blue background
+ glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
+ glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
+ }
+
+ int width = mEglWindow.getWidth();
+ int height = mEglWindow.getHeight();
+ if (false) { // DEBUG - draw inset
+ mExtTexProgram.blit(mExtTextureName, texMatrix,
+ 100, 100, width-200, height-200);
+ } else {
+ mExtTexProgram.blit(mExtTextureName, texMatrix,
+ 0, 0, width, height);
+ }
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ if (false) { // DEBUG - show entire font bitmap
+ mTexProgram.blit(mTextRenderer.getTextureName(), Program::kIdentity,
+ 100, 100, width-200, height-200);
+ }
+
+ char textBuf[64];
+ getTimeString_l(monotonicNsec, textBuf, sizeof(textBuf));
+ String8 timeStr(String8::format("%s f=%lld (%zd)",
+ textBuf, frameNumber, mTotalDroppedFrames));
+ mTextRenderer.drawString(mTexProgram, Program::kIdentity, 0, 0, timeStr);
+
+ glDisable(GL_BLEND);
+
+ if (false) { // DEBUG - add red rectangle in lower-left corner
+ glEnable(GL_SCISSOR_TEST);
+ glScissor(0, 0, 200, 200);
+ glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glDisable(GL_SCISSOR_TEST);
+ }
+
+ mEglWindow.presentationTime(monotonicNsec);
+ mEglWindow.swapBuffers();
+}
+
+void Overlay::getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen) {
+ //const char* format = "%m-%d %T"; // matches log output
+ const char* format = "%T";
+ struct tm tm;
+
+ // localtime/strftime is not the fastest way to do this, but a trivial
+ // benchmark suggests that the cost is negligible.
+ int64_t realTime = mStartRealtimeNsecs +
+ (monotonicNsec - mStartMonotonicNsecs);
+ time_t secs = (time_t) (realTime / 1000000000);
+ localtime_r(&secs, &tm);
+ strftime(buf, bufLen, format, &tm);
+
+ int32_t msec = (int32_t) ((realTime % 1000000000) / 1000000);
+ char tmpBuf[5];
+ snprintf(tmpBuf, sizeof(tmpBuf), ".%03d", msec);
+ strlcat(buf, tmpBuf, bufLen);
+}
+
+// Callback; executes on arbitrary thread.
+void Overlay::onFrameAvailable() {
+ ALOGV("Overlay::onFrameAvailable");
+ Mutex::Autolock _l(mMutex);
+ mFrameAvailable = true;
+ mEventCond.signal();
+}
+
+
+/*static*/ status_t Overlay::drawInfoPage(
+ const sp<IGraphicBufferProducer>& outputSurface) {
+ status_t err;
+
+ EglWindow window;
+ err = window.createWindow(outputSurface);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ window.makeCurrent();
+
+ int width = window.getWidth();
+ int height = window.getHeight();
+ glViewport(0, 0, width, height);
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_CULL_FACE);
+
+ // Shaders for rendering.
+ Program texProgram;
+ err = texProgram.setup(Program::PROGRAM_TEXTURE_2D);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ TextRenderer textRenderer;
+ err = textRenderer.loadIntoTexture();
+ if (err != NO_ERROR) {
+ return err;
+ }
+ textRenderer.setScreenSize(width, height);
+
+ doDrawInfoPage(window, texProgram, textRenderer);
+
+ // Destroy the surface. This causes a disconnect.
+ texProgram.release();
+ window.release();
+
+ return NO_ERROR;
+}
+
+/*static*/ void Overlay::doDrawInfoPage(const EglWindow& window,
+ const Program& texProgram, TextRenderer& textRenderer) {
+ const nsecs_t holdTime = 250000000LL;
+
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ int width = window.getWidth();
+ int height = window.getHeight();
+
+ // Draw a thin border around the screen. Some players, e.g. browser
+ // plugins, make it hard to see where the edges are when the device
+ // is using a black background, so this gives the viewer a frame of
+ // reference.
+ //
+ // This is a clumsy way to do it, but we're only doing it for one frame,
+ // and it's easier than actually drawing lines.
+ const int lineWidth = 4;
+ glEnable(GL_SCISSOR_TEST);
+ glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
+ glScissor(0, 0, width, lineWidth);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(0, height - lineWidth, width, lineWidth);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(0, 0, lineWidth, height);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glScissor(width - lineWidth, 0, lineWidth, height);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glDisable(GL_SCISSOR_TEST);
+
+ //glEnable(GL_BLEND);
+ //glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ textRenderer.setProportionalScale(30);
+
+ float xpos = 0;
+ float ypos = 0;
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos,
+ String8::format("Android screenrecord v%d.%d",
+ kVersionMajor, kVersionMinor));
+
+ // Show date/time
+ time_t now = time(0);
+ struct tm tm;
+ localtime_r(&now, &tm);
+ char timeBuf[64];
+ strftime(timeBuf, sizeof(timeBuf), "%a, %d %b %Y %T %z", &tm);
+ String8 header("Started ");
+ header += timeBuf;
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, header);
+ ypos += 8 * textRenderer.getScale(); // slight padding
+
+ // Show selected system property values
+ for (int i = 0; i < NELEM(kPropertyNames); i++) {
+ char valueBuf[PROPERTY_VALUE_MAX];
+
+ property_get(kPropertyNames[i], valueBuf, "");
+ if (valueBuf[0] == '\0') {
+ continue;
+ }
+ String8 str(String8::format("%s: [%s]", kPropertyNames[i], valueBuf));
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, str);
+ }
+ ypos += 8 * textRenderer.getScale(); // slight padding
+
+ // Show GL info
+ String8 glStr("OpenGL: ");
+ glStr += (char*) glGetString(GL_VENDOR);
+ glStr += " / ";
+ glStr += (char*) glGetString(GL_RENDERER);
+ glStr += ", ";
+ glStr += (char*) glGetString(GL_VERSION);
+ ypos = textRenderer.drawWrappedString(texProgram, xpos, ypos, glStr);
+
+ //glDisable(GL_BLEND);
+
+ // Set a presentation time slightly in the past. This will cause the
+ // player to hold the frame on screen.
+ window.presentationTime(systemTime(CLOCK_MONOTONIC) - holdTime);
+ window.swapBuffers();
+}
diff --git a/cmds/screenrecord/Overlay.h b/cmds/screenrecord/Overlay.h
new file mode 100644
index 0000000..b8473b4
--- /dev/null
+++ b/cmds/screenrecord/Overlay.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2013 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 SCREENRECORD_OVERLAY_H
+#define SCREENRECORD_OVERLAY_H
+
+#include "Program.h"
+#include "TextRenderer.h"
+#include "EglWindow.h"
+
+#include <gui/BufferQueue.h>
+#include <gui/GLConsumer.h>
+#include <utils/Thread.h>
+
+#include <EGL/egl.h>
+
+namespace android {
+
+/*
+ * Overlay "filter". This sits between the virtual display and the video
+ * encoder.
+ *
+ * Most functions run on a thread created by start().
+ */
+class Overlay : public GLConsumer::FrameAvailableListener, Thread {
+public:
+ Overlay() : Thread(false),
+ mThreadResult(UNKNOWN_ERROR),
+ mState(UNINITIALIZED),
+ mFrameAvailable(false),
+ mExtTextureName(0),
+ mStartMonotonicNsecs(0),
+ mStartRealtimeNsecs(0),
+ mLastFrameNumber(-1),
+ mTotalDroppedFrames(0)
+ {}
+ virtual ~Overlay() { assert(mState == UNINITIALIZED || mState == STOPPED); }
+
+ // Creates a thread that performs the overlay. Pass in the surface that
+ // output will be sent to.
+ //
+ // This creates a dedicated thread for processing frames.
+ //
+ // Returns a reference to the producer side of a new BufferQueue that will
+ // be used by the virtual display.
+ status_t start(const sp<IGraphicBufferProducer>& outputSurface,
+ sp<IGraphicBufferProducer>* pBufferProducer);
+
+ // Stops the thread and releases resources. It's okay to call this even
+ // if start() was never called.
+ status_t stop();
+
+ // This creates an EGL context and window surface, draws some informative
+ // text on it, swaps the buffer, and then tears the whole thing down.
+ static status_t drawInfoPage(const sp<IGraphicBufferProducer>& outputSurface);
+
+private:
+ Overlay(const Overlay&);
+ Overlay& operator=(const Overlay&);
+
+ // Draw the initial info screen.
+ static void doDrawInfoPage(const EglWindow& window,
+ const Program& texRender, TextRenderer& textRenderer);
+
+ // (overrides GLConsumer::FrameAvailableListener method)
+ virtual void onFrameAvailable();
+
+ // (overrides Thread method)
+ virtual bool threadLoop();
+
+ // One-time setup (essentially object construction on the overlay thread).
+ status_t setup_l();
+
+ // Release all resources held.
+ void release_l();
+
+ // Release EGL display, context, surface.
+ void eglRelease_l();
+
+ // Process a frame received from the virtual display.
+ void processFrame_l();
+
+ // Convert a monotonic time stamp into a string with the current time.
+ void getTimeString_l(nsecs_t monotonicNsec, char* buf, size_t bufLen);
+
+ // Guards all fields below.
+ Mutex mMutex;
+
+ // Initialization gate.
+ Condition mStartCond;
+
+ // Thread status, mostly useful during startup.
+ status_t mThreadResult;
+
+ // Overlay thread state. States advance from left to right; object may
+ // not be restarted.
+ enum { UNINITIALIZED, INIT, RUNNING, STOPPING, STOPPED } mState;
+
+ // Event notification. Overlay thread sleeps on this until a frame
+ // arrives or it's time to shut down.
+ Condition mEventCond;
+
+ // Set by the FrameAvailableListener callback.
+ bool mFrameAvailable;
+
+ // The surface we send our output to, i.e. the video encoder's input
+ // surface.
+ sp<IGraphicBufferProducer> mOutputSurface;
+
+ // Our queue. The producer side is passed to the virtual display, the
+ // consumer side feeds into our GLConsumer.
+ sp<BufferQueue> mBufferQueue;
+
+ // This receives frames from the virtual display and makes them available
+ // as an external texture.
+ sp<GLConsumer> mGlConsumer;
+
+ // EGL display / context / surface.
+ EglWindow mEglWindow;
+
+ // GL rendering support.
+ Program mExtTexProgram;
+ Program mTexProgram;
+
+ // Text rendering.
+ TextRenderer mTextRenderer;
+
+ // External texture, updated by GLConsumer.
+ GLuint mExtTextureName;
+
+ // Start time, used to map monotonic to wall-clock time.
+ nsecs_t mStartMonotonicNsecs;
+ nsecs_t mStartRealtimeNsecs;
+
+ // Used for tracking dropped frames.
+ nsecs_t mLastFrameNumber;
+ size_t mTotalDroppedFrames;
+
+ static const char* kPropertyNames[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_OVERLAY_H*/
diff --git a/cmds/screenrecord/Program.cpp b/cmds/screenrecord/Program.cpp
new file mode 100644
index 0000000..a198204
--- /dev/null
+++ b/cmds/screenrecord/Program.cpp
@@ -0,0 +1,303 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "Program.h"
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <assert.h>
+
+using namespace android;
+
+// 4x4 identity matrix
+const float Program::kIdentity[] = {
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f
+};
+
+// Simple vertex shader. Texture coord calc includes matrix for GLConsumer
+// transform.
+static const char* kVertexShader =
+ "uniform mat4 uMVPMatrix;\n"
+ "uniform mat4 uGLCMatrix;\n"
+ "attribute vec4 aPosition;\n"
+ "attribute vec4 aTextureCoord;\n"
+ "varying vec2 vTextureCoord;\n"
+ "void main() {\n"
+ " gl_Position = uMVPMatrix * aPosition;\n"
+ " vTextureCoord = (uGLCMatrix * aTextureCoord).xy;\n"
+ "}\n";
+
+// Trivial fragment shader for external texture.
+static const char* kExtFragmentShader =
+ "#extension GL_OES_EGL_image_external : require\n"
+ "precision mediump float;\n"
+ "varying vec2 vTextureCoord;\n"
+ "uniform samplerExternalOES uTexture;\n"
+ "void main() {\n"
+ " gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+ "}\n";
+
+// Trivial fragment shader for mundane texture.
+static const char* kFragmentShader =
+ "precision mediump float;\n"
+ "varying vec2 vTextureCoord;\n"
+ "uniform sampler2D uTexture;\n"
+ "void main() {\n"
+ " gl_FragColor = texture2D(uTexture, vTextureCoord);\n"
+ //" gl_FragColor = vec4(0.2, 1.0, 0.2, 1.0);\n"
+ "}\n";
+
+status_t Program::setup(ProgramType type) {
+ ALOGV("Program::setup type=%d", type);
+ status_t err;
+
+ mProgramType = type;
+
+ GLuint program;
+ if (type == PROGRAM_TEXTURE_2D) {
+ err = createProgram(&program, kVertexShader, kFragmentShader);
+ } else {
+ err = createProgram(&program, kVertexShader, kExtFragmentShader);
+ }
+ if (err != NO_ERROR) {
+ return err;
+ }
+ assert(program != 0);
+
+ maPositionLoc = glGetAttribLocation(program, "aPosition");
+ maTextureCoordLoc = glGetAttribLocation(program, "aTextureCoord");
+ muMVPMatrixLoc = glGetUniformLocation(program, "uMVPMatrix");
+ muGLCMatrixLoc = glGetUniformLocation(program, "uGLCMatrix");
+ muTextureLoc = glGetUniformLocation(program, "uTexture");
+ if ((maPositionLoc | maTextureCoordLoc | muMVPMatrixLoc |
+ muGLCMatrixLoc | muTextureLoc) == -1) {
+ ALOGE("Attrib/uniform lookup failed: %#x", glGetError());
+ glDeleteProgram(program);
+ return UNKNOWN_ERROR;
+ }
+
+ mProgram = program;
+ return NO_ERROR;
+}
+
+void Program::release() {
+ ALOGV("Program::release");
+ if (mProgram != 0) {
+ glDeleteProgram(mProgram);
+ mProgram = 0;
+ }
+}
+
+status_t Program::createProgram(GLuint* outPgm, const char* vertexShader,
+ const char* fragmentShader) {
+ GLuint vs, fs;
+ status_t err;
+
+ err = compileShader(GL_VERTEX_SHADER, vertexShader, &vs);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ err = compileShader(GL_FRAGMENT_SHADER, fragmentShader, &fs);
+ if (err != NO_ERROR) {
+ glDeleteShader(vs);
+ return err;
+ }
+
+ GLuint program;
+ err = linkShaderProgram(vs, fs, &program);
+ glDeleteShader(vs);
+ glDeleteShader(fs);
+ if (err == NO_ERROR) {
+ *outPgm = program;
+ }
+ return err;
+}
+
+status_t Program::compileShader(GLenum shaderType, const char* src,
+ GLuint* outShader) {
+ GLuint shader = glCreateShader(shaderType);
+ if (shader == 0) {
+ ALOGE("glCreateShader error: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ glShaderSource(shader, 1, &src, NULL);
+ glCompileShader(shader);
+
+ GLint compiled = 0;
+ glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+ if (!compiled) {
+ ALOGE("Compile of shader type %d failed", shaderType);
+ GLint infoLen = 0;
+ glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
+ if (infoLen) {
+ char* buf = new char[infoLen];
+ if (buf) {
+ glGetShaderInfoLog(shader, infoLen, NULL, buf);
+ ALOGE("Compile log: %s", buf);
+ delete[] buf;
+ }
+ }
+ glDeleteShader(shader);
+ return UNKNOWN_ERROR;
+ }
+ *outShader = shader;
+ return NO_ERROR;
+}
+
+status_t Program::linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm) {
+ GLuint program = glCreateProgram();
+ if (program == 0) {
+ ALOGE("glCreateProgram error: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+
+ glAttachShader(program, vs);
+ glAttachShader(program, fs);
+ glLinkProgram(program);
+ GLint linkStatus = GL_FALSE;
+ glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+ if (linkStatus != GL_TRUE) {
+ ALOGE("glLinkProgram failed");
+ GLint bufLength = 0;
+ glGetProgramiv(program, GL_INFO_LOG_LENGTH, &bufLength);
+ if (bufLength) {
+ char* buf = new char[bufLength];
+ if (buf) {
+ glGetProgramInfoLog(program, bufLength, NULL, buf);
+ ALOGE("Link log: %s", buf);
+ delete[] buf;
+ }
+ }
+ glDeleteProgram(program);
+ return UNKNOWN_ERROR;
+ }
+
+ *outPgm = program;
+ return NO_ERROR;
+}
+
+
+
+status_t Program::blit(GLuint texName, const float* texMatrix,
+ int32_t x, int32_t y, int32_t w, int32_t h) const {
+ ALOGV("Program::blit %d xy=%d,%d wh=%d,%d", texName, x, y, w, h);
+
+ const float pos[] = {
+ float(x), float(y+h),
+ float(x+w), float(y+h),
+ float(x), float(y),
+ float(x+w), float(y),
+ };
+ const float uv[] = {
+ 0.0f, 0.0f,
+ 1.0f, 0.0f,
+ 0.0f, 1.0f,
+ 1.0f, 1.0f,
+ };
+ status_t err;
+
+ err = beforeDraw(texName, texMatrix, pos, uv);
+ if (err == NO_ERROR) {
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ err = afterDraw();
+ }
+ return err;
+}
+
+status_t Program::drawTriangles(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes, size_t count) const {
+ ALOGV("Program::drawTriangles texName=%d", texName);
+
+ status_t err;
+
+ err = beforeDraw(texName, texMatrix, vertices, texes);
+ if (err == NO_ERROR) {
+ glDrawArrays(GL_TRIANGLES, 0, count);
+ err = afterDraw();
+ }
+ return err;
+}
+
+status_t Program::beforeDraw(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes) const {
+ // Create an orthographic projection matrix based on viewport size.
+ GLint vp[4];
+ glGetIntegerv(GL_VIEWPORT, vp);
+ float screenToNdc[16] = {
+ 2.0f/float(vp[2]), 0.0f, 0.0f, 0.0f,
+ 0.0f, -2.0f/float(vp[3]), 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ -1.0f, 1.0f, 0.0f, 1.0f,
+ };
+
+ glUseProgram(mProgram);
+
+ glVertexAttribPointer(maPositionLoc, 2, GL_FLOAT, GL_FALSE, 0, vertices);
+ glVertexAttribPointer(maTextureCoordLoc, 2, GL_FLOAT, GL_FALSE, 0, texes);
+ glEnableVertexAttribArray(maPositionLoc);
+ glEnableVertexAttribArray(maTextureCoordLoc);
+
+ glUniformMatrix4fv(muMVPMatrixLoc, 1, GL_FALSE, screenToNdc);
+ glUniformMatrix4fv(muGLCMatrixLoc, 1, GL_FALSE, texMatrix);
+
+ glActiveTexture(GL_TEXTURE0);
+
+ switch (mProgramType) {
+ case PROGRAM_EXTERNAL_TEXTURE:
+ glBindTexture(GL_TEXTURE_EXTERNAL_OES, texName);
+ break;
+ case PROGRAM_TEXTURE_2D:
+ glBindTexture(GL_TEXTURE_2D, texName);
+ break;
+ default:
+ ALOGE("unexpected program type %d", mProgramType);
+ return UNKNOWN_ERROR;
+ }
+
+ glUniform1i(muTextureLoc, 0);
+
+ GLenum glErr;
+ if ((glErr = glGetError()) != GL_NO_ERROR) {
+ ALOGE("GL error before draw: %#x", glErr);
+ glDisableVertexAttribArray(maPositionLoc);
+ glDisableVertexAttribArray(maTextureCoordLoc);
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
+
+status_t Program::afterDraw() const {
+ glDisableVertexAttribArray(maPositionLoc);
+ glDisableVertexAttribArray(maTextureCoordLoc);
+
+ GLenum glErr;
+ if ((glErr = glGetError()) != GL_NO_ERROR) {
+ ALOGE("GL error after draw: %#x", glErr);
+ return UNKNOWN_ERROR;
+ }
+
+ return NO_ERROR;
+}
diff --git a/cmds/screenrecord/Program.h b/cmds/screenrecord/Program.h
new file mode 100644
index 0000000..e47bc0d
--- /dev/null
+++ b/cmds/screenrecord/Program.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2013 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 SCREENRECORD_PROGRAM_H
+#define SCREENRECORD_PROGRAM_H
+
+#include <utils/Errors.h>
+
+#include <EGL/egl.h>
+#include <GLES2/gl2.h>
+
+namespace android {
+
+/*
+ * Utility class for GLES rendering.
+ *
+ * Not thread-safe.
+ */
+class Program {
+public:
+ enum ProgramType { PROGRAM_UNKNOWN=0, PROGRAM_EXTERNAL_TEXTURE,
+ PROGRAM_TEXTURE_2D };
+
+ Program() :
+ mProgramType(PROGRAM_UNKNOWN),
+ mProgram(0),
+ maPositionLoc(0),
+ maTextureCoordLoc(0),
+ muMVPMatrixLoc(0),
+ muGLCMatrixLoc(0),
+ muTextureLoc(0)
+ {}
+ ~Program() { release(); }
+
+ // Initialize the program for use with the specified texture type.
+ status_t setup(ProgramType type);
+
+ // Release the program and associated resources.
+ void release();
+
+ // Blit the specified texture to { x, y, x+w, y+h }.
+ status_t blit(GLuint texName, const float* texMatrix,
+ int32_t x, int32_t y, int32_t w, int32_t h) const;
+
+ // Draw a number of triangles.
+ status_t drawTriangles(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes, size_t count) const;
+
+ static const float kIdentity[];
+
+private:
+ Program(const Program&);
+ Program& operator=(const Program&);
+
+ // Common code for draw functions.
+ status_t beforeDraw(GLuint texName, const float* texMatrix,
+ const float* vertices, const float* texes) const;
+ status_t afterDraw() const;
+
+ // GLES 2 shader utilities.
+ status_t createProgram(GLuint* outPgm, const char* vertexShader,
+ const char* fragmentShader);
+ static status_t compileShader(GLenum shaderType, const char* src,
+ GLuint* outShader);
+ static status_t linkShaderProgram(GLuint vs, GLuint fs, GLuint* outPgm);
+
+ ProgramType mProgramType;
+ GLuint mProgram;
+
+ GLint maPositionLoc;
+ GLint maTextureCoordLoc;
+ GLint muMVPMatrixLoc;
+ GLint muGLCMatrixLoc;
+ GLint muTextureLoc;
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_PROGRAM_H*/
diff --git a/cmds/screenrecord/TextRenderer.cpp b/cmds/screenrecord/TextRenderer.cpp
new file mode 100644
index 0000000..784055c
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.cpp
@@ -0,0 +1,358 @@
+/*
+ * Copyright 2013 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.
+ */
+
+#define LOG_TAG "ScreenRecord"
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+
+#include "TextRenderer.h"
+
+#include <assert.h>
+
+namespace android {
+#include "FontBitmap.h"
+};
+
+using namespace android;
+
+const char TextRenderer::kWhitespace[] = " \t\n\r";
+
+bool TextRenderer::mInitialized = false;
+uint32_t TextRenderer::mXOffset[FontBitmap::numGlyphs];
+
+void TextRenderer::initOnce() {
+ if (!mInitialized) {
+ initXOffset();
+ mInitialized = true;
+ }
+}
+
+void TextRenderer::initXOffset() {
+ // Generate a table of X offsets. They start at zero and reset whenever
+ // we move down a line (i.e. the Y offset changes). The offset increases
+ // by one pixel more than the width because the generator left a gap to
+ // avoid reading pixels from adjacent glyphs in the texture filter.
+ uint16_t offset = 0;
+ uint16_t prevYOffset = (int16_t) -1;
+ for (unsigned int i = 0; i < FontBitmap::numGlyphs; i++) {
+ if (prevYOffset != FontBitmap::yoffset[i]) {
+ prevYOffset = FontBitmap::yoffset[i];
+ offset = 0;
+ }
+ mXOffset[i] = offset;
+ offset += FontBitmap::glyphWidth[i] + 1;
+ }
+}
+
+static bool isPowerOfTwo(uint32_t val) {
+ // a/k/a "is exactly one bit set"; note returns true for 0
+ return (val & (val -1)) == 0;
+}
+
+static uint32_t powerOfTwoCeil(uint32_t val) {
+ // drop it, smear the bits across, pop it
+ val--;
+ val |= val >> 1;
+ val |= val >> 2;
+ val |= val >> 4;
+ val |= val >> 8;
+ val |= val >> 16;
+ val++;
+
+ return val;
+}
+
+float TextRenderer::getGlyphHeight() const {
+ return FontBitmap::maxGlyphHeight;
+}
+
+status_t TextRenderer::loadIntoTexture() {
+ ALOGV("Font::loadIntoTexture");
+
+ glGenTextures(1, &mTextureName);
+ if (mTextureName == 0) {
+ ALOGE("glGenTextures failed: %#x", glGetError());
+ return UNKNOWN_ERROR;
+ }
+ glBindTexture(GL_TEXTURE_2D, mTextureName);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ // The pixel data is stored as combined color+alpha, 8 bits per pixel.
+ // It's guaranteed to be a power-of-two wide, but we cut off the height
+ // where the data ends. We want to expand it to a power-of-two bitmap
+ // with ARGB data and hand that to glTexImage2D.
+
+ if (!isPowerOfTwo(FontBitmap::width)) {
+ ALOGE("npot glyph bitmap width %u", FontBitmap::width);
+ return UNKNOWN_ERROR;
+ }
+
+ uint32_t potHeight = powerOfTwoCeil(FontBitmap::height);
+ uint8_t* rgbaPixels = new uint8_t[FontBitmap::width * potHeight * 4];
+ memset(rgbaPixels, 0, FontBitmap::width * potHeight * 4);
+ uint8_t* pix = rgbaPixels;
+
+ for (unsigned int i = 0; i < FontBitmap::width * FontBitmap::height; i++) {
+ uint8_t alpha, color;
+ if ((FontBitmap::pixels[i] & 1) == 0) {
+ // black pixel with varying alpha
+ color = 0x00;
+ alpha = FontBitmap::pixels[i] & ~1;
+ } else {
+ // opaque grey pixel
+ color = FontBitmap::pixels[i] & ~1;
+ alpha = 0xff;
+ }
+ *pix++ = color;
+ *pix++ = color;
+ *pix++ = color;
+ *pix++ = alpha;
+ }
+
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, FontBitmap::width, potHeight, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, rgbaPixels);
+ delete[] rgbaPixels;
+ GLint glErr = glGetError();
+ if (glErr != 0) {
+ ALOGE("glTexImage2D failed: %#x", glErr);
+ return UNKNOWN_ERROR;
+ }
+ return NO_ERROR;
+}
+
+void TextRenderer::setProportionalScale(float linesPerScreen) {
+ if (mScreenWidth == 0 || mScreenHeight == 0) {
+ ALOGW("setFontScale: can't set scale for width=%d height=%d",
+ mScreenWidth, mScreenHeight);
+ return;
+ }
+ float tallest = mScreenWidth > mScreenHeight ? mScreenWidth : mScreenHeight;
+ setScale(tallest / (linesPerScreen * getGlyphHeight()));
+}
+
+float TextRenderer::computeScaledStringWidth(const String8& str8) const {
+ // String8.length() isn't documented, but I'm assuming it will return
+ // the number of characters rather than the number of bytes. Since
+ // we can only display ASCII we want to ignore anything else, so we
+ // just convert to char* -- but String8 doesn't document what it does
+ // with values outside 0-255. So just convert to char* and use strlen()
+ // to see what we get.
+ const char* str = str8.string();
+ return computeScaledStringWidth(str, strlen(str));
+}
+
+size_t TextRenderer::glyphIndex(char ch) const {
+ size_t chi = ch - FontBitmap::firstGlyphChar;
+ if (chi >= FontBitmap::numGlyphs) {
+ chi = '?' - FontBitmap::firstGlyphChar;
+ }
+ assert(chi < FontBitmap::numGlyphs);
+ return chi;
+}
+
+float TextRenderer::computeScaledStringWidth(const char* str,
+ size_t len) const {
+ float width = 0.0f;
+ for (size_t i = 0; i < len; i++) {
+ size_t chi = glyphIndex(str[i]);
+ float glyphWidth = FontBitmap::glyphWidth[chi];
+ width += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+ }
+
+ return width;
+}
+
+void TextRenderer::drawString(const Program& program, const float* texMatrix,
+ float x, float y, const String8& str8) const {
+ ALOGV("drawString %.3f,%.3f '%s' (scale=%.3f)", x, y, str8.string(),mScale);
+ initOnce();
+
+ // We want to draw the entire string with a single GLES call. We
+ // generate two arrays, one with screen coordinates, one with texture
+ // coordinates. Need two triangles per character.
+ const char* str = str8.string();
+ size_t len = strlen(str); // again, unsure about String8 handling
+
+ const size_t quadCoords =
+ 2 /*triangles*/ * 3 /*vertex/tri*/ * 2 /*coord/vertex*/;
+ float vertices[len * quadCoords];
+ float texes[len * quadCoords];
+
+ float fullTexWidth = FontBitmap::width;
+ float fullTexHeight = powerOfTwoCeil(FontBitmap::height);
+ for (size_t i = 0; i < len; i++) {
+ size_t chi = glyphIndex(str[i]);
+ float glyphWidth = FontBitmap::glyphWidth[chi];
+ float glyphHeight = FontBitmap::maxGlyphHeight;
+
+ float vertLeft = x;
+ float vertRight = x + glyphWidth * mScale;
+ float vertTop = y;
+ float vertBottom = y + glyphHeight * mScale;
+
+ // Lowest-numbered glyph is in top-left of bitmap, which puts it at
+ // the bottom-left in texture coordinates.
+ float texLeft = mXOffset[chi] / fullTexWidth;
+ float texRight = (mXOffset[chi] + glyphWidth) / fullTexWidth;
+ float texTop = FontBitmap::yoffset[chi] / fullTexHeight;
+ float texBottom = (FontBitmap::yoffset[chi] + glyphHeight) /
+ fullTexHeight;
+
+ size_t off = i * quadCoords;
+ vertices[off + 0] = vertLeft;
+ vertices[off + 1] = vertBottom;
+ vertices[off + 2] = vertRight;
+ vertices[off + 3] = vertBottom;
+ vertices[off + 4] = vertLeft;
+ vertices[off + 5] = vertTop;
+ vertices[off + 6] = vertLeft;
+ vertices[off + 7] = vertTop;
+ vertices[off + 8] = vertRight;
+ vertices[off + 9] = vertBottom;
+ vertices[off + 10] = vertRight;
+ vertices[off + 11] = vertTop;
+ texes[off + 0] = texLeft;
+ texes[off + 1] = texBottom;
+ texes[off + 2] = texRight;
+ texes[off + 3] = texBottom;
+ texes[off + 4] = texLeft;
+ texes[off + 5] = texTop;
+ texes[off + 6] = texLeft;
+ texes[off + 7] = texTop;
+ texes[off + 8] = texRight;
+ texes[off + 9] = texBottom;
+ texes[off + 10] = texRight;
+ texes[off + 11] = texTop;
+
+ // We added 1-pixel padding in the texture, so we want to advance by
+ // one less. Also, each glyph is surrounded by a black outline, which
+ // we want to merge.
+ x += (glyphWidth - 1 - FontBitmap::outlineWidth) * mScale;
+ }
+
+ program.drawTriangles(mTextureName, texMatrix, vertices, texes,
+ len * quadCoords / 2);
+}
+
+float TextRenderer::drawWrappedString(const Program& texRender,
+ float xpos, float ypos, const String8& str) {
+ ALOGV("drawWrappedString %.3f,%.3f '%s'", xpos, ypos, str.string());
+ initOnce();
+
+ if (mScreenWidth == 0 || mScreenHeight == 0) {
+ ALOGW("drawWrappedString: can't wrap with width=%d height=%d",
+ mScreenWidth, mScreenHeight);
+ return ypos;
+ }
+
+ const float indentWidth = mIndentMult * getScale();
+ if (xpos < mBorderWidth) {
+ xpos = mBorderWidth;
+ }
+ if (ypos < mBorderWidth) {
+ ypos = mBorderWidth;
+ }
+
+ const size_t maxWidth = (mScreenWidth - mBorderWidth) - xpos;
+ if (maxWidth < 1) {
+ ALOGE("Unable to render text: xpos=%.3f border=%.3f width=%u",
+ xpos, mBorderWidth, mScreenWidth);
+ return ypos;
+ }
+ float stringWidth = computeScaledStringWidth(str);
+ if (stringWidth <= maxWidth) {
+ // Trivial case.
+ drawString(texRender, Program::kIdentity, xpos, ypos, str);
+ ypos += getScaledGlyphHeight();
+ } else {
+ // We need to break the string into pieces, ideally at whitespace
+ // boundaries.
+ char* mangle = strdup(str.string());
+ char* start = mangle;
+ while (start != NULL) {
+ float xposAdj = (start == mangle) ? xpos : xpos + indentWidth;
+ char* brk = breakString(start,
+ (float) (mScreenWidth - mBorderWidth - xposAdj));
+ if (brk == NULL) {
+ // draw full string
+ drawString(texRender, Program::kIdentity, xposAdj, ypos,
+ String8(start));
+ start = NULL;
+ } else {
+ // draw partial string
+ char ch = *brk;
+ *brk = '\0';
+ drawString(texRender, Program::kIdentity, xposAdj, ypos,
+ String8(start));
+ *brk = ch;
+ start = brk;
+ if (strchr(kWhitespace, ch) != NULL) {
+ // if we broke on whitespace, skip past it
+ start++;
+ }
+ }
+ ypos += getScaledGlyphHeight();
+ }
+ free(mangle);
+ }
+
+ return ypos;
+}
+
+char* TextRenderer::breakString(const char* str, float maxWidth) const {
+ // Ideally we'd do clever things like binary search. Not bothering.
+ ALOGV("breakString '%s' %.3f", str, maxWidth);
+
+ size_t len = strlen(str);
+ if (len == 0) {
+ // Caller should detect this and not advance ypos.
+ return NULL;
+ }
+
+ float stringWidth = computeScaledStringWidth(str, len);
+ if (stringWidth <= maxWidth) {
+ return NULL; // trivial -- use full string
+ }
+
+ // Find the longest string that will fit.
+ size_t goodPos = 0;
+ for (size_t i = 0; i < len; i++) {
+ stringWidth = computeScaledStringWidth(str, i);
+ if (stringWidth < maxWidth) {
+ goodPos = i;
+ } else {
+ break; // too big
+ }
+ }
+ if (goodPos == 0) {
+ // space is too small to hold any glyph; output a single char
+ ALOGW("Couldn't find a nonzero prefix that fit from '%s'", str);
+ goodPos = 1;
+ }
+
+ // Scan back for whitespace. If we can't find any we'll just have
+ // an ugly mid-word break.
+ for (size_t i = goodPos; i > 0; i--) {
+ if (strchr(kWhitespace, str[i]) != NULL) {
+ goodPos = i;
+ break;
+ }
+ }
+
+ ALOGV("goodPos=%d for str='%s'", goodPos, str);
+ return const_cast<char*>(str + goodPos);
+}
diff --git a/cmds/screenrecord/TextRenderer.h b/cmds/screenrecord/TextRenderer.h
new file mode 100644
index 0000000..03dd2fb
--- /dev/null
+++ b/cmds/screenrecord/TextRenderer.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2013 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 SCREENRECORD_TEXT_RENDER_H
+#define SCREENRECORD_TEXT_RENDER_H
+
+#include "Program.h"
+
+#include <utils/String8.h>
+#include <utils/Errors.h>
+
+#include <GLES2/gl2.h>
+
+
+namespace android {
+
+/*
+ * Simple font representation.
+ *
+ * Not thread-safe.
+ */
+class TextRenderer {
+public:
+ TextRenderer() :
+ mTextureName(0),
+ mScale(1.0f),
+ mBorderWidth(10.0f),
+ mIndentMult(30.0f),
+ mScreenWidth(0),
+ mScreenHeight(0)
+ {}
+ ~TextRenderer() {}
+
+ // Load the glyph bitmap into a 2D texture in the current context.
+ status_t loadIntoTexture();
+
+ // Set the screen dimensions, used for scaling and line wrap.
+ void setScreenSize(uint32_t width, uint32_t height) {
+ mScreenWidth = width;
+ mScreenHeight = height;
+ }
+
+ // Get/set the font scaling.
+ float getScale() const { return mScale; }
+ void setScale(float scale) { mScale = scale; }
+
+ // Set the font scaling based on the desired number of lines per screen.
+ // The display's tallest axis is used, so if the device is in landscape
+ // the screen will fit fewer lines.
+ void setProportionalScale(float linesPerScreen);
+
+ // Render the text string at the specified coordinates. Pass in the
+ // upper-left corner in non-GL-flipped coordinates, i.e. to print text
+ // at the top left of the screen use (0,0).
+ //
+ // Set blend func (1, 1-srcAlpha) before calling if drawing onto
+ // something other than black.
+ void drawString(const Program& program, const float* texMatrix,
+ float x, float y, const String8& str) const;
+
+ // Draw a string, possibly wrapping it at the screen boundary. Top-left
+ // is at (0,0).
+ //
+ // Returns the updated Y position.
+ float drawWrappedString(const Program& texRender, float xpos, float ypos,
+ const String8& str);
+
+ // Returns the name of the texture the font was loaded into.
+ GLuint getTextureName() const { return mTextureName; }
+
+private:
+ TextRenderer(const TextRenderer&);
+ TextRenderer& operator=(const TextRenderer&);
+
+ // Perform one-time initialization.
+ static void initOnce();
+
+ // Populate the mXOffset array.
+ static void initXOffset();
+
+ // Find a good place to break the string. Returns NULL if the entire
+ // string will fit.
+ char* breakString(const char* str, float maxWidth) const;
+
+ // Computes the width of the string, in pixels.
+ float computeScaledStringWidth(const String8& str8) const;
+
+ // Computes the width of first N characters in the string.
+ float computeScaledStringWidth(const char* str, size_t len) const;
+
+ // Returns the font's glyph height. This is the full pixel height of the
+ // tallest glyph, both above and below the baseline, NOT adjusted by the
+ // current scale factor.
+ float getGlyphHeight() const;
+
+ // Like getGlyphHeight(), but result is scaled.
+ float getScaledGlyphHeight() const { return getGlyphHeight() * mScale; }
+
+ // Convert an ASCII character to a glyph index. Returns the glyph for
+ // '?' if we have no glyph for the specified character.
+ size_t glyphIndex(char ch) const;
+
+ GLuint mTextureName;
+ float mScale;
+
+ // Number of pixels preserved at the left/right edges of the screen by
+ // drawWrappedString(). Not scaled.
+ float mBorderWidth;
+
+ // Distance to indent a broken line. Used by drawWrappedString().
+ // Value will be adjusted by the current scale factor.
+ float mIndentMult;
+
+ // Screen dimensions.
+ uint32_t mScreenWidth;
+ uint32_t mScreenHeight;
+
+ // Static font info.
+ static bool mInitialized;
+ static uint32_t mXOffset[];
+
+ static const char kWhitespace[];
+};
+
+}; // namespace android
+
+#endif /*SCREENRECORD_TEXT_RENDER_H*/
diff --git a/cmds/screenrecord/screenrecord.cpp b/cmds/screenrecord/screenrecord.cpp
index 49999b5..61f83e3 100644
--- a/cmds/screenrecord/screenrecord.cpp
+++ b/cmds/screenrecord/screenrecord.cpp
@@ -15,13 +15,14 @@
*/
#define LOG_TAG "ScreenRecord"
+#define ATRACE_TAG ATRACE_TAG_GRAPHICS
//#define LOG_NDEBUG 0
#include <utils/Log.h>
#include <binder/IPCThreadState.h>
#include <utils/Errors.h>
-#include <utils/Thread.h>
#include <utils/Timers.h>
+#include <utils/Trace.h>
#include <gui/Surface.h>
#include <gui/SurfaceComposerClient.h>
@@ -29,7 +30,6 @@
#include <ui/DisplayInfo.h>
#include <media/openmax/OMX_IVCommon.h>
#include <media/stagefright/foundation/ABuffer.h>
-#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaCodec.h>
#include <media/stagefright/MediaErrors.h>
@@ -40,30 +40,37 @@
#include <unistd.h>
#include <string.h>
#include <stdio.h>
+#include <ctype.h>
#include <fcntl.h>
#include <signal.h>
#include <getopt.h>
#include <sys/wait.h>
+#include <assert.h>
+
+#include "screenrecord.h"
+#include "Overlay.h"
using namespace android;
static const uint32_t kMinBitRate = 100000; // 0.1Mbps
-static const uint32_t kMaxBitRate = 100 * 1000000; // 100Mbps
+static const uint32_t kMaxBitRate = 200 * 1000000; // 200Mbps
static const uint32_t kMaxTimeLimitSec = 180; // 3 minutes
static const uint32_t kFallbackWidth = 1280; // 720p
static const uint32_t kFallbackHeight = 720;
// Command-line parameters.
-static bool gVerbose = false; // chatty on stdout
-static bool gRotate = false; // rotate 90 degrees
-static bool gSizeSpecified = false; // was size explicitly requested?
-static uint32_t gVideoWidth = 0; // default width+height
+static bool gVerbose = false; // chatty on stdout
+static bool gRotate = false; // rotate 90 degrees
+static bool gSizeSpecified = false; // was size explicitly requested?
+static bool gWantInfoScreen = false; // do we want initial info screen?
+static bool gWantFrameTime = false; // do we want times on each frame?
+static uint32_t gVideoWidth = 0; // default width+height
static uint32_t gVideoHeight = 0;
-static uint32_t gBitRate = 4000000; // 4Mbps
+static uint32_t gBitRate = 4000000; // 4Mbps
static uint32_t gTimeLimitSec = kMaxTimeLimitSec;
// Set by signal handler to stop recording.
-static bool gStopRequested;
+static volatile bool gStopRequested;
// Previous signal handler state, restored after first hit.
static struct sigaction gOrigSigactionINT;
@@ -97,8 +104,7 @@ static void signalCatcher(int signum)
* when Ctrl-C is hit. If we're run from the host, the local adb process
* gets the signal, and we get a SIGHUP when the terminal disconnects.
*/
-static status_t configureSignals()
-{
+static status_t configureSignals() {
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_handler = signalCatcher;
@@ -156,35 +162,30 @@ static status_t prepareEncoder(float displayFps, sp<MediaCodec>* pCodec,
fprintf(stderr, "ERROR: unable to create video/avc codec instance\n");
return UNKNOWN_ERROR;
}
+
err = codec->configure(format, NULL, NULL,
MediaCodec::CONFIGURE_FLAG_ENCODE);
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr, "ERROR: unable to configure codec (err=%d)\n", err);
+ codec->release();
return err;
}
- ALOGV("Creating buffer producer");
+ ALOGV("Creating encoder input surface");
sp<IGraphicBufferProducer> bufferProducer;
err = codec->createInputSurface(&bufferProducer);
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr,
"ERROR: unable to create encoder input surface (err=%d)\n", err);
+ codec->release();
return err;
}
ALOGV("Starting codec");
err = codec->start();
if (err != NO_ERROR) {
- codec->release();
- codec.clear();
-
fprintf(stderr, "ERROR: unable to start codec (err=%d)\n", err);
+ codec->release();
return err;
}
@@ -195,12 +196,11 @@ static status_t prepareEncoder(float displayFps, sp<MediaCodec>* pCodec,
}
/*
- * Configures the virtual display. When this completes, virtual display
- * frames will start being sent to the encoder's surface.
+ * Sets the display projection, based on the display dimensions, video size,
+ * and device orientation.
*/
-static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
- const sp<IGraphicBufferProducer>& bufferProducer,
- sp<IBinder>* pDisplayHandle) {
+static status_t setDisplayProjection(const sp<IBinder>& dpy,
+ const DisplayInfo& mainDpyInfo) {
status_t err;
// Set the region of the layer stack we're interested in, which in our
@@ -266,15 +266,25 @@ static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
}
}
+ SurfaceComposerClient::setDisplayProjection(dpy,
+ gRotate ? DISPLAY_ORIENTATION_90 : DISPLAY_ORIENTATION_0,
+ layerStackRect, displayRect);
+ return NO_ERROR;
+}
+/*
+ * Configures the virtual display. When this completes, virtual display
+ * frames will start arriving from the buffer producer.
+ */
+static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
+ const sp<IGraphicBufferProducer>& bufferProducer,
+ sp<IBinder>* pDisplayHandle) {
sp<IBinder> dpy = SurfaceComposerClient::createDisplay(
- String8("ScreenRecorder"), false /* secure */);
+ String8("ScreenRecorder"), false /*secure*/);
SurfaceComposerClient::openGlobalTransaction();
SurfaceComposerClient::setDisplaySurface(dpy, bufferProducer);
- SurfaceComposerClient::setDisplayProjection(dpy,
- gRotate ? DISPLAY_ORIENTATION_90 : DISPLAY_ORIENTATION_0,
- layerStackRect, displayRect);
+ setDisplayProjection(dpy, mainDpyInfo);
SurfaceComposerClient::setDisplayLayerStack(dpy, 0); // default stack
SurfaceComposerClient::closeGlobalTransaction();
@@ -291,13 +301,15 @@ static status_t prepareVirtualDisplay(const DisplayInfo& mainDpyInfo,
* The muxer must *not* have been started before calling.
*/
static status_t runEncoder(const sp<MediaCodec>& encoder,
- const sp<MediaMuxer>& muxer) {
+ const sp<MediaMuxer>& muxer, const sp<IBinder>& mainDpy,
+ const sp<IBinder>& virtualDpy, uint8_t orientation) {
static int kTimeout = 250000; // be responsive on signal
status_t err;
ssize_t trackIdx = -1;
uint32_t debugNumFrames = 0;
int64_t startWhenNsec = systemTime(CLOCK_MONOTONIC);
int64_t endWhenNsec = startWhenNsec + seconds_to_nanoseconds(gTimeLimitSec);
+ DisplayInfo mainDpyInfo;
Vector<sp<ABuffer> > buffers;
err = encoder->getOutputBuffers(&buffers);
@@ -338,10 +350,31 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
if (size != 0) {
ALOGV("Got data in buffer %d, size=%d, pts=%lld",
bufIndex, size, ptsUsec);
- CHECK(trackIdx != -1);
+ assert(trackIdx != -1);
+
+ { // scope
+ ATRACE_NAME("orientation");
+ // Check orientation, update if it has changed.
+ //
+ // Polling for changes is inefficient and wrong, but the
+ // useful stuff is hard to get at without a Dalvik VM.
+ err = SurfaceComposerClient::getDisplayInfo(mainDpy,
+ &mainDpyInfo);
+ if (err != NO_ERROR) {
+ ALOGW("getDisplayInfo(main) failed: %d", err);
+ } else if (orientation != mainDpyInfo.orientation) {
+ ALOGD("orientation changed, now %d", mainDpyInfo.orientation);
+ SurfaceComposerClient::openGlobalTransaction();
+ setDisplayProjection(virtualDpy, mainDpyInfo);
+ SurfaceComposerClient::closeGlobalTransaction();
+ orientation = mainDpyInfo.orientation;
+ }
+ }
// If the virtual display isn't providing us with timestamps,
- // use the current time.
+ // use the current time. This isn't great -- we could get
+ // decoded data in clusters -- but we're not expecting
+ // to hit this anyway.
if (ptsUsec == 0) {
ptsUsec = systemTime(SYSTEM_TIME_MONOTONIC) / 1000;
}
@@ -349,12 +382,18 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
// The MediaMuxer docs are unclear, but it appears that we
// need to pass either the full set of BufferInfo flags, or
// (flags & BUFFER_FLAG_SYNCFRAME).
- err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
- ptsUsec, flags);
- if (err != NO_ERROR) {
- fprintf(stderr, "Failed writing data to muxer (err=%d)\n",
- err);
- return err;
+ //
+ // If this blocks for too long we could drop frames. We may
+ // want to queue these up and do them on a different thread.
+ { // scope
+ ATRACE_NAME("write sample");
+ err = muxer->writeSampleData(buffers[bufIndex], trackIdx,
+ ptsUsec, flags);
+ if (err != NO_ERROR) {
+ fprintf(stderr,
+ "Failed writing data to muxer (err=%d)\n", err);
+ return err;
+ }
}
debugNumFrames++;
}
@@ -366,8 +405,8 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
}
if ((flags & MediaCodec::BUFFER_FLAG_EOS) != 0) {
// Not expecting EOS from SurfaceFlinger. Go with it.
- ALOGD("Received end-of-stream");
- gStopRequested = false;
+ ALOGI("Received end-of-stream");
+ gStopRequested = true;
}
break;
case -EAGAIN: // INFO_TRY_AGAIN_LATER
@@ -375,7 +414,7 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
break;
case INFO_FORMAT_CHANGED: // INFO_OUTPUT_FORMAT_CHANGED
{
- // format includes CSD, which we must provide to muxer
+ // Format includes CSD, which we must provide to muxer.
ALOGV("Encoder format changed");
sp<AMessage> newFormat;
encoder->getOutputFormat(&newFormat);
@@ -389,7 +428,7 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
}
break;
case INFO_OUTPUT_BUFFERS_CHANGED: // INFO_OUTPUT_BUFFERS_CHANGED
- // not expected for an encoder; handle it anyway
+ // Not expected for an encoder; handle it anyway.
ALOGV("Encoder buffers changed");
err = encoder->getOutputBuffers(&buffers);
if (err != NO_ERROR) {
@@ -399,7 +438,7 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
}
break;
case INVALID_OPERATION:
- fprintf(stderr, "Request for encoder buffer failed\n");
+ ALOGW("dequeueOutputBuffer returned INVALID_OPERATION");
return err;
default:
fprintf(stderr,
@@ -411,8 +450,8 @@ static status_t runEncoder(const sp<MediaCodec>& encoder,
ALOGV("Encoder stopping (req=%d)", gStopRequested);
if (gVerbose) {
printf("Encoder stopping; recorded %u frames in %lld seconds\n",
- debugNumFrames,
- nanoseconds_to_seconds(systemTime(CLOCK_MONOTONIC) - startWhenNsec));
+ debugNumFrames, nanoseconds_to_seconds(
+ systemTime(CLOCK_MONOTONIC) - startWhenNsec));
}
return NO_ERROR;
}
@@ -460,8 +499,8 @@ static status_t recordScreen(const char* fileName) {
// Configure and start the encoder.
sp<MediaCodec> encoder;
- sp<IGraphicBufferProducer> bufferProducer;
- err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+ sp<IGraphicBufferProducer> encoderInputSurface;
+ err = prepareEncoder(mainDpyInfo.fps, &encoder, &encoderInputSurface);
if (err != NO_ERROR && !gSizeSpecified) {
// fallback is defined for landscape; swap if we're in portrait
@@ -474,11 +513,41 @@ static status_t recordScreen(const char* fileName) {
gVideoWidth, gVideoHeight, newWidth, newHeight);
gVideoWidth = newWidth;
gVideoHeight = newHeight;
- err = prepareEncoder(mainDpyInfo.fps, &encoder, &bufferProducer);
+ err = prepareEncoder(mainDpyInfo.fps, &encoder,
+ &encoderInputSurface);
}
}
- if (err != NO_ERROR) {
- return err;
+ if (err != NO_ERROR) return err;
+
+ // From here on, we must explicitly release() the encoder before it goes
+ // out of scope, or we will get an assertion failure from stagefright
+ // later on in a different thread.
+
+
+ // Draw the "info" page by rendering a frame with GLES and sending
+ // it directly to the encoder.
+ // TODO: consider displaying this as a regular layer to avoid b/11697754
+ if (gWantInfoScreen) {
+ Overlay::drawInfoPage(encoderInputSurface);
+ }
+
+ // Configure optional overlay.
+ sp<IGraphicBufferProducer> bufferProducer;
+ sp<Overlay> overlay;
+ if (gWantFrameTime) {
+ // Send virtual display frames to an external texture.
+ overlay = new Overlay();
+ err = overlay->start(encoderInputSurface, &bufferProducer);
+ if (err != NO_ERROR) {
+ encoder->release();
+ return err;
+ }
+ if (gVerbose) {
+ printf("Bugreport overlay created\n");
+ }
+ } else {
+ // Use the encoder's input surface as the virtual display surface.
+ bufferProducer = encoderInputSurface;
}
// Configure virtual display.
@@ -486,25 +555,22 @@ static status_t recordScreen(const char* fileName) {
err = prepareVirtualDisplay(mainDpyInfo, bufferProducer, &dpy);
if (err != NO_ERROR) {
encoder->release();
- encoder.clear();
-
return err;
}
- // Configure, but do not start, muxer.
+ // Configure muxer. We have to wait for the CSD blob from the encoder
+ // before we can start it.
sp<MediaMuxer> muxer = new MediaMuxer(fileName,
MediaMuxer::OUTPUT_FORMAT_MPEG_4);
if (gRotate) {
- muxer->setOrientationHint(90);
+ muxer->setOrientationHint(90); // TODO: does this do anything?
}
// Main encoder loop.
- err = runEncoder(encoder, muxer);
+ err = runEncoder(encoder, muxer, mainDpy, dpy, mainDpyInfo.orientation);
if (err != NO_ERROR) {
- encoder->release();
- encoder.clear();
-
- return err;
+ fprintf(stderr, "Encoder failed (err=%d)\n", err);
+ // fall through to cleanup
}
if (gVerbose) {
@@ -512,14 +578,18 @@ static status_t recordScreen(const char* fileName) {
}
// Shut everything down, starting with the producer side.
- bufferProducer = NULL;
+ encoderInputSurface = NULL;
SurfaceComposerClient::destroyDisplay(dpy);
-
+ if (overlay != NULL) {
+ overlay->stop();
+ }
encoder->stop();
+ // If we don't stop muxer explicitly, i.e. let the destructor run,
+ // it may hang (b/11050628).
muxer->stop();
encoder->release();
- return 0;
+ return err;
}
/*
@@ -528,6 +598,28 @@ static status_t recordScreen(const char* fileName) {
* This is optional, but nice to have.
*/
static status_t notifyMediaScanner(const char* fileName) {
+ // need to do allocations before the fork()
+ String8 fileUrl("file://");
+ fileUrl.append(fileName);
+
+ const char* kCommand = "/system/bin/am";
+ const char* const argv[] = {
+ kCommand,
+ "broadcast",
+ "-a",
+ "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
+ "-d",
+ fileUrl.string(),
+ NULL
+ };
+ if (gVerbose) {
+ printf("Executing:");
+ for (int i = 0; argv[i] != NULL; i++) {
+ printf(" %s", argv[i]);
+ }
+ putchar('\n');
+ }
+
pid_t pid = fork();
if (pid < 0) {
int err = errno;
@@ -539,34 +631,14 @@ static status_t notifyMediaScanner(const char* fileName) {
int status;
pid_t actualPid = TEMP_FAILURE_RETRY(waitpid(pid, &status, 0));
if (actualPid != pid) {
- ALOGW("waitpid() returned %d (errno=%d)", actualPid, errno);
+ ALOGW("waitpid(%d) returned %d (errno=%d)", pid, actualPid, errno);
} else if (status != 0) {
ALOGW("'am broadcast' exited with status=%d", status);
} else {
ALOGV("'am broadcast' exited successfully");
}
} else {
- const char* kCommand = "/system/bin/am";
-
- // child; we're single-threaded, so okay to alloc
- String8 fileUrl("file://");
- fileUrl.append(fileName);
- const char* const argv[] = {
- kCommand,
- "broadcast",
- "-a",
- "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
- "-d",
- fileUrl.string(),
- NULL
- };
- if (gVerbose) {
- printf("Executing:");
- for (int i = 0; argv[i] != NULL; i++) {
- printf(" %s", argv[i]);
- }
- putchar('\n');
- } else {
+ if (!gVerbose) {
// non-verbose, suppress 'am' output
ALOGV("closing stdout/stderr in child");
int fd = open("/dev/null", O_WRONLY);
@@ -611,13 +683,37 @@ static bool parseWidthHeight(const char* widthHeight, uint32_t* pWidth,
}
/*
+ * Accepts a string with a bare number ("4000000") or with a single-character
+ * unit ("4m").
+ *
+ * Returns an error if parsing fails.
+ */
+static status_t parseValueWithUnit(const char* str, uint32_t* pValue) {
+ long value;
+ char* endptr;
+
+ value = strtol(str, &endptr, 10);
+ if (*endptr == '\0') {
+ // bare number
+ *pValue = value;
+ return NO_ERROR;
+ } else if (toupper(*endptr) == 'M' && *(endptr+1) == '\0') {
+ *pValue = value * 1000000; // check for overflow?
+ return NO_ERROR;
+ } else {
+ fprintf(stderr, "Unrecognized value: %s\n", str);
+ return UNKNOWN_ERROR;
+ }
+}
+
+/*
* Dumps usage on stderr.
*/
static void usage() {
fprintf(stderr,
"Usage: screenrecord [options] <filename>\n"
"\n"
- "Records the device's display to a .mp4 file.\n"
+ "Android screenrecord v%d.%d. Records the device's display to a .mp4 file.\n"
"\n"
"Options:\n"
"--size WIDTHxHEIGHT\n"
@@ -625,11 +721,13 @@ static void usage() {
" display resolution (if supported), 1280x720 if not. For best results,\n"
" use a size supported by the AVC encoder.\n"
"--bit-rate RATE\n"
- " Set the video bit rate, in megabits per second. Default %dMbps.\n"
+ " Set the video bit rate, in bits per second. Value may be specified as\n"
+ " bits or megabits, e.g. '4000000' is equivalent to '4M'. Default %dMbps.\n"
+ "--bugreport\n"
+ " Add additional information, such as a timestamp overlay, that is helpful\n"
+ " in videos captured to illustrate bugs.\n"
"--time-limit TIME\n"
" Set the maximum recording time, in seconds. Default / maximum is %d.\n"
- "--rotate\n"
- " Rotate the output 90 degrees.\n"
"--verbose\n"
" Display interesting information on stdout.\n"
"--help\n"
@@ -637,7 +735,7 @@ static void usage() {
"\n"
"Recording continues until Ctrl-C is hit or the time limit is reached.\n"
"\n",
- gBitRate / 1000000, gTimeLimitSec
+ kVersionMajor, kVersionMinor, gBitRate / 1000000, gTimeLimitSec
);
}
@@ -646,13 +744,16 @@ static void usage() {
*/
int main(int argc, char* const argv[]) {
static const struct option longOptions[] = {
- { "help", no_argument, NULL, 'h' },
- { "verbose", no_argument, NULL, 'v' },
- { "size", required_argument, NULL, 's' },
- { "bit-rate", required_argument, NULL, 'b' },
- { "time-limit", required_argument, NULL, 't' },
- { "rotate", no_argument, NULL, 'r' },
- { NULL, 0, NULL, 0 }
+ { "help", no_argument, NULL, 'h' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "size", required_argument, NULL, 's' },
+ { "bit-rate", required_argument, NULL, 'b' },
+ { "time-limit", required_argument, NULL, 't' },
+ { "show-device-info", no_argument, NULL, 'i' },
+ { "show-frame-time", no_argument, NULL, 'f' },
+ { "bugreport", no_argument, NULL, 'u' },
+ { "rotate", no_argument, NULL, 'r' },
+ { NULL, 0, NULL, 0 }
};
while (true) {
@@ -684,7 +785,9 @@ int main(int argc, char* const argv[]) {
gSizeSpecified = true;
break;
case 'b':
- gBitRate = atoi(optarg);
+ if (parseValueWithUnit(optarg, &gBitRate) != NO_ERROR) {
+ return 2;
+ }
if (gBitRate < kMinBitRate || gBitRate > kMaxBitRate) {
fprintf(stderr,
"Bit rate %dbps outside acceptable range [%d,%d]\n",
@@ -701,7 +804,18 @@ int main(int argc, char* const argv[]) {
return 2;
}
break;
+ case 'i':
+ gWantInfoScreen = true;
+ break;
+ case 'f':
+ gWantFrameTime = true;
+ break;
+ case 'u':
+ gWantInfoScreen = true;
+ gWantFrameTime = true;
+ break;
case 'r':
+ // experimental feature
gRotate = true;
break;
default:
diff --git a/cmds/screenrecord/screenrecord.h b/cmds/screenrecord/screenrecord.h
new file mode 100644
index 0000000..95e8a68
--- /dev/null
+++ b/cmds/screenrecord/screenrecord.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2013 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 SCREENRECORD_SCREENRECORD_H
+#define SCREENRECORD_SCREENRECORD_H
+
+#define kVersionMajor 1
+#define kVersionMinor 1
+
+#endif /*SCREENRECORD_SCREENRECORD_H*/
diff --git a/include/camera/CameraMetadata.h b/include/camera/CameraMetadata.h
index fe2bd19..1254d3c 100644
--- a/include/camera/CameraMetadata.h
+++ b/include/camera/CameraMetadata.h
@@ -99,6 +99,11 @@ class CameraMetadata {
status_t append(const CameraMetadata &other);
/**
+ * Append metadata from a raw camera_metadata buffer
+ */
+ status_t append(const camera_metadata* other);
+
+ /**
* Number of metadata entries.
*/
size_t entryCount() const;
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h
index f2f9c22..f379ee5 100644
--- a/include/media/AudioTrack.h
+++ b/include/media/AudioTrack.h
@@ -187,7 +187,8 @@ public:
int notificationFrames = 0,
int sessionId = 0,
transfer_type transferType = TRANSFER_DEFAULT,
- const audio_offload_info_t *offloadInfo = NULL);
+ const audio_offload_info_t *offloadInfo = NULL,
+ int uid = -1);
/* Creates an audio track and registers it with AudioFlinger.
* With this constructor, the track is configured for static buffer mode.
@@ -211,7 +212,8 @@ public:
int notificationFrames = 0,
int sessionId = 0,
transfer_type transferType = TRANSFER_DEFAULT,
- const audio_offload_info_t *offloadInfo = NULL);
+ const audio_offload_info_t *offloadInfo = NULL,
+ int uid = -1);
/* Terminates the AudioTrack and unregisters it from AudioFlinger.
* Also destroys all resources associated with the AudioTrack.
@@ -248,7 +250,8 @@ public:
bool threadCanCallJava = false,
int sessionId = 0,
transfer_type transferType = TRANSFER_DEFAULT,
- const audio_offload_info_t *offloadInfo = NULL);
+ const audio_offload_info_t *offloadInfo = NULL,
+ int uid = -1);
/* Result of constructing the AudioTrack. This must be checked for successful initialization
* before using any AudioTrack API (except for set()), because using
@@ -751,6 +754,7 @@ private:
sp<DeathNotifier> mDeathNotifier;
uint32_t mSequence; // incremented for each new IAudioTrack attempt
audio_io_handle_t mOutput; // cached output io handle
+ int mClientUid;
};
class TimedAudioTrack : public AudioTrack
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
index eaf7780..899d79f 100644
--- a/include/media/IAudioFlinger.h
+++ b/include/media/IAudioFlinger.h
@@ -74,6 +74,7 @@ public:
// output: server's description of IAudioTrack for display in logs.
// Don't attempt to parse, as the format could change.
String8& name,
+ int clientUid,
status_t *status) = 0;
virtual sp<IAudioRecord> openRecord(
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
index 3b151ef..cc244f0 100644
--- a/include/media/MediaPlayerInterface.h
+++ b/include/media/MediaPlayerInterface.h
@@ -99,6 +99,7 @@ public:
virtual status_t getPosition(uint32_t *position) const = 0;
virtual status_t getFramesWritten(uint32_t *frameswritten) const = 0;
virtual int getSessionId() const = 0;
+ virtual audio_stream_type_t getAudioStreamType() const = 0;
// If no callback is specified, use the "write" API below to submit
// audio data.
diff --git a/include/media/stagefright/ACodec.h b/include/media/stagefright/ACodec.h
index a8ffd4a..e796ab3 100644
--- a/include/media/stagefright/ACodec.h
+++ b/include/media/stagefright/ACodec.h
@@ -264,6 +264,7 @@ private:
status_t setupMPEG4EncoderParameters(const sp<AMessage> &msg);
status_t setupH263EncoderParameters(const sp<AMessage> &msg);
status_t setupAVCEncoderParameters(const sp<AMessage> &msg);
+ status_t setupVPXEncoderParameters(const sp<AMessage> &msg);
status_t verifySupportForProfileAndLevel(int32_t profile, int32_t level);
diff --git a/include/media/stagefright/CameraSourceTimeLapse.h b/include/media/stagefright/CameraSourceTimeLapse.h
index 6b7a63c..34213be 100644
--- a/include/media/stagefright/CameraSourceTimeLapse.h
+++ b/include/media/stagefright/CameraSourceTimeLapse.h
@@ -41,7 +41,8 @@ public:
Size videoSize,
int32_t videoFrameRate,
const sp<IGraphicBufferProducer>& surface,
- int64_t timeBetweenTimeLapseFrameCaptureUs);
+ int64_t timeBetweenTimeLapseFrameCaptureUs,
+ bool storeMetaDataInVideoBuffers = true);
virtual ~CameraSourceTimeLapse();
@@ -116,7 +117,8 @@ private:
Size videoSize,
int32_t videoFrameRate,
const sp<IGraphicBufferProducer>& surface,
- int64_t timeBetweenTimeLapseFrameCaptureUs);
+ int64_t timeBetweenTimeLapseFrameCaptureUs,
+ bool storeMetaDataInVideoBuffers = true);
// Wrapper over CameraSource::signalBufferReturned() to implement quick stop.
// It only handles the case when mLastReadBufferCopy is signalled. Otherwise
diff --git a/include/media/stagefright/DataSource.h b/include/media/stagefright/DataSource.h
index 742bc0e..157b1aa 100644
--- a/include/media/stagefright/DataSource.h
+++ b/include/media/stagefright/DataSource.h
@@ -80,7 +80,6 @@ public:
const sp<DataSource> &source, String8 *mimeType,
float *confidence, sp<AMessage> *meta);
- static void RegisterSniffer(SnifferFunc func);
static void RegisterDefaultSniffers();
// for DRM
@@ -101,6 +100,9 @@ protected:
private:
static Mutex gSnifferMutex;
static List<SnifferFunc> gSniffers;
+ static bool gSniffersRegistered;
+
+ static void RegisterSniffer_l(SnifferFunc func);
DataSource(const DataSource &);
DataSource &operator=(const DataSource &);
diff --git a/include/media/stagefright/Utils.h b/include/media/stagefright/Utils.h
index c24f612..bbad271 100644
--- a/include/media/stagefright/Utils.h
+++ b/include/media/stagefright/Utils.h
@@ -57,7 +57,8 @@ status_t mapMimeToAudioFormat(audio_format_t& format, const char* mime);
status_t sendMetaDataToHal(sp<MediaPlayerBase::AudioSink>& sink, const sp<MetaData>& meta);
// Check whether the stream defined by meta can be offloaded to hardware
-bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, bool isStreaming);
+bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo,
+ bool isStreaming, audio_stream_type_t streamType);
} // namespace android
diff --git a/include/private/media/AudioTrackShared.h b/include/private/media/AudioTrackShared.h
index 395f164..7fd9379 100644
--- a/include/private/media/AudioTrackShared.h
+++ b/include/private/media/AudioTrackShared.h
@@ -360,6 +360,7 @@ public:
// which must be > 0.
// buffer->mNonContig is unused.
// buffer->mRaw is unused.
+ // ackFlush is true iff being called from Track::start to acknowledge a pending flush.
// On exit:
// buffer->mFrameCount has the actual number of contiguous available frames,
// which is always 0 when the return status != NO_ERROR.
@@ -370,7 +371,7 @@ public:
// NO_ERROR Success, buffer->mFrameCount > 0.
// WOULD_BLOCK No frames are available.
// NO_INIT Shared memory is corrupt.
- virtual status_t obtainBuffer(Buffer* buffer);
+ virtual status_t obtainBuffer(Buffer* buffer, bool ackFlush = false);
// Release (some of) the frames last obtained.
// On entry, buffer->mFrameCount should have the number of frames to release,
@@ -437,7 +438,7 @@ protected:
public:
virtual size_t framesReady();
virtual void framesReadyIsCalledByMultipleThreads();
- virtual status_t obtainBuffer(Buffer* buffer);
+ virtual status_t obtainBuffer(Buffer* buffer, bool ackFlush);
virtual void releaseBuffer(Buffer* buffer);
virtual void tallyUnderrunFrames(uint32_t frameCount);
virtual uint32_t getUnderrunFrames() const { return 0; }
diff --git a/libvideoeditor/lvpp/VideoEditorPlayer.h b/libvideoeditor/lvpp/VideoEditorPlayer.h
index ab6d731..5862c08 100755
--- a/libvideoeditor/lvpp/VideoEditorPlayer.h
+++ b/libvideoeditor/lvpp/VideoEditorPlayer.h
@@ -62,6 +62,7 @@ class VideoEditorPlayer : public MediaPlayerInterface {
virtual void pause();
virtual void close();
void setAudioStreamType(audio_stream_type_t streamType) { mStreamType = streamType; }
+ virtual audio_stream_type_t getAudioStreamType() const { return mStreamType; }
void setVolume(float left, float right);
virtual status_t dump(int fd,const Vector<String16>& args) const;
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 2965b73..9730b03 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -101,7 +101,8 @@ AudioTrack::AudioTrack(
int notificationFrames,
int sessionId,
transfer_type transferType,
- const audio_offload_info_t *offloadInfo)
+ const audio_offload_info_t *offloadInfo,
+ int uid)
: mStatus(NO_INIT),
mIsTimed(false),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
@@ -109,7 +110,8 @@ AudioTrack::AudioTrack(
{
mStatus = set(streamType, sampleRate, format, channelMask,
frameCount, flags, cbf, user, notificationFrames,
- 0 /*sharedBuffer*/, false /*threadCanCallJava*/, sessionId, transferType, offloadInfo);
+ 0 /*sharedBuffer*/, false /*threadCanCallJava*/, sessionId, transferType,
+ offloadInfo, uid);
}
AudioTrack::AudioTrack(
@@ -124,7 +126,8 @@ AudioTrack::AudioTrack(
int notificationFrames,
int sessionId,
transfer_type transferType,
- const audio_offload_info_t *offloadInfo)
+ const audio_offload_info_t *offloadInfo,
+ int uid)
: mStatus(NO_INIT),
mIsTimed(false),
mPreviousPriority(ANDROID_PRIORITY_NORMAL),
@@ -132,7 +135,7 @@ AudioTrack::AudioTrack(
{
mStatus = set(streamType, sampleRate, format, channelMask,
0 /*frameCount*/, flags, cbf, user, notificationFrames,
- sharedBuffer, false /*threadCanCallJava*/, sessionId, transferType, offloadInfo);
+ sharedBuffer, false /*threadCanCallJava*/, sessionId, transferType, offloadInfo, uid);
}
AudioTrack::~AudioTrack()
@@ -169,7 +172,8 @@ status_t AudioTrack::set(
bool threadCanCallJava,
int sessionId,
transfer_type transferType,
- const audio_offload_info_t *offloadInfo)
+ const audio_offload_info_t *offloadInfo,
+ int uid)
{
switch (transferType) {
case TRANSFER_DEFAULT:
@@ -313,6 +317,11 @@ status_t AudioTrack::set(
mNotificationFramesReq = notificationFrames;
mNotificationFramesAct = 0;
mSessionId = sessionId;
+ if (uid == -1 || (IPCThreadState::self()->getCallingPid() != getpid())) {
+ mClientUid = IPCThreadState::self()->getCallingUid();
+ } else {
+ mClientUid = uid;
+ }
mAuxEffectId = 0;
mFlags = flags;
mCbf = cbf;
@@ -963,6 +972,7 @@ status_t AudioTrack::createTrack_l(
tid,
&mSessionId,
mName,
+ mClientUid,
&status);
if (track == 0) {
diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp
index da73d65..caa7900 100644
--- a/media/libmedia/AudioTrackShared.cpp
+++ b/media/libmedia/AudioTrackShared.cpp
@@ -506,7 +506,7 @@ ServerProxy::ServerProxy(audio_track_cblk_t* cblk, void *buffers, size_t frameCo
{
}
-status_t ServerProxy::obtainBuffer(Buffer* buffer)
+status_t ServerProxy::obtainBuffer(Buffer* buffer, bool ackFlush)
{
LOG_ALWAYS_FATAL_IF(buffer == NULL || buffer->mFrameCount == 0);
if (mIsShutdown) {
@@ -579,7 +579,11 @@ status_t ServerProxy::obtainBuffer(Buffer* buffer)
buffer->mRaw = part1 > 0 ?
&((char *) mBuffers)[(mIsOut ? front : rear) * mFrameSize] : NULL;
buffer->mNonContig = availToServer - part1;
- mUnreleased = part1;
+ // After flush(), allow releaseBuffer() on a previously obtained buffer;
+ // see "Acknowledge any pending flush()" in audioflinger/Tracks.cpp.
+ if (!ackFlush) {
+ mUnreleased = part1;
+ }
return part1 > 0 ? NO_ERROR : WOULD_BLOCK;
}
no_init:
@@ -761,7 +765,7 @@ ssize_t StaticAudioTrackServerProxy::pollPosition()
return (ssize_t) position;
}
-status_t StaticAudioTrackServerProxy::obtainBuffer(Buffer* buffer)
+status_t StaticAudioTrackServerProxy::obtainBuffer(Buffer* buffer, bool ackFlush)
{
if (mIsShutdown) {
buffer->mFrameCount = 0;
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index 448a82e..acfaea0 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -96,6 +96,7 @@ public:
pid_t tid,
int *sessionId,
String8& name,
+ int clientUid,
status_t *status)
{
Parcel data, reply;
@@ -121,6 +122,7 @@ public:
lSessionId = *sessionId;
}
data.writeInt32(lSessionId);
+ data.writeInt32(clientUid);
status_t lStatus = remote()->transact(CREATE_TRACK, data, &reply);
if (lStatus != NO_ERROR) {
ALOGE("createTrack error: %s", strerror(-lStatus));
@@ -762,6 +764,7 @@ status_t BnAudioFlinger::onTransact(
audio_io_handle_t output = (audio_io_handle_t) data.readInt32();
pid_t tid = (pid_t) data.readInt32();
int sessionId = data.readInt32();
+ int clientUid = data.readInt32();
String8 name;
status_t status;
sp<IAudioTrack> track;
@@ -773,7 +776,7 @@ status_t BnAudioFlinger::onTransact(
track = createTrack(
(audio_stream_type_t) streamType, sampleRate, format,
channelMask, frameCount, &flags, buffer, output, tid,
- &sessionId, name, &status);
+ &sessionId, name, clientUid, &status);
}
reply->writeInt32(flags);
reply->writeInt32(sessionId);
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 9553458..cd052e6 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -590,7 +590,7 @@ sp<MediaPlayerBase> MediaPlayerService::Client::setDataSource_pre(
}
if (!p->hardwareOutput()) {
- mAudioOutput = new AudioOutput(mAudioSessionId);
+ mAudioOutput = new AudioOutput(mAudioSessionId, IPCThreadState::self()->getCallingUid());
static_cast<MediaPlayerInterface*>(p.get())->setAudioSink(mAudioOutput);
}
@@ -1296,12 +1296,13 @@ Exit:
#undef LOG_TAG
#define LOG_TAG "AudioSink"
-MediaPlayerService::AudioOutput::AudioOutput(int sessionId)
+MediaPlayerService::AudioOutput::AudioOutput(int sessionId, int uid)
: mCallback(NULL),
mCallbackCookie(NULL),
mCallbackData(NULL),
mBytesWritten(0),
mSessionId(sessionId),
+ mUid(uid),
mFlags(AUDIO_OUTPUT_FLAG_NONE) {
ALOGV("AudioOutput(%d)", sessionId);
mStreamType = AUDIO_STREAM_MUSIC;
@@ -1549,7 +1550,8 @@ status_t MediaPlayerService::AudioOutput::open(
0, // notification frames
mSessionId,
AudioTrack::TRANSFER_CALLBACK,
- offloadInfo);
+ offloadInfo,
+ mUid);
} else {
t = new AudioTrack(
mStreamType,
@@ -1558,10 +1560,13 @@ status_t MediaPlayerService::AudioOutput::open(
channelMask,
frameCount,
flags,
- NULL,
- NULL,
- 0,
- mSessionId);
+ NULL, // callback
+ NULL, // user data
+ 0, // notification frames
+ mSessionId,
+ AudioTrack::TRANSFER_DEFAULT,
+ NULL, // offload info
+ mUid);
}
if ((t == 0) || (t->initCheck() != NO_ERROR)) {
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index 21f4117..a486cb5 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -72,7 +72,7 @@ class MediaPlayerService : public BnMediaPlayerService
class CallbackData;
public:
- AudioOutput(int sessionId);
+ AudioOutput(int sessionId, int uid);
virtual ~AudioOutput();
virtual bool ready() const { return mTrack != 0; }
@@ -100,7 +100,10 @@ class MediaPlayerService : public BnMediaPlayerService
virtual void flush();
virtual void pause();
virtual void close();
- void setAudioStreamType(audio_stream_type_t streamType) { mStreamType = streamType; }
+ void setAudioStreamType(audio_stream_type_t streamType) {
+ mStreamType = streamType; }
+ virtual audio_stream_type_t getAudioStreamType() const { return mStreamType; }
+
void setVolume(float left, float right);
virtual status_t setPlaybackRatePermille(int32_t ratePermille);
status_t setAuxEffectSendLevel(float level);
@@ -135,6 +138,7 @@ class MediaPlayerService : public BnMediaPlayerService
uint32_t mSampleRateHz; // sample rate of the content, as set in open()
float mMsecsPerFrame;
int mSessionId;
+ int mUid;
float mSendLevel;
int mAuxEffectId;
static bool mIsOnEmulator;
@@ -206,6 +210,9 @@ class MediaPlayerService : public BnMediaPlayerService
virtual void pause() {}
virtual void close() {}
void setAudioStreamType(audio_stream_type_t streamType) {}
+ // stream type is not used for AudioCache
+ virtual audio_stream_type_t getAudioStreamType() const { return AUDIO_STREAM_DEFAULT; }
+
void setVolume(float left, float right) {}
virtual status_t setPlaybackRatePermille(int32_t ratePermille) { return INVALID_OPERATION; }
uint32_t sampleRate() const { return mSampleRate; }
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index 095d5ca..f9d9020 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -70,8 +70,9 @@ StagefrightRecorder::StagefrightRecorder()
mOutputFd(-1),
mAudioSource(AUDIO_SOURCE_CNT),
mVideoSource(VIDEO_SOURCE_LIST_END),
- mStarted(false), mSurfaceMediaSource(NULL),
- mCaptureTimeLapse(false) {
+ mCaptureTimeLapse(false),
+ mStarted(false),
+ mSurfaceMediaSource(NULL) {
ALOGV("Constructor");
reset();
@@ -1089,7 +1090,22 @@ void StagefrightRecorder::clipVideoFrameWidth() {
}
}
-status_t StagefrightRecorder::checkVideoEncoderCapabilities() {
+status_t StagefrightRecorder::checkVideoEncoderCapabilities(
+ bool *supportsCameraSourceMetaDataMode) {
+ /* hardware codecs must support camera source meta data mode */
+ Vector<CodecCapabilities> codecs;
+ OMXClient client;
+ CHECK_EQ(client.connect(), (status_t)OK);
+ QueryCodecs(
+ client.interface(),
+ (mVideoEncoder == VIDEO_ENCODER_H263 ? MEDIA_MIMETYPE_VIDEO_H263 :
+ mVideoEncoder == VIDEO_ENCODER_MPEG_4_SP ? MEDIA_MIMETYPE_VIDEO_MPEG4 :
+ mVideoEncoder == VIDEO_ENCODER_H264 ? MEDIA_MIMETYPE_VIDEO_AVC : ""),
+ false /* decoder */, true /* hwCodec */, &codecs);
+ *supportsCameraSourceMetaDataMode = codecs.size() > 0;
+ ALOGV("encoder %s camera source meta-data mode",
+ *supportsCameraSourceMetaDataMode ? "supports" : "DOES NOT SUPPORT");
+
if (!mCaptureTimeLapse) {
// Dont clip for time lapse capture as encoder will have enough
// time to encode because of slow capture rate of time lapse.
@@ -1307,7 +1323,9 @@ status_t StagefrightRecorder::setupSurfaceMediaSource() {
status_t StagefrightRecorder::setupCameraSource(
sp<CameraSource> *cameraSource) {
status_t err = OK;
- if ((err = checkVideoEncoderCapabilities()) != OK) {
+ bool encoderSupportsCameraSourceMetaDataMode;
+ if ((err = checkVideoEncoderCapabilities(
+ &encoderSupportsCameraSourceMetaDataMode)) != OK) {
return err;
}
Size videoSize;
@@ -1323,13 +1341,14 @@ status_t StagefrightRecorder::setupCameraSource(
mCameraSourceTimeLapse = CameraSourceTimeLapse::CreateFromCamera(
mCamera, mCameraProxy, mCameraId, mClientName, mClientUid,
videoSize, mFrameRate, mPreviewSurface,
- mTimeBetweenTimeLapseFrameCaptureUs);
+ mTimeBetweenTimeLapseFrameCaptureUs,
+ encoderSupportsCameraSourceMetaDataMode);
*cameraSource = mCameraSourceTimeLapse;
} else {
*cameraSource = CameraSource::CreateFromCamera(
mCamera, mCameraProxy, mCameraId, mClientName, mClientUid,
videoSize, mFrameRate,
- mPreviewSurface, true /*storeMetaDataInVideoBuffers*/);
+ mPreviewSurface, encoderSupportsCameraSourceMetaDataMode);
}
mCamera.clear();
mCameraProxy.clear();
diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h
index c864207..31f09e0 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.h
+++ b/media/libmediaplayerservice/StagefrightRecorder.h
@@ -139,7 +139,8 @@ private:
status_t startRTPRecording();
status_t startMPEG2TSRecording();
sp<MediaSource> createAudioSource();
- status_t checkVideoEncoderCapabilities();
+ status_t checkVideoEncoderCapabilities(
+ bool *supportsCameraSourceMetaDataMode);
status_t checkAudioEncoderCapabilities();
// Generic MediaSource set-up. Returns the appropriate
// source (CameraSource or SurfaceMediaSource)
diff --git a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
index d8b35d7..f1782cc 100644
--- a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
@@ -201,7 +201,16 @@ void NuPlayer::HTTPLiveSource::onSessionNotify(const sp<AMessage> &msg) {
switch (what) {
case LiveSession::kWhatPrepared:
{
- notifyVideoSizeChanged(0, 0);
+ // notify the current size here if we have it, otherwise report an initial size of (0,0)
+ sp<AMessage> format = getFormat(false /* audio */);
+ int32_t width;
+ int32_t height;
+ if (format != NULL &&
+ format->findInt32("width", &width) && format->findInt32("height", &height)) {
+ notifyVideoSizeChanged(width, height);
+ } else {
+ notifyVideoSizeChanged(0, 0);
+ }
uint32_t flags = FLAG_CAN_PAUSE;
if (mLiveSession->isSeekable()) {
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 1adab38..528fdb9 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -1909,6 +1909,11 @@ status_t ACodec::setupVideoEncoder(const char *mime, const sp<AMessage> &msg) {
err = setupAVCEncoderParameters(msg);
break;
+ case OMX_VIDEO_CodingVP8:
+ case OMX_VIDEO_CodingVP9:
+ err = setupVPXEncoderParameters(msg);
+ break;
+
default:
break;
}
@@ -2240,6 +2245,17 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) {
return configureBitrate(bitrate, bitrateMode);
}
+status_t ACodec::setupVPXEncoderParameters(const sp<AMessage> &msg) {
+ int32_t bitrate;
+ if (!msg->findInt32("bitrate", &bitrate)) {
+ return INVALID_OPERATION;
+ }
+
+ OMX_VIDEO_CONTROLRATETYPE bitrateMode = getBitrateMode(msg);
+
+ return configureBitrate(bitrate, bitrateMode);
+}
+
status_t ACodec::verifySupportForProfileAndLevel(
int32_t profile, int32_t level) {
OMX_VIDEO_PARAM_PROFILELEVELTYPE params;
@@ -3072,11 +3088,16 @@ void ACodec::BaseState::onInputBufferFilled(const sp<AMessage> &msg) {
/* these are unfilled buffers returned by client */
CHECK(msg->findInt32("err", &err));
- ALOGV("[%s] saw error %d instead of an input buffer",
- mCodec->mComponentName.c_str(), err);
+ if (err == OK) {
+ /* buffers with no errors are returned on MediaCodec.flush */
+ mode = KEEP_BUFFERS;
+ } else {
+ ALOGV("[%s] saw error %d instead of an input buffer",
+ mCodec->mComponentName.c_str(), err);
+ eos = true;
+ }
buffer.clear();
- mode = KEEP_BUFFERS;
}
int32_t tmp;
diff --git a/media/libstagefright/AudioSource.cpp b/media/libstagefright/AudioSource.cpp
index bdd842f..d7223d9 100644
--- a/media/libstagefright/AudioSource.cpp
+++ b/media/libstagefright/AudioSource.cpp
@@ -236,10 +236,10 @@ status_t AudioSource::read(
memset((uint8_t *) buffer->data(), 0, buffer->range_length());
} else if (elapsedTimeUs < kAutoRampStartUs + kAutoRampDurationUs) {
int32_t autoRampDurationFrames =
- (kAutoRampDurationUs * mSampleRate + 500000LL) / 1000000LL;
+ ((int64_t)kAutoRampDurationUs * mSampleRate + 500000LL) / 1000000LL; //Need type casting
int32_t autoRampStartFrames =
- (kAutoRampStartUs * mSampleRate + 500000LL) / 1000000LL;
+ ((int64_t)kAutoRampStartUs * mSampleRate + 500000LL) / 1000000LL; //Need type casting
int32_t nFrames = mNumFramesReceived - autoRampStartFrames;
rampVolume(nFrames, autoRampDurationFrames,
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index c912f75..130207d 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -606,6 +606,9 @@ void AwesomePlayer::reset_l() {
mWatchForAudioSeekComplete = false;
mWatchForAudioEOS = false;
+
+ mMediaRenderingStartGeneration = 0;
+ mStartGeneration = 0;
}
void AwesomePlayer::notifyListener_l(int msg, int ext1, int ext2) {
@@ -798,7 +801,7 @@ void AwesomePlayer::onBufferingUpdate() {
}
}
- if (mFlags & (PLAYING | PREPARING)) {
+ if (mFlags & (PLAYING | PREPARING | CACHE_UNDERRUN)) {
postBufferingEvent_l();
}
}
@@ -895,6 +898,8 @@ status_t AwesomePlayer::play_l() {
return OK;
}
+ mMediaRenderingStartGeneration = ++mStartGeneration;
+
if (!(mFlags & PREPARED)) {
status_t err = prepare_l();
@@ -1197,8 +1202,7 @@ void AwesomePlayer::initRenderer_l() {
setVideoScalingMode_l(mVideoScalingMode);
if (USE_SURFACE_ALLOC
&& !strncmp(component, "OMX.", 4)
- && strncmp(component, "OMX.google.", 11)
- && strcmp(component, "OMX.Nvidia.mpeg2v.decode")) {
+ && strncmp(component, "OMX.google.", 11)) {
// Hardware decoders avoid the CPU color conversion by decoding
// directly to ANativeBuffers, so we must use a renderer that
// just pushes those buffers to the ANativeWindow.
@@ -1495,7 +1499,13 @@ status_t AwesomePlayer::initAudioDecoder() {
// This doesn't guarantee that the hardware has a free stream
// but it avoids us attempting to open (and re-open) an offload
// stream to hardware that doesn't have the necessary codec
- mOffloadAudio = canOffloadStream(meta, (mVideoSource != NULL), isStreamingHTTP());
+ audio_stream_type_t streamType = AUDIO_STREAM_MUSIC;
+ if (mAudioSink != NULL) {
+ streamType = mAudioSink->getAudioStreamType();
+ }
+
+ mOffloadAudio = canOffloadStream(meta, (mVideoSource != NULL),
+ isStreamingHTTP(), streamType);
if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_RAW)) {
ALOGV("createAudioPlayer: bypass OMX (raw)");
@@ -1927,7 +1937,7 @@ void AwesomePlayer::onVideoEvent() {
++mStats.mNumVideoFramesDropped;
}
- postVideoEvent_l();
+ postVideoEvent_l(0);
return;
}
}
@@ -1967,6 +1977,41 @@ void AwesomePlayer::onVideoEvent() {
return;
}
+ /* get next frame time */
+ if (wasSeeking == NO_SEEK) {
+ MediaSource::ReadOptions options;
+ for (;;) {
+ status_t err = mVideoSource->read(&mVideoBuffer, &options);
+ if (err != OK) {
+ // deal with any errors next time
+ CHECK(mVideoBuffer == NULL);
+ postVideoEvent_l(0);
+ return;
+ }
+
+ if (mVideoBuffer->range_length() != 0) {
+ break;
+ }
+
+ // Some decoders, notably the PV AVC software decoder
+ // return spurious empty buffers that we just want to ignore.
+
+ mVideoBuffer->release();
+ mVideoBuffer = NULL;
+ }
+
+ {
+ Mutex::Autolock autoLock(mStatsLock);
+ ++mStats.mNumVideoFramesDecoded;
+ }
+
+ int64_t nextTimeUs;
+ CHECK(mVideoBuffer->meta_data()->findInt64(kKeyTime, &nextTimeUs));
+ int64_t delayUs = nextTimeUs - ts->getRealTimeUs() + mTimeSourceDeltaUs;
+ postVideoEvent_l(delayUs > 10000 ? 10000 : delayUs < 0 ? 0 : delayUs);
+ return;
+ }
+
postVideoEvent_l();
}
diff --git a/media/libstagefright/CameraSourceTimeLapse.cpp b/media/libstagefright/CameraSourceTimeLapse.cpp
index 20214e8..5772316 100644
--- a/media/libstagefright/CameraSourceTimeLapse.cpp
+++ b/media/libstagefright/CameraSourceTimeLapse.cpp
@@ -41,13 +41,15 @@ CameraSourceTimeLapse *CameraSourceTimeLapse::CreateFromCamera(
Size videoSize,
int32_t videoFrameRate,
const sp<IGraphicBufferProducer>& surface,
- int64_t timeBetweenFrameCaptureUs) {
+ int64_t timeBetweenFrameCaptureUs,
+ bool storeMetaDataInVideoBuffers) {
CameraSourceTimeLapse *source = new
CameraSourceTimeLapse(camera, proxy, cameraId,
clientName, clientUid,
videoSize, videoFrameRate, surface,
- timeBetweenFrameCaptureUs);
+ timeBetweenFrameCaptureUs,
+ storeMetaDataInVideoBuffers);
if (source != NULL) {
if (source->initCheck() != OK) {
@@ -67,9 +69,11 @@ CameraSourceTimeLapse::CameraSourceTimeLapse(
Size videoSize,
int32_t videoFrameRate,
const sp<IGraphicBufferProducer>& surface,
- int64_t timeBetweenFrameCaptureUs)
+ int64_t timeBetweenFrameCaptureUs,
+ bool storeMetaDataInVideoBuffers)
: CameraSource(camera, proxy, cameraId, clientName, clientUid,
- videoSize, videoFrameRate, surface, true),
+ videoSize, videoFrameRate, surface,
+ storeMetaDataInVideoBuffers),
mTimeBetweenTimeLapseVideoFramesUs(1E6/videoFrameRate),
mLastTimeLapseFrameRealTimestampUs(0),
mSkipCurrentFrame(false) {
diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp
index fc6fd9c..97987e2 100644
--- a/media/libstagefright/DataSource.cpp
+++ b/media/libstagefright/DataSource.cpp
@@ -107,6 +107,7 @@ status_t DataSource::getSize(off64_t *size) {
Mutex DataSource::gSnifferMutex;
List<DataSource::SnifferFunc> DataSource::gSniffers;
+bool DataSource::gSniffersRegistered = false;
bool DataSource::sniff(
String8 *mimeType, float *confidence, sp<AMessage> *meta) {
@@ -114,7 +115,13 @@ bool DataSource::sniff(
*confidence = 0.0f;
meta->clear();
- Mutex::Autolock autoLock(gSnifferMutex);
+ {
+ Mutex::Autolock autoLock(gSnifferMutex);
+ if (!gSniffersRegistered) {
+ return false;
+ }
+ }
+
for (List<SnifferFunc>::iterator it = gSniffers.begin();
it != gSniffers.end(); ++it) {
String8 newMimeType;
@@ -133,9 +140,7 @@ bool DataSource::sniff(
}
// static
-void DataSource::RegisterSniffer(SnifferFunc func) {
- Mutex::Autolock autoLock(gSnifferMutex);
-
+void DataSource::RegisterSniffer_l(SnifferFunc func) {
for (List<SnifferFunc>::iterator it = gSniffers.begin();
it != gSniffers.end(); ++it) {
if (*it == func) {
@@ -148,23 +153,29 @@ void DataSource::RegisterSniffer(SnifferFunc func) {
// static
void DataSource::RegisterDefaultSniffers() {
- RegisterSniffer(SniffMPEG4);
- RegisterSniffer(SniffMatroska);
- RegisterSniffer(SniffOgg);
- RegisterSniffer(SniffWAV);
- RegisterSniffer(SniffFLAC);
- RegisterSniffer(SniffAMR);
- RegisterSniffer(SniffMPEG2TS);
- RegisterSniffer(SniffMP3);
- RegisterSniffer(SniffAAC);
- RegisterSniffer(SniffMPEG2PS);
- RegisterSniffer(SniffWVM);
+ Mutex::Autolock autoLock(gSnifferMutex);
+ if (gSniffersRegistered) {
+ return;
+ }
+
+ RegisterSniffer_l(SniffMPEG4);
+ RegisterSniffer_l(SniffMatroska);
+ RegisterSniffer_l(SniffOgg);
+ RegisterSniffer_l(SniffWAV);
+ RegisterSniffer_l(SniffFLAC);
+ RegisterSniffer_l(SniffAMR);
+ RegisterSniffer_l(SniffMPEG2TS);
+ RegisterSniffer_l(SniffMP3);
+ RegisterSniffer_l(SniffAAC);
+ RegisterSniffer_l(SniffMPEG2PS);
+ RegisterSniffer_l(SniffWVM);
char value[PROPERTY_VALUE_MAX];
if (property_get("drm.service.enabled", value, NULL)
&& (!strcmp(value, "1") || !strcasecmp(value, "true"))) {
- RegisterSniffer(SniffDRM);
+ RegisterSniffer_l(SniffDRM);
}
+ gSniffersRegistered = true;
}
// static
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp
index 13e22d6..9b36b6a 100644
--- a/media/libstagefright/MPEG4Extractor.cpp
+++ b/media/libstagefright/MPEG4Extractor.cpp
@@ -1386,19 +1386,33 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
} else {
// No size was specified. Pick a conservatively large size.
int32_t width, height;
- if (mLastTrack->meta->findInt32(kKeyWidth, &width) &&
- mLastTrack->meta->findInt32(kKeyHeight, &height)) {
- mLastTrack->meta->setInt32(kKeyMaxInputSize, width * height * 3 / 2);
- } else {
+ if (!mLastTrack->meta->findInt32(kKeyWidth, &width) ||
+ !mLastTrack->meta->findInt32(kKeyHeight, &height)) {
ALOGE("No width or height, assuming worst case 1080p");
- mLastTrack->meta->setInt32(kKeyMaxInputSize, 3110400);
+ width = 1920;
+ height = 1080;
+ }
+
+ const char *mime;
+ CHECK(mLastTrack->meta->findCString(kKeyMIMEType, &mime));
+ if (!strcmp(mime, MEDIA_MIMETYPE_VIDEO_AVC)) {
+ // AVC requires compression ratio of at least 2, and uses
+ // macroblocks
+ max_size = ((width + 15) / 16) * ((height + 15) / 16) * 192;
+ } else {
+ // For all other formats there is no minimum compression
+ // ratio. Use compression ratio of 1.
+ max_size = width * height * 3 / 2;
}
+ mLastTrack->meta->setInt32(kKeyMaxInputSize, max_size);
}
*offset += chunk_size;
- // Calculate average frame rate.
+ // NOTE: setting another piece of metadata invalidates any pointers (such as the
+ // mimetype) previously obtained, so don't cache them.
const char *mime;
CHECK(mLastTrack->meta->findCString(kKeyMIMEType, &mime));
+ // Calculate average frame rate.
if (!strncasecmp("video/", mime, 6)) {
size_t nSamples = mLastTrack->sampleTable->countSamples();
int64_t durationUs;
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index e299caf..8af1aaf 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -1506,7 +1506,8 @@ void MediaCodec::returnBuffersToCodecOnPort(int32_t portIndex) {
info->mOwnedByClient = false;
if (portIndex == kPortIndexInput) {
- msg->setInt32("err", ERROR_END_OF_STREAM);
+ /* no error, just returning buffers */
+ msg->setInt32("err", OK);
}
msg->post();
}
diff --git a/media/libstagefright/MetaData.cpp b/media/libstagefright/MetaData.cpp
index ae6ae2d..7b60afc 100644
--- a/media/libstagefright/MetaData.cpp
+++ b/media/libstagefright/MetaData.cpp
@@ -89,6 +89,9 @@ bool MetaData::setRect(
return setData(key, TYPE_RECT, &r, sizeof(r));
}
+/**
+ * Note that the returned pointer becomes invalid when additional metadata is set.
+ */
bool MetaData::findCString(uint32_t key, const char **value) {
uint32_t type;
const void *data;
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 7f56af8..43736ad 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -359,12 +359,7 @@ sp<MediaSource> OMXCodec::Create(
observer->setCodec(codec);
err = codec->configureCodec(meta);
-
if (err == OK) {
- if (!strcmp("OMX.Nvidia.mpeg2v.decode", componentName)) {
- codec->mFlags |= kOnlySubmitOneInputBufferAtOneTime;
- }
-
return codec;
}
@@ -1346,8 +1341,7 @@ OMXCodec::OMXCodec(
mLeftOverBuffer(NULL),
mPaused(false),
mNativeWindow(
- (!strncmp(componentName, "OMX.google.", 11)
- || !strcmp(componentName, "OMX.Nvidia.mpeg2v.decode"))
+ (!strncmp(componentName, "OMX.google.", 11))
? NULL : nativeWindow) {
mPortStatus[kPortIndexInput] = ENABLED;
mPortStatus[kPortIndexOutput] = ENABLED;
diff --git a/media/libstagefright/TimedEventQueue.cpp b/media/libstagefright/TimedEventQueue.cpp
index 6a16bb4..1a9a26b 100644
--- a/media/libstagefright/TimedEventQueue.cpp
+++ b/media/libstagefright/TimedEventQueue.cpp
@@ -38,11 +38,14 @@
namespace android {
+static int64_t kWakelockMinDelay = 100000ll; // 100ms
+
TimedEventQueue::TimedEventQueue()
: mNextEventID(1),
mRunning(false),
mStopped(false),
- mDeathRecipient(new PMDeathRecipient(this)) {
+ mDeathRecipient(new PMDeathRecipient(this)),
+ mWakeLockCount(0) {
}
TimedEventQueue::~TimedEventQueue() {
@@ -87,9 +90,7 @@ void TimedEventQueue::stop(bool flush) {
// some events may be left in the queue if we did not flush and the wake lock
// must be released.
- if (!mQueue.empty()) {
- releaseWakeLock_l();
- }
+ releaseWakeLock_l(true /*force*/);
mQueue.clear();
mRunning = false;
@@ -126,13 +127,15 @@ TimedEventQueue::event_id TimedEventQueue::postTimedEvent(
QueueItem item;
item.event = event;
item.realtime_us = realtime_us;
+ item.has_wakelock = false;
if (it == mQueue.begin()) {
mQueueHeadChangedCondition.signal();
}
- if (mQueue.empty()) {
+ if (realtime_us > ALooper::GetNowUs() + kWakelockMinDelay) {
acquireWakeLock_l();
+ item.has_wakelock = true;
}
mQueue.insert(it, item);
@@ -188,10 +191,10 @@ void TimedEventQueue::cancelEvents(
ALOGV("cancelling event %d", (*it).event->eventID());
(*it).event->setEventID(0);
- it = mQueue.erase(it);
- if (mQueue.empty()) {
+ if ((*it).has_wakelock) {
releaseWakeLock_l();
}
+ it = mQueue.erase(it);
if (stopAfterFirstMatch) {
return;
}
@@ -297,11 +300,10 @@ sp<TimedEventQueue::Event> TimedEventQueue::removeEventFromQueue_l(
if ((*it).event->eventID() == id) {
sp<Event> event = (*it).event;
event->setEventID(0);
-
- mQueue.erase(it);
- if (mQueue.empty()) {
+ if ((*it).has_wakelock) {
releaseWakeLock_l();
}
+ mQueue.erase(it);
return event;
}
}
@@ -313,51 +315,59 @@ sp<TimedEventQueue::Event> TimedEventQueue::removeEventFromQueue_l(
void TimedEventQueue::acquireWakeLock_l()
{
- if (mWakeLockToken != 0) {
- return;
- }
- if (mPowerManager == 0) {
- // use checkService() to avoid blocking if power service is not up yet
- sp<IBinder> binder =
- defaultServiceManager()->checkService(String16("power"));
- if (binder == 0) {
- ALOGW("cannot connect to the power manager service");
- } else {
- mPowerManager = interface_cast<IPowerManager>(binder);
- binder->linkToDeath(mDeathRecipient);
+ if (mWakeLockCount++ == 0) {
+ CHECK(mWakeLockToken == 0);
+ if (mPowerManager == 0) {
+ // use checkService() to avoid blocking if power service is not up yet
+ sp<IBinder> binder =
+ defaultServiceManager()->checkService(String16("power"));
+ if (binder == 0) {
+ ALOGW("cannot connect to the power manager service");
+ } else {
+ mPowerManager = interface_cast<IPowerManager>(binder);
+ binder->linkToDeath(mDeathRecipient);
+ }
}
- }
- if (mPowerManager != 0) {
- sp<IBinder> binder = new BBinder();
- int64_t token = IPCThreadState::self()->clearCallingIdentity();
- status_t status = mPowerManager->acquireWakeLock(POWERMANAGER_PARTIAL_WAKE_LOCK,
- binder,
- String16("TimedEventQueue"),
- String16("media"));
- IPCThreadState::self()->restoreCallingIdentity(token);
- if (status == NO_ERROR) {
- mWakeLockToken = binder;
+ if (mPowerManager != 0) {
+ sp<IBinder> binder = new BBinder();
+ int64_t token = IPCThreadState::self()->clearCallingIdentity();
+ status_t status = mPowerManager->acquireWakeLock(POWERMANAGER_PARTIAL_WAKE_LOCK,
+ binder,
+ String16("TimedEventQueue"),
+ String16("media"));
+ IPCThreadState::self()->restoreCallingIdentity(token);
+ if (status == NO_ERROR) {
+ mWakeLockToken = binder;
+ }
}
}
}
-void TimedEventQueue::releaseWakeLock_l()
+void TimedEventQueue::releaseWakeLock_l(bool force)
{
- if (mWakeLockToken == 0) {
- return;
+ if (force) {
+ if (mWakeLockCount == 0) {
+ return;
+ }
+ // Force wakelock release below by setting reference count to 1.
+ mWakeLockCount = 1;
}
- if (mPowerManager != 0) {
- int64_t token = IPCThreadState::self()->clearCallingIdentity();
- mPowerManager->releaseWakeLock(mWakeLockToken, 0);
- IPCThreadState::self()->restoreCallingIdentity(token);
+ CHECK(mWakeLockCount != 0);
+ if (--mWakeLockCount == 0) {
+ CHECK(mWakeLockToken != 0);
+ if (mPowerManager != 0) {
+ int64_t token = IPCThreadState::self()->clearCallingIdentity();
+ mPowerManager->releaseWakeLock(mWakeLockToken, 0);
+ IPCThreadState::self()->restoreCallingIdentity(token);
+ }
+ mWakeLockToken.clear();
}
- mWakeLockToken.clear();
}
void TimedEventQueue::clearPowerManager()
{
Mutex::Autolock _l(mLock);
- releaseWakeLock_l();
+ releaseWakeLock_l(true /*force*/);
mPowerManager.clear();
}
diff --git a/media/libstagefright/Utils.cpp b/media/libstagefright/Utils.cpp
index 4db8e80..9041c21 100644
--- a/media/libstagefright/Utils.cpp
+++ b/media/libstagefright/Utils.cpp
@@ -540,7 +540,8 @@ const struct mime_conv_t* p = &mimeLookup[0];
return BAD_VALUE;
}
-bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, bool isStreaming)
+bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo,
+ bool isStreaming, audio_stream_type_t streamType)
{
const char *mime;
CHECK(meta->findCString(kKeyMIMEType, &mime));
@@ -594,7 +595,7 @@ bool canOffloadStream(const sp<MetaData>& meta, bool hasVideo, bool isStreaming)
info.bit_rate = brate;
- info.stream_type = AUDIO_STREAM_MUSIC;
+ info.stream_type = streamType;
info.has_video = hasVideo;
info.is_streaming = isStreaming;
diff --git a/media/libstagefright/include/TimedEventQueue.h b/media/libstagefright/include/TimedEventQueue.h
index 4e49c83..38a08b1 100644
--- a/media/libstagefright/include/TimedEventQueue.h
+++ b/media/libstagefright/include/TimedEventQueue.h
@@ -118,6 +118,7 @@ private:
struct QueueItem {
sp<Event> event;
int64_t realtime_us;
+ bool has_wakelock;
};
struct StopEvent : public TimedEventQueue::Event {
@@ -139,6 +140,7 @@ private:
sp<IPowerManager> mPowerManager;
sp<IBinder> mWakeLockToken;
const sp<PMDeathRecipient> mDeathRecipient;
+ uint32_t mWakeLockCount;
static void *ThreadWrapper(void *me);
void threadEntry();
@@ -146,7 +148,7 @@ private:
sp<Event> removeEventFromQueue_l(event_id id);
void acquireWakeLock_l();
- void releaseWakeLock_l();
+ void releaseWakeLock_l(bool force = false);
TimedEventQueue(const TimedEventQueue &);
TimedEventQueue &operator=(const TimedEventQueue &);
diff --git a/media/libstagefright/mpeg2ts/ATSParser.cpp b/media/libstagefright/mpeg2ts/ATSParser.cpp
index 9850a46..175a263 100644
--- a/media/libstagefright/mpeg2ts/ATSParser.cpp
+++ b/media/libstagefright/mpeg2ts/ATSParser.cpp
@@ -1193,7 +1193,10 @@ status_t ATSParser::parseTS(ABitReader *br) {
unsigned sync_byte = br->getBits(8);
CHECK_EQ(sync_byte, 0x47u);
- MY_LOGV("transport_error_indicator = %u", br->getBits(1));
+ if (br->getBits(1)) { // transport_error_indicator
+ // silently ignore.
+ return OK;
+ }
unsigned payload_unit_start_indicator = br->getBits(1);
ALOGV("payload_unit_start_indicator = %u", payload_unit_start_indicator);
diff --git a/media/libstagefright/omx/GraphicBufferSource.cpp b/media/libstagefright/omx/GraphicBufferSource.cpp
index cf43e94..b8970ad 100644
--- a/media/libstagefright/omx/GraphicBufferSource.cpp
+++ b/media/libstagefright/omx/GraphicBufferSource.cpp
@@ -148,6 +148,18 @@ void GraphicBufferSource::omxExecuting() {
}
}
+void GraphicBufferSource::omxIdle() {
+ ALOGV("omxIdle");
+
+ Mutex::Autolock autoLock(mMutex);
+
+ if (mExecuting) {
+ // We are only interested in the transition from executing->idle,
+ // not loaded->idle.
+ mExecuting = false;
+ }
+}
+
void GraphicBufferSource::omxLoaded(){
Mutex::Autolock autoLock(mMutex);
if (!mExecuting) {
@@ -194,7 +206,9 @@ void GraphicBufferSource::addCodecBuffer(OMX_BUFFERHEADERTYPE* header) {
void GraphicBufferSource::codecBufferEmptied(OMX_BUFFERHEADERTYPE* header) {
Mutex::Autolock autoLock(mMutex);
- CHECK(mExecuting); // could this happen if app stop()s early?
+ if (!mExecuting) {
+ return;
+ }
int cbi = findMatchingCodecBuffer_l(header);
if (cbi < 0) {
@@ -213,7 +227,12 @@ void GraphicBufferSource::codecBufferEmptied(OMX_BUFFERHEADERTYPE* header) {
// see if the GraphicBuffer reference was null, which should only ever
// happen for EOS.
if (codecBuffer.mGraphicBuffer == NULL) {
- CHECK(mEndOfStream && mEndOfStreamSent);
+ if (!(mEndOfStream && mEndOfStreamSent)) {
+ // This can happen when broken code sends us the same buffer
+ // twice in a row.
+ ALOGE("ERROR: codecBufferEmptied on non-EOS null buffer "
+ "(buffer emptied twice?)");
+ }
// No GraphicBuffer to deal with, no additional input or output is
// expected, so just return.
return;
@@ -384,6 +403,23 @@ bool GraphicBufferSource::repeatLatestSubmittedBuffer_l() {
if (mLatestSubmittedBufferId < 0 || mSuspended) {
return false;
}
+ if (mBufferSlot[mLatestSubmittedBufferId] == NULL) {
+ // This can happen if the remote side disconnects, causing
+ // onBuffersReleased() to NULL out our copy of the slots. The
+ // buffer is gone, so we have nothing to show.
+ //
+ // To be on the safe side we try to release the buffer.
+ ALOGD("repeatLatestSubmittedBuffer_l: slot was NULL");
+ mBufferQueue->releaseBuffer(
+ mLatestSubmittedBufferId,
+ mLatestSubmittedBufferFrameNum,
+ EGL_NO_DISPLAY,
+ EGL_NO_SYNC_KHR,
+ Fence::NO_FENCE);
+ mLatestSubmittedBufferId = -1;
+ mLatestSubmittedBufferFrameNum = 0;
+ return false;
+ }
int cbi = findAvailableCodecBuffer_l();
if (cbi < 0) {
diff --git a/media/libstagefright/omx/GraphicBufferSource.h b/media/libstagefright/omx/GraphicBufferSource.h
index 244a843..9e5eee6 100644
--- a/media/libstagefright/omx/GraphicBufferSource.h
+++ b/media/libstagefright/omx/GraphicBufferSource.h
@@ -69,6 +69,11 @@ public:
// sitting in the BufferQueue, this will send them to the codec.
void omxExecuting();
+ // This is called when OMX transitions to OMX_StateIdle, indicating that
+ // the codec is meant to return all buffers back to the client for them
+ // to be freed. Do NOT submit any more buffers to the component.
+ void omxIdle();
+
// This is called when OMX transitions to OMX_StateLoaded, indicating that
// we are shutting down.
void omxLoaded();
diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp
index 46e5d71..5f104fc 100644
--- a/media/libstagefright/omx/OMXNodeInstance.cpp
+++ b/media/libstagefright/omx/OMXNodeInstance.cpp
@@ -243,13 +243,18 @@ status_t OMXNodeInstance::freeNode(OMXMaster *master) {
status_t OMXNodeInstance::sendCommand(
OMX_COMMANDTYPE cmd, OMX_S32 param) {
const sp<GraphicBufferSource>& bufferSource(getGraphicBufferSource());
- if (bufferSource != NULL
- && cmd == OMX_CommandStateSet
- && param == OMX_StateLoaded) {
- // Initiating transition from Executing -> Loaded
- // Buffers are about to be freed.
- bufferSource->omxLoaded();
- setGraphicBufferSource(NULL);
+ if (bufferSource != NULL && cmd == OMX_CommandStateSet) {
+ if (param == OMX_StateIdle) {
+ // Initiating transition from Executing -> Idle
+ // ACodec is waiting for all buffers to be returned, do NOT
+ // submit any more buffers to the codec.
+ bufferSource->omxIdle();
+ } else if (param == OMX_StateLoaded) {
+ // Initiating transition from Idle/Executing -> Loaded
+ // Buffers are about to be freed.
+ bufferSource->omxLoaded();
+ setGraphicBufferSource(NULL);
+ }
// fall through
}
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index a9c9b56..3132e54 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -448,6 +448,7 @@ sp<IAudioTrack> AudioFlinger::createTrack(
pid_t tid,
int *sessionId,
String8& name,
+ int clientUid,
status_t *status)
{
sp<PlaybackThread::Track> track;
@@ -483,6 +484,7 @@ sp<IAudioTrack> AudioFlinger::createTrack(
}
pid_t pid = IPCThreadState::self()->getCallingPid();
+
client = registerPid_l(pid);
ALOGV("createTrack() sessionId: %d", (sessionId == NULL) ? -2 : *sessionId);
@@ -510,7 +512,7 @@ sp<IAudioTrack> AudioFlinger::createTrack(
ALOGV("createTrack() lSessionId: %d", lSessionId);
track = thread->createTrack_l(client, streamType, sampleRate, format,
- channelMask, frameCount, sharedBuffer, lSessionId, flags, tid, &lStatus);
+ channelMask, frameCount, sharedBuffer, lSessionId, flags, tid, clientUid, &lStatus);
// move effect chain to this output thread if an effect on same session was waiting
// for a track to be created
@@ -1284,8 +1286,11 @@ sp<IAudioRecord> AudioFlinger::openRecord(
}
// create new record track.
// The record track uses one track in mHardwareMixerThread by convention.
+ // TODO: the uid should be passed in as a parameter to openRecord
recordTrack = thread->createRecordTrack_l(client, sampleRate, format, channelMask,
- frameCount, lSessionId, flags, tid, &lStatus);
+ frameCount, lSessionId,
+ IPCThreadState::self()->getCallingUid(),
+ flags, tid, &lStatus);
LOG_ALWAYS_FATAL_IF((recordTrack != 0) != (lStatus == NO_ERROR));
}
if (lStatus != NO_ERROR) {
@@ -2335,6 +2340,7 @@ status_t AudioFlinger::moveEffectChain_l(int sessionId,
strategy,
sessionId,
effect->id());
+ AudioSystem::setEffectEnabled(effect->id(), effect->isEnabled());
}
effect = chain->getEffectFromId_l(0);
}
@@ -2349,6 +2355,7 @@ status_t AudioFlinger::moveEffectChain_l(int sessionId,
strategy,
sessionId,
removed[i]->id());
+ AudioSystem::setEffectEnabled(effect->id(), effect->isEnabled());
}
}
}
diff --git a/services/audioflinger/AudioFlinger.h b/services/audioflinger/AudioFlinger.h
index 2aeb263..53e238e 100644
--- a/services/audioflinger/AudioFlinger.h
+++ b/services/audioflinger/AudioFlinger.h
@@ -109,6 +109,7 @@ public:
pid_t tid,
int *sessionId,
String8& name,
+ int clientUid,
status_t *status);
virtual sp<IAudioRecord> openRecord(
diff --git a/services/audioflinger/PlaybackTracks.h b/services/audioflinger/PlaybackTracks.h
index a2e2511..43b77f3 100644
--- a/services/audioflinger/PlaybackTracks.h
+++ b/services/audioflinger/PlaybackTracks.h
@@ -31,6 +31,7 @@ public:
size_t frameCount,
const sp<IMemory>& sharedBuffer,
int sessionId,
+ int uid,
IAudioFlinger::track_flags_t flags);
virtual ~Track();
@@ -165,7 +166,8 @@ class TimedTrack : public Track {
audio_channel_mask_t channelMask,
size_t frameCount,
const sp<IMemory>& sharedBuffer,
- int sessionId);
+ int sessionId,
+ int uid);
virtual ~TimedTrack();
class TimedBuffer {
@@ -208,7 +210,8 @@ class TimedTrack : public Track {
audio_channel_mask_t channelMask,
size_t frameCount,
const sp<IMemory>& sharedBuffer,
- int sessionId);
+ int sessionId,
+ int uid);
void timedYieldSamples_l(AudioBufferProvider::Buffer* buffer);
void timedYieldSilence_l(uint32_t numFrames,
@@ -255,7 +258,8 @@ public:
uint32_t sampleRate,
audio_format_t format,
audio_channel_mask_t channelMask,
- size_t frameCount);
+ size_t frameCount,
+ int uid);
virtual ~OutputTrack();
virtual status_t start(AudioSystem::sync_event_t event =
diff --git a/services/audioflinger/RecordTracks.h b/services/audioflinger/RecordTracks.h
index cd8f70c..57de568 100644
--- a/services/audioflinger/RecordTracks.h
+++ b/services/audioflinger/RecordTracks.h
@@ -28,7 +28,8 @@ public:
audio_format_t format,
audio_channel_mask_t channelMask,
size_t frameCount,
- int sessionId);
+ int sessionId,
+ int uid);
virtual ~RecordTrack();
virtual status_t start(AudioSystem::sync_event_t event, int triggerSession);
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 31d736a..45926b4 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -272,6 +272,7 @@ AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, audio
// mSampleRate, mFrameCount, mChannelMask, mChannelCount, mFrameSize, and mFormat are
// set by PlaybackThread::readOutputParameters() or RecordThread::readInputParameters()
mParamStatus(NO_ERROR),
+ //FIXME: mStandby should be true here. Is this some kind of hack?
mStandby(false), mOutDevice(outDevice), mInDevice(inDevice),
mAudioSource(AUDIO_SOURCE_DEFAULT), mId(id),
// mName will be set by concrete (non-virtual) subclass
@@ -503,17 +504,7 @@ String16 AudioFlinger::ThreadBase::getWakeLockTag()
void AudioFlinger::ThreadBase::acquireWakeLock_l(int uid)
{
- if (mPowerManager == 0) {
- // use checkService() to avoid blocking if power service is not up yet
- sp<IBinder> binder =
- defaultServiceManager()->checkService(String16("power"));
- if (binder == 0) {
- ALOGW("Thread %s cannot connect to the power manager service", mName);
- } else {
- mPowerManager = interface_cast<IPowerManager>(binder);
- binder->linkToDeath(mDeathRecipient);
- }
- }
+ getPowerManager_l();
if (mPowerManager != 0) {
sp<IBinder> binder = new BBinder();
status_t status;
@@ -553,6 +544,41 @@ void AudioFlinger::ThreadBase::releaseWakeLock_l()
}
}
+void AudioFlinger::ThreadBase::updateWakeLockUids(const SortedVector<int> &uids) {
+ Mutex::Autolock _l(mLock);
+ updateWakeLockUids_l(uids);
+}
+
+void AudioFlinger::ThreadBase::getPowerManager_l() {
+
+ if (mPowerManager == 0) {
+ // use checkService() to avoid blocking if power service is not up yet
+ sp<IBinder> binder =
+ defaultServiceManager()->checkService(String16("power"));
+ if (binder == 0) {
+ ALOGW("Thread %s cannot connect to the power manager service", mName);
+ } else {
+ mPowerManager = interface_cast<IPowerManager>(binder);
+ binder->linkToDeath(mDeathRecipient);
+ }
+ }
+}
+
+void AudioFlinger::ThreadBase::updateWakeLockUids_l(const SortedVector<int> &uids) {
+
+ getPowerManager_l();
+ if (mWakeLockToken == NULL) {
+ ALOGE("no wake lock to update!");
+ return;
+ }
+ if (mPowerManager != 0) {
+ sp<IBinder> binder = new BBinder();
+ status_t status;
+ status = mPowerManager->updateWakeLockUids(mWakeLockToken, uids.size(), uids.array());
+ ALOGV("acquireWakeLock_l() %s status %d", mName, status);
+ }
+}
+
void AudioFlinger::ThreadBase::clearPowerManager()
{
Mutex::Autolock _l(mLock);
@@ -977,6 +1003,7 @@ AudioFlinger::PlaybackThread::PlaybackThread(const sp<AudioFlinger>& audioFlinge
: ThreadBase(audioFlinger, id, device, AUDIO_DEVICE_NONE, type),
mNormalFrameCount(0), mMixBuffer(NULL),
mAllocMixBuffer(NULL), mSuspended(0), mBytesWritten(0),
+ mActiveTracksGeneration(0),
// mStreamTypes[] initialized in constructor body
mOutput(output),
mLastWriteTime(0), mNumWrites(0), mNumDelayedWrites(0), mInWrite(false),
@@ -1160,6 +1187,7 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac
int sessionId,
IAudioFlinger::track_flags_t *flags,
pid_t tid,
+ int uid,
status_t *status)
{
sp<Track> track;
@@ -1293,10 +1321,10 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac
if (!isTimed) {
track = new Track(this, client, streamType, sampleRate, format,
- channelMask, frameCount, sharedBuffer, sessionId, *flags);
+ channelMask, frameCount, sharedBuffer, sessionId, uid, *flags);
} else {
track = TimedTrack::create(this, client, streamType, sampleRate, format,
- channelMask, frameCount, sharedBuffer, sessionId);
+ channelMask, frameCount, sharedBuffer, sessionId, uid);
}
if (track == 0 || track->getCblk() == NULL || track->name() < 0) {
lStatus = NO_MEMORY;
@@ -1432,6 +1460,9 @@ status_t AudioFlinger::PlaybackThread::addTrack_l(const sp<Track>& track)
track->mResetDone = false;
track->mPresentationCompleteFrames = 0;
mActiveTracks.add(track);
+ mWakeLockUids.add(track->uid());
+ mActiveTracksGeneration++;
+ mLatestActiveTrack = track;
sp<EffectChain> chain = getEffectChain_l(track->sessionId());
if (chain != 0) {
ALOGV("addTrack_l() starting track on chain %p for session %d", chain.get(),
@@ -1905,7 +1936,7 @@ ssize_t AudioFlinger::PlaybackThread::threadLoop_write()
mNumWrites++;
mInWrite = false;
-
+ mStandby = false;
return bytesWritten;
}
@@ -2127,6 +2158,8 @@ bool AudioFlinger::PlaybackThread::threadLoop()
// FIXME could this be made local to while loop?
writeFrames = 0;
+ int lastGeneration = 0;
+
cacheParameters_l();
sleepTime = idleSleepTime;
@@ -2183,6 +2216,8 @@ bool AudioFlinger::PlaybackThread::threadLoop()
break;
}
releaseWakeLock_l();
+ mWakeLockUids.clear();
+ mActiveTracksGeneration++;
ALOGV("wait async completion");
mWaitWorkCV.wait(mLock);
ALOGV("async completion/wake");
@@ -2213,6 +2248,8 @@ bool AudioFlinger::PlaybackThread::threadLoop()
}
releaseWakeLock_l();
+ mWakeLockUids.clear();
+ mActiveTracksGeneration++;
// wait until we have something to do...
ALOGV("%s going to sleep", myName.string());
mWaitWorkCV.wait(mLock);
@@ -2237,11 +2274,18 @@ bool AudioFlinger::PlaybackThread::threadLoop()
// mMixerStatusIgnoringFastTracks is also updated internally
mMixerStatus = prepareTracks_l(&tracksToRemove);
+ // compare with previously applied list
+ if (lastGeneration != mActiveTracksGeneration) {
+ // update wakelock
+ updateWakeLockUids_l(mWakeLockUids);
+ lastGeneration = mActiveTracksGeneration;
+ }
+
// prevent any changes in effect chain list and in each effect chain
// during mixing and effect process as the audio buffers could be deleted
// or modified if an effect is created or deleted
lockEffectChains_l(effectChains);
- }
+ } // mLock scope ends
if (mBytesRemaining == 0) {
mCurrentWriteLength = 0;
@@ -2315,7 +2359,6 @@ if (mType == MIXER) {
}
}
- mStandby = false;
} else {
usleep(sleepTime);
}
@@ -2351,6 +2394,8 @@ if (mType == MIXER) {
}
releaseWakeLock();
+ mWakeLockUids.clear();
+ mActiveTracksGeneration++;
ALOGV("Thread %p type %d exiting", this, mType);
return false;
@@ -2364,6 +2409,8 @@ void AudioFlinger::PlaybackThread::removeTracks_l(const Vector< sp<Track> >& tra
for (size_t i=0 ; i<count ; i++) {
const sp<Track>& track = tracksToRemove.itemAt(i);
mActiveTracks.remove(track);
+ mWakeLockUids.remove(track->uid());
+ mActiveTracksGeneration++;
ALOGV("removeTracks_l removing track on session %d", track->sessionId());
sp<EffectChain> chain = getEffectChain_l(track->sessionId());
if (chain != 0) {
@@ -3559,6 +3606,12 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
Track* const track = t.get();
audio_track_cblk_t* cblk = track->cblk();
+ // Only consider last track started for volume and mixer state control.
+ // In theory an older track could underrun and restart after the new one starts
+ // but as we only care about the transition phase between two tracks on a
+ // direct output, it is not a problem to ignore the underrun case.
+ sp<Track> l = mLatestActiveTrack.promote();
+ bool last = l.get() == track;
// The first time a track is added we wait
// for all its buffers to be filled before processing it
@@ -3568,11 +3621,6 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
} else {
minFrames = 1;
}
- // Only consider last track started for volume and mixer state control.
- // This is the last entry in mActiveTracks unless a track underruns.
- // As we only care about the transition phase between two tracks on a
- // direct output, it is not a problem to ignore the underrun case.
- bool last = (i == (count - 1));
if ((track->framesReady() >= minFrames) && track->isReady() &&
!track->isPaused() && !track->isTerminated())
@@ -3599,7 +3647,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
} else {
// clear effect chain input buffer if the last active track started underruns
// to avoid sending previous audio buffer again to effects
- if (!mEffectChains.isEmpty() && (i == (count -1))) {
+ if (!mEffectChains.isEmpty() && last) {
mEffectChains[0]->clearInputBuffer();
}
@@ -3611,7 +3659,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
// TODO: implement behavior for compressed audio
size_t audioHALFrames = (latency_l() * mSampleRate) / 1000;
size_t framesWritten = mBytesWritten / mFrameSize;
- if (mStandby || track->presentationComplete(framesWritten, audioHALFrames)) {
+ if (mStandby || !last ||
+ track->presentationComplete(framesWritten, audioHALFrames)) {
if (track->isStopped()) {
track->reset();
}
@@ -3624,6 +3673,9 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
if (--(track->mRetryCount) <= 0) {
ALOGV("BUFFER TIMEOUT: remove(%d) from active list", track->name());
tracksToRemove->add(track);
+ // indicate to client process that the track was disabled because of underrun;
+ // it will then automatically call start() when data is available
+ android_atomic_or(CBLK_DISABLED, &cblk->mFlags);
} else if (last) {
mixerStatus = MIXER_TRACKS_ENABLED;
}
@@ -3886,11 +3938,8 @@ AudioFlinger::OffloadThread::OffloadThread(const sp<AudioFlinger>& audioFlinger,
mFlushPending(false),
mPausedBytesRemaining(0)
{
-}
-
-AudioFlinger::OffloadThread::~OffloadThread()
-{
- mPreviousTrack.clear();
+ //FIXME: mStandby should be set to true by ThreadBase constructor
+ mStandby = true;
}
void AudioFlinger::OffloadThread::threadLoop_exit()
@@ -3927,24 +3976,13 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
}
Track* const track = t.get();
audio_track_cblk_t* cblk = track->cblk();
- if (mPreviousTrack != NULL) {
- if (t != mPreviousTrack) {
- // Flush any data still being written from last track
- mBytesRemaining = 0;
- if (mPausedBytesRemaining) {
- // Last track was paused so we also need to flush saved
- // mixbuffer state and invalidate track so that it will
- // re-submit that unwritten data when it is next resumed
- mPausedBytesRemaining = 0;
- // Invalidate is a bit drastic - would be more efficient
- // to have a flag to tell client that some of the
- // previously written data was lost
- mPreviousTrack->invalidate();
- }
- }
- }
- mPreviousTrack = t;
- bool last = (i == (count - 1));
+ // Only consider last track started for volume and mixer state control.
+ // In theory an older track could underrun and restart after the new one starts
+ // but as we only care about the transition phase between two tracks on a
+ // direct output, it is not a problem to ignore the underrun case.
+ sp<Track> l = mLatestActiveTrack.promote();
+ bool last = l.get() == track;
+
if (track->isPausing()) {
track->setPaused();
if (last) {
@@ -3992,6 +4030,31 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
}
if (last) {
+ sp<Track> previousTrack = mPreviousTrack.promote();
+ if (previousTrack != 0) {
+ if (track != previousTrack.get()) {
+ // Flush any data still being written from last track
+ mBytesRemaining = 0;
+ if (mPausedBytesRemaining) {
+ // Last track was paused so we also need to flush saved
+ // mixbuffer state and invalidate track so that it will
+ // re-submit that unwritten data when it is next resumed
+ mPausedBytesRemaining = 0;
+ // Invalidate is a bit drastic - would be more efficient
+ // to have a flag to tell client that some of the
+ // previously written data was lost
+ previousTrack->invalidate();
+ }
+ // flush data already sent to the DSP if changing audio session as audio
+ // comes from a different source. Also invalidate previous track to force a
+ // seek when resuming.
+ if (previousTrack->sessionId() != track->sessionId()) {
+ previousTrack->invalidate();
+ mFlushPending = true;
+ }
+ }
+ }
+ mPreviousTrack = track;
// reset retry count
track->mRetryCount = kMaxTrackRetriesOffload;
mActiveTrack = t;
@@ -4008,22 +4071,27 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
// has been written
ALOGV("OffloadThread: underrun and STOPPING_1 -> draining, STOPPING_2");
track->mState = TrackBase::STOPPING_2; // so presentation completes after drain
- if (last) {
- sleepTime = 0;
- standbyTime = systemTime() + standbyDelay;
- mixerStatus = MIXER_DRAIN_TRACK;
- mDrainSequence += 2;
+ // do not drain if no data was ever sent to HAL (mStandby == true)
+ if (last && !mStandby) {
+ // do not modify drain sequence if we are already draining. This happens
+ // when resuming from pause after drain.
+ if ((mDrainSequence & 1) == 0) {
+ sleepTime = 0;
+ standbyTime = systemTime() + standbyDelay;
+ mixerStatus = MIXER_DRAIN_TRACK;
+ mDrainSequence += 2;
+ }
if (mHwPaused) {
// It is possible to move from PAUSED to STOPPING_1 without
// a resume so we must ensure hardware is running
- mOutput->stream->resume(mOutput->stream);
+ doHwResume = true;
mHwPaused = false;
}
}
}
} else if (track->isStopping_2()) {
- // Drain has completed, signal presentation complete
- if (!(mDrainSequence & 1) || !last) {
+ // Drain has completed or we are in standby, signal presentation complete
+ if (!(mDrainSequence & 1) || !last || mStandby) {
track->mState = TrackBase::STOPPED;
size_t audioHALFrames =
(mOutput->stream->get_latency(mOutput->stream)*mSampleRate) / 1000;
@@ -4040,6 +4108,9 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
ALOGV("OffloadThread: BUFFER TIMEOUT: remove(%d) from active list",
track->name());
tracksToRemove->add(track);
+ // indicate to client process that the track was disabled because of underrun;
+ // it will then automatically call start() when data is available
+ android_atomic_or(CBLK_DISABLED, &cblk->mFlags);
} else if (last){
mixerStatus = MIXER_TRACKS_ENABLED;
}
@@ -4053,7 +4124,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
// If a flush is pending and a track is active but the HW is not paused, force a HW pause
// before flush and then resume HW. This can happen in case of pause/flush/resume
// if resume is received before pause is executed.
- if (doHwPause || (mFlushPending && !mHwPaused && (count != 0))) {
+ if (!mStandby && (doHwPause || (mFlushPending && !mHwPaused && (count != 0)))) {
mOutput->stream->pause(mOutput->stream);
if (!doHwPause) {
doHwResume = true;
@@ -4063,7 +4134,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
flushHw_l();
mFlushPending = false;
}
- if (doHwResume) {
+ if (!mStandby && doHwResume) {
mOutput->stream->resume(mOutput->stream);
}
@@ -4185,6 +4256,7 @@ ssize_t AudioFlinger::DuplicatingThread::threadLoop_write()
for (size_t i = 0; i < outputTracks.size(); i++) {
outputTracks[i]->write(mMixBuffer, writeFrames);
}
+ mStandby = false;
return (ssize_t)mixBufferSize;
}
@@ -4216,7 +4288,8 @@ void AudioFlinger::DuplicatingThread::addOutputTrack(MixerThread *thread)
mSampleRate,
mFormat,
mChannelMask,
- frameCount);
+ frameCount,
+ IPCThreadState::self()->getCallingUid());
if (outputTrack->cblk() != NULL) {
thread->setStreamVolume(AUDIO_STREAM_CNT, 1.0f);
mOutputTracks.add(outputTrack);
@@ -4318,7 +4391,6 @@ AudioFlinger::RecordThread::RecordThread(const sp<AudioFlinger>& audioFlinger,
snprintf(mName, kNameLength, "AudioIn_%X", id);
readInputParameters();
- mClientUid = IPCThreadState::self()->getCallingUid();
}
@@ -4350,7 +4422,11 @@ bool AudioFlinger::RecordThread::threadLoop()
nsecs_t lastWarning = 0;
inputStandBy();
- acquireWakeLock(mClientUid);
+ {
+ Mutex::Autolock _l(mLock);
+ activeTrack = mActiveTrack;
+ acquireWakeLock_l(activeTrack != 0 ? activeTrack->uid() : -1);
+ }
// used to verify we've read at least once before evaluating how many bytes were read
bool readOnce = false;
@@ -4363,6 +4439,12 @@ bool AudioFlinger::RecordThread::threadLoop()
{ // scope for mLock
Mutex::Autolock _l(mLock);
checkForNewParameters_l();
+ if (mActiveTrack != 0 && activeTrack != mActiveTrack) {
+ SortedVector<int> tmp;
+ tmp.add(mActiveTrack->uid());
+ updateWakeLockUids_l(tmp);
+ }
+ activeTrack = mActiveTrack;
if (mActiveTrack == 0 && mConfigEvents.isEmpty()) {
standby();
@@ -4375,7 +4457,7 @@ bool AudioFlinger::RecordThread::threadLoop()
// go to sleep
mWaitWorkCV.wait(mLock);
ALOGV("RecordThread: loop starting");
- acquireWakeLock_l(mClientUid);
+ acquireWakeLock_l(mActiveTrack != 0 ? mActiveTrack->uid() : -1);
continue;
}
if (mActiveTrack != 0) {
@@ -4585,6 +4667,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createR
audio_channel_mask_t channelMask,
size_t frameCount,
int sessionId,
+ int uid,
IAudioFlinger::track_flags_t *flags,
pid_t tid,
status_t *status)
@@ -4654,7 +4737,7 @@ sp<AudioFlinger::RecordThread::RecordTrack> AudioFlinger::RecordThread::createR
Mutex::Autolock _l(mLock);
track = new RecordTrack(this, client, sampleRate,
- format, channelMask, frameCount, sessionId);
+ format, channelMask, frameCount, sessionId, uid);
if (track->getCblk() == 0) {
ALOGE("createRecordTrack_l() no control block");
diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h
index 802b784..207f1eb 100644
--- a/services/audioflinger/Threads.h
+++ b/services/audioflinger/Threads.h
@@ -241,6 +241,9 @@ protected:
void acquireWakeLock_l(int uid = -1);
void releaseWakeLock();
void releaseWakeLock_l();
+ void updateWakeLockUids(const SortedVector<int> &uids);
+ void updateWakeLockUids_l(const SortedVector<int> &uids);
+ void getPowerManager_l();
void setEffectSuspended_l(const effect_uuid_t *type,
bool suspend,
int sessionId);
@@ -421,6 +424,7 @@ public:
int sessionId,
IAudioFlinger::track_flags_t *flags,
pid_t tid,
+ int uid,
status_t *status);
AudioStreamOut* getOutput() const;
@@ -495,6 +499,9 @@ private:
void setMasterMute_l(bool muted) { mMasterMute = muted; }
protected:
SortedVector< wp<Track> > mActiveTracks; // FIXME check if this could be sp<>
+ SortedVector<int> mWakeLockUids;
+ int mActiveTracksGeneration;
+ wp<Track> mLatestActiveTrack; // latest track added to mActiveTracks
// Allocate a track name for a given channel mask.
// Returns name >= 0 if successful, -1 on failure.
@@ -735,7 +742,7 @@ public:
OffloadThread(const sp<AudioFlinger>& audioFlinger, AudioStreamOut* output,
audio_io_handle_t id, uint32_t device);
- virtual ~OffloadThread();
+ virtual ~OffloadThread() {};
protected:
// threadLoop snippets
@@ -755,7 +762,7 @@ private:
bool mFlushPending;
size_t mPausedWriteLength; // length in bytes of write interrupted by pause
size_t mPausedBytesRemaining; // bytes still waiting in mixbuffer after resume
- sp<Track> mPreviousTrack; // used to detect track switch
+ wp<Track> mPreviousTrack; // used to detect track switch
};
class AsyncCallbackThread : public Thread {
@@ -873,6 +880,7 @@ public:
audio_channel_mask_t channelMask,
size_t frameCount,
int sessionId,
+ int uid,
IAudioFlinger::track_flags_t *flags,
pid_t tid,
status_t *status);
@@ -953,5 +961,4 @@ private:
// For dumpsys
const sp<NBAIO_Sink> mTeeSink;
- int mClientUid;
};
diff --git a/services/audioflinger/TrackBase.h b/services/audioflinger/TrackBase.h
index 523e4b2..cd201d9 100644
--- a/services/audioflinger/TrackBase.h
+++ b/services/audioflinger/TrackBase.h
@@ -45,6 +45,7 @@ public:
size_t frameCount,
const sp<IMemory>& sharedBuffer,
int sessionId,
+ int uid,
bool isOut);
virtual ~TrackBase();
@@ -54,6 +55,7 @@ public:
sp<IMemory> getCblk() const { return mCblkMemory; }
audio_track_cblk_t* cblk() const { return mCblk; }
int sessionId() const { return mSessionId; }
+ int uid() const { return mUid; }
virtual status_t setSyncEvent(const sp<SyncEvent>& event);
protected:
@@ -132,6 +134,7 @@ protected:
// openRecord(), and then adjusted as needed
const int mSessionId;
+ int mUid;
Vector < sp<SyncEvent> >mSyncEvents;
const bool mIsOut;
ServerProxy* mServerProxy;
diff --git a/services/audioflinger/Tracks.cpp b/services/audioflinger/Tracks.cpp
index 9c6e724..af04ce7 100644
--- a/services/audioflinger/Tracks.cpp
+++ b/services/audioflinger/Tracks.cpp
@@ -68,6 +68,7 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase(
size_t frameCount,
const sp<IMemory>& sharedBuffer,
int sessionId,
+ int clientUid,
bool isOut)
: RefBase(),
mThread(thread),
@@ -88,6 +89,18 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase(
mId(android_atomic_inc(&nextTrackId)),
mTerminated(false)
{
+ // if the caller is us, trust the specified uid
+ if (IPCThreadState::self()->getCallingPid() != getpid_cached || clientUid == -1) {
+ int newclientUid = IPCThreadState::self()->getCallingUid();
+ if (clientUid != -1 && clientUid != newclientUid) {
+ ALOGW("uid %d tried to pass itself off as %d", newclientUid, clientUid);
+ }
+ clientUid = newclientUid;
+ }
+ // clientUid contains the uid of the app that is responsible for this track, so we can blame
+ // battery usage on it.
+ mUid = clientUid;
+
// client == 0 implies sharedBuffer == 0
ALOG_ASSERT(!(client == 0 && sharedBuffer != 0));
@@ -313,9 +326,10 @@ AudioFlinger::PlaybackThread::Track::Track(
size_t frameCount,
const sp<IMemory>& sharedBuffer,
int sessionId,
+ int uid,
IAudioFlinger::track_flags_t flags)
: TrackBase(thread, client, sampleRate, format, channelMask, frameCount, sharedBuffer,
- sessionId, true /*isOut*/),
+ sessionId, uid, true /*isOut*/),
mFillingUpStatus(FS_INVALID),
// mRetryCount initialized later when needed
mSharedBuffer(sharedBuffer),
@@ -600,6 +614,15 @@ status_t AudioFlinger::PlaybackThread::Track::start(AudioSystem::sync_event_t ev
// track was already in the active list, not a problem
if (status == ALREADY_EXISTS) {
status = NO_ERROR;
+ } else {
+ // Acknowledge any pending flush(), so that subsequent new data isn't discarded.
+ // It is usually unsafe to access the server proxy from a binder thread.
+ // But in this case we know the mixer thread (whether normal mixer or fast mixer)
+ // isn't looking at this track yet: we still hold the normal mixer thread lock,
+ // and for fast tracks the track is not yet in the fast mixer thread's active set.
+ ServerProxy::Buffer buffer;
+ buffer.mFrameCount = 1;
+ (void) mAudioTrackServerProxy->obtainBuffer(&buffer, true /*ackFlush*/);
}
} else {
status = BAD_VALUE;
@@ -829,6 +852,7 @@ status_t AudioFlinger::PlaybackThread::Track::attachAuxEffect(int EffectId)
dstChain->strategy(),
AUDIO_SESSION_OUTPUT_MIX,
effect->id());
+ AudioSystem::setEffectEnabled(effect->id(), effect->isEnabled());
}
status = playbackThread->attachAuxEffect(this, EffectId);
}
@@ -954,13 +978,14 @@ AudioFlinger::PlaybackThread::TimedTrack::create(
audio_channel_mask_t channelMask,
size_t frameCount,
const sp<IMemory>& sharedBuffer,
- int sessionId) {
+ int sessionId,
+ int uid) {
if (!client->reserveTimedTrack())
return 0;
return new TimedTrack(
thread, client, streamType, sampleRate, format, channelMask, frameCount,
- sharedBuffer, sessionId);
+ sharedBuffer, sessionId, uid);
}
AudioFlinger::PlaybackThread::TimedTrack::TimedTrack(
@@ -972,9 +997,10 @@ AudioFlinger::PlaybackThread::TimedTrack::TimedTrack(
audio_channel_mask_t channelMask,
size_t frameCount,
const sp<IMemory>& sharedBuffer,
- int sessionId)
+ int sessionId,
+ int uid)
: Track(thread, client, streamType, sampleRate, format, channelMask,
- frameCount, sharedBuffer, sessionId, IAudioFlinger::TRACK_TIMED),
+ frameCount, sharedBuffer, sessionId, uid, IAudioFlinger::TRACK_TIMED),
mQueueHeadInFlight(false),
mTrimQueueHeadOnRelease(false),
mFramesPendingInQueue(0),
@@ -1467,9 +1493,10 @@ AudioFlinger::PlaybackThread::OutputTrack::OutputTrack(
uint32_t sampleRate,
audio_format_t format,
audio_channel_mask_t channelMask,
- size_t frameCount)
+ size_t frameCount,
+ int uid)
: Track(playbackThread, NULL, AUDIO_STREAM_CNT, sampleRate, format, channelMask, frameCount,
- NULL, 0, IAudioFlinger::TRACK_DEFAULT),
+ NULL, 0, uid, IAudioFlinger::TRACK_DEFAULT),
mActive(false), mSourceThread(sourceThread), mClientProxy(NULL)
{
@@ -1729,9 +1756,10 @@ AudioFlinger::RecordThread::RecordTrack::RecordTrack(
audio_format_t format,
audio_channel_mask_t channelMask,
size_t frameCount,
- int sessionId)
+ int sessionId,
+ int uid)
: TrackBase(thread, client, sampleRate, format,
- channelMask, frameCount, 0 /*sharedBuffer*/, sessionId, false /*isOut*/),
+ channelMask, frameCount, 0 /*sharedBuffer*/, sessionId, uid, false /*isOut*/),
mOverflow(false)
{
ALOGV("RecordTrack constructor");
diff --git a/services/camera/libcameraservice/Android.mk b/services/camera/libcameraservice/Android.mk
index d23f8b9..51ba698 100644
--- a/services/camera/libcameraservice/Android.mk
+++ b/services/camera/libcameraservice/Android.mk
@@ -35,6 +35,7 @@ LOCAL_SRC_FILES:= \
device3/Camera3ZslStream.cpp \
device3/StatusTracker.cpp \
gui/RingBufferConsumer.cpp \
+ utils/CameraTraces.cpp \
LOCAL_SHARED_LIBRARIES:= \
libui \
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 34a5b15..eeedfc9 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -42,6 +42,7 @@
#include "api1/Camera2Client.h"
#include "api_pro/ProCamera2Client.h"
#include "api2/CameraDeviceClient.h"
+#include "utils/CameraTraces.h"
#include "CameraDeviceFactory.h"
namespace android {
@@ -1219,6 +1220,10 @@ status_t CameraService::dump(int fd, const Vector<String16>& args) {
if (locked) mServiceLock.unlock();
+ // Dump camera traces if there were any
+ write(fd, "\n", 1);
+ camera3::CameraTraces::dump(fd, args);
+
// change logging level
int n = args.size();
for (int i = 0; i + 1 < n; i++) {
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp
index df3b162..0b6ca5c 100644
--- a/services/camera/libcameraservice/api1/Camera2Client.cpp
+++ b/services/camera/libcameraservice/api1/Camera2Client.cpp
@@ -76,13 +76,15 @@ status_t Camera2Client::initialize(camera_module_t *module)
return res;
}
- SharedParameters::Lock l(mParameters);
+ {
+ SharedParameters::Lock l(mParameters);
- res = l.mParameters.initialize(&(mDevice->info()));
- if (res != OK) {
- ALOGE("%s: Camera %d: unable to build defaults: %s (%d)",
- __FUNCTION__, mCameraId, strerror(-res), res);
- return NO_INIT;
+ res = l.mParameters.initialize(&(mDevice->info()));
+ if (res != OK) {
+ ALOGE("%s: Camera %d: unable to build defaults: %s (%d)",
+ __FUNCTION__, mCameraId, strerror(-res), res);
+ return NO_INIT;
+ }
}
String8 threadName;
@@ -135,6 +137,7 @@ status_t Camera2Client::initialize(camera_module_t *module)
mCallbackProcessor->run(threadName.string());
if (gLogLevel >= 1) {
+ SharedParameters::Lock l(mParameters);
ALOGD("%s: Default parameters converted from camera %d:", __FUNCTION__,
mCameraId);
ALOGD("%s", l.mParameters.paramsFlattened.string());
@@ -353,6 +356,10 @@ status_t Camera2Client::dump(int fd, const Vector<String16>& args) {
result.appendFormat(" meteringCropRegion\n");
haveQuirk = true;
}
+ if (p.quirks.partialResults) {
+ result.appendFormat(" usePartialResult\n");
+ haveQuirk = true;
+ }
if (!haveQuirk) {
result.appendFormat(" none\n");
}
diff --git a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
index c34cb12..19acae4 100644
--- a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
@@ -29,13 +29,27 @@ namespace android {
namespace camera2 {
FrameProcessor::FrameProcessor(wp<CameraDeviceBase> device,
- wp<Camera2Client> client) :
+ sp<Camera2Client> client) :
FrameProcessorBase(device),
mClient(client),
- mLastFrameNumberOfFaces(0) {
+ mLastFrameNumberOfFaces(0),
+ mLast3AFrameNumber(-1) {
sp<CameraDeviceBase> d = device.promote();
mSynthesize3ANotify = !(d->willNotify3A());
+
+ {
+ SharedParameters::Lock l(client->getParameters());
+ mUsePartialQuirk = l.mParameters.quirks.partialResults;
+
+ // Initialize starting 3A state
+ m3aState.afTriggerId = l.mParameters.afTriggerCounter;
+ m3aState.aeTriggerId = l.mParameters.precaptureTriggerCounter;
+ // Check if lens is fixed-focus
+ if (l.mParameters.focusMode == Parameters::FOCUS_MODE_FIXED) {
+ m3aState.afMode = ANDROID_CONTROL_AF_MODE_OFF;
+ }
+ }
}
FrameProcessor::~FrameProcessor() {
@@ -49,20 +63,25 @@ bool FrameProcessor::processSingleFrame(CameraMetadata &frame,
return false;
}
- if (processFaceDetect(frame, client) != OK) {
+ bool partialResult = false;
+ if (mUsePartialQuirk) {
+ camera_metadata_entry_t entry;
+ entry = frame.find(ANDROID_QUIRKS_PARTIAL_RESULT);
+ if (entry.count > 0 &&
+ entry.data.u8[0] == ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL) {
+ partialResult = true;
+ }
+ }
+
+ if (!partialResult && processFaceDetect(frame, client) != OK) {
return false;
}
if (mSynthesize3ANotify) {
- // Ignoring missing fields for now
process3aState(frame, client);
}
- if (!FrameProcessorBase::processSingleFrame(frame, device)) {
- return false;
- }
-
- return true;
+ return FrameProcessorBase::processSingleFrame(frame, device);
}
status_t FrameProcessor::processFaceDetect(const CameraMetadata &frame,
@@ -198,86 +217,75 @@ status_t FrameProcessor::process3aState(const CameraMetadata &frame,
ATRACE_CALL();
camera_metadata_ro_entry_t entry;
- int mId = client->getCameraId();
+ int cameraId = client->getCameraId();
entry = frame.find(ANDROID_REQUEST_FRAME_COUNT);
int32_t frameNumber = entry.data.i32[0];
+ // Don't send 3A notifications for the same frame number twice
+ if (frameNumber <= mLast3AFrameNumber) {
+ ALOGV("%s: Already sent 3A for frame number %d, skipping",
+ __FUNCTION__, frameNumber);
+ return OK;
+ }
+
+ mLast3AFrameNumber = frameNumber;
+
// Get 3A states from result metadata
bool gotAllStates = true;
AlgState new3aState;
- entry = frame.find(ANDROID_CONTROL_AE_STATE);
- if (entry.count == 0) {
- ALOGE("%s: Camera %d: No AE state provided by HAL for frame %d!",
- __FUNCTION__, mId, frameNumber);
- gotAllStates = false;
- } else {
- new3aState.aeState =
- static_cast<camera_metadata_enum_android_control_ae_state>(
- entry.data.u8[0]);
- }
+ // TODO: Also use AE mode, AE trigger ID
- entry = frame.find(ANDROID_CONTROL_AF_STATE);
- if (entry.count == 0) {
- ALOGE("%s: Camera %d: No AF state provided by HAL for frame %d!",
- __FUNCTION__, mId, frameNumber);
- gotAllStates = false;
- } else {
- new3aState.afState =
- static_cast<camera_metadata_enum_android_control_af_state>(
- entry.data.u8[0]);
- }
+ gotAllStates &= get3aResult<uint8_t>(frame, ANDROID_CONTROL_AF_MODE,
+ &new3aState.afMode, frameNumber, cameraId);
- entry = frame.find(ANDROID_CONTROL_AWB_STATE);
- if (entry.count == 0) {
- ALOGE("%s: Camera %d: No AWB state provided by HAL for frame %d!",
- __FUNCTION__, mId, frameNumber);
- gotAllStates = false;
- } else {
- new3aState.awbState =
- static_cast<camera_metadata_enum_android_control_awb_state>(
- entry.data.u8[0]);
- }
+ gotAllStates &= get3aResult<uint8_t>(frame, ANDROID_CONTROL_AWB_MODE,
+ &new3aState.awbMode, frameNumber, cameraId);
- int32_t afTriggerId = 0;
- entry = frame.find(ANDROID_CONTROL_AF_TRIGGER_ID);
- if (entry.count == 0) {
- ALOGE("%s: Camera %d: No AF trigger ID provided by HAL for frame %d!",
- __FUNCTION__, mId, frameNumber);
- gotAllStates = false;
- } else {
- afTriggerId = entry.data.i32[0];
- }
+ gotAllStates &= get3aResult<uint8_t>(frame, ANDROID_CONTROL_AE_STATE,
+ &new3aState.aeState, frameNumber, cameraId);
- int32_t aeTriggerId = 0;
- entry = frame.find(ANDROID_CONTROL_AE_PRECAPTURE_ID);
- if (entry.count == 0) {
- ALOGE("%s: Camera %d: No AE precapture trigger ID provided by HAL"
- " for frame %d!",
- __FUNCTION__, mId, frameNumber);
- gotAllStates = false;
- } else {
- aeTriggerId = entry.data.i32[0];
- }
+ gotAllStates &= get3aResult<uint8_t>(frame, ANDROID_CONTROL_AF_STATE,
+ &new3aState.afState, frameNumber, cameraId);
+
+ gotAllStates &= get3aResult<uint8_t>(frame, ANDROID_CONTROL_AWB_STATE,
+ &new3aState.awbState, frameNumber, cameraId);
+
+ gotAllStates &= get3aResult<int32_t>(frame, ANDROID_CONTROL_AF_TRIGGER_ID,
+ &new3aState.afTriggerId, frameNumber, cameraId);
+
+ gotAllStates &= get3aResult<int32_t>(frame, ANDROID_CONTROL_AE_PRECAPTURE_ID,
+ &new3aState.aeTriggerId, frameNumber, cameraId);
if (!gotAllStates) return BAD_VALUE;
if (new3aState.aeState != m3aState.aeState) {
- ALOGV("%s: AE state changed from 0x%x to 0x%x",
- __FUNCTION__, m3aState.aeState, new3aState.aeState);
- client->notifyAutoExposure(new3aState.aeState, aeTriggerId);
+ ALOGV("%s: Camera %d: AE state %d->%d",
+ __FUNCTION__, cameraId,
+ m3aState.aeState, new3aState.aeState);
+ client->notifyAutoExposure(new3aState.aeState, new3aState.aeTriggerId);
}
- if (new3aState.afState != m3aState.afState) {
- ALOGV("%s: AF state changed from 0x%x to 0x%x",
- __FUNCTION__, m3aState.afState, new3aState.afState);
- client->notifyAutoFocus(new3aState.afState, afTriggerId);
+
+ if (new3aState.afState != m3aState.afState ||
+ new3aState.afMode != m3aState.afMode ||
+ new3aState.afTriggerId != m3aState.afTriggerId) {
+ ALOGV("%s: Camera %d: AF state %d->%d. AF mode %d->%d. Trigger %d->%d",
+ __FUNCTION__, cameraId,
+ m3aState.afState, new3aState.afState,
+ m3aState.afMode, new3aState.afMode,
+ m3aState.afTriggerId, new3aState.afTriggerId);
+ client->notifyAutoFocus(new3aState.afState, new3aState.afTriggerId);
}
- if (new3aState.awbState != m3aState.awbState) {
- ALOGV("%s: AWB state changed from 0x%x to 0x%x",
- __FUNCTION__, m3aState.awbState, new3aState.awbState);
- client->notifyAutoWhitebalance(new3aState.awbState, aeTriggerId);
+ if (new3aState.awbState != m3aState.awbState ||
+ new3aState.awbMode != m3aState.awbMode) {
+ ALOGV("%s: Camera %d: AWB state %d->%d. AWB mode %d->%d",
+ __FUNCTION__, cameraId,
+ m3aState.awbState, new3aState.awbState,
+ m3aState.awbMode, new3aState.awbMode);
+ client->notifyAutoWhitebalance(new3aState.awbState,
+ new3aState.aeTriggerId);
}
m3aState = new3aState;
@@ -285,6 +293,39 @@ status_t FrameProcessor::process3aState(const CameraMetadata &frame,
return OK;
}
+template<typename Src, typename T>
+bool FrameProcessor::get3aResult(const CameraMetadata& result, int32_t tag,
+ T* value, int32_t frameNumber, int cameraId) {
+ camera_metadata_ro_entry_t entry;
+ if (value == NULL) {
+ ALOGE("%s: Camera %d: Value to write to is NULL",
+ __FUNCTION__, cameraId);
+ return false;
+ }
+
+ entry = result.find(tag);
+ if (entry.count == 0) {
+ ALOGE("%s: Camera %d: No %s provided by HAL for frame %d!",
+ __FUNCTION__, cameraId,
+ get_camera_metadata_tag_name(tag), frameNumber);
+ return false;
+ } else {
+ switch(sizeof(Src)){
+ case sizeof(uint8_t):
+ *value = static_cast<T>(entry.data.u8[0]);
+ break;
+ case sizeof(int32_t):
+ *value = static_cast<T>(entry.data.i32[0]);
+ break;
+ default:
+ ALOGE("%s: Camera %d: Unsupported source",
+ __FUNCTION__, cameraId);
+ return false;
+ }
+ }
+ return true;
+}
+
void FrameProcessor::callbackFaceDetection(sp<Camera2Client> client,
const camera_frame_metadata &metadata) {
diff --git a/services/camera/libcameraservice/api1/client2/FrameProcessor.h b/services/camera/libcameraservice/api1/client2/FrameProcessor.h
index 2a17d45..856ad32 100644
--- a/services/camera/libcameraservice/api1/client2/FrameProcessor.h
+++ b/services/camera/libcameraservice/api1/client2/FrameProcessor.h
@@ -39,7 +39,7 @@ namespace camera2 {
*/
class FrameProcessor : public FrameProcessorBase {
public:
- FrameProcessor(wp<CameraDeviceBase> device, wp<Camera2Client> client);
+ FrameProcessor(wp<CameraDeviceBase> device, sp<Camera2Client> client);
~FrameProcessor();
private:
@@ -61,18 +61,44 @@ class FrameProcessor : public FrameProcessorBase {
status_t process3aState(const CameraMetadata &frame,
const sp<Camera2Client> &client);
+ // Helper for process3aState
+ template<typename Src, typename T>
+ bool get3aResult(const CameraMetadata& result, int32_t tag, T* value,
+ int32_t frameNumber, int cameraId);
+
+
struct AlgState {
+ // TODO: also track AE mode
+ camera_metadata_enum_android_control_af_mode afMode;
+ camera_metadata_enum_android_control_awb_mode awbMode;
+
camera_metadata_enum_android_control_ae_state aeState;
camera_metadata_enum_android_control_af_state afState;
camera_metadata_enum_android_control_awb_state awbState;
+ int32_t afTriggerId;
+ int32_t aeTriggerId;
+
+ // These defaults need to match those in Parameters.cpp
AlgState() :
+ afMode(ANDROID_CONTROL_AF_MODE_AUTO),
+ awbMode(ANDROID_CONTROL_AWB_MODE_AUTO),
aeState(ANDROID_CONTROL_AE_STATE_INACTIVE),
afState(ANDROID_CONTROL_AF_STATE_INACTIVE),
- awbState(ANDROID_CONTROL_AWB_STATE_INACTIVE) {
+ awbState(ANDROID_CONTROL_AWB_STATE_INACTIVE),
+ afTriggerId(0),
+ aeTriggerId(0) {
}
} m3aState;
+ // Whether the partial result quirk is enabled for this device
+ bool mUsePartialQuirk;
+
+ // Track most recent frame number for which 3A notifications were sent for.
+ // Used to filter against sending 3A notifications for the same frame
+ // several times.
+ int32_t mLast3AFrameNumber;
+
// Emit FaceDetection event to java if faces changed
void callbackFaceDetection(sp<Camera2Client> client,
const camera_frame_metadata &metadata);
diff --git a/services/camera/libcameraservice/api1/client2/Parameters.cpp b/services/camera/libcameraservice/api1/client2/Parameters.cpp
index 8a4e75c..08af566 100644
--- a/services/camera/libcameraservice/api1/client2/Parameters.cpp
+++ b/services/camera/libcameraservice/api1/client2/Parameters.cpp
@@ -183,8 +183,7 @@ status_t Parameters::initialize(const CameraMetadata *info) {
// still have to do something sane for them
// NOTE: Not scaled like FPS range values are.
- previewFps = fpsFromRange(previewFpsRange[0], previewFpsRange[1]);
- lastSetPreviewFps = previewFps;
+ int previewFps = fpsFromRange(previewFpsRange[0], previewFpsRange[1]);
params.set(CameraParameters::KEY_PREVIEW_FRAME_RATE,
previewFps);
@@ -1047,6 +1046,11 @@ status_t Parameters::buildQuirks() {
ALOGV_IF(quirks.meteringCropRegion, "Camera %d: Quirk meteringCropRegion"
" enabled", cameraId);
+ entry = info->find(ANDROID_QUIRKS_USE_PARTIAL_RESULT);
+ quirks.partialResults = (entry.count != 0 && entry.data.u8[0] == 1);
+ ALOGV_IF(quirks.partialResults, "Camera %d: Quirk usePartialResult"
+ " enabled", cameraId);
+
return OK;
}
@@ -1129,13 +1133,22 @@ status_t Parameters::set(const String8& paramString) {
// PREVIEW_FPS_RANGE
bool fpsRangeChanged = false;
+ int32_t lastSetFpsRange[2];
+
+ params.getPreviewFpsRange(&lastSetFpsRange[0], &lastSetFpsRange[1]);
+ lastSetFpsRange[0] /= kFpsToApiScale;
+ lastSetFpsRange[1] /= kFpsToApiScale;
+
newParams.getPreviewFpsRange(&validatedParams.previewFpsRange[0],
&validatedParams.previewFpsRange[1]);
validatedParams.previewFpsRange[0] /= kFpsToApiScale;
validatedParams.previewFpsRange[1] /= kFpsToApiScale;
- if (validatedParams.previewFpsRange[0] != previewFpsRange[0] ||
- validatedParams.previewFpsRange[1] != previewFpsRange[1]) {
+ // Compare the FPS range value from the last set() to the current set()
+ // to determine if the client has changed it
+ if (validatedParams.previewFpsRange[0] != lastSetFpsRange[0] ||
+ validatedParams.previewFpsRange[1] != lastSetFpsRange[1]) {
+
fpsRangeChanged = true;
camera_metadata_ro_entry_t availablePreviewFpsRanges =
staticInfo(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, 2);
@@ -1153,16 +1166,6 @@ status_t Parameters::set(const String8& paramString) {
validatedParams.previewFpsRange[1]);
return BAD_VALUE;
}
- validatedParams.previewFps =
- fpsFromRange(validatedParams.previewFpsRange[0],
- validatedParams.previewFpsRange[1]);
-
- // Update our last-seen single preview FPS, needed for disambiguating
- // when the application is intending to use the deprecated single-FPS
- // setting vs. the range FPS setting
- validatedParams.lastSetPreviewFps = newParams.getPreviewFrameRate();
-
- newParams.setPreviewFrameRate(validatedParams.previewFps);
}
// PREVIEW_FORMAT
@@ -1200,12 +1203,11 @@ status_t Parameters::set(const String8& paramString) {
// PREVIEW_FRAME_RATE Deprecated, only use if the preview fps range is
// unchanged this time. The single-value FPS is the same as the minimum of
// the range. To detect whether the application has changed the value of
- // previewFps, compare against their last-set preview FPS instead of the
- // single FPS we may have synthesized from a range FPS set.
+ // previewFps, compare against their last-set preview FPS.
if (!fpsRangeChanged) {
- validatedParams.previewFps = newParams.getPreviewFrameRate();
- if (validatedParams.previewFps != lastSetPreviewFps ||
- recordingHintChanged) {
+ int previewFps = newParams.getPreviewFrameRate();
+ int lastSetPreviewFps = params.getPreviewFrameRate();
+ if (previewFps != lastSetPreviewFps || recordingHintChanged) {
camera_metadata_ro_entry_t availableFrameRates =
staticInfo(ANDROID_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);
/**
@@ -1218,8 +1220,8 @@ status_t Parameters::set(const String8& paramString) {
* Either way, in case of multiple ranges, break the tie by
* selecting the smaller range.
*/
- int targetFps = validatedParams.previewFps;
- // all ranges which have targetFps
+
+ // all ranges which have previewFps
Vector<Range> candidateRanges;
for (i = 0; i < availableFrameRates.count; i+=2) {
Range r = {
@@ -1227,13 +1229,13 @@ status_t Parameters::set(const String8& paramString) {
availableFrameRates.data.i32[i+1]
};
- if (r.min <= targetFps && targetFps <= r.max) {
+ if (r.min <= previewFps && previewFps <= r.max) {
candidateRanges.push(r);
}
}
if (candidateRanges.isEmpty()) {
ALOGE("%s: Requested preview frame rate %d is not supported",
- __FUNCTION__, validatedParams.previewFps);
+ __FUNCTION__, previewFps);
return BAD_VALUE;
}
// most applicable range with targetFps
@@ -1272,14 +1274,6 @@ status_t Parameters::set(const String8& paramString) {
validatedParams.previewFpsRange[1],
validatedParams.recordingHint);
}
- newParams.set(CameraParameters::KEY_PREVIEW_FPS_RANGE,
- String8::format("%d,%d",
- validatedParams.previewFpsRange[0] * kFpsToApiScale,
- validatedParams.previewFpsRange[1] * kFpsToApiScale));
- // Update our last-seen single preview FPS, needed for disambiguating
- // when the application is intending to use the deprecated single-FPS
- // setting vs. the range FPS setting
- validatedParams.lastSetPreviewFps = validatedParams.previewFps;
}
// PICTURE_SIZE
diff --git a/services/camera/libcameraservice/api1/client2/Parameters.h b/services/camera/libcameraservice/api1/client2/Parameters.h
index bcbdb99..32dbd42 100644
--- a/services/camera/libcameraservice/api1/client2/Parameters.h
+++ b/services/camera/libcameraservice/api1/client2/Parameters.h
@@ -46,8 +46,6 @@ struct Parameters {
int previewWidth, previewHeight;
int32_t previewFpsRange[2];
- int lastSetPreviewFps; // the last single FPS value seen in a set call
- int previewFps; // deprecated, here only for tracking changes
int previewFormat;
int previewTransform; // set by CAMERA_CMD_SET_DISPLAY_ORIENTATION
@@ -209,6 +207,7 @@ struct Parameters {
bool triggerAfWithAuto;
bool useZslFormat;
bool meteringCropRegion;
+ bool partialResults;
} quirks;
/**
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 72126c1..1cdf8dc 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -81,7 +81,8 @@ status_t CameraDeviceClient::initialize(camera_module_t *module)
mFrameProcessor->registerListener(FRAME_PROCESSOR_LISTENER_MIN_ID,
FRAME_PROCESSOR_LISTENER_MAX_ID,
- /*listener*/this);
+ /*listener*/this,
+ /*quirkSendPartials*/true);
return OK;
}
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.cpp b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
index 52906ee..f2064fb 100644
--- a/services/camera/libcameraservice/common/FrameProcessorBase.cpp
+++ b/services/camera/libcameraservice/common/FrameProcessorBase.cpp
@@ -37,11 +37,11 @@ FrameProcessorBase::~FrameProcessorBase() {
}
status_t FrameProcessorBase::registerListener(int32_t minId,
- int32_t maxId, wp<FilteredListener> listener) {
+ int32_t maxId, wp<FilteredListener> listener, bool quirkSendPartials) {
Mutex::Autolock l(mInputMutex);
ALOGV("%s: Registering listener for frame id range %d - %d",
__FUNCTION__, minId, maxId);
- RangeListener rListener = { minId, maxId, listener };
+ RangeListener rListener = { minId, maxId, listener, quirkSendPartials };
mRangeListeners.push_back(rListener);
return OK;
}
@@ -145,6 +145,16 @@ status_t FrameProcessorBase::processListeners(const CameraMetadata &frame,
ATRACE_CALL();
camera_metadata_ro_entry_t entry;
+ // Quirks: Don't deliver partial results to listeners that don't want them
+ bool quirkIsPartial = false;
+ entry = frame.find(ANDROID_QUIRKS_PARTIAL_RESULT);
+ if (entry.count != 0 &&
+ entry.data.u8[0] == ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL) {
+ ALOGV("%s: Camera %d: Not forwarding partial result to listeners",
+ __FUNCTION__, device->getId());
+ quirkIsPartial = true;
+ }
+
entry = frame.find(ANDROID_REQUEST_ID);
if (entry.count == 0) {
ALOGE("%s: Camera %d: Error reading frame id",
@@ -160,7 +170,8 @@ status_t FrameProcessorBase::processListeners(const CameraMetadata &frame,
List<RangeListener>::iterator item = mRangeListeners.begin();
while (item != mRangeListeners.end()) {
if (requestId >= item->minId &&
- requestId < item->maxId) {
+ requestId < item->maxId &&
+ (!quirkIsPartial || item->quirkSendPartials) ) {
sp<FilteredListener> listener = item->listener.promote();
if (listener == 0) {
item = mRangeListeners.erase(item);
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.h b/services/camera/libcameraservice/common/FrameProcessorBase.h
index 4d80ebf..89b608a 100644
--- a/services/camera/libcameraservice/common/FrameProcessorBase.h
+++ b/services/camera/libcameraservice/common/FrameProcessorBase.h
@@ -44,9 +44,11 @@ class FrameProcessorBase: public Thread {
};
// Register a listener for a range of IDs [minId, maxId). Multiple listeners
- // can be listening to the same range
+ // can be listening to the same range.
+ // QUIRK: sendPartials controls whether partial results will be sent.
status_t registerListener(int32_t minId, int32_t maxId,
- wp<FilteredListener> listener);
+ wp<FilteredListener> listener,
+ bool quirkSendPartials = true);
status_t removeListener(int32_t minId, int32_t maxId,
wp<FilteredListener> listener);
@@ -64,6 +66,7 @@ class FrameProcessorBase: public Thread {
int32_t minId;
int32_t maxId;
wp<FilteredListener> listener;
+ bool quirkSendPartials;
};
List<RangeListener> mRangeListeners;
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index 6f2dc85..3dbc1b0 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -41,6 +41,7 @@
#include <utils/Trace.h>
#include <utils/Timers.h>
+#include "utils/CameraTraces.h"
#include "device3/Camera3Device.h"
#include "device3/Camera3OutputStream.h"
#include "device3/Camera3InputStream.h"
@@ -54,6 +55,7 @@ Camera3Device::Camera3Device(int id):
mId(id),
mHal3Device(NULL),
mStatus(STATUS_UNINITIALIZED),
+ mUsePartialResultQuirk(false),
mNextResultFrameNumber(0),
mNextShutterFrameNumber(0),
mListener(NULL)
@@ -192,6 +194,15 @@ status_t Camera3Device::initialize(camera_module_t *module)
mNeedConfig = true;
mPauseStateNotify = false;
+ /** Check for quirks */
+
+ // Will the HAL be sending in early partial result metadata?
+ camera_metadata_entry partialResultsQuirk =
+ mDeviceInfo.find(ANDROID_QUIRKS_USE_PARTIAL_RESULT);
+ if (partialResultsQuirk.count > 0 && partialResultsQuirk.data.u8[0] == 1) {
+ mUsePartialResultQuirk = true;
+ }
+
return OK;
}
@@ -1363,6 +1374,10 @@ void Camera3Device::setErrorStateLockedV(const char *fmt, va_list args) {
// But only do error state transition steps for the first error
if (mStatus == STATUS_ERROR || mStatus == STATUS_UNINITIALIZED) return;
+ // Save stack trace. View by dumping it later.
+ CameraTraces::saveTrace();
+ // TODO: consider adding errorCause and client pid/procname
+
mErrorCause = errorCause;
mRequestThread->setPaused(true);
@@ -1386,6 +1401,175 @@ status_t Camera3Device::registerInFlight(int32_t frameNumber,
}
/**
+ * QUIRK(partial results)
+ * Check if all 3A fields are ready, and send off a partial 3A-only result
+ * to the output frame queue
+ */
+bool Camera3Device::processPartial3AQuirk(
+ int32_t frameNumber, int32_t requestId,
+ const CameraMetadata& partial) {
+
+ // Check if all 3A states are present
+ // The full list of fields is
+ // android.control.afMode
+ // android.control.awbMode
+ // android.control.aeState
+ // android.control.awbState
+ // android.control.afState
+ // android.control.afTriggerID
+ // android.control.aePrecaptureID
+ // TODO: Add android.control.aeMode
+
+ bool gotAllStates = true;
+
+ uint8_t afMode;
+ uint8_t awbMode;
+ uint8_t aeState;
+ uint8_t afState;
+ uint8_t awbState;
+ int32_t afTriggerId;
+ int32_t aeTriggerId;
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AF_MODE,
+ &afMode, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AWB_MODE,
+ &awbMode, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AE_STATE,
+ &aeState, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AF_STATE,
+ &afState, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AWB_STATE,
+ &awbState, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AF_TRIGGER_ID,
+ &afTriggerId, frameNumber);
+
+ gotAllStates &= get3AResult(partial, ANDROID_CONTROL_AE_PRECAPTURE_ID,
+ &aeTriggerId, frameNumber);
+
+ if (!gotAllStates) return false;
+
+ ALOGVV("%s: Camera %d: Frame %d, Request ID %d: AF mode %d, AWB mode %d, "
+ "AF state %d, AE state %d, AWB state %d, "
+ "AF trigger %d, AE precapture trigger %d",
+ __FUNCTION__, mId, frameNumber, requestId,
+ afMode, awbMode,
+ afState, aeState, awbState,
+ afTriggerId, aeTriggerId);
+
+ // Got all states, so construct a minimal result to send
+ // In addition to the above fields, this means adding in
+ // android.request.frameCount
+ // android.request.requestId
+ // android.quirks.partialResult
+
+ const size_t kMinimal3AResultEntries = 10;
+
+ Mutex::Autolock l(mOutputLock);
+
+ CameraMetadata& min3AResult =
+ *mResultQueue.insert(
+ mResultQueue.end(),
+ CameraMetadata(kMinimal3AResultEntries, /*dataCapacity*/ 0));
+
+ if (!insert3AResult(min3AResult, ANDROID_REQUEST_FRAME_COUNT,
+ &frameNumber, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_REQUEST_ID,
+ &requestId, frameNumber)) {
+ return false;
+ }
+
+ static const uint8_t partialResult = ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL;
+ if (!insert3AResult(min3AResult, ANDROID_QUIRKS_PARTIAL_RESULT,
+ &partialResult, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AF_MODE,
+ &afMode, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AWB_MODE,
+ &awbMode, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AE_STATE,
+ &aeState, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AF_STATE,
+ &afState, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AWB_STATE,
+ &awbState, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AF_TRIGGER_ID,
+ &afTriggerId, frameNumber)) {
+ return false;
+ }
+
+ if (!insert3AResult(min3AResult, ANDROID_CONTROL_AE_PRECAPTURE_ID,
+ &aeTriggerId, frameNumber)) {
+ return false;
+ }
+
+ mResultSignal.signal();
+
+ return true;
+}
+
+template<typename T>
+bool Camera3Device::get3AResult(const CameraMetadata& result, int32_t tag,
+ T* value, int32_t frameNumber) {
+ (void) frameNumber;
+
+ camera_metadata_ro_entry_t entry;
+
+ entry = result.find(tag);
+ if (entry.count == 0) {
+ ALOGVV("%s: Camera %d: Frame %d: No %s provided by HAL!", __FUNCTION__,
+ mId, frameNumber, get_camera_metadata_tag_name(tag));
+ return false;
+ }
+
+ if (sizeof(T) == sizeof(uint8_t)) {
+ *value = entry.data.u8[0];
+ } else if (sizeof(T) == sizeof(int32_t)) {
+ *value = entry.data.i32[0];
+ } else {
+ ALOGE("%s: Unexpected type", __FUNCTION__);
+ return false;
+ }
+ return true;
+}
+
+template<typename T>
+bool Camera3Device::insert3AResult(CameraMetadata& result, int32_t tag,
+ const T* value, int32_t frameNumber) {
+ if (result.update(tag, value, 1) != NO_ERROR) {
+ mResultQueue.erase(--mResultQueue.end(), mResultQueue.end());
+ SET_ERR("Frame %d: Failed to set %s in partial metadata",
+ frameNumber, get_camera_metadata_tag_name(tag));
+ return false;
+ }
+ return true;
+}
+
+/**
* Camera HAL device callback methods
*/
@@ -1400,6 +1584,8 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
frameNumber);
return;
}
+ bool partialResultQuirk = false;
+ CameraMetadata collectedQuirkResult;
// Get capture timestamp from list of in-flight requests, where it was added
// by the shutter notification for this frame. Then update the in-flight
@@ -1415,24 +1601,58 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
return;
}
InFlightRequest &request = mInFlightMap.editValueAt(idx);
+
+ // Check if this result carries only partial metadata
+ if (mUsePartialResultQuirk && result->result != NULL) {
+ camera_metadata_ro_entry_t partialResultEntry;
+ res = find_camera_metadata_ro_entry(result->result,
+ ANDROID_QUIRKS_PARTIAL_RESULT, &partialResultEntry);
+ if (res != NAME_NOT_FOUND &&
+ partialResultEntry.count > 0 &&
+ partialResultEntry.data.u8[0] ==
+ ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL) {
+ // A partial result. Flag this as such, and collect this
+ // set of metadata into the in-flight entry.
+ partialResultQuirk = true;
+ request.partialResultQuirk.collectedResult.append(
+ result->result);
+ request.partialResultQuirk.collectedResult.erase(
+ ANDROID_QUIRKS_PARTIAL_RESULT);
+ // Fire off a 3A-only result if possible
+ if (!request.partialResultQuirk.haveSent3A) {
+ request.partialResultQuirk.haveSent3A =
+ processPartial3AQuirk(frameNumber,
+ request.requestId,
+ request.partialResultQuirk.collectedResult);
+ }
+ }
+ }
+
timestamp = request.captureTimestamp;
/**
- * One of the following must happen before it's legal to call process_capture_result:
+ * One of the following must happen before it's legal to call process_capture_result,
+ * unless partial metadata is being provided:
* - CAMERA3_MSG_SHUTTER (expected during normal operation)
* - CAMERA3_MSG_ERROR (expected during flush)
*/
- if (request.requestStatus == OK && timestamp == 0) {
+ if (request.requestStatus == OK && timestamp == 0 && !partialResultQuirk) {
SET_ERR("Called before shutter notify for frame %d",
frameNumber);
return;
}
- if (result->result != NULL) {
+ // Did we get the (final) result metadata for this capture?
+ if (result->result != NULL && !partialResultQuirk) {
if (request.haveResultMetadata) {
SET_ERR("Called multiple times with metadata for frame %d",
frameNumber);
return;
}
+ if (mUsePartialResultQuirk &&
+ !request.partialResultQuirk.collectedResult.isEmpty()) {
+ collectedQuirkResult.acquire(
+ request.partialResultQuirk.collectedResult);
+ }
request.haveResultMetadata = true;
}
@@ -1444,6 +1664,7 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
return;
}
+ // Check if everything has arrived for this result (buffers and metadata)
if (request.haveResultMetadata && request.numBuffersLeft == 0) {
ATRACE_ASYNC_END("frame capture", frameNumber);
mInFlightMap.removeItemsAt(idx, 1);
@@ -1458,9 +1679,12 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
}
// Process the result metadata, if provided
- if (result->result != NULL) {
+ bool gotResult = false;
+ if (result->result != NULL && !partialResultQuirk) {
Mutex::Autolock l(mOutputLock);
+ gotResult = true;
+
if (frameNumber != mNextResultFrameNumber) {
SET_ERR("Out-of-order capture result metadata submitted! "
"(got frame number %d, expecting %d)",
@@ -1469,19 +1693,26 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
}
mNextResultFrameNumber++;
- CameraMetadata &captureResult =
- *mResultQueue.insert(mResultQueue.end(), CameraMetadata());
-
+ CameraMetadata captureResult;
captureResult = result->result;
+
if (captureResult.update(ANDROID_REQUEST_FRAME_COUNT,
(int32_t*)&frameNumber, 1) != OK) {
SET_ERR("Failed to set frame# in metadata (%d)",
frameNumber);
+ gotResult = false;
} else {
ALOGVV("%s: Camera %d: Set frame# in metadata (%d)",
__FUNCTION__, mId, frameNumber);
}
+ // Append any previous partials to form a complete result
+ if (mUsePartialResultQuirk && !collectedQuirkResult.isEmpty()) {
+ captureResult.append(collectedQuirkResult);
+ }
+
+ captureResult.sort();
+
// Check that there's a timestamp in the result metadata
camera_metadata_entry entry =
@@ -1489,10 +1720,19 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
if (entry.count == 0) {
SET_ERR("No timestamp provided by HAL for frame %d!",
frameNumber);
+ gotResult = false;
} else if (timestamp != entry.data.i64[0]) {
SET_ERR("Timestamp mismatch between shutter notify and result"
" metadata for frame %d (%lld vs %lld respectively)",
frameNumber, timestamp, entry.data.i64[0]);
+ gotResult = false;
+ }
+
+ if (gotResult) {
+ // Valid result, insert into queue
+ CameraMetadata& queuedResult =
+ *mResultQueue.insert(mResultQueue.end(), CameraMetadata());
+ queuedResult.swap(captureResult);
}
} // scope for mOutputLock
@@ -1512,7 +1752,7 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
// Finally, signal any waiters for new frames
- if (result->result != NULL) {
+ if (gotResult) {
mResultSignal.signal();
}
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 12252c8..468f641 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -188,6 +188,9 @@ class Camera3Device :
// Need to hold on to stream references until configure completes.
Vector<sp<camera3::Camera3StreamInterface> > mDeletedStreams;
+ // Whether quirk ANDROID_QUIRKS_USE_PARTIAL_RESULT is enabled
+ bool mUsePartialResultQuirk;
+
/**** End scope for mLock ****/
class CaptureRequest : public LightRefBase<CaptureRequest> {
@@ -445,6 +448,18 @@ class Camera3Device :
// buffers
int numBuffersLeft;
+ // Fields used by the partial result quirk only
+ struct PartialResultQuirkInFlight {
+ // Set by process_capture_result once 3A has been sent to clients
+ bool haveSent3A;
+ // Result metadata collected so far, when partial results are in use
+ CameraMetadata collectedResult;
+
+ PartialResultQuirkInFlight():
+ haveSent3A(false) {
+ }
+ } partialResultQuirk;
+
// Default constructor needed by KeyedVector
InFlightRequest() :
requestId(0),
@@ -472,6 +487,22 @@ class Camera3Device :
int32_t numBuffers);
/**
+ * For the partial result quirk, check if all 3A state fields are available
+ * and if so, queue up 3A-only result to the client. Returns true if 3A
+ * is sent.
+ */
+ bool processPartial3AQuirk(int32_t frameNumber, int32_t requestId,
+ const CameraMetadata& partial);
+
+ // Helpers for reading and writing 3A metadata into to/from partial results
+ template<typename T>
+ bool get3AResult(const CameraMetadata& result, int32_t tag,
+ T* value, int32_t frameNumber);
+
+ template<typename T>
+ bool insert3AResult(CameraMetadata &result, int32_t tag, const T* value,
+ int32_t frameNumber);
+ /**
* Tracking for idle detection
*/
sp<camera3::StatusTracker> mStatusTracker;
diff --git a/services/camera/libcameraservice/utils/CameraTraces.cpp b/services/camera/libcameraservice/utils/CameraTraces.cpp
new file mode 100644
index 0000000..346e15f
--- /dev/null
+++ b/services/camera/libcameraservice/utils/CameraTraces.cpp
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+#define LOG_TAG "CameraTraces"
+#define ATRACE_TAG ATRACE_TAG_CAMERA
+//#define LOG_NDEBUG 0
+
+#include "utils/CameraTraces.h"
+#include <utils/ProcessCallStack.h>
+
+#include <utils/Mutex.h>
+#include <utils/List.h>
+
+#include <utils/Log.h>
+#include <cutils/trace.h>
+
+namespace android {
+namespace camera3 {
+
+struct CameraTracesImpl {
+ Mutex tracesLock;
+ List<ProcessCallStack> pcsList;
+}; // class CameraTraces::Impl;
+
+static CameraTracesImpl gImpl;
+CameraTracesImpl& CameraTraces::sImpl = gImpl;
+
+void CameraTraces::saveTrace() {
+ ALOGV("%s: begin", __FUNCTION__);
+ ATRACE_BEGIN("CameraTraces::saveTrace");
+ Mutex::Autolock al(sImpl.tracesLock);
+
+ List<ProcessCallStack>& pcsList = sImpl.pcsList;
+
+ // Insert new ProcessCallStack, and immediately crawl all the threads
+ pcsList.push_front(ProcessCallStack());
+ ProcessCallStack& pcs = *pcsList.begin();
+ pcs.update();
+
+ if (pcsList.size() > MAX_TRACES) {
+ // Prune list periodically and discard oldest entry
+ pcsList.erase(--pcsList.end());
+ }
+
+ IF_ALOGV() {
+ pcs.log(LOG_TAG, ANDROID_LOG_VERBOSE);
+ }
+
+ ALOGD("Process trace saved. Use dumpsys media.camera to view.");
+
+ ATRACE_END();
+}
+
+status_t CameraTraces::dump(int fd, const Vector<String16> &args __attribute__((unused))) {
+ ALOGV("%s: fd = %d", __FUNCTION__, fd);
+ Mutex::Autolock al(sImpl.tracesLock);
+ List<ProcessCallStack>& pcsList = sImpl.pcsList;
+
+ if (fd < 0) {
+ ALOGW("%s: Negative FD (%d)", __FUNCTION__, fd);
+ return BAD_VALUE;
+ }
+
+ fdprintf(fd, "Camera traces (%zu):\n", pcsList.size());
+
+ if (pcsList.empty()) {
+ fdprintf(fd, " No camera traces collected.\n");
+ }
+
+ // Print newest items first
+ List<ProcessCallStack>::iterator it, end;
+ for (it = pcsList.begin(), end = pcsList.end(); it != end; ++it) {
+ const ProcessCallStack& pcs = *it;
+ pcs.dump(fd, DUMP_INDENT);
+ }
+
+ return OK;
+}
+
+}; // namespace camera3
+}; // namespace android
diff --git a/services/camera/libcameraservice/utils/CameraTraces.h b/services/camera/libcameraservice/utils/CameraTraces.h
new file mode 100644
index 0000000..d10dbc9
--- /dev/null
+++ b/services/camera/libcameraservice/utils/CameraTraces.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2013 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_SERVERS_CAMERA_TRACES_H_
+#define ANDROID_SERVERS_CAMERA_TRACES_H_
+
+#include <utils/Errors.h>
+#include <utils/String16.h>
+#include <utils/Vector.h>
+
+namespace android {
+namespace camera3 {
+
+class CameraTracesImpl;
+
+// Collect a list of the process's stack traces
+class CameraTraces {
+public:
+ /**
+ * Save the current stack trace for each thread in the process. At most
+ * MAX_TRACES will be saved, after which the oldest traces will be discarded.
+ *
+ * <p>Use CameraTraces::dump to print out the traces.</p>
+ */
+ static void saveTrace();
+
+ /**
+ * Prints all saved traces to the specified file descriptor.
+ *
+ * <p>Each line is indented by DUMP_INDENT spaces.</p>
+ */
+ static status_t dump(int fd, const Vector<String16>& args);
+
+private:
+ enum {
+ // Don't collect more than 100 traces. Discard oldest.
+ MAX_TRACES = 100,
+
+ // Insert 2 spaces when dumping the traces
+ DUMP_INDENT = 2,
+ };
+
+ CameraTraces();
+ ~CameraTraces();
+ CameraTraces(CameraTraces& rhs);
+
+ static CameraTracesImpl& sImpl;
+}; // class CameraTraces
+
+}; // namespace camera3
+}; // namespace android
+
+#endif // ANDROID_SERVERS_CAMERA_TRACES_H_