summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Geboski <jgeboski@gmail.com>2015-10-17 20:41:26 -0400
committerJames Geboski <jgeboski@gmail.com>2015-10-17 20:41:26 -0400
commit610c4cab916fb9e27e44c0db325d9892ab5c1921 (patch)
treef2f725a278496d6aed2989fbd591674bc3a72284
parentd4b72fee49e9b773adfa83311c01515a962de75f (diff)
parent914eb216a5ed4c6de1aac76fd348a6f36cf6ef04 (diff)
downloadpidgin-610c4cab916fb9e27e44c0db325d9892ab5c1921.tar.gz
Merge default into facebook
-rw-r--r--COPYRIGHT2
-rw-r--r--ChangeLog2
-rw-r--r--configure.ac430
-rw-r--r--finch/gntsound.c1
-rw-r--r--libpurple/accounts.c35
-rw-r--r--libpurple/buddyicon.c22
-rw-r--r--libpurple/conversation.h7
-rw-r--r--libpurple/data/purple-3.pc.in2
-rw-r--r--libpurple/http.c6
-rw-r--r--libpurple/log.c110
-rw-r--r--libpurple/media.h6
-rw-r--r--libpurple/media/backend-fs2.c163
-rw-r--r--libpurple/media/backend-fs2.h8
-rw-r--r--libpurple/media/backend-iface.c2
-rw-r--r--libpurple/mediamanager.c77
-rw-r--r--libpurple/mediamanager.h4
-rw-r--r--libpurple/plugins/log_reader.c151
-rw-r--r--libpurple/plugins/ssl/ssl-gnutls.c16
-rw-r--r--libpurple/protocols/jabber/gtalk.c5
-rw-r--r--libpurple/protocols/jabber/jabber.c8
-rw-r--r--libpurple/protocols/jabber/jabber.h1
-rw-r--r--libpurple/protocols/jabber/presence.c2
-rw-r--r--libpurple/protocols/jabber/xmpp.c5
-rw-r--r--libpurple/protocols/novell/nmrtf.c4
-rw-r--r--libpurple/protocols/oscar/clientlogin.c4
-rw-r--r--libpurple/protocols/oscar/oscar.c1
-rw-r--r--libpurple/protocols/yahoo/Makefile.am2
-rw-r--r--libpurple/protocols/yahoo/Makefile.mingw1
-rw-r--r--libpurple/protocols/yahoo/util.c27
-rw-r--r--libpurple/protocols/yahoo/yahoo.c12
-rw-r--r--libpurple/protocols/yahoo/yahoo_aliases.c65
-rw-r--r--libpurple/protocols/yahoo/yahoo_filexfer.c17
-rw-r--r--libpurple/protocols/yahoo/yahoo_filexfer.h2
-rw-r--r--libpurple/protocols/yahoo/yahoo_friend.c68
-rw-r--r--libpurple/protocols/yahoo/yahoo_friend.h1
-rw-r--r--libpurple/protocols/yahoo/yahoo_packet.c7
-rw-r--r--libpurple/protocols/yahoo/yahoo_packet.h4
-rw-r--r--libpurple/protocols/yahoo/yahoo_picture.c5
-rw-r--r--libpurple/protocols/yahoo/yahoo_profile.c45
-rw-r--r--libpurple/protocols/yahoo/yahoochat.c22
-rw-r--r--libpurple/protocols/yahoo/ymsg.c529
-rw-r--r--libpurple/protocols/yahoo/ymsg.h42
-rw-r--r--libpurple/protocols/zephyr/sysdep.h11
-rw-r--r--libpurple/proxy.c3
-rw-r--r--libpurple/smiley-custom.c20
-rw-r--r--libpurple/stun.c12
-rw-r--r--libpurple/xfer.c44
-rw-r--r--pidgin/gtkconv.c101
-rw-r--r--pidgin/gtkplugin.c2
-rw-r--r--pidgin/gtksound.c1
-rw-r--r--pidgin/gtkutils.c74
-rw-r--r--pidgin/gtkwebview.c45
-rw-r--r--pidgin/gtkwebview.h27
-rw-r--r--pidgin/pixmaps/emotes/default/24/default.theme.in92
-rw-r--r--pidgin/pixmaps/emotes/small/16/small.theme.in36
-rw-r--r--pidgin/plugins/Makefile.am4
-rw-r--r--pidgin/plugins/Makefile.mingw7
-rw-r--r--pidgin/plugins/crazychat/Makefile.am43
-rw-r--r--pidgin/plugins/crazychat/QTUtilities.c306
-rw-r--r--pidgin/plugins/crazychat/QTUtilities.h65
-rw-r--r--pidgin/plugins/crazychat/Utilities.c283
-rw-r--r--pidgin/plugins/crazychat/Utilities.h83
-rw-r--r--pidgin/plugins/crazychat/camdata.c213
-rw-r--r--pidgin/plugins/crazychat/camdata.h63
-rw-r--r--pidgin/plugins/crazychat/camproc.c812
-rw-r--r--pidgin/plugins/crazychat/camproc.h29
-rw-r--r--pidgin/plugins/crazychat/cc_features.c504
-rw-r--r--pidgin/plugins/crazychat/cc_gtk_gl.c288
-rw-r--r--pidgin/plugins/crazychat/cc_gtk_gl.h50
-rw-r--r--pidgin/plugins/crazychat/cc_interface.h129
-rw-r--r--pidgin/plugins/crazychat/cc_network.c540
-rw-r--r--pidgin/plugins/crazychat/cc_network.h78
-rw-r--r--pidgin/plugins/crazychat/cc_output.c353
-rw-r--r--pidgin/plugins/crazychat/cc_pidgin_plugin.c484
-rw-r--r--pidgin/plugins/crazychat/crazychat.c96
-rw-r--r--pidgin/plugins/crazychat/crazychat.h46
-rw-r--r--pidgin/plugins/crazychat/dog_lids.c48
-rw-r--r--pidgin/plugins/crazychat/dog_lids.h3
-rw-r--r--pidgin/plugins/crazychat/doggy.c227
-rw-r--r--pidgin/plugins/crazychat/doggy.h10
-rw-r--r--pidgin/plugins/crazychat/draw.c107
-rw-r--r--pidgin/plugins/crazychat/eye.c812
-rw-r--r--pidgin/plugins/crazychat/eye.h1
-rw-r--r--pidgin/plugins/crazychat/eyes.c589
-rw-r--r--pidgin/plugins/crazychat/eyes.h3
-rw-r--r--pidgin/plugins/crazychat/face.c38
-rw-r--r--pidgin/plugins/crazychat/face.h44
-rw-r--r--pidgin/plugins/crazychat/filter.c124
-rw-r--r--pidgin/plugins/crazychat/filter.h19
-rw-r--r--pidgin/plugins/crazychat/glm.c1964
-rw-r--r--pidgin/plugins/crazychat/glm.h269
-rw-r--r--pidgin/plugins/crazychat/lids.c4080
-rw-r--r--pidgin/plugins/crazychat/lids.h3
-rw-r--r--pidgin/plugins/crazychat/main.c25
-rw-r--r--pidgin/plugins/crazychat/mat_struct.h12
-rw-r--r--pidgin/plugins/crazychat/models.c75
-rw-r--r--pidgin/plugins/crazychat/models.h9
-rw-r--r--pidgin/plugins/crazychat/sharky.c249
-rw-r--r--pidgin/plugins/crazychat/sharky.h10
-rw-r--r--pidgin/plugins/crazychat/test.h8
-rw-r--r--pidgin/plugins/crazychat/util.h40
-rw-r--r--pidgin/plugins/gtkbuddynote.c45
-rw-r--r--pidgin/plugins/notify.c50
-rw-r--r--pidgin/plugins/themeedit-icon.c326
-rw-r--r--pidgin/plugins/themeedit-icon.h28
-rw-r--r--pidgin/plugins/themeedit.c338
-rw-r--r--pidgin/win32/nsis/nsis_translations.desktop.in2
-rw-r--r--pidgin/win32/nsis/pidgin-installer.nsi1
-rw-r--r--po/POTFILES.in3
-rw-r--r--po/br.po35
-rw-r--r--po/brx.po35
-rw-r--r--po/es_AR.po35
-rw-r--r--po/hy.po35
-rw-r--r--po/kk.po35
-rw-r--r--po/ks.po35
-rw-r--r--po/lv.po35
-rw-r--r--po/ms_MY.po35
-rw-r--r--po/pl.po34
-rw-r--r--po/sd.po35
-rw-r--r--po/tt.po35
-rw-r--r--po/uz.po35
121 files changed, 516 insertions, 16332 deletions
diff --git a/COPYRIGHT b/COPYRIGHT
index 2f5ed77e3e..3581f4a35c 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -22,6 +22,7 @@ Saleem Abdulrasool
Jakub Adam
Dave Ahlswede
Haval A. Ahmed
+Sorokin Alexei
Thijs Alkemade
Manuel Amador
Matt Amato
@@ -487,6 +488,7 @@ Carsten Schaar
Toby Schaffer
Jonathan Schleifer <js-pidgin@webkeks.org>
Luke Schierer
+Sebastian Schmidt <yath@yath.de>
Ralph Schmieder
David Schmitt
Heiko Schmitt
diff --git a/ChangeLog b/ChangeLog
index a8bdc89235..d7af9aaede 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,8 @@ version 3.0.0 (??/??/????):
plugins support.
* Added dependency gobject-introspection, which is now required to enable
non-native plugin support.
+ * Removed flags for manually configuring GnuTLS and NSS. They are now only
+ recognized through pkg-config. (Michael McConville)
libpurple:
* Specify a different set of encryption ciphers for TLS connections when
diff --git a/configure.ac b/configure.ac
index bf4df893e0..2e7245dce3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1153,14 +1153,7 @@ if test "x$enable_farstream" != "xno"; then
AC_SUBST(FARSTREAM_CFLAGS)
AC_SUBST(FARSTREAM_LIBS)
], [
- # Try farsight.
- PKG_CHECK_MODULES(FARSTREAM, [farsight2-0.10 >= 0.0.9], [
- AC_DEFINE(HAVE_FARSIGHT, 1, [Use Farsight instead of Farstream])
- AC_SUBST(FARSTREAM_CFLAGS)
- AC_SUBST(FARSTREAM_LIBS)
- ], [
- enable_farstream="no"
- ])
+ enable_farstream="no"
])
fi
fi
@@ -1193,14 +1186,12 @@ dnl #######################################################################
dnl # Check for Raw data streams support in Farstream
dnl #######################################################################
if test "x$enable_vv" != "xno" -a "x$with_gstreamer" == "x1.0"; then
- AC_MSG_CHECKING(for raw data support in Farstream)
PKG_CHECK_MODULES(GSTAPP, [gstreamer-app-1.0], [
AC_DEFINE(USE_GSTAPP, 1, [Use GStreamer Video Overlay support])
AC_SUBST(GSTAPP_CFLAGS)
AC_SUBST(GSTAPP_LIBS)
AC_DEFINE(HAVE_MEDIA_APPLICATION, 1, [Define if we have support for application media type.])
- AC_MSG_RESULT(yes)
- ], [AC_MSG_RESULT(no)])
+ ] , )
fi
dnl #######################################################################
@@ -1404,6 +1395,7 @@ else
AC_DEFINE_UNQUOTED(GG_CONFIG_GNUTLS_SYSTEM_TRUST_STORE, ["$gg_gnutls_sts"], [use the given file as GnuTLS default trust store])
fi
+ dnl # redundant - only here to stay compatible with libgadu upstream
PKG_CHECK_MODULES([GNUTLS_2_10], [gnutls >= 2.10.0], [
AC_DEFINE([HAVE_GNUTLS_2_10], [], [Defined if GnuTLS >= 2.10.0 is available.])
],:)
@@ -1897,13 +1889,21 @@ dnl #######################################################################
dnl # Check for GPlugin 0.0.17
dnl #######################################################################
if test "x$enable_plugins" = "xyes" ; then
- PKG_CHECK_MODULES(GPLUGIN, [gplugin >= 0.0.17 gmodule-2.0], , [
+ PKG_CHECK_MODULES(GPLUGIN, [gplugin >= 0.0.17 gmodule-2.0], [
+ dnl # GPLUGIN_REQ sets pkg-config requirements in the .pc file
+ if test "x$with_gtk" != "xno" ; then
+ GPLUGIN_REQ=[", gplugin, gplugin-gtk"]
+ else
+ GPLUGIN_REQ=[", gplugin"]
+ fi
+ ], [
AC_MSG_RESULT(no)
AC_MSG_ERROR([
GPlugin 0.0.17 development headers not found, which are required if you wish to
enable plugins.
Use --disable-plugins if you want to disable plugins.
])])
+ AC_SUBST(GPLUGIN_REQ)
AC_SUBST(GPLUGIN_CFLAGS)
AC_SUBST(GPLUGIN_LIBS)
else
@@ -2086,403 +2086,69 @@ AC_ARG_ENABLE(nss,
msg_ssl="None. MSN, Yahoo!, Novell Groupwise and Google Talk will not work without GnuTLS or NSS. OpenSSL is NOT usable!"
looked_for_gnutls="no"
dnl #
-dnl # Check for GnuTLS if it's specified.
+dnl # Check for GnuTLS if it isn't disabled
dnl #
if test "x$enable_gnutls" != "xno"; then
- enable_gnutls="no"
- prefix=`eval echo $prefix`
looked_for_gnutls="yes"
- AC_ARG_WITH(gnutls-includes,
- [ --with-gnutls-includes=PREFIX location of GnuTLS includes.],
- [ with_gnutls_includes="$withval" ],
- [ with_gnutls_includes="$prefix/include" ])
-
- have_gnutls_includes="no"
-
- if test "x$with_gnutls_includes" != "xno"; then
- CPPFLAGS_save="$CPPFLAGS"
-
- AC_MSG_CHECKING(for GnuTLS includes)
- AC_MSG_RESULT("")
-
- CPPFLAGS="$CPPFLAGS -I$with_gnutls_includes"
- AC_CHECK_HEADERS(gnutls/gnutls.h, [ gnutls_includes="yes" ])
- CPPFLAGS="$CPPFLAGS_save"
-
- if test "x$gnutls_includes" != "xno" -a \
- "x$gnutls_includes" != "x"; then
- have_gnutls_includes="yes"
-
- if test "x$with_gnutls_includes" != "xNONE/include"; then
- GNUTLS_CFLAGS="-I$with_gnutls_includes"
- fi
- else
- GNUTLS_CFLAGS=""
- fi
- else
- AC_MSG_CHECKING(for GnuTLS includes)
- AC_MSG_RESULT(no)
- fi
-
- AC_ARG_WITH(gnutls-libs,
- [AS_HELP_STRING([--with-gnutls-libs=PREFIX], [location of GnuTLS libraries.])],
- [ with_gnutls_libs="$withval" ])
-
- if test "x$with_gnutls_libs" != "xno" -a \
- "x$have_gnutls_includes" != "xno"; then
-
- LIBS_save="$LIBS"
-
- case $with_gnutls_libs in
- ""|-L*) ;;
- *) with_gnutls_libs="-L$with_gnutls_libs" ;;
- esac
-
- AC_CACHE_CHECK([for GnuTLS libraries], ac_cv_gnutls_libs,
- [
- LIBS="$LIBS $with_gnutls_libs -lgnutls"
- AC_LINK_IFELSE([AC_LANG_CALL([], [gnutls_init])], ac_cv_gnutls_libs="yes", ac_cv_gnutls_libs="no")
- LIBS="$LIBS_save"
+ if `$PKG_CONFIG --exists gnutls`; then
+ dnl # minimum required version should almost certainly be higher
+ PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.10], [
+ have_gnutls="yes"
+ ], [
+ AC_MSG_RESULT(no)
+ have_gnutls="no"
])
-
- if test "x$ac_cv_gnutls_libs" != "xno"; then
- AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have GnuTLS])
- AC_DEFINE(HAVE_SSL)
- msg_gnutls="GnuTLS"
- GNUTLS_LIBS="$with_gnutls_libs -lgnutls"
-
- enable_gnutls="yes"
- else
- GNUTLS_CFLAGS=""
- GNUTLS_LIBS=""
- fi
- else
- AC_MSG_CHECKING(for GnuTLS libraries)
- AC_MSG_RESULT(no)
fi
-else
- GNUTLS_CFLAGS=""
- GNUTLS_LIBS=""
-fi
-AC_SUBST(GNUTLS_CFLAGS)
-AC_SUBST(GNUTLS_LIBS)
+ if test "x$have_gnutls" = "xyes"; then
-if test "x$enable_gnutls" = "xyes"; then
- AC_MSG_CHECKING(for gnutls_priority_set_direct and gnutls_priority_set)
- LIBS_save="$LIBS"
- LIBS="$LIBS $GNUTLS_LIBS"
- CPPFLAGS_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>]],
- [[gnutls_session s; gnutls_priority_set_direct(s, NULL, NULL); gnutls_priority_set(s, NULL);]])],
- [AC_DEFINE([HAVE_GNUTLS_PRIORITY_FUNCS], 1,
- [Define if your gnutls has gnutls_priority_set_direct and friends])
- AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)])
- CPPFLAGS="$CPPFLAGS_save"
- LIBS="$LIBS_save"
-fi
+ AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have GnuTLS])
+ AC_DEFINE(HAVE_SSL, 1, [Define if you have SSL])
-if test "x$enable_gnutls" = "xyes"; then
- AC_MSG_CHECKING(for GNUTLS_CERT_INSECURE_ALGORITHM)
- LIBS_save="$LIBS"
- LIBS="$LIBS $GNUTLS_LIBS"
- CPPFLAGS_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>]],
- [[unsigned int verify = GNUTLS_CERT_INSECURE_ALGORITHM;]])],
- [AC_DEFINE([HAVE_GNUTLS_CERT_INSECURE_ALGORITHM], 1,
- [Define if your gnutls has the GNUTLS_CERT_INSECURE_ALGORITHM flag])
- AC_MSG_RESULT(yes)],
- [AC_MSG_RESULT(no)])
- CPPFLAGS="$CPPFLAGS_save"
- LIBS="$LIBS_save"
+ msg_gnutls="GnuTLS"
+ fi
fi
-
-AM_CONDITIONAL(USE_GNUTLS, test "x$enable_gnutls" = "xyes")
+AM_CONDITIONAL(USE_GNUTLS, test "x$have_gnutls" = "xyes")
dnl #
-dnl # Check for NSS if it's specified, or if GnuTLS checks failed.
+dnl # Check for NSS if it isn't disabled
dnl #
looked_for_nss="no"
if test "x$enable_nss" != "xno"; then
looked_for_nss="yes"
- AC_ARG_WITH(nspr-includes,
- [AS_HELP_STRING([--with-nspr-includes=PREFIX], [specify location of Mozilla nspr4 includes.])],
- [with_nspr_includes="$withval"])
-
- AC_ARG_WITH(nspr-libs,
- [AS_HELP_STRING([--with-nspr-libs=PREFIX], [specify location of Mozilla nspr4 libs.])],
- [with_nspr_libs="$withval"])
-
- AC_ARG_WITH(nss-includes,
- [AS_HELP_STRING([--with-nss-includes=PREFIX], [specify location of Mozilla nss3 includes.])],
- [with_nss_includes="$withval"])
-
- AC_ARG_WITH(nss-libs,
- [AS_HELP_STRING([--with-nss-libs=PREFIX], [specify location of Mozilla nss3 libs.])],
- [with_nss_libs="$withval"])
-
-
- if test -n "$with_nspr_includes" || test -n "$with_nspr_libs" || \
- test -n "$with_nss_includes" || test -n "$with_nss_libs" ||
- test "x$enable_nss" = "xstatic"; then
-
- nss_manual_check="yes"
- else
- nss_manual_check="no"
- fi
-
- enable_nss="no"
-
- if test "x$nss_manual_check" = "xno"; then
- if `$PKG_CONFIG --exists mozilla-nss`; then
- PKG_CHECK_MODULES(NSS, mozilla-nss, [
- have_nss="yes"
- ], [
- AC_MSG_RESULT(no)
- have_nss="no"
- ])
- mozilla_nspr="mozilla-nspr"
- mozilla_nss="mozilla-nss"
- elif `$PKG_CONFIG --exists nss`; then
- PKG_CHECK_MODULES(NSS, nss, [
- have_nss="yes"
- ], [
- AC_MSG_RESULT(no)
- have_nss="no"
- ])
- mozilla_nspr="nspr"
- mozilla_nss="nss"
- elif `$PKG_CONFIG --exists microb-engine-nss`; then
- PKG_CHECK_MODULES(NSS, microb-engine-nss, [
- have_nss="yes"
- ], [
- AC_MSG_RESULT(no)
- have_nss="no"
- ])
- mozilla_nspr="mozilla-nspr"
- mozilla_nss="microb-engine-nss"
- fi
-
- if test "x$have_nss" = "xyes"; then
-
- AC_DEFINE(HAVE_NSS, 1, [Define if you have Mozilla NSS])
- AC_DEFINE(HAVE_SSL, 1, [Define if you have SSL])
-
- msg_nss="Mozilla NSS"
- enable_nss="yes"
- else
- nss_manual_check="yes"
- fi
- fi
-
- if test "x$nss_manual_check" = "xyes"; then
- mozilla_nss=""
- have_nspr_includes="no"
-
- if test "x$with_nspr_includes" != "xno"; then
- CPPFLAGS_save=$CPPFLAGS
-
- AC_MSG_CHECKING(for Mozilla nspr4 includes in $with_nspr_includes)
- AC_MSG_RESULT("")
-
- CPPFLAGS="$CPPFLAGS -I$with_nspr_includes"
- AC_CHECK_HEADERS(nspr.h prio.h, [ moz_nspr_includes="yes" ])
- CPPFLAGS=$CPPFLAGS_save
-
- if test "x$moz_nspr_includes" != "xno" -a \
- "x$moz_nspr_includes" != "x"; then
-
- have_nspr_includes="yes"
- NSPR_CFLAGS="-I$with_nspr_includes"
- fi
- else
- AC_MSG_CHECKING(for Mozilla nspr4 includes)
- AC_MSG_RESULT(no)
-
- enable_nss="no"
- fi
-
- have_nspr_libs="no"
-
- if test "x$with_nspr_libs" != "xno" -a \
- "x$have_nspr_includes" != "xno"; then
-
- CFLAGS_save=$CFLAGS
- LDFLAGS_save=$LDFLAGS
-
- if test "$enable_nss" = "static"; then
- if test -z "$with_nspr_libs"; then
- AC_MSG_ERROR(
- [Static linkage requested, but path to nspr libraries not set.]
- [Please specify the path to libnspr4.a]
- [Example: --with-nspr-libs=/usr/lib])
-
- enable_nss="no"
- else
- nsprlibs="$LIBDL $with_nspr_libs/libplc4.a $with_nspr_libs/libplds4.a $with_nspr_libs/libnspr4.a $PTHREAD_LIB"
- fi
- else
- nsprlibs="$LIBDL -lplc4 -lplds4 -lnspr4 $PTHREAD_LIB"
- fi
-
- AC_CACHE_CHECK([for Mozilla nspr libraries], ac_cv_moz_nspr_libs,
- [
- LIBS_save=$LIBS
- CFLAGS="$CFLAGS $NSPR_CFLAGS"
-
- LIBS="$nsprlibs"
-
- if test "x$with_nspr_libs" != "x"; then
- LDFLAGS="$LDFLAGS -L$with_nspr_libs"
- else
- LDFLAGS="$LDFLAGS"
- fi
-
- AC_LINK_IFELSE([AC_LANG_CALL([], [PR_Init])],
- [ac_cv_moz_nspr_libs="yes"],
- [ac_cv_moz_nspr_libs="no"])
-
- CFLAGS=$CFLAGS_save
- LDFLAGS=$LDFLAGS_save
- LIBS=$LIBS_save
- ])
-
- if test "x$ac_cv_moz_nspr_libs" != "xno"; then
- have_nspr_libs="yes"
- NSPR_LIBS="-L$with_nspr_libs $nsprlibs"
- else
- NSPR_CFLAGS=""
- enable_nss="no"
- fi
- else
- AC_MSG_CHECKING(for Mozilla nspr4 libraries)
+ if `$PKG_CONFIG --exists mozilla-nss`; then
+ dnl # TODO: set required minimum version
+ PKG_CHECK_MODULES(NSS, mozilla-nss, [
+ have_nss="yes"
+ ], [
AC_MSG_RESULT(no)
- fi
-
- have_nss_includes="no"
-
- if test "x$with_nss_includes" != "xno" -a \
- "x$have_nspr_libs" != "xno"; then
-
- CPPFLAGS_save=$CPPFLAGS
-
- AC_MSG_CHECKING(for Mozilla nss3 includes in $with_nss_includes)
- AC_MSG_RESULT("")
-
- if test "x$with_nspr_includes" != "x"; then
- CPPFLAGS="$CPPFLAGS -I$with_nspr_includes -I$with_nss_includes"
- else
- CPPFLAGS="$CPPFLAGS -I$with_nss_includes"
- fi
-
- AC_CHECK_HEADERS(nss.h ssl.h smime.h,
- [moz_nss_includes="yes"],
- [moz_nss_includes="no"])
-
- CPPFLAGS=$CPPFLAGS_save
-
- if test "x$moz_nss_includes" = "xyes"; then
- have_nss_includes="yes"
- NSS_CFLAGS="-I$with_nss_includes"
- else
- NSPR_CFLAGS=""
- NSPR_LIBS=""
- enable_nss="no"
- fi
- else
- AC_MSG_CHECKING(for Mozilla nss3 includes)
+ have_nss="no"
+ ])
+ elif `$PKG_CONFIG --exists nss`; then
+ dnl # TODO: set required minimum version
+ PKG_CHECK_MODULES(NSS, nss, [
+ have_nss="yes"
+ ], [
AC_MSG_RESULT(no)
- enable_nss="no"
- fi
-
- if test "x$with_nss_libs" != "xno" -a \
- "x$have_nss_includes" != "xno"; then
-
- LDFLAGS_save=$LDFLAGS
-
- if test "$enable_nss" = "static"; then
- if test -z "$with_nss_libs"; then
- AC_MSG_ERROR(
- [Static linkage requested, but path to nss libraries not set.]
- [Please specify the path to libnss3.a]
- [Example: --with-nspr-libs=/usr/lib/mozilla])
- enable_nss="no"
- else
- nsslibs="-ldb1 $with_nss_libs/libnssckfw.a $with_nss_libs/libasn1.a $with_nss_libs/libcrmf.a $with_nss_libs/libswfci.a $with_nss_libs/libjar.a $with_nss_libs/libpkcs12.a $with_nss_libs/libpkcs7.a $with_nss_libs/libpki1.a $with_nss_libs/libsmime.a $with_nss_libs/libssl.a $with_nss_libs/libnss.a $with_nss_libs/libpk11wrap.a $with_nss_libs/libsoftokn.a $with_nss_libs/libfreebl.a $with_nss_libs/libnsspki.a $with_nss_libs/libnssdev.a $with_nss_libs/libcryptohi.a $with_nss_libs/libcerthi.a $with_nss_libs/libcertdb.a $with_nss_libs/libsecutil.a $with_nss_libs/libnssb.a"
-
- case "$host" in
- *solaris*)
- nsslibs="$nsslibs $with_nss_libs/libfreeb1.a"
- ;;
- esac
- fi
- else
- nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3"
- fi
-
- AC_CACHE_CHECK([for Mozilla nss libraries], ac_cv_moz_nss_libs,
- [
- LIBS_save=$LIBS
- LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs"
- LIBS="$nsslibs $nsprlibs"
-
- AC_LINK_IFELSE([AC_LANG_CALL([], [NSS_Init])],
- [ac_cv_moz_nss_libs="yes"],
- [ac_cv_moz_nss_libs="no"])
-
- if test "x$ac_cv_moz_nss_libs" = "xno"; then
- nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3"
- LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs"
- LIBS="$LIBS $nsslibs"
- AC_LINK_IFELSE([AC_LANG_CALL([], [NSS_Init])],
- [ac_cv_moz_nss_libs="yes"],
- [ac_cv_moz_nss_libs="no"])
- fi
-
- LDFLAGS=$LDFLAGS_save
- LIBS=$LIBS_save
- ])
-
- if test "x$ac_cv_moz_nss_libs" != "xno"; then
- AC_DEFINE(HAVE_NSS)
- AC_DEFINE(HAVE_SSL)
+ have_nss="no"
+ ])
+ fi
- NSS_LIBS="-L$with_nss_libs $nsslibs"
+ if test "x$have_nss" = "xyes"; then
- if test "$enable_nss" = "static"; then
- msg_nss="Mozilla NSS (static)"
- else
- msg_nss="Mozilla NSS"
- fi
+ AC_DEFINE(HAVE_NSS, 1, [Define if you have Mozilla NSS])
+ AC_DEFINE(HAVE_SSL, 1, [Define if you have SSL])
- enable_nss="yes"
- else
- NSS_CFLAGS=""
- NSPR_CFLAGS=""
- NSPR_LIBS=""
- enable_nss="no"
- fi
- else
- AC_MSG_CHECKING(for Mozilla nss libraries)
- AC_MSG_RESULT(no)
- fi
-
- NSS_CFLAGS="$NSPR_CFLAGS $NSS_CFLAGS"
- NSS_LIBS="$NSPR_LIBS $NSS_LIBS"
+ msg_nss="Mozilla NSS"
fi
-
- AC_SUBST(NSS_CFLAGS)
- AC_SUBST(NSS_LIBS)
fi
-AM_CONDITIONAL(USE_NSS, test "x$enable_nss" = "xyes")
+AM_CONDITIONAL(USE_NSS, test "x$have_nss" = "xyes")
+
if test "x$msg_nss" != "x" -a "x$msg_gnutls" != "x"; then
msg_ssl="$msg_nss and $msg_gnutls"
diff --git a/finch/gntsound.c b/finch/gntsound.c
index 999c86c5fa..1a89d60408 100644
--- a/finch/gntsound.c
+++ b/finch/gntsound.c
@@ -439,6 +439,7 @@ bus_call (GstBus *bus, GstMessage *msg, gpointer data)
case GST_MESSAGE_EOS:
gst_element_set_state(play, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(play));
+ return FALSE;
break;
case GST_MESSAGE_WARNING:
gst_message_parse_warning(msg, &err, NULL);
diff --git a/libpurple/accounts.c b/libpurple/accounts.c
index 19c652ac45..69b4cefc01 100644
--- a/libpurple/accounts.c
+++ b/libpurple/accounts.c
@@ -89,38 +89,6 @@ purple_accounts_schedule_save(void)
save_timer = purple_timeout_add_seconds(5, save_cb, NULL);
}
-/*********************************************************************
- * Reading from disk *
- *********************************************************************/
-static void
-migrate_yahoo_japan(PurpleAccount *account)
-{
- /* detect a Yahoo! JAPAN account that existed prior to 2.6.0 and convert it
- * to use the new yahoojp protocol. Also remove the account-specific settings
- * we no longer need */
-
- if(purple_strequal(purple_account_get_protocol_id(account), "prpl-yahoo")) {
- if(purple_account_get_bool(account, "yahoojp", FALSE)) {
- const char *serverjp = purple_account_get_string(account, "serverjp", NULL);
- const char *xferjp_host = purple_account_get_string(account, "xferjp_host", NULL);
-
- g_return_if_fail(serverjp != NULL);
- g_return_if_fail(xferjp_host != NULL);
-
- purple_account_set_string(account, "server", serverjp);
- purple_account_set_string(account, "xfer_host", xferjp_host);
-
- purple_account_set_protocol_id(account, "prpl-yahoojp");
- }
-
- /* these should always be nuked */
- purple_account_remove_setting(account, "yahoojp");
- purple_account_remove_setting(account, "serverjp");
- purple_account_remove_setting(account, "xferjp_host");
-
- }
-}
-
static void
migrate_icq_server(PurpleAccount *account)
{
@@ -226,9 +194,6 @@ parse_settings(PurpleXmlNode *node, PurpleAccount *account)
}
/* we do this here because we need access to account settings to determine
- * if we can/should migrate an old Yahoo! JAPAN account */
- migrate_yahoo_japan(account);
- /* we do this here because we need access to account settings to determine
* if we can/should migrate an ICQ account's server setting */
migrate_icq_server(account);
/* we do this here because we need to do it before the user views the
diff --git a/libpurple/buddyicon.c b/libpurple/buddyicon.c
index 22b16b4ab0..0bdbc8d711 100644
--- a/libpurple/buddyicon.c
+++ b/libpurple/buddyicon.c
@@ -254,16 +254,22 @@ purple_buddy_icon_data_new(guchar *icon_data, size_t icon_len)
newimg = purple_image_new_from_data(icon_data, icon_len);
filename = purple_image_generate_filename(newimg);
- oldimg = g_hash_table_lookup(icon_data_cache, filename);
- if (oldimg) {
- g_warn_if_fail(PURPLE_IS_IMAGE(oldimg));
- g_object_unref(newimg);
- g_object_ref(oldimg);
- return oldimg;
+ /* TODO: Why is this function called for buddies without icons? If this is
+ * intended, should the filename be null?
+ */
+ if (filename != NULL) {
+ oldimg = g_hash_table_lookup(icon_data_cache, filename);
+ if (oldimg) {
+ g_warn_if_fail(PURPLE_IS_IMAGE(oldimg));
+ g_object_unref(newimg);
+ g_object_ref(oldimg);
+ return oldimg;
+ }
+
+ /* This will take ownership of file and free it as needed */
+ g_hash_table_insert(icon_data_cache, g_strdup(filename), newimg);
}
- /* This will take ownership of file and free it as needed */
- g_hash_table_insert(icon_data_cache, g_strdup(filename), newimg);
g_object_set_data_full(G_OBJECT(newimg), "purple-buddyicon-filename",
g_strdup(filename), image_deleting_cb);
diff --git a/libpurple/conversation.h b/libpurple/conversation.h
index eea73ac92d..5e70827744 100644
--- a/libpurple/conversation.h
+++ b/libpurple/conversation.h
@@ -465,11 +465,8 @@ void purple_conversation_close_logs(PurpleConversation *conv);
/**
* purple_conversation_write_message:
- * @conv: The conversation.
- * @who: The user who sent the message.
- * @message: The message to write.
- * @flags: The message flags.
- * @mtime: The time the message was sent.
+ * @conv: The conversation.
+ * @msg: The message to write.
*
* Writes to a chat or an IM.
*/
diff --git a/libpurple/data/purple-3.pc.in b/libpurple/data/purple-3.pc.in
index 03dd292f62..a7d09a38f2 100644
--- a/libpurple/data/purple-3.pc.in
+++ b/libpurple/data/purple-3.pc.in
@@ -12,6 +12,6 @@ plugindir=${libdir}/purple-@PURPLE_MAJOR_VERSION@
Name: libpurple
Description: libpurple is a GLib-based instant messenger library.
Version: @VERSION@
-Requires: glib-2.0
+Requires: glib-2.0@GPLUGIN_REQ@
Cflags: -I${includedir}
Libs: -L${libdir} -lpurple
diff --git a/libpurple/http.c b/libpurple/http.c
index 50c37d6ccf..97c3253f3b 100644
--- a/libpurple/http.c
+++ b/libpurple/http.c
@@ -2459,6 +2459,8 @@ static void purple_http_request_free(PurpleHttpRequest *request)
purple_http_headers_free(request->headers);
purple_http_cookie_jar_unref(request->cookie_jar);
purple_http_keepalive_pool_unref(request->keepalive_pool);
+ g_free(request->method);
+ g_free(request->contents);
g_free(request->url);
g_free(request);
}
@@ -2875,8 +2877,6 @@ purple_http_url_parse(const char *raw_url)
g_return_val_if_fail(raw_url != NULL, NULL);
- url = g_new0(PurpleHttpURL, 1);
-
if (!g_regex_match(purple_http_re_url, raw_url, 0, &match_info)) {
if (purple_debug_is_verbose() && purple_debug_is_unsafe()) {
purple_debug_warning("http",
@@ -2886,6 +2886,8 @@ purple_http_url_parse(const char *raw_url)
return NULL;
}
+ url = g_new0(PurpleHttpURL, 1);
+
url->protocol = g_match_info_fetch(match_info, 1);
host_full = g_match_info_fetch(match_info, 2);
url->path = g_match_info_fetch(match_info, 3);
diff --git a/libpurple/log.c b/libpurple/log.c
index 74dfb94a73..2de592402e 100644
--- a/libpurple/log.c
+++ b/libpurple/log.c
@@ -1284,116 +1284,6 @@ static char *process_txt_log(char *txt, char *to_free)
return txt;
}
-#if 0 /* Maybe some other time. */
-/****************
- ** XML LOGGER **
- ****************/
-
-static const char *str_from_msg_type (PurpleMessageFlags type)
-{
-
- return "";
-
-}
-
-static void xml_logger_write(PurpleLog *log,
- PurpleMessageFlags type,
- const char *from, time_t time, const char *message)
-{
- char *xhtml = NULL;
-
- if (!log->logger_data) {
- /* This log is new. We could use the loggers 'new' function, but
- * creating a new file there would result in empty files in the case
- * that you open a convo with someone, but don't say anything.
- */
- struct tm *tm;
- const char *tz;
- const char *date;
- char *dir = purple_log_get_log_dir(log->type, log->name, log->account);
- char *name;
- char *filename;
-
- if (dir == NULL)
- return;
-
- tm = localtime(&log->time);
- tz = purple_escape_filename(purple_utf8_strftime("%Z", tm);
- date = purple_utf8_strftime("%Y-%m-%d.%H%M%S%z", tm);
-
- name = g_strdup_printf("%s%s%s", date, tz, ext ? ext : "");
-
- purple_build_dir (dir, S_IRUSR | S_IWUSR | S_IXUSR);
-
- filename = g_build_filename(dir, name, NULL);
- g_free(dir);
- g_free(name);
-
- log->logger_data = g_fopen(filename, "a");
- if (!log->logger_data) {
- purple_debug(PURPLE_DEBUG_ERROR, "log", "Could not create log file %s\n", filename);
- g_free(filename);
- return;
- }
- g_free(filename);
- fprintf(log->logger_data, "<?xml version='1.0' encoding='UTF-8' ?>\n"
- "<?xml-stylesheet href='file:///usr/src/web/htdocs/log-stylesheet.xsl' type='text/xml' ?>\n");
-
- date = purple_utf8_strftime("%Y-%m-%d %H:%M:%S", localtime(&log->time));
- fprintf(log->logger_data, "<conversation time='%s' screenname='%s' protocol='%s'>\n",
- date, log->name, protocol);
- }
-
- /* if we can't write to the file, give up before we hurt ourselves */
- if(!data->file)
- return;
-
- date = log_get_timestamp(log, time);
-
- purple_markup_html_to_xhtml(message, &xhtml, NULL);
- if (from)
- fprintf(log->logger_data, "<message %s %s from='%s' time='%s'>%s</message>\n",
- str_from_msg_type(type),
- type & PURPLE_MESSAGE_SEND ? "direction='sent'" :
- type & PURPLE_MESSAGE_RECV ? "direction='received'" : "",
- from, date, xhtml);
- else
- fprintf(log->logger_data, "<message %s %s time='%s'>%s</message>\n",
- str_from_msg_type(type),
- type & PURPLE_MESSAGE_SEND ? "direction='sent'" :
- type & PURPLE_MESSAGE_RECV ? "direction='received'" : "",
- date, xhtml):
- fflush(log->logger_data);
- g_free(date);
- g_free(xhtml);
-}
-
- static void xml_logger_finalize(PurpleLog *log)
-{
- if (log->logger_data) {
- fprintf(log->logger_data, "</conversation>\n");
- fclose(log->logger_data);
- log->logger_data = NULL;
- }
-}
-
-static GList *xml_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
-{
- return purple_log_common_lister(type, sn, account, ".xml", &xml_logger);
-}
-
-static PurpleLogLogger xml_logger = {
- N_("XML"), "xml",
- NULL,
- xml_logger_write,
- xml_logger_finalize,
- xml_logger_list,
- NULL,
- NULL,
- NULL
-};
-#endif
-
/****************************
** HTML LOGGER *************
****************************/
diff --git a/libpurple/media.h b/libpurple/media.h
index a229b9d432..b87c70c52b 100644
--- a/libpurple/media.h
+++ b/libpurple/media.h
@@ -219,8 +219,8 @@ gboolean purple_media_param_is_supported(PurpleMedia *media, const gchar *param)
* @type: The type of stream to create.
* @initiator: Whether or not the local user initiated the stream.
* @transmitter: The transmitter to use for the stream.
- * @num_params: The number of parameters to pass to Farsight.
- * @params: The parameters to pass to Farsight.
+ * @num_params: The number of parameters to pass to Farstream.
+ * @params: The parameters to pass to Farstream.
*
* Adds a stream to a session.
*
@@ -507,4 +507,4 @@ gboolean purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
G_END_DECLS
-#endif /* _PURPLE_MEDIA_H_ */ \ No newline at end of file
+#endif /* _PURPLE_MEDIA_H_ */
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
index bd8a24a19d..ad4b203bc9 100644
--- a/libpurple/media/backend-fs2.c
+++ b/libpurple/media/backend-fs2.c
@@ -30,15 +30,10 @@
#include "network.h"
#include "media-gst.h"
-#ifdef HAVE_FARSIGHT
-#include <gst/farsight/fs-conference-iface.h>
-#include <gst/farsight/fs-element-added-notifier.h>
-#else
#include <farstream/fs-conference.h>
#include <farstream/fs-element-added-notifier.h>
#include <farstream/fs-utils.h>
#include <gst/gststructure.h>
-#endif
/** @copydoc _PurpleMediaBackendFs2Class */
typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class;
@@ -131,9 +126,7 @@ struct _PurpleMediaBackendFs2Stream
gchar *participant;
FsStream *stream;
-#ifndef HAVE_FARSIGHT
gboolean supports_add;
-#endif
GstElement *src;
GstElement *tee;
@@ -170,9 +163,7 @@ struct _PurpleMediaBackendFs2Private
FsConference *conference;
gchar *conference_type;
-#ifndef HAVE_FARSIGHT
FsElementAddedNotifier *notifier;
-#endif
GHashTable *sessions;
GHashTable *participants;
@@ -348,12 +339,10 @@ purple_media_backend_fs2_dispose(GObject *obj)
purple_debug_info("backend-fs2", "purple_media_backend_fs2_dispose\n");
-#ifndef HAVE_FARSIGHT
if (priv->notifier) {
g_object_unref(priv->notifier);
priv->notifier = NULL;
}
-#endif
if (priv->confbin) {
GstElement *pipeline;
@@ -964,7 +953,7 @@ purple_media_error_fs(PurpleMedia *media, const gchar *error,
const gchar *error_msg = gst_structure_get_string(fs_error, "error-msg");
purple_media_error(media, "%s%s%s", error,
- error_msg ? _("\n\nMessage from Farsight: ") : "",
+ error_msg ? _("\n\nMessage from Farstream: ") : "",
error_msg ? error_msg : "");
}
@@ -1035,11 +1024,7 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
priv->conference != FS_CONFERENCE(src))
return;
-#ifdef HAVE_FARSIGHT
- if (gst_structure_has_name(structure, "farsight-error")) {
-#else
if (gst_structure_has_name(structure, "farstream-error")) {
-#endif
FsError error_no;
gboolean error_emitted = FALSE;
gst_structure_get_enum(structure, "error-no",
@@ -1049,11 +1034,7 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
purple_media_error_fs(priv->media,
_("Error initializing the call. "
"This probably denotes problem in "
-#ifdef HAVE_FARSIGHT
- "installation of GStreamer or Farsight."),
-#else
"installation of GStreamer or Farstream."),
-#endif
structure);
error_emitted = TRUE;
break;
@@ -1080,34 +1061,9 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
error_emitted = TRUE;
purple_media_end(priv->media, NULL, NULL);
break;
-#ifdef HAVE_FARSIGHT
- case FS_ERROR_NO_CODECS_LEFT:
- purple_media_error(priv->media,
- _("No codecs left. Your codec preferences "
- "in fs-codecs.conf are too strict."));
- error_emitted = TRUE;
- purple_media_end(priv->media, NULL, NULL);
- break;
- case FS_ERROR_CONNECTION_FAILED:
- purple_media_error(priv->media,
- _("Could not connect to the remote party"));
- error_emitted = TRUE;
- break;
- case FS_ERROR_UNKNOWN_CNAME:
- /*
- * Unknown CName is only a problem for the
- * multicast transmitter which isn't used.
- * It is also deprecated.
- */
- break;
-#endif
default:
purple_debug_error("backend-fs2",
-#ifdef HAVE_FARSIGHT
- "farsight-error: %i: %s\n",
-#else
"farstream-error: %i: %s\n",
-#endif
error_no,
gst_structure_get_string(structure, "error-msg"));
break;
@@ -1115,21 +1071,12 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
if (FS_ERROR_IS_FATAL(error_no)) {
if (!error_emitted)
-#ifdef HAVE_FARSIGHT
- purple_media_error(priv->media,
- _("A non-recoverable Farsight2 error has occurred."));
-#else
purple_media_error(priv->media,
_("A non-recoverable Farstream error has occurred."));
-#endif
purple_media_end(priv->media, NULL, NULL);
}
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-new-local-candidate")) {
-#else
"farstream-new-local-candidate")) {
-#endif
const GValue *value;
FsStream *stream;
FsCandidate *local_candidate;
@@ -1164,11 +1111,7 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
session->id, name, candidate);
g_object_unref(candidate);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-local-candidates-prepared")) {
-#else
"farstream-local-candidates-prepared")) {
-#endif
const GValue *value;
FsStream *stream;
FsParticipant *participant;
@@ -1186,11 +1129,7 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
g_signal_emit_by_name(self, "candidates-prepared",
session->id, name);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-new-active-candidate-pair")) {
-#else
"farstream-new-active-candidate-pair")) {
-#endif
const GValue *value;
FsStream *stream;
FsCandidate *local_candidate;
@@ -1222,11 +1161,7 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
g_object_unref(lcandidate);
g_object_unref(rcandidate);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-recv-codecs-changed")) {
-#else
"farstream-recv-codecs-changed")) {
-#endif
const GValue *value;
GList *codecs;
FsCodec *codec;
@@ -1236,18 +1171,10 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
codec = codecs->data;
purple_debug_info("backend-fs2",
-#ifdef HAVE_FARSIGHT
- "farsight-recv-codecs-changed: %s\n",
-#else
"farstream-recv-codecs-changed: %s\n",
-#endif
codec->encoding_name);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-component-state-changed")) {
-#else
"farstream-component-state-changed")) {
-#endif
const GValue *value;
FsStreamState fsstate;
guint component;
@@ -1283,19 +1210,11 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
}
purple_debug_info("backend-fs2",
-#ifdef HAVE_FARSIGHT
- "farsight-component-state-changed: "
-#else
"farstream-component-state-changed: "
-#endif
"component: %u state: %s\n",
component, state);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-send-codec-changed")) {
-#else
"farstream-send-codec-changed")) {
-#endif
const GValue *value;
FsCodec *codec;
gchar *codec_str;
@@ -1305,20 +1224,12 @@ gst_handle_message_element(GstBus *bus, GstMessage *msg,
codec_str = fs_codec_to_string(codec);
purple_debug_info("backend-fs2",
-#ifdef HAVE_FARSIGHT
- "farsight-send-codec-changed: codec: %s\n",
-#else
"farstream-send-codec-changed: codec: %s\n",
-#endif
codec_str);
g_free(codec_str);
} else if (gst_structure_has_name(structure,
-#ifdef HAVE_FARSIGHT
- "farsight-codecs-changed")) {
-#else
"farstream-codecs-changed")) {
-#endif
const GValue *value;
FsSession *fssession;
GList *sessions;
@@ -1495,17 +1406,12 @@ stream_info_cb(PurpleMedia *media, PurpleMediaInfoType type,
purple_media_is_initiator(media, sid, name))
return;
-#ifdef HAVE_FARSIGHT
- fs_stream_set_remote_candidates(stream->stream,
- stream->remote_candidates, &err);
-#else
if (stream->supports_add)
fs_stream_add_remote_candidates(stream->stream,
stream->remote_candidates, &err);
else
fs_stream_force_remote_candidates(stream->stream,
stream->remote_candidates, &err);
-#endif
if (err == NULL)
return;
@@ -1585,9 +1491,7 @@ init_conference(PurpleMediaBackendFs2 *self)
GstElement *pipeline;
GstBus *bus;
gchar *name;
-#ifndef HAVE_FARSIGHT
GKeyFile *default_props;
-#endif
priv->conference = FS_CONFERENCE(
gst_element_factory_make(priv->conference_type, NULL));
@@ -1630,7 +1534,6 @@ init_conference(PurpleMediaBackendFs2 *self)
return FALSE;
}
-#ifndef HAVE_FARSIGHT
default_props = fs_utils_get_default_element_properties(GST_ELEMENT(priv->conference));
if (default_props != NULL) {
priv->notifier = fs_element_added_notifier_new();
@@ -1638,7 +1541,6 @@ init_conference(PurpleMediaBackendFs2 *self)
GST_BIN(priv->confbin));
fs_element_added_notifier_set_properties_from_keyfile(priv->notifier, default_props);
}
-#endif
g_signal_connect(G_OBJECT(bus), "message",
G_CALLBACK(gst_bus_cb), self);
@@ -1931,11 +1833,7 @@ create_participant(PurpleMediaBackendFs2 *self, const gchar *name)
GError *err = NULL;
participant = fs_conference_new_participant(
-#ifdef HAVE_FARSIGHT
- priv->conference, name, &err);
-#else
priv->conference, &err);
-#endif
if (err) {
purple_debug_error("backend-fs2",
@@ -1945,12 +1843,10 @@ create_participant(PurpleMediaBackendFs2 *self, const gchar *name)
return FALSE;
}
-#ifndef HAVE_FARSIGHT
if (g_object_class_find_property(G_OBJECT_GET_CLASS(participant),
"cname")) {
g_object_set(participant, "cname", name, NULL);
}
-#endif
if (!priv->participants) {
purple_debug_info("backend-fs2",
@@ -2144,7 +2040,6 @@ create_stream(PurpleMediaBackendFs2 *self,
return FALSE;
}
-#ifndef HAVE_FARSIGHT
fsstream = fs_session_new_stream(session->session, participant,
initiator == TRUE ? type_direction :
(type_direction & FS_DIRECTION_RECV), &err);
@@ -2161,7 +2056,6 @@ create_stream(PurpleMediaBackendFs2 *self,
"Error creating stream\n");
return FALSE;
}
-#endif
for (i = 0 ; i < num_params ; i++) {
if (purple_strequal(params[i].name, "relay-info")) {
@@ -2227,26 +2121,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
_num_params++;
}
-#ifdef HAVE_FARSIGHT
- fsstream = fs_session_new_stream(session->session, participant,
- initiator == TRUE ? type_direction :
- (type_direction & FS_DIRECTION_RECV), transmitter,
- _num_params, _params, &err);
- g_free(_params);
-
- if (fsstream == NULL) {
- if (err) {
- purple_debug_error("backend-fs2",
- "Error creating stream: %s\n",
- err && err->message ?
- err->message : "NULL");
- g_error_free(err);
- } else
- purple_debug_error("backend-fs2",
- "Error creating stream\n");
- return FALSE;
- }
-#else
if (!fs_stream_set_transmitter(fsstream, transmitter,
_params, _num_params, &err)) {
purple_debug_error("backend-fs2",
@@ -2257,15 +2131,12 @@ G_GNUC_END_IGNORE_DEPRECATIONS
return FALSE;
}
g_free(_params);
-#endif
stream = g_new0(PurpleMediaBackendFs2Stream, 1);
stream->participant = g_strdup(who);
stream->session = session;
stream->stream = fsstream;
-#ifndef HAVE_FARSIGHT
stream->supports_add = !strcmp(transmitter, "nice");
-#endif
priv->streams = g_list_append(priv->streams, stream);
@@ -2378,17 +2249,13 @@ purple_media_backend_fs2_add_remote_candidates(PurpleMediaBackend *self,
if (purple_media_is_initiator(priv->media, sess_id, participant) ||
purple_media_accepted(
priv->media, sess_id, participant)) {
-#ifdef HAVE_FARSIGHT
- fs_stream_set_remote_candidates(stream->stream,
- stream->remote_candidates, &err);
-#else
+
if (stream->supports_add)
fs_stream_add_remote_candidates(stream->stream,
stream->remote_candidates, &err);
else
fs_stream_force_remote_candidates(stream->stream,
stream->remote_candidates, &err);
-#endif
if (err) {
purple_debug_error("backend-fs2", "Error adding remote"
@@ -2421,10 +2288,7 @@ purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self,
PURPLE_MEDIA_SEND_APPLICATION |
#endif
PURPLE_MEDIA_SEND_VIDEO)) {
-#ifdef HAVE_FARSIGHT
- g_object_get(session->session,
- "codecs-ready", &ret, NULL);
-#else
+
GList *codecs = NULL;
g_object_get(session->session,
@@ -2433,7 +2297,6 @@ purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self,
fs_codec_list_destroy (codecs);
ret = TRUE;
}
-#endif
} else
ret = TRUE;
} else {
@@ -2447,12 +2310,7 @@ purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self,
PURPLE_MEDIA_SEND_APPLICATION |
#endif
PURPLE_MEDIA_SEND_VIDEO)) {
-#ifdef HAVE_FARSIGHT
- g_object_get(session->session,
- "codecs-ready", &ret, NULL);
- if (ret == FALSE)
- break;
-#else
+
GList *codecs = NULL;
g_object_get(session->session,
@@ -2464,7 +2322,6 @@ purple_media_backend_fs2_codecs_ready(PurpleMediaBackend *self,
ret = FALSE;
break;
}
-#endif
} else
ret = TRUE;
}
@@ -2702,9 +2559,7 @@ purple_media_backend_fs2_set_params(PurpleMediaBackend *self,
{
PurpleMediaBackendFs2Private *priv;
guint i;
-#ifndef HAVE_FARSIGHT
GstStructure *sdes;
-#endif
g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self));
@@ -2717,15 +2572,6 @@ purple_media_backend_fs2_set_params(PurpleMediaBackend *self,
return;
}
-#ifdef HAVE_FARSIGHT
- for (i = 0; i != num_params; ++i) {
- if (param_to_sdes_type(params[i].name)) {
- g_object_set(priv->conference,
- params[i].name, g_value_get_string(&params[i].value),
- NULL);
- }
- }
-#else
g_object_get(G_OBJECT(priv->conference), "sdes", &sdes, NULL);
for (i = 0; i != num_params; ++i) {
@@ -2740,7 +2586,6 @@ purple_media_backend_fs2_set_params(PurpleMediaBackend *self,
g_object_set(G_OBJECT(priv->conference), "sdes", sdes, NULL);
gst_structure_free(sdes);
-#endif /* HAVE_FARSIGHT */
}
static gboolean
send_dtmf_callback(gpointer userdata)
diff --git a/libpurple/media/backend-fs2.h b/libpurple/media/backend-fs2.h
index 52bb6e5c35..c139de2003 100644
--- a/libpurple/media/backend-fs2.h
+++ b/libpurple/media/backend-fs2.h
@@ -25,7 +25,7 @@
* SECTION:backend-fs2
* @section_id: libpurple-backend-fs2
* @short_description: <filename>media/backend-fs2.h</filename>
- * @title: Farsight 2 backend for media API
+ * @title: Farstream backend for media API
*
* This file should not yet be part of libpurple's API.
* It should remain internal only for now.
@@ -45,16 +45,16 @@ G_BEGIN_DECLS
/**
* PurpleMediaBackendFs2:
*
- * An opaque structure representing the Farsight 2 media backend.
+ * An opaque structure representing the Farstream media backend.
*/
typedef struct _PurpleMediaBackendFs2 PurpleMediaBackendFs2;
/**
* purple_media_backend_fs2_get_type:
*
- * Gets the type of the Farsight 2 media backend object.
+ * Gets the type of the Farstream media backend object.
*
- * Returns: The Farsight 2 media backend's GType
+ * Returns: The Farstream media backend's GType
*/
GType purple_media_backend_fs2_get_type(void);
diff --git a/libpurple/media/backend-iface.c b/libpurple/media/backend-iface.c
index c5f15e226a..0e41aa2f2c 100644
--- a/libpurple/media/backend-iface.c
+++ b/libpurple/media/backend-iface.c
@@ -19,6 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
+#include "internal.h"
+
#include "backend-iface.h"
#include "marshallers.h"
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
index 57e607dc4f..dfb8731f37 100644
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -34,11 +34,7 @@
#ifdef USE_VV
#include <media/backend-fs2.h>
-#ifdef HAVE_FARSIGHT
-#include <gst/farsight/fs-element-added-notifier.h>
-#else
#include <farstream/fs-element-added-notifier.h>
-#endif
#if GST_CHECK_VERSION(1,0,0)
#include <gst/video/videooverlay.h>
#else
@@ -84,6 +80,7 @@ struct _PurpleMediaManagerPrivate
/* Application data streams */
GList *appdata_info; /* holds PurpleMediaAppDataInfo */
GMutex appdata_mutex;
+ guint appdata_cb_token; /* last used read/write callback token */
#endif
};
@@ -103,6 +100,8 @@ typedef struct {
guint sample_offset;
gboolean writable;
gboolean connected;
+ guint writable_cb_token;
+ guint readable_cb_token;
guint writable_timer_id;
guint readable_timer_id;
GCond readable_cond;
@@ -541,6 +540,11 @@ free_appdata_info_locked (PurpleMediaAppDataInfo *info)
g_free (info->session_id);
g_free (info->participant);
+ /* This lets the potential read or write callbacks waiting for appdata_mutex
+ * know the info structure has been destroyed. */
+ info->readable_cb_token = 0;
+ info->writable_cb_token = 0;
+
if (info->readable_timer_id) {
purple_timeout_remove (info->readable_timer_id);
info->readable_timer_id = 0;
@@ -729,19 +733,19 @@ appsrc_writable (gpointer user_data)
gchar *participant;
gboolean writable;
gpointer cb_data;
- guint *timer_id_ptr = &info->writable_timer_id;
- guint timer_id = *timer_id_ptr;
+ guint *cb_token_ptr = &info->writable_cb_token;
+ guint cb_token = *cb_token_ptr;
g_mutex_lock (&manager->priv->appdata_mutex);
- if (timer_id == 0 || timer_id != *timer_id_ptr) {
+ if (cb_token == 0 || cb_token != *cb_token_ptr) {
/* In case info was freed while we were waiting for the mutex to unlock
- * we still have a pointer to the timer_id which should still be
+ * we still have a pointer to the cb_token which should still be
* accessible since it's in the Glib slice allocator. It gets set to 0
* just after the timeout is canceled which happens also before the
* AppDataInfo is freed, so even if that memory slice gets reused, the
- * timer_id would be different from its previous value (unless
- * extremely unlucky). So checking if the value for the timer_id changed
+ * cb_token would be different from its previous value (unless
+ * extremely unlucky). So checking if the value for the cb_token changed
* should be enough to prevent any kind of race condition in which the
* media/AppDataInfo gets destroyed in one thread while the timeout was
* triggered and is waiting on the mutex to get unlocked in this thread
@@ -756,7 +760,7 @@ appsrc_writable (gpointer user_data)
writable = info->writable && info->connected;
cb_data = info->user_data;
- info->writable_timer_id = 0;
+ info->writable_cb_token = 0;
g_mutex_unlock (&manager->priv->appdata_mutex);
@@ -784,10 +788,18 @@ appsrc_writable (gpointer user_data)
static void
call_appsrc_writable_locked (PurpleMediaAppDataInfo *info)
{
+ PurpleMediaManager *manager = purple_media_manager_get ();
+
/* We already have a writable callback scheduled, don't create another one */
- if (info->writable_timer_id || info->callbacks.writable == NULL)
+ if (info->writable_cb_token || info->callbacks.writable == NULL)
return;
+ /* We can't use writable_timer_id as a token, because the timeout is added
+ * into libpurple's main event loop, which runs in a different thread than
+ * from where call_appsrc_writable_locked() was called. Consequently, the
+ * callback may run even before purple_timeout_add() returns the timer ID
+ * to us. */
+ info->writable_cb_token = ++manager->priv->appdata_cb_token;
info->writable_timer_id = purple_timeout_add (0, appsrc_writable, info);
}
@@ -909,17 +921,18 @@ appsink_readable (gpointer user_data)
gchar *session_id;
gchar *participant;
gpointer cb_data;
- guint *timer_id_ptr = &info->readable_timer_id;
- guint timer_id = *timer_id_ptr;
+ guint *cb_token_ptr = &info->readable_cb_token;
+ guint cb_token = *cb_token_ptr;
+ gboolean run_again = FALSE;
g_mutex_lock (&manager->priv->appdata_mutex);
- if (timer_id == 0 || timer_id != *timer_id_ptr) {
+ if (cb_token == 0 || cb_token != *cb_token_ptr) {
/* Avoided a race condition (see writable callback) */
g_mutex_unlock (&manager->priv->appdata_mutex);
return FALSE;
}
- /* We need to signal readable until there are no more samples */
- while (info->callbacks.readable &&
+
+ if (info->callbacks.readable &&
(info->num_samples > 0 || info->current_sample != NULL)) {
readable_cb = info->callbacks.readable;
media = g_weak_ref_get (&info->media_ref);
@@ -935,27 +948,38 @@ appsink_readable (gpointer user_data)
g_object_unref (media);
g_free (session_id);
g_free (participant);
- if (timer_id == 0 || timer_id != *timer_id_ptr) {
+ if (cb_token == 0 || cb_token != *cb_token_ptr) {
/* We got cancelled */
g_mutex_unlock (&manager->priv->appdata_mutex);
return FALSE;
}
}
- info->readable_timer_id = 0;
+
+ /* Do we still have samples? Schedule appsink_readable again. We break here
+ * so that other events get a chance to be processed too. */
+ if (info->num_samples > 0 || info->current_sample != NULL) {
+ run_again = TRUE;
+ } else {
+ info->readable_cb_token = 0;
+ }
+
g_mutex_unlock (&manager->priv->appdata_mutex);
- return FALSE;
+ return run_again;
}
static void
call_appsink_readable_locked (PurpleMediaAppDataInfo *info)
{
+ PurpleMediaManager *manager = purple_media_manager_get ();
+
/* We must signal that a new sample has arrived to release blocking reads */
g_cond_broadcast (&info->readable_cond);
/* We already have a writable callback scheduled, don't create another one */
- if (info->readable_timer_id || info->callbacks.readable == NULL)
+ if (info->readable_cb_token || info->callbacks.readable == NULL)
return;
+ info->readable_cb_token = ++manager->priv->appdata_cb_token;
info->readable_timer_id = purple_timeout_add (0, appsink_readable, info);
}
@@ -1014,6 +1038,7 @@ create_recv_appsink(PurpleMedia *media,
}
#endif
+#ifdef USE_VV
static PurpleMediaElementInfo *
get_send_application_element_info ()
{
@@ -1034,7 +1059,6 @@ get_send_application_element_info ()
return info;
}
-
static PurpleMediaElementInfo *
get_recv_application_element_info ()
{
@@ -1054,6 +1078,7 @@ get_recv_application_element_info ()
return info;
}
+#endif /* USE_VV */
GstElement *
purple_media_manager_get_element(PurpleMediaManager *manager,
@@ -1642,14 +1667,14 @@ purple_media_manager_set_application_data_callbacks(PurpleMediaManager *manager,
if (info->notify)
info->notify (info->user_data);
- if (info->readable_timer_id) {
+ if (info->readable_cb_token) {
purple_timeout_remove (info->readable_timer_id);
- info->readable_timer_id = 0;
+ info->readable_cb_token = 0;
}
- if (info->writable_timer_id) {
+ if (info->writable_cb_token) {
purple_timeout_remove (info->writable_timer_id);
- info->writable_timer_id = 0;
+ info->writable_cb_token = 0;
}
if (callbacks) {
diff --git a/libpurple/mediamanager.h b/libpurple/mediamanager.h
index 42917fb16f..e14f03adcc 100644
--- a/libpurple/mediamanager.h
+++ b/libpurple/mediamanager.h
@@ -127,7 +127,7 @@ PurpleMediaManager *purple_media_manager_get(void);
* purple_media_manager_create_media:
* @manager: The media manager to create the session under.
* @account: The account to create the session on.
- * @conference_type: The conference type to feed into Farsight2.
+ * @conference_type: The conference type to feed into Farstream.
* @remote_user: The remote user to initiate the session with.
* @initiator: TRUE if the local user is the initiator of this media call, FALSE otherwise.
*
@@ -178,7 +178,7 @@ purple_media_manager_remove_media(PurpleMediaManager *manager,
* purple_media_manager_create_private_media:
* @manager: The media manager to create the session under.
* @account: The account to create the session on.
- * @conference_type: The conference type to feed into Farsight2.
+ * @conference_type: The conference type to feed into Farstream.
* @remote_user: The remote user to initiate the session with.
* @initiator: TRUE if the local user is the initiator of this media call, FALSE otherwise.
*
diff --git a/libpurple/plugins/log_reader.c b/libpurple/plugins/log_reader.c
index 62a8df0229..1d38daddef 100644
--- a/libpurple/plugins/log_reader.c
+++ b/libpurple/plugins/log_reader.c
@@ -317,110 +317,6 @@ static void adium_logger_finalize(PurpleLog *log)
/*****************************************************************************
- * Fire Logger *
- *****************************************************************************/
-
-#if 0
-/* The fire logger doesn't write logs, only reads them. This is to include
- * Fire logs in the log viewer transparently.
- */
-
-static PurpleLogLogger *fire_logger;
-
-struct fire_logger_data {
-};
-
-static GList *fire_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
-{
- /* TODO: Do something here. */
- return NULL;
-}
-
-static char * fire_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
-{
- struct fire_logger_data *data;
-
- g_return_val_if_fail(log != NULL, g_strdup(""));
-
- data = log->logger_data;
-
- /* TODO: Do something here. */
- return g_strdup("");
-}
-
-static int fire_logger_size (PurpleLog *log)
-{
- g_return_val_if_fail(log != NULL, 0);
-
- if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
- return 0;
-
- /* TODO: Do something here. */
- return 0;
-}
-
-static void fire_logger_finalize(PurpleLog *log)
-{
- g_return_if_fail(log != NULL);
-
- /* TODO: Do something here. */
-}
-#endif
-
-
-/*****************************************************************************
- * Messenger Plus! Logger *
- *****************************************************************************/
-
-#if 0
-/* The messenger_plus logger doesn't write logs, only reads them. This is to include
- * Messenger Plus! logs in the log viewer transparently.
- */
-
-static PurpleLogLogger *messenger_plus_logger;
-
-struct messenger_plus_logger_data {
-};
-
-static GList *messenger_plus_logger_list(PurpleLogType type, const char *sn, PurpleAccount *account)
-{
- /* TODO: Do something here. */
- return NULL;
-}
-
-static char * messenger_plus_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
-{
- struct messenger_plus_logger_data *data = log->logger_data;
-
- g_return_val_if_fail(log != NULL, g_strdup(""));
-
- data = log->logger_data;
-
- /* TODO: Do something here. */
- return g_strdup("");
-}
-
-static int messenger_plus_logger_size (PurpleLog *log)
-{
- g_return_val_if_fail(log != NULL, 0);
-
- if (purple_prefs_get_bool("/plugins/core/log_reader/fast_sizes"))
- return 0;
-
- /* TODO: Do something here. */
- return 0;
-}
-
-static void messenger_plus_logger_finalize(PurpleLog *log)
-{
- g_return_if_fail(log != NULL);
-
- /* TODO: Do something here. */
-}
-#endif
-
-
-/*****************************************************************************
* MSN Messenger Logger *
*****************************************************************************/
@@ -2758,16 +2654,6 @@ get_plugin_pref_frame(PurplePlugin *plugin)
"/plugins/core/log_reader/adium/log_directory", _("Adium"));
purple_plugin_pref_frame_add(frame, ppref);
-#if 0
- ppref = purple_plugin_pref_new_with_name_and_label(
- "/plugins/core/log_reader/fire/log_directory", _("Fire"));
- purple_plugin_pref_frame_add(frame, ppref);
-
- ppref = purple_plugin_pref_new_with_name_and_label(
- "/plugins/core/log_reader/messenger_plus/log_directory", _("Messenger Plus!"));
- purple_plugin_pref_frame_add(frame, ppref);
-#endif
-
ppref = purple_plugin_pref_new_with_name_and_label(
"/plugins/core/log_reader/qip/log_directory", _("QIP"));
purple_plugin_pref_frame_add(frame, ppref);
@@ -2836,33 +2722,6 @@ plugin_load(PurplePlugin *plugin, GError **error)
adium_logger_size);
purple_log_logger_add(adium_logger);
-#if 0
- /* The names of IM clients are marked for translation at the request of
- translators who wanted to transliterate them. Many translators
- choose to leave them alone. Choose what's best for your language. */
- fire_logger = purple_log_logger_new("fire", _("Fire"), 6,
- NULL,
- NULL,
- fire_logger_finalize,
- fire_logger_list,
- fire_logger_read,
- fire_logger_size);
- purple_log_logger_add(fire_logger);
-
- /* The names of IM clients are marked for translation at the request of
- translators who wanted to transliterate them. Many translators
- choose to leave them alone. Choose what's best for your language. */
- messenger_plus_logger = purple_log_logger_new("messenger_plus", _("Messenger Plus!"), 6,
- NULL,
- NULL,
- messenger_plus_logger_finalize,
- messenger_plus_logger_list,
- messenger_plus_logger_read,
- messenger_plus_logger_size);
- purple_log_logger_add(messenger_plus_logger);
-
-#endif
-
/* The names of IM clients are marked for translation at the request of
translators who wanted to transliterate them. Many translators
choose to leave them alone. Choose what's best for your language. */
@@ -2923,16 +2782,6 @@ plugin_unload(PurplePlugin *plugin, GError **error)
purple_log_logger_free(adium_logger);
adium_logger = NULL;
-#if 0
- purple_log_logger_remove(fire_logger);
- purple_log_logger_free(fire_logger);
- fire_logger = NULL;
-
- purple_log_logger_remove(messenger_plus_logger);
- purple_log_logger_free(messenger_plus_logger);
- messenger_plus_logger = NULL;
-#endif
-
purple_log_logger_remove(msn_logger);
purple_log_logger_free(msn_logger);
msn_logger = NULL;
diff --git a/libpurple/plugins/ssl/ssl-gnutls.c b/libpurple/plugins/ssl/ssl-gnutls.c
index cfd1f41282..2bb2632d6e 100644
--- a/libpurple/plugins/ssl/ssl-gnutls.c
+++ b/libpurple/plugins/ssl/ssl-gnutls.c
@@ -171,20 +171,6 @@ ssl_gnutls_init_gnutls(void)
const char *debug_level;
const char *host_priorities_str;
- /* Configure GnuTLS to use glib memory management */
- /* I expect that this isn't really necessary, but it may prevent
- some bugs */
- /* TODO: It may be necessary to wrap this allocators for GnuTLS.
- If there are strange bugs, perhaps look here (yes, I am a
- hypocrite) */
- gnutls_global_set_mem_functions(
- (gnutls_alloc_function) g_malloc, /* malloc */
- (gnutls_alloc_function) g_malloc, /* secure malloc */
- NULL, /* mem_is_secure */
- (gnutls_realloc_function) g_realloc, /* realloc */
- (gnutls_free_function) g_free /* free */
- );
-
debug_level = g_getenv("PURPLE_GNUTLS_DEBUG");
if (debug_level) {
int level = atoi(debug_level);
@@ -1107,7 +1093,6 @@ x509_certificate_signed_by(PurpleCertificate * crt,
return FALSE;
}
-#ifdef HAVE_GNUTLS_CERT_INSECURE_ALGORITHM
if (verify & GNUTLS_CERT_INSECURE_ALGORITHM) {
/*
* A certificate in the chain is signed with an insecure
@@ -1121,7 +1106,6 @@ x509_certificate_signed_by(PurpleCertificate * crt,
"Insecure hash algorithm used by %s to sign %s\n",
issuer_id, crt_id);
}
-#endif
if (verify & GNUTLS_CERT_INVALID) {
/* Signature didn't check out, but at least
diff --git a/libpurple/protocols/jabber/gtalk.c b/libpurple/protocols/jabber/gtalk.c
index 8f6994cb3f..dad22d1bf8 100644
--- a/libpurple/protocols/jabber/gtalk.c
+++ b/libpurple/protocols/jabber/gtalk.c
@@ -89,10 +89,7 @@ gtalk_protocol_init(PurpleProtocol *protocol)
option);
option = purple_account_option_string_new(_("File transfer proxies"),
- "ft_proxies",
- /* TODO: Is this an acceptable default?
- * Also, keep this in sync as they add more servers */
- JABBER_DEFAULT_FT_PROXIES);
+ "ft_proxies", NULL);
protocol->account_options = g_list_append(protocol->account_options,
option);
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
index 6261a9fba8..537daf0267 100644
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -1094,9 +1094,11 @@ jabber_login(PurpleAccount *account)
if (js == NULL)
return;
- /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */
- if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", "")))
- purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES);
+ /* replace old default proxies with the new default: NULL
+ * TODO: these can eventually be removed */
+ if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", ""))
+ || g_str_equal("proxy.eu.jabber.org", purple_account_get_string(account, "ft_proxies", "")))
+ purple_account_set_string(account, "ft_proxies", NULL);
/*
* Calculate the avatar hash for our current image so we know (when we
diff --git a/libpurple/protocols/jabber/jabber.h b/libpurple/protocols/jabber/jabber.h
index 10a85b5220..54095ebdbd 100644
--- a/libpurple/protocols/jabber/jabber.h
+++ b/libpurple/protocols/jabber/jabber.h
@@ -90,7 +90,6 @@ typedef struct _JabberStream JabberStream;
#define JABBER_PROTOCOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), JABBER_TYPE_PROTOCOL, JabberProtocolClass))
#define JABBER_DEFAULT_REQUIRE_TLS "require_starttls"
-#define JABBER_DEFAULT_FT_PROXIES "proxy.eu.jabber.org"
/* Index into attention_types list */
#define JABBER_BUZZ 0
diff --git a/libpurple/protocols/jabber/presence.c b/libpurple/protocols/jabber/presence.c
index 31c79d4df3..9c3aa5b7af 100644
--- a/libpurple/protocols/jabber/presence.c
+++ b/libpurple/protocols/jabber/presence.c
@@ -334,7 +334,7 @@ PurpleXmlNode *jabber_presence_create_js(JabberStream *js, JabberBuddyState stat
}
/* if we are idle and not offline, include idle */
- if (js->idle && state != JABBER_BUDDY_STATE_UNAVAILABLE) {
+ if (js && js->idle && state != JABBER_BUDDY_STATE_UNAVAILABLE) {
PurpleXmlNode *query = purple_xmlnode_new_child(presence, "query");
gchar seconds[10];
g_snprintf(seconds, 10, "%d", (int) (time(NULL) - js->idle));
diff --git a/libpurple/protocols/jabber/xmpp.c b/libpurple/protocols/jabber/xmpp.c
index 2d8f3b1fc1..109dbb3202 100644
--- a/libpurple/protocols/jabber/xmpp.c
+++ b/libpurple/protocols/jabber/xmpp.c
@@ -80,10 +80,7 @@ xmpp_protocol_init(PurpleProtocol *protocol)
option);
option = purple_account_option_string_new(_("File transfer proxies"),
- "ft_proxies",
- /* TODO: Is this an acceptable default?
- * Also, keep this in sync as they add more servers */
- JABBER_DEFAULT_FT_PROXIES);
+ "ft_proxies", NULL);
protocol->account_options = g_list_append(protocol->account_options,
option);
diff --git a/libpurple/protocols/novell/nmrtf.c b/libpurple/protocols/novell/nmrtf.c
index 8e53070fa9..5223d9e9e1 100644
--- a/libpurple/protocols/novell/nmrtf.c
+++ b/libpurple/protocols/novell/nmrtf.c
@@ -658,11 +658,11 @@ rtf_flush_data(NMRtfContext *ctx)
status = NMRTF_CONVERT_ERROR;
purple_debug_info("novell", "failed to convert data! error code = %d msg = %s\n",
gerror->code, gerror->message);
- g_free(gerror);
}
}
+ g_error_free(gerror);
- return status;
+ return status;
}
/*
diff --git a/libpurple/protocols/oscar/clientlogin.c b/libpurple/protocols/oscar/clientlogin.c
index e0ec4009c0..1dde95662e 100644
--- a/libpurple/protocols/oscar/clientlogin.c
+++ b/libpurple/protocols/oscar/clientlogin.c
@@ -378,12 +378,12 @@ static void send_start_oscar_session(OscarData *od, const char *token, const cha
"&distId=%d"
"&f=xml"
"&k=%s"
- "&ts=%" PURPLE_TIME_T_MODIFIER
+ "&ts=%" G_GINT64_FORMAT
"&useTLS=%d",
purple_url_encode(token),
oscar_get_ui_info_int(od->icq ? "prpl-icq-distid" : "prpl-aim-distid", 0x00000611),
get_client_key(od),
- hosttime,
+ (gint64)hosttime,
strcmp(encryption_type, OSCAR_NO_ENCRYPTION) != 0 ? 1 : 0);
signature = generate_signature("GET", get_start_oscar_session_url(od),
query_string, session_key);
diff --git a/libpurple/protocols/oscar/oscar.c b/libpurple/protocols/oscar/oscar.c
index ce6f6d3e6b..35d683745b 100644
--- a/libpurple/protocols/oscar/oscar.c
+++ b/libpurple/protocols/oscar/oscar.c
@@ -546,6 +546,7 @@ flap_connection_established_bart(OscarData *od, FlapConnection *conn)
static int
flap_connection_established(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
{
+ conn->connected = TRUE;
purple_debug_info("oscar", "FLAP connection of type 0x%04hx is "
"now fully connected\n", conn->type);
if (conn->type == SNAC_FAMILY_LOCATE)
diff --git a/libpurple/protocols/yahoo/Makefile.am b/libpurple/protocols/yahoo/Makefile.am
index ce4f709357..45cfb86f32 100644
--- a/libpurple/protocols/yahoo/Makefile.am
+++ b/libpurple/protocols/yahoo/Makefile.am
@@ -9,8 +9,6 @@ YAHOOSOURCES = \
yahoochat.c \
yahoo.c \
yahoo.h \
- yahoojp.c \
- yahoojp.h \
yahoo_aliases.c \
yahoo_aliases.h \
yahoo_doodle.h \
diff --git a/libpurple/protocols/yahoo/Makefile.mingw b/libpurple/protocols/yahoo/Makefile.mingw
index 3436980068..95e2237008 100644
--- a/libpurple/protocols/yahoo/Makefile.mingw
+++ b/libpurple/protocols/yahoo/Makefile.mingw
@@ -40,7 +40,6 @@ LIB_PATHS += -L. \
##
C_SRC = util.c \
yahoo.c \
- yahoojp.c \
yahoochat.c \
yahoo_aliases.c \
yahoo_doodle.c \
diff --git a/libpurple/protocols/yahoo/util.c b/libpurple/protocols/yahoo/util.c
index d6554fadeb..89c0113226 100644
--- a/libpurple/protocols/yahoo/util.c
+++ b/libpurple/protocols/yahoo/util.c
@@ -121,14 +121,10 @@ gchar* yahoo_get_cookies(PurpleConnection *gc)
char *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean utf8)
{
- YahooData *yd = purple_connection_get_protocol_data(gc);
char *ret;
const char *to_codeset;
GError *error = NULL;
- if (yd->jp)
- return g_strdup(str);
-
if (utf8) /* FIXME: maybe don't use utf8 if it'll fit in latin1 */
return g_strdup(str);
@@ -161,7 +157,6 @@ char *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean utf8)
*/
char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8)
{
- YahooData *yd = purple_connection_get_protocol_data(gc);
char *ret;
const char *from_codeset;
GError *error = NULL;
@@ -173,10 +168,7 @@ char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8)
"to be UTF-8, but it was not. Will try another encoding.\n");
}
- if (yd->jp)
- from_codeset = "SHIFT_JIS";
- else
- from_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1");
+ from_codeset = purple_account_get_string(purple_connection_get_account(gc), "local_charset", "ISO-8859-1");
ret = g_convert_with_fallback(str, -1, "UTF-8", from_codeset, NULL, NULL, NULL, &error);
if (!ret) {
@@ -959,20 +951,3 @@ char *yahoo_html_to_codes(const char *src)
return g_string_free(dest, FALSE);
}
-
-YahooFederation yahoo_get_federation_from_name(const char *who)
-{
- YahooFederation fed = YAHOO_FEDERATION_NONE;
- if (who[3] == '/') {
- if (!g_ascii_strncasecmp(who, "msn", 3))
- fed = YAHOO_FEDERATION_MSN;
- else if (!g_ascii_strncasecmp(who, "ocs", 3))
- fed = YAHOO_FEDERATION_OCS;
- else if (!g_ascii_strncasecmp(who, "ibm", 3))
- fed = YAHOO_FEDERATION_IBM;
- else if (!g_ascii_strncasecmp(who, "pbx", 3))
- fed = YAHOO_FEDERATION_PBX;
- }
- return fed;
-}
-
diff --git a/libpurple/protocols/yahoo/yahoo.c b/libpurple/protocols/yahoo/yahoo.c
index 4fd01d61e8..62f3b99756 100644
--- a/libpurple/protocols/yahoo/yahoo.c
+++ b/libpurple/protocols/yahoo/yahoo.c
@@ -29,7 +29,6 @@
#include "ymsg.h"
#include "yahoo.h"
-#include "yahoojp.h"
#include "yahoochat.h"
#include "yahoo_aliases.h"
#include "yahoo_doodle.h"
@@ -37,7 +36,6 @@
#include "yahoo_picture.h"
static PurpleProtocol *yahoo_protocol = NULL;
-static PurpleProtocol *yahoojp_protocol = NULL;
static GSList *cmds = NULL;
@@ -386,20 +384,14 @@ static gboolean
plugin_load(PurplePlugin *plugin, GError **error)
{
yahoo_protocol_register_type(plugin);
- yahoojp_protocol_register_type(plugin);
yahoo_protocol = purple_protocols_add(YAHOO_TYPE_PROTOCOL, error);
if (!yahoo_protocol)
return FALSE;
- yahoojp_protocol = purple_protocols_add(YAHOOJP_TYPE_PROTOCOL, error);
- if (!yahoojp_protocol)
- return FALSE;
-
yahoo_init_colorht();
yahoo_register_commands();
- yahoojp_register_commands();
purple_signal_connect(purple_get_core(), "uri-handler", yahoo_protocol,
PURPLE_CALLBACK(yahoo_uri_handler), NULL);
@@ -410,14 +402,10 @@ plugin_load(PurplePlugin *plugin, GError **error)
static gboolean
plugin_unload(PurplePlugin *plugin, GError **error)
{
- yahoojp_unregister_commands();
yahoo_unregister_commands();
yahoo_dest_colorht();
- if (!purple_protocols_remove(yahoojp_protocol, error))
- return FALSE;
-
if (!purple_protocols_remove(yahoo_protocol, error))
return FALSE;
diff --git a/libpurple/protocols/yahoo/yahoo_aliases.c b/libpurple/protocols/yahoo/yahoo_aliases.c
index 49fdb41faf..2b8c80b616 100644
--- a/libpurple/protocols/yahoo/yahoo_aliases.c
+++ b/libpurple/protocols/yahoo/yahoo_aliases.c
@@ -40,8 +40,6 @@
/* I hate hardcoding this stuff, but Yahoo never sends us anything to use. Someone in the know may be able to tweak this URL */
#define YAHOO_ALIAS_FETCH_URL "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us&diffs=1&t=0&tags=short&rt=0&prog-ver=" YAHOO_CLIENT_VERSION "&useutf8=1&legenc=codepage-1252"
#define YAHOO_ALIAS_UPDATE_URL "http://address.yahoo.com/yab/us?v=XM&prog=ymsgr&.intl=us&sync=1&tags=short&noclear=1&useutf8=1&legenc=codepage-1252"
-#define YAHOOJP_ALIAS_FETCH_URL "http://address.yahoo.co.jp/yab/jp?v=XM&prog=ymsgr&.intl=jp&diffs=1&t=0&tags=short&rt=0&prog-ver=" YAHOOJP_CLIENT_VERSION
-#define YAHOOJP_ALIAS_UPDATE_URL "http://address.yahoo.co.jp/yab/jp?v=XM&prog=ymsgr&.intl=jp&sync=1&tags=short&noclear=1"
void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias);
@@ -130,10 +128,7 @@ yahoo_fetch_aliases_cb(PurpleHttpConnection *http_conn,
alias = NULL;
/* Yahoo stores first and last names separately, lets put them together into a full name */
- if (yd->jp)
- full_name = g_strstrip(g_strdup_printf("%s %s", (ln != NULL ? ln : "") , (fn != NULL ? fn : "")));
- else
- full_name = g_strstrip(g_strdup_printf("%s %s", (fn != NULL ? fn : "") , (ln != NULL ? ln : "")));
+ full_name = g_strstrip(g_strdup_printf("%s %s", (fn != NULL ? fn : "") , (ln != NULL ? ln : "")));
nick_name = (nn != NULL ? g_strstrip(g_strdup(nn)) : NULL);
if (nick_name != NULL)
@@ -199,8 +194,7 @@ yahoo_fetch_aliases(PurpleConnection *gc)
PurpleHttpRequest *req;
PurpleHttpCookieJar *cookiejar;
- req = purple_http_request_new(yd->jp ? YAHOOJP_ALIAS_FETCH_URL :
- YAHOO_ALIAS_FETCH_URL);
+ req = purple_http_request_new(YAHOO_ALIAS_FETCH_URL);
/* XXX: see the other note about user-agent */
purple_http_request_header_set(req, "User-Agent",
"Mozilla/4.0 (compatible; MSIE 5.5)");
@@ -282,7 +276,7 @@ yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias)
PurpleHttpRequest *req;
PurpleHttpCookieJar *cookiejar;
YahooData *yd;
- gchar *content;
+ gchar *content, *escaped_alias;
struct callback_data *cb;
YahooFriend *f;
@@ -306,51 +300,28 @@ yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias)
cb->id = g_strdup(yahoo_friend_get_alias_id(f));
cb->gc = gc;
+ escaped_alias = g_markup_escape_text(alias, -1);
+
if (cb->id == NULL) {
/* No id for this buddy, so create an address book entry */
purple_debug_info("yahoo", "Creating '%s' as new alias for user '%s'\n", alias, who);
- if (yd->jp) {
- gchar *alias_jp = g_convert(alias, -1, "EUC-JP", "UTF-8", NULL, NULL, NULL);
- gchar *converted_alias_jp = yahoo_convert_to_numeric(alias_jp);
- content = g_strdup_printf("<ab k=\"%s\" cc=\"9\">\n"
- "<ct a=\"1\" yi='%s' nn='%s' />\n</ab>\r\n",
- purple_account_get_username(purple_connection_get_account(gc)),
- who, converted_alias_jp);
- g_free(converted_alias_jp);
- g_free(alias_jp);
- } else {
- gchar *escaped_alias = g_markup_escape_text(alias, -1);
- content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"9\">\n"
- "<ct a=\"1\" yi='%s' nn='%s' />\n</ab>\r\n",
- purple_account_get_username(purple_connection_get_account(gc)),
- who, escaped_alias);
- g_free(escaped_alias);
- }
+ content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"9\">\n"
+ "<ct a=\"1\" yi='%s' nn='%s' />\n</ab>\r\n",
+ purple_account_get_username(purple_connection_get_account(gc)),
+ who, escaped_alias);
+ g_free(escaped_alias);
} else {
purple_debug_info("yahoo", "Updating '%s' as new alias for user '%s'\n", alias, who);
- if (yd->jp) {
- gchar *alias_jp = g_convert(alias, -1, "EUC-JP", "UTF-8", NULL, NULL, NULL);
- gchar *converted_alias_jp = yahoo_convert_to_numeric(alias_jp);
- content = g_strdup_printf("<ab k=\"%s\" cc=\"1\">\n"
- "<ct e=\"1\" yi='%s' id='%s' nn='%s' pr='0' />\n</ab>\r\n",
- purple_account_get_username(purple_connection_get_account(gc)),
- who, cb->id, converted_alias_jp);
- g_free(converted_alias_jp);
- g_free(alias_jp);
- } else {
- gchar *escaped_alias = g_markup_escape_text(alias, -1);
- content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"1\">\n"
- "<ct e=\"1\" yi='%s' id='%s' nn='%s' pr='0' />\n</ab>\r\n",
- purple_account_get_username(purple_connection_get_account(gc)),
- who, cb->id, escaped_alias);
- g_free(escaped_alias);
- }
+ content = g_strdup_printf("<?xml version=\"1.0\" encoding=\"utf-8\"?><ab k=\"%s\" cc=\"1\">\n"
+ "<ct e=\"1\" yi='%s' id='%s' nn='%s' pr='0' />\n</ab>\r\n",
+ purple_account_get_username(purple_connection_get_account(gc)),
+ who, cb->id, escaped_alias);
+ g_free(escaped_alias);
}
- req = purple_http_request_new(yd->jp ? YAHOOJP_ALIAS_UPDATE_URL:
- YAHOO_ALIAS_UPDATE_URL);
+ req = purple_http_request_new(YAHOO_ALIAS_UPDATE_URL);
purple_http_request_set_method(req, "POST");
/* XXX: We get rs="ERROR:-100:No Login", when we set
* YAHOO_CLIENT_USERAGENT (Mozilla/5.0) here.
@@ -478,8 +449,7 @@ yahoo_set_userinfo_cb(PurpleConnection *gc, PurpleRequestFields *fields)
}
#endif
- req = purple_http_request_new(yd->jp ? YAHOOJP_USERINFO_URL :
- YAHOO_USERINFO_URL);
+ req = purple_http_request_new(YAHOO_USERINFO_URL);
purple_http_request_set_method(req, "POST");
/* XXX: see the previous comment for user-agent */
purple_http_request_header_set(req, "User-Agent",
@@ -662,7 +632,6 @@ parse_contact_details(YahooData *yd, const char *who, const char *xml)
return TRUE;
}
-/* I don't think this happens for MSN buddies. -- sad */
void yahoo_process_contact_details(PurpleConnection *gc, struct yahoo_packet *pkt)
{
GSList *l = pkt->hash;
diff --git a/libpurple/protocols/yahoo/yahoo_filexfer.c b/libpurple/protocols/yahoo/yahoo_filexfer.c
index 8dbca63382..47353178a8 100644
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c
@@ -578,7 +578,7 @@ static void yahoo_xfer_dns_connected_15(GSList *hosts, gpointer data, const char
gboolean yahoo_can_receive_file(PurpleConnection *gc, const char *who)
{
- if (!who || yahoo_get_federation_from_name(who) != YAHOO_FEDERATION_NONE)
+ if (!who)
return FALSE;
return TRUE;
}
@@ -727,18 +727,9 @@ void yahoo_process_filetrans_15(PurpleConnection *gc, struct yahoo_packet *pkt)
xd->is_relay = TRUE;
account = purple_connection_get_account(gc);
- if (yd->jp)
- {
- purple_dnsquery_a(account, YAHOOJP_XFER_RELAY_HOST,
- YAHOOJP_XFER_RELAY_PORT,
- yahoo_xfer_dns_connected_15, xfer);
- }
- else
- {
- purple_dnsquery_a(account, YAHOO_XFER_RELAY_HOST,
- YAHOO_XFER_RELAY_PORT,
- yahoo_xfer_dns_connected_15, xfer);
- }
+ purple_dnsquery_a(account, YAHOO_XFER_RELAY_HOST,
+ YAHOO_XFER_RELAY_PORT,
+ yahoo_xfer_dns_connected_15, xfer);
return;
}
diff --git a/libpurple/protocols/yahoo/yahoo_filexfer.h b/libpurple/protocols/yahoo/yahoo_filexfer.h
index f0a14addb2..a463d60a3e 100644
--- a/libpurple/protocols/yahoo/yahoo_filexfer.h
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.h
@@ -39,8 +39,6 @@ PurpleXfer *yahoo_new_xfer(PurpleConnection *gc, const char *who);
/**
* Returns TRUE if the buddy can receive file, FALSE otherwise.
- * Federated users cannot receive files. So this will return FALSE only
- * for them.
*
* @param gc The connection
* @param who The name of the remote user
diff --git a/libpurple/protocols/yahoo/yahoo_friend.c b/libpurple/protocols/yahoo/yahoo_friend.c
index 1f3e9f5f4a..06927d70b1 100644
--- a/libpurple/protocols/yahoo/yahoo_friend.c
+++ b/libpurple/protocols/yahoo/yahoo_friend.c
@@ -153,7 +153,6 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
char *temp = NULL;
char *who = NULL;
int value = 0;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
while (l) {
struct yahoo_pair *pair = l->data;
@@ -170,9 +169,6 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
case 31:
value = strtol(pair->value, NULL, 10);
break;
- case 241:
- fed = strtol(pair->value, NULL, 10);
- break;
}
l = l->next;
@@ -183,23 +179,8 @@ void yahoo_process_presence(PurpleConnection *gc, struct yahoo_packet *pkt)
return;
}
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- who = g_strconcat("msn/", temp, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- who = g_strconcat("ocs/", temp, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- who = g_strconcat("ibm/", temp, NULL);
- break;
- case YAHOO_FEDERATION_PBX:
- who = g_strconcat("pbx/", temp, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- who = g_strdup(temp);
- break;
- }
+ who = g_strdup(temp);
+
g_return_if_fail(who != NULL);
f = yahoo_friend_find(gc, who);
@@ -246,10 +227,7 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
if (!f)
return;
- if(f->fed != YAHOO_FEDERATION_NONE)
- temp = name+4;
- else
- temp = name;
+ temp = name;
/* No need to change the value if it is already correct */
if (f->presence == presence) {
@@ -275,20 +253,12 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
if (f->presence == YAHOO_PRESENCE_PERM_OFFLINE) {
pkt = yahoo_packet_new(YAHOO_SERVICE_PRESENCE_PERM,
YAHOO_STATUS_AVAILABLE, yd->session_id);
- if(f->fed)
- yahoo_packet_hash(pkt, "ssssssiss",
- 1, purple_connection_get_display_name(gc),
- 31, "2", 13, "2",
- 302, "319", 300, "319",
- 7, temp, 241, f->fed,
- 301, "319", 303, "319");
- else
- yahoo_packet_hash(pkt, "ssssssss",
- 1, purple_connection_get_display_name(gc),
- 31, "2", 13, "2",
- 302, "319", 300, "319",
- 7, temp,
- 301, "319", 303, "319");
+ yahoo_packet_hash(pkt, "ssssssss",
+ 1, purple_connection_get_display_name(gc),
+ 31, "2", 13, "2",
+ 302, "319", 300, "319",
+ 7, temp,
+ 301, "319", 303, "319");
yahoo_packet_send_and_free(pkt, yd);
}
@@ -302,20 +272,12 @@ void yahoo_friend_update_presence(PurpleConnection *gc, const char *name,
pkt = yahoo_packet_new(service,
YAHOO_STATUS_AVAILABLE, yd->session_id);
- if(f->fed)
- yahoo_packet_hash(pkt, "ssssssiss",
- 1, purple_connection_get_display_name(gc),
- 31, thirtyone, 13, thirteen,
- 302, "319", 300, "319",
- 7, temp, 241, f->fed,
- 301, "319", 303, "319");
- else
- yahoo_packet_hash(pkt, "ssssssss",
- 1, purple_connection_get_display_name(gc),
- 31, thirtyone, 13, thirteen,
- 302, "319", 300, "319",
- 7, temp,
- 301, "319", 303, "319");
+ yahoo_packet_hash(pkt, "ssssssss",
+ 1, purple_connection_get_display_name(gc),
+ 31, thirtyone, 13, thirteen,
+ 302, "319", 300, "319",
+ 7, temp,
+ 301, "319", 303, "319");
yahoo_packet_send_and_free(pkt, yd);
}
diff --git a/libpurple/protocols/yahoo/yahoo_friend.h b/libpurple/protocols/yahoo/yahoo_friend.h
index 610f0c5a26..f81f0e187d 100644
--- a/libpurple/protocols/yahoo/yahoo_friend.h
+++ b/libpurple/protocols/yahoo/yahoo_friend.h
@@ -55,7 +55,6 @@ typedef struct _YahooFriend {
gchar *ip;
gboolean bicon_sent_request;
YahooPresenceVisibility presence;
- YahooFederation fed;
long int version_id;
YahooPersonalDetails ypd;
YahooP2PStatus p2p_status;
diff --git a/libpurple/protocols/yahoo/yahoo_packet.c b/libpurple/protocols/yahoo/yahoo_packet.c
index 2afdb00edb..face78616b 100644
--- a/libpurple/protocols/yahoo/yahoo_packet.c
+++ b/libpurple/protocols/yahoo/yahoo_packet.c
@@ -314,8 +314,7 @@ yahoo_packet_send_can_write(gpointer data, gint source, PurpleInputCondition con
}
-size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm,
- gboolean jp, guchar **buf)
+size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm, guchar **buf)
{
size_t pktlen = yahoo_packet_length(pkt);
size_t len = YAHOO_PACKET_HDRLEN + pktlen;
@@ -328,8 +327,6 @@ size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm,
if (wm)
pos += yahoo_put16(data + pos, YAHOO_WEBMESSENGER_PROTO_VER);
- else if (jp)
- pos += yahoo_put16(data + pos, YAHOO_PROTO_VER_JAPAN);
else
pos += yahoo_put16(data + pos, YAHOO_PROTO_VER);
pos += yahoo_put16(data + pos, 0x0000);
@@ -354,7 +351,7 @@ int yahoo_packet_send(struct yahoo_packet *pkt, YahooData *yd)
if (yd->fd < 0)
return -1;
- len = yahoo_packet_build(pkt, 0, yd->wm, yd->jp, &data);
+ len = yahoo_packet_build(pkt, 0, yd->wm, &data);
yahoo_packet_dump(data, len);
if (yd->txhandler == 0)
diff --git a/libpurple/protocols/yahoo/yahoo_packet.h b/libpurple/protocols/yahoo/yahoo_packet.h
index 6fdbd3438b..df9b074a50 100644
--- a/libpurple/protocols/yahoo/yahoo_packet.h
+++ b/libpurple/protocols/yahoo/yahoo_packet.h
@@ -128,7 +128,6 @@ struct yahoo_packet {
#define YAHOO_WEBMESSENGER_PROTO_VER 0x0065
#define YAHOO_PROTO_VER 0x0010
-#define YAHOO_PROTO_VER_JAPAN 0x0010
#define YAHOO_PACKET_HDRLEN (4 + 2 + 2 + 2 + 2 + 4 + 4)
@@ -139,8 +138,7 @@ void yahoo_packet_hash_str(struct yahoo_packet *pkt, int key, const char *value)
void yahoo_packet_hash_int(struct yahoo_packet *pkt, int key, int value);
int yahoo_packet_send(struct yahoo_packet *pkt, YahooData *yd);
int yahoo_packet_send_and_free(struct yahoo_packet *pkt, YahooData *yd);
-size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm, gboolean jp,
-guchar **buf);
+size_t yahoo_packet_build(struct yahoo_packet *pkt, int pad, gboolean wm, guchar **buf);
void yahoo_packet_read(struct yahoo_packet *pkt, const guchar *data, int len);
void yahoo_packet_write(struct yahoo_packet *pkt, guchar *data);
void yahoo_packet_dump(guchar *data, int len);
diff --git a/libpurple/protocols/yahoo/yahoo_picture.c b/libpurple/protocols/yahoo/yahoo_picture.c
index 0c4d51bfc8..c3c21c8ae8 100644
--- a/libpurple/protocols/yahoo/yahoo_picture.c
+++ b/libpurple/protocols/yahoo/yahoo_picture.c
@@ -404,7 +404,7 @@ yahoo_buddy_icon_build_packet(struct yahoo_buddy_icon_upload_data *d)
yahoo_packet_hash_str(pkt, 27, d->filename);
yahoo_packet_hash_str(pkt, 14, "");
/* 4 padding for the 29 key name */
- pkt_buf_len = yahoo_packet_build(pkt, 4, FALSE, yd->jp, &pkt_buf);
+ pkt_buf_len = yahoo_packet_build(pkt, 4, FALSE, &pkt_buf);
yahoo_packet_free(pkt);
/* There's no magic here, we just need to prepend in reverse order */
@@ -428,8 +428,7 @@ yahoo_buddy_icon_upload(PurpleConnection *gc,
req = purple_http_request_new(NULL);
purple_http_request_set_url_printf(req, "http://%s/notifyft",
- purple_account_get_string(account, "xfer_host", yd->jp ?
- YAHOOJP_XFER_HOST : YAHOO_XFER_HOST));
+ purple_account_get_string(account, "xfer_host", YAHOO_XFER_HOST));
purple_http_request_set_method(req, "POST");
cjar = purple_http_request_get_cookie_jar(req);
purple_http_cookie_jar_set(cjar, "T", yd->cookie_t);
diff --git a/libpurple/protocols/yahoo/yahoo_profile.c b/libpurple/protocols/yahoo/yahoo_profile.c
index 5666b8d68b..cc825f822c 100644
--- a/libpurple/protocols/yahoo/yahoo_profile.c
+++ b/libpurple/protocols/yahoo/yahoo_profile.c
@@ -413,7 +413,7 @@ static const profile_strings_node_t profile_strings[] = {
NULL
},
{ JA, "ja", "EUC-JP",
- "Yahoo! JAPAN ID:",
+ "Yahoo! ID:",
"非公開",
"無回答",
"メール:",
@@ -426,11 +426,7 @@ static const profile_strings_node_t profile_strings[] = {
"趣味:",
"最近の出来事:",
NULL,
-#if 0
- "おすすめサイト",
-#else
- "自己PR", /* "Self description" comes before "Links" for yahoo.co.jp */
-#endif
+ "おすすめサイト", /* XXX: this used to have a Yahoo Japan-specific annotation */
NULL,
NULL,
NULL,
@@ -796,8 +792,7 @@ yahoo_got_info(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
user_info = purple_notify_user_info_new();
- title = yd->jp ? _("Yahoo! Japan Profile") :
- _("Yahoo! Profile");
+ title = _("Yahoo! Profile");
/* Get the tooltip info string */
yahoo_extract_user_info_text(user_info, info_data);
@@ -821,7 +816,7 @@ yahoo_got_info(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* Construct the correct profile URL */
s = g_string_sized_new(80); /* wild guess */
- g_string_printf(s, "%s%s", (yd->jp? YAHOOJP_PROFILE_URL: YAHOO_PROFILE_URL),
+ g_string_printf(s, "%s%s", YAHOO_PROFILE_URL,
info_data->name);
profile_url_text = g_string_free(s, FALSE);
s = NULL;
@@ -949,7 +944,6 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
gpointer _info2_data)
{
YahooGetInfoStepTwoData *info2_data = _info2_data;
- YahooData *yd;
gboolean found = FALSE;
/* Temporary variables */
@@ -979,8 +973,6 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
g_return_if_fail(strings != NULL);
- yd = purple_connection_get_protocol_data(info_data->gc);
-
fudged_buffer = purple_strcasereplace(url_buffer, "</dd>", "</dd><br>");
/* nuke the html, it's easier than trying to parse the horrid stuff */
stripped = purple_markup_strip_html(fudged_buffer);
@@ -1023,7 +1015,7 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* extract their Yahoo! ID and put it in. Don't bother marking has_info as
* true, since the Yahoo! ID will always be there */
if (!purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->yahoo_id_string, (yd->jp ? 2 : 10), "\n", 0,
+ strings->yahoo_id_string, 10, "\n", 0,
NULL, _("Yahoo! ID"), 0, NULL, NULL))
;
#endif
@@ -1053,7 +1045,7 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* extract their Email address and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->my_email_string, (yd->jp ? 4 : 1), " ", 0,
+ strings->my_email_string, 1, " ", 0,
strings->private_string, _("Email"), 0, NULL, NULL);
/* extract the Nickname if it exists */
@@ -1063,27 +1055,27 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* extract their RealName and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->realname_string, (yd->jp ? 3 : 1), "\n", '\n',
+ strings->realname_string, 1, "\n", '\n',
NULL, _("Real Name"), 0, NULL, NULL);
/* extract their Location and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->location_string, (yd->jp ? 4 : 2), "\n", '\n',
+ strings->location_string, 2, "\n", '\n',
NULL, _("Location"), 0, NULL, NULL);
/* extract their Age and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->age_string, (yd->jp ? 2 : 3), "\n", '\n',
+ strings->age_string, 3, "\n", '\n',
NULL, _("Age"), 0, NULL, NULL);
/* extract their MaritalStatus and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->maritalstatus_string, (yd->jp ? 2 : 3), "\n", '\n',
+ strings->maritalstatus_string, 3, "\n", '\n',
strings->no_answer_string, _("Marital Status"), 0, NULL, NULL);
/* extract their Gender and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->gender_string, (yd->jp ? 2 : 3), "\n", '\n',
+ strings->gender_string, 3, "\n", '\n',
strings->no_answer_string, _("Gender"), 0, NULL, NULL);
/* extract their Occupation and put it in */
@@ -1096,12 +1088,11 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
* can also not appear. The way we delimit them is to successively
* look for the next one that _could_ appear, and if all else fails,
* we end the section by looking for the 'Links' heading, which is the
- * next thing to follow this bunch. (For Yahoo Japan, we check for
- * the "Description" ("Self PR") heading instead of "Links".)
+ * next thing to follow this bunch.
*/
if (!purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->hobbies_string, (yd->jp ? 3 : 1), strings->latest_news_string,
+ strings->hobbies_string, 1, strings->latest_news_string,
'\n', "\n", _("Hobbies"), 0, NULL, NULL))
{
if (!purple_markup_extract_info_field(stripped, stripped_len, user_info,
@@ -1123,7 +1114,7 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
'\n', "\n", _("Latest News"), 0, NULL, NULL))
{
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- strings->latest_news_string, (yd->jp ? 2 : 1), strings->links_string,
+ strings->latest_news_string, 1, strings->links_string,
'\n', "\n", _("Latest News"), 0, NULL, NULL);
}
else
@@ -1135,8 +1126,6 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* Home Page will either be "No home page specified",
* or "Home Page: " and a link.
- * For Yahoo! Japan, if there is no home page specified,
- * neither "No home page specified" nor "Home Page:" is shown.
*/
if (strings->home_page_string) {
p = !strings->no_home_page_specified_string? NULL:
@@ -1182,8 +1171,8 @@ yahoo_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
/* extract the Last Updated date and put it in */
found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
- last_updated_utf8_string, (yd->jp ? 2 : 1), (yd->jp ? "\n" : " "), (yd->jp ? 0 : '\n'), NULL,
- _("Last Update"), 0, NULL, (yd->jp ? NULL : yahoo_info_date_reformat));
+ last_updated_utf8_string, 1, " ", '\n', NULL,
+ _("Last Update"), 0, NULL, yahoo_info_date_reformat);
}
} /* if (profile_state == PROFILE_STATE_DEFAULT) */
@@ -1266,5 +1255,5 @@ void yahoo_get_info(PurpleConnection *gc, const char *name)
purple_http_connection_set_add(yd->http_reqs, purple_http_get_printf(gc,
yahoo_got_info, data, "%s%s",
- (yd->jp ? YAHOOJP_PROFILE_URL : YAHOO_PROFILE_URL), name));
+ YAHOO_PROFILE_URL, name));
}
diff --git a/libpurple/protocols/yahoo/yahoochat.c b/libpurple/protocols/yahoo/yahoochat.c
index 5f1ec47bb8..32412baabc 100644
--- a/libpurple/protocols/yahoo/yahoochat.c
+++ b/libpurple/protocols/yahoo/yahoochat.c
@@ -67,12 +67,11 @@ static void yahoo_chat_online(PurpleConnection *gc)
pkt = yahoo_packet_new(YAHOO_SERVICE_CHATONLINE, YAHOO_STATUS_AVAILABLE, yd->session_id);
yahoo_packet_hash(pkt, "sssss",
- 109, purple_connection_get_display_name(gc),
- 1, purple_connection_get_display_name(gc),
- 6, "abcde",
- /* I'm not sure this is the correct way to set this. */
- 98, rll,
- 135, yd->jp ? YAHOO_CLIENT_VERSION : YAHOOJP_CLIENT_VERSION);
+ 109, purple_connection_get_display_name(gc),
+ 1, purple_connection_get_display_name(gc),
+ 6, "abcde",
+ 98, rll,
+ 135, YAHOO_CLIENT_VERSION);
yahoo_packet_send_and_free(pkt, yd);
}
@@ -1516,15 +1515,8 @@ PurpleRoomlist *yahoo_roomlist_get_list(PurpleConnection *gc)
account = purple_connection_get_account(gc);
- /* for Yahoo Japan, it appears there is only one valid URL and locale */
- if(purple_account_get_bool(account, "yahoojp", FALSE)) {
- rll = YAHOOJP_ROOMLIST_LOCALE;
- rlurl = YAHOOJP_ROOMLIST_URL;
- }
- else { /* but for the rest of the world that isn't the case */
- rll = purple_account_get_string(account, "room_list_locale", YAHOO_ROOMLIST_LOCALE);
- rlurl = purple_account_get_string(account, "room_list", YAHOO_ROOMLIST_URL);
- }
+ rll = purple_account_get_string(account, "room_list_locale", YAHOO_ROOMLIST_LOCALE);
+ rlurl = purple_account_get_string(account, "room_list", YAHOO_ROOMLIST_URL);
url = g_strdup_printf("%s?chatcat=0&intl=%s", rlurl, rll);
diff --git a/libpurple/protocols/yahoo/ymsg.c b/libpurple/protocols/yahoo/ymsg.c
index 3873568234..d2917d1ee3 100644
--- a/libpurple/protocols/yahoo/ymsg.c
+++ b/libpurple/protocols/yahoo/ymsg.c
@@ -76,11 +76,6 @@ yahoo_login_page_cb(PurpleHttpConnection *http_conn,
PurpleHttpResponse *response, gpointer _unused);
#endif /* TRY_WEBMESSENGER_LOGIN */
-static gboolean yahoo_is_japan(PurpleAccount *account)
-{
- return purple_strequal(purple_account_get_protocol_id(account), "prpl-yahoojp");
-}
-
static void yahoo_update_status(PurpleConnection *gc, const char *name, YahooFriend *f)
{
char *status = NULL;
@@ -164,8 +159,6 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
char *name = NULL;
gboolean unicode = FALSE;
char *message = NULL;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
- char *fedname = NULL;
if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) {
if (!purple_account_get_remember_password(account))
@@ -195,38 +188,8 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
name = message = NULL;
f = NULL;
if (pair->value && g_utf8_validate(pair->value, -1, NULL)) {
- GSList *tmplist;
-
name = pair->value;
-
- /* Look ahead to see if we have the federation info about the buddy */
- for (tmplist = l->next; tmplist; tmplist = tmplist->next) {
- struct yahoo_pair *p = tmplist->data;
- if (p->key == 7)
- break;
- if (p->key == 241) {
- fed = strtol(p->value, NULL, 10);
- g_free(fedname);
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- name = fedname = g_strconcat("msn/", name, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- name = fedname = g_strconcat("ocs/", name, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- name = fedname = g_strconcat("ibm/", name, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- fedname = NULL;
- break;
- }
- break;
- }
- }
f = yahoo_friend_find_or_new(gc, name);
- f->fed = fed;
}
break;
case 10: /* state */
@@ -384,8 +347,6 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
if(f && strtol(pair->value, NULL, 10))
f->version_id = strtol(pair->value, NULL, 10);
break;
- case 241: /* Federated network buddy belongs to */
- break; /* We process this when get '7' */
default:
purple_debug_warning("yahoo",
"Unknown status key %d\n", pair->key);
@@ -404,8 +365,6 @@ static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
if (name) /* update the last buddy */
yahoo_update_status(gc, name, f);
}
-
- g_free(fedname);
}
static void yahoo_do_group_check(PurpleAccount *account, GHashTable *ht, const char *name, const char *group)
@@ -512,7 +471,6 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
char *temp = NULL;
YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */
/* But what if you had no friends? */
- YahooFederation fed = YAHOO_FEDERATION_NONE;
int stealth = 0;
ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
@@ -537,23 +495,8 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
break;
case 301: /* This is 319 before all s/n's in a group after the first. It is followed by an identical 300. */
if(temp != NULL) {
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- norm_bud = g_strconcat("msn/", temp, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- norm_bud = g_strconcat("ocs/", temp, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- norm_bud = g_strconcat("ibm/", temp, NULL);
- break;
- case YAHOO_FEDERATION_PBX:
- norm_bud = g_strconcat("pbx/", temp, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- norm_bud = g_strdup(temp);
- break;
- }
+ norm_bud = g_strdup(temp);
+
if (yd->current_list15_grp) {
/* This buddy is in a group */
f = yahoo_friend_find_or_new(gc, norm_bud);
@@ -568,19 +511,12 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
purple_blist_add_buddy(b, NULL, g, NULL);
}
yahoo_do_group_check(account, ht, norm_bud, yd->current_list15_grp);
- if(fed) {
- f->fed = fed;
- purple_debug_info("yahoo", "Setting federation to %d\n", f->fed);
- }
+
if(stealth == 2)
f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
- /* set p2p status not connected and no p2p packet sent */
- if(fed == YAHOO_FEDERATION_NONE) {
- yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
- f->p2p_packet_sent = 0;
- } else
- yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+ f->p2p_packet_sent = 0;
} else {
/* This buddy is on the ignore list (and therefore in no group) */
purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n", purple_account_get_username(account), norm_bud);
@@ -589,7 +525,6 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
g_free(norm_bud);
norm_bud=NULL;
- fed = YAHOO_FEDERATION_NONE;
stealth = 0;
g_free(temp);
temp = NULL;
@@ -610,9 +545,6 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
"got non-UTF-8 string for key %d\n", pair->key);
}
break;
- case 241: /* user on federated network */
- fed = strtol(pair->value, NULL, 10);
- break;
case 59: /* somebody told cookies come here too, but im not sure */
if (g_utf8_validate(pair->value, -1, NULL)) {
yahoo_process_cookie(yd, pair->value);
@@ -624,8 +556,6 @@ static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt
case 317: /* Stealth Setting */
stealth = strtol(pair->value, NULL, 10);
break;
- /* case 242: */ /* this seems related to 241 */
- /* break; */
}
}
@@ -832,7 +762,6 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt,
GSList *l = pkt->hash;
gint val_11 = 0;
YahooData *yd = purple_connection_get_protocol_data(gc);
- YahooFederation fed = YAHOO_FEDERATION_NONE;
account = purple_connection_get_account(gc);
@@ -858,8 +787,6 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt,
}
} else if (pair->key == 11) {
val_11 = strtol(pair->value, NULL, 10);
- } else if (pair->key == 241) {
- fed = strtol(pair->value, NULL, 10);
}
l = l->next;
}
@@ -868,7 +795,7 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt,
return;
/* disconnect the peer if connected through p2p and sends wrong value for session id */
- if( (pkt_type == YAHOO_PKT_TYPE_P2P) && (val_11 != yd->session_id) ) {
+ if ((pkt_type == YAHOO_PKT_TYPE_P2P) && (val_11 != yd->session_id)) {
purple_debug_warning("yahoo","p2p: %s sent us notify with wrong session id. Disconnecting p2p connection to peer\n", from);
/* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
g_hash_table_remove(yd->peers, from);
@@ -878,32 +805,11 @@ static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt,
if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))
&& (purple_account_privacy_check(account, from)))
{
- char *fed_from = from;
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- fed_from = g_strconcat("msn/", from, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- fed_from = g_strconcat("ocs/", from, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- fed_from = g_strconcat("ibm/", from, NULL);
- break;
- case YAHOO_FEDERATION_PBX:
- fed_from = g_strconcat("pbx/", from, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- break;
- }
if (stat && *stat == '1')
- purple_serv_got_typing(gc, fed_from, 0, PURPLE_IM_TYPING);
+ purple_serv_got_typing(gc, from, 0, PURPLE_IM_TYPING);
else
- purple_serv_got_typing_stopped(gc, fed_from);
-
- if (fed_from != from)
- g_free(fed_from);
+ purple_serv_got_typing_stopped(gc, from);
} else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
PurpleBuddy *bud = purple_blist_find_buddy(account, from);
@@ -942,8 +848,6 @@ struct _yahoo_im {
int buddy_icon;
char *id;
char *msg;
- YahooFederation fed;
- char *fed_from;
};
static void yahoo_process_sms_message(PurpleConnection *gc, struct yahoo_packet *pkt)
@@ -1049,8 +953,6 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
im->from = pair->value;
im->time = time(NULL);
im->utf8 = TRUE;
- im->fed = YAHOO_FEDERATION_NONE;
- im->fed_from = g_strdup(im->from);
} else {
purple_debug_warning("yahoo", "yahoo_process_message "
"got non-UTF-8 string for key %d\n", pair->key);
@@ -1069,47 +971,23 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
} else if (pair->key == 14) {
if (im)
im->msg = pair->value;
- } else if (im && pair->key == 241) {
- im->fed = strtol(pair->value, NULL, 10);
- g_free(im->fed_from);
- switch (im->fed) {
- case YAHOO_FEDERATION_MSN:
- im->fed_from = g_strconcat("msn/",im->from, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- im->fed_from = g_strconcat("ocs/",im->from, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- im->fed_from = g_strconcat("ibm/",im->from, NULL);
- break;
- case YAHOO_FEDERATION_PBX:
- im->fed_from = g_strconcat("pbx/",im->from, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- im->fed_from = g_strdup(im->from);
- break;
- }
- purple_debug_info("yahoo", "Message from federated (%d) buddy %s.\n", im->fed, im->fed_from);
-
} else if (im && (pair->key == 11)) {
/* peer session id */
/* disconnect the peer if connected through p2p and sends wrong value for session id */
- if( (im->fed == YAHOO_FEDERATION_NONE) && (pkt_type == YAHOO_PKT_TYPE_P2P)
+ if( (pkt_type == YAHOO_PKT_TYPE_P2P)
&& (yd->session_id != strtol(pair->value, NULL, 10)) )
{
- purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->fed_from);
+ purple_debug_warning("yahoo","p2p: %s sent us message with wrong session id. Disconnecting p2p connection to peer\n", im->from);
/* remove from p2p connection lists, also calls yahoo_p2p_disconnect_destroy_data */
- g_hash_table_remove(yd->peers, im->fed_from);
- g_free(im->fed_from);
+ g_hash_table_remove(yd->peers, im->from);
g_free(im);
return; /* Not sure whether we should process remaining IMs in this packet */
}
} else if (im && pair->key == 63 && g_utf8_validate(pair->value, -1, NULL)) {
/* IMV key */
- /* Check for the Doodle IMV, no IMvironment for federated buddies */
- if (im->from != NULL && im->fed == YAHOO_FEDERATION_NONE)
+ /* Check for the Doodle IMV */
+ if (im->from != NULL)
{
g_hash_table_replace(yd->imvironments, g_strdup(im->from), g_strdup(pair->value));
@@ -1120,7 +998,6 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
if (!purple_account_privacy_check(account, im->from)) {
purple_debug_info("yahoo", "Doodle request from %s dropped.\n",
im->from);
- g_free(im->fed_from);
g_free(im);
return;
}
@@ -1154,18 +1031,16 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
}
for (l = list; l; l = l->next) {
- YahooFriend *f;
char *m, *m2;
im = l->data;
- if (!im->fed_from || !im->msg) {
- g_free(im->fed_from);
+ if (!im->msg) {
g_free(im);
continue;
}
- if (!purple_account_privacy_check(account, im->fed_from)) {
- purple_debug_info("yahoo", "Message from %s dropped.\n", im->fed_from);
+ if (!purple_account_privacy_check(account, im->from)) {
+ purple_debug_info("yahoo", "Message from %s dropped.\n", im->from);
return;
}
@@ -1203,11 +1078,10 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
if (!strcmp(m, "<ding>")) {
char *username;
- username = g_markup_escape_text(im->fed_from, -1);
+ username = g_markup_escape_text(im->from, -1);
purple_protocol_got_attention(gc, username, YAHOO_BUZZ);
g_free(username);
g_free(m);
- g_free(im->fed_from);
g_free(im);
continue;
}
@@ -1215,20 +1089,8 @@ static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt
m2 = yahoo_codes_to_html(m);
g_free(m);
- purple_serv_got_im(gc, im->fed_from, m2, 0, im->time);
+ purple_serv_got_im(gc, im->from, m2, 0, im->time);
g_free(m2);
-
- /* Official clients don't share buddy images with federated buddies */
- if (im->fed == YAHOO_FEDERATION_NONE) {
- if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) {
- if (yahoo_friend_get_buddy_icon_need_request(f)) {
- yahoo_send_picture_request(gc, im->from);
- yahoo_friend_set_buddy_icon_need_request(f, FALSE);
- }
- }
- }
-
- g_free(im->fed_from);
g_free(im);
}
@@ -1276,7 +1138,6 @@ struct yahoo_add_request {
PurpleConnection *gc;
char *id;
char *who;
- YahooFederation fed;
};
static void
@@ -1288,22 +1149,11 @@ yahoo_buddy_add_authorize_cb(const char *message, gpointer data)
const char *who = add_req->who;
pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
- if (add_req->fed) {
- who += 4;
- yahoo_packet_hash(pkt, "ssiii",
- 1, add_req->id,
- 5, who,
- 241, add_req->fed,
- 13, 1,
- 334, 0);
- }
- else {
- yahoo_packet_hash(pkt, "ssii",
- 1, add_req->id,
- 5, who,
- 13, 1,
- 334, 0);
- }
+ yahoo_packet_hash(pkt, "ssii",
+ 1, add_req->id,
+ 5, who,
+ 13, 1,
+ 334, 0);
yahoo_packet_send_and_free(pkt, yd);
@@ -1327,26 +1177,13 @@ yahoo_buddy_add_deny_cb(const char *msg, gpointer data)
pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15,
YAHOO_STATUS_AVAILABLE, yd->session_id);
- if (add_req->fed) {
- who += 4; /* Skip fed identifier (msn|ocs|ibm)/' */
- yahoo_packet_hash(pkt, "ssiiiis",
- 1, add_req->id,
- 5, who,
- 241, add_req->fed,
- 13, 2,
- 334, 0,
- 97, 1, /* UTF-8 */
- 14, encoded_msg ? encoded_msg : "");
- }
- else {
- yahoo_packet_hash(pkt, "ssiiis",
- 1, add_req->id,
- 5, who,
- 13, 2,
- 334, 0,
- 97, 1, /* UTF-8 */
- 14, encoded_msg ? encoded_msg : "");
- }
+ yahoo_packet_hash(pkt, "ssiiis",
+ 1, add_req->id,
+ 5, who,
+ 13, 2,
+ 334, 0,
+ 97, 1, /* UTF-8 */
+ 14, encoded_msg ? encoded_msg : "");
yahoo_packet_send_and_free(pkt, yd);
@@ -1391,22 +1228,14 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
/* Buddy authorized/declined our addition */
if (pkt->status == 1) {
- char *temp = NULL;
char *who = NULL;
int response = 0;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
while (l) {
struct yahoo_pair *pair = l->data;
switch (pair->key) {
case 4:
- if (g_utf8_validate(pair->value, -1, NULL)) {
- temp = pair->value;
- } else {
- purple_debug_warning("yahoo", "yahoo_buddy_auth_req_15 "
- "got non-UTF-8 string for key %d\n", pair->key);
- }
break;
case 13:
response = strtol(pair->value, NULL, 10);
@@ -1414,29 +1243,10 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
case 14:
msg = pair->value;
break;
- case 241:
- fed = strtol(pair->value, NULL, 10);
- break;
}
l = l->next;
}
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- who = g_strconcat("msn/", temp, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- who = g_strconcat("ocs/", temp, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- who = g_strconcat("ibm/", temp, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- who = g_strdup(temp);
- break;
- }
-
if (response == 1) /* Authorized */
purple_debug_info("yahoo", "Received authorization from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
else if (response == 2) { /* Declined */
@@ -1450,23 +1260,15 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
else if (pkt->status == 3) {
struct yahoo_add_request *add_req;
const char *firstname = NULL, *lastname = NULL;
- char *temp = NULL;
add_req = g_new0(struct yahoo_add_request, 1);
add_req->gc = gc;
- add_req->fed = YAHOO_FEDERATION_NONE;
while (l) {
struct yahoo_pair *pair = l->data;
switch (pair->key) {
case 4:
- if (g_utf8_validate(pair->value, -1, NULL)) {
- temp = pair->value;
- } else {
- purple_debug_warning("yahoo", "yahoo_buddy_auth_req_15 "
- "got non-UTF-8 string for key %d\n", pair->key);
- }
break;
case 5:
if (g_utf8_validate(pair->value, -1, NULL)) {
@@ -1487,9 +1289,6 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
"got non-UTF-8 string for key %d\n", pair->key);
}
break;
- case 241:
- add_req->fed = strtol(pair->value, NULL, 10);
- break;
case 254:
if (g_utf8_validate(pair->value, -1, NULL)) {
lastname = pair->value;
@@ -1502,21 +1301,6 @@ static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *p
}
l = l->next;
}
- switch (add_req->fed) {
- case YAHOO_FEDERATION_MSN:
- add_req->who = g_strconcat("msn/", temp, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- add_req->who = g_strconcat("ocs/", temp, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- add_req->who = g_strconcat("ibm/", temp, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- add_req->who = g_strdup(temp);
- break;
- }
if (add_req->id && add_req->who) {
char *alias = NULL, *dec_msg = NULL;
@@ -1725,6 +1509,7 @@ static char *yahoo_decode(const char *text)
*n = '\0';
+ /* XXX: Is this related to Yahoo! Japan? If so, it should be removed. -mmcco */
if (strstr(text, "\033$B"))
converted = g_convert(new, n - new, OUT_CHARSET, "iso-2022-jp", NULL, NULL, NULL);
if (!converted)
@@ -1737,11 +1522,10 @@ static char *yahoo_decode(const char *text)
static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt)
{
PurpleAccount *account = purple_connection_get_account(gc);
- YahooData *yd = purple_connection_get_protocol_data(gc);
const char *who = NULL;
const char *email = NULL;
const char *subj = NULL;
- const char *yahoo_mail_url = (yd->jp? YAHOOJP_MAIL_URL: YAHOO_MAIL_URL);
+ const char *yahoo_mail_url = YAHOO_MAIL_URL;
int count = 0;
GSList *l = pkt->hash;
@@ -1865,12 +1649,12 @@ static void yahoo_auth16_stage3(PurpleConnection *gc, const char *crypt)
277, yd->cookie_y,
278, yd->cookie_t,
307, base64_string,
- 244, yd->jp ? YAHOOJP_CLIENT_VERSION_ID : YAHOO_CLIENT_VERSION_ID,
+ 244, YAHOO_CLIENT_VERSION_ID,
2, name,
2, "1",
59, yd->cookie_b,
- 98, purple_account_get_string(account, "room_list_locale", yd->jp ? "jp" : "us"),
- 135, yd->jp ? YAHOOJP_CLIENT_VERSION : YAHOO_CLIENT_VERSION);
+ 98, purple_account_get_string(account, "room_list_locale", "us"),
+ 135, YAHOO_CLIENT_VERSION);
} else { /* don't try to send an empty B cookie - the server will be mad */
yahoo_packet_hash(pkt, "sssssssss",
1, name,
@@ -1878,11 +1662,11 @@ static void yahoo_auth16_stage3(PurpleConnection *gc, const char *crypt)
277, yd->cookie_y,
278, yd->cookie_t,
307, base64_string,
- 244, yd->jp ? YAHOOJP_CLIENT_VERSION_ID : YAHOO_CLIENT_VERSION_ID,
+ 244, YAHOO_CLIENT_VERSION_ID,
2, name,
2, "1",
- 98, purple_account_get_string(account, "room_list_locale", yd->jp ? "jp" : "us"),
- 135, yd->jp ? YAHOOJP_CLIENT_VERSION : YAHOO_CLIENT_VERSION);
+ 98, purple_account_get_string(account, "room_list_locale", "us"),
+ 135, YAHOO_CLIENT_VERSION);
}
if (yd->picture_checksum)
@@ -2096,14 +1880,10 @@ static void yahoo_auth16_stage1_cb(PurpleHttpConnection *http_conn,
g_free(token);
}
else {
- /* OK to login, correct information provided */
- gboolean yahoojp = yahoo_is_japan(account);
PurpleHttpRequest *req;
req = purple_http_request_new(NULL);
- purple_http_request_set_url_printf(req,
- yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL,
- token);
+ purple_http_request_set_url_printf(req, YAHOO_LOGIN_URL, token);
purple_http_request_header_set(req, "User-Agent",
YAHOO_CLIENT_USERAGENT);
purple_http_connection_set_add(yd->http_reqs,
@@ -2119,12 +1899,10 @@ static void yahoo_auth16_stage1_cb(PurpleHttpConnection *http_conn,
static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed)
{
YahooData *yd = purple_connection_get_protocol_data(gc);
- PurpleAccount *account = purple_connection_get_account(gc);
PurpleHttpRequest *req;
struct yahoo_auth_data *auth_data = NULL;
char *encoded_username;
char *encoded_password;
- gboolean yahoojp = yahoo_is_japan(account);
purple_debug_info("yahoo", "Authentication: In yahoo_auth16_stage1\n");
@@ -2141,8 +1919,7 @@ static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed)
encoded_password = g_strdup(purple_url_encode(purple_connection_get_password(gc)));
req = purple_http_request_new(NULL);
- purple_http_request_set_url_printf(req,
- yahoojp ? YAHOOJP_TOKEN_URL : YAHOO_TOKEN_URL,
+ purple_http_request_set_url_printf(req, YAHOO_TOKEN_URL,
encoded_username, encoded_password, purple_url_encode(seed));
purple_http_request_header_set(req, "User-Agent", YAHOO_CLIENT_USERAGENT);
purple_http_connection_set_add(yd->http_reqs, purple_http_request(gc,
@@ -2420,7 +2197,6 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
YahooFriend *f;
GSList *l = pkt->hash;
YahooData *yd = purple_connection_get_protocol_data(gc);
- YahooFederation fed = YAHOO_FEDERATION_NONE;
while (l) {
struct yahoo_pair *pair = l->data;
@@ -2440,9 +2216,6 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
case 65:
group = pair->value;
break;
- case 241:
- fed = strtol(pair->value, NULL, 10);
- break;
}
l = l->next;
@@ -2453,35 +2226,16 @@ static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pk
if (!group)
group = "";
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- who = g_strconcat("msn/", temp, NULL);
- break;
- case YAHOO_FEDERATION_OCS:
- who = g_strconcat("ocs/", temp, NULL);
- break;
- case YAHOO_FEDERATION_IBM:
- who = g_strconcat("ibm/", temp, NULL);
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- who = g_strdup(temp);
- break;
- }
+ who = g_strdup(temp);
if (!err || (err == 2)) { /* 0 = ok, 2 = already on serv list */
f = yahoo_friend_find_or_new(gc, who);
yahoo_update_status(gc, who, f);
- f->fed = fed;
if( !g_hash_table_lookup(yd->peers, who) ) {
/* we are not connected as client, so set friend to not connected */
- if(fed)
- yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_DO_NOT_CONNECT);
- else {
- yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
- f->p2p_packet_sent = 0;
- }
+ yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_NOT_CONNECTED);
+ f->p2p_packet_sent = 0;
}
else /* we are already connected. set friend to YAHOO_P2PSTATUS_WE_ARE_CLIENT */
yahoo_friend_set_p2p_status(f, YAHOO_P2PSTATUS_WE_ARE_CLIENT);
@@ -2508,7 +2262,7 @@ static void yahoo_p2p_write_pkt(gint source, struct yahoo_packet *pkt)
guchar *raw_packet;
/*build the raw packet and send it to the host*/
- pkt_len = yahoo_packet_build(pkt, 0, 0, 0, &raw_packet);
+ pkt_len = yahoo_packet_build(pkt, 0, 0, &raw_packet);
written = write(source, raw_packet, pkt_len);
if (written < 0 || (gsize)written != pkt_len)
purple_debug_warning("yahoo","p2p: couldn't write to the source\n");
@@ -2877,10 +2631,6 @@ void yahoo_send_p2p_pkt(PurpleConnection *gc, const char *who, int val_13)
if( !( f && (yahoo_friend_get_p2p_status(f) == YAHOO_P2PSTATUS_NOT_CONNECTED) && (f->p2p_packet_sent == 0)) )
return;
- /* Dont send p2p packet to buddies of other protocols */
- if(f->fed)
- return;
-
/* Finally, don't try to connect to buddies not online or on sms */
if( (f->status == YAHOO_STATUS_OFFLINE) || f->sms )
return;
@@ -3706,15 +3456,10 @@ static void yahoo_got_pager_server(PurpleHttpConnection *http_conn,
purple_debug_error("yahoo", "Unable to retrieve server info: %s\n",
purple_http_response_get_error(response));
- if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
+ if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
+ yahoo_got_connected, gc) == NULL) {
purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
- _("Unable to connect: The server returned an empty response."));
- } else {
- if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
- yahoo_got_connected, gc) == NULL) {
- purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
- _("Unable to connect"));
- }
+ _("Unable to connect"));
}
} else {
got_data = purple_http_response_get_data(response, NULL);
@@ -3741,16 +3486,11 @@ static void yahoo_got_pager_server(PurpleHttpConnection *http_conn,
purple_debug_error("yahoo", "No CS address retrieved! Server "
"response:\n%s\n", got_data);
- if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
+ if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
+ yahoo_got_connected, gc) == NULL) {
purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
- _("Unable to connect: The server's response did not contain "
- "the necessary information"));
- } else
- if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
- yahoo_got_connected, gc) == NULL) {
- purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
- _("Unable to connect"));
- }
+ _("Unable to connect"));
+ }
}
}
@@ -3775,7 +3515,6 @@ void yahoo_login(PurpleAccount *account) {
purple_connection_set_display_name(gc, purple_account_get_username(account));
yd->gc = gc;
- yd->jp = yahoo_is_japan(account);
yd->yahoo_local_p2p_server_fd = -1;
yd->fd = -1;
yd->txhandler = 0;
@@ -3800,8 +3539,7 @@ void yahoo_login(PurpleAccount *account) {
/* Get the pager server. Actually start connecting in the callback since we
* must have the contents of the HTTP response to proceed. */
- req = purple_http_request_new(yd->jp ? YAHOOJP_PAGER_HOST_REQ_URL :
- YAHOO_PAGER_HOST_REQ_URL);
+ req = purple_http_request_new(YAHOO_PAGER_HOST_REQ_URL);
purple_http_request_header_set(req, "User-Agent", YAHOO_CLIENT_USERAGENT);
purple_http_connection_set_add(yd->http_reqs, purple_http_request(gc,
req, yahoo_got_pager_server, yd));
@@ -3928,9 +3666,6 @@ const char *yahoo_list_emblem(PurpleBuddy *b)
if (purple_presence_is_online(presence)) {
if (yahoo_friend_get_game(f))
return "game";
-
- if (f->fed)
- return "external";
}
return NULL;
}
@@ -4242,7 +3977,7 @@ static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
}
- if (f && f->status != YAHOO_STATUS_OFFLINE && f->fed == YAHOO_FEDERATION_NONE) {
+ if (f && f->status != YAHOO_STATUS_OFFLINE) {
if (!yd->wm) {
act = purple_menu_action_new(_("Join in Chat"),
PURPLE_CALLBACK(yahoo_chat_goto_menu),
@@ -4282,12 +4017,10 @@ static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
build_presence_submenu(f, gc));
m = g_list_append(m, act);
- if (f->fed == YAHOO_FEDERATION_NONE) {
- act = purple_menu_action_new(_("Start Doodling"),
- PURPLE_CALLBACK(yahoo_doodle_blist_node),
- NULL, NULL);
- m = g_list_append(m, act);
- }
+ act = purple_menu_action_new(_("Start Doodling"),
+ PURPLE_CALLBACK(yahoo_doodle_blist_node),
+ NULL, NULL);
+ m = g_list_append(m, act);
#if 0
/* XXX: it doesn't seems to work */
@@ -4329,7 +4062,6 @@ yahoo_get_inbox_token_cb(PurpleHttpConnection *http_conn,
PurpleConnection *gc =
purple_http_conn_get_purple_connection(http_conn);
gchar *url;
- YahooData *yd = purple_connection_get_protocol_data(gc);
PURPLE_ASSERT_CONNECTION_IS_VALID(gc);
@@ -4337,7 +4069,7 @@ yahoo_get_inbox_token_cb(PurpleHttpConnection *http_conn,
purple_debug_error("yahoo",
"Requesting mail login token failed: %s\n",
purple_http_response_get_error(response));
- url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL);
+ url = g_strdup(YAHOO_MAIL_URL);
} else {
/* Should we not be hardcoding the rd url? */
gchar *token;
@@ -4361,7 +4093,6 @@ yahoo_get_inbox_token_cb(PurpleHttpConnection *http_conn,
static void yahoo_show_inbox(PurpleProtocolAction *action)
{
/* Setup a cookie that can be used by the browser */
- /* XXX I have no idea how this will work with Yahoo! Japan. */
PurpleConnection *gc = action->connection;
YahooData *yd = purple_connection_get_protocol_data(gc);
@@ -4570,11 +4301,9 @@ int yahoo_send_im(PurpleConnection *gc, PurpleMessage *pmsg)
char *msg2;
PurpleWhiteboard *wb;
int ret = 1;
- const char *fed_who;
gsize lenb = 0;
glong lenc = 0;
struct yahoo_p2p_data *p2p_data;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
const gchar *rcpt = purple_message_get_recipient(pmsg);
msg2 = yahoo_string_encode(gc, msg, TRUE);
@@ -4594,8 +4323,6 @@ int yahoo_send_im(PurpleConnection *gc, PurpleMessage *pmsg)
}
}
- fed = yahoo_get_federation_from_name(rcpt);
-
if (rcpt[0] == '+') {
/* we have an sms to be sent */
gchar *carrier = NULL;
@@ -4646,21 +4373,7 @@ int yahoo_send_im(PurpleConnection *gc, PurpleMessage *pmsg)
}
pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, yd->session_id);
- fed_who = rcpt;
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- case YAHOO_FEDERATION_OCS:
- case YAHOO_FEDERATION_IBM:
- case YAHOO_FEDERATION_PBX:
- fed_who += 4;
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- break;
- }
- yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, fed_who);
- if (fed)
- yahoo_packet_hash_int(pkt, 241, fed);
+ yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, rcpt);
yahoo_packet_hash_str(pkt, 97, "1"); /* UTF-8 */
yahoo_packet_hash_str(pkt, 14, msg2);
@@ -4700,14 +4413,13 @@ int yahoo_send_im(PurpleConnection *gc, PurpleMessage *pmsg)
/* We may need to not send any packets over 2000 bytes, but I'm not sure yet. */
if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000) {
/* if p2p link exists, send through it. To-do: key 15, time value to be sent in case of p2p */
- if( (p2p_data = g_hash_table_lookup(yd->peers, rcpt)) && !fed) {
+ if( (p2p_data = g_hash_table_lookup(yd->peers, rcpt))) {
yahoo_packet_hash_int(pkt, 11, p2p_data->session_id);
yahoo_p2p_write_pkt(p2p_data->source, pkt);
}
else {
yahoo_packet_send(pkt, yd);
- if(!fed)
- yahoo_send_p2p_pkt(gc, rcpt, 0); /* send p2p packet, with val_13=0 */
+ yahoo_send_p2p_pkt(gc, rcpt, 0); /* send p2p packet, with val_13=0 */
}
}
else
@@ -4725,11 +4437,8 @@ unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleIMTy
{
YahooData *yd = purple_connection_get_protocol_data(gc);
struct yahoo_p2p_data *p2p_data;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
struct yahoo_packet *pkt = NULL;
- fed = yahoo_get_federation_from_name(who);
-
/* Don't do anything if sms is being typed */
if( strncmp(who, "+", 1) == 0 )
return 0;
@@ -4737,33 +4446,18 @@ unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleIMTy
pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, yd->session_id);
/* check to see if p2p link exists, send through it */
- if( (p2p_data = g_hash_table_lookup(yd->peers, who)) && !fed) {
+ if( (p2p_data = g_hash_table_lookup(yd->peers, who))) {
yahoo_packet_hash(pkt, "sssssis", 49, "TYPING", 1, purple_connection_get_display_name(gc),
14, " ", 13, state == PURPLE_IM_TYPING ? "1" : "0",
5, who, 11, p2p_data->session_id, 1002, "1"); /* To-do: key 15 to be sent in case of p2p */
yahoo_p2p_write_pkt(p2p_data->source, pkt);
yahoo_packet_free(pkt);
}
- else { /* send through yahoo server */
-
- const char *fed_who = who;
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- case YAHOO_FEDERATION_OCS:
- case YAHOO_FEDERATION_IBM:
- case YAHOO_FEDERATION_PBX:
- fed_who += 4;
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- break;
- }
+ else { /* send through yahoo server */
yahoo_packet_hash(pkt, "ssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
14, " ", 13, state == PURPLE_IM_TYPING ? "1" : "0",
- 5, fed_who, 1002, "1");
- if (fed)
- yahoo_packet_hash_int(pkt, 241, fed);
+ 5, who, 1002, "1");
yahoo_packet_send_and_free(pkt, yd);
}
@@ -5014,54 +4708,29 @@ void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g, c
struct yahoo_packet *pkt;
const char *group = NULL;
char *group2;
- const char *bname;
- const char *fed_bname;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
+ const char *bname = purple_buddy_get_name(buddy);
if (!yd->logged_in)
return;
- fed_bname = bname = purple_buddy_get_name(buddy);
if (!purple_account_privacy_check(purple_connection_get_account(gc), bname))
return;
- fed = yahoo_get_federation_from_name(bname);
- if (fed != YAHOO_FEDERATION_NONE)
- fed_bname += 4;
-
group = purple_group_get_name(purple_buddy_get_group(buddy));
group2 = yahoo_string_encode(gc, group, FALSE);
pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
- if (fed) {
- yahoo_packet_hash(pkt, "sssssssisss",
- 14, "",
- 65, group2,
- 97, "1", /* UTF-8 */
- 1, purple_connection_get_display_name(gc),
- 302, "319",
- 300, "319",
- 7, fed_bname,
- 241, fed,
- 334, "0",
- 301, "319",
- 303, "319"
- );
- }
- else {
- yahoo_packet_hash(pkt, "ssssssssss",
- 14, "",
- 65, group2,
- 97, "1", /* UTF-8 */
- 1, purple_connection_get_display_name(gc),
- 302, "319",
- 300, "319",
- 7, fed_bname,
- 334, "0",
- 301, "319",
- 303, "319"
- );
- }
+ yahoo_packet_hash(pkt, "ssssssssss",
+ 14, "",
+ 65, group2,
+ 97, "1", /* UTF-8 */
+ 1, purple_connection_get_display_name(gc),
+ 302, "319",
+ 300, "319",
+ 7, bname,
+ 334, "0",
+ 301, "319",
+ 303, "319");
yahoo_packet_send_and_free(pkt, yd);
g_free(group2);
@@ -5077,13 +4746,11 @@ void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g
char *cg;
const char *bname, *gname;
YahooFriend *f = NULL;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
bname = purple_buddy_get_name(buddy);
f = yahoo_friend_find(gc, bname);
if (!f)
return;
- fed = f->fed;
gname = purple_group_get_name(group);
buddies = purple_blist_find_buddies(purple_connection_get_account(gc), bname);
@@ -5105,21 +4772,8 @@ void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g
cg = yahoo_string_encode(gc, gname, FALSE);
pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, yd->session_id);
- switch (fed) {
- case YAHOO_FEDERATION_MSN:
- case YAHOO_FEDERATION_OCS:
- case YAHOO_FEDERATION_IBM:
- bname += 4;
- break;
- case YAHOO_FEDERATION_NONE:
- default:
- break;
- }
-
yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
7, bname, 65, cg);
- if (fed)
- yahoo_packet_hash_int(pkt, 241, fed);
yahoo_packet_send_and_free(pkt, yd);
g_free(cg);
}
@@ -5127,7 +4781,6 @@ void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g
void yahoo_add_deny(PurpleConnection *gc, const char *who) {
YahooData *yd = purple_connection_get_protocol_data(gc);
struct yahoo_packet *pkt;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
if (!yd->logged_in)
return;
@@ -5135,14 +4788,9 @@ void yahoo_add_deny(PurpleConnection *gc, const char *who) {
if (!who || who[0] == '\0')
return;
- fed = yahoo_get_federation_from_name(who);
-
pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id);
- if(fed)
- yahoo_packet_hash(pkt, "ssis", 1, purple_connection_get_display_name(gc), 7, who+4, 241, fed, 13, "1");
- else
- yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "1");
+ yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "1");
yahoo_packet_send_and_free(pkt, yd);
}
@@ -5150,21 +4798,16 @@ void yahoo_add_deny(PurpleConnection *gc, const char *who) {
void yahoo_rem_deny(PurpleConnection *gc, const char *who) {
YahooData *yd = purple_connection_get_protocol_data(gc);
struct yahoo_packet *pkt;
- YahooFederation fed = YAHOO_FEDERATION_NONE;
if (!yd->logged_in)
return;
if (!who || who[0] == '\0')
return;
- fed = yahoo_get_federation_from_name(who);
pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, yd->session_id);
- if(fed)
- yahoo_packet_hash(pkt, "ssis", 1, purple_connection_get_display_name(gc), 7, who+4, 241, fed, 13, "2");
- else
- yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "2");
+ yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "2");
yahoo_packet_send_and_free(pkt, yd);
}
@@ -5208,10 +4851,7 @@ void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
if (!f)
return;
- if(f->fed) {
- temp = who+4;
- } else
- temp = who;
+ temp = who;
/* If old and new are the same, we would probably
* end up deleting the buddy, which would be bad.
@@ -5226,14 +4866,9 @@ void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
}
pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, yd->session_id);
- if(f->fed)
- yahoo_packet_hash(pkt, "ssssissss", 1, purple_connection_get_display_name(gc),
- 302, "240", 300, "240", 7, temp, 241, f->fed, 224, gpo, 264, gpn, 301,
- "240", 303, "240");
- else
- yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
- 302, "240", 300, "240", 7, temp, 224, gpo, 264, gpn, 301,
- "240", 303, "240");
+ yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
+ 302, "240", 300, "240", 7, temp, 224, gpo, 264, gpn, 301,
+ "240", 303, "240");
yahoo_packet_send_and_free(pkt, yd);
g_free(gpn);
diff --git a/libpurple/protocols/yahoo/ymsg.h b/libpurple/protocols/yahoo/ymsg.h
index 8c35439ed2..a0e284cfbb 100644
--- a/libpurple/protocols/yahoo/ymsg.h
+++ b/libpurple/protocols/yahoo/ymsg.h
@@ -1,5 +1,5 @@
/**
- * @file ymsg.h The Yahoo! and Yahoo! JAPAN Protocols
+ * @file ymsg.h The Yahoo! Protocol
*
* purple
*
@@ -47,20 +47,6 @@
#define YAHOO_ROOMLIST_URL "http://insider.msg.yahoo.com/ycontent/"
#define YAHOO_ROOMLIST_LOCALE "us"
-/* Yahoo! JAPAN stuff */
-#define YAHOOJP_PAGER_HOST_REQ_URL "http://cs1.yahoo.co.jp/capacity"
-#define YAHOOJP_TOKEN_URL "https://login.yahoo.co.jp/config/pwtoken_get?src=ymsgr&ts=&login=%s&passwd=%s&chal=%s"
-#define YAHOOJP_LOGIN_URL "https://login.yahoo.co.jp/config/pwtoken_login?src=ymsgr&ts=&token=%s"
-#define YAHOOJP_PROFILE_URL "http://profiles.yahoo.co.jp/"
-#define YAHOOJP_MAIL_URL "http://mail.yahoo.co.jp/"
-#define YAHOOJP_XFER_HOST "filetransfer.msg.yahoo.co.jp"
-#define YAHOOJP_WEBCAM_HOST "wc.yahoo.co.jp"
-/* not sure, must test: */
-#define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.co.jp"
-#define YAHOOJP_XFER_RELAY_PORT 80
-#define YAHOOJP_ROOMLIST_URL "http://insider.msg.yahoo.co.jp/ycontent/"
-#define YAHOOJP_ROOMLIST_LOCALE "ja"
-
#define YAHOO_AUDIBLE_URL "http://l.yimg.com/pu/dl/aud"
#define WEBMESSENGER_URL "http://login.yahoo.com/config/login?.src=pg"
@@ -68,7 +54,6 @@
#define YAHOO_SMS_CARRIER_URL "http://validate.msg.yahoo.com"
#define YAHOO_USERINFO_URL "http://address.yahoo.com/yab/us?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252"
-#define YAHOOJP_USERINFO_URL "http://address.yahoo.co.jp/yab/jp?v=XM&sync=1&tags=short&useutf8=1&noclear=1&legenc=codepage-1252"
#define YAHOO_PICURL_SETTING "picture_url"
#define YAHOO_PICCKSUM_SETTING "picture_checksum"
@@ -92,9 +77,6 @@
#define YAHOO_CLIENT_VERSION_ID "4194239"
#define YAHOO_CLIENT_VERSION "9.0.0.2162"
-#define YAHOOJP_CLIENT_VERSION_ID "4186047"
-#define YAHOOJP_CLIENT_VERSION "9.0.0.1727"
-
#define YAHOO_CLIENT_USERAGENT "Mozilla/5.0"
#define YAHOO_CLIENT_USERAGENT_ALIAS "Mozilla/4.0 (compatible; MSIE 5.5)"
@@ -132,21 +114,6 @@ enum yahoo_status {
YAHOO_STATUS_DISCONNECTED = -1 /* 0xffffffff; in ymsg 15. doesnt mean the normal sense of 'disconnected' */
};
-/*
- * Yahoo federated networks. Key 241 in ymsg.
- * If it doesn't exist, it is on Yahoo's netowrk.
- * It if does exist, send to another IM network.
- */
-
-typedef enum {
- YAHOO_FEDERATION_NONE = 0, /* No federation - Yahoo! network */
- YAHOO_FEDERATION_OCS = 1, /* LCS or OCS private networks */
- YAHOO_FEDERATION_MSN = 2, /* MSN or Windows Live network */
- YAHOO_FEDERATION_IBM = 9, /* IBM/Sametime network */
- YAHOO_FEDERATION_PBX = 100 /* Yahoo! Pingbox service */
-} YahooFederation;
-
-
struct yahoo_buddy_icon_upload_data {
PurpleConnection *gc;
char *filename;
@@ -222,7 +189,6 @@ typedef struct {
char *cookie_t;
char *cookie_b;
int session_id;
- gboolean jp;
gboolean wm; /* connected w/ web messenger method */
/* picture aka buddy icon stuff */
char *picture_url;
@@ -331,8 +297,8 @@ yahoo_account_use_http_proxy(PurpleConnection *conn);
* @param gc The connection handle.
* @param str The null terminated utf8 string to encode.
* @param utf8 Whether to return a UTF-8 string.
- * @return A g_malloc'ed string in the appropriate encoding. If jd->jp or
- * utf8 is true then the string is copied verbatim. Otherwise the
+ * @return A g_malloc'ed string in the appropriate encoding. If utf8
+ * is true then the string is copied verbatim. Otherwise the
* encoding from account settings is used.
*/
gchar *yahoo_string_encode(PurpleConnection *gc, const char *str, gboolean utf8);
@@ -349,8 +315,6 @@ char *yahoo_string_decode(PurpleConnection *gc, const char *str, gboolean utf8);
char *yahoo_convert_to_numeric(const char *str);
-YahooFederation yahoo_get_federation_from_name(const char *who);
-
/* yahoo_profile.c */
void yahoo_get_info(PurpleConnection *gc, const char *name);
diff --git a/libpurple/protocols/zephyr/sysdep.h b/libpurple/protocols/zephyr/sysdep.h
index f5e17a1663..41412954df 100644
--- a/libpurple/protocols/zephyr/sysdep.h
+++ b/libpurple/protocols/zephyr/sysdep.h
@@ -36,17 +36,6 @@ char *malloc(), *realloc(void);
# endif
char *getenv(), *strerror(), *ctime(), *strcpy(void);
time_t time(void);
-ZEPHYR_INT32 random(void);
-#endif
-
-#ifndef HAVE_RANDOM
-#ifdef HAVE_LRAND48
-#define random lrand48
-#define srandom srand48
-#else
-#define random rand
-#define srandom srand
-#endif
#endif
#ifndef HAVE_STRERROR
diff --git a/libpurple/proxy.c b/libpurple/proxy.c
index 5650b9b394..2de6bff5c5 100644
--- a/libpurple/proxy.c
+++ b/libpurple/proxy.c
@@ -575,6 +575,9 @@ purple_win32_proxy_get_info(void)
static void
purple_proxy_connect_data_destroy(PurpleProxyConnectData *connect_data)
{
+ if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data))
+ return;
+
handles = g_slist_remove(handles, connect_data);
if (connect_data->query_data != NULL)
diff --git a/libpurple/smiley-custom.c b/libpurple/smiley-custom.c
index 7bcb571781..4504dce82e 100644
--- a/libpurple/smiley-custom.c
+++ b/libpurple/smiley-custom.c
@@ -44,14 +44,20 @@ static void
purple_smiley_custom_load(void)
{
PurpleXmlNode *root_node, *profile_node, *smileyset_node, *smiley_node;
+ gchar *basename;
+ gchar *dirname;
int got_smileys = 0;
if (!g_file_test(smileys_index, G_FILE_TEST_EXISTS))
return;
- root_node = purple_xmlnode_from_file(g_path_get_dirname(smileys_index),
- g_path_get_basename(smileys_index),
- "custom smileys index", "smiley-custom");
+ basename = g_path_get_basename(smileys_index);
+ dirname = g_path_get_dirname(smileys_index);
+ root_node = purple_xmlnode_from_file(dirname, basename,
+ "custom smileys index", "smiley-custom");
+ g_free(dirname);
+ g_free(basename);
+
g_return_if_fail(root_node);
profile_node = purple_xmlnode_get_child(root_node, "profile");
@@ -104,6 +110,7 @@ smileys_to_xmlnode(void)
{
PurpleXmlNode *root_node, *profile_node, *smileyset_node;
GList *smileys, *it;
+ gchar *basename;
root_node = purple_xmlnode_new("smileys");
purple_xmlnode_set_attrib(root_node, "version", "1.0");
@@ -125,9 +132,10 @@ smileys_to_xmlnode(void)
purple_xmlnode_insert_child(smileyset_node, smiley_node);
purple_xmlnode_set_attrib(smiley_node, "shortcut",
purple_smiley_get_shortcut(smiley));
- purple_xmlnode_set_attrib(smiley_node, "filename",
- g_path_get_basename(purple_image_get_path(
- purple_smiley_get_image(smiley))));
+ basename = g_path_get_basename(purple_image_get_path(
+ purple_smiley_get_image(smiley)));
+ purple_xmlnode_set_attrib(smiley_node, "filename", basename);
+ g_free(basename);
}
return root_node;
diff --git a/libpurple/stun.c b/libpurple/stun.c
index e6d2d5b317..e912fb4525 100644
--- a/libpurple/stun.c
+++ b/libpurple/stun.c
@@ -63,13 +63,13 @@ struct stun_attrib {
guint16 len;
};
-#ifdef NOTYET
+#if 0
struct stun_change {
struct stun_header hdr;
struct stun_attrib attrib;
char value[4];
};
-#endif
+#endif /* 0 */
struct stun_conn {
int fd;
@@ -145,7 +145,7 @@ static gboolean timeoutfunc(gpointer data) {
return TRUE;
}
-#ifdef NOTYET
+#if 0
static void do_test2(struct stun_conn *sc) {
struct stun_change data;
data.hdr.type = htons(0x0001);
@@ -164,7 +164,7 @@ static void do_test2(struct stun_conn *sc) {
sendto(sc->fd, sc->packet, sc->packetsize, 0, (struct sockaddr *)&(sc->addr), sizeof(struct sockaddr_in));
sc->timeout = purple_timeout_add(500, (GSourceFunc) timeoutfunc, sc);
}
-#endif
+#endif /* 0 */
static void reply_cb(gpointer data, gint source, PurpleInputCondition cond) {
struct stun_conn *sc = data;
@@ -266,7 +266,7 @@ static void reply_cb(gpointer data, gint source, PurpleInputCondition cond) {
}
}
-#ifndef NOTYET
+#if 1
close_stun_conn(sc);
do_callbacks();
#else
@@ -278,7 +278,7 @@ static void reply_cb(gpointer data, gint source, PurpleInputCondition cond) {
close_stun_conn(sc);
nattype.type = PURPLE_STUN_NAT_TYPE_FULL_CONE;
do_callbacks();
-#endif
+#endif /* 1 */
}
}
diff --git a/libpurple/xfer.c b/libpurple/xfer.c
index 00f1329f25..f21ee4d34c 100644
--- a/libpurple/xfer.c
+++ b/libpurple/xfer.c
@@ -69,7 +69,6 @@ struct _PurpleXferPrivate {
int watcher; /* Watcher. */
goffset bytes_sent; /* The number of bytes sent. */
- goffset bytes_remaining; /* The number of bytes remaining. */
time_t start_time; /* When the transfer of data began. */
time_t end_time; /* When the transfer of data ended. */
@@ -825,7 +824,7 @@ purple_xfer_get_bytes_remaining(const PurpleXfer *xfer)
g_return_val_if_fail(priv != NULL, 0);
- return priv->bytes_remaining;
+ return priv->size - priv->bytes_sent;
}
goffset
@@ -1028,7 +1027,6 @@ purple_xfer_set_size(PurpleXfer *xfer, goffset size)
g_return_if_fail(priv != NULL);
priv->size = size;
- priv->bytes_remaining = priv->size - purple_xfer_get_bytes_sent(xfer);
g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_FILE_SIZE]);
}
@@ -1054,9 +1052,6 @@ purple_xfer_set_bytes_sent(PurpleXfer *xfer, goffset bytes_sent)
priv->bytes_sent = bytes_sent;
- if (purple_xfer_get_size(xfer) > 0)
- priv->bytes_remaining = purple_xfer_get_size(xfer) - bytes_sent;
-
g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_BYTES_SENT]);
}
@@ -1229,10 +1224,6 @@ purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size)
if (r < 0 && errno == EAGAIN)
r = 0;
}
- if (r >= 0 && (purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer) &&
- !purple_xfer_is_completed(xfer))
- purple_xfer_set_completed(xfer, TRUE);
-
return r;
}
@@ -1355,9 +1346,6 @@ do_transfer(PurpleXfer *xfer)
return;
}
- if ((purple_xfer_get_size(xfer) > 0) &&
- ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer)))
- purple_xfer_set_completed(xfer, TRUE);
} else if(r < 0) {
purple_xfer_cancel_remote(xfer);
g_free(buffer);
@@ -1450,8 +1438,6 @@ do_transfer(PurpleXfer *xfer)
}
if (r > 0) {
- purple_xfer_set_bytes_sent(xfer, priv->bytes_sent + r);
-
if (priv->ops.ack != NULL)
priv->ops.ack(xfer, buffer, r);
@@ -1462,8 +1448,17 @@ do_transfer(PurpleXfer *xfer)
purple_xfer_get_progress(xfer));
}
- if (purple_xfer_is_completed(xfer))
+ if (purple_xfer_get_bytes_sent(xfer) >= purple_xfer_get_size(xfer) &&
+ !purple_xfer_is_completed(xfer)) {
+ purple_xfer_set_completed(xfer, TRUE);
+ }
+
+ /* TODO: Check if above is the only place xfers are marked completed.
+ * If so, merge these conditions.
+ */
+ if (purple_xfer_is_completed(xfer)) {
purple_xfer_end(xfer);
+ }
}
static void
@@ -1673,11 +1668,18 @@ purple_xfer_end(PurpleXfer *xfer)
purple_xfer_set_watcher(xfer, 0);
}
- if (priv->fd != -1)
- close(priv->fd);
+ if (priv->fd != -1) {
+ if (close(priv->fd)) {
+ purple_debug_error("xfer", "closing file descr in purple_xfer_end() failed: %s",
+ g_strerror(errno));
+ }
+ }
if (priv->dest_fp != NULL) {
- fclose(priv->dest_fp);
+ if (fclose(priv->dest_fp)) {
+ purple_debug_error("xfer", "closing dest file in purple_xfer_end() failed: %s",
+ g_strerror(errno));
+ }
priv->dest_fp = NULL;
}
@@ -1766,8 +1768,6 @@ purple_xfer_cancel_local(PurpleXfer *xfer)
if (ui_ops != NULL && ui_ops->cancel_local != NULL)
ui_ops->cancel_local(xfer);
- priv->bytes_remaining = 0;
-
g_object_unref(xfer);
}
@@ -1834,8 +1834,6 @@ purple_xfer_cancel_remote(PurpleXfer *xfer)
if (ui_ops != NULL && ui_ops->cancel_remote != NULL)
ui_ops->cancel_remote(xfer);
- priv->bytes_remaining = 0;
-
g_object_unref(xfer);
}
diff --git a/pidgin/gtkconv.c b/pidgin/gtkconv.c
index 40a6396f4d..cd7e32ff64 100644
--- a/pidgin/gtkconv.c
+++ b/pidgin/gtkconv.c
@@ -422,7 +422,7 @@ debug_command_cb(PurpleConversation *conv,
return PURPLE_CMD_RET_OK;
} else {
purple_conversation_write_system_message(conv,
- _("Supported debug options are: plugins version unsafe verbose"),
+ _("Supported debug options are: plugins, version, unsafe, verbose"),
PURPLE_MESSAGE_NO_LOG);
return PURPLE_CMD_RET_OK;
}
@@ -4932,73 +4932,58 @@ entry_popup_menu_cb(PidginWebView *webview, GtkMenu *menu, gpointer data)
static gboolean
resize_webview_cb(PidginConversation *gtkconv)
{
-#if 0
- /* TODO WebKit: entry sizing */
- GtkTextBuffer *buffer;
- GtkTextIter iter;
- int lines;
- GdkRectangle oneline;
- int height, diff;
- int pad_top, pad_inside, pad_bottom;
- int total_height;
- int max_height;
- int min_lines = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines");
- int min_height;
- gboolean interior_focus;
- int focus_width;
+ WebKitWebView *webview;
+ gint min_lines;
+ gint max_height;
+ gint min_height;
+ gint font_size;
+ gint total_height;
+ gint height;
+ gint toolbar_size;
+ gint old_w;
+ gint old_h;
GtkAllocation webview_allocation;
GtkAllocation entry_allocation;
- GtkAllocation lower_hbox_allocation;
+ webview = PIDGIN_WEBVIEW(gtkconv->entry);
+
+ /* Get text height from the DOM */
+ height = pidgin_webview_get_DOM_height(webview);
+
+ /* Find the height of the conversation window to calculate the maximum possible entry
+ * size (1/2 of the window)
+ */
gtk_widget_get_allocation(gtkconv->webview, &webview_allocation);
gtk_widget_get_allocation(gtkconv->entry, &entry_allocation);
- gtk_widget_get_allocation(gtkconv->lower_hbox, &lower_hbox_allocation);
total_height = webview_allocation.height + entry_allocation.height;
max_height = total_height / 2;
- pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(gtkconv->entry));
- pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(gtkconv->entry));
- pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(gtkconv->entry));
+ /* Get size of the characters to calculate initial minimum space for the entry */
+ font_size = pidgin_webview_get_font_size(webview);
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
- gtk_text_buffer_get_start_iter(buffer, &iter);
- gtk_text_view_get_iter_location(GTK_TEXT_VIEW(gtkconv->entry), &iter, &oneline);
-
- lines = gtk_text_buffer_get_line_count(buffer);
-
- height = 0;
- do {
- int lineheight = 0;
- gtk_text_view_get_line_yrange(GTK_TEXT_VIEW(gtkconv->entry), &iter, NULL, &lineheight);
- height += lineheight;
- lines--;
- } while (gtk_text_iter_forward_line(&iter));
- height += lines * (oneline.height + pad_top + pad_bottom);
-
- /* Make sure there's enough room for at least min_lines. Allocate enough space to
- * prevent scrolling when the second line is a continuation of the first line, or
- * is the beginning of a new paragraph. */
- min_height = min_lines * (oneline.height + MAX(pad_inside, pad_top + pad_bottom));
- height = CLAMP(height, MIN(min_height, max_height), max_height);
+ /* Allow to have a minimum of "min_lines" height as defined in the preference */
+ min_lines = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines");
+ min_height = (font_size + WEBVIEW_DOM_FONT_PADDING) * min_lines + WEBVIEW_DOM_TEXT_PADDING;
- gtk_widget_style_get(gtkconv->entry,
- "interior-focus", &interior_focus,
- "focus-line-width", &focus_width,
- NULL);
- if (!interior_focus)
- height += 2 * focus_width;
- diff = height - entry_allocation.height;
- if (ABS(diff) < oneline.height / 2)
- return FALSE;
+ /* Take into account the size of the formatting toolbar */
+ if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar")) {
+ toolbar_size = gtk_widget_get_allocated_height(pidgin_webview_get_toolbar(webview));
+ } else {
+ toolbar_size = 0;
+ }
- purple_debug_info("pidgin", "resizing to %d, %d lines, diff %d\n",
- diff + lower_hbox_allocation.height, min_lines, diff);
+ /* Calculate conv entry height */
+ height = CLAMP(height, MIN(min_height, max_height), max_height);
+ /* Add the size used by the toolbar so we always take it into consideration. */
+ height += toolbar_size;
- gtk_widget_set_size_request(gtkconv->lower_hbox, -1,
- diff + lower_hbox_allocation.height);
-#endif
- gtk_widget_set_size_request(gtkconv->lower_hbox, -1, -1);
+ /* Actually set the size of the gtkconv entry widget. */
+ gtk_widget_get_size_request(gtkconv->lower_hbox, &old_w, &old_h);
+ if (old_w != -1 || old_h != height) {
+ gtk_widget_set_size_request(gtkconv->lower_hbox, -1, height);
+ purple_debug_info("pidgin", "resizing to %d, %d lines\n", height, min_lines);
+ }
return FALSE;
}
@@ -5718,6 +5703,10 @@ setup_common_pane(PidginConversation *gtkconv)
g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "size-allocate",
G_CALLBACK(resize_webview_cb), gtkconv);
#endif
+ g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "changed",
+ G_CALLBACK(resize_webview_cb), gtkconv);
+ g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "size-allocate",
+ G_CALLBACK(resize_webview_cb), gtkconv);
default_formatize(gtkconv);
g_signal_connect_after(G_OBJECT(gtkconv->entry), "format-cleared",
@@ -8135,7 +8124,7 @@ show_formatting_toolbar_pref_cb(const char *name, PurplePrefType type,
else
pidgin_webview_hide_toolbar(PIDGIN_WEBVIEW(gtkconv->entry));
- g_idle_add((GSourceFunc)resize_webview_cb, gtkconv);
+ resize_webview_cb(gtkconv);
}
}
diff --git a/pidgin/gtkplugin.c b/pidgin/gtkplugin.c
index 3ee2d66e3c..10ff00cafe 100644
--- a/pidgin/gtkplugin.c
+++ b/pidgin/gtkplugin.c
@@ -752,6 +752,8 @@ static void plugin_dialog_response_cb(GtkWidget *d, int response, GtkTreeSelecti
GtkTreeIter iter;
GList *list, *it;
+ g_return_if_fail(d != NULL);
+
switch (response) {
case GTK_RESPONSE_CLOSE:
case GTK_RESPONSE_DELETE_EVENT:
diff --git a/pidgin/gtksound.c b/pidgin/gtksound.c
index 43c0897e3e..414483fed9 100644
--- a/pidgin/gtksound.c
+++ b/pidgin/gtksound.c
@@ -388,6 +388,7 @@ bus_call (GstBus *bus,
case GST_MESSAGE_EOS:
gst_element_set_state(play, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(play));
+ return FALSE;
break;
case GST_MESSAGE_WARNING:
gst_message_parse_warning(msg, &err, NULL);
diff --git a/pidgin/gtkutils.c b/pidgin/gtkutils.c
index a0c694edc0..fce27d92f4 100644
--- a/pidgin/gtkutils.c
+++ b/pidgin/gtkutils.c
@@ -3502,76 +3502,6 @@ dummy(PidginWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
return TRUE;
}
-static gboolean
-register_gnome_url_handlers(void)
-{
- char *tmp;
- char *err;
- char *c;
- char *start;
-
- tmp = g_find_program_in_path("gconftool-2");
- if (tmp == NULL)
- return FALSE;
-
- g_free(tmp);
- tmp = NULL;
-
- if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers",
- &tmp, &err, NULL, NULL))
- {
- g_free(tmp);
- g_free(err);
- g_return_val_if_reached(FALSE);
- }
- g_free(err);
- err = NULL;
-
- for (c = start = tmp ; *c ; c++)
- {
- /* Skip leading spaces. */
- if (c == start && *c == ' ')
- start = c + 1;
- else if (*c == '\n')
- {
- *c = '\0';
- if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/"))
- {
- char *cmd;
- char *tmp2 = NULL;
- char *protocol;
-
- /* If there is an enabled boolean, honor it. */
- cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start);
- if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL))
- {
- g_free(err);
- err = NULL;
- if (!strcmp(tmp2, "false\n"))
- {
- g_free(tmp2);
- g_free(cmd);
- start = c + 1;
- continue;
- }
- }
- g_free(cmd);
- g_free(tmp2);
-
- start += sizeof("/desktop/gnome/url-handlers/") - 1;
-
- protocol = g_strdup_printf("%s:", start);
- registered_url_handlers = g_slist_prepend(registered_url_handlers, protocol);
- pidgin_webview_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
- }
- start = c + 1;
- }
- }
- g_free(tmp);
-
- return (registered_url_handlers != NULL);
-}
-
#ifdef _WIN32
static void
winpidgin_register_win32_url_handlers(void)
@@ -3654,10 +3584,6 @@ void pidgin_utils_init(void)
/* Example custom URL handler. */
pidgin_webview_class_register_protocol("open://", open_dialog, dummy);
- /* If we're under GNOME, try registering the system URL handlers. */
- if (purple_running_gnome())
- register_gnome_url_handlers();
-
/* Used to make small buttons */
#if !GTK_CHECK_VERSION(3,0,0)
gtk_rc_parse_string("style \"pidgin-small-close-button\"\n"
diff --git a/pidgin/gtkwebview.c b/pidgin/gtkwebview.c
index be9ab9302c..15ba36ac41 100644
--- a/pidgin/gtkwebview.c
+++ b/pidgin/gtkwebview.c
@@ -170,6 +170,7 @@ webview_resource_loading(WebKitWebView *webview,
if (!found) {
purple_debug_warning("webview", "Invalid purple stock "
"image uri: %s", uri);
+ g_free(p_uri);
return;
}
@@ -179,11 +180,15 @@ webview_resource_loading(WebKitWebView *webview,
if (g_strcmp0(domain, "e2ee") == 0) {
img = _pidgin_e2ee_stock_icon_get(stock_name);
- if (!img)
+ if (!img) {
+ g_free(p_uri);
return;
+ }
} else {
purple_debug_warning("webview", "Invalid purple stock "
"image domain: %s", domain);
+
+ g_free(p_uri);
return;
}
} else
@@ -2259,6 +2264,44 @@ pidgin_webview_insert_image(PidginWebView *webview, PurpleImage *image)
g_free(img);
}
+static WebKitDOMCSSStyleDeclaration*
+pidgin_webview_get_DOM_CSS_style(PidginWebView *webview)
+{
+ WebKitDOMDocument *document;
+ WebKitDOMElement *dom_element;
+ WebKitDOMDOMWindow *dom_window;
+
+ document = webkit_web_view_get_dom_document(webview);
+ dom_window = webkit_dom_document_get_default_view(document);
+
+ dom_element = webkit_dom_document_get_document_element(document);
+ return webkit_dom_dom_window_get_computed_style(dom_window, dom_element, 0);
+}
+
+gint
+pidgin_webview_get_DOM_height(PidginWebView *webview)
+{
+ gchar *value;
+ WebKitDOMCSSStyleDeclaration *style;
+
+ style = pidgin_webview_get_DOM_CSS_style(webview);
+ value = webkit_dom_css_style_declaration_get_property_value(style, "height");
+
+ return g_ascii_strtoll(value, NULL, 0);
+}
+
+gint
+pidgin_webview_get_font_size(PidginWebView *webview)
+{
+ gchar *value;
+ WebKitDOMCSSStyleDeclaration *style;
+
+ style = pidgin_webview_get_DOM_CSS_style(webview);
+ value = webkit_dom_css_style_declaration_get_property_value(style, "font-size");
+
+ return g_ascii_strtoll(value, NULL, 0);
+}
+
void
pidgin_webview_set_toolbar(PidginWebView *webview, GtkWidget *toolbar)
{
diff --git a/pidgin/gtkwebview.h b/pidgin/gtkwebview.h
index 4f8b0fbff0..436daecc23 100644
--- a/pidgin/gtkwebview.h
+++ b/pidgin/gtkwebview.h
@@ -42,6 +42,11 @@
#define PIDGIN_IS_WEBVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_WEBVIEW))
#define PIDGIN_WEBVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PIDGIN_TYPE_WEBVIEW, PidginWebViewClass))
+
+/*salinasv: this are partially magic numbers, we need to find how to get them from the DOM */
+#define WEBVIEW_DOM_FONT_PADDING 3
+#define WEBVIEW_DOM_TEXT_PADDING 16
+
typedef enum {
PIDGIN_WEBVIEW_BOLD = 1 << 0,
PIDGIN_WEBVIEW_ITALIC = 1 << 1,
@@ -586,6 +591,28 @@ void
pidgin_webview_insert_image(PidginWebView *webview, PurpleImage *image);
/**
+ * pidgin_webview_get_DOM_height:
+ * @webview: the PidginWebView.
+ *
+ * Look for the calculated height for the DOM on the webview.
+ *
+ * Returns the total height of the DOM in the webview.
+ */
+gint
+pidgin_webview_get_DOM_height(PidginWebView *webview);
+
+/**
+ * pidgin_webview_get_DOM_height:
+ * @webview: the PidginWebView.
+ *
+ * Look for the font size used on the current webview
+ *
+ * Returns the font size for the webview.
+ */
+gint
+pidgin_webview_get_font_size(PidginWebView *webview);
+
+/**
* pidgin_webview_get_protocol_name:
* @webview: The PidginWebView
*
diff --git a/pidgin/pixmaps/emotes/default/24/default.theme.in b/pidgin/pixmaps/emotes/default/24/default.theme.in
index a5a03fde71..19709a8af4 100644
--- a/pidgin/pixmaps/emotes/default/24/default.theme.in
+++ b/pidgin/pixmaps/emotes/default/24/default.theme.in
@@ -319,98 +319,6 @@ male-fighter2.png o=> O=>
female-fighter.png o-+ O-+
yin-yang.png (%)
-# Following Yahoo! Messenger 8.1
-[Yahoo JAPAN]
-happy.png :) :-)
-question.png :-/ :-\\
-shocked.png :-O :O :-o :o
-devil.png >:)
-angel.png O:-) o:-) 0:-)
-sick.png :-&
-sleepy.png (:|
-hypnotized.png @-)
-on-the-phone.png :)]
-sad.png :( :-(
-amorous.png :x :-x :X :-X
-angry.png X-( x-( X( x(
-crying.png :((
-glasses-nerdy.png :-B :-b
-quiet.png :-$
-drool.png =P~ =p~
-lying.png :^O :^o
-call-me.png :-c
-wink.png ;) ;-)
-embarrassed.png :">
-mean.png :-> :>
-laugh.png :)) :-))
-bye.png =;
-arrogant.png [-(
-thinking.png :-?
-waiting.png :-w :-W
-at-wits-end.png ~x( ~X(
-excited.png :D :-D :d :-d
-tongue.png :-P :P :-p :p
-glasses-cool.png B-) b-)
-neutral.png :| :-|
-sleeping.png I-) i-) |-)
-clown.png :o) :O)
-doh.png #-o #-O
-weep.png :-<
-go-away.png :-h
-lashes.png ;;)
-kiss.png :-* :*
-confused.png :-S :-s
-sarcastic.png /:)
-eyeroll.png 8-|
-silly.png 8-}
-clap.png =D> =d>
-mad-tongue.png >:P >:p
-time-out.png :-t :-T
-hug-left.png >:D< >:d<
-love-over.png =((
-hot.png #:-S #:-s
-rotfl.png =)) :-j :-J
-loser.png L-) l-)
-party.png <:-P <:-p
-nervous.png :-SS :-Ss :-sS :-ss
-cowboy.png <):)
-desire.png 8->
-! skywalker.png C:-) c:-) C:) c:)
-! monkey.png :-(|) :(|)
-
-# Hidden Yahoo emotes
-alien.png =:) >-)
-beat-up.png b-( B-(
-chicken.png ~:>
-coffee.png ~o) ~O)
-cow.png 3:-O 3:-o
-dance.png \\:D/ \\:d/
-rose.png @};-
-dont-know.png :-L :-l
-skeleton.png 8-X 8-x
-lamp.png *-:)
-monkey.png :(|)
-coins.png $-)
-peace.png :)>-
-pig.png :@)
-pray.png [-o< [-O<
-pumpkin.png (~~)
-shame.png [-X [-x
-flag.png **==
-clover.png %%-
-musical-note.png :-"
-giggle.png ;))
-worship.png ^:)^
-star.png (*)
-waving.png >:/
-talktohand.png :-@
-
-# Only available after activating the Yahoo! Fighter IMVironment
-male-fighter1.png o-> O->
-male-fighter2.png o=> O=>
-female-fighter.png o-+ O-+
-yin-yang.png (%)
-
# MXit standard emoticons
[MXit]
diff --git a/pidgin/pixmaps/emotes/small/16/small.theme.in b/pidgin/pixmaps/emotes/small/16/small.theme.in
index 998b1c1b4f..db406da064 100644
--- a/pidgin/pixmaps/emotes/small/16/small.theme.in
+++ b/pidgin/pixmaps/emotes/small/16/small.theme.in
@@ -185,42 +185,6 @@ shame.png [-X [-x
musical-note.png :-"
star.png (*)
-# Following Yahoo! Messenger 8.1
-[Yahoo JAPAN]
-happy.png :) :-)
-question.png :-/ :-\\
-shocked.png :-O :O :-o :o
-devil.png >:)
-angel.png O:-) o:-) 0:-)
-sick.png :-&
-sleepy.png (:|
-sad.png :( :-(
-amorous.png :x :-x :X :-X
-angry.png X-( x-( X( x(
-crying.png :((
-wink.png ;) ;-)
-thinking.png :-?
-excited.png :D :-D :d :-d
-tongue.png :-P :P :-p :p
-glasses-cool.png B-) b-)
-neutral.png :| :-|
-sleeping.png I-) i-) |-)
-kiss.png :-* :*
-confused.png :-S :-s
-sarcastic.png /:)
-eyeroll.png 8-|
-hug-left.png >:D< >:d<
-party.png <:-P <:-p
-
-# Hidden Yahoo emotes
-coffee.png ~o) ~O)
-rose.png @};-
-dont-know.png :-L :-l
-lamp.png *-:)
-shame.png [-X [-x
-musical-note.png :-"
-star.png (*)
-
# MXit standard emoticons
[MXit]
diff --git a/pidgin/plugins/Makefile.am b/pidgin/plugins/Makefile.am
index 20697df60f..722505d2c4 100644
--- a/pidgin/plugins/Makefile.am
+++ b/pidgin/plugins/Makefile.am
@@ -45,7 +45,6 @@ relnot_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
screencap_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
sendbutton_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
spellchk_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
-themeedit_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
unity_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
webkit_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
xmppconsole_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
@@ -64,7 +63,6 @@ plugin_LTLIBRARIES = \
screencap.la \
sendbutton.la \
spellchk.la \
- themeedit.la \
webkit.la \
xmppconsole.la
@@ -89,7 +87,6 @@ relnot_la_SOURCES = relnot.c
screencap_la_SOURCES = screencap.c
sendbutton_la_SOURCES = sendbutton.c
spellchk_la_SOURCES = spellchk.c
-themeedit_la_SOURCES = themeedit.c themeedit-icon.c themeedit-icon.h
unity_la_SOURCES = unity.c
webkit_la_SOURCES = webkit.c
xmppconsole_la_SOURCES = xmppconsole.c
@@ -107,7 +104,6 @@ relnot_la_LIBADD = @PIDGIN_LIBS@
screencap_la_LIBADD = @PIDGIN_LIBS@
sendbutton_la_LIBADD = @PIDGIN_LIBS@
spellchk_la_LIBADD = @PIDGIN_LIBS@
-themeedit_la_LIBADD = @PIDGIN_LIBS@
unity_la_LIBADD = @PIDGIN_LIBS@ $(UNITY_LIBS)
webkit_la_LIBADD = @PIDGIN_LIBS@ $(WEBKIT_LIBS)
xmppconsole_la_LIBADD = @PIDGIN_LIBS@
diff --git a/pidgin/plugins/Makefile.mingw b/pidgin/plugins/Makefile.mingw
index 22da6e3327..209dc68e0b 100644
--- a/pidgin/plugins/Makefile.mingw
+++ b/pidgin/plugins/Makefile.mingw
@@ -79,12 +79,6 @@ install: all $(PIDGIN_INSTALL_PLUGINS_DIR)
$(MAKE_at) $(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) install
cp *.dll $(PIDGIN_INSTALL_PLUGINS_DIR)
-THEMEEDIT_SRC = themeedit.c themeedit-icon.c
-THEMEEDIT_OBJECTS = $(THEMEEDIT_SRC:%.c=%.o)
-
-themeedit.dll: $(THEMEEDIT_OBJECTS)
- $(CC) -shared $(THEMEEDIT_OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
-
%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
$(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
$(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
@@ -103,7 +97,6 @@ plugins: \
relnot.dll \
sendbutton.dll \
spellchk.dll \
- themeedit.dll \
webkit.dll \
xmppconsole.dll
diff --git a/pidgin/plugins/crazychat/Makefile.am b/pidgin/plugins/crazychat/Makefile.am
deleted file mode 100644
index 9f21c3d9a5..0000000000
--- a/pidgin/plugins/crazychat/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-plugindir = @PIDGIN_PLUGINDIR@
-
-if ENABLE_DEBUG
-DEBUG_CPPFLAGS = -g -pg
-# DEBUG_CPPFLAGS = -D_DEBUG_ -g -pg
-DEBUG_LFLAGS = -pg
-else
-DEBUG_CPPFLAGS = -O2
-DEBUG_LFLAGS =
-endif
-
-plugin_LTLIBRARIES = crazychat.la
-
-if DISABLE_MODELS
-MD_CPPFLAGS = -DDISABLE_MODELS
-else
-MD_CPPFLAGS =
-endif
-
-crazychat_la_LDFLAGS = -module @PLUGIN_LDFLAGS@
-crazychat_la_LIBADD = @PIDGIN_LIBS@ $(GTKGLEXT_LIBS)
-crazychat_la_SOURCES = cc_pidgin_plugin.c cc_gtk_gl.c cc_gtk_gl.h \
- cc_interface.h crazychat.c crazychat.h util.h\
- cc_network.c cc_network.h filter.c filter.h\
- cc_output.c face.c face.h doggy.c doggy.h glm.h glm.c sharky.h sharky.c models.h models.c
-
-QT_CPPFLAGS = -D_DISABLE_QT_
-
-#AM_CFLAGS = $(GTK_CFLAGS) \
-#$(GTKGLEXT_CFLAGS) \
-#-I$(top_srcdir)/include
-
-AM_CPPFLAGS = -DPURPLE_PLUGINS \
- -I$(top_srcdir)/libpurple \
- -I$(top_builddir)/libpurple \
- -I$(top_srcdir)/pidgin \
- $(GTK_CFLAGS) \
- $(GPLUGIN_CFLAGS) \
- $(GTKGLEXT_CFLAGS) \
- $(DEBUG_CPPFLAGS) \
- $(DEBUG_CFLAGS) \
- $(QT_CPPFLAGS) \
- $(MD_CPPFLAGS)
diff --git a/pidgin/plugins/crazychat/QTUtilities.c b/pidgin/plugins/crazychat/QTUtilities.c
deleted file mode 100644
index 5833961443..0000000000
--- a/pidgin/plugins/crazychat/QTUtilities.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- File: QTUtilities.c
-
- Description: Miscellaneous QuickTime utility routines.
-
- Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved.
-
- Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc.
- ("Apple") in consideration of your agreement to the following terms, and your
- use, installation, modification or redistribution of this Apple software
- constitutes acceptance of these terms. If you do not agree with these terms,
- please do not use, install, modify or redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject
- to these terms, Apple grants you a personal, non-exclusive license, under Apple’s
- copyrights in this original Apple software (the "Apple Software"), to use,
- reproduce, modify and redistribute the Apple Software, with or without
- modifications, in source and/or binary forms; provided that if you redistribute
- the Apple Software in its entirety and without modifications, you must retain
- this notice and the following text and disclaimers in all such redistributions of
- the Apple Software. Neither the name, trademarks, service marks or logos of
- Apple Computer, Inc. may be used to endorse or promote products derived from the
- Apple Software without specific prior written permission from Apple. Except as
- expressly stated in this notice, no other rights or licenses, express or implied,
- are granted by Apple herein, including but not limited to any patent rights that
- may be infringed by your derivative works or by other works in which the Apple
- Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
- WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
- WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
- COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
- OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
- (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- Change History (most recent first):
-
-*/
-
-#include "QTUtilities.h"
-#include "Utilities.h"
-
-#define BailErr(x) {if (x != noErr) goto bail;}
-
-//////////
-//
-// GetMovieFromFile
-// Opens a movie file, then creates a new movie for the file
-//
-//////////
-
-OSErr GetMovieFromFile(FSSpec *fsspecPtr, Movie *theMovie)
-{
- short resRefNum = -1;
- OSErr result;
-
- *theMovie = NULL;
-
- result = OpenMovieFile(fsspecPtr, &resRefNum, 0);
- if (result == noErr)
- {
- short actualResId = DoTheRightThing;
-
- result = NewMovieFromFile(theMovie,
- resRefNum,
- &actualResId,
- (unsigned char *) 0,
- 0,
- (Boolean *) 0);
- CloseMovieFile(resRefNum);
- }
-
- return result;
-}
-
-//////////
-//
-// GetAMovieFile
-// Prompt the user for a movie file, then open
-// the file and create a movie for it.
-//
-//////////
-
-OSErr GetAMovieFile(Movie *theMovie)
-{
- OSType myTypeList[2] = {kQTFileTypeMovie, kQTFileTypeQuickTimeImage};
- FSSpec theFSSpec;
- OSErr result = noErr;
-
- *theMovie = nil;
-
- result = GetOneFileWithPreview(2, myTypeList, &theFSSpec, NULL);
- if (result != userCanceledErr)
- {
- result = GetMovieFromFile(&theFSSpec, theMovie);
- }
-
- return result;
-}
-
-//////////
-//
-// NormalizeMovieRect
-//
-//////////
-
-void NormalizeMovieRect(Movie theMovie)
-{
- Rect movieBounds;
-
- GetMovieBox(theMovie, &movieBounds);
- OffsetRect(&movieBounds, -movieBounds.left, -movieBounds.top);
- movieBounds.right = movieBounds.left + 640;
- movieBounds.bottom = movieBounds.top + 480;
- SetMovieBox(theMovie, &movieBounds);
-}
-
-//////////
-//
-// EraseRectAndAlpha
-// Zeros out a section of the GWorld, including alpha.
-//
-//////////
-
-void EraseRectAndAlpha(GWorldPtr gWorld, Rect *pRect)
-{
- PixMapHandle pixMap = GetGWorldPixMap(gWorld);
- long rows;
- Ptr rowBaseAddr;
-
-
- LockPixels(pixMap);
- rows = pRect->bottom - pRect->top;
-
- rowBaseAddr = GetPixBaseAddr(pixMap) + (GetPixRowBytes(pixMap) & 0x3fff) * pRect->top + pRect->left * GetPixDepth(pixMap) / 8;
- do
- {
- long cols;
- UInt32 *baseAddr;
-
- cols = pRect->right - pRect->left;
- baseAddr = (UInt32*)rowBaseAddr;
- rowBaseAddr += (**pixMap).rowBytes & 0x3fff;
- do
- {
- *baseAddr++ = 0;
- } while (--cols);
- } while (--rows);
-
- UnlockPixels(pixMap);
-
-} // EraseRectAndAlpha
-
-//////////
-//
-// CreateDecompSeqForSGChannelData
-// Create a decompression sequence for the passed
-// Sequence Grabber channel data
-//
-//////////
-
-OSErr CreateDecompSeqForSGChannelData(SGChannel sgChannel, Rect *srcBounds, GWorldPtr imageDestination, ImageSequence *imageSeqID)
-{
- OSErr err = noErr;
-
- ImageDescriptionHandle imageDesc = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription));
- if (imageDesc)
- {
-
- err = SGGetChannelSampleDescription(sgChannel,(Handle)imageDesc);
- // The original version of this code had a bug - it passed in a Crop Rect to DecompressSequenceBegin instead of a scaling matrix
- // This only worked because of another bug inside QT that reated the crop Rect as a destination rect for DV
- // the following code does the right thing in all cases.
-
- if (err == noErr)
- {
- MatrixRecord mr;
- Rect fromR;
-
- fromR.left = 0;
- fromR.top = 0;
- fromR.right = (**imageDesc).width;
- fromR.bottom = (**imageDesc).height;
- RectMatrix(&mr, &fromR, srcBounds);
-
- err = DecompressSequenceBegin(imageSeqID, imageDesc, imageDestination, 0, nil, &mr,srcCopy,nil,0, codecNormalQuality, bestSpeedCodec);
- }
-
- DisposeHandle((Handle)imageDesc);
- }
- else
- {
- err = MemError();
- }
-
- return err;
-}
-
-
-//////////
-//
-// CreateDecompSeqForGWorldData
-// Create a decompression sequence for the specified gworld data
-//
-//////////
-
-OSErr CreateDecompSeqForGWorldData(GWorldPtr srcGWorld, Rect *srcBounds, MatrixRecordPtr mr, GWorldPtr imageDestination, ImageSequence *imageSeqID)
-{
- OSErr err;
-
- ImageDescriptionHandle imageDesc = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription));
- if (imageDesc)
- {
- err = MakeImageDescriptionForPixMap (GetGWorldPixMap(srcGWorld), &imageDesc);
- err = DecompressSequenceBegin( imageSeqID,
- imageDesc,
- imageDestination,
- 0,
- srcBounds,
- mr,
- srcCopy,
- nil,
- 0,
- codecNormalQuality,
- bestSpeedCodec);
- DisposeHandle((Handle)imageDesc);
- }
- else
- {
- err = MemError();
- }
-
- return err;
-}
-
-//////////
-//
-// CreateNewSGChannelForRecording
-// - create a new Sequence Grabber video channel
-// - let the use configure the channel
-// - set the channel bounds, usage
-// - set a data proc for the channel
-// - start recording data
-//
-//////////
-
-OSErr CreateNewSGChannelForRecording(ComponentInstance seqGrab, SGDataUPP dataProc, CGrafPtr drawPort, Rect *theRect, SGChannel *sgChannel, long refCon)
-{
- OSErr err = noErr;
-
- BailErr((err = SGInitialize(seqGrab)));
-
- // tell it we're not making a movie
- BailErr((err = SGSetDataRef(seqGrab,0,0,seqGrabDontMakeMovie)));
- // It wants a port, even if its not drawing to it
- BailErr((err = SGSetGWorld(seqGrab, drawPort, GetMainDevice())));
- BailErr((err = SGNewChannel(seqGrab, VideoMediaType, sgChannel)));
-
- // let the user configure the video channel
- //BailErr((err = SGSettingsDialog(seqGrab, *sgChannel, 0, nil, 0, nil, 0))); // ************************
-// ************************************************************
-
-
-
- BailErr((err = SGSetChannelBounds(*sgChannel, theRect)));
- // set usage for new video channel to avoid playthrough
- BailErr((err = SGSetChannelUsage(*sgChannel, seqGrabRecord ))); //note we don't set seqGrabPlayDuringRecord
- BailErr((err = SGSetDataProc(seqGrab, dataProc, refCon)));
- BailErr((err = SGStartRecord(seqGrab)));
-
-bail:
- return err;
-}
-
-//////////
-//
-// DoCloseSG
-// Terminate recording for our SG channel - dispose of the channel and
-// the associated SG component instance
-//
-//////////
-
-void DoCloseSG(ComponentInstance seqGrab, SGChannel sgChannel, SGDataUPP dataProc)
-{
- if(seqGrab)
- {
- SGStop(seqGrab);
- SGSetDataProc(seqGrab, NULL ,NULL);
- if (dataProc)
- {
- DisposeSGDataUPP(dataProc);
- }
-
- SGDisposeChannel(seqGrab, sgChannel);
- CloseComponent(seqGrab);
- }
-}
-
-
diff --git a/pidgin/plugins/crazychat/QTUtilities.h b/pidgin/plugins/crazychat/QTUtilities.h
deleted file mode 100644
index a6dedacec6..0000000000
--- a/pidgin/plugins/crazychat/QTUtilities.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- File: QTUtilities.h
-
- Description: Interface file for QTUtilities.c source code.
-
- Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved.
-
- Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc.
- ("Apple") in consideration of your agreement to the following terms, and your
- use, installation, modification or redistribution of this Apple software
- constitutes acceptance of these terms. If you do not agree with these terms,
- please do not use, install, modify or redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject
- to these terms, Apple grants you a personal, non-exclusive license, under Apple’s
- copyrights in this original Apple software (the "Apple Software"), to use,
- reproduce, modify and redistribute the Apple Software, with or without
- modifications, in source and/or binary forms; provided that if you redistribute
- the Apple Software in its entirety and without modifications, you must retain
- this notice and the following text and disclaimers in all such redistributions of
- the Apple Software. Neither the name, trademarks, service marks or logos of
- Apple Computer, Inc. may be used to endorse or promote products derived from the
- Apple Software without specific prior written permission from Apple. Except as
- expressly stated in this notice, no other rights or licenses, express or implied,
- are granted by Apple herein, including but not limited to any patent rights that
- may be infringed by your derivative works or by other works in which the Apple
- Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
- WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
- WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
- COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
- OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
- (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- Change History (most recent first):
-
-*/
-
-#ifdef __APPLE_CC__
-// #include <Carbon/Carbon.h>
- #include <QuickTime/QuickTime.h>
-#else
-// #include <Carbon.h>
- #include <QuickTime.h>
-#endif
-
-#define kSourceNoneName FOUR_CHAR_CODE('srcZ')
-
-
-OSErr GetMovieFromFile(FSSpec *fsspecPtr, Movie *theMovie);
-void NormalizeMovieRect(Movie theMovie);
-void EraseRectAndAlpha(GWorldPtr gWorld, Rect *pRect);
-OSErr GetAMovieFile(Movie *theMovie);
-OSErr CreateDecompSeqForSGChannelData(SGChannel sgChannel, Rect *srcBounds, GWorldPtr imageDestination, ImageSequence *imageSeqID);
-OSErr CreateDecompSeqForGWorldData(GWorldPtr srcGWorld, Rect *srcBounds, MatrixRecordPtr mr, GWorldPtr imageDestination, ImageSequence *imageSeqID);
-OSErr CreateNewSGChannelForRecording(ComponentInstance seqGrab, SGDataUPP dataProc, CGrafPtr drawPort, Rect *theRect, SGChannel *sgChannel, long refCon);
-void DoCloseSG(ComponentInstance seqGrab, SGChannel sgChannel, SGDataUPP dataProc);
diff --git a/pidgin/plugins/crazychat/Utilities.c b/pidgin/plugins/crazychat/Utilities.c
deleted file mode 100644
index 09dac4cd64..0000000000
--- a/pidgin/plugins/crazychat/Utilities.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- File: Utilities.c
-
- Description: Miscellaneous Utility routines.
-
- Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved.
-
- Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc.
- ("Apple") in consideration of your agreement to the following terms, and your
- use, installation, modification or redistribution of this Apple software
- constitutes acceptance of these terms. If you do not agree with these terms,
- please do not use, install, modify or redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject
- to these terms, Apple grants you a personal, non-exclusive license, under Apple’s
- copyrights in this original Apple software (the "Apple Software"), to use,
- reproduce, modify and redistribute the Apple Software, with or without
- modifications, in source and/or binary forms; provided that if you redistribute
- the Apple Software in its entirety and without modifications, you must retain
- this notice and the following text and disclaimers in all such redistributions of
- the Apple Software. Neither the name, trademarks, service marks or logos of
- Apple Computer, Inc. may be used to endorse or promote products derived from the
- Apple Software without specific prior written permission from Apple. Except as
- expressly stated in this notice, no other rights or licenses, express or implied,
- are granted by Apple herein, including but not limited to any patent rights that
- may be infringed by your derivative works or by other works in which the Apple
- Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
- WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
- WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
- COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
- OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
- (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- Change History (most recent first):
-
-*/
-
-#ifndef __UTILITIES__
- #include "Utilities.h"
-#endif
-
-const OSType kApplicationSignature = FOUR_CHAR_CODE('cvmj');
-const ResType kOpenResourceType = FOUR_CHAR_CODE('open');
-const StringPtr kApplicationName = "\pYourAppNameHere";
-
-//////////
-//
-// GetOneFileWithPreview
-// Display the appropriate file-opening dialog box, with an optional QuickTime preview pane. If the user
-// selects a file, return information about it using the theFSSpecPtr parameter.
-//
-// Note that both StandardGetFilePreview and NavGetFile use the function specified by theFilterProc as a
-// file filter. This framework always passes NULL in the theFilterProc parameter. If you use this function
-// in your own code, keep in mind that on Windows the function specifier must be of type FileFilterUPP and
-// on Macintosh it must be of type NavObjectFilterUPP. (You can use the QTFrame_GetFileFilterUPP to create
-// a function specifier of the appropriate type.) Also keep in mind that Navigation Services expects a file
-// filter function to return true if a file is to be displayed, while the Standard File Package expects the
-// filter to return false if a file is to be displayed.
-//
-//////////
-
-OSErr GetOneFileWithPreview (short theNumTypes, TypeListPtr theTypeList, FSSpecPtr theFSSpecPtr, void *theFilterProc)
-{
-
-#if TARGET_OS_WIN32
- StandardFileReply myReply;
-#endif
-#if TARGET_OS_MAC
- NavReplyRecord myReply;
- NavDialogOptions myDialogOptions;
- NavTypeListHandle myOpenList = NULL;
- NavEventUPP myEventUPP = NewNavEventUPP(HandleNavEvent);
-#endif
- OSErr myErr = noErr;
-
- if (theFSSpecPtr == NULL)
- return(paramErr);
-
-#if TARGET_OS_WIN32
- // prompt the user for a file
- StandardGetFilePreview((FileFilterUPP)theFilterProc, theNumTypes, (ConstSFTypeListPtr)theTypeList, &myReply);
- if (!myReply.sfGood)
- return(userCanceledErr);
-
- // make an FSSpec record
- myErr = FSMakeFSSpec(myReply.sfFile.vRefNum, myReply.sfFile.parID, myReply.sfFile.name, theFSSpecPtr);
-#endif
-
-#if TARGET_OS_MAC
- // specify the options for the dialog box
- NavGetDefaultDialogOptions(&myDialogOptions);
- myDialogOptions.dialogOptionFlags -= kNavNoTypePopup;
- myDialogOptions.dialogOptionFlags -= kNavAllowMultipleFiles;
- BlockMoveData(kApplicationName, myDialogOptions.clientName, kApplicationName[0] + 1);
-
- // create a handle to an 'open' resource
- myOpenList = (NavTypeListHandle)CreateOpenHandle(kApplicationSignature, theNumTypes, theTypeList);
- if (myOpenList != NULL)
- HLock((Handle)myOpenList);
-
- // prompt the user for a file
- myErr = NavGetFile(NULL, &myReply, &myDialogOptions, myEventUPP, NULL, (NavObjectFilterUPP)theFilterProc, myOpenList, NULL);
- if ((myErr == noErr) && myReply.validRecord) {
- AEKeyword myKeyword;
- DescType myActualType;
- Size myActualSize = 0;
-
- // get the FSSpec for the selected file
- if (theFSSpecPtr != NULL)
- myErr = AEGetNthPtr(&(myReply.selection), 1, typeFSS, &myKeyword, &myActualType, theFSSpecPtr, sizeof(FSSpec), &myActualSize);
-
- NavDisposeReply(&myReply);
- }
-
- if (myOpenList != NULL) {
- HUnlock((Handle)myOpenList);
- DisposeHandle((Handle)myOpenList);
- }
-
- DisposeNavEventUPP(myEventUPP);
-#endif
-
- return(myErr);
-}
-
-//////////
-//
-// CreateOpenHandle
-// Get the 'open' resource or dynamically create a NavTypeListHandle.
-//
-//////////
-
-Handle CreateOpenHandle (OSType theApplicationSignature, short theNumTypes, TypeListPtr theTypeList)
-{
- Handle myHandle = NULL;
-
- // see if we have an 'open' resource...
- myHandle = Get1Resource('open', 128);
- if ( myHandle != NULL && ResError() == noErr ) {
- DetachResource( myHandle );
- return myHandle;
- } else {
- myHandle = NULL;
- }
-
- // nope, use the passed in types and dynamically create the NavTypeList
- if (theTypeList == NULL)
- return myHandle;
-
- if (theNumTypes > 0) {
- myHandle = NewHandle(sizeof(NavTypeList) + (theNumTypes * sizeof(OSType)));
- if (myHandle != NULL) {
- NavTypeListHandle myOpenResHandle = (NavTypeListHandle)myHandle;
-
- (*myOpenResHandle)->componentSignature = theApplicationSignature;
- (*myOpenResHandle)->osTypeCount = theNumTypes;
- BlockMoveData(theTypeList, (*myOpenResHandle)->osType, theNumTypes * sizeof(OSType));
- }
- }
-
- return myHandle;
-}
-
-//////////
-//
-// HandleNavEvent
-// A callback procedure that handles events while a Navigation Service dialog box is displayed.
-//
-//////////
-
-PASCAL_RTN void HandleNavEvent(NavEventCallbackMessage theCallBackSelector, NavCBRecPtr theCallBackParms, void *theCallBackUD)
-{
-#pragma unused(theCallBackUD)
-
- if (theCallBackSelector == kNavCBEvent) {
- switch (theCallBackParms->eventData.eventDataParms.event->what) {
- case updateEvt:
-#if TARGET_OS_MAC
- // Handle Update Event
-#endif
- break;
- case nullEvent:
- // Handle Null Event
- break;
- }
- }
-}
-
-//////////
-//
-// PutFile
-// Save a file under the specified name. Return Boolean values indicating whether the user selected a file
-// and whether the selected file is replacing an existing file.
-//
-//////////
-
-OSErr PutFile (ConstStr255Param thePrompt, ConstStr255Param theFileName, FSSpecPtr theFSSpecPtr, Boolean *theIsSelected, Boolean *theIsReplacing)
-{
- NavReplyRecord myReply;
- NavDialogOptions myDialogOptions;
- NavEventUPP myEventUPP = NewNavEventUPP(HandleNavEvent);
- OSErr myErr = noErr;
-
- if ((theFSSpecPtr == NULL) || (theIsSelected == NULL) || (theIsReplacing == NULL))
- return(paramErr);
-
- // assume we are not replacing an existing file
- *theIsReplacing = false;
-
- *theIsSelected = false;
-
- // specify the options for the dialog box
- NavGetDefaultDialogOptions(&myDialogOptions);
- myDialogOptions.dialogOptionFlags += kNavNoTypePopup;
- myDialogOptions.dialogOptionFlags += kNavDontAutoTranslate;
- BlockMoveData(theFileName, myDialogOptions.savedFileName, theFileName[0] + 1);
- BlockMoveData(thePrompt, myDialogOptions.message, thePrompt[0] + 1);
-
- // prompt the user for a file
- myErr = NavPutFile(NULL, &myReply, &myDialogOptions, myEventUPP, MovieFileType, sigMoviePlayer, NULL);
- if ((myErr == noErr) && myReply.validRecord)
- {
- AEKeyword myKeyword;
- DescType myActualType;
- Size myActualSize = 0;
-
- // get the FSSpec for the selected file
- if (theFSSpecPtr != NULL)
- myErr = AEGetNthPtr(&(myReply.selection), 1, typeFSS, &myKeyword, &myActualType, theFSSpecPtr, sizeof(FSSpec), &myActualSize);
-
- *theIsSelected = myReply.validRecord;
- if (myReply.validRecord)
- {
- *theIsReplacing = myReply.replacing;
- }
-
- NavDisposeReply(&myReply);
- }
-
-
- DisposeNavEventUPP(myEventUPP);
-
- return(myErr);
-}
-
-//////////
-//
-// DrawLobsterPICTtoGWorld
-// Draws our lobster image to the specified gworld
-//
-//////////
-
-void DrawLobsterPICTtoGWorld(CGrafPtr destGWorld, Rect *srcRect)
-{
- // put the overlay into the GWorld, move the picture to the bottom right of the movie
- PicHandle pict = GetPicture(129);
- if (pict)
- {
- CGrafPtr oldPort;
- GDHandle oldDevice;
- Rect frame = (**pict).picFrame;
-
- GetGWorld(&oldPort, &oldDevice);
- SetGWorld(destGWorld, nil);
- // normalize coordinates
- OffsetRect(&frame, -frame.left, -frame.left);
- // grow frame to be as big as source rect
- OffsetRect(&frame, srcRect->right - frame.right, srcRect->bottom - frame.bottom);
- DrawPicture(pict, &frame);
- SetGWorld(oldPort, oldDevice);
- ReleaseResource((Handle)pict);
- }
-}
-
diff --git a/pidgin/plugins/crazychat/Utilities.h b/pidgin/plugins/crazychat/Utilities.h
deleted file mode 100644
index 5f58ec827a..0000000000
--- a/pidgin/plugins/crazychat/Utilities.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- File: Utilities.h
-
- Description: Interface file for Utilities.c source code.
-
- Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved.
-
- Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc.
- ("Apple") in consideration of your agreement to the following terms, and your
- use, installation, modification or redistribution of this Apple software
- constitutes acceptance of these terms. If you do not agree with these terms,
- please do not use, install, modify or redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject
- to these terms, Apple grants you a personal, non-exclusive license, under Apple’s
- copyrights in this original Apple software (the "Apple Software"), to use,
- reproduce, modify and redistribute the Apple Software, with or without
- modifications, in source and/or binary forms; provided that if you redistribute
- the Apple Software in its entirety and without modifications, you must retain
- this notice and the following text and disclaimers in all such redistributions of
- the Apple Software. Neither the name, trademarks, service marks or logos of
- Apple Computer, Inc. may be used to endorse or promote products derived from the
- Apple Software without specific prior written permission from Apple. Except as
- expressly stated in this notice, no other rights or licenses, express or implied,
- are granted by Apple herein, including but not limited to any patent rights that
- may be infringed by your derivative works or by other works in which the Apple
- Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
- WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
- WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
- COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
- OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
- (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- Change History (most recent first):
-
-*/
-
-#ifdef __APPLE_CC__
-// #include <Carbon/Carbon.h>
- #include <QuickTime/QuickTime.h>
-#else
-// #include <Carbon.h>
- #include <QuickTime.h>
-#endif
-
-
-#define kTypeListCount 2
-#if TARGET_OS_MAC
- #define PASCAL_RTN pascal
-#endif
-
-#ifdef __APPLE_CC__
- #define sigMoviePlayer FOUR_CHAR_CODE('TVOD')
-#else
- #include <FileTypesAndCreators.h>
-#endif
-
-
-//
-// Typedefs
-//
-typedef const OSTypePtr TypeListPtr;
-
-
-//
-// Prototypes
-//
-OSErr GetOneFileWithPreview (short theNumTypes, TypeListPtr theTypeList, FSSpecPtr theFSSpecPtr, void *theFilterProc);
-Handle CreateOpenHandle (OSType theApplicationSignature, short theNumTypes, TypeListPtr theTypeList);
-PASCAL_RTN void HandleNavEvent(NavEventCallbackMessage theCallBackSelector, NavCBRecPtr theCallBackParms, void *theCallBackUD);
-OSErr PutFile (ConstStr255Param thePrompt, ConstStr255Param theFileName, FSSpecPtr theFSSpecPtr, Boolean *theIsSelected, Boolean *theIsReplacing);
-void DrawLobsterPICTtoGWorld(CGrafPtr destGWorld, Rect *srcRect);
-
-
diff --git a/pidgin/plugins/crazychat/camdata.c b/pidgin/plugins/crazychat/camdata.c
deleted file mode 100644
index 43661c3508..0000000000
--- a/pidgin/plugins/crazychat/camdata.c
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * camdata.c
- * basecame
- *
- * Created by CS194 on Mon Apr 26 2004.
- * Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "camdata.h"
-//#include "AppBlit_Component.h"
-#include "QTUtilities.h"
-#include "Utilities.h"
-
-
-#define BailNULL(n) if (!n) goto bail;
-#define BailError(n) if (n) goto bail;
-#define BailNil(n) if (!n) goto bail;
-#define BailErr(x) {if (x != noErr) goto bail;}
-#define bitdepth 32
-
-mungDataPtr myMungData = NULL;
-long mWorlds[20];
-UInt32 mRedCount[256], mGreenCound[256], mBlueCount[256];
-
-static void DecompressSequencePreflight(GWorldPtr srcGWorld,
- ImageSequence *imageSeq,
- GWorldPtr destGWorld,
- Rect *srcRect);
-//static void DrawRGBHistogram(mungDataRecord *theMungData);
-//static void CreateEffectDescription(mungDataRecord *theMungData);
-//static void CreateEffectDecompSequence(mungDataRecord *theMungData);
-//static void AddGWorldDataSourceToEffectDecompSeq(mungDataRecord *theMungData);
-//static void MakeEffectTimeBaseForEffect(mungDataRecord *theMungData);
-//static void DrawUsingEffect(mungDataRecord *theMungData);
-
-
-OSErr InitializeMungData(Rect bounds)
-{
- OSErr err = noErr;
-
- if(myMungData)
- {
- DisposeMungData();
- }
-
- myMungData = (mungDataPtr)NewPtrClear(sizeof(mungDataRecord));
- if (myMungData == nil)
- {
- err = MemError();
- goto bail;
- }
-
- myMungData->effect = 0; // always
-
-
- BailErr(QTNewGWorld(&(myMungData->gw),bitdepth,&bounds,0,0,0));
- LockPixels(GetGWorldPixMap(myMungData->gw));
-
- SetMungDataColorDefaults();
-
-
-
- myMungData->selectedIndex = 0;
- myMungData->overlay = NULL;
-
- SetCurrentClamp(-1);
-
-
-
- myMungData->bounds = bounds;
-
- SetRect(&bounds, 0, 0, 256*2+4, 128*3 + 20);
- BailErr(QTNewGWorld(&(myMungData->histoWorld),bitdepth,&bounds,0,0,0));
- LockPixels(GetGWorldPixMap(myMungData->histoWorld));
-
-bail:
- return err;
-}
-
-OSErr DisposeMungData(void)
-{ // check this out
- OSErr err = noErr;
-
- if(myMungData)
- {
- //if(myMungData->drawSeq)
- //{
- // CDSequenceEnd(myMungData->drawSeq);
- //}
-
- if(myMungData->gw)
- {
- DisposeGWorld(myMungData->gw);
- myMungData->gw = nil;
- }
-
- if(myMungData->overlay)
- {
- DisposeGWorld(myMungData->overlay);
- myMungData->overlay = nil;
- }
-
- if(myMungData->histoWorld)
- {
- DisposeGWorld(myMungData->histoWorld);
- myMungData->histoWorld = nil;
- }
-
- if (myMungData->effectTimeBase)
- {
- DisposeTimeBase(myMungData->effectTimeBase);
- }
- if (myMungData->effectParams)
- {
- QTDisposeAtomContainer(myMungData->effectParams);
- }
- if (myMungData->effectDesc)
- {
- DisposeHandle((Handle)myMungData->effectDesc);
- }
-
- DisposePtr((Ptr)myMungData);
- myMungData = nil;
- }
- return err;
-}
-
-static void DecompressSequencePreflight(GWorldPtr srcGWorld,
- ImageSequence *imageSeq,
- GWorldPtr destGWorld,
- Rect *srcRect)
-// might not need this one
-
-{
- ImageDescriptionHandle imageDesc = nil;
-
- BailErr(MakeImageDescriptionForPixMap (GetGWorldPixMap(srcGWorld), &imageDesc));
-
- // use our built-in decompressor to draw
- // (**imageDesc).cType = kCustomDecompressorType;
-
-// *********** MIGHT BE MAKING A BIG MISTAKE ******************
- // pass a compressed sample so a codec can perform preflighting before the first DecompressSequenceFrameWhen call
-
- BailErr(DecompressSequenceBegin(imageSeq,
- imageDesc,
- destGWorld,
- 0,
- srcRect,
- nil,
- srcCopy,
- nil,
- 0,
- codecNormalQuality,
- bestSpeedCodec));
-
-bail:
- if (imageDesc)
- {
- DisposeHandle((Handle)imageDesc);
- }
-}
-
-ImageSequence GetMungDataDrawSeq()
-{
- return myMungData->drawSeq;
-}
-
-void SetMungDataColorDefaults()
-{
- if(myMungData)
- {
- myMungData->redMin = 2;
- myMungData->redMax = 254;
- myMungData->greenMin = 2;
- myMungData->greenMax = 254;
- myMungData->blueMin = 2;
- myMungData->blueMax = 254;
- }
-}
-
-void GetMungDataBoundsRect(Rect *boundsRect)
-// might not need this one
-{
- MacSetRect (boundsRect,
- myMungData->bounds.left,
- myMungData->bounds.top,
- myMungData->bounds.right,
- myMungData->bounds.bottom
- );
-}
-
-void SetCurrentClamp(short index) // :crazy:20040426
-{
- myMungData->selectedIndex = index;
-}
-
-GWorldPtr GetMungDataOffscreen()
-{
- return (myMungData->gw);
-}
-
-void SetMungDataDrawSeq(ImageSequence theDrawSeq)
-{
- myMungData->drawSeq = theDrawSeq;
-}
-
-
-CGrafPtr GetMungDataWindowPort()
-{
- return GetWindowPort(myMungData->window);
-}
diff --git a/pidgin/plugins/crazychat/camdata.h b/pidgin/plugins/crazychat/camdata.h
deleted file mode 100644
index cdd8fdb8d9..0000000000
--- a/pidgin/plugins/crazychat/camdata.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * camdata.h
- * basecame
- *
- * Created by CS194 on Mon Apr 26 2004.
- * Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#pragma once
-
-#ifdef __APPLE_CC__
-// #include <Carbon/Carbon.h>
- #include <QuickTime/QuickTime.h>
-#else
-// #include <Carbon.h>
- #include <QuickTime.h>
-#endif
-
-typedef struct
-{
- GWorldPtr gw;
- GWorldPtr overlay;
- GWorldPtr histoWorld;
-
- Rect bounds;
- WindowPtr window;
- ImageSequence drawSeq;
- UInt32 redMin, redMax;
- UInt32 greenMin, greenMax;
- UInt32 blueMin, blueMax;
-
- long selectedIndex;
- OSType effect;
- TimeBase effectTimeBase;
- QTAtomContainer effectParams;
- ImageDescriptionHandle effectDesc, effectDesc2;
-} mungDataRecord;
-typedef mungDataRecord *mungDataPtr;
-
-OSErr DisposeMungData(void);
-OSErr InitializeMungData(Rect bounds);
-void SetCurrentClamp(short index);
-
-//void BlitOneMungData(mungDataRecord *theMungData);
-
-//void AdjustColorClampEndpoints(short hMouseCoord);
-//void IncrementCurrentClamp(void);
-//void DecrementCurrentClamp(void);
-void SetMungDataColorDefaults(void);
-CGrafPtr GetMungDataWindowPort(void);
-
-GWorldPtr GetMungDataOffscreen(void);
-//OSType GetMungDataEffectType(void);
-
-//long GetCurrentClamp(void);
-//void SetCurrentClamp(short index);
-
-void GetMungDataBoundsRect(Rect *movieRect);
-//CGrafPtr GetMungDataWindowPort(void);
-
-void SetMungDataDrawSeq(ImageSequence theDrawSeq);
-//ImageSequence GetMungDataDrawSeq(void);
diff --git a/pidgin/plugins/crazychat/camproc.c b/pidgin/plugins/crazychat/camproc.c
deleted file mode 100644
index eef98a6bf4..0000000000
--- a/pidgin/plugins/crazychat/camproc.c
+++ /dev/null
@@ -1,812 +0,0 @@
-/*
- * camproc.c
- * basecame
- *
- * Created by CS194 on Mon Apr 26 2004.
- * Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-
-#include "camdata.h"
-#include "Utilities.h"
-#include "QTUtilities.h"
-#include "stdio.h"
-#include "math.h"
-#include <gtk/gtk.h>
-#include "cc_interface.h"
-#include "filter.h"
-
-
-extern int detection_mode;
-extern mungDataPtr myMungData;
-extern int x_click;
-extern int y_click;
-
-
-#define kMinimumIdleDurationInMillis kEventDurationMillisecond
-#define BailErr(x) {if (x != noErr) goto bail;}
-#define PRE_CALIBRATE_MODE 0
-#define CALIBRATE_MODE 1
-#define SCAN_MODE 2
-
-#define CALIB_TOP 190
-#define CALIB_BOTTOM 200
-#define CALIB_LEFT 200
-#define CALIB_RIGHT 210
-
-#define CALIB_RADIUS 5
-
-#define NUM_FRAMES_EYE_SEARCH 50
-#define EYE_UNCONFIDENCE_LIMIT 7
-
-#define BLINK_THRESHOLD 75
-#define BLINK_LENGTH 10
-#define WHITE_THRESH 25
-#define WHITE_COUNT_MAX 200
-
-
-struct input_instance* instance;
-int scan_region_left;
-int scan_region_right;
-int scan_region_top;
-int scan_region_bottom;
-
-int lum_thresh=150;
-int face_left;
-int face_right;
-int face_top;
-int face_bottom;
-int old_left_eye_x=50;
-int old_left_eye_y=50;
-int old_right_eye_x=50;
-int old_right_eye_y=50;
-int left_eye_x;
-int left_eye_y;
-int right_eye_x;
-int right_eye_y;
-int eye_search_frame_count=0;
-int bozo_bit=0;
-int eye_unconfidence=0;
-int last_eye_count_left=0;
-int last_eye_count_right=0;
-int mouth_ctr_x;
-int mouth_ctr_y;
-int mouth_size, mouth_left, mouth_right, mouth_top, mouth_bottom;
-int white_count;
-guint8 head_size_old;
-int left_eye_blink_count;
-int right_eye_blink_count;
-
-int left_eye_top, left_eye_bottom, left_eye_right, left_eye_left;
-int right_eye_top, right_eye_bottom, right_eye_right, right_eye_left;
-
-filter_bank *bank;
-
-static SeqGrabComponent mSeqGrab = NULL;
-static SGChannel mSGChanVideo = NULL;
-static SGDataUPP mMyDataProcPtr = NULL;
-static EventLoopTimerRef mSGTimerRef = 0;
-static ImageSequence mDecomSeq = 0;
-static EventLoopTimerUPP mSGTimerUPP = nil;
-static Rect mMungRect = {0, 0, 480, 640};
-int lower_left_corner_x = 200;
-int lower_left_corner_y = 200;
-int upper_right_corner_x = 210;
-int upper_right_corner_y = 190;
-
-
-static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon);
-static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData);
-static void DetectLobster(GWorldPtr mungDataOffscreen);
-int SkinDetect(double Y, double E, double S);
-void ScanSkin(PixMapHandle p);
-void drawbox(int top, int bottom, int left, int right, int color);
-void SkinStats (PixMapHandle p, int top, int bottom, int left, int right);
-void SetEyeSearchRegions(void);
-
-
-typedef enum {RED, GREEN, BLUE} color;
-color saved_best=-1;
-
-int filenum=0;
-
-
-OSErr CamProc(struct input_instance *inst, filter_bank *f)
-{
- OSStatus error;
- OSErr err = noErr;
-
- BailErr(err = InitializeMungData(mMungRect));
-
- bank = f;
-
- instance=inst;
- mMyDataProcPtr = NewSGDataUPP(MiniMungDataProc);
- mSeqGrab = OpenDefaultComponent(SeqGrabComponentType, 0);
- BailErr((err = CreateNewSGChannelForRecording( mSeqGrab,
- mMyDataProcPtr,
- GetMungDataOffscreen(), // drawing destination
- &mMungRect,
- &mSGChanVideo,
- NULL)));
-
-bail:
- return err;
-}
-
-void QueryCam (void)
-{
- SGIdle(mSeqGrab);
-}
-
-static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData)
-{
-#pragma unused(inUserData)
-
- if (mSeqGrab)
- {
- SGIdle(mSeqGrab);
- }
-
- // Reschedule the event loop timer
- SetEventLoopTimerNextFireTime(inTimer, kMinimumIdleDurationInMillis);
-}
-
-static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon)
-{
-
-
-#pragma unused(offset,chRefCon,time,writeType,refCon)
- ComponentResult err = noErr;
- CodecFlags ignore;
- GWorldPtr gWorld;
-
-
-
-
- if (!myMungData) goto bail;
-
- gWorld = GetMungDataOffscreen();
- if(gWorld)
- {
- if (mDecomSeq == 0) // init a decompression sequence
- {
- Rect bounds;
-
- GetMungDataBoundsRect(&bounds);
-
- BailErr( CreateDecompSeqForSGChannelData(c, &bounds, gWorld, &mDecomSeq));
-
- if(1)
- //if ((!mUseOverlay) && (GetCurrentClamp() == -1) && (!mUseEffect))
- {
- ImageSequence drawSeq;
-
- err = CreateDecompSeqForGWorldData( gWorld,
- &bounds,
- nil,
- GetMungDataWindowPort(),
- &drawSeq);
- SetMungDataDrawSeq(drawSeq);
- }
- }
-
- // decompress data to our offscreen gworld
- BailErr(DecompressSequenceFrameS(mDecomSeq,p,len,0,&ignore,nil));
-
- // image is now in the GWorld - manipulate it at will!
- //if ((mUseOverlay) || (GetCurrentClamp() != -1) || (mUseEffect))
- //{
- // use our custom decompressor to "decompress" the data
- // to the screen with overlays or color clamping
- // BlitOneMungData(myMungData);
- //}
- //else
- //{
- // we are doing a motion detect grab, so
- // search for lobsters in our image data
- DetectLobster(gWorld);
- //}
-
- }
-
-bail:
- return err;
-}
-
-void Die()
-{
- //RemoveEventLoopTimer(mSGTimerRef);
- // mSGTimerRef = nil;
- // DisposeEventLoopTimerUPP(mSGTimerUPP);
- DoCloseSG(mSeqGrab, mSGChanVideo, mMyDataProcPtr);
-
-}
-
-
-float Y_mean=-1;
-float Y_dev,E_mean,E_dev,S_mean,S_dev;
-/*
- extern colorBuf[480][640];
-*/
-extern unsigned int (*colorBuf)[644];
-extern struct input_instance input_data;
-
-static void DetectLobster(GWorldPtr mungDataOffscreen)
-{
- CGrafPtr oldPort;
- GDHandle oldDevice;
- int x, y;
- Rect bounds;
- PixMapHandle pix = GetGWorldPixMap(mungDataOffscreen);
- UInt32 * baseAddr;
- UInt32 reds = 0;
- Str255 tempString;
- int minX = 10000, maxX = -10000;
- int minY = 10000, maxY = -10000;
- Rect tempRect;
- float percent;
- OSErr err;
- CodecFlags ignore;
- color best;
- long R_total=0;
- long G_total=0;
- long B_total=0;
-
-
-
- //fprintf(stderr, "Starting to find some lobsters...\n");
-
-
- GetPortBounds(mungDataOffscreen, &bounds);
- OffsetRect(&bounds, -bounds.left, -bounds.top);
-
-
- UInt32 color;
-
-
- int sum_x,sum_y=0;
- int count=0;
- int k,j;
- long R;
- long G;
- long B;
- int search_width=200;
- int search_height=200;
-
-
- colorBuf = GetPixBaseAddr(pix);
-
- switch (detection_mode) {
-
- case PRE_CALIBRATE_MODE:
- //drawbox(CALIB_TOP, CALIB_BOTTOM, CALIB_LEFT, CALIB_RIGHT);
- break;
-
- case CALIBRATE_MODE:
- SkinStats(pix, y_click-CALIB_RADIUS, y_click+CALIB_RADIUS, x_click-CALIB_RADIUS, x_click+CALIB_RADIUS);
- scan_region_left=x_click-CALIB_RADIUS;//10;
- scan_region_right=x_click+CALIB_RADIUS;//630;
- scan_region_top=y_click-CALIB_RADIUS;//10;
- scan_region_bottom=y_click+CALIB_RADIUS;//470;
- ScanSkin(pix);
- detection_mode=SCAN_MODE;
- //fprintf(stderr, "scan left: %d scan right: %d \n",scan_region_left,scan_region_right);
- head_size_old=50;
- break;
-
- case SCAN_MODE:
- ScanSkin(pix);
- drawbox(face_top, face_bottom, face_left, face_right,1);
- //drawbox(scan_region_top, scan_region_bottom, scan_region_left, scan_region_right);
- drawbox((left_eye_y-5),(left_eye_y+5),(left_eye_x-5),(left_eye_x+5),0);
- drawbox((right_eye_y-5),(right_eye_y+5),(right_eye_x-5),(right_eye_x+5),0);
- int face_scale=instance->face.head_size;
- int mouth_width=face_scale;
- int mouth_height=face_scale;
- // if (bozo_bit==1) drawbax((mouth_ctr_y-mouth_height),(mouth_ctr_y+mouth_height),(mouth_ctr_x-mouth_width),(mouth_ctr_x+mouth_width));
- filter(&instance->face, bank);
- break;
- }
-
- //fprintf(stderr, "Lobsters found...\n");
-
-
-}
-
-
-
-
-void ScanSkin(PixMapHandle p)
-{
- int y,x,j,k;
- int right_eye_x_sum,right_eye_y_sum,left_eye_x_sum,left_eye_y_sum,right_eye_pt_count,left_eye_pt_count;
- right_eye_x_sum=right_eye_y_sum=left_eye_x_sum=left_eye_y_sum=right_eye_pt_count=left_eye_pt_count=0;
- long R,G,B,sum_x,sum_y;
- int count;
- double Y,E,S,lum;
- double min_lum_mouth=766;
- double min_lum_left=766;
- double min_lum_right=766;
- UInt32 color;
- UInt32 * baseAddr;
- int max_horz=0;
- int max_vert=0;
- sum_x=sum_y=count=0;
- int horz_count[480];
- int vert_count[640];
-
-
-
- memset(horz_count,0,480*sizeof(int));
- memset(vert_count,0,640*sizeof(int));
-
- if (eye_search_frame_count<NUM_FRAMES_EYE_SEARCH) eye_search_frame_count++;
- else if (eye_search_frame_count==NUM_FRAMES_EYE_SEARCH && bozo_bit==0)
- {
- bozo_bit=1;
- //fprintf(stderr, "GOOD You flipped the bozo bit (to good)\n");
- }
-
- SetEyeSearchRegions();
-
-
- for (y = scan_region_top; y < scan_region_bottom; y++) // change this to only calculate in bounding box
- {
- baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
- for (x = scan_region_left; x < scan_region_right; x++)
- {
- color=baseAddr[x];
- R = (color & 0x00FF0000) >> 16;
- G = (color & 0x0000FF00) >> 8;
- B = (color & 0x000000FF) >> 0;
- Y=.253*R+.684*G+.063*B;
- E=.5*R-.5*G;
- S=.25*R+.25*G-.5*B;
- lum=R+G+B;
-
- if (y>left_eye_top && y<left_eye_bottom)
- {
- if (x > left_eye_left && x<left_eye_right)
- {
- if (lum < lum_thresh) {
- left_eye_x_sum+=x;
- left_eye_y_sum+=y;
- left_eye_pt_count++;
- //colorBuf[y][x]=0x0000FF00;
- }
- }
- }
- if (y>right_eye_top && y<right_eye_bottom)
- {
- if (x > right_eye_left && x < right_eye_right)
- {
- if (lum < lum_thresh) {
- right_eye_x_sum+=x;
- right_eye_y_sum+=y;
- right_eye_pt_count++;
- //colorBuf[y][x]=0x0000FF00;
- }
- }
- }
-
- if(SkinDetect(Y,E,S))
- {
- sum_x+=x;
- sum_y+=y;
- count++;
-
- ++horz_count[y];
- ++vert_count[x];
-
- if (horz_count[y]>max_horz) max_horz=horz_count[y];
- if (vert_count[x]>max_vert) max_vert=vert_count[x];
-
- //colorBuf[y][x]=0x00FF0000;
- }
-
- }
- }
-
-
- left_eye_x=left_eye_x_sum/left_eye_pt_count;
- left_eye_y=left_eye_y_sum/left_eye_pt_count;
- right_eye_x=right_eye_x_sum/right_eye_pt_count;
- right_eye_y=right_eye_y_sum/right_eye_pt_count;
-
-
-
- int width=right_eye_x-left_eye_x;
- int height=right_eye_y-left_eye_y;
- double face_ang;
- if (width!=0) face_ang=atan((double)height/width);
- else face_ang=0;
- face_ang=face_ang*180/pi;
- //fprintf(stderr,"face angle: %f \n",face_ang);
-
- if ((left_eye_pt_count<5 || right_eye_pt_count<5 || width==0 || face_ang > 30 || face_ang < -30
- || left_eye_y < (face_top+.15*(face_bottom-face_top))
- || right_eye_y < (face_top+.15*(face_bottom-face_top)))
- && bozo_bit==1){
- eye_unconfidence++;
- left_eye_x=old_left_eye_x;
- left_eye_y=old_left_eye_y;
- right_eye_x=old_right_eye_x;
- right_eye_y=old_right_eye_y;
- }
- else {
- eye_unconfidence=0;
- old_left_eye_x=left_eye_x;
- old_left_eye_y=left_eye_y;
- old_right_eye_x=right_eye_x;
- old_right_eye_y=right_eye_y;
- }
-
-
- if (eye_unconfidence==EYE_UNCONFIDENCE_LIMIT){
- bozo_bit=0;
- eye_search_frame_count=0;
- //fprintf(stderr, "Recalibrating eyes\n");
- }
-
- if ((last_eye_count_left-left_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0)
- {
- left_eye_blink_count=BLINK_LENGTH;
- }
- if (left_eye_blink_count>0){
- instance->face.left_eye_open=0;
- left_eye_blink_count--;
- }
- else instance->face.left_eye_open=1;
-
- if ((last_eye_count_right-right_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0)
- {
- right_eye_blink_count=BLINK_LENGTH;
- }
- if (right_eye_blink_count>0){
- instance->face.right_eye_open=0;
- right_eye_blink_count--;
- }
- else instance->face.right_eye_open=1;
-
- if (instance->face.right_eye_open==0) instance->face.left_eye_open=0;
- if (instance->face.left_eye_open==0) instance->face.right_eye_open=0;
-
- last_eye_count_left=left_eye_pt_count;
- last_eye_count_right=right_eye_pt_count;
-
- float x_shift=0;
- if (width!=0) x_shift= (float)height/(float)width; // --> note dependence on earlier data here
-
-
-if (bozo_bit==1){
- int mouth_search_start_y=face_top+(.6*(face_bottom-face_top));
- int mouth_search_end_y=face_bottom;
- int mouth_search_start_x=(left_eye_x+right_eye_x)/2 + (-x_shift*(mouth_search_start_y-((right_eye_y+left_eye_y)/2))) ;
-
-for (y=mouth_search_start_y; y < mouth_search_end_y; y++)
-{
- x=mouth_search_start_x+((y - mouth_search_start_y)*(-x_shift));
- baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
- //colorBuf[y][x] = 0x0000FF00;
- color=baseAddr[x];
- R = (color & 0x00FF0000) >> 16;
- G = (color & 0x0000FF00) >> 8;
- B = (color & 0x000000FF) >> 0;
- lum=R+G+B;
-
- if (lum<min_lum_mouth) {
- min_lum_mouth=lum;
- mouth_ctr_x=x;
- mouth_ctr_y=y;
- }
-}
-
- mouth_size=(face_right-face_left)*100/640;
- mouth_left=mouth_ctr_x-mouth_size;
- if (mouth_left < face_left) mouth_left=face_left;
- mouth_right=mouth_ctr_x+mouth_size;
- if (mouth_right > face_right) mouth_right=face_right;
- mouth_top=mouth_ctr_y-mouth_size;
- if (mouth_top < face_top) mouth_top=face_top;
- mouth_bottom=mouth_ctr_y+mouth_size;
- if (mouth_bottom > face_bottom) mouth_bottom=face_bottom;
-
- white_count=0;
-
- for (y=mouth_top; y< mouth_bottom; y++){
- baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
- for (x=mouth_left; x< mouth_right; x++){
- color=baseAddr[x];
- R = (color & 0x00FF0000) >> 16;
- G = (color & 0x0000FF00) >> 8;
- B = (color & 0x000000FF) >> 0;
- if ((abs(R-G) < WHITE_THRESH) && (abs(G-B) < WHITE_THRESH) && (abs(R-B) < WHITE_THRESH))
- {
- white_count++;
- //colorBuf[y][x]=0x0000FF00;
- }
- }
- }
-
- }
-else white_count=10;
-
-// This next section finds the face region and sets the face_* parameters.
-
- int scan;
- float thresh=.3;
- scan=scan_region_left+1;
- if (scan<0) scan=0;
- //fprintf(stderr,"threshold value: %d boxtop value: %d \n", (max_horz), horz_count[scan_region_top]);
- while(1)
- {
- if (vert_count[scan]>=(thresh*max_vert))
- {
- face_left=scan;
- break;
- }
- scan++;
- }
-
- scan=scan_region_right-1;
- if (scan>=640) scan=639;
- while(1)
- {
- if (vert_count[scan]>=(thresh*max_vert))
- {
- face_right=scan;
- break;
- }
- scan--;
- }
-
- scan=scan_region_top+1;
- if (scan<0) scan=0;
- while(1)
- {
- if (horz_count[scan]>=(thresh*max_horz))
- {
- face_top=scan;
- break;
- }
- scan++;
- }
-
-
- scan=scan_region_bottom-1;
- if (scan>=480) scan=479;
- while(1)
- {
- if (horz_count[scan]>=(thresh*max_horz))
- {
- face_bottom=scan;
- break;
- }
- scan--;
- }
-
- // Base scan region on face region here
- scan_region_left=face_left-10;
- if (scan_region_left <= 0) scan_region_left=1;
- scan_region_right=face_right+10;
- if (scan_region_right >= 640) scan_region_right=639;
- scan_region_top=face_top-10;
- if (scan_region_top <= 0) scan_region_top=1;
- scan_region_bottom=face_bottom+10;
- if (scan_region_bottom >= 480) scan_region_bottom=479;
-
-
- // Calculate some stats
-
- // face size
- width=face_right-face_left;
- guint8 temp=width*100/640;
- instance->face.head_size=temp;
-
- // face location
- temp=((double)100/(double)640)*(double)(face_right+face_left)/2;
- instance->face.x=temp;
- temp=((double)100/(double)480)*(double)(face_top+face_bottom)/2;
- instance->face.y=temp;
-
- // face angle-Z
- instance->face.head_z_rot=face_ang+50;
-
- // face angle-Y
- int center=(face_right+face_left)/2;
- int right_eye_strad=right_eye_x-center;
- int left_eye_strad=center-left_eye_x;
- double y_ang;
- if (right_eye_strad > left_eye_strad) y_ang= (double)right_eye_strad/(double)left_eye_strad;
- else y_ang=(double)left_eye_strad/(double)right_eye_strad;
- y_ang=y_ang*5;
- if (y_ang >= 10) y_ang=30;
- if (y_ang <= 1) y_ang=1;
-
- if (right_eye_strad > left_eye_strad) y_ang=-y_ang;
- temp = (guint8) 50 + y_ang;
- instance->face.head_y_rot=temp;
-
- if (abs (temp-50) > 15) instance->face.head_size=head_size_old;
- else head_size_old=instance->face.head_size;
-
- temp = (guint8) 100 * white_count / WHITE_COUNT_MAX;
- if (temp > 100) temp=100;
- instance->face.mouth_open = temp;
-
-}
-
-
-
-
-
-
- // draw bounding box for either calibration or face
-
-
-void SetEyeSearchRegions(void)
-{
- if (bozo_bit==0)
- {
- left_eye_top=face_top+(.25*(face_bottom-face_top));
- left_eye_bottom=face_top+(.6*(face_bottom-face_top));
- left_eye_right=((face_left+face_right)/2);
- left_eye_left=face_left+.15*(face_right-face_left);
-
- right_eye_top=face_top+(.25*(face_bottom-face_top));
- right_eye_bottom=face_top+(.6*(face_bottom-face_top));
- right_eye_right=face_right-.15*(face_right-face_left);
- right_eye_left=((face_left+face_right)/2);
- }
-
- if (bozo_bit==1)
- {
- left_eye_top=left_eye_y-20;
- left_eye_bottom=left_eye_y+20;
- left_eye_left=left_eye_x-20;
- left_eye_right=left_eye_x+20;
-
- right_eye_top=right_eye_y-20;
- right_eye_bottom=right_eye_y+20;
- right_eye_left=right_eye_x-20;
- right_eye_right=right_eye_x+20;
- }
-}
-
-
-void drawbox(int top, int bottom, int left, int right, int color)
-{
- int y, x, j;
-
- unsigned int col;
-
-
- if (color==1)
- col=0x00FFFF00;
- else
- col=0x00FF00FF;
-
- if (top<0) top =0;
- if (top>=480) top=479;
- if (bottom<0) bottom =0;
- if (bottom>=480) bottom=479;
- if (left<0) left =0;
- if (left>=640) left=639;
- if (right<0) right =0;
- if (right>=640) right=639;
-
- if (color==1){
-
- for (y=top; y<bottom; y++)
- {
- for (j=0;j<5;j++){
- colorBuf[y][left+j] = col;
- colorBuf[y][right-j] = col;
- }
-
- }
-
- for (x=left; x<right; x++)
- {
-
- for (j=0;j<5;j++){
-
- colorBuf[bottom-j][x] = col;
- colorBuf[top+j][x] = col;
-
- }
-
- }
-
-
- } else {
-
-
-
- for (y=top; y<bottom; y++)
- {
- for (x=left;x<right;x++){
- colorBuf[y][x] = col;
- colorBuf[y][x] = col;
- }
-
- }
-
- }
-}
-
-
-
-void SkinStats (PixMapHandle p, int top, int bottom, int left, int right)
-{
- double Y_sum,E_sum,S_sum;
- int R,G,B;
- int count=0;
- Y_sum=E_sum=S_sum=0;
- double Y,E,S;
- UInt32 color;
- int x, y;
- UInt32 * baseAddr;
-
- for (y=top; y<bottom; y++)
- {
- baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
- for (x=left; x<right; x++)
- {
- count++;
- color=baseAddr[x];
-
- R = (color & 0x00FF0000) >> 16;
- G = (color & 0x0000FF00) >> 8;
- B = (color & 0x000000FF) >> 0;
- Y=.253*R+.684*G+.063*B;
- E=.5*R-.5*G;
- S=.25*R+.25*G-.5*B;
- Y_sum+=Y;
- E_sum+=E;
- S_sum+=S;
- }
- }
-
- Y_mean=Y_sum/count;
- E_mean=E_sum/count;
- S_mean=S_sum/count;
-
- Y_sum=E_sum=S_sum=0;
-
- for (y=top; y<bottom; y++)
- {
- baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
- for (x=left; x<right; x++)
- {
- color=baseAddr[x];
- R = (color & 0x00FF0000) >> 16;
- G = (color & 0x0000FF00) >> 8;
- B = (color & 0x000000FF) >> 0;
- Y=.253*R+.684*G+.063*B;
- E=.5*R-.5*G;
- S=.25*R+.25*G-.5*B;
-
- Y_sum+=(Y-Y_mean)*(Y-Y_mean);
- E_sum+=(E-E_mean)*(E-E_mean);
- S_sum+=(S-S_mean)*(S-S_mean);
-
- }
- }
-
- Y_dev=sqrt(Y_sum/(count-1));
- E_dev=sqrt(E_sum/(count-1));
- S_dev=sqrt(S_sum/(count-1));
-
- //fprintf(stderr,"Y: %f, %f\n E: %f, %f\nS: %f, %f\n",Y_mean,E_mean,S_mean,Y_dev,E_dev,S_dev);
-
-}
-
-int SkinDetect(double Y, double E, double S)
-{
- if (E>(E_mean-(2*E_dev)) && E<(E_mean+(2*E_dev))) return 1;
- else return 0;
-}
-
diff --git a/pidgin/plugins/crazychat/camproc.h b/pidgin/plugins/crazychat/camproc.h
deleted file mode 100644
index a006ff1c8f..0000000000
--- a/pidgin/plugins/crazychat/camproc.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * camproc.h
- * basecame
- *
- * Created by CS194 on Mon Apr 26 2004.
- * Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-
-
-//#pragma once
-
-#ifdef __APPLE_CC__
- #include <Carbon/Carbon.h>
-
-#else
- #include <Carbon.h>
-
-#endif
-
-#include "cc_interface.h"
-#include "filter.h"
-
-void Die(void);
-OSErr CamProc(struct input_instance *inst, filter_bank *bank);
-void QueryCam (void);
-
-
diff --git a/pidgin/plugins/crazychat/cc_features.c b/pidgin/plugins/crazychat/cc_features.c
deleted file mode 100644
index 0b8a800ca6..0000000000
--- a/pidgin/plugins/crazychat/cc_features.c
+++ /dev/null
@@ -1,504 +0,0 @@
-#include <assert.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "cc_interface.h"
-#include "crazychat.h"
-
-#include "Utilities.h"
-#include "QTUtilities.h"
-#include "camdata.h"
-#include "camproc.h"
-#include "util.h"
-#include <unistd.h>
-
-
-#ifdef __APPLE_CC__
-#include <Carbon/Carbon.h>
-#else
-#include <Carbon.h>
-#endif
-
-/* temporarily including for development testing */
-#include "cc_gtk_gl.h"
-
-/* hard coding the webcam dimensions: BAD, but we're not probing hardware yet */
-
-#define WEBCAM_X 644 /* webcam's x dim */
-#define WEBCAM_Y 480 /* webcam's y dim */
-
-/* default webcam timer callback delay */
-#define WEBCAM_CALLBACK_DELAY 40 /* in ms */
-
-int x_click, y_click;
-int mode_change=0;
-
-struct input_instance input_data;
-
-/* move this to input_instance eventually */
-/*
-UInt32 colorBuf[WEBCAM_Y][WEBCAM_X];
-*/
-unsigned int (*colorBuf)[640];
-int detection_mode=0;
-int draw_mode=0; //0=pixels, 1=face
-int easter_count;
-static void *kickstart(void *data);
-static void *facefind(void *data);
-
-/**
- * Resets the OpenGL viewport stuff on widget reconfiguration (resize,
- * reposition)
- * @param widget widget that got reconfigured
- * @param event the configuration event
- * @param data unused
- * @return TRUE ( i don't know what FALSE would do )
- */
-static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event,
- void *data);
-
-/**
- * Debug features test. Draws pixels directly to the frame buffer.
- * @param widget widget that we're drawing
- * @param event the draw event
- * @param data array of pixels
- * @return DUNNO
- */
-static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event,
- void *data);
-
-/**
- * Periodically querys the webcam for more data.
- * @param instance webcam input instance data
- * @return TRUE to stop other handler, FALSE to continue
- */
-static gboolean webcam_cb(struct input_instance *instance);
-
-/**
- * Init window code, adding our click callback.
- * @param widget the window we clicked in
- * @param instance webcam input instance data
- */
-static void init_cb(GtkWidget *widget, struct input_instance *instance);
-
-/**
- * Click callback
- * @param widget the window we clicked in
- * @param event the button click event structure
- * @param instance input instance data
- * @return TRUE to stop other handler, FALSE to continue
- */
-static gboolean click_cb(GtkWidget *widget, GdkEventButton *event,
- struct input_instance *instance);
-
-/**
- * Button callback
- * @param button the button we clicked on
- * @param instance input instance data
- */
-static void button_cb(GtkWidget *button, struct input_instance *instance);
-
-/**
- * Destroy callback. Called when the input processing window is destroyed.
- * @param widget the window we clicked in
- * @param cc crazychat global data structure
- */
-static void destroy_cb(GtkWidget *widget, struct crazychat *cc);
-
-/**
- * Set feature material.
- * @param entry model selector combo box entry
- * @param material pointer to material we're setting
- */
-static void material_set(GtkWidget *entry, guint8 *material);
-
-struct input_instance *init_input(struct crazychat *cc)
-{
-
- /*pthread_t userinput_t; // should we put this in a nicer wrapper?*/
- struct draw_info *info;
- struct input_instance *instance;
- info = (struct draw_info*)malloc(sizeof(*info));
- assert(info);
- memset(info, 0, sizeof(*info));
- info->timeout = TRUE;
- info->delay_ms = DEFAULT_FRAME_DELAY;
- info->data = &input_data;
- instance = (struct input_instance*)info->data;
- memset(instance, 0, sizeof(*instance));
- instance->output.features = &instance->face;
- EnterMovies();
- filter_bank *bank;
- bank = Filter_Initialize();
- assert(CamProc(instance, bank) == noErr); // change this prototype-> no windows
- instance->timer_id = g_timeout_add(WEBCAM_CALLBACK_DELAY,
- (GSourceFunc)webcam_cb, instance);
- /* THREAD_CREATE(&userinput_t, facefind, instance); // is this being created correctly?*/
- struct window_box ret;
- cc_new_gl_window(init_cb, config_wrapper, mydraw,
- info, &ret);
- instance->widget = ret.window;
- gtk_window_set_title(GTK_WINDOW(ret.window), "Local User");
- instance->box = ret.vbox;
- GtkWidget *label = gtk_label_new("Click your face");
- instance->label = label;
- gtk_box_pack_start(GTK_BOX(ret.vbox), label, FALSE, FALSE, 0);
- gtk_box_reorder_child(GTK_BOX(ret.vbox), label, 0);
- gtk_widget_show(label);
- GtkWidget *button = gtk_button_new_with_label("Confirm");
- gtk_box_pack_start(GTK_BOX(ret.vbox), button, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_cb),
- instance);
- instance->button = button;
- gtk_widget_show(button);
-
- GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
- gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show(hbox);
-
- GList *glist = NULL;
- glist = g_list_append(glist, "Dog");
- glist = g_list_append(glist, "Shark");
- instance->model = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(model_combo),
- // 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->model, TRUE, TRUE, 0);
- gtk_widget_show(instance->model);
-
- glist = NULL;
- glist = g_list_append(glist, "Red");
- glist = g_list_append(glist, "Dark Brown");
- glist = g_list_append(glist, "Light Brown");
- glist = g_list_append(glist, "White");
- glist = g_list_append(glist, "Green");
- glist = g_list_append(glist, "Black");
- instance->head = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(head_material_combo),
- // 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->head, TRUE, TRUE, 0);
- gtk_widget_show(instance->head);
-
- glist = NULL;
- glist = g_list_append(glist, "Red");
- glist = g_list_append(glist, "Dark Brown");
- glist = g_list_append(glist, "Light Brown");
- glist = g_list_append(glist, "White");
- glist = g_list_append(glist, "Green");
- glist = g_list_append(glist, "Black");
- instance->appendage = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(appendage_material_combo), 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->appendage,
- TRUE, TRUE, 0);
- gtk_widget_show(instance->appendage);
-
- hbox = gtk_hbox_new(TRUE, 0);
- gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show(hbox);
-
- glist = NULL;
- glist = g_list_append(glist, "Red");
- glist = g_list_append(glist, "Dark Brown");
- glist = g_list_append(glist, "Light Brown");
- glist = g_list_append(glist, "White");
- glist = g_list_append(glist, "Green");
- glist = g_list_append(glist, "Black");
- instance->lid = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(lids_material_combo), 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->lid, TRUE, TRUE, 0);
- gtk_widget_show(instance->lid);
-
- glist = NULL;
- glist = g_list_append(glist, "Red");
- glist = g_list_append(glist, "Dark Brown");
- glist = g_list_append(glist, "Light Brown");
- glist = g_list_append(glist, "White");
- glist = g_list_append(glist, "Green");
- glist = g_list_append(glist, "Black");
- instance->left_iris = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(left_iris_material_combo), 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->left_iris, TRUE, TRUE, 0);
- gtk_widget_show(instance->left_iris);
-
- /*
- glist = NULL;
- glist = g_list_append(glist, "Red");
- glist = g_list_append(glist, "Dark Brown");
- glist = g_list_append(glist, "Light Brown");
- glist = g_list_append(glist, "White");
- glist = g_list_append(glist, "Green");
- glist = g_list_append(glist, "Black");
- instance->right_iris = pidgin_text_combo_box_entry_new(NULL, glist);
- g_list_free(glist);
- //gtk_combo_box_set_column_span_column(GTK_COMBO(right_iris_material_combo), 10);
- gtk_box_pack_start(GTK_BOX(hbox), instance->right_iris, TRUE, TRUE, 0);
- gtk_widget_show(instance->right_iris);
-*/
- gtk_widget_add_events(ret.draw_area, GDK_BUTTON_PRESS_MASK);
- g_signal_connect(G_OBJECT(ret.draw_area), "button_press_event",
- G_CALLBACK(click_cb), instance);
- g_signal_connect(G_OBJECT(ret.window), "destroy",
- G_CALLBACK(destroy_cb), cc);
-// gtk_widget_set_size_request(window, 640, 480);
- gtk_window_set_default_size(GTK_WINDOW(ret.window),320,300);
-
-
- GdkGeometry hints;
- hints.max_width = 640;
- hints.max_height = 480;
-
- gtk_window_set_geometry_hints (GTK_WINDOW(ret.window),
- NULL,
- &hints,
- GDK_HINT_MAX_SIZE);
- gtk_widget_show(ret.window);
- return instance;
-}
-
-static gboolean webcam_cb(struct input_instance *instance)
-{
- assert(instance);
- QueryCam();
- return TRUE;
-}
-
-static void *facefind(void *data)
-{
- fprintf(stderr, "waiting\n");
- getchar();
- fprintf(stderr,"got you");
- detection_mode=1;
- return;
-}
-
-void destroy_input(struct input_instance *instance)
-{
- extern filter_bank *bank;
- assert(instance);
- Filter_Destroy(bank);
- g_source_remove(instance->timer_id);
- Die();
- ExitMovies();
-}
-
-static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event,
- void *data)
-{
-
-
- GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
-
- GLfloat w = widget->allocation.width;
- GLfloat h = widget->allocation.height;
- GLfloat aspect;
-
-// fprintf(stderr,"Homicide %f %f %d\n", w,h,draw_mode);
-
- if (draw_mode==1){
-// fprintf(stderr, "Bad place to be- actually not so bad\n");
- return configure(widget, event, data);
- }
-
- /*** OpenGL BEGIN ***/
- if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
- return FALSE;
-
-
-/* Undo all of the Model lighting here*/
-
-// glDisable(GL_LIGHTING);
- glDisable(GL_DEPTH_TEST);
-// glDisable(GL_CULL_FACE);
-// glDisable(GL_LIGHT0);
-// glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
-/* */
-
-
- glViewport(0,-(h/14),w*2,h*2);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(0,0,640,640);
- glRasterPos2i(0,0);
- glPixelZoom(-w/(1*640),(-h/(1*480)));
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
-
-
-
- gdk_gl_drawable_gl_end(gldrawable);
- /*** OpenGL END ***/
-
- return TRUE;
-}
-
-static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event,
- void *data)
-{
- GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);
- struct input_instance *instance = (struct input_instance*)data;
- unsigned int *boo;
- struct cc_features *features = &instance->face;
-
- char *string = gtk_entry_get_text(GTK_COMBO(instance->model)->entry);
- if (!strcmp(string, "Dog")) {
- features->kind = 0;
- } else if (!strcmp(string, "Shark")) {
- features->kind = 1;
- }
-
- material_set(GTK_ENTRY(GTK_COMBO(instance->head)->entry),
- &features->head_color);
- material_set(GTK_ENTRY(GTK_COMBO(instance->appendage)->entry),
- &features->appendage_color);
- material_set(GTK_ENTRY(GTK_COMBO(instance->lid)->entry),
- &features->lid_color);
- material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry),
- &features->left_iris_color);
- material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry),
- &features->right_iris_color);
-
- if (easter_count>0) {
- easter_count--;
- } else {
- instance->face.mode = 0;
- }
-
- if (mode_change>0){
- mode_change--;
- config_wrapper(widget, event, data);
- }
-
- if (draw_mode==1){
- instance->output.my_output=LOCAL;
- return draw(widget,event,&instance->output);
- }
-
-
- boo = (unsigned int*)colorBuf;
-
- assert(instance);
- assert(gtk_widget_is_gl_capable(widget));
-
- /*** OpenGL BEGIN ***/
-
- if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) {
- // fprintf(stderr, "We're fucked this time.\n");
- return FALSE;
- }
-
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- glDrawPixels(WEBCAM_X, WEBCAM_Y-70, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, boo);
-
- if (gdk_gl_drawable_is_double_buffered(gldrawable))
- gdk_gl_drawable_swap_buffers(gldrawable);
- else
- glFlush();
-
- gdk_gl_drawable_gl_end(gldrawable);
-
- /*** OpenGL END ***/
-
- return TRUE;
-}
-
-static void init_cb(GtkWidget *widget, struct input_instance *instance)
-{
- // setupDrawlists(LOCAL);
-// fprintf(stderr,"init_cb\n");
-}
-
-static gboolean click_cb(GtkWidget *widget, GdkEventButton *event,
- struct input_instance *instance)
-{
-
- GLfloat w = widget->allocation.width;
- GLfloat h = widget->allocation.height;
- GLfloat aspect;
-
- if (draw_mode==1) {
- switch (event->button) {
- case 1:
- Debug("F U!\n");
- instance->face.mode = 1;
- easter_count = 5;
- break;
- case 3:
- Debug("should never get here\n");
- instance->face.mode = 2;
- easter_count = 5;
- break;
- default:
- instance->face.mode = 0;
- break;
- }
- return FALSE;
- }
-
- x_click=(event->x*(640/w));
- x_click=640-x_click;
- y_click=(event->y-(h/14))*(480/(h-(h/14)));
- detection_mode=1;
- //Debug("@@@ x:%d y:%d\n", x_click, y_click);
-
- gtk_label_set_text(instance->label,
- "Put on the box, then press confirm.");
- if (x_click <= 10) x_click=10;
- if (x_click >= WEBCAM_X-10) x_click=WEBCAM_X-60;
- if (y_click <= 10) y_click=10;
- if (y_click >= WEBCAM_Y-10) y_click=WEBCAM_Y-60;
-
- return FALSE;
-}
-
-static void button_cb(GtkWidget *button, struct input_instance *instance)
-{
- if (!draw_mode) { /* transition to face mode */
- if (detection_mode == 0) { /* ignore confirm if no calibrate */
- return;
- }
- setupLighting(instance->widget);
- mode_change = 1;
- gtk_button_set_label(GTK_BUTTON(button), "Calibrate");
- gtk_label_set_label(instance->label,
- "If things get too crazy, click Calibrate.");
- } else { /* transition to calibration mode */
- gtk_label_set_label(instance->label, "Click your face");
- mode_change = 2;
- gtk_button_set_label(GTK_BUTTON(button), "Confirm");
- }
- draw_mode = !draw_mode;
-}
-
-static void destroy_cb(GtkWidget *widget, struct crazychat *cc)
-{
- cc->features_state = 0;
- destroy_input(cc->input_data);
- cc->input_data = NULL;
-}
-
-static void material_set(GtkWidget *entry, guint8 *material)
-{
- char *string = gtk_entry_get_text(GTK_ENTRY(entry));
- if (!strcmp(string, "Red")) {
- *material = 0;
- } else if (!strcmp(string, "Dark Brown")) {
- *material = 1;
- } else if (!strcmp(string, "Light Brown")) {
- *material = 2;
- } else if (!strcmp(string, "White")) {
- *material = 3;
- } else if (!strcmp(string, "Green")) {
- *material = 4;
- } else if (!strcmp(string, "Black")) {
- *material = 5;
- }
-}
diff --git a/pidgin/plugins/crazychat/cc_gtk_gl.c b/pidgin/plugins/crazychat/cc_gtk_gl.c
deleted file mode 100644
index 32e0c1b55d..0000000000
--- a/pidgin/plugins/crazychat/cc_gtk_gl.c
+++ /dev/null
@@ -1,288 +0,0 @@
-#include <assert.h>
-#include <stdio.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "cc_gtk_gl.h"
-#include "util.h"
-
-static GdkGLConfig *glconfig = NULL;
-
-/**
- * Resets the OpenGL viewport stuff on widget reconfiguration (resize,
- * reposition)
- * @param widget widget that got reconfigured
- * @param event the configuration event
- * @param data unused
- * @return FALSE to propagate other handlers
- */
-static gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event,
- void *data);
-
-/**
- * Maps the widget to the screen.
- * @param widget widget that got mapped
- * @param event the map event
- * @param data draw info struct
- * @return FALSE to propagate other handlers
- */
-static gboolean map_event(GtkWidget *widget, GdkEventAny *event, void *data);
-
-/**
- * Unmaps the widget from the screen.
- * @param widget widget that got unmapped
- * @param event the configuration event
- * @param data draw info struct
- * @return FALSE to propagate other handlers
- */
-static gboolean unmap_event(GtkWidget *widget, GdkEventAny *event, void *data);
-
-/**
- * Respond to widget visibility change.
- * @param widget widget whose visibility changed
- * @param event the visibility event
- * @param data draw info struct
- * @return FALSE to propagate other handlers
- */
-static gboolean visibility_notify_event(GtkWidget *widget,
- GdkEventVisibility *event, void *data);
-
-/**
- * Add a glib timer to periodically draw the widget.
- * @param widget widget we're drawing
- * @param info draw info struct
- */
-static void widget_draw_timer_add(GtkWidget *widget, struct draw_info *info);
-
-/**
- * Remove glib timer that was drawing this widget.
- * @param widget widget we're drawing
- * @param info draw info struct
- */
-static void widget_draw_timer_remove(GtkWidget *widget, struct draw_info *info);
-
-/**
- * Periodically invalidates gtk gl widget and tells GTK to redraw
- * @param widget widget we're drawing
- */
-static gboolean widget_draw_timer(GtkWidget *widget);
-
-/**
- * Cleanup widget stuff when it's getting destroyed.
- * @param widget widget that got destroyed
- * @param data draw info struct
- */
-static void destroy_event(GtkWidget *widget, struct draw_info *data);
-
-int cc_init_gtk_gl()
-{
- if (glconfig)
- return 0;
-
- /* configure OpenGL */
-
- glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
- GDK_GL_MODE_DEPTH |
- GDK_GL_MODE_DOUBLE);
-
- if (glconfig == NULL) {
- Debug("*** Cannot find the double-buffered visual.\n");
- Debug("*** Trying single-buffered visual.\n");
-
- /* Try single-buffered visual */
- glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB |
- GDK_GL_MODE_DEPTH);
- if (glconfig == NULL) {
- Debug("*** No appropriate OpenGL-capable visual "
- "found.\n");
- return 1;
- }
- }
-
- return 0;
-}
-
-void cc_new_gl_window(gl_init_func init, gl_config_func config,
- gl_draw_func draw, struct draw_info *data,
- struct window_box *ret)
-{
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *drawing_area;
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_container_set_reallocate_redraws(GTK_CONTAINER(window), TRUE);
-
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(window), vbox);
- gtk_widget_show(vbox);
-
- if (!data) {
- data = (struct draw_info*)malloc(sizeof(*data));
- assert(data);
- memset(data, 0, sizeof(*data));
- data->timeout = TRUE;
- data->delay_ms = DEFAULT_FRAME_DELAY;
- }
- drawing_area = cc_new_gl_area(init, config, draw, data);
- gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0);
- gtk_widget_show(drawing_area);
- ret->window = window;
- ret->vbox = vbox;
- ret->draw_area = drawing_area;
-}
-
-GtkWidget *cc_new_gl_area(gl_init_func init, gl_config_func config,
- gl_draw_func draw, struct draw_info *data)
-{
- GtkWidget *drawing_area;
-
- assert(data);
-
- drawing_area = gtk_drawing_area_new();
- assert(drawing_area);
-
- assert(gtk_widget_set_gl_capability(drawing_area, glconfig, NULL, FALSE,
- GDK_GL_RGBA_TYPE));
- gtk_widget_add_events (drawing_area, GDK_VISIBILITY_NOTIFY_MASK);
- if (init) {
- g_signal_connect_after(G_OBJECT(drawing_area), "realize",
- G_CALLBACK(init), data->data);
- }
- if (config) {
- g_signal_connect(G_OBJECT(drawing_area), "configure_event",
- G_CALLBACK(config), NULL);
- } else {
- g_signal_connect(G_OBJECT(drawing_area), "configure_event",
- G_CALLBACK(configure_event), NULL);
- }
- if (draw) {
- g_signal_connect(G_OBJECT(drawing_area), "expose_event",
- G_CALLBACK(draw), data->data);
- }
- g_signal_connect(G_OBJECT(drawing_area), "map_event",
- G_CALLBACK(map_event), data);
- g_signal_connect(G_OBJECT(drawing_area), "unmap_event",
- G_CALLBACK(unmap_event), data);
- g_signal_connect(G_OBJECT(drawing_area), "visibility_notify_event",
- G_CALLBACK(visibility_notify_event), data);
- g_signal_connect(G_OBJECT(drawing_area), "destroy",
- G_CALLBACK(destroy_event), data);
-
- return drawing_area;
-}
-
-
-static gboolean configure_event(GtkWidget *widget,
- GdkEventConfigure *event, void *data)
-{
- GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
-
- GLfloat w = widget->allocation.width;
- GLfloat h = widget->allocation.height;
- GLfloat aspect;
-
-// Debug("configuring\n");
-
- /*** OpenGL BEGIN ***/
- if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
- return FALSE;
-
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
-
- glLoadIdentity();
- if (w > h) {
- aspect = w / h;
- glFrustum(-aspect, aspect, -1.0, 1.0, 2.0, 60.0);
- } else {
- aspect = h / w;
- glFrustum(-1.0, 1.0, -aspect, aspect, 2.0, 60.0);
- }
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- gdk_gl_drawable_gl_end(gldrawable);
- /*** OpenGL END ***/
-
- return FALSE;
-}
-
-static int map_event(GtkWidget *widget, GdkEventAny *event, void *data)
-{
- struct draw_info *info = (struct draw_info*)data;
- Debug("map\n");
-
- if (info->timeout) {
- widget_draw_timer_add(widget, info);
- }
- return FALSE;
-}
-
-static int unmap_event(GtkWidget *widget, GdkEventAny *event, void *data)
-{
- struct draw_info *info = (struct draw_info*)data;
- Debug("unmap\n");
-
- if (info->timeout) {
- widget_draw_timer_remove(widget, info);
- }
- return FALSE;
-}
-
-static int visibility_notify_event(GtkWidget *widget, GdkEventVisibility *event,
- void *data)
-{
- struct draw_info *info = (struct draw_info*)data;
- Debug("visibility\n");
-
- if (event->state == GDK_VISIBILITY_FULLY_OBSCURED) {
- Debug("obscured\n");
- if (info->timeout) {
- widget_draw_timer_remove(widget, info);
- }
- } else {
- Debug("visible\n");
- if (info->timeout) {
- widget_draw_timer_add(widget, info);
- }
- }
- return FALSE;
-}
-
-static void widget_draw_timer_add(GtkWidget *widget, struct draw_info *info)
-{
- if (!info->timer_id) {
- info->timer_id = g_timeout_add(info->delay_ms,
- (GSourceFunc)widget_draw_timer, widget);
- }
-}
-
-static void widget_draw_timer_remove(GtkWidget *widget, struct draw_info *info)
-{
- if (info->timer_id) {
- g_source_remove(info->timer_id);
- info->timer_id = 0;
- }
-}
-
-static gboolean widget_draw_timer(GtkWidget *widget)
-{
- /* invalidate the window */
- gdk_window_invalidate_rect (widget->window, &widget->allocation, FALSE);
-
- /* tell gtk to update it _now_ */
- gdk_window_process_updates (widget->window, FALSE);
-
- return TRUE;
-}
-
-static void destroy_event(GtkWidget *widget, struct draw_info *data)
-{
- Debug("destroying widget\n");
-
- if (data) {
- widget_draw_timer_remove(widget, data);
- free(data);
- }
-}
diff --git a/pidgin/plugins/crazychat/cc_gtk_gl.h b/pidgin/plugins/crazychat/cc_gtk_gl.h
deleted file mode 100644
index 9f5d666caa..0000000000
--- a/pidgin/plugins/crazychat/cc_gtk_gl.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <gtk/gtk.h>
-#include <gtk/gtkgl.h>
-
-#define DEFAULT_FRAME_DELAY 40
-
-typedef void (gl_init_func) (GtkWidget *widget, void *data);
-typedef gboolean (*gl_config_func) (GtkWidget *widget, GdkEventConfigure *event,
- void *data);
-typedef gboolean (*gl_draw_func) (GtkWidget *widget, GdkEventExpose *event,
- void *data);
-
-struct draw_info {
- gboolean timeout; /* use/not use a timer callback */
- int timer_id; /* glib timer callback id */
- guint delay_ms; /* timer callback delay in ms */
- void *data; /* drawing data */
-};
-
-struct window_box {
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *draw_area;
-};
-
-/**
- * Initialize the gtkglext framework for all our widgets.
- * @return 0 on success, non-zero on failure
- */
-int cc_init_gtk_gl(void);
-
-/**
- * Create a new OpenGL enabled window
- * @param init the initialize callback function
- * @param draw the drawing callback function
- * @param data drawing metadata
- * @param ret struct with returned window and vbox
- */
-void cc_new_gl_window(gl_init_func init, gl_config_func config,
- gl_draw_func draw, struct draw_info *data,
- struct window_box *ret);
-
-/**
- * Create a new OpenGL enabled drawing area widget.
- * @param init the initialize callback function
- * @param draw the drawing callback function
- * @param data drawing metadata
- * @return the drawing widget
- */
-GtkWidget *cc_new_gl_area(gl_init_func init, gl_config_func config,
- gl_draw_func draw, struct draw_info *data);
diff --git a/pidgin/plugins/crazychat/cc_interface.h b/pidgin/plugins/crazychat/cc_interface.h
deleted file mode 100644
index fa44fee4d1..0000000000
--- a/pidgin/plugins/crazychat/cc_interface.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef __CC_INTERFACE_H__
-#define __CC_INTERFACE_H__
-
-#include <gtk/gtk.h>
-#include "crazychat.h"
-
-/* XXX feature encapsulation: still in flux, not stable XXX */
-
-//charlie
-typedef enum {REMOTE, LOCAL} OUTPUT;
-
-gboolean configure(GtkWidget *widget,
- GdkEventConfigure *event, void *data);
-
-#ifdef DISABLE_MODELS
-#define draw(a, b, c) 1
-#define setupDrawlists(a)
-#else
-gboolean draw(GtkWidget *widget, GdkEventExpose *event,
- void *data);
-
-void setupDrawlists(OUTPUT output);
-#endif
-
-void init (GtkWidget *widget, void *data);
-
-void setupLighting(GtkWidget *widget);
-
-struct cc_features {
- guint8 head_size;
- guint8 left_eye_open, right_eye_open; /*booleans*/
- guint8 mouth_open; /*percentage*/
- guint8 head_x_rot, head_y_rot, head_z_rot; /* head rotation */
- guint8 x, y; /*center of head*/
- guint8 head_color, appendage_color, lid_color, right_iris_color, left_iris_color; //colors
- guint8 mode, kind;
-};
-
-struct output_instance {
- struct cc_features *features;
- struct cc_session *session;
- float past_y;
- OUTPUT my_output;
- GtkWidget *widget;
- GtkWidget *box;
-};
-
-struct input_instance {
- int timer_id;
- struct cc_features face;
- GtkWidget *widget;
- GtkWidget *box;
- GtkWidget *button;
- GtkWidget *label;
- GtkWidget *model;
- GtkWidget *head, *appendage, *lid, *right_iris, *left_iris;
- struct output_instance output;
-};
-
-struct output_handlers {
- int (*configure)(GtkWidget *widget, GdkEventConfigure *event,
- void *data);
- void (*init) (GtkWidget *widget, void *data);
- gboolean (*draw) (GtkWidget *widget, GdkEventExpose *event, void *data);
-};
-
-struct cc_session {
- struct crazychat *cc; /**< crazychat global data */
- char *name; /**< session peer */
- guint32 peer_ip; /**< peer's ip addr, nbo */
- guint16 peer_port; /**< peer's port hbo */
- struct sockaddr_in peer; /**< peer udp sock addr */
- CC_STATE state; /**< connection state */
- int timer_id; /**< glib timer callback id */
- int tcp_sock; /**< tcp socket connection */
- int udp_sock; /**< udp socket connection */
- struct cc_features features; /**< network peer features */
- struct output_instance *output; /**< output instance data */
- filter_bank *filter; /**< filter instance */
-};
-
-struct crazychat {
- guint16 tcp_port; /**< tcp port to bind on */
- guint16 udp_port; /**< udp session data port */
- struct cc_session_node *sessions; /**< list of sessions */
- struct input_instance *input_data; /**< input instance data */
- gboolean features_state; /**< features state on/off */
-};
-
-/* --- input feature interface --- */
-
-#ifdef _DISABLE_QT_
-#define init_input(a) NULL
-#define destroy_input(a)
-#else
-
-/**
- * Initializes the input subsystem.
- * @param cc global crazychat data structure
- * @return pointer to an input instance
- */
-struct input_instance *init_input(struct crazychat *cc);
-
-/**
- * Destroys the input subsystem.
- * @param instance input instance
- */
-void destroy_input(struct input_instance *instance);
-
-#endif /* _DISABLE_QT_ */
-
-/* --- output feature interface --- */
-
-/**
- * Initializes an output instance.
- * @param features pointer to features
- * @param session pointer to the crazychat session
- * @return pointer to the output instance
- */
-struct output_instance *init_output(struct cc_features *features,
- struct cc_session *session);
-
-/**
- * Destroys an output instance.
- * @param instance output instance
- */
-void destroy_output(struct output_instance *instance);
-
-#endif
diff --git a/pidgin/plugins/crazychat/cc_network.c b/pidgin/plugins/crazychat/cc_network.c
deleted file mode 100644
index 45c30eab14..0000000000
--- a/pidgin/plugins/crazychat/cc_network.c
+++ /dev/null
@@ -1,540 +0,0 @@
-#include <assert.h>
-#include <errno.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#include "conversation.h"
-#include "network.h"
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include "cc_network.h"
-#include "cc_interface.h"
-#include "util.h"
-
-/* --- begin constant definitions --- */
-
-#define NETWORK_TIMEOUT_DELAY 40 /* in ms */
-#define MAX_ACCEPT_CHECKS 1000
-
-/* --- begin type declarations --- */
-
-struct accept_args {
- PurpleAccount *account;
- struct crazychat *cc;
- char *name;
- guint32 peer_ip;
- guint16 peer_port;
-};
-
-struct sock_accept_args {
- PurpleAccount *account;
- struct cc_session *session;
-};
-
-/* --- begin function prototypes --- */
-
-/**
- * Creates a server socket and sends a response to the peer.
- * @param account the purple account sending the ready msg
- * @param session the peer CrazyChat session
- */
-static void cc_net_send_ready(PurpleAccount *account, struct cc_session *session);
-
-/**
- * Handles responses from the CrazyChat session invite dialog box.
- * @param dialog the dialog box
- * @param response the dialog box button response
- * @param args account, crazychat global data, peer name
- */
-static void invite_handler(GtkDialog *dialog, gint response,
- struct accept_args *args);
-
-/**
- * Periodically checks the server socket for peer's connection. Gives up
- * after a set number of checks.
- * @param args peer session and account
- * @return TRUE to continue checking, FALSE to stop
- */
-static gboolean accept_cb(struct sock_accept_args *args);
-
-/**
- * Initialize CrazyChat network session. Sets up the UDP socket and port.
- * @param account the account the session is part of
- * @param session the CrazyChat network session
- */
-static void init_cc_net_session(PurpleAccount *account,
- struct cc_session *session);
-
-/**
- * Handles checking the network for new feature data and sending out the
- * latest features.
- * @param session the session we're checking for network traffic
- */
-static gboolean network_cb(struct cc_session *session);
-
-/**
- * Generates random bytes in the user specified byte buffer.
- * @param buf the byte buffer
- * @param len length of the byte buffer
- */
-static void generate_randomness(uint8_t buf[], unsigned int len);
-
-/**
- * Sends data over a socket.
- * @param s socket file descriptor
- * @param buf data buffer
- * @param len data buffer length
- * @return number of bytes sent or -1 if an error occurred
- */
-static int __send(int s, char *buf, int len);
-
-/* --- begin function definitions --- */
-
-void cc_net_send_invite(struct crazychat *cc, char *name, PurpleAccount *account)
-{
- struct cc_session *session;
- PurpleConversation *conv;
- PurpleIMConversation *im;
- char buf[BUFSIZ];
-
- session = cc_find_session(cc, name);
- if (session) return; /* already have a session with this guy */
- session = cc_add_session(cc, name);
- session->state = INVITE;
- conv = purple_conversations_find_with_account(name, account);
- if (!conv) {
- conv = purple_im_conversation_new(account, name);
- }
- im = purple_conversation_get_im_data(conv);
- snprintf(buf, BUFSIZ, "%s%s!%d", CRAZYCHAT_INVITE_CODE,
- purple_network_get_my_ip(-1), cc->tcp_port);
- Debug("Sent invite to %s for port: %d\n", name, cc->tcp_port);
- purple_im_conversation_send(im, buf);
-}
-
-void cc_net_recv_invite(PurpleAccount *account, struct crazychat *cc, char *name,
- const char *peer_ip, const char *peer_port)
-{
- struct cc_session *session;
- PurpleConversation *conv;
- PurpleConvWindow *convwin;
- char buf[BUFSIZ];
- struct accept_args *args;
-
- assert(cc);
- assert(name);
- Debug("Received a CrazyChat session invite from %s on port %s!\n",
- name, peer_port);
- session = cc_find_session(cc, name);
- if (!session) {
- Debug("Creating a CrazyChat session invite dialog box!\n");
- conv = purple_conversations_find_with_account(name, account);
- if (conv) convwin = purple_conversation_get_window(conv);
- else convwin = NULL;
- /* pop gtk window asking if want to accept */
- GtkWidget *dialog =
- gtk_dialog_new_with_buttons("CrazyChat Session Invite",
- GTK_WINDOW(convwin),
- GTK_DIALOG_MODAL |
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_REJECT,
- NULL);
- snprintf(buf, BUFSIZ, "Would you like to CRaZYchAT with %s?", name);
- GtkWidget *label = gtk_label_new(buf);
- gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->vbox),
- label);
- args = (struct accept_args*)malloc(sizeof(*args));
- args->account = account;
- args->cc = cc;
- args->name = strdup(name);
- assert(inet_aton(peer_ip, (struct in_addr*)&args->peer_ip));
- args->peer_port = atoi(peer_port);
-
- g_signal_connect(GTK_OBJECT(dialog), "response",
- G_CALLBACK(invite_handler), args);
-
- gtk_widget_show_all(dialog);
- }
-}
-
-void cc_net_recv_accept(PurpleAccount *account, struct crazychat *cc, char *name,
- const char *peer_ip)
-{
- struct cc_session *session;
- struct in_addr peer_addr;
-
- assert(cc);
- assert(name);
- Debug("Received a CrazyChat session accept!\n");
- session = cc_find_session(cc, name);
- if (session && session->state == INVITE) {
- session->state = ACCEPTED;
- assert(inet_aton(peer_ip, &peer_addr));
- session->peer_ip = peer_addr.s_addr;
- cc_net_send_ready(account, session);
- }
-}
-
-static void cc_net_send_ready(PurpleAccount *account, struct cc_session *session)
-{
- struct sock_accept_args *args;
-
- assert(session);
- Debug("Initializing the server socket and sending ready message\n");
- /* create the server socket */
- session->tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
- assert(session->tcp_sock != -1);
- int reuse = 1;
- assert(setsockopt(session->tcp_sock, SOL_SOCKET, SO_REUSEADDR,
- &reuse, sizeof(int)) != -1);
- struct sockaddr_in my_addr;
- my_addr.sin_family = AF_INET;
- my_addr.sin_port = htons(session->cc->tcp_port);
- assert(inet_aton(purple_network_get_my_ip(-1),
- &my_addr.sin_addr));
- memset(&my_addr.sin_zero, 0, sizeof(my_addr.sin_zero));
- assert(bind(session->tcp_sock, (struct sockaddr*)&my_addr,
- sizeof(my_addr)) != -1);
- Debug("Listening on port: %d\n", my_addr.sin_port);
- assert(listen(session->tcp_sock, 1) != -1);
-
- /* socket created, send the ready message */
- PurpleConversation *conv;
- PurpleIMConversation *im;
-
- conv = purple_conversations_find_with_account(session->name, account);
- if (!conv) {
- conv = purple_im_conversation_new(account,
- session->name);
- }
- im = purple_conversation_get_im_data(conv);
- purple_im_conversation_send(im, CRAZYCHAT_READY_CODE);
-
- /* register timer callback for checking socket connection */
- args = (struct sock_accept_args*)malloc(sizeof(*args));
- args->session = session;
- args->account = account;
- session->udp_sock = MAX_ACCEPT_CHECKS;
- session->timer_id = g_timeout_add(NETWORK_TIMEOUT_DELAY,
- (GSourceFunc)accept_cb, args);
-}
-
-void cc_net_recv_ready(PurpleAccount *account, struct crazychat *cc, char *name)
-{
- struct cc_session *session;
- struct sockaddr_in server_addr, my_addr;
- int sock;
-
- assert(cc);
- assert(name);
- Debug("Received a CrazyChat session ready!\n");
- session = cc_find_session(cc, name);
- if (session && session->state == ACCEPTED) {
- /* connect to peer */
- session->tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
- assert(session->tcp_sock != -1);
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = session->peer_port;
- server_addr.sin_addr.s_addr = session->peer_ip;
- memset(&(server_addr.sin_zero), 0,
- sizeof(server_addr.sin_zero));
- assert(connect(session->tcp_sock,
- (struct sockaddr*)&server_addr,
- sizeof(server_addr)) != -1);
- Debug("Connecting to peer on port %d\n", session->peer_port);
-
- /* now set state */
- session->state = CONNECTED;
- init_cc_net_session(account, session);
- }
-}
-
-static void invite_handler(GtkDialog *dialog, gint response, struct accept_args *args)
-{
- struct cc_session *session;
- char buf[BUFSIZ];
- PurpleConversation *conv;
- PurpleIMConversation *im;
-
- if (response == GTK_RESPONSE_ACCEPT) {
- assert(args);
- session = cc_find_session(args->cc, args->name);
- assert(!session);
- session = cc_add_session(args->cc, args->name);
- session->state = ACCEPTED;
- session->peer_ip = args->peer_ip;
- session->peer_port = args->peer_port;
- snprintf(buf, BUFSIZ, "%s%s", CRAZYCHAT_ACCEPT_CODE,
- purple_network_get_my_ip(-1));
- conv = purple_conversations_find_with_account(args->name,
- args->account);
- if (!conv) {
- conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
- args->account, args->name);
- }
- im = purple_conversation_get_im_data(conv);
- purple_im_conversation_send(im, buf);
- }
- free(args->name);
- free(args);
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-
-static gboolean accept_cb(struct sock_accept_args *args)
-{
- fd_set fds;
- struct timeval zero;
- int ret;
- PurpleAccount *account;
- struct cc_session *session;
-
- assert(args);
- account = args->account;
- session = args->session;
- assert(account);
- assert(session);
-
- /* set select to check on our tcp socket */
- FD_ZERO(&fds);
- FD_SET(session->tcp_sock, &fds);
- memset(&zero, 0, sizeof(zero));
-
- /* check socket */
- ret = select(session->tcp_sock+1,&fds, NULL, NULL, &zero);
- assert(ret != -1);
-
- if (ret) { /* got something to check */
- Debug("Checking pending connection\n");
- int sock;
- struct sockaddr_in client_addr;
- socklen_t sin_size;
-
- sin_size = sizeof(client_addr);
- sock = accept(session->tcp_sock,
- (struct sockaddr*)&client_addr, &sin_size);
- assert(sock != -1);
-
- /* check if it's a match */
- if (client_addr.sin_addr.s_addr == session->peer_ip) {
- /* cool, we're set */
- Debug("Accepted tcp connect from %s\n", session->name);
- close(session->tcp_sock);
- session->tcp_sock = sock;
- session->state = CONNECTED;
- session->timer_id = 0;
- init_cc_net_session(account, session);
- Debug("Will start sending to port %d\n",
- session->peer_port);
- free(args);
- return FALSE;
- }
- }
-
- session->udp_sock--;
-
- if (!session->udp_sock) { /* timed out */
- /* remove session from session list */
- cc_remove_session(session->cc, session);
- free(args);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void init_cc_net_session(PurpleAccount *account,
- struct cc_session *session)
-{
- struct sockaddr_in my_addr;
- struct sockaddr_in peer_addr;
- int reuse;
-
- /* send/obtain the udp port information */
-
- assert(__send(session->tcp_sock, (char*)&session->cc->udp_port,
- sizeof(session->cc->udp_port)) ==
- sizeof(session->cc->udp_port));
- assert(recv(session->tcp_sock, (char*)&session->peer_port,
- sizeof(session->peer_port), 0) ==
- sizeof(session->peer_port));
-
- Debug("Established a CrazyChat session with %s!\n", session->name);
-
- /* connect the udp sockets */
-
- session->udp_sock = socket(AF_INET, SOCK_DGRAM, 0);
-
- assert(!setsockopt(session->udp_sock, SOL_SOCKET, SO_REUSEADDR,
- &reuse, sizeof(reuse)));
-
- my_addr.sin_family = AF_INET;
- my_addr.sin_port = htons(session->cc->udp_port);
- assert(inet_aton(purple_network_get_my_ip(-1),
- &my_addr.sin_addr));
- memset(my_addr.sin_zero, 0, sizeof(my_addr.sin_zero));
- assert(!bind(session->udp_sock, (struct sockaddr*)&my_addr,
- sizeof(my_addr)));
- session->peer.sin_family = AF_INET;
- session->peer.sin_port = htons(session->peer_port);
- session->peer.sin_addr.s_addr = session->peer_ip;
- memset(&session->peer.sin_zero, 0, sizeof(session->peer.sin_zero));
-
- Debug("Bound udp sock to port %d, connecting to port %d\n",
- session->cc->udp_port, session->peer_port);
-
- memset(&session->features, 0, sizeof(session->features));
-
- session->output = init_output(&session->features, session);
-
- session->filter = Filter_Initialize();
-
- /* initialize timer callback */
- session->timer_id = g_timeout_add(NETWORK_TIMEOUT_DELAY,
- (GSourceFunc)network_cb, session);
-
- /* initialize input subsystem if not initialized */
- if (!session->cc->features_state) {
- session->cc->input_data = init_input(session->cc);
- session->cc->features_state = 1;
- }
-}
-
-static gboolean network_cb(struct cc_session *session)
-{
- fd_set fds;
- struct timeval zero;
- int ret;
- int command;
- struct cc_features *features;
-
- assert(session);
-
- Debug("Checking for data\n");
-
- /* set select to check on our tcp socket */
- FD_ZERO(&fds);
- FD_SET(session->tcp_sock, &fds);
- memset(&zero, 0, sizeof(zero));
-
- /* check tcp socket */
- ret = select(session->tcp_sock+1, &fds, NULL, NULL, &zero);
- assert(ret != -1);
-
- while (ret) {
- ret = recv(session->tcp_sock, &command, sizeof(command), 0);
- assert(ret != -1);
- if (!ret) {
- /* tcp connection closed, destroy connection */
- gtk_widget_destroy(session->output->widget);
- return FALSE;
- }
- assert(ret == sizeof(command));
-
- FD_ZERO(&fds);
- FD_SET(session->tcp_sock, &fds);
- ret = select(session->tcp_sock+1, &fds, NULL, NULL, &zero);
- assert(ret != -1);
- }
-
- /* set select to check on our udp socket */
- FD_ZERO(&fds);
- FD_SET(session->udp_sock, &fds);
- memset(&zero, 0, sizeof(zero));
-
- /* check udp socket */
- ret = select(session->udp_sock+1, &fds, NULL, NULL, &zero);
- assert(ret != -1);
-
- features = &session->features;
-
- while (ret) { /* have data, let's copy it for output */
- struct sockaddr_in from;
- int fromlen;
- ret = recvfrom(session->udp_sock, &session->features,
- sizeof(session->features),
- 0, (struct sockaddr*)&from, &fromlen);
- Debug("Received %d bytes from port %d\n", ret,
- ntohs(from.sin_port));
- filter(features, session->filter);
- Debug("\thead size: %d\n", features->head_size);
- Debug("\topen: left(%s), right(%s), mouth(%s)\n",
- features->left_eye_open ? "yes" : "no",
- features->right_eye_open ? "yes" : "no",
- features->mouth_open ? "yes" : "no");
- Debug("\thead rotation: x(%d), y(%d), z(%d)\n",
- features->head_x_rot, features->head_y_rot,
- features->head_z_rot);
- Debug("\tx(%d), y(%d)\n", features->x, features->y);
- if (ret == -1) {
- perror("wtf:");
- }
- assert(ret != -1);
-
- FD_ZERO(&fds);
- FD_SET(session->udp_sock, &fds);
- ret = select(session->udp_sock+1, &fds, NULL, NULL, &zero);
- assert(ret != -1);
- }
-
-#ifdef _DISABLE_QT_
- struct cc_features bogus;
- features = &bogus;
- generate_randomness((uint8_t*)features, sizeof(*features));
-#else
- features = &session->cc->input_data->face;
-#endif
- assert(sendto(session->udp_sock, (char*)features,
- sizeof(*features), 0, (struct sockaddr*)&session->peer,
- sizeof(session->peer)) == sizeof(*features));
- Debug("Sent %d bytes\n", sizeof(*features));
- Debug("\thead size: %d\n", features->head_size);
- Debug("\topen: left(%s), right(%s), mouth(%s)\n",
- features->left_eye_open ? "yes" : "no",
- features->right_eye_open ? "yes" : "no",
- features->mouth_open ? "yes" : "no");
- Debug("\thead rotation: x(%d), y(%d), z(%d)\n",
- features->head_x_rot, features->head_y_rot,
- features->head_z_rot);
- Debug("\tx(%d), y(%d)\n", features->x, features->y);
-
- /* clear easter egg */
- features->mode = 0;
-
- return TRUE;
-}
-
-static void generate_randomness(uint8_t buf[], unsigned int len)
-{
- int fd;
-
- fd = open("/dev/random", O_RDONLY);
- assert(fd != -1);
-
- assert(read(fd, buf, len) == len);
- close(fd);
-}
-
-static int __send(int s, char *buf, int len)
-{
- int total = 0; /* how many bytes we've sent */
- int bytesleft = len; /* how many we have left to send */
- int n;
-
- while (total < len) {
- n = send(s, buf + total, bytesleft, 0);
- if (n == -1) {
- Debug("ERROR: %s\n", g_strerror(errno));
- return -1;
- }
- total += n;
- bytesleft -= n;
- }
-
- return total;
-}
diff --git a/pidgin/plugins/crazychat/cc_network.h b/pidgin/plugins/crazychat/cc_network.h
deleted file mode 100644
index 9282f4f0d2..0000000000
--- a/pidgin/plugins/crazychat/cc_network.h
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef __CC_NETWORK_H__
-#define __CC_NETWORK_H__
-
-#include "account.h"
-#include "conversation.h"
-#include "crazychat.h"
-
-/* --- begin constant definition --- */
-
-#define DEFAULT_CC_PORT 6543
-
-#define CRAZYCHAT_INVITE_CODE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \
- "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
-#define CRAZYCHAT_ACCEPT_CODE "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
- "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
- "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
- "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
- "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \
- "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
-#define CRAZYCHAT_READY_CODE "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \
- "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \
- "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \
- "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \
- "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \
- "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
-
-/* --- begin function declarations --- */
-
-/**
- * Creates a new CrazyChat session if one doesn't exist and sends the invite.
- * @param cc global crazychat data structure
- * @param name the peer name
- * @param account the purple account
- */
-void cc_net_send_invite(struct crazychat *cc, char *name, PurpleAccount *account);
-
-/**
- * Pops up the CrazyChat invitation accept window if a CrazyChat session does
- * not exist yet for this peer.
- * @param account purple account
- * @param cc global crazychat data structure
- * @param name the peer name
- * @param peer_ip the peer's ip address
- * @param peer_port the peer's tcp port
- */
-void cc_net_recv_invite(PurpleAccount *account, struct crazychat *cc, char *name,
- const char *peer_ip, const char *peer_port);
-
-/**
- * Accepts the CrazyChat invitation and sends the response.
- * @param session the CrazyChat session
- */
-void cc_net_send_accept(struct cc_session *session);
-
-/**
- * Receives a CrazyChat accept message, and if appropriate, creates a server
- * socket and sends the ready message.
- * @param account the purple account which received the message
- * @param cc global crazychat data structure
- * @param name the peer name
- * @param peer_ip the peer's ip address
- */
-void cc_net_recv_accept(PurpleAccount *account, struct crazychat *cc, char *name,
- const char *peer_ip);
-
-/**
- * Receives a CrazyChat ready message, and if appropriate, connects to peer
- * @param account the purple account which received the message
- * @param cc global crazychat data structure
- * @param name the peer name
- */
-void cc_net_recv_ready(PurpleAccount *account, struct crazychat *cc, char *name);
-
-#endif
diff --git a/pidgin/plugins/crazychat/cc_output.c b/pidgin/plugins/crazychat/cc_output.c
deleted file mode 100644
index 86bc66bd6b..0000000000
--- a/pidgin/plugins/crazychat/cc_output.c
+++ /dev/null
@@ -1,353 +0,0 @@
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <math.h>
-/*#include "util.h"*/
-#include "cc_interface.h"
-#include "crazychat.h"
-#include <stdio.h>
-
-#include "cc_gtk_gl.h"
-
-#include "face.h"
-#include "glm.h"
-
-
-#define TAN_30 0.577
-#define ROOT_3 1.73
-//this will be the width of all heads
-#define HEAD_WIDTH 2.5
-#define HEAD_HEIGHT 2.5 //same for now, this will actually vary from head
-#define PERSONS_HEAD 1
-#define MOVEMENT .33
-
-GLfloat ambient[] = {1.0, 1.0, 1.0, 1.0};
-GLfloat diffuse[] = {.7, .7, .7, 1};
-GLfloat specular[] = {1, 1, 1, 1};
-GLfloat lightpos[] = {0.0, 0.0, 20, 1};
-GLfloat specref[] = {1.0, 1, 1, 1,};
-
-GLfloat xrot, yrot, zrot;
-GLfloat x, y, z, mouth_open;
-GLint left_eye_frame, right_eye_frame; //between 0 - 8
-GLint mouth_type;
-GLint mouth_frame;
-DIRECTION dir;
-BOOL left_open, right_open;
-GLfloat window_aspect;
-
-FACE remote_shark_face, remote_dog_face, local_shark_face, local_dog_face;
-int count = 0;
-int curr_materials[DOG_SHARK_CHANGE]; //these are the materials from output_instance
-OUTPUT_MODE curr_mode;
-KIND which_face;
-
-static void destroy_cb(GtkWidget *widget, struct output_instance *data);
-
-void Interpolate(struct output_instance* instance){
- GLfloat rangeX, rangeY, minZ, adj, angle, temp;
- count++;
-/* yrot=90;
- zrot=0;
- z=5;
- x=0;
- y=0;
- left_open = right_open = TRUE;
- mouth_open = (float)(count%10)/10;
- dir = CONST;
- curr_mode = NORMAL;
- return;
-*/
-
- //find z plane from percentage of face
- if(instance->features->head_size==0){
- z = 5;
- }
-
- temp = (GLfloat)instance->features->head_size/40.0;
- //printf("head size %d\n", instance->features->head_size);
-
- minZ = ROOT_3;
- z = ROOT_3*(PERSONS_HEAD/temp);
- if(z < minZ)
- z = minZ;
-
- //these calculations are based on a 90 degree viewing angle
- rangeX = z*(TAN_30)*2;
- rangeY = window_aspect*rangeX;
- temp = (GLfloat)instance->features->x;
- if(temp>50) { //then its on the left
- temp = (temp - 50.0)/50.0;
- x = 0 - temp*rangeX/1.0;
- }
- else {
- temp = (50.0-temp)/50.0;
- x = 0 + temp*rangeX/1.0;
- }
-
- temp = (GLfloat)instance->features->y;
-
- if(temp>50){
- temp = (temp-50.0)/50.0;
- y = 0 - temp*rangeY/1.0;
- }
- else {
- temp = (50.0-temp)/50.0;
- y = 0 + temp*rangeY/1.0;
- }
-
- temp = (GLfloat)instance->features->head_y_rot;
- yrot = temp - 50;
- temp = (GLfloat)instance->features->head_z_rot;
- zrot = temp-50;
-
- if(y-instance->past_y < -MOVEMENT)
- dir = DOWN;
- else if(y-instance->past_y > MOVEMENT)
- dir = UP;
- else
- dir = CONST;
- instance->past_y=y;
-
- mouth_open = (float)instance->features->mouth_open/105;
- count++;
- //mouth_open = (count%10)/(10);
-
- if(instance->features->left_eye_open==0){
- left_open = FALSE;
- }
- else{
- left_open = TRUE;
- }
-
- if(instance->features->right_eye_open==0)
- right_open = FALSE;
- else
- right_open = TRUE;
- //right_open =1 - (count%5)/4;
-
- //set the materials
- curr_materials[APPENDAGE]=instance->features->appendage_color;
- curr_materials[HEAD]=instance->features->head_color;
- curr_materials[LIDS]=instance->features->lid_color;
- curr_materials[LEFT_IRIS]=instance->features->left_iris_color;
- curr_materials[RIGHT_IRIS]=instance->features->right_iris_color;
- // we don't get an x rotation
- xrot = 0;
- curr_mode=instance->features->mode;
- if(instance->features->kind==0)
- which_face=DOG;
- else
- which_face=SHARK;
-
-}
-
-
-
-gboolean configure(GtkWidget *widget,
- GdkEventConfigure *event, void *data)
-{
- GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
-
- GLfloat w = widget->allocation.width;
- GLfloat h = widget->allocation.height;
- GLfloat aspect;
-
- Debug("configuring\n");
-
-
- /*** OpenGL BEGIN ***/
- if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
- return FALSE;
-
- glEnable(GL_DEPTH_TEST);
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- if (w > h) {
- window_aspect = w / h;
- } else {
- window_aspect = h / w;
- }
-
- //glOrtho(-10, 10, -10,10, 0.0001, 1000);
- gluPerspective(90.0, window_aspect, 0.0001, 1000.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- gdk_gl_drawable_gl_end(gldrawable);
- /*** OpenGL END ***/
-
- return TRUE;
-}
-
-gboolean draw(GtkWidget *widget, GdkEventExpose *event,
- void *data)
-{
- struct output_instance *instance = (struct output_instance*)data;
- if(!data) {
- fprintf(stderr,"null\n");
- }
- assert(instance);
- Interpolate(instance);
-
- GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
- GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);
-
- //return TRUE;
-
- assert(gtk_widget_is_gl_capable(widget));
-
- if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) {
- fprintf(stderr, "We're fucked this time.\n");
- return FALSE;
- }
-
-
- glClearColor(1.0, 1.0, 1.0, 0.0);
- //glDisable(GL_CULL_FACE);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glColor3f(1.0, 1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glTranslatef(x, y, -z);
- if(instance->my_output==LOCAL){
- if(which_face==DOG){
- change_materials(local_dog_face, curr_materials, DOG_SHARK_CHANGE);
- draw_face(local_dog_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode);
- }
- else {
- change_materials(local_shark_face, curr_materials, DOG_SHARK_CHANGE);
- draw_face(local_shark_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode);
- }
- }
- else{
- if(which_face==DOG){
- change_materials(remote_dog_face, curr_materials, DOG_SHARK_CHANGE);
- draw_face(remote_dog_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode);
- }
- else{
- change_materials(remote_shark_face, curr_materials, DOG_SHARK_CHANGE);
- draw_face(remote_shark_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode);
- }
- }
- if (gdk_gl_drawable_is_double_buffered (gldrawable))
- gdk_gl_drawable_swap_buffers (gldrawable);
- else
- glFlush ();
- return TRUE;
-}
-
-void init (GtkWidget *widget, void *data)
-{
- setupDrawlists(REMOTE);
- setupLighting(widget);
-}
-
-
-void setupDrawlists(OUTPUT output)
-{
- if(output==REMOTE){
- remote_shark_face = init_face(SHARK);
- remote_dog_face = init_face(DOG);
- }
- if(output==LOCAL){
- local_shark_face = init_face(SHARK);
- local_dog_face = init_face(DOG);
- }
-}
-
-
-void setupLighting(GtkWidget *widget)
-{
-
- GLfloat w = widget->allocation.width;
- GLfloat h = widget->allocation.height;
- glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- //glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
- glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
- glEnable(GL_LIGHT0);
- //glEnable(GL_COLOR_MATERIAL);
- //glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);
- glMateriali(GL_FRONT, GL_SHININESS, 128);
-
- //glEnable(GL_CULL_FACE);
-
- glClear(GL_COLOR_BUFFER_BIT);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- //glOrtho(-2, 2, -2, 2, 0.0001, 1000);
-
- if (w > h) {
- window_aspect = w / h;
- } else {
- window_aspect = h / w;
- }
-
- gluPerspective(90.0, window_aspect, 0.0001, 1000.0);
- //glFrustum(-100.0, 100.0, -100.0, 100.0, 0, 10);
- glMatrixMode(GL_MODELVIEW);
- //gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
-}
-
-struct output_instance *init_output(struct cc_features *features,
- struct cc_session *session)
-{
- struct draw_info *info;
- struct output_instance *instance;
- struct window_box ret;
-
- instance = (struct output_instance*)malloc(sizeof(*instance));
- assert(instance);
- memset(instance, 0, sizeof(*instance));
- instance->features = features;
- instance->session = session;
-
- info = (struct draw_info*)malloc(sizeof(*info));
- memset(info, 0, sizeof(*info));
- info->timeout = TRUE;
- info->delay_ms = 40;
- info->data = instance;
-
-
- cc_new_gl_window(init, configure, draw, info, &ret);
- g_signal_connect(GTK_OBJECT(ret.window), "destroy",
- G_CALLBACK(destroy_cb), instance);
- gtk_window_set_default_size(ret.window,640,480);
- if (session) {
- gtk_window_set_title(ret.window, session->name);
- }
- gtk_widget_show(ret.window);
- instance->widget = ret.window;
- instance->box = ret.vbox;
- return instance;
-}
-
-static void destroy_cb(GtkWidget *widget, struct output_instance *data)
-{
- Debug("Closing output window\n");
- if (data->session) {
- cc_remove_session(data->session->cc, data->session);
- close(data->session->tcp_sock);
- close(data->session->udp_sock);
- Filter_Destroy(data->session->filter);
- destroy_output(data->session->output);
- }
-}
-
-void destroy_output(struct output_instance *instance)
-{
- free(instance);
-}
diff --git a/pidgin/plugins/crazychat/cc_pidgin_plugin.c b/pidgin/plugins/crazychat/cc_pidgin_plugin.c
deleted file mode 100644
index cda55cb70c..0000000000
--- a/pidgin/plugins/crazychat/cc_pidgin_plugin.c
+++ /dev/null
@@ -1,484 +0,0 @@
-#include <stdio.h>
-#include <assert.h>
-
-#include "internal.h"
-#include "plugins.h"
-#include "gtkplugin.h"
-#include "gtkblist.h"
-#include "gtkutils.h"
-#include "connection.h"
-#include "conversation.h"
-#include "network.h"
-
-#include <gtk/gtkgl.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#include "crazychat.h"
-#include "cc_network.h"
-#include "cc_interface.h"
-#include "cc_gtk_gl.h"
-#include "util.h"
-
-/* --- begin type and global variable definitions --- */
-
-static struct crazychat cc_info;
-
-/* --- begin function declarations --- */
-
-/**
- * Called by purple plugin to start CrazyChat
- * @param cc the crazychat struct
- */
-static void cc_init(struct crazychat *cc);
-
-/**
- * Called by purple plugin to destroy CrazyChat
- * @param cc the crazychat struct
- */
-static void cc_destroy(struct crazychat *cc);
-
-
-/**
- * Buddy menu drawing callback. Adds a CrazyChat menuitem.
- * @param menu the buddy menu widget
- * @param b the buddy whose menu this is
- */
-static gboolean cc_buddy_menu(GtkWidget *menu, PurpleBuddy *b);
-
-/**
- * Buddy menu callback. Initiates the CrazyChat session.
- * @param item the gtk buddy menu item
- * @param b the buddy whose menu the item was in
- */
-static void cc_menu_cb(GtkMenuItem *item, PurpleBuddy *b);
-
-/**
- * IM callback. Handles receiving a CrazyChat session request.
- * @param account the account we received the IM on
- * @param sender the buddy who we received the message from
- * @param message the message we received
- * @param flags IM flags
- * @param data user data
- */
-static gboolean receive_im_cb(PurpleAccount *account, char **sender,
- char **message, int *flags, void *data);
-
-/**
- * Displaying IM callback. Drops CrazyChat messages from IM window.
- * @param account the account we are displaying the IM on
- * @param conv the conversation we are displaying the IM on
- * @param message the message we are displaying
- * @param data user data
- */
-static gboolean display_im_cb(PurpleConversation *conv, PurpleMessage *pmsg, gpointer data);
-
-/**
- * Callback for CrazyChat plugin configuration frame
- * @param plugin the plugin data
- * @return the configuration frame
- */
-static GtkWidget *get_config_frame(PurplePlugin *plugin);
-
-/**
- * TCP port callback. Changes the port used to listen for new CC sessions
- * @param spin the spinner button whose value changed
- * @param data user data
- */
-static void tcp_port_cb(GtkSpinButton *spin, struct crazychat *cc);
-
-/**
- * UDP port callback. Changes the port used to send/recv CC session frames
- * @param spin the spinner button whose value changed
- * @param data user data
- */
-static void udp_port_cb(GtkSpinButton *spin, struct crazychat *cc);
-
-/**
- * Features enabling/disabling callback. Initializes the input processing
- * or shuts it down.
- * @param data user data
- */
-static void features_enable_cb(struct crazychat *cc);
-
-/**
- * User signed on callback. Now we have a buddy list to connect a signal
- * handler to.
- * @param gc the purple connection we are signed on
- * @param plugin our plugin struct
- */
-static gboolean cc_signed_on(PurpleConnection *gc, void *plugin);
-
-/**
- * Plugin loading callback. If a buddy list exists, connect our buddy menu
- * drawing callback to the signal handler, otherwise, connect a signed on
- * signal handler so we know when we get a buddy list.
- * @param plugin our plugin struct
- */
-static gboolean plugin_load(PurplePlugin *plugin);
-
-/**
- * Plugin unloading callback. Disconnect all handlers and free data.
- * @param plugin our plugin struct
- */
-static gboolean plugin_unload(PurplePlugin *plugin);
-
-
-/* --- end function declarations --- */
-
-
-#define CRAZYCHAT_PLUGIN_ID "gtk-crazychat"
-
-static PidginPluginUiInfo ui_info = {
- get_config_frame /**< get_config_frame */
-};
-
-static PurplePluginInfo info = {
- 2, /**< api_version */
- PURPLE_PLUGIN_STANDARD, /**< type */
- PIDGIN_PLUGIN_TYPE, /**< ui_requirement */
- 0, /**< flags */
- NULL, /**< dependencies */
- PURPLE_PRIORITY_DEFAULT, /**< priority */
-
- CRAZYCHAT_PLUGIN_ID, /**< id */
- N_("Crazychat"), /**< name */
- DISPLAY_VERSION, /**< version */
- /** summary */
- N_("Plugin to establish a Crazychat session."),
- /** description */
- N_("Uses Purple to obtain buddy ips to connect for a Crazychat session"),
- "\n"
- "William Chan <chanman@stanford.edu>\n"
- "Ian Spiro <ispiro@stanford.edu>\n"
- "Charlie Stockman<stockman@stanford.edu>\n"
- "Steve Yelderman<scy@stanford.edu>", /**< author */
- PURPLE_WEBSITE, /**< homepage */
-
- plugin_load, /**< load */
- plugin_unload, /**< unload */
- NULL, /**< destroy */
-
- &ui_info, /**< ui_info */
- &cc_info /**< extra_info */
-};
-
-/* --- end plugin struct definition --- */
-
-static void cc_init(struct crazychat *cc)
-{
- /* initialize main crazychat thread */
-
- assert(cc);
- memset(cc, 0, sizeof(*cc));
-
- /* initialize network configuration */
- cc->tcp_port = DEFAULT_CC_PORT;
- cc->udp_port = DEFAULT_CC_PORT;
-
- /* disable input subsystem */
- //cc->features_state = 0;
-
- /* initialize input subsystem */
- cc->features_state = 1;
- cc->input_data = init_input(cc);
-}
-
-static void cc_destroy(struct crazychat *cc)
-{
- assert(cc);
-
- if (cc->features_state) {
- destroy_input(cc->input_data);
- }
- memset(cc, 0, sizeof(*cc));
-}
-
-static gboolean cc_buddy_menu(GtkWidget *menu, PurpleBuddy *b)
-{
- GtkWidget *menuitem;
-
- menuitem = gtk_menu_item_new_with_mnemonic("CrazyChat");
- g_signal_connect(G_OBJECT(menuitem), "activate",
- G_CALLBACK(cc_menu_cb), b);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
- return FALSE;
-}
-
-static void cc_menu_cb(GtkMenuItem *item, PurpleBuddy *b)
-{
- assert(item);
- assert(b);
-
- /* send the invite */
- cc_net_send_invite(&cc_info, b->name, b->account);
-}
-
-static gboolean receive_im_cb(PurpleAccount *account, char **sender,
- char **message, int *flags, void *data)
-{
- struct crazychat *cc;
-
- cc = (struct crazychat*)data;
- assert(cc);
- if (!strncmp(*message, CRAZYCHAT_INVITE_CODE,
- strlen(CRAZYCHAT_INVITE_CODE))) {
- Debug(*message);
- char *split = strchr(*message, '!');
- assert(split);
- *split = 0;
- split++;
- cc_net_recv_invite(account, cc, *sender,
- &(*message)[strlen(CRAZYCHAT_INVITE_CODE)],
- split);
- return TRUE;
- } else if (!strncmp(*message, CRAZYCHAT_ACCEPT_CODE,
- strlen(CRAZYCHAT_ACCEPT_CODE))) {
- cc_net_recv_accept(account, cc, *sender,
- &(*message)[strlen(CRAZYCHAT_ACCEPT_CODE)]);
- return TRUE;
- } else if (!strncmp(*message, CRAZYCHAT_READY_CODE,
- strlen(CRAZYCHAT_READY_CODE))) {
- cc_net_recv_ready(account, cc, *sender);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-display_im_cb(PurpleConversation *conv, PurpleMessage *pmsg, gpointer data);
-{
- struct crazychat *cc;
-
- cc = (struct crazychat*)data;
- assert(cc);
- if (!strncmp(*message, CRAZYCHAT_INVITE_CODE,
- strlen(CRAZYCHAT_INVITE_CODE))) {
- return TRUE;
- } else if (!strncmp(*message, CRAZYCHAT_ACCEPT_CODE,
- strlen(CRAZYCHAT_ACCEPT_CODE))) {
- return TRUE;
- } else if (!strncmp(*message, CRAZYCHAT_READY_CODE,
- strlen(CRAZYCHAT_READY_CODE))) {
- return TRUE;
- }
-
- return FALSE;
-}
-
-static GtkWidget *get_config_frame(PurplePlugin *plugin)
-{
- GtkWidget *ret;
- GtkWidget *frame;
- GtkWidget *vbox, *hbox;
- GtkWidget *drawing_area;
- GtkWidget *label;
- GtkAdjustment *adj;
- GtkWidget *spinner;
- GtkWidget *button, *button1, *button2;
- GSList *group;
- struct draw_info *info;
- struct crazychat *cc;
-
- cc = (struct crazychat*)plugin->info->extra_info;
- assert(cc);
-
- /* create widgets */
-
- /* creating the config frame */
- ret = gtk_vbox_new(FALSE, 18);
- gtk_container_set_border_width(GTK_CONTAINER(ret), 12);
-
- /* make the network configuration frame */
- frame = pidgin_make_frame(ret, _("Network Configuration"));
- gtk_widget_show(frame);
-
- /* add boxes for packing purposes */
- vbox = gtk_vbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(frame), vbox, TRUE, TRUE, 0);
- gtk_widget_show(vbox);
-
- /* add widgets to row 1 */
- hbox = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show(hbox);
- label = gtk_label_new(_("TCP port"));
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);
- gtk_widget_show(label);
- adj = (GtkAdjustment*)gtk_adjustment_new(DEFAULT_CC_PORT, 1,
- G_MAXUSHORT, 1, 1000, 0);
- spinner = gtk_spin_button_new(adj, 1, 0);
- g_signal_connect(G_OBJECT(spinner), "value_changed",
- G_CALLBACK(tcp_port_cb), cc);
- gtk_box_pack_start(GTK_BOX(hbox), spinner, FALSE, FALSE, 0);
- gtk_widget_show(spinner);
- label = gtk_label_new(_("UDP port"));
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);
- gtk_widget_show(label);
- adj = (GtkAdjustment*)gtk_adjustment_new(DEFAULT_CC_PORT, 1,
- G_MAXUSHORT, 1, 1000, 0);
- spinner = gtk_spin_button_new(adj, 1, 0);
- g_signal_connect(G_OBJECT(spinner), "value_changed",
- G_CALLBACK(udp_port_cb), cc);
- gtk_box_pack_start(GTK_BOX(hbox), spinner, FALSE, FALSE, 0);
- gtk_widget_show(spinner);
-
- /* make the feature configuration frame */
- frame = pidgin_make_frame(ret, _("Feature Calibration"));
- gtk_widget_show(frame);
-
- /* add hbox for packing purposes */
- hbox = gtk_hbox_new(TRUE, 40);
- gtk_box_pack_start(GTK_BOX(frame), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- /* add feature calibration options */
-
- /* add vbox for packing purposes */
- vbox = gtk_vbox_new(TRUE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
- gtk_widget_show(vbox);
-
- /* add enabled / disabled */
- button1 = gtk_radio_button_new_with_label(NULL, _("Enabled"));
- gtk_box_pack_start(GTK_BOX(vbox), button1, TRUE, TRUE, 0);
- gtk_widget_show(button1);
-
- group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button1));
- button2 = gtk_radio_button_new_with_label(group, _("Disabled"));
- gtk_box_pack_start(GTK_BOX(vbox), button2, TRUE, TRUE, 0);
- gtk_widget_show(button2);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button1),
- cc->features_state);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button2),
- !cc->features_state);
- g_signal_connect_swapped(G_OBJECT(button1), "toggled",
- G_CALLBACK(features_enable_cb), cc);
-
- /* add vbox for packing purposes */
- vbox = gtk_vbox_new(TRUE, 0);
- gtk_box_pack_end(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
- gtk_widget_show(vbox);
-
- /* add calibrate button */
- button = gtk_button_new_with_label("Calibrate");
- gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0);
- gtk_widget_show(button);
-
- gtk_widget_show(ret);
-
- return ret;
-}
-
-static void tcp_port_cb(GtkSpinButton *spin, struct crazychat *cc)
-{
- assert(spin);
- assert(cc);
- cc->tcp_port = gtk_spin_button_get_value_as_int(spin);
- Debug("New tcp port: %d\n", cc->tcp_port);
-}
-
-static void udp_port_cb(GtkSpinButton *spin, struct crazychat *cc)
-{
- assert(spin);
- assert(cc);
- cc->udp_port = gtk_spin_button_get_value_as_int(spin);
- Debug("New udp port: %d\n", cc->udp_port);
-}
-
-static void features_enable_cb(struct crazychat *cc)
-{
- Debug("Changing features state\n");
- cc->features_state = !cc->features_state;
- if (cc->features_state) {
- cc->input_data = init_input(cc);
- } else {
- if (cc->input_data) {
- gtk_widget_destroy(cc->input_data->widget);
- }
- }
-}
-
-static gboolean cc_signed_on(PurpleConnection *gc, void *plugin)
-{
- struct crazychat *extra;
- void *conv_handle;
-
- assert(plugin);
- extra = (struct crazychat*)((PurplePlugin*)plugin)->info->extra_info;
- purple_signal_disconnect
- (purple_connections_get_handle(), "signed-on",
- plugin, PURPLE_CALLBACK(cc_signed_on));
- purple_signal_connect(PIDGIN_BLIST
- (purple_blist_get_buddy_list()),
- "drawing-menu", plugin,
- PURPLE_CALLBACK(cc_buddy_menu), NULL);
- conv_handle = purple_conversations_get_handle();
- purple_signal_connect(conv_handle, "received-im-msg", plugin,
- PURPLE_CALLBACK(receive_im_cb), extra);
- purple_signal_connect(conv_handle, "displaying-im-msg", plugin,
- PURPLE_CALLBACK(display_im_cb), extra);
- return FALSE;
-}
-
-static gboolean plugin_load(PurplePlugin *plugin)
-{
- PurpleBuddyList *buddy_list;
- void *conv_handle;
-
- if (cc_init_gtk_gl())
- return FALSE;
-
- cc_init(&cc_info);
- buddy_list = purple_blist_get_buddy_list();
- if (buddy_list) {
- purple_signal_connect(PIDGIN_BLIST
- (buddy_list),
- "drawing-menu", plugin,
- PURPLE_CALLBACK(cc_buddy_menu), NULL);
- conv_handle = purple_conversations_get_handle();
- purple_signal_connect(conv_handle, "received-im-msg", plugin,
- PURPLE_CALLBACK(receive_im_cb), &cc_info);
- purple_signal_connect(conv_handle, "displaying-im-msg", plugin,
- PURPLE_CALLBACK(display_im_cb), &cc_info);
- } else {
- purple_signal_connect
- (purple_connections_get_handle(), "signed-on",
- plugin, PURPLE_CALLBACK(cc_signed_on), plugin);
- }
-
- Debug("CrazyChat plugin loaded.\n");
-
- return TRUE;
-}
-
-static gboolean plugin_unload(PurplePlugin *plugin)
-{
- void *conv_handle;
- struct crazychat *extra;
- assert(plugin);
- extra = (struct crazychat*) plugin->info->extra_info;
- cc_destroy(extra);
- conv_handle = purple_conversations_get_handle();
- purple_signal_disconnect(PIDGIN_BLIST
- (purple_blist_get_buddy_list()),
- "drawing-menu", plugin,
- PURPLE_CALLBACK(cc_buddy_menu));
- purple_signal_disconnect(conv_handle, "received-im", plugin,
- PURPLE_CALLBACK(receive_im_cb));
- purple_signal_disconnect(conv_handle, "displaying-im-msg", plugin,
- PURPLE_CALLBACK(display_im_cb));
- Debug("CrazyChat plugin unloaded.\n");
- return TRUE;
-}
-
-static void init_plugin(PurplePlugin *plugin)
-{
- gtk_gl_init(NULL, NULL);
- memset(&cc_info, 0, sizeof(cc_info));
- Debug("CrazyChat plugin initialized\n");
-}
-
-PURPLE_INIT_PLUGIN(crazychat, init_plugin, info)
diff --git a/pidgin/plugins/crazychat/crazychat.c b/pidgin/plugins/crazychat/crazychat.c
deleted file mode 100644
index 0af989ae2e..0000000000
--- a/pidgin/plugins/crazychat/crazychat.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include "cc_interface.h"
-
-struct cc_session_node {
- struct cc_session session;
- struct cc_session_node *next;
-};
-
-struct cc_session *cc_find_session(struct crazychat *cc, char *handle)
-{
- struct cc_session_node *curr;
-
- assert(cc);
- assert(handle);
-
- curr = cc->sessions;
- while (curr) {
- struct cc_session *session = &curr->session;
- if (!strncmp(session->name, handle, strlen(session->name))) {
- return session;
- }
- curr = curr->next;
- }
- return NULL;
-}
-
-struct cc_session *cc_add_session(struct crazychat *cc, char *handle)
-{
- struct cc_session_node *curr;
-
- assert(cc);
- assert(handle);
-
- if (!cc->sessions) {
- cc->sessions = (struct cc_session_node*)
- malloc(sizeof(*cc->sessions));
- memset(cc->sessions, 0, sizeof(*cc->sessions));
- cc->sessions->session.cc = cc;
- cc->sessions->session.name = strdup(handle);
- return &cc->sessions->session;
- } else {
- if (!strncmp(cc->sessions->session.name, handle,
- strlen(cc->sessions->session.name))) {
- return &cc->sessions->session;
- }
- }
-
- curr = cc->sessions;
- while (curr->next) {
- struct cc_session *session = &curr->next->session;
- if (!strncmp(session->name, handle, strlen(session->name))) {
- return session;
- }
- curr = curr->next;
- }
- curr->next = (struct cc_session_node*)malloc(sizeof(*curr->next));
- memset(curr->next, 0, sizeof(*curr->next));
- curr->next->session.cc = cc;
- curr->next->session.name = strdup(handle);
- return &curr->next->session;
-}
-
-void cc_remove_session(struct crazychat *cc, struct cc_session *session)
-{
- struct cc_session_node *curr, *prev;
-
- assert(cc);
- assert(session);
-
- assert(cc->sessions);
-
- curr = cc->sessions;
- prev = NULL;
-
- while (curr) {
- if (&curr->session == session) {
- if (prev) {
- prev->next = curr->next;
- } else {
- cc->sessions = curr->next;
- }
- /* destroy curr */
- free(curr);
- g_source_remove(session->timer_id);
- free(session->name);
- free(session);
- return;
- }
- prev = curr;
- curr = curr->next;
- }
-
- assert(0);
-}
diff --git a/pidgin/plugins/crazychat/crazychat.h b/pidgin/plugins/crazychat/crazychat.h
deleted file mode 100644
index 19ec69c313..0000000000
--- a/pidgin/plugins/crazychat/crazychat.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef __CRAZYCHAT_H__
-#define __CRAZYCHAT_H__
-
-#include <glib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <gtk/gtk.h>
-#include "filter.h"
-#include "purple.h"
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-struct crazychat;
-
-/* --- type definitions --- */
-
-typedef enum { INVITE = 0, ACCEPT, ACCEPTED, CONNECTED } CC_STATE;
-
-/**
- * Finds the CrazyChat session with the handle.
- * @param cc global crazychat data structure
- * @param handle the peer name
- * @return the cc_session if found, or NULL
- */
-struct cc_session *cc_find_session(struct crazychat *cc, char *handle);
-
-/**
- * Adds a new session with a peer, unless a peer session already exists.
- * Makes a deep copy of the handle.
- * @param cc global crazychat data structure
- * @param handle the peer name
- * @return the new/old cc_session
- */
-struct cc_session *cc_add_session(struct crazychat *cc, char *handle);
-
-/**
- * Removes a crazychat session with a peer.
- * @param cc global crazychat data structure
- * @param session the cc_session to remove
- */
-void cc_remove_session(struct crazychat *cc, struct cc_session *session);
-
-#endif /* __CRAZYCHAT_H__ */
diff --git a/pidgin/plugins/crazychat/dog_lids.c b/pidgin/plugins/crazychat/dog_lids.c
deleted file mode 100644
index 4c4443d2f0..0000000000
--- a/pidgin/plugins/crazychat/dog_lids.c
+++ /dev/null
@@ -1,48 +0,0 @@
-#include
-
-#include "lid1.h"
-#include "lid2.h"
-#include "lid3.h"
-#include "lid4.h"
-#include "lid5.h"
-#include "lid6.h"
-#include "lid8.h"
-#include "lid9.h"
-#include "lid10.h"
-
-#define NUM_LIDS 9
-
-GLint lidLists[NUM_LIDS];
-
-void initLids(){
- GLint test;
- int i;
-
- GLint[0]=Gen3DObjectListLid1();
- GLint[1]=Gen3DObjectListLid2();
- GLint[2]=Gen3DObjectListLid3();
- GLint[3]=Gen3DObjectListLid4();
- GLint[4]=Gen3DObjectListLid5();
- GLint[5]=Gen3DObjectListLid6();
- GLint[6]=Gen3DObjectListLid8();
- GLint[7]=Gen3DObjectListLid9();
- GLint[8]=Gen3DObjectListLid10();
-
-};
-
-void drawLids(int left, right) {
- //draw left
- GLfloat offset = .5;
-
- glPushMatrix();
- glTranslatef(offset, 0, 0);
- glCallList(lidLists[left]);
- glPopMatrix();
-
- //draw right
- glPushMatrix();
- glTranslatef(-offset, 0, 0);
- glScalef(-1, 1, 1);
- glCallList(lidLists[right]);
- glPopMatrix();
-} \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/dog_lids.h b/pidgin/plugins/crazychat/dog_lids.h
deleted file mode 100644
index c542cff642..0000000000
--- a/pidgin/plugins/crazychat/dog_lids.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void initLids(void);
-
-void drawLids(int left, int right);
diff --git a/pidgin/plugins/crazychat/doggy.c b/pidgin/plugins/crazychat/doggy.c
deleted file mode 100644
index f8a71332d7..0000000000
--- a/pidgin/plugins/crazychat/doggy.c
+++ /dev/null
@@ -1,227 +0,0 @@
-#include "face.h"
-#include "doggy.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "models.h"
-
-#define NUM_DOGS 11
-#define NUM_DOG_LIDS 10
-#define NUM_EARS 3
-#define NUM_EYES 1
-#define NUM_PUPILS 1
-#define NUM_IRIS 1
-#define SCALE .020
-#define EYES_Y 32.78*SCALE // .295
-#define EYES_X 28.89*SCALE // .26
-#define EYES_Z 42.22*SCALE // .38
-#define EARS_X 60*SCALE //.65
-#define EARS_Y 20*SCALE//.18
-#define EARS_Z -5.56*SCALE //.05
-#define IRIS_X 0*SCALE
-#define IRIS_Y 1.67*SCALE//.015
-#define IRIS_Z 7*SCALE//.08
-#define PUP_X 0*SCALE
-#define PUP_Y 0*SCALE
-#define PUP_Z 1.2*SCALE //.028
-#define IRIS_SCALE .12*SCALE
-#define PUP_SCALE .11*SCALE
-#define EAR_SCALE .7*SCALE
-#define EYE_SCALE .7*SCALE
-#define LID_SCALE .77*SCALE
-#define DOG_SCALE .58*SCALE
-#define MAX_FILE_LEN 64
-#define MAX_EAR_ANGLE 90.0
-#define MIN_EAR_ANGLE -20.0
-
-
-char dog_mtl_file[MAX_FILE_LEN] = "dog.mtl";
-// the initial dog materials
-GLint init_dog_mats[NUM_PARTS] = {1, 2, 2, 4, 0, 3, 5, 0, 0, 0};
-
-void draw_pupil(FACE f, PART p) {
- struct doggy_struct* dog=(struct doggy_struct*)f->char_struct;
- glPushMatrix();
- glTranslatef(IRIS_X, -IRIS_Z, IRIS_Y);
- if(p==LEFT_IRIS)
- glmSetMat(f->materials, f->mat_indeces[LEFT_IRIS]);
- else
- glmSetMat(f->materials, f->mat_indeces[RIGHT_IRIS]);
- glCallList(dog->iris[0]);
- glTranslatef(PUP_X, -PUP_Z, PUP_Y);
- glmSetMat(f->materials, f->mat_indeces[PUPIL]);
- glCallList(dog->pupil[0]);
- glPopMatrix();
-}
-
-void draw_left_eye(FACE f, BOOL open, int max) {
- struct doggy_struct* dog=(struct doggy_struct*)f->char_struct;
- if(f->my_mode==CRAZY2)
- dog->curr_left_lid=NUM_DOG_LIDS-1;
- else
- dog->curr_left_lid = compute_lid(open, dog->curr_left_lid, max);
- glPushMatrix();
- glTranslatef(-EYES_X, 0.0, 0.0);
- glPushMatrix();
- glTranslatef(0.0, -f->curr_eye_pop, 0.0);
- draw_pupil(f, LEFT_IRIS);
- glmSetMat(f->materials, f->mat_indeces[EYES]);
- glCallList(dog->eyes[dog->curr_left_eye]);
- glPopMatrix();
- glmSetMat(f->materials, f->mat_indeces[LIDS]);
- glCallList(dog->lids[dog->curr_left_lid]);
- glPopMatrix();
-}
-
-void draw_right_eye(FACE f, BOOL open, int max) {
- struct doggy_struct* dog=(struct doggy_struct*)f->char_struct;
- if(f->my_mode==CRAZY2)
- dog->curr_right_lid=NUM_DOG_LIDS-1;
- else
- dog->curr_right_lid = compute_lid(open, dog->curr_right_lid, max);
- glPushMatrix();
- glTranslatef(EYES_X, 0.0, 0.0);
- glScalef(-1, 1, 1);
- glPushMatrix();
- glTranslatef(0.0, -f->curr_eye_pop, 0.0);
- draw_pupil(f, RIGHT_IRIS);
- glmSetMat(f->materials, f->mat_indeces[EYES]);
- glCallList(dog->eyes[dog->curr_right_eye]);
- glPopMatrix();
- glmSetMat(f->materials, f->mat_indeces[LIDS]);
- glCallList(dog->lids[dog->curr_right_lid]);
- glPopMatrix();
-}
-
-void dog_eyes(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, DIRECTION dir)
-{
- struct doggy_struct* dog=(struct doggy_struct*)f->char_struct;
- int max_eye;
- if(dir==CONST) { //then not moving, eyes are gettin sleepy
- f->eye_count--;
- }
- else{
- f->eye_count=EYE_TIME*NUM_DOG_LIDS-1;
- }
- max_eye=f->eye_count/EYE_TIME;
- if(max_eye<0)
- max_eye=0;
- if(f->my_mode==CRAZY2)
- f->curr_eye_pop=f->curr_eye_pop + (MAX_EYE_POP - f->curr_eye_pop)/2;
- else
- f->curr_eye_pop=f->curr_eye_pop - (f->curr_eye_pop-0)/2;
- glPushMatrix();
- glTranslatef(0, 0, EYES_Y);
- glTranslatef(0, -EYES_Z,0);
- draw_left_eye(f, left_open, max_eye);
- draw_right_eye(f, right_open, max_eye);
- glPopMatrix();
-}
-
-void dog_ears(FACE f, DIRECTION dir){
- struct doggy_struct* dog=(struct doggy_struct*)f->char_struct;
- //printf("ears %f\n", ears);
- if(dir==DOWN){
- if(dog->curr_ear < (NUM_EARS-1))
- dog->curr_ear++;
- dog->curr_ear_angle = dog->curr_ear_angle+(MAX_EAR_ANGLE-dog->curr_ear_angle)/2;
- }
- if(dir==UP){
- if(dog->curr_ear > 0)
- dog->curr_ear--;
- dog->curr_ear_angle = dog->curr_ear_angle+(MIN_EAR_ANGLE-dog->curr_ear_angle)/2;
- }
- else if(dir==CONST){
- dog->curr_ear=1;
- dog->curr_ear_angle = dog->curr_ear_angle+(0-dog->curr_ear_angle)/3;
- }
-
- glPushMatrix();
- glTranslatef(-EARS_X, -EARS_Z, EARS_Y);
- if(f->my_mode==CRAZY1)
- glRotatef(MAX_EAR_ANGLE, 0.0, 1.0, 0.0);
- else
- glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0);
- glmSetMat(f->materials, f->mat_indeces[APPENDAGE]);
- glCallList(dog->ears[dog->curr_ear]);
- glPopMatrix();
- glPushMatrix();
- glTranslatef(EARS_X, -EARS_Z, EARS_Y);
- glScalef(-1, 1, 1);
- if(f->my_mode==CRAZY1)
- glRotatef(MIN_EAR_ANGLE, 0.0, 1.0, 0.0);
- else
- glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0);
- glCallList(dog->ears[dog->curr_ear]);
- glPopMatrix();
-}
-
-void draw_dog(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, GLfloat open, DIRECTION dir, OUTPUT_MODE mode){
- int next_face;
- struct doggy_struct* dog;
- f->crazy_count--;
- if(f->crazy_count==0){
- f->my_mode = mode;
- if(mode!=NORMAL)
- f->crazy_count = CRAZY_COUNT;
- else
- f->crazy_count = 1;
- }
- apply_output_mode(f, &angle, &yangle, &left_open, &right_open, &open, &dir);
- next_face = NUM_DOGS - open*NUM_DOGS - 1;
- dog = (struct doggy_struct*)f->char_struct;
- if(next_face > dog->curr_face)
- dog->curr_face++;
- else if(next_face < dog->curr_face)
- dog->curr_face--;
-
- glPushMatrix();
- glRotatef(-90, 1.0, 0.0, 0.0);
- glRotatef(-yangle, 0.0, 0.0, -1.0);
- glRotatef(-angle, 0, 1, 0);
- dog_eyes(f, angle, yangle, left_open, right_open, dir);
- dog_ears(f, dir);
- glmSetMat(f->materials, f->mat_indeces[HEAD]);
- glCallList(dog->faces[dog->curr_face]);
- glPopMatrix();
-}
-
-void init_dog(FACE f){
- int i;
- struct doggy_struct* dog;
- f->char_struct = (struct doggy_struct*)malloc(sizeof(struct doggy_struct));
- f->materials = glmMTL(dog_mtl_file);
- f->mat_indeces=(GLint*)malloc(sizeof(GLint)*NUM_PARTS);
- //initialize all of the parts to some colors
- change_materials(f, init_dog_mats, NUM_PARTS);
- f->my_mode = NORMAL;
- f->eye_count = EYE_TIME*NUM_DOG_LIDS-1;
- f->crazy_count = 1;
- f->curr_z_angle = 0;
- f->curr_eye_pop = 0;
- f->name = strdup("dog");
- f->draw_func = draw_dog;
- dog = (struct doggy_struct*)f->char_struct;
-
- printf("\nReading models: ");
- fflush(0);
-
- //initialize the draw lists
- init_lists(&dog->faces, &dog->m_faces, NUM_DOGS, f->name, DOG_SCALE);
- init_lists(&dog->lids, &dog->m_lids, NUM_DOG_LIDS, "lid", LID_SCALE);
- init_lists(&dog->ears, &dog->m_ears, NUM_EARS, "ear", EAR_SCALE);
- init_lists(&dog->eyes, &dog->m_eyes, NUM_EYES, "dogeye", EYE_SCALE);
- init_lists(&dog->pupil, &dog->m_pupil, NUM_PUPILS, "dogpupil", PUP_SCALE);
- init_lists(&dog->iris, &dog->m_iris, NUM_IRIS, "dogiris", IRIS_SCALE);
-
- printf("\n");
- fflush(0);
-
- dog->curr_face = 0;
- dog->curr_ear = 1;
- dog->curr_left_lid = 9;
- dog->curr_right_lid = 0;
- dog->curr_left_eye = 0;
- dog->curr_right_eye = 0;
- dog->curr_pupil = 0;
- dog->curr_ear_angle = 0;
-}
diff --git a/pidgin/plugins/crazychat/doggy.h b/pidgin/plugins/crazychat/doggy.h
deleted file mode 100644
index b0b8594201..0000000000
--- a/pidgin/plugins/crazychat/doggy.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "glm.h"
-
-struct doggy_struct{
- GLint* faces, *lids, *ears, *eyes, *iris, *pupil;
- GLMmodel** m_faces, **m_lids, **m_ears, **m_eyes, **m_iris, **m_pupil;
- int curr_face, curr_ear, curr_left_lid, curr_right_lid, curr_right_eye, curr_left_eye, curr_pupil, eye_count;
- float curr_ear_angle;
-};
-
-void init_dog(FACE f); \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/draw.c b/pidgin/plugins/crazychat/draw.c
deleted file mode 100644
index 446c1bcac3..0000000000
--- a/pidgin/plugins/crazychat/draw.c
+++ /dev/null
@@ -1,107 +0,0 @@
-#include "righteye10.h"
-
-typedef struct _point{
- GLshort x;
- GLshort y;
-} Point;
-
-typedef struct Packet{
- Point mouthLeft;
- Point mouthRight;
- Point mouthTop;
- Point mouthBottom;
- Point eyeLeft;
- Point eyeRight;
-} Packet;
-
-#define NUM_EYE_FRAMES 10
-
-GLint rightEyes[NUM_EYE_FRAMES];
-
-void CalculateMouthPoints(GLshort[][][] ctrlpoints, struct Packet* p)
-{
- GLshort points[4][3];
- points[0][0]=p->mouthLeft.x;
- points[0][1]=p->mouthLeft.y;
- points[0][2]=front;
-
- points[1][0]=p->mouthBottom.x;
- points[1][1]=p->mouthTop.y;
- points[1][2]=front;
-
- points[2][0]=p->mouthRight.x;
- points[2][1]=p->mouthRight.y;
- points[2][2]=front;
-
- points[3][0]=p->mouthTop.x;
- points[3][1]=p->mouthTop.y;
- points[3][2]=front;
-
- ctrlpoints[0][0][0]=points[0][0];
- ctrlpoints[0][0][1]=points[0][1];
- ctrlpoints[0][0][2]=points[0][2];
-
- ctrlpoints[0][1][0]=points[1][0];
- ctrlpoints[0][1][1]=points[1][1];
- ctrlpoints[0][1][2]=points[1][2];
-
- ctrlpoints[0][2][0]=points[2][0];
- ctrlpoints[0][2][1]=points[2][1];
- ctrlpoints[0][2][2]=points[2][2];
-
- ctrlpoints[1][0][0]=points[0][0];
- ctrlpoints[1][0][1]=points[0][1];
- ctrlpoints[1][0][2]=points[0][2];
-
- ctrlpoints[1][1][0]=0;
- ctrlpoints[1][1][1]=0;
- ctrlpoints[1][1][2]=back;
-
- ctrlpoints[1][2][0]=points[2][0];
- ctrlpoints[1][2][1]=points[2][1];
- ctrlpoints[1][2][2]=points[2][2];
-
- ctrlpoints[2][0][0]=points[0][0];
- ctrlpoints[2][0][1]=points[0][1];
- ctrlpoints[2][0][2]=points[0][2];
-
- ctrlpoints[2][1][0]=points[3][0];
- ctrlpoints[2][1][1]=points[3][1];
- ctrlpoints[2][1][2]=points[3][2];
-
- ctrlpoints[2][2][0]=points[2][0];
- ctrlpoints[2][2][1]=points[2][1];
- ctrlpoints[2][2][2]=points[2][2];
-}
-
-void drawMouth(struct Packet* p)
-{
- GLshort[4][3][3] ctrlpoints;
- CalculateMouthPoints(ctrlpoints, p);
-
- glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &ctrlpoints[0][0][0]);
- glEnable(GL_MAP2_VERTEX_3);
- glMapGrid2f(10, 0, 10, 10, 0, 10);
- glEnable(GL_AUTO_NORMAL);
- glEvalMesh2(GL_FILL, 0, 10, 0, 10);
-}
-
-void initEyes(){
-
-
-void drawEyes(struct Packet* p){
- GLshort eye[3][3][3];
- CalculateEyePoints(eye, p, LEFT);
- glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &eyep[0][0][0]);
- glMapGrid2f(10, 0, 10, 10, 0, 10);
- glEvalMesh2(GL_FILL, 0, 10, 0, 10);
-
- CalculateEyePoints(eye, p, RIGHT);
- glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &eyep[0][0][0]);
- glMapGrid2f(10, 0, 10, 10, 0, 10);
- glEvalMesh2(GL_FILL, 0, 10, 0, 10);
-
-}
-
-void drawHead(struct Packet* p){
-}
diff --git a/pidgin/plugins/crazychat/eye.c b/pidgin/plugins/crazychat/eye.c
deleted file mode 100644
index 814a5a4e7b..0000000000
--- a/pidgin/plugins/crazychat/eye.c
+++ /dev/null
@@ -1,812 +0,0 @@
-/*
-This file was produced by Deep Exploration Plugin: CPP Export filter.
-
-Deep Exploration
-
-Copyright (c) 1999-2003 Right Hemisphere, Inc
-
-WWW http://www.righthemisphere.com/dexp.htm
-eMail support@righthemisphere.com
-*/
-//#include <windows.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-#include <math.h>
-
-typedef struct sample_MATERIAL{
- GLfloat ambient[3];
- GLfloat diffuse[3];
- GLfloat specular[3];
- GLfloat emission[3];
- GLfloat alpha;
- GLfloat phExp;
- int texture;
-} sample_MATERIAL;
-
-typedef struct sample_TEXTURE{
- char * name;
- GLint id;
-} sample_TEXTURE;
-
-static sample_MATERIAL materials [2] = {
- {{0.117647f,0.117647f,0.117647f}, {0.752941f,0.752941f,0.752941f}, {0.752941f,0.752941f,0.752941f}, {0.0f,0.0f,0.0f}, 1.0f,8.0f,-1}, //Explorer Default
- {{1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, 1.0f,32.0f,0} //Material #5
-};
-
-static sample_TEXTURE texture_maps [1] = {
-{"eye10.bmp_0.bmp",0}
-};
-
-// 244 Verticies
-// 152 Texture Coordinates
-// 328 Normals
-// 448 Triangles
-
-static short face_indicies[448][9] = {
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }
-// Object #-1
- , {65,66,67 ,86,87,88 ,0,1,2 }, {65,67,68 ,89,88,90 ,3,2,4 },
- {65,68,69 ,91,90,92 ,5,4,6 }, {65,69,70 ,93,92,94 ,7,6,8 }, {65,70,71 ,95,94,96 ,9,8,10 },
- {65,71,72 ,97,96,98 ,11,10,12 }, {65,72,73 ,99,98,100 ,13,12,14 },
- {65,73,74 ,101,100,102 ,15,14,16 }, {65,74,75 ,103,102,104 ,17,16,18 },
- {65,75,76 ,105,104,106 ,19,18,20 }, {65,76,77 ,107,106,108 ,21,20,22 },
- {65,77,78 ,109,108,110 ,23,22,24 }, {65,78,79 ,111,110,112 ,25,24,26 },
- {65,79,80 ,113,112,114 ,27,26,28 }, {65,80,81 ,115,114,116 ,29,28,30 },
- {65,81,66 ,117,116,117 ,31,30,32 }, {66,82,83 ,87,118,119 ,1,33,34 },
- {66,83,67 ,87,119,88 ,1,34,2 }, {67,83,84 ,88,119,120 ,2,34,35 },
- {67,84,68 ,88,120,90 ,2,35,4 }, {68,84,85 ,90,120,121 ,4,35,36 },
- {68,85,69 ,90,121,92 ,4,36,6 }, {69,85,86 ,92,121,122 ,6,36,37 },
- {69,86,70 ,92,122,94 ,6,37,8 }, {70,86,87 ,94,122,123 ,8,37,38 },
- {70,87,71 ,94,123,96 ,8,38,10 }, {71,87,88 ,96,123,124 ,10,38,39 },
- {71,88,72 ,96,124,98 ,10,39,12 }, {72,88,89 ,98,124,125 ,12,39,40 },
- {72,89,73 ,98,125,100 ,12,40,14 }, {73,89,90 ,100,125,126 ,14,40,41 },
- {73,90,74 ,100,126,102 ,14,41,16 }, {74,90,91 ,102,126,127 ,16,41,42 },
- {74,91,75 ,102,127,104 ,16,42,18 }, {75,91,92 ,104,127,128 ,18,42,43 },
- {75,92,76 ,104,128,106 ,18,43,20 }, {76,92,93 ,106,128,129 ,20,43,44 },
- {76,93,77 ,106,129,108 ,20,44,22 }, {77,93,94 ,108,129,130 ,22,44,45 },
- {77,94,78 ,108,130,110 ,22,45,24 }, {78,94,95 ,110,130,131 ,24,45,46 },
- {78,95,79 ,110,131,112 ,24,46,26 }, {79,95,96 ,112,131,132 ,26,46,47 },
- {79,96,80 ,112,132,114 ,26,47,28 }, {80,96,97 ,114,132,133 ,28,47,48 },
- {80,97,81 ,114,133,116 ,28,48,30 }, {81,97,82 ,116,133,134 ,30,48,49 },
- {81,82,66 ,116,135,135 ,30,49,32 }, {82,98,99 ,118,136,137 ,33,50,51 },
- {82,99,83 ,118,137,119 ,33,51,34 }, {83,99,100 ,119,137,138 ,34,51,52 },
- {83,100,84 ,119,138,120 ,34,52,35 }, {84,100,101 ,120,138,139 ,35,52,53 },
- {84,101,85 ,120,139,121 ,35,53,36 }, {85,101,102 ,121,139,140 ,36,53,54 },
- {85,102,86 ,121,140,122 ,36,54,37 }, {86,102,103 ,122,140,141 ,37,54,55 },
- {86,103,87 ,122,141,123 ,37,55,38 }, {87,103,104 ,123,141,142 ,38,55,56 },
- {87,104,88 ,123,142,124 ,38,56,39 }, {88,104,105 ,124,142,143 ,39,56,57 },
- {88,105,89 ,124,143,125 ,39,57,40 }, {89,105,106 ,125,143,144 ,40,57,58 },
- {89,106,90 ,125,144,126 ,40,58,41 }, {90,106,107 ,126,144,145 ,41,58,59 },
- {90,107,91 ,126,145,127 ,41,59,42 }, {91,107,108 ,127,145,146 ,42,59,60 },
- {91,108,92 ,127,146,128 ,42,60,43 }, {92,108,109 ,128,146,147 ,43,60,61 },
- {92,109,93 ,128,147,129 ,43,61,44 }, {93,109,110 ,129,147,148 ,44,61,62 },
- {93,110,94 ,129,148,130 ,44,62,45 }, {94,110,111 ,130,148,149 ,45,62,63 },
- {94,111,95 ,130,149,131 ,45,63,46 }, {95,111,112 ,131,149,150 ,46,63,64 },
- {95,112,96 ,131,150,132 ,46,64,47 }, {96,112,113 ,132,150,151 ,47,64,65 },
- {96,113,97 ,132,151,133 ,47,65,48 }, {97,113,98 ,133,151,152 ,48,65,66 },
- {97,98,82 ,133,153,153 ,48,66,49 }, {98,114,115 ,136,154,155 ,50,67,68 },
- {98,115,99 ,136,155,137 ,50,68,51 }, {99,115,116 ,137,155,156 ,51,68,69 },
- {99,116,100 ,137,156,138 ,51,69,52 }, {100,116,117 ,138,156,157 ,52,69,70 },
- {100,117,101 ,138,157,139 ,52,70,53 }, {101,117,118 ,139,157,158 ,53,70,71 },
- {101,118,102 ,139,158,140 ,53,71,54 }, {102,118,119 ,140,158,159 ,54,71,72 },
- {102,119,103 ,140,159,141 ,54,72,55 }, {103,119,120 ,141,159,160 ,55,72,73 },
- {103,120,104 ,141,160,142 ,55,73,56 }, {104,120,121 ,142,160,161 ,56,73,74 },
- {104,121,105 ,142,161,143 ,56,74,57 }, {105,121,122 ,143,161,162 ,57,74,75 },
- {105,122,106 ,143,162,144 ,57,75,58 }, {106,122,123 ,144,162,163 ,58,75,76 },
- {106,123,107 ,144,163,145 ,58,76,59 }, {107,123,124 ,145,163,164 ,59,76,77 },
- {107,124,108 ,145,164,146 ,59,77,60 }, {108,124,125 ,146,164,165 ,60,77,78 },
- {108,125,109 ,146,165,147 ,60,78,61 }, {109,125,126 ,147,165,166 ,61,78,79 },
- {109,126,110 ,147,166,148 ,61,79,62 }, {110,126,127 ,148,166,167 ,62,79,80 },
- {110,127,111 ,148,167,149 ,62,80,63 }, {111,127,128 ,149,167,168 ,63,80,81 },
- {111,128,112 ,149,168,150 ,63,81,64 }, {112,128,129 ,150,168,169 ,64,81,82 },
- {112,129,113 ,150,169,151 ,64,82,65 }, {113,129,114 ,151,169,170 ,65,82,83 },
- {113,114,98 ,151,171,171 ,65,83,66 }, {114,130,131 ,154,172,173 ,67,84,85 },
- {114,131,115 ,154,173,155 ,67,85,68 }, {115,131,132 ,155,173,174 ,68,85,86 },
- {115,132,116 ,155,174,156 ,68,86,69 }, {116,132,133 ,156,174,175 ,69,86,87 },
- {116,133,117 ,156,175,157 ,69,87,70 }, {117,133,134 ,157,175,176 ,70,87,88 },
- {117,134,118 ,157,176,158 ,70,88,71 }, {118,134,135 ,158,176,177 ,71,88,89 },
- {118,135,119 ,158,177,159 ,71,89,72 }, {119,135,136 ,159,177,178 ,72,89,90 },
- {119,136,120 ,159,178,160 ,72,90,73 }, {120,136,137 ,160,178,179 ,73,90,91 },
- {120,137,121 ,160,179,161 ,73,91,74 }, {121,137,138 ,161,179,180 ,74,91,92 },
- {121,138,122 ,161,180,162 ,74,92,75 }, {122,138,139 ,162,180,181 ,75,92,93 },
- {122,139,123 ,162,181,163 ,75,93,76 }, {123,139,140 ,163,181,182 ,76,93,94 },
- {123,140,124 ,163,182,164 ,76,94,77 }, {124,140,141 ,164,182,183 ,77,94,95 },
- {124,141,125 ,164,183,165 ,77,95,78 }, {125,141,142 ,165,183,184 ,78,95,96 },
- {125,142,126 ,165,184,166 ,78,96,79 }, {126,142,143 ,166,184,185 ,79,96,97 },
- {126,143,127 ,166,185,167 ,79,97,80 }, {127,143,144 ,167,185,186 ,80,97,98 },
- {127,144,128 ,167,186,168 ,80,98,81 }, {128,144,145 ,168,186,187 ,81,98,99 },
- {128,145,129 ,168,187,169 ,81,99,82 }, {129,145,130 ,169,187,188 ,82,99,100 },
- {129,130,114 ,169,189,189 ,82,100,83 }, {130,146,147 ,172,190,191 ,84,101,102 },
- {130,147,131 ,172,191,173 ,84,102,85 }, {131,147,148 ,173,191,192 ,85,102,103 },
- {131,148,132 ,173,192,174 ,85,103,86 }, {132,148,149 ,174,192,193 ,86,103,104 },
- {132,149,133 ,174,193,175 ,86,104,87 }, {133,149,150 ,175,193,194 ,87,104,105 },
- {133,150,134 ,175,194,176 ,87,105,88 }, {134,150,151 ,176,194,195 ,88,105,106 },
- {134,151,135 ,176,195,177 ,88,106,89 }, {135,151,152 ,177,195,196 ,89,106,107 },
- {135,152,136 ,177,196,178 ,89,107,90 }, {136,152,153 ,178,196,197 ,90,107,108 },
- {136,153,137 ,178,197,179 ,90,108,91 }, {137,153,154 ,179,197,198 ,91,108,109 },
- {137,154,138 ,179,198,180 ,91,109,92 }, {138,154,155 ,180,198,199 ,92,109,110 },
- {138,155,139 ,180,199,181 ,92,110,93 }, {139,155,156 ,181,199,200 ,93,110,111 },
- {139,156,140 ,181,200,182 ,93,111,94 }, {140,156,157 ,182,200,201 ,94,111,112 },
- {140,157,141 ,182,201,183 ,94,112,95 }, {141,157,158 ,183,201,202 ,95,112,113 },
- {141,158,142 ,183,202,184 ,95,113,96 }, {142,158,159 ,184,202,203 ,96,113,114 },
- {142,159,143 ,184,203,185 ,96,114,97 }, {143,159,160 ,185,203,204 ,97,114,115 },
- {143,160,144 ,185,204,186 ,97,115,98 }, {144,160,161 ,186,204,205 ,98,115,116 },
- {144,161,145 ,186,205,187 ,98,116,99 }, {145,161,146 ,187,205,206 ,99,116,117 },
- {145,146,130 ,187,207,207 ,99,117,100 }, {146,162,163 ,190,208,209 ,101,118,119 },
- {146,163,147 ,190,209,191 ,101,119,102 }, {147,163,164 ,191,209,210 ,102,119,120 },
- {147,164,148 ,191,210,192 ,102,120,103 }, {148,164,165 ,192,210,211 ,103,120,121 },
- {148,165,149 ,192,211,193 ,103,121,104 }, {149,165,166 ,193,211,212 ,104,121,122 },
- {149,166,150 ,193,212,194 ,104,122,105 }, {150,166,167 ,194,212,213 ,105,122,123 },
- {150,167,151 ,194,213,195 ,105,123,106 }, {151,167,168 ,195,213,214 ,106,123,124 },
- {151,168,152 ,195,214,196 ,106,124,107 }, {152,168,169 ,196,214,215 ,107,124,125 },
- {152,169,153 ,196,215,197 ,107,125,108 }, {153,169,170 ,197,215,216 ,108,125,126 },
- {153,170,154 ,197,216,198 ,108,126,109 }, {154,170,171 ,198,216,217 ,109,126,127 },
- {154,171,155 ,198,217,199 ,109,127,110 }, {155,171,172 ,199,217,218 ,110,127,128 },
- {155,172,156 ,199,218,200 ,110,128,111 }, {156,172,173 ,200,218,219 ,111,128,129 },
- {156,173,157 ,200,219,201 ,111,129,112 }, {157,173,174 ,201,219,220 ,112,129,130 },
- {157,174,158 ,201,220,202 ,112,130,113 }, {158,174,175 ,202,220,221 ,113,130,131 },
- {158,175,159 ,202,221,203 ,113,131,114 }, {159,175,176 ,203,221,222 ,114,131,132 },
- {159,176,160 ,203,222,204 ,114,132,115 }, {160,176,177 ,204,222,223 ,115,132,133 },
- {160,177,161 ,204,223,205 ,115,133,116 }, {161,177,162 ,205,223,224 ,116,133,134 },
- {161,162,146 ,205,225,225 ,116,134,117 }, {178,163,162 ,226,209,208 ,135,119,118 },
- {178,164,163 ,227,210,209 ,136,120,119 }, {178,165,164 ,228,211,210 ,137,121,120 },
- {178,166,165 ,229,212,211 ,138,122,121 }, {178,167,166 ,230,213,212 ,139,123,122 },
- {178,168,167 ,231,214,213 ,140,124,123 }, {178,169,168 ,232,215,214 ,141,125,124 },
- {178,170,169 ,233,216,215 ,142,126,125 }, {178,171,170 ,234,217,216 ,143,127,126 },
- {178,172,171 ,235,218,217 ,144,128,127 }, {178,173,172 ,236,219,218 ,145,129,128 },
- {178,174,173 ,237,220,219 ,146,130,129 }, {178,175,174 ,238,221,220 ,147,131,130 },
- {178,176,175 ,239,222,221 ,148,132,131 }, {178,177,176 ,240,223,222 ,149,133,132 },
- {178,162,177 ,241,241,223 ,150,151,133 }
-// Object #-1
- , {179,180,181 ,242,243,244 ,0,1,2 }, {179,181,182 ,245,244,246 ,3,2,4 },
- {179,182,183 ,247,246,248 ,5,4,6 }, {179,183,184 ,249,248,250 ,7,6,8 },
- {179,184,185 ,251,250,252 ,9,8,10 }, {179,185,186 ,253,252,254 ,11,10,12 },
- {179,186,187 ,255,254,256 ,13,12,14 }, {179,187,188 ,257,256,258 ,15,14,16 },
- {179,188,189 ,259,258,260 ,17,16,18 }, {179,189,190 ,261,260,262 ,19,18,20 },
- {179,190,191 ,263,262,264 ,21,20,22 }, {179,191,192 ,265,264,266 ,23,22,24 },
- {179,192,193 ,267,266,268 ,25,24,26 }, {179,193,194 ,269,268,270 ,27,26,28 },
- {179,194,195 ,271,270,272 ,29,28,30 }, {179,195,180 ,273,272,273 ,31,30,32 },
- {180,196,197 ,243,274,275 ,1,33,34 }, {180,197,181 ,243,275,244 ,1,34,2 },
- {181,197,198 ,244,275,276 ,2,34,35 }, {181,198,182 ,244,276,246 ,2,35,4 },
- {182,198,199 ,246,276,277 ,4,35,36 }, {182,199,183 ,246,277,248 ,4,36,6 },
- {183,199,200 ,248,277,278 ,6,36,37 }, {183,200,184 ,248,278,250 ,6,37,8 },
- {184,200,201 ,250,278,279 ,8,37,38 }, {184,201,185 ,250,279,252 ,8,38,10 },
- {185,201,202 ,252,279,280 ,10,38,39 }, {185,202,186 ,252,280,254 ,10,39,12 },
- {186,202,203 ,254,280,281 ,12,39,40 }, {186,203,187 ,254,281,256 ,12,40,14 },
- {187,203,204 ,256,281,282 ,14,40,41 }, {187,204,188 ,256,282,258 ,14,41,16 },
- {188,204,205 ,258,282,283 ,16,41,42 }, {188,205,189 ,258,283,260 ,16,42,18 },
- {189,205,206 ,260,283,284 ,18,42,43 }, {189,206,190 ,260,284,262 ,18,43,20 },
- {190,206,207 ,262,284,285 ,20,43,44 }, {190,207,191 ,262,285,264 ,20,44,22 },
- {191,207,208 ,264,285,286 ,22,44,45 }, {191,208,192 ,264,286,266 ,22,45,24 },
- {192,208,209 ,266,286,287 ,24,45,46 }, {192,209,193 ,266,287,268 ,24,46,26 },
- {193,209,210 ,268,287,288 ,26,46,47 }, {193,210,194 ,268,288,270 ,26,47,28 },
- {194,210,211 ,270,288,289 ,28,47,48 }, {194,211,195 ,270,289,272 ,28,48,30 },
- {195,211,196 ,272,289,290 ,30,48,49 }, {195,196,180 ,272,291,291 ,30,49,32 },
- {196,212,213 ,274,292,293 ,33,50,51 }, {196,213,197 ,274,293,275 ,33,51,34 },
- {197,213,214 ,275,293,294 ,34,51,52 }, {197,214,198 ,275,294,276 ,34,52,35 },
- {198,214,215 ,276,294,295 ,35,52,53 }, {198,215,199 ,276,295,277 ,35,53,36 },
- {199,215,216 ,277,295,296 ,36,53,54 }, {199,216,200 ,277,296,278 ,36,54,37 },
- {200,216,217 ,278,296,297 ,37,54,55 }, {200,217,201 ,278,297,279 ,37,55,38 },
- {201,217,218 ,279,297,298 ,38,55,56 }, {201,218,202 ,279,298,280 ,38,56,39 },
- {202,218,219 ,280,298,299 ,39,56,57 }, {202,219,203 ,280,299,281 ,39,57,40 },
- {203,219,220 ,281,299,300 ,40,57,58 }, {203,220,204 ,281,300,282 ,40,58,41 },
- {204,220,221 ,282,300,301 ,41,58,59 }, {204,221,205 ,282,301,283 ,41,59,42 },
- {205,221,222 ,283,301,302 ,42,59,60 }, {205,222,206 ,283,302,284 ,42,60,43 },
- {206,222,223 ,284,302,303 ,43,60,61 }, {206,223,207 ,284,303,285 ,43,61,44 },
- {207,223,224 ,285,303,304 ,44,61,62 }, {207,224,208 ,285,304,286 ,44,62,45 },
- {208,224,225 ,286,304,305 ,45,62,63 }, {208,225,209 ,286,305,287 ,45,63,46 },
- {209,225,226 ,287,305,306 ,46,63,64 }, {209,226,210 ,287,306,288 ,46,64,47 },
- {210,226,227 ,288,306,307 ,47,64,65 }, {210,227,211 ,288,307,289 ,47,65,48 },
- {211,227,212 ,289,307,308 ,48,65,66 }, {211,212,196 ,289,309,309 ,48,66,49 },
- {212,228,229 ,292,310,311 ,50,67,68 }, {212,229,213 ,292,311,293 ,50,68,51 },
- {213,229,230 ,293,311,312 ,51,68,69 }, {213,230,214 ,293,312,294 ,51,69,52 },
- {214,230,231 ,294,312,313 ,52,69,70 }, {214,231,215 ,294,313,295 ,52,70,53 },
- {215,231,232 ,295,313,314 ,53,70,71 }, {215,232,216 ,295,314,296 ,53,71,54 },
- {216,232,233 ,296,314,315 ,54,71,72 }, {216,233,217 ,296,315,297 ,54,72,55 },
- {217,233,234 ,297,315,316 ,55,72,73 }, {217,234,218 ,297,316,298 ,55,73,56 },
- {218,234,235 ,298,316,317 ,56,73,74 }, {218,235,219 ,298,317,299 ,56,74,57 },
- {219,235,236 ,299,317,318 ,57,74,75 }, {219,236,220 ,299,318,300 ,57,75,58 },
- {220,236,237 ,300,318,319 ,58,75,76 }, {220,237,221 ,300,319,301 ,58,76,59 },
- {221,237,238 ,301,319,320 ,59,76,77 }, {221,238,222 ,301,320,302 ,59,77,60 },
- {222,238,239 ,302,320,321 ,60,77,78 }, {222,239,223 ,302,321,303 ,60,78,61 },
- {223,239,240 ,303,321,322 ,61,78,79 }, {223,240,224 ,303,322,304 ,61,79,62 },
- {224,240,241 ,304,322,323 ,62,79,80 }, {224,241,225 ,304,323,305 ,62,80,63 },
- {225,241,242 ,305,323,324 ,63,80,81 }, {225,242,226 ,305,324,306 ,63,81,64 },
- {226,242,243 ,306,324,325 ,64,81,82 }, {226,243,227 ,306,325,307 ,64,82,65 },
- {227,243,228 ,307,325,326 ,65,82,83 }, {227,228,212 ,307,327,327 ,65,83,66 }
-};
-static GLfloat vertices [244][3] = {
-{-0.0594632f,0.340244f,-0.227837f},{-0.0839977f,0.221099f,-0.344899f},{-0.162438f,0.228128f,-0.353657f},
-{-0.225394f,0.248142f,-0.339163f},{-0.260027f,0.278097f,-0.302629f},{-0.260012f,0.31343f,-0.250458f},
-{-0.227263f,0.348764f,-0.192603f},{-0.169721f,0.378718f,-0.139431f},{-0.0976165f,0.398733f,-0.0989695f},
-{-0.0212892f,0.405761f,-0.0760573f},{0.0490029f,0.398733f,-0.07301f},{0.103337f,0.378718f,-0.0900053f},
-{0.133847f,0.348764f,-0.124503f},{0.136676f,0.31343f,-0.171127f},{0.11215f,0.278097f,-0.223036f},
-{0.0633403f,0.248142f,-0.273514f},{-0.00471581f,0.228128f,-0.316247f},{-0.088416f,0.0664659f,-0.404402f},
-{-0.236654f,0.0794526f,-0.421905f},{-0.358018f,0.116435f,-0.394699f},{-0.421142f,0.171783f,-0.323727f},
-{-0.413035f,0.237071f,-0.223224f},{-0.344259f,0.302359f,-0.116005f},{-0.237289f,0.357707f,-0.0234628f},
-{-0.111046f,0.39469f,0.0427706f},{0.0221782f,0.407676f,0.079975f},{0.148264f,0.39469f,0.0859734f},
-{0.246652f,0.357707f,0.0561923f},{0.29851f,0.302359f,-0.00828875f},{0.29812f,0.237071f,-0.0951606f},
-{0.252434f,0.171783f,-0.188204f},{0.169761f,0.116435f,-0.27625f},{0.0538453f,0.0794525f,-0.351645f},
-{-0.0747728f,-0.100115f,-0.397927f},{-0.265094f,-0.083147f,-0.413132f},{-0.421072f,-0.0348269f,-0.371959f},
-{-0.498119f,0.0374891f,-0.276676f},{-0.479955f,0.122792f,-0.147509f},{-0.38696f,0.208094f,-0.0154702f},
-{-0.253427f,0.28041f,0.0930117f},{-0.0998485f,0.328731f,0.16876f},{0.0671615f,0.345698f,0.215499f},
-{0.23274f,0.32873f,0.230046f},{0.363571f,0.28041f,0.196764f},{0.42705f,0.208094f,0.1102f},
-{0.416969f,0.122792f,-0.00920004f},{0.351655f,0.0374891f,-0.13296f},{0.247216f,-0.034827f,-0.245038f},
-{0.104266f,-0.083147f,-0.337127f},{-0.0513718f,-0.253282f,-0.328305f},{-0.247586f,-0.234916f,-0.330761f},
-{-0.405745f,-0.182615f,-0.278113f},{-0.481724f,-0.104341f,-0.176241f},{-0.460848f,-0.01201f,-0.0465844f},
-{-0.365803f,0.0803208f,0.0816631f},{-0.230648f,0.158595f,0.186497f},{-0.0716892f,0.210896f,0.263634f},
-{0.107899f,0.229262f,0.318551f},{0.29045f,0.210896f,0.342957f},{0.434324f,0.158595f,0.311819f},
-{0.5f,0.0803207f,0.215496f},{0.481891f,-0.0120101f,0.079437f},{0.404727f,-0.104341f,-0.060354f},
-{0.289283f,-0.182615f,-0.182709f},{0.136409f,-0.234917f,-0.275803f},{0.117563f,-0.01201f,0.375843f},
-{0.114291f,0.139643f,0.336151f},{0.0508502f,0.128099f,0.322581f},{-0.00136173f,0.0952246f,0.31399f},
-{-0.0363813f,0.0460249f,0.311237f},{-0.0508667f,-0.01201f,0.314621f},{-0.0436149f,-0.0700451f,0.323833f},
-{-0.0152835f,-0.119245f,0.337453f},{0.0315462f,-0.152119f,0.352954f},{0.0919289f,-0.163663f,0.367573f},
-{0.158049f,-0.152119f,0.379363f},{0.219457f,-0.119245f,0.387409f},{0.264776f,-0.070045f,0.391145f},
-{0.284658f,-0.01201f,0.389721f},{0.274768f,0.046025f,0.382324f},{0.237279f,0.0952247f,0.369285f},
-{0.180111f,0.128099f,0.352767f},{0.0852956f,0.268208f,0.257515f},{-0.0287871f,0.246877f,0.236747f},
-{-0.11952f,0.186134f,0.224289f},{-0.178349f,0.0952246f,0.219546f},{-0.201037f,-0.0120101f,0.223154f},
-{-0.186517f,-0.119245f,0.236486f},{-0.136378f,-0.210154f,0.258079f},{-0.0543631f,-0.270898f,0.282448f},
-{0.0529195f,-0.292228f,0.30343f},{0.173518f,-0.270898f,0.318397f},{0.288544f,-0.210154f,0.328679f},
-{0.374946f,-0.119245f,0.335885f},{0.412602f,-0.01201f,0.338198f},{0.391946f,0.0952246f,0.331038f},
-{0.317893f,0.186134f,0.31199f},{0.207926f,0.246877f,0.284788f},{0.0448437f,0.354112f,0.145691f},
-{-0.105491f,0.326243f,0.122505f},{-0.226023f,0.246877f,0.108312f},{-0.303201f,0.128099f,0.1019f},
-{-0.329682f,-0.0120101f,0.10436f},{-0.30443f,-0.152119f,0.118065f},{-0.232051f,-0.270898f,0.141232f},
-{-0.120388f,-0.350263f,0.166539f},{0.0202984f,-0.378132f,0.186412f},{0.174378f,-0.350263f,0.198924f},
-{0.318361f,-0.270898f,0.207861f},{0.424351f,-0.152119f,0.216955f},{0.468735f,-0.01201f,0.224104f},
-{0.440595f,0.128099f,0.221864f},{0.345624f,0.246877f,0.204744f},{0.204291f,0.326243f,0.175963f},
-{0.00299471f,0.384278f,0.00834511f},{-0.168323f,0.354112f,-0.0183378f},{-0.310292f,0.268208f,-0.037007f},
-{-0.400615f,0.139643f,-0.0453738f},{-0.426773f,-0.0120101f,-0.0417815f},{-0.388287f,-0.163663f,-0.0263951f},
-{-0.294627f,-0.292228f,-0.00363743f},{-0.159976f,-0.378132f,0.0188579f},{-0.000457861f,-0.408298f,0.0352872f},
-{0.16409f,-0.378132f,0.0457485f},{0.309093f,-0.292228f,0.0547918f},{0.409769f,-0.163663f,0.0655529f},
-{0.448241f,-0.01201f,0.0751867f},{0.417527f,0.139643f,0.0763255f},{0.321835f,0.268208f,0.063497f},
-{0.17583f,0.354112f,0.038304f},{-0.0360629f,0.354112f,-0.137422f},{-0.205101f,0.326243f,-0.16811f},
-{-0.349242f,0.246877f,-0.191968f},{-0.440435f,0.128099f,-0.202512f},{-0.462794f,-0.0120101f,-0.19744f},
-{-0.416476f,-0.152119f,-0.179929f},{-0.314265f,-0.270898f,-0.157067f},{-0.17459f,-0.350263f,-0.136191f},
-{-0.0174526f,-0.378132f,-0.120891f},{0.135495f,-0.350263f,-0.109443f},{0.261894f,-0.270898f,-0.097771f},
-{0.343535f,-0.152119f,-0.084796f},{0.37068f,-0.01201f,-0.0746691f},{0.341234f,0.128099f,-0.0735399f},
-{0.257546f,0.246877f,-0.0848152f},{0.126641f,0.326243f,-0.107522f},{-0.0665829f,0.268208f,-0.265518f},
-{-0.201637f,0.246877f,-0.29431f},{-0.317741f,0.186134f,-0.317323f},{-0.391187f,0.0952246f,-0.328168f},
-{-0.408078f,-0.0120101f,-0.324621f},{-0.36797f,-0.119245f,-0.309713f},{-0.281561f,-0.210154f,-0.289619f},
-{-0.165397f,-0.270898f,-0.270117f},{-0.0379277f,-0.292228f,-0.253812f},{0.0821894f,-0.270898f,-0.239781f},
-{0.178018f,-0.210154f,-0.226133f},{0.237495f,-0.119245f,-0.213409f},{0.255139f,-0.01201f,-0.205296f},
-{0.2303f,0.0952247f,-0.205955f},{0.164496f,0.186134f,-0.217195f},{0.0619701f,0.246877f,-0.238064f},
-{-0.0811905f,0.139643f,-0.350506f},{-0.154437f,0.128099f,-0.367526f},{-0.216526f,0.0952246f,-0.381076f},
-{-0.25596f,0.0460249f,-0.38821f},{-0.2656f,-0.0120101f,-0.387748f},{-0.244385f,-0.0700451f,-0.380633f},
-{-0.196993f,-0.119245f,-0.369252f},{-0.132114f,-0.152119f,-0.356197f},{-0.0603973f,-0.163663f,-0.343273f},
-{0.00732452f,-0.152119f,-0.331343f},{0.0615615f,-0.119245f,-0.320972f},{0.0953903f,-0.070045f,-0.313197f},
-{0.104981f,-0.01201f,-0.309621f},{0.0893241f,0.046025f,-0.311711f},{0.0498191f,0.0952246f,-0.319978f},
-{-0.00948911f,0.128099f,-0.333609f},{-0.0775452f,-0.01201f,-0.377355f},{0.0662412f,0.347573f,0.213013f},
-{0.0212595f,0.408298f,0.0769026f},{-0.0451443f,0.401592f,0.0751623f},{-0.0935056f,0.382495f,0.0933802f},
-{-0.116134f,0.353914f,0.12753f},{-0.110884f,0.320201f,0.170755f},{-0.080312f,0.286488f,0.216042f},
-{-0.0293751f,0.257908f,0.258144f},{0.03577f,0.238811f,0.293126f},{0.107193f,0.232105f,0.316787f},
-{0.174518f,0.238811f,0.324478f},{0.226144f,0.257908f,0.312906f},{0.252486f,0.286488f,0.282327f},
-{0.249094f,0.320201f,0.237371f},{0.217421f,0.353914f,0.185944f},{0.163196f,0.382495f,0.13702f},
-{0.094519f,0.401592f,0.0986572f},{-0.0221509f,0.405034f,-0.0793323f},{-0.152293f,0.392643f,-0.0835134f},
-{-0.245868f,0.357357f,-0.0457555f},{-0.283508f,0.304547f,0.0260588f},{-0.265498f,0.242254f,0.112987f},
-{-0.205055f,0.17996f,0.197406f},{-0.114628f,0.12715f,0.272443f},{-0.00092518f,0.0918637f,0.336653f},
-{0.128716f,0.0794728f,0.383462f},{0.257523f,0.0918637f,0.400483f},{0.359249f,0.12715f,0.377982f},
-{0.40988f,0.17996f,0.316212f},{0.400654f,0.242254f,0.226581f},{0.339502f,0.304547f,0.127003f},
-{0.240755f,0.357357f,0.0348431f},{0.116104f,0.392644f,-0.0370932f},{-0.0601391f,0.33828f,-0.2307f},
-{-0.242846f,0.32209f,-0.243002f},{-0.375234f,0.275986f,-0.193027f},{-0.422369f,0.206987f,-0.0888319f},
-{-0.388625f,0.125596f,0.037377f},{-0.302564f,0.0442061f,0.155468f},{-0.18679f,-0.0247935f,0.257432f},
-{-0.0468511f,-0.0708974f,0.344428f},{0.116548f,-0.087087f,0.405712f},{0.28691f,-0.0708974f,0.421904f},
-{0.426097f,-0.0247934f,0.382089f},{0.495355f,0.0442061f,0.291519f},{0.482076f,0.125596f,0.169311f},
-{0.402609f,0.206987f,0.0401854f},{0.279861f,0.275986f,-0.0764741f},{0.123549f,0.32209f,-0.169952f},
-{-0.0843006f,0.218197f,-0.34676f},{-0.291441f,0.200673f,-0.367557f},{-0.445002f,0.150771f,-0.314761f},
-{-0.5f,0.0760863f,-0.194992f},{-0.460848f,-0.01201f,-0.0465844f},{-0.363663f,-0.100106f,0.0934045f},
-{-0.238408f,-0.174791f,0.213396f},{-0.0925815f,-0.224693f,0.31132f},{0.0771405f,-0.242217f,0.372066f},
-{0.258422f,-0.224693f,0.375976f},{0.411136f,-0.174791f,0.318319f},{0.49075f,-0.100106f,0.211715f},
-{0.481891f,-0.0120101f,0.0794369f},{0.402881f,0.0760863f,-0.0539284f},{0.278634f,0.150771f,-0.173653f},
-{0.115875f,0.200673f,-0.27448f}
-};
-static GLfloat normals [328][3] = {
-{0.14128f,0.678859f,-0.720549f},{0.141183f,0.470342f,-0.871117f},{0.0436259f,0.538027f,-0.841798f},
-{0.0679973f,0.716579f,-0.694184f},{-0.119311f,0.639257f,-0.759681f},{-0.00235058f,0.772214f,-0.635358f},
-{-0.255136f,0.759046f,-0.598962f},{-0.0474012f,0.827055f,-0.560118f},{-0.314039f,0.853304f,-0.416235f},
-{-0.0600024f,0.866637f,-0.495318f},{-0.292773f,0.915841f,-0.274809f},{-0.049072f,0.891986f,-0.449392f},
-{-0.212481f,0.95807f,-0.192231f},{-0.0178326f,0.908456f,-0.417599f},{-0.0920599f,0.982527f,-0.161757f},
-{0.0370726f,0.914058f,-0.403886f},{0.0521203f,0.982077f,-0.18113f},{0.108309f,0.902514f,-0.416819f},
-{0.201428f,0.946854f,-0.250789f},{0.179027f,0.872331f,-0.45496f},{0.331459f,0.872109f,-0.359945f},
-{0.23599f,0.827361f,-0.509688f},{0.418216f,0.768374f,-0.484455f},{0.271011f,0.775009f,-0.570888f},
-{0.450676f,0.660369f,-0.60067f},{0.28066f,0.726565f,-0.627163f},{0.433824f,0.571637f,-0.69644f},
-{0.269128f,0.691375f,-0.670501f},{0.379646f,0.512038f,-0.77051f},{0.242614f,0.670979f,-0.70066f},
-{0.296688f,0.482442f,-0.824152f},{0.20092f,0.665188f,-0.719135f},{0.111321f,0.0838976f,-0.990237f},
-{-0.029379f,0.177399f,-0.983701f},{-0.36291f,0.315654f,-0.876732f},{-0.636533f,0.537885f,-0.552726f},
-{-0.692297f,0.698565f,-0.180919f},{-0.609692f,0.790176f,0.0624294f},{-0.463645f,0.864983f,0.191929f},
-{-0.266794f,0.932768f,0.242413f},{-0.0294763f,0.976851f,0.211879f},{0.23276f,0.968844f,0.0846355f},
-{0.473096f,0.871906f,-0.126332f},{0.622688f,0.697126f,-0.355352f},{0.663374f,0.512375f,-0.54535f},
-{0.624155f,0.368076f,-0.689167f},{0.531327f,0.266649f,-0.804108f},{0.396108f,0.19478f,-0.897307f},
-{0.301284f,0.331535f,-0.894043f},{0.293635f,0.335978f,-0.894929f},{0.0262531f,-0.314782f,-0.948801f},
-{-0.145065f,-0.279238f,-0.949201f},{-0.600169f,-0.204803f,-0.773209f},{-0.94784f,0.0687263f,-0.311249f},
-{-0.931339f,0.326478f,0.161309f},{-0.775903f,0.471621f,0.418986f},{-0.595717f,0.581008f,0.554573f},
-{-0.378996f,0.685218f,0.621963f},{-0.1154f,0.782225f,0.612215f},{0.228237f,0.846899f,0.480282f},
-{0.608238f,0.775101f,0.17107f},{0.820052f,0.537806f,-0.19565f},{0.837034f,0.294875f,-0.460893f},
-{0.762505f,0.126921f,-0.634411f},{0.630338f,0.00231725f,-0.776317f},{0.436413f,-0.113109f,-0.892609f},
-{0.320267f,0.0147375f,-0.947213f},{0.348327f,-0.00790562f,-0.93734f},{-0.0276759f,-0.417145f,-0.908418f},
-{-0.141207f,-0.463983f,-0.874517f},{-0.573196f,-0.464631f,-0.674955f},{-0.943646f,-0.249543f,-0.217397f},
-{-0.961507f,0.0693531f,0.265886f},{-0.808033f,0.269491f,0.523886f},{-0.636184f,0.393708f,0.663524f},
-{-0.43775f,0.497816f,0.748702f},{-0.202579f,0.60248f,0.771997f},{0.122768f,0.708696f,0.694751f},
-{0.564416f,0.712283f,0.417239f},{0.875302f,0.482711f,-0.0289185f},{0.906907f,0.205191f,-0.367988f},
-{0.825239f,0.0254238f,-0.564212f},{0.68962f,-0.103674f,-0.716712f},{0.478163f,-0.232147f,-0.847035f},
-{0.283993f,-0.306895f,-0.908385f},{0.330854f,-0.348141f,-0.877117f},{-0.24469f,0.240557f,0.939286f},
-{-0.251704f,0.385303f,0.887799f},{-0.308507f,0.32877f,0.892599f},{-0.289709f,0.216471f,0.932314f},
-{-0.380036f,0.257873f,0.888298f},{-0.323023f,0.177913f,0.929518f},{-0.428302f,0.18168f,0.885183f},
-{-0.338313f,0.138727f,0.930752f},{-0.452208f,0.105373f,0.885666f},{-0.339696f,0.105884f,0.934556f},
-{-0.448119f,0.0223869f,0.893694f},{-0.329378f,0.0709806f,0.941526f},{-0.403498f,-0.0769257f,0.911741f},
-{-0.29726f,0.026574f,0.954427f},{-0.305208f,-0.184313f,0.934279f},{-0.23761f,-0.0127996f,0.971276f},
-{-0.164885f,-0.266084f,0.949743f},{-0.171302f,-0.0247511f,0.984908f},{-0.0181081f,-0.289546f,0.956993f},
-{-0.124133f,-0.0109379f,0.992205f},{0.104381f,-0.239271f,0.965326f},{-0.0977336f,0.0144596f,0.995108f},
-{0.181061f,-0.110489f,0.977246f},{-0.0826528f,0.0527337f,0.995182f},{0.187283f,0.0757574f,0.97938f},
-{-0.0822454f,0.112191f,0.990277f},{0.118036f,0.252508f,0.960368f},{-0.106176f,0.17836f,0.97822f},
-{0.00684446f,0.362199f,0.932075f},{-0.148821f,0.225033f,0.962919f},{-0.110459f,0.398641f,0.910431f},
-{-0.196851f,0.244267f,0.949517f},{-0.245786f,0.641112f,0.727025f},{-0.343754f,0.521981f,0.780621f},
-{-0.477819f,0.373685f,0.795015f},{-0.560849f,0.220352f,0.798056f},{-0.604243f,0.0766681f,0.793103f},
-{-0.610293f,-0.0768122f,0.788443f},{-0.549029f,-0.268252f,0.791586f},{-0.376462f,-0.476467f,0.794516f},
-{-0.114499f,-0.619894f,0.776287f},{0.154797f,-0.653379f,0.741036f},{0.39318f,-0.579683f,0.713707f},
-{0.593512f,-0.372979f,0.713183f},{0.677704f,-0.00981577f,0.735269f},{0.551652f,0.373004f,0.746021f},
-{0.301968f,0.598489f,0.742041f},{0.0536017f,0.664757f,0.745134f},{-0.100712f,0.511852f,0.85315f},
-{-0.129771f,0.495908f,0.858624f},{-0.224077f,0.885635f,0.406743f},{-0.377848f,0.760571f,0.52798f},
-{-0.594967f,0.529479f,0.604703f},{-0.714454f,0.270365f,0.645336f},{-0.764684f,0.0271108f,0.643835f},
-{-0.762621f,-0.221975f,0.607566f},{-0.664936f,-0.506592f,0.548839f},{-0.41186f,-0.772743f,0.482949f},
-{-0.051096f,-0.907492f,0.41695f},{0.296775f,-0.888489f,0.350018f},{0.596061f,-0.754371f,0.275021f},
-{0.85112f,-0.486344f,0.197646f},{0.98554f,-0.0575001f,0.159391f},{0.884713f,0.423397f,0.194983f},
-{0.588143f,0.759515f,0.277894f},{0.243699f,0.899532f,0.362565f},{0.0295394f,0.808074f,0.588339f},
-{0.00266324f,0.793476f,0.608596f},{-0.166151f,0.985993f,-0.0145344f},{-0.359567f,0.924003f,0.130114f},
-{-0.671899f,0.688429f,0.273162f},{-0.862314f,0.339548f,0.375661f},{-0.920945f,-0.0299612f,0.38854f},
-{-0.869365f,-0.38079f,0.314966f},{-0.692245f,-0.695493f,0.192579f},{-0.384078f,-0.919936f,0.0787546f},
-{-0.0074353f,-0.999946f,0.00727214f},{0.355557f,-0.933553f,-0.0453544f},{0.663383f,-0.738106f,-0.122974f},
-{0.877978f,-0.422365f,-0.225307f},{0.955101f,-0.0281345f,-0.294941f},{0.883327f,0.374643f,-0.281737f},
-{0.66969f,0.716173f,-0.196498f},{0.354359f,0.930543f,-0.0922975f},{0.141093f,0.97558f,0.168336f},
-{0.137781f,0.975371f,0.172241f},{-0.0634033f,0.902267f,-0.426491f},{-0.254884f,0.910829f,-0.324692f},
-{-0.616918f,0.75457f,-0.223688f},{-0.913479f,0.387278f,-0.12479f},{-0.991529f,-0.0944241f,-0.0891887f},
-{-0.854436f,-0.500204f,-0.140481f},{-0.601812f,-0.762834f,-0.236446f},{-0.297768f,-0.898656f,-0.322104f},
-{0.0285855f,-0.925596f,-0.377432f},{0.355549f,-0.835223f,-0.419508f},{0.633205f,-0.614776f,-0.470215f},
-{0.79464f,-0.30479f,-0.525023f},{0.829099f,0.0136054f,-0.558937f},{0.771688f,0.307959f,-0.55647f},
-{0.624717f,0.582898f,-0.519575f},{0.382273f,0.799786f,-0.462828f},{0.208037f,0.945407f,-0.250852f},
-{0.208547f,0.945131f,-0.251467f},{0.0633847f,0.652646f,-0.755007f},{-0.0776665f,0.694041f,-0.715734f},
-{-0.348809f,0.594039f,-0.724879f},{-0.609141f,0.313102f,-0.728639f},{-0.706685f,-0.109053f,-0.699073f},
-{-0.589105f,-0.460862f,-0.663748f},{-0.380198f,-0.649568f,-0.658416f},{-0.154288f,-0.721326f,-0.675192f},
-{0.0801603f,-0.709847f,-0.69978f},{0.317168f,-0.612361f,-0.724167f},{0.519448f,-0.425555f,-0.740997f},
-{0.638214f,-0.189666f,-0.74613f},{0.666605f,0.0358181f,-0.74455f},{0.628162f,0.235219f,-0.741677f},
-{0.529309f,0.420798f,-0.736723f},{0.367696f,0.579372f,-0.727412f},{0.253299f,0.765813f,-0.591076f},
-{0.239904f,0.778869f,-0.57949f},{0.155817f,0.364748f,-0.917976f},{0.0934699f,0.390725f,-0.91575f},
-{-0.0428585f,0.321547f,-0.945923f},{-0.16274f,0.162966f,-0.973118f},{-0.222045f,-0.0578604f,-0.973318f},
-{-0.196312f,-0.258955f,-0.945729f},{-0.111267f,-0.384068f,-0.916576f},{0.00190306f,-0.435736f,-0.900072f},
-{0.130312f,-0.42732f,-0.89466f},{0.263266f,-0.362605f,-0.893985f},{0.379493f,-0.249171f,-0.89101f},
-{0.455659f,-0.111402f,-0.883156f},{0.483731f,0.022104f,-0.874938f},{0.469613f,0.140137f,-0.871679f},
-{0.418676f,0.244517f,-0.874598f},{0.333936f,0.331632f,-0.88233f},{0.274051f,0.497279f,-0.823171f},
-{0.259802f,0.511801f,-0.818879f},{0.196491f,0.175512f,-0.964669f},{0.137502f,0.144211f,-0.979947f},
-{0.0851134f,0.0758425f,-0.993481f},{0.0551697f,-0.0171193f,-0.99833f},{0.0548916f,-0.101711f,-0.993298f},
-{0.0738492f,-0.156685f,-0.984884f},{0.101758f,-0.187181f,-0.977041f},{0.142158f,-0.201712f,-0.969073f},
-{0.202039f,-0.192944f,-0.960184f},{0.271485f,-0.147866f,-0.951016f},{0.324833f,-0.0743643f,-0.942843f},
-{0.347908f,0.000269599f,-0.937529f},{0.347281f,0.0599932f,-0.93584f},{0.33107f,0.108334f,-0.937367f},
-{0.299181f,0.148955f,-0.942498f},{0.252396f,0.174568f,-0.951747f},{-0.101791f,0.89554f,0.433181f},
-{-0.10134f,0.982935f,0.153519f},{-0.198237f,0.947331f,0.251529f},{-0.164187f,0.866134f,0.472075f},
-{-0.328502f,0.861858f,0.386377f},{-0.22236f,0.81515f,0.534871f},{-0.407264f,0.738985f,0.53669f},
-{-0.261475f,0.745438f,0.61315f},{-0.423584f,0.613071f,0.666874f},{-0.268118f,0.677242f,0.685169f},
-{-0.392497f,0.519335f,0.759103f},{-0.24919f,0.634149f,0.731956f},{-0.338078f,0.471162f,0.814684f},
-{-0.22364f,0.617892f,0.753787f},{-0.270615f,0.460525f,0.84539f},{-0.194833f,0.616506f,0.762863f},
-{-0.183681f,0.479089f,0.858333f},{-0.149814f,0.630977f,0.761199f},{-0.0646262f,0.532383f,0.844033f},
-{-0.0833697f,0.671555f,0.736249f},{0.0858598f,0.628864f,0.77276f},{-0.0110594f,0.735267f,0.677687f},
-{0.225661f,0.746376f,0.626099f},{0.0402802f,0.800838f,0.597525f},{0.297614f,0.844032f,0.446135f},
-{0.0578062f,0.850871f,0.522185f},{0.287181f,0.911623f,0.294058f},{0.0462129f,0.884f,0.465197f},
-{0.212292f,0.957645f,0.194545f},{0.0112676f,0.903058f,0.429371f},{0.0946535f,0.984007f,0.1509f},
-{-0.0411956f,0.907323f,0.418412f},{-0.0768357f,0.963819f,-0.255243f},{-0.231191f,0.968651f,-0.0909206f},
-{-0.478011f,0.865024f,0.152442f},{-0.613761f,0.668302f,0.420321f},{-0.621661f,0.468695f,0.627584f},
-{-0.555999f,0.333983f,0.761131f},{-0.465216f,0.269773f,0.843087f},{-0.358395f,0.248428f,0.899909f},
-{-0.215945f,0.246155f,0.944868f},{-0.00160027f,0.275933f,0.961176f},{0.307449f,0.391756f,0.867181f},
-{0.57879f,0.576987f,0.57627f},{0.658558f,0.716536f,0.229952f},{0.597679f,0.801598f,-0.0148259f},
-{0.460401f,0.872625f,-0.162965f},{0.266984f,0.934523f,-0.235344f},{0.103983f,0.993374f,-0.048947f},
-{0.105796f,0.993123f,-0.0501399f},{-0.0197862f,0.790362f,-0.61232f},{-0.242279f,0.852503f,-0.463184f},
-{-0.632416f,0.763443f,-0.131166f},{-0.817379f,0.505342f,0.276625f},{-0.788174f,0.265216f,0.555375f},
-{-0.687043f,0.131972f,0.714531f},{-0.56985f,0.0751975f,0.818301f},{-0.421735f,0.0372272f,0.905954f},
-{-0.203784f,-0.0289837f,0.978587f},{0.124815f,-0.104369f,0.986675f},{0.577569f,-0.0689256f,0.813427f},
-{0.917184f,0.152931f,0.367949f},{0.924202f,0.373489f,-0.0797226f},{0.792991f,0.508953f,-0.334863f},
-{0.620113f,0.617825f,-0.483478f},{0.394039f,0.719565f,-0.571804f},{0.224221f,0.865854f,-0.447239f},
-{0.212217f,0.873358f,-0.438418f},{0.0136589f,0.693472f,-0.720354f},{-0.145306f,0.729801f,-0.668039f},
-{-0.601517f,0.69868f,-0.387329f},{-0.891335f,0.442876f,0.0968627f},{-0.872552f,0.175056f,0.45608f},
-{-0.763231f,0.0371769f,0.645055f},{-0.642575f,-0.0180662f,0.76601f},{-0.48495f,-0.0563598f,0.872724f},
-{-0.238167f,-0.142315f,0.960741f},{0.123424f,-0.279803f,0.952091f},{0.574493f,-0.347868f,0.740908f},
-{0.939284f,-0.188771f,0.28655f},{0.979786f,0.0995065f,-0.173547f},{0.850407f,0.302179f,-0.430692f},
-{0.68788f,0.4362f,-0.580131f},{0.478047f,0.550419f,-0.684478f},{0.3163f,0.607377f,-0.72873f},
-{0.292721f,0.633415f,-0.71631f}
-};
-static GLfloat textures [152][2] = {
-{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f},
-{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f},
-{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f},
-{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f},
-{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f},
-{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f},
-{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f},
-{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f},
-{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f},
-{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f},
-{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f},
-{0.0f,0.75f},{0.0625f,0.75f},{0.125f,0.75f},
-{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f},
-{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f},
-{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f},
-{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f},
-{0.9375f,0.75f},{1.0f,0.75f},{0.0f,0.625f},
-{0.0625f,0.625f},{0.125f,0.625f},{0.1875f,0.625f},
-{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f},
-{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f},
-{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f},
-{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f},
-{1.0f,0.625f},{0.0f,0.5f},{0.0625f,0.5f},
-{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f},
-{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f},
-{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f},
-{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f},
-{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f},
-{0.0f,0.375f},{0.0625f,0.375f},{0.125f,0.375f},
-{0.1875f,0.375f},{0.25f,0.375f},{0.3125f,0.375f},
-{0.375f,0.375f},{0.4375f,0.375f},{0.5f,0.375f},
-{0.5625f,0.375f},{0.625f,0.375f},{0.6875f,0.375f},
-{0.75f,0.375f},{0.8125f,0.375f},{0.875f,0.375f},
-{0.9375f,0.375f},{1.0f,0.375f},{0.0f,0.25f},
-{0.0625f,0.25f},{0.125f,0.25f},{0.1875f,0.25f},
-{0.25f,0.25f},{0.3125f,0.25f},{0.375f,0.25f},
-{0.4375f,0.25f},{0.5f,0.25f},{0.5625f,0.25f},
-{0.625f,0.25f},{0.6875f,0.25f},{0.75f,0.25f},
-{0.8125f,0.25f},{0.875f,0.25f},{0.9375f,0.25f},
-{1.0f,0.25f},{0.0f,0.125f},{0.0625f,0.125f},
-{0.125f,0.125f},{0.1875f,0.125f},{0.25f,0.125f},
-{0.3125f,0.125f},{0.375f,0.125f},{0.4375f,0.125f},
-{0.5f,0.125f},{0.5625f,0.125f},{0.625f,0.125f},
-{0.6875f,0.125f},{0.75f,0.125f},{0.8125f,0.125f},
-{0.875f,0.125f},{0.9375f,0.125f},{1.0f,0.125f},
-{0.0f,1.25145e-008f},{0.0625f,1.25145e-008f},{0.125f,1.25145e-008f},
-{0.1875f,1.25145e-008f},{0.25f,1.25145e-008f},{0.3125f,1.25145e-008f},
-{0.375f,1.25145e-008f},{0.4375f,1.25145e-008f},{0.5f,1.25145e-008f},
-{0.5625f,1.25145e-008f},{0.625f,1.25145e-008f},{0.6875f,1.25145e-008f},
-{0.75f,1.25145e-008f},{0.8125f,1.25145e-008f},{0.875f,1.25145e-008f},
-{0.9375f,1.25145e-008f},{1.0f,0.125f}
-};
-/*Material indicies*/
-/*{material index,face count}*/
-static int material_ref [3][2] = {
-{0,112},
-{1,224},
-{0,112}
-};
-//comment out
-/*
-struct DIB2D{
- BITMAPINFOHEADER *Info;
- RGBQUAD *palette;
- BYTE *bits;
-};
-struct GLTXTLOAD{
- GLint format;
- GLint perpixel;
- GLint Width;
- GLint Height;
- BYTE* bits;
-};
-*/
-
-/*
-BOOL LoadDIB(char*file,DIB2D*dib)
-Only trueColor and 256 color ucompressed bitmaps supported
-*/
-
-//comment out
-/*
-
-BOOL LoadDIB(char*file,DIB2D*dib)
- {
- BOOL result=FALSE;
- HANDLE hfile=CreateFile(file,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,0);
- if(hfile!=INVALID_HANDLE_VALUE)
- {
- DWORD readed;
- int size=GetFileSize(hfile,0);
- if(size>sizeof(BITMAPFILEHEADER))
- {
- BITMAPFILEHEADER bmfh;
- ReadFile(hfile,&bmfh,sizeof(BITMAPFILEHEADER),&readed,0);
- if((readed==sizeof(BITMAPFILEHEADER)) && (bmfh.bfType==0x4d42))
- {
- dib->Info=(BITMAPINFOHEADER*)(new BYTE[size-sizeof(BITMAPFILEHEADER)]);
- ReadFile(hfile,dib->Info,size-sizeof(BITMAPFILEHEADER),&readed,0);
- dib->bits=(BYTE*)(dib->Info+1);
-
- if(dib->Info->biBitCount==8)
- {
- dib->palette=(RGBQUAD*)dib->bits;
- if(dib->Info->biClrUsed)dib->bits+=dib->Info->biClrUsed*4;else dib->bits+=1024;
- }else{
- dib->palette=NULL;
- }
- result=TRUE;
- }
- }
- CloseHandle(hfile);
- }
- return result;
- };
-
-long ScanBytes(int pixWidth, int bitsPixel) {
- return (((long)pixWidth*bitsPixel+31) / 32) * 4;
-}
-
-BOOL ScaleImage(DIB2D&dib,GLTXTLOAD&p)
- {
- GLint glMaxTexDim; // OpenGL maximum texture dimension
- GLint XDMaxTexDim=512; // user maximum texture dimension
- GLint minsize =2;
- double xPow2, yPow2;
- int ixPow2, iyPow2;
- int xSize2, ySize2;
- GLint m_iWidth=dib.Info->biWidth;
- GLint m_iHeight=dib.Info->biHeight;
- glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glMaxTexDim);
-
- glMaxTexDim = min(XDMaxTexDim, glMaxTexDim);
-
- if (m_iWidth <= glMaxTexDim)
- xPow2 = log((double)m_iWidth) / log(2.0);
- else
- xPow2 = log((double)glMaxTexDim) / log(2.0);
-
- if (m_iHeight <= glMaxTexDim)
- yPow2 = log((double)m_iHeight) / log(2.0);
- else
- yPow2 = log((double)glMaxTexDim) / log(2.0);
-
- ixPow2 = (int)xPow2;
- iyPow2 = (int)yPow2;
-
- if (xPow2 != (double)ixPow2)
- ixPow2++;
- if (yPow2 != (double)iyPow2)
- iyPow2++;
-
- xSize2 = 1 << ixPow2;
- ySize2 = 1 << iyPow2;
-
- if(xSize2<minsize)xSize2=minsize;
- if(ySize2<minsize)ySize2=minsize;
-
- if(((xSize2==m_iWidth) && (ySize2==m_iHeight)))
- {
- if(dib.Info->biBitCount==24){
- p.format=GL_BGR_EXT;
- p.perpixel=3;
- return FALSE;
- }
- if(dib.Info->biBitCount==32)
- {
- p.format=GL_BGRA_EXT;
- p.perpixel=4;
- return FALSE;
- }
- }
-
- BYTE *bits=(BYTE *)dib.bits;
- if(dib.Info->biBitCount==8){
-
- // convert to TRUECOLOR
- int _perline=ScanBytes(8,m_iWidth);
- int perline=ScanBytes(24,m_iWidth);
- bits= new BYTE[perline*m_iHeight * sizeof(BYTE)];
- for(int y=0;y<m_iHeight;y++){
- BYTE *_b=((BYTE *)dib.bits)+y*_perline;
- BYTE *b=bits+y*perline;
- for(int x=0;x<m_iWidth;x++){
- RGBQUAD _p=dib.palette[*_b];
- _b++;
- *b=_p.rgbBlue;b++;
- *b=_p.rgbGreen;b++;
- *b=_p.rgbRed;b++;
- }
- }
- }
- BOOL isAlpha=(dib.Info->biBitCount==32);
- int _mem_size=xSize2 * ySize2 * sizeof(BYTE);
- if(isAlpha){
- _mem_size*=4;
- p.perpixel=4;
- p.format=GL_BGRA_EXT;
- }else {
- _mem_size*=3;
- p.perpixel=3;
- p.format=GL_BGR_EXT;
- }
- BYTE *pData = (BYTE*)new BYTE[_mem_size];
- if (!pData) return FALSE;
-
- if(isAlpha){
- gluScaleImage(GL_BGRA_EXT, m_iWidth, m_iHeight,
- GL_UNSIGNED_BYTE, bits,
- xSize2, ySize2, GL_UNSIGNED_BYTE, pData);
- }
- else
- gluScaleImage(GL_RGB, m_iWidth, m_iHeight,
- GL_UNSIGNED_BYTE, bits,
- xSize2, ySize2, GL_UNSIGNED_BYTE, pData);
-
-
- if(bits!=dib.bits)delete bits;
-// m_pBits = pData;
- m_iWidth = xSize2 ;
- m_iHeight = ySize2 ;
- p.Width=m_iWidth;
- p.Height=m_iHeight;
- p.bits=pData;
-
- return TRUE ;
- }
-void LoadTexture(char*filename)
- {
- DIB2D dib;
- GLTXTLOAD load;
- if(LoadDIB(filename,&dib))
- {
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- if(ScaleImage(dib,load))
- {
- glTexImage2D(GL_TEXTURE_2D,0,load.perpixel,
- load.Width,load.Height,0,
- load.format,GL_UNSIGNED_BYTE,
- load.bits);
- delete load.bits;
- }else{
-
- glTexImage2D(GL_TEXTURE_2D,0,load.perpixel,
- dib.Info->biWidth,dib.Info->biHeight,
- 0,load.format,GL_UNSIGNED_BYTE,dib.bits);
- }
- delete dib.Info;
- }
-
- //DeleteObject(hbitmap);
- };
-*/
-
-void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
-{
- GLfloat d[4];
- d[0]=f[0];
- d[1]=f[1];
- d[2]=f[2];
- d[3]=alpha;
- glMaterialfv (GL_FRONT_AND_BACK,mode,d);
-}
-/*
- * SelectMaterial uses OpenGL commands to define facet colors.
- *
- * Returns:
- * Nothing
- */
-
-void SelectMaterial(int i)
-{
- //
- // Define the reflective properties of the 3D Object faces.
- //
- glEnd();
- GLfloat alpha=materials[i].alpha;
- MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
- MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
- MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
- MyMaterial (GL_EMISSION, materials[i].emission,alpha);
- glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
- glEnd();
- if(materials[i].texture>-1)
- {
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D,texture_maps[materials[i].texture].id);
- }
- else
- glDisable(GL_TEXTURE_2D);
- glBegin(GL_TRIANGLES);
-
- glBegin(GL_TRIANGLES);
-
-};
-
-GLint Gen3DObjectList()
-{
- int i;
- int j;
-
- GLuint texture_name;
-
-for(i=0;i<244;i++){
- vertices[i][2]-=5;
-}
-
- glGenTextures(1,&texture_name);
- texture_maps[0].id=texture_name;
- glBindTexture(GL_TEXTURE_2D,texture_name);
- //LoadTexture(texture_maps[0].name);
- GLint lid=glGenLists(1);
- int mcount=0;
- int mindex=0;
- glNewList(lid, GL_COMPILE);
-
- glBegin (GL_TRIANGLES);
- for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
- {
- if(!mcount)
- {
- SelectMaterial(material_ref[mindex][0]);
- mcount=material_ref[mindex][1];
- mindex++;
- }
- mcount--;
- for(j=0;j<3;j++)
- {
- int vi=face_indicies[i][j];
- int ni=face_indicies[i][j+3];//Normal index
- int ti=face_indicies[i][j+6];//Texture index
- glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
- glTexCoord2f(textures[ti][0],textures[ti][1]);
- glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
- }
- }
- glEnd ();
-
- glEndList();
- return lid;
-};
diff --git a/pidgin/plugins/crazychat/eye.h b/pidgin/plugins/crazychat/eye.h
deleted file mode 100644
index 94ae082768..0000000000
--- a/pidgin/plugins/crazychat/eye.h
+++ /dev/null
@@ -1 +0,0 @@
-GLint Gen3DObjectList(void);
diff --git a/pidgin/plugins/crazychat/eyes.c b/pidgin/plugins/crazychat/eyes.c
deleted file mode 100644
index f6915c017f..0000000000
--- a/pidgin/plugins/crazychat/eyes.c
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
-This file was produced by Deep Exploration Plugin: CPP Export filter.
-
-Deep Exploration
-
-Copyright (c) 1999-2003 Right Hemisphere, Inc
-
-WWW http://www.righthemisphere.com/dexp.htm
-eMail support@righthemisphere.com
-*/
-//#include <windows.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "mat_struct.h"
-#include "eyes.h"
-#include "lids.h"
-
-GLint eyes;
-
-
-static sample_MATERIAL materials [2] = {
- {{0.160784f,0.2f,0.32549f}, {0.952941f,0.964706f,1.0f}, {0.044902f,0.044902f,0.044902f}, {0.0f,0.0f,0.0f}, 1.0f,6.96441f,-1}, //Material #532
- {{0.2f,0.34902f,0.2f}, {0.0f,0.0f,0.0f}, {0.179608f,0.179608f,0.179608f}, {0.0f,0.0f,0.0f}, 1.0f,14.9285f,-1} //Material #2
-};
-
-// 228 Verticies
-// 152 Texture Coordinates
-// 312 Normals
-// 448 Triangles
-
-static short face_indicies[448][9] = {
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {18,2,1 ,32,2,1 ,33,2,1 }, {1,17,18 ,1,33,32 ,1,34,33 },
- {19,3,2 ,34,4,2 ,35,4,2 }, {2,18,19 ,2,32,34 ,2,33,35 }, {20,4,3 ,35,6,4 ,36,6,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {21,5,4 ,36,8,6 ,37,8,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {22,6,5 ,37,10,8 ,38,10,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {23,7,6 ,38,12,10 ,39,12,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {24,8,7 ,39,14,12 ,40,14,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {25,9,8 ,40,16,14 ,41,16,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {26,10,9 ,41,18,16 ,42,18,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {27,11,10 ,42,20,18 ,43,20,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {28,12,11 ,43,22,20 ,44,22,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {29,13,12 ,44,24,22 ,45,24,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {30,14,13 ,45,26,24 ,46,26,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {31,15,14 ,46,28,26 ,47,28,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {32,16,15 ,47,30,28 ,48,30,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {17,1,16 ,48,48,30 ,49,32,30 },
- {16,32,17 ,30,47,49 ,30,48,49 }, {34,18,17 ,50,32,33 ,50,33,34 },
- {17,33,34 ,33,51,50 ,34,51,50 }, {35,19,18 ,52,34,32 ,52,35,33 },
- {18,34,35 ,32,50,52 ,33,50,52 }, {36,20,19 ,53,35,34 ,53,36,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {37,21,20 ,54,36,35 ,54,37,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {38,22,21 ,55,37,36 ,55,38,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {39,23,22 ,56,38,37 ,56,39,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {40,24,23 ,57,39,38 ,57,40,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {41,25,24 ,58,40,39 ,58,41,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {42,26,25 ,59,41,40 ,59,42,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {43,27,26 ,60,42,41 ,60,43,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {44,28,27 ,61,43,42 ,61,44,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {45,29,28 ,62,44,43 ,62,45,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {46,30,29 ,63,45,44 ,63,46,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {47,31,30 ,64,46,45 ,64,47,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {48,32,31 ,65,47,46 ,65,48,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {33,17,32 ,66,66,47 ,66,49,48 },
- {32,48,33 ,47,65,67 ,48,65,66 }, {50,34,33 ,68,50,51 ,67,50,51 },
- {33,49,50 ,51,69,68 ,51,68,67 }, {51,35,34 ,70,52,50 ,69,52,50 },
- {34,50,51 ,50,68,70 ,50,67,69 }, {52,36,35 ,71,53,52 ,70,53,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {53,37,36 ,72,54,53 ,71,54,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {54,38,37 ,73,55,54 ,72,55,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {55,39,38 ,74,56,55 ,73,56,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {56,40,39 ,75,57,56 ,74,57,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {57,41,40 ,76,58,57 ,75,58,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {58,42,41 ,77,59,58 ,76,59,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {59,43,42 ,78,60,59 ,77,60,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {60,44,43 ,79,61,60 ,78,61,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {61,45,44 ,80,62,61 ,79,62,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {62,46,45 ,81,63,62 ,80,63,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {63,47,46 ,82,64,63 ,81,64,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {64,48,47 ,83,65,64 ,82,65,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {49,33,48 ,84,84,65 ,83,66,65 },
- {48,64,49 ,65,83,85 ,65,82,83 }, {66,50,49 ,86,68,69 ,84,67,68 },
- {49,65,66 ,69,87,86 ,68,85,84 }, {67,51,50 ,88,70,68 ,86,69,67 },
- {50,66,67 ,68,86,88 ,67,84,86 }, {68,52,51 ,89,71,70 ,87,70,69 },
- {51,67,68 ,70,88,89 ,69,86,87 }, {69,53,52 ,90,72,71 ,88,71,70 },
- {52,68,69 ,71,89,90 ,70,87,88 }, {70,54,53 ,91,73,72 ,89,72,71 },
- {53,69,70 ,72,90,91 ,71,88,89 }, {71,55,54 ,92,74,73 ,90,73,72 },
- {54,70,71 ,73,91,92 ,72,89,90 }, {72,56,55 ,93,75,74 ,91,74,73 },
- {55,71,72 ,74,92,93 ,73,90,91 }, {73,57,56 ,94,76,75 ,92,75,74 },
- {56,72,73 ,75,93,94 ,74,91,92 }, {74,58,57 ,95,77,76 ,93,76,75 },
- {57,73,74 ,76,94,95 ,75,92,93 }, {75,59,58 ,96,78,77 ,94,77,76 },
- {58,74,75 ,77,95,96 ,76,93,94 }, {76,60,59 ,97,79,78 ,95,78,77 },
- {59,75,76 ,78,96,97 ,77,94,95 }, {77,61,60 ,98,80,79 ,96,79,78 },
- {60,76,77 ,79,97,98 ,78,95,96 }, {78,62,61 ,99,81,80 ,97,80,79 },
- {61,77,78 ,80,98,99 ,79,96,97 }, {79,63,62 ,100,82,81 ,98,81,80 },
- {62,78,79 ,81,99,100 ,80,97,98 }, {80,64,63 ,101,83,82 ,99,82,81 },
- {63,79,80 ,82,100,101 ,81,98,99 }, {65,49,64 ,102,102,83 ,100,83,82 },
- {64,80,65 ,83,101,103 ,82,99,100 }, {82,66,65 ,104,86,87 ,101,84,85 },
- {65,81,82 ,87,105,104 ,85,102,101 }, {83,67,66 ,106,88,86 ,103,86,84 },
- {66,82,83 ,86,104,106 ,84,101,103 }, {84,68,67 ,107,89,88 ,104,87,86 },
- {67,83,84 ,88,106,107 ,86,103,104 }, {85,69,68 ,108,90,89 ,105,88,87 },
- {68,84,85 ,89,107,108 ,87,104,105 }, {86,70,69 ,109,91,90 ,106,89,88 },
- {69,85,86 ,90,108,109 ,88,105,106 }, {87,71,70 ,110,92,91 ,107,90,89 },
- {70,86,87 ,91,109,110 ,89,106,107 }, {88,72,71 ,111,93,92 ,108,91,90 },
- {71,87,88 ,92,110,111 ,90,107,108 }, {89,73,72 ,112,94,93 ,109,92,91 },
- {72,88,89 ,93,111,112 ,91,108,109 }, {90,74,73 ,113,95,94 ,110,93,92 },
- {73,89,90 ,94,112,113 ,92,109,110 }, {91,75,74 ,114,96,95 ,111,94,93 },
- {74,90,91 ,95,113,114 ,93,110,111 }, {92,76,75 ,115,97,96 ,112,95,94 },
- {75,91,92 ,96,114,115 ,94,111,112 }, {93,77,76 ,116,98,97 ,113,96,95 },
- {76,92,93 ,97,115,116 ,95,112,113 }, {94,78,77 ,117,99,98 ,114,97,96 },
- {77,93,94 ,98,116,117 ,96,113,114 }, {95,79,78 ,118,100,99 ,115,98,97 },
- {78,94,95 ,99,117,118 ,97,114,115 }, {96,80,79 ,119,101,100 ,116,99,98 },
- {79,95,96 ,100,118,119 ,98,115,116 }, {81,65,80 ,120,120,101 ,117,100,99 },
- {80,96,81 ,101,119,121 ,99,116,117 }, {98,82,81 ,122,104,105 ,118,101,102 },
- {81,97,98 ,105,123,122 ,102,119,118 }, {99,83,82 ,124,106,104 ,120,103,101 },
- {82,98,99 ,104,122,124 ,101,118,120 }, {100,84,83 ,125,107,106 ,121,104,103 },
- {83,99,100 ,106,124,125 ,103,120,121 }, {101,85,84 ,126,108,107 ,122,105,104 },
- {84,100,101 ,107,125,126 ,104,121,122 }, {102,86,85 ,127,109,108 ,123,106,105 },
- {85,101,102 ,108,126,127 ,105,122,123 }, {103,87,86 ,128,110,109 ,124,107,106 },
- {86,102,103 ,109,127,128 ,106,123,124 }, {104,88,87 ,129,111,110 ,125,108,107 },
- {87,103,104 ,110,128,129 ,107,124,125 }, {105,89,88 ,130,112,111 ,126,109,108 },
- {88,104,105 ,111,129,130 ,108,125,126 }, {106,90,89 ,131,113,112 ,127,110,109 },
- {89,105,106 ,112,130,131 ,109,126,127 }, {107,91,90 ,132,114,113 ,128,111,110 },
- {90,106,107 ,113,131,132 ,110,127,128 }, {108,92,91 ,133,115,114 ,129,112,111 },
- {91,107,108 ,114,132,133 ,111,128,129 }, {109,93,92 ,134,116,115 ,130,113,112 },
- {92,108,109 ,115,133,134 ,112,129,130 }, {110,94,93 ,135,117,116 ,131,114,113 },
- {93,109,110 ,116,134,135 ,113,130,131 }, {111,95,94 ,136,118,117 ,132,115,114 },
- {94,110,111 ,117,135,136 ,114,131,132 }, {112,96,95 ,137,119,118 ,133,116,115 },
- {95,111,112 ,118,136,137 ,115,132,133 }, {97,81,96 ,138,138,119 ,134,117,116 },
- {96,112,97 ,119,137,139 ,116,133,134 }, {113,98,97 ,140,122,123 ,135,118,119 },
- {113,99,98 ,141,124,122 ,136,120,118 }, {113,100,99 ,142,125,124 ,137,121,120 },
- {113,101,100 ,143,126,125 ,138,122,121 }, {113,102,101 ,144,127,126 ,139,123,122 },
- {113,103,102 ,145,128,127 ,140,124,123 }, {113,104,103 ,146,129,128 ,141,125,124 },
- {113,105,104 ,147,130,129 ,142,126,125 }, {113,106,105 ,148,131,130 ,143,127,126 },
- {113,107,106 ,149,132,131 ,144,128,127 }, {113,108,107 ,150,133,132 ,145,129,128 },
- {113,109,108 ,151,134,133 ,146,130,129 }, {113,110,109 ,152,135,134 ,147,131,130 },
- {113,111,110 ,153,136,135 ,148,132,131 }, {113,112,111 ,154,137,136 ,149,133,132 },
- {113,97,112 ,155,155,137 ,150,134,133 }, {115,114,116 ,156,157,158 ,1,0,2 },
- {116,114,117 ,158,159,160 ,2,3,4 }, {117,114,118 ,160,161,162 ,4,5,6 },
- {118,114,119 ,162,163,164 ,6,7,8 }, {119,114,120 ,164,165,166 ,8,9,10 },
- {120,114,121 ,166,167,168 ,10,11,12 }, {121,114,122 ,168,169,170 ,12,13,14 },
- {122,114,123 ,170,171,172 ,14,15,16 }, {123,114,124 ,172,173,174 ,16,17,18 },
- {124,114,125 ,174,175,176 ,18,19,20 }, {125,114,126 ,176,177,178 ,20,21,22 },
- {126,114,127 ,178,179,180 ,22,23,24 }, {127,114,128 ,180,181,182 ,24,25,26 },
- {128,114,129 ,182,183,184 ,26,27,28 }, {129,114,130 ,184,185,186 ,28,29,30 },
- {130,114,115 ,186,187,187 ,30,31,32 }, {115,116,132 ,156,158,188 ,1,2,33 },
- {132,131,115 ,188,189,156 ,33,34,1 }, {116,117,133 ,158,160,190 ,2,4,35 },
- {133,132,116 ,190,188,158 ,35,33,2 }, {117,118,134 ,160,162,191 ,4,6,36 },
- {134,133,117 ,191,190,160 ,36,35,4 }, {118,119,135 ,162,164,192 ,6,8,37 },
- {135,134,118 ,192,191,162 ,37,36,6 }, {119,120,136 ,164,166,193 ,8,10,38 },
- {136,135,119 ,193,192,164 ,38,37,8 }, {120,121,137 ,166,168,194 ,10,12,39 },
- {137,136,120 ,194,193,166 ,39,38,10 }, {121,122,138 ,168,170,195 ,12,14,40 },
- {138,137,121 ,195,194,168 ,40,39,12 }, {122,123,139 ,170,172,196 ,14,16,41 },
- {139,138,122 ,196,195,170 ,41,40,14 }, {123,124,140 ,172,174,197 ,16,18,42 },
- {140,139,123 ,197,196,172 ,42,41,16 }, {124,125,141 ,174,176,198 ,18,20,43 },
- {141,140,124 ,198,197,174 ,43,42,18 }, {125,126,142 ,176,178,199 ,20,22,44 },
- {142,141,125 ,199,198,176 ,44,43,20 }, {126,127,143 ,178,180,200 ,22,24,45 },
- {143,142,126 ,200,199,178 ,45,44,22 }, {127,128,144 ,180,182,201 ,24,26,46 },
- {144,143,127 ,201,200,180 ,46,45,24 }, {128,129,145 ,182,184,202 ,26,28,47 },
- {145,144,128 ,202,201,182 ,47,46,26 }, {129,130,146 ,184,186,203 ,28,30,48 },
- {146,145,129 ,203,202,184 ,48,47,28 }, {130,115,131 ,186,204,204 ,30,32,49 },
- {131,146,130 ,205,203,186 ,49,48,30 }, {131,132,148 ,189,188,206 ,34,33,50 },
- {148,147,131 ,206,207,189 ,50,51,34 }, {132,133,149 ,188,190,208 ,33,35,52 },
- {149,148,132 ,208,206,188 ,52,50,33 }, {133,134,150 ,190,191,209 ,35,36,53 },
- {150,149,133 ,209,208,190 ,53,52,35 }, {134,135,151 ,191,192,210 ,36,37,54 },
- {151,150,134 ,210,209,191 ,54,53,36 }, {135,136,152 ,192,193,211 ,37,38,55 },
- {152,151,135 ,211,210,192 ,55,54,37 }, {136,137,153 ,193,194,212 ,38,39,56 },
- {153,152,136 ,212,211,193 ,56,55,38 }, {137,138,154 ,194,195,213 ,39,40,57 },
- {154,153,137 ,213,212,194 ,57,56,39 }, {138,139,155 ,195,196,214 ,40,41,58 },
- {155,154,138 ,214,213,195 ,58,57,40 }, {139,140,156 ,196,197,215 ,41,42,59 },
- {156,155,139 ,215,214,196 ,59,58,41 }, {140,141,157 ,197,198,216 ,42,43,60 },
- {157,156,140 ,216,215,197 ,60,59,42 }, {141,142,158 ,198,199,217 ,43,44,61 },
- {158,157,141 ,217,216,198 ,61,60,43 }, {142,143,159 ,199,200,218 ,44,45,62 },
- {159,158,142 ,218,217,199 ,62,61,44 }, {143,144,160 ,200,201,219 ,45,46,63 },
- {160,159,143 ,219,218,200 ,63,62,45 }, {144,145,161 ,201,202,220 ,46,47,64 },
- {161,160,144 ,220,219,201 ,64,63,46 }, {145,146,162 ,202,203,221 ,47,48,65 },
- {162,161,145 ,221,220,202 ,65,64,47 }, {146,131,147 ,203,222,222 ,48,49,66 },
- {147,162,146 ,223,221,203 ,66,65,48 }, {147,148,164 ,207,206,224 ,51,50,67 },
- {164,163,147 ,224,225,207 ,67,68,51 }, {148,149,165 ,206,208,226 ,50,52,69 },
- {165,164,148 ,226,224,206 ,69,67,50 }, {149,150,166 ,208,209,227 ,52,53,70 },
- {166,165,149 ,227,226,208 ,70,69,52 }, {150,151,167 ,209,210,228 ,53,54,71 },
- {167,166,150 ,228,227,209 ,71,70,53 }, {151,152,168 ,210,211,229 ,54,55,72 },
- {168,167,151 ,229,228,210 ,72,71,54 }, {152,153,169 ,211,212,230 ,55,56,73 },
- {169,168,152 ,230,229,211 ,73,72,55 }, {153,154,170 ,212,213,231 ,56,57,74 },
- {170,169,153 ,231,230,212 ,74,73,56 }, {154,155,171 ,213,214,232 ,57,58,75 },
- {171,170,154 ,232,231,213 ,75,74,57 }, {155,156,172 ,214,215,233 ,58,59,76 },
- {172,171,155 ,233,232,214 ,76,75,58 }, {156,157,173 ,215,216,234 ,59,60,77 },
- {173,172,156 ,234,233,215 ,77,76,59 }, {157,158,174 ,216,217,235 ,60,61,78 },
- {174,173,157 ,235,234,216 ,78,77,60 }, {158,159,175 ,217,218,236 ,61,62,79 },
- {175,174,158 ,236,235,217 ,79,78,61 }, {159,160,176 ,218,219,237 ,62,63,80 },
- {176,175,159 ,237,236,218 ,80,79,62 }, {160,161,177 ,219,220,238 ,63,64,81 },
- {177,176,160 ,238,237,219 ,81,80,63 }, {161,162,178 ,220,221,239 ,64,65,82 },
- {178,177,161 ,239,238,220 ,82,81,64 }, {162,147,163 ,221,240,240 ,65,66,83 },
- {163,178,162 ,241,239,221 ,83,82,65 }, {163,164,180 ,225,224,242 ,68,67,84 },
- {180,179,163 ,242,243,225 ,84,85,68 }, {164,165,181 ,224,226,244 ,67,69,86 },
- {181,180,164 ,244,242,224 ,86,84,67 }, {165,166,182 ,226,227,245 ,69,70,87 },
- {182,181,165 ,245,244,226 ,87,86,69 }, {166,167,183 ,227,228,246 ,70,71,88 },
- {183,182,166 ,246,245,227 ,88,87,70 }, {167,168,184 ,228,229,247 ,71,72,89 },
- {184,183,167 ,247,246,228 ,89,88,71 }, {168,169,185 ,229,230,248 ,72,73,90 },
- {185,184,168 ,248,247,229 ,90,89,72 }, {169,170,186 ,230,231,249 ,73,74,91 },
- {186,185,169 ,249,248,230 ,91,90,73 }, {170,171,187 ,231,232,250 ,74,75,92 },
- {187,186,170 ,250,249,231 ,92,91,74 }, {171,172,188 ,232,233,251 ,75,76,93 },
- {188,187,171 ,251,250,232 ,93,92,75 }, {172,173,189 ,233,234,252 ,76,77,94 },
- {189,188,172 ,252,251,233 ,94,93,76 }, {173,174,190 ,234,235,253 ,77,78,95 },
- {190,189,173 ,253,252,234 ,95,94,77 }, {174,175,191 ,235,236,254 ,78,79,96 },
- {191,190,174 ,254,253,235 ,96,95,78 }, {175,176,192 ,236,237,255 ,79,80,97 },
- {192,191,175 ,255,254,236 ,97,96,79 }, {176,177,193 ,237,238,256 ,80,81,98 },
- {193,192,176 ,256,255,237 ,98,97,80 }, {177,178,194 ,238,239,257 ,81,82,99 },
- {194,193,177 ,257,256,238 ,99,98,81 }, {178,163,179 ,239,258,258 ,82,83,100 },
- {179,194,178 ,259,257,239 ,100,99,82 }, {179,180,196 ,243,242,260 ,85,84,101 },
- {196,195,179 ,260,261,243 ,101,102,85 }, {180,181,197 ,242,244,262 ,84,86,103 },
- {197,196,180 ,262,260,242 ,103,101,84 }, {181,182,198 ,244,245,263 ,86,87,104 },
- {198,197,181 ,263,262,244 ,104,103,86 }, {182,183,199 ,245,246,264 ,87,88,105 },
- {199,198,182 ,264,263,245 ,105,104,87 }, {183,184,200 ,246,247,265 ,88,89,106 },
- {200,199,183 ,265,264,246 ,106,105,88 }, {184,185,201 ,247,248,266 ,89,90,107 },
- {201,200,184 ,266,265,247 ,107,106,89 }, {185,186,202 ,248,249,267 ,90,91,108 },
- {202,201,185 ,267,266,248 ,108,107,90 }, {186,187,203 ,249,250,268 ,91,92,109 },
- {203,202,186 ,268,267,249 ,109,108,91 }, {187,188,204 ,250,251,269 ,92,93,110 },
- {204,203,187 ,269,268,250 ,110,109,92 }, {188,189,205 ,251,252,270 ,93,94,111 },
- {205,204,188 ,270,269,251 ,111,110,93 }, {189,190,206 ,252,253,271 ,94,95,112 },
- {206,205,189 ,271,270,252 ,112,111,94 }, {190,191,207 ,253,254,272 ,95,96,113 },
- {207,206,190 ,272,271,253 ,113,112,95 }, {191,192,208 ,254,255,273 ,96,97,114 },
- {208,207,191 ,273,272,254 ,114,113,96 }, {192,193,209 ,255,256,274 ,97,98,115 },
- {209,208,192 ,274,273,255 ,115,114,97 }, {193,194,210 ,256,257,275 ,98,99,116 },
- {210,209,193 ,275,274,256 ,116,115,98 }, {194,179,195 ,257,276,276 ,99,100,117 },
- {195,210,194 ,277,275,257 ,117,116,99 }, {195,196,212 ,261,260,278 ,102,101,118 },
- {212,211,195 ,278,279,261 ,118,119,102 }, {196,197,213 ,260,262,280 ,101,103,120 },
- {213,212,196 ,280,278,260 ,120,118,101 }, {197,198,214 ,262,263,281 ,103,104,121 },
- {214,213,197 ,281,280,262 ,121,120,103 }, {198,199,215 ,263,264,282 ,104,105,122 },
- {215,214,198 ,282,281,263 ,122,121,104 }, {199,200,216 ,264,265,283 ,105,106,123 },
- {216,215,199 ,283,282,264 ,123,122,105 }, {200,201,217 ,265,266,284 ,106,107,124 },
- {217,216,200 ,284,283,265 ,124,123,106 }, {201,202,218 ,266,267,285 ,107,108,125 },
- {218,217,201 ,285,284,266 ,125,124,107 }, {202,203,219 ,267,268,286 ,108,109,126 },
- {219,218,202 ,286,285,267 ,126,125,108 }, {203,204,220 ,268,269,287 ,109,110,127 },
- {220,219,203 ,287,286,268 ,127,126,109 }, {204,205,221 ,269,270,288 ,110,111,128 },
- {221,220,204 ,288,287,269 ,128,127,110 }, {205,206,222 ,270,271,289 ,111,112,129 },
- {222,221,205 ,289,288,270 ,129,128,111 }, {206,207,223 ,271,272,290 ,112,113,130 },
- {223,222,206 ,290,289,271 ,130,129,112 }, {207,208,224 ,272,273,291 ,113,114,131 },
- {224,223,207 ,291,290,272 ,131,130,113 }, {208,209,225 ,273,274,292 ,114,115,132 },
- {225,224,208 ,292,291,273 ,132,131,114 }, {209,210,226 ,274,275,293 ,115,116,133 },
- {226,225,209 ,293,292,274 ,133,132,115 }, {210,195,211 ,275,294,294 ,116,117,134 },
- {211,226,210 ,295,293,275 ,134,133,116 }, {212,227,211 ,278,296,279 ,118,135,119 },
- {213,227,212 ,280,297,278 ,120,136,118 }, {214,227,213 ,281,298,280 ,121,137,120 },
- {215,227,214 ,282,299,281 ,122,138,121 }, {216,227,215 ,283,300,282 ,123,139,122 },
- {217,227,216 ,284,301,283 ,124,140,123 }, {218,227,217 ,285,302,284 ,125,141,124 },
- {219,227,218 ,286,303,285 ,126,142,125 }, {220,227,219 ,287,304,286 ,127,143,126 },
- {221,227,220 ,288,305,287 ,128,144,127 }, {222,227,221 ,289,306,288 ,129,145,128 },
- {223,227,222 ,290,307,289 ,130,146,129 }, {224,227,223 ,291,308,290 ,131,147,130 },
- {225,227,224 ,292,309,291 ,132,148,131 }, {226,227,225 ,293,310,292 ,133,149,132 },
- {211,227,226 ,311,311,293 ,134,151,133 }
-};
-static GLfloat vertices [228][3] = {
-{-0.287907f,-1.86815e-008f,0.135757f},{-0.289347f,0.0556207f,0.121101f},{-0.312648f,0.0513869f,0.1159f},
-{-0.331758f,0.0393298f,0.112605f},{-0.344539f,0.0212851f,0.111531f},{-0.34981f,7.94957e-010f,0.11279f},
-{-0.347143f,-0.0212852f,0.116277f},{-0.336764f,-0.0393298f,0.121467f},{-0.319578f,-0.0513869f,0.127407f},
-{-0.297367f,-0.0556208f,0.133044f},{-0.272989f,-0.0513869f,0.137622f},{-0.250313f,-0.0393298f,0.140771f},
-{-0.233576f,-0.0212851f,0.142252f},{-0.226267f,7.94957e-010f,0.141723f},{-0.229995f,0.0212851f,0.138873f},
-{-0.243926f,0.0393298f,0.133842f},{-0.265082f,0.0513869f,0.127482f},{-0.300289f,0.102774f,0.0924289f},
-{-0.342041f,0.0949506f,0.0845643f},{-0.375065f,0.072672f,0.0798777f},{-0.396413f,0.0393298f,0.0780705f},
-{-0.404666f,7.94957e-010f,0.0793717f},{-0.399455f,-0.0393298f,0.0843554f},{-0.381285f,-0.072672f,0.0925327f},
-{-0.351389f,-0.0949506f,0.101848f},{-0.312053f,-0.102774f,0.109943f},{-0.267595f,-0.0949506f,0.115783f},
-{-0.225019f,-0.072672f,0.119839f},{-0.19297f,-0.0393298f,0.122681f},{-0.179034f,2.02714e-008f,0.123571f},
-{-0.186805f,0.0393298f,0.120751f},{-0.214382f,0.072672f,0.113343f},{-0.255124f,0.0949506f,0.102855f},
-{-0.315272f,0.13428f,0.0518029f},{-0.370101f,0.124059f,0.0432229f},{-0.413796f,0.0949505f,0.0380668f},
-{-0.441728f,0.0513869f,0.0356961f},{-0.451415f,1.03344e-008f,0.0364943f},{-0.44247f,-0.0513869f,0.0414899f},
-{-0.416425f,-0.0949506f,0.0501588f},{-0.375928f,-0.124059f,0.0597781f},{-0.324519f,-0.13428f,0.0674267f},
-{-0.267803f,-0.124059f,0.0722981f},{-0.214464f,-0.0949506f,0.0757843f},{-0.175013f,-0.0513869f,0.0792818f},
-{-0.158449f,1.03344e-008f,0.0819671f},{-0.168957f,0.0513869f,0.0809906f},{-0.204319f,0.0949506f,0.0743026f},
-{-0.25666f,0.124059f,0.0632456f},{-0.330578f,0.145344f,0.00190503f},{-0.392924f,0.13428f,-0.0077162f},
-{-0.444336f,0.102774f,-0.0143289f},{-0.47705f,0.0556207f,-0.0173406f},{-0.486706f,7.94957e-010f,-0.0161772f},
-{-0.47308f,-0.0556208f,-0.01071f},{-0.439422f,-0.102774f,-0.00237543f},{-0.390673f,-0.13428f,0.00604182f},
-{-0.332519f,-0.145344f,0.0122922f},{-0.272094f,-0.13428f,0.0162857f},{-0.218439f,-0.102774f,0.0196546f},
-{-0.180892f,-0.0556207f,0.0235965f},{-0.166384f,2.02714e-008f,0.0271024f},{-0.177718f,0.0556208f,0.0274186f},
-{-0.213249f,0.102774f,0.0224836f},{-0.267201f,0.13428f,0.0129805f},{-0.34483f,0.13428f,-0.0511393f},
-{-0.40631f,0.124059f,-0.0620485f},{-0.45857f,0.0949506f,-0.0704639f},{-0.491678f,0.0513869f,-0.0742125f},
-{-0.5f,7.94957e-010f,-0.0724902f},{-0.483529f,-0.0513869f,-0.0663162f},{-0.446732f,-0.0949506f,-0.0581115f},
-{-0.396141f,-0.124059f,-0.0504919f},{-0.338919f,-0.13428f,-0.0448254f},{-0.282899f,-0.124059f,-0.0405999f},
-{-0.236267f,-0.0949505f,-0.0364056f},{-0.205857f,-0.0513869f,-0.0318189f},{-0.195525f,1.03344e-008f,-0.0282588f},
-{-0.206257f,0.0513869f,-0.0279247f},{-0.237146f,0.0949506f,-0.0320837f},{-0.285319f,0.124059f,-0.040366f},
-{-0.356086f,0.102774f,-0.097854f},{-0.405227f,0.0949505f,-0.10804f},{-0.447411f,0.072672f,-0.116169f},
-{-0.474149f,0.0393298f,-0.120015f},{-0.480452f,-1.86815e-008f,-0.11879f},{-0.466119f,-0.0393298f,-0.113531f},
-{-0.434932f,-0.072672f,-0.106385f},{-0.392811f,-0.0949506f,-0.0993913f},{-0.346413f,-0.102774f,-0.093506f},
-{-0.302508f,-0.0949506f,-0.0884557f},{-0.26729f,-0.072672f,-0.0836092f},{-0.245251f,-0.0393298f,-0.079151f},
-{-0.238544f,1.03344e-008f,-0.0763464f},{-0.247524f,0.0393298f,-0.0766391f},{-0.271628f,0.072672f,-0.0806712f},
-{-0.309166f,0.0949505f,-0.0881082f},{-0.361659f,0.0556207f,-0.128917f},{-0.388335f,0.0513868f,-0.134934f},
-{-0.410948f,0.0393298f,-0.139725f},{-0.425343f,0.0212852f,-0.142252f},{-0.428934f,7.94957e-010f,-0.142093f},
-{-0.421321f,-0.0212851f,-0.139576f},{-0.404175f,-0.0393298f,-0.135536f},{-0.380624f,-0.0513869f,-0.130889f},
-{-0.354521f,-0.0556208f,-0.126284f},{-0.329804f,-0.0513869f,-0.122039f},{-0.309941f,-0.0393298f,-0.118368f},
-{-0.297488f,-0.0212851f,-0.115637f},{-0.293883f,1.03344e-008f,-0.114402f},{-0.299525f,0.0212852f,-0.115169f},
-{-0.313908f,0.0393298f,-0.118111f},{-0.33553f,0.0513869f,-0.12294f},{-0.36059f,-9.142e-009f,-0.138758f},
-{0.287907f,-1.86815e-008f,0.135757f},{0.289347f,0.0556207f,0.121101f},{0.312648f,0.0513869f,0.1159f},
-{0.331758f,0.0393298f,0.112605f},{0.344539f,0.0212851f,0.111531f},{0.34981f,7.94957e-010f,0.11279f},
-{0.347143f,-0.0212852f,0.116277f},{0.336763f,-0.0393298f,0.121467f},{0.319578f,-0.0513869f,0.127407f},
-{0.297367f,-0.0556208f,0.133044f},{0.272989f,-0.0513869f,0.137622f},{0.250313f,-0.0393298f,0.140771f},
-{0.233576f,-0.0212851f,0.142252f},{0.226267f,7.94957e-010f,0.141723f},{0.229996f,0.0212851f,0.138873f},
-{0.243926f,0.0393298f,0.133842f},{0.265082f,0.0513869f,0.127482f},{0.300289f,0.102774f,0.0924289f},
-{0.342041f,0.0949506f,0.0845643f},{0.375065f,0.072672f,0.0798777f},{0.396413f,0.0393298f,0.0780705f},
-{0.404666f,7.94957e-010f,0.0793717f},{0.399455f,-0.0393298f,0.0843554f},{0.381285f,-0.072672f,0.0925327f},
-{0.351389f,-0.0949506f,0.101848f},{0.312053f,-0.102774f,0.109943f},{0.267595f,-0.0949506f,0.115783f},
-{0.225019f,-0.072672f,0.119839f},{0.19297f,-0.0393298f,0.122681f},{0.179034f,2.02714e-008f,0.123571f},
-{0.186805f,0.0393298f,0.120751f},{0.214382f,0.072672f,0.113343f},{0.255124f,0.0949506f,0.102855f},
-{0.315272f,0.13428f,0.0518029f},{0.370101f,0.124059f,0.0432229f},{0.413796f,0.0949505f,0.0380668f},
-{0.441728f,0.0513869f,0.0356961f},{0.451415f,1.03344e-008f,0.0364943f},{0.44247f,-0.0513869f,0.0414899f},
-{0.416425f,-0.0949506f,0.0501588f},{0.375928f,-0.124059f,0.0597781f},{0.324519f,-0.13428f,0.0674267f},
-{0.267803f,-0.124059f,0.0722981f},{0.214464f,-0.0949506f,0.0757843f},{0.175013f,-0.0513869f,0.0792818f},
-{0.158449f,1.03344e-008f,0.0819671f},{0.168957f,0.0513869f,0.0809906f},{0.204319f,0.0949506f,0.0743026f},
-{0.25666f,0.124059f,0.0632456f},{0.330578f,0.145344f,0.00190503f},{0.392924f,0.13428f,-0.0077162f},
-{0.444336f,0.102774f,-0.0143289f},{0.47705f,0.0556207f,-0.0173406f},{0.486706f,7.94957e-010f,-0.0161772f},
-{0.47308f,-0.0556208f,-0.01071f},{0.439422f,-0.102774f,-0.00237543f},{0.390673f,-0.13428f,0.00604182f},
-{0.332519f,-0.145344f,0.0122922f},{0.272094f,-0.13428f,0.0162857f},{0.218439f,-0.102774f,0.0196546f},
-{0.180892f,-0.0556207f,0.0235965f},{0.166384f,2.02714e-008f,0.0271024f},{0.177718f,0.0556208f,0.0274186f},
-{0.213249f,0.102774f,0.0224836f},{0.267201f,0.13428f,0.0129805f},{0.34483f,0.13428f,-0.0511393f},
-{0.40631f,0.124059f,-0.0620485f},{0.45857f,0.0949506f,-0.0704639f},{0.491678f,0.0513869f,-0.0742125f},
-{0.5f,7.94957e-010f,-0.0724902f},{0.483529f,-0.0513869f,-0.0663162f},{0.446732f,-0.0949506f,-0.0581115f},
-{0.396141f,-0.124059f,-0.0504919f},{0.338919f,-0.13428f,-0.0448254f},{0.282899f,-0.124059f,-0.0405999f},
-{0.236267f,-0.0949505f,-0.0364056f},{0.205857f,-0.0513869f,-0.0318189f},{0.195525f,1.03344e-008f,-0.0282588f},
-{0.206257f,0.0513869f,-0.0279247f},{0.237146f,0.0949506f,-0.0320837f},{0.285319f,0.124059f,-0.040366f},
-{0.356086f,0.102774f,-0.097854f},{0.405227f,0.0949505f,-0.10804f},{0.447411f,0.072672f,-0.116169f},
-{0.474149f,0.0393298f,-0.120015f},{0.480452f,-1.86815e-008f,-0.11879f},{0.466119f,-0.0393298f,-0.113531f},
-{0.434932f,-0.072672f,-0.106385f},{0.392811f,-0.0949506f,-0.0993913f},{0.346413f,-0.102774f,-0.093506f},
-{0.302508f,-0.0949506f,-0.0884557f},{0.26729f,-0.072672f,-0.0836092f},{0.245251f,-0.0393298f,-0.079151f},
-{0.238544f,1.03344e-008f,-0.0763464f},{0.247524f,0.0393298f,-0.0766391f},{0.271628f,0.072672f,-0.0806712f},
-{0.309166f,0.0949505f,-0.0881082f},{0.361659f,0.0556207f,-0.128917f},{0.388335f,0.0513868f,-0.134934f},
-{0.410948f,0.0393298f,-0.139725f},{0.425343f,0.0212852f,-0.142252f},{0.428934f,7.94957e-010f,-0.142093f},
-{0.421321f,-0.0212851f,-0.139576f},{0.404175f,-0.0393298f,-0.135536f},{0.380624f,-0.0513869f,-0.130889f},
-{0.354521f,-0.0556208f,-0.126284f},{0.329804f,-0.0513869f,-0.122039f},{0.309941f,-0.0393298f,-0.118368f},
-{0.297488f,-0.0212851f,-0.115637f},{0.293883f,1.03344e-008f,-0.114402f},{0.299525f,0.0212852f,-0.115169f},
-{0.313908f,0.0393298f,-0.118111f},{0.33553f,0.0513869f,-0.12294f},{0.36059f,-9.142e-009f,-0.138758f}
-};
-static GLfloat normals [312][3] = {
-{-0.252871f,0.2404f,0.937157f},{-0.258307f,0.38096f,0.887777f},{-0.313991f,0.324677f,0.892185f},
-{-0.296928f,0.216441f,0.930047f},{-0.383648f,0.254797f,0.887633f},{-0.329607f,0.178289f,0.927131f},
-{-0.430851f,0.18085f,0.884116f},{-0.34441f,0.140222f,0.928289f},{-0.454555f,0.107789f,0.884173f},
-{-0.345761f,0.109338f,0.931931f},{-0.451254f,0.0285079f,0.89194f},{-0.336206f,0.076578f,0.93867f},
-{-0.408498f,-0.0677304f,0.910243f},{-0.305382f,0.0335758f,0.951638f},{-0.312714f,-0.173985f,0.933777f},
-{-0.246924f,-0.00527786f,0.969021f},{-0.174674f,-0.256876f,0.950528f},{-0.18167f,-0.0170678f,0.983211f},
-{-0.0295312f,-0.282552f,0.958797f},{-0.135737f,-0.00345962f,0.990739f},{0.091734f,-0.234033f,0.967891f},
-{-0.110558f,0.0209796f,0.993648f},{0.167189f,-0.105758f,0.980236f},{-0.0961792f,0.0576956f,0.99369f},
-{0.172186f,0.0803976f,0.981778f},{-0.0956933f,0.115643f,0.988671f},{0.102757f,0.255574f,0.961313f},
-{-0.118853f,0.180455f,0.976376f},{-0.00684392f,0.362472f,0.93197f},{-0.16015f,0.225882f,0.9609f},
-{-0.121457f,0.396353f,0.910029f},{-0.20652f,0.244312f,0.94745f},{-0.347082f,0.515074f,0.78373f},
-{-0.249506f,0.635312f,0.730839f},{-0.478643f,0.367304f,0.797489f},{-0.559961f,0.216863f,0.799634f},
-{-0.602861f,0.0780879f,0.794015f},{-0.610046f,-0.0696832f,0.789296f},{-0.551611f,-0.257101f,0.793489f},
-{-0.38207f,-0.465686f,0.798223f},{-0.121673f,-0.612952f,0.780695f},{0.146927f,-0.650919f,0.744793f},
-{0.385172f,-0.58077f,0.717181f},{0.58668f,-0.374453f,0.718047f},{0.670596f,-0.00636283f,0.741796f},
-{0.540433f,0.379137f,0.751124f},{0.289465f,0.600903f,0.745067f},{0.0436793f,0.662498f,0.747789f},
-{-0.140618f,0.490361f,0.8601f},{-0.109243f,0.507979f,0.854414f},{-0.380531f,0.755905f,0.532733f},
-{-0.225858f,0.883504f,0.410377f},{-0.59605f,0.523204f,0.609083f},{-0.713032f,0.266278f,0.6486f},
-{-0.762247f,0.0288195f,0.646645f},{-0.762093f,-0.214058f,0.61106f},{-0.668216f,-0.496763f,0.553817f},
-{-0.416626f,-0.766605f,0.48861f},{-0.0545419f,-0.90563f,0.420547f},{0.29318f,-0.889718f,0.349925f},
-{0.591552f,-0.758995f,0.272017f},{0.848551f,-0.492341f,0.193807f},{0.985865f,-0.05828f,0.157078f},
-{0.881972f,0.429135f,0.194856f},{0.581894f,0.76394f,0.278916f},{0.238697f,0.899997f,0.364733f},
-{-0.00501219f,0.789307f,0.613979f},{0.0251126f,0.806017f,0.59136f},{-0.362683f,0.922533f,0.131889f},
-{-0.167637f,0.985742f,-0.0145074f},{-0.675042f,0.684053f,0.276386f},{-0.861957f,0.33668f,0.379047f},
-{-0.919481f,-0.0263853f,0.392249f},{-0.871276f,-0.372611f,0.319436f},{-0.697519f,-0.689005f,0.196823f},
-{-0.38794f,-0.918076f,0.0814794f},{-0.00830919f,-0.999934f,0.00788595f},{0.353657f,-0.934174f,-0.0473814f},
-{0.658559f,-0.741582f,-0.127893f},{0.873379f,-0.428149f,-0.232159f},{0.952936f,-0.0310618f,-0.301577f},
-{0.881119f,0.37659f,-0.286025f},{0.666622f,0.718532f,-0.198309f},{0.352833f,0.93106f,-0.0929322f},
-{0.135999f,0.975217f,0.174515f},{0.140791f,0.975534f,0.16885f},{-0.258662f,0.909417f,-0.32566f},
-{-0.0662442f,0.901289f,-0.428124f},{-0.621608f,0.751307f,-0.221679f},{-0.914602f,0.386148f,-0.119974f},
-{-0.992511f,-0.0884879f,-0.084218f},{-0.859627f,-0.492181f,-0.137109f},{-0.607892f,-0.758345f,-0.235332f},
-{-0.300655f,-0.897575f,-0.322437f},{0.0284315f,-0.925422f,-0.37787f},{0.354203f,-0.835474f,-0.420148f},
-{0.628523f,-0.617805f,-0.47252f},{0.789277f,-0.310692f,-0.529634f},{0.825511f,0.00904431f,-0.564314f},
-{0.769059f,0.307146f,-0.560545f},{0.622245f,0.583594f,-0.521757f},{0.380717f,0.799662f,-0.464323f},
-{0.209136f,0.944539f,-0.253197f},{0.207914f,0.945204f,-0.251717f},{-0.0829051f,0.69251f,-0.716628f},
-{0.0583377f,0.651534f,-0.756373f},{-0.355182f,0.592306f,-0.723201f},{-0.614659f,0.31377f,-0.723701f},
-{-0.712098f,-0.103352f,-0.694432f},{-0.595913f,-0.454188f,-0.66227f},{-0.38585f,-0.645546f,-0.659083f},
-{-0.157323f,-0.719684f,-0.676243f},{0.0788719f,-0.709682f,-0.700093f},{0.315478f,-0.613671f,-0.723796f},
-{0.515947f,-0.42928f,-0.741294f},{0.633864f,-0.195427f,-0.748348f},{0.66279f,0.0306839f,-0.748176f},
-{0.624867f,0.232632f,-0.745267f},{0.526051f,0.42017f,-0.73941f},{0.364351f,0.57901f,-0.72938f},
-{0.238862f,0.777411f,-0.581874f},{0.250693f,0.765838f,-0.592153f},{0.0872439f,0.389795f,-0.916759f},
-{0.149617f,0.363837f,-0.919368f},{-0.0497727f,0.321156f,-0.945718f},{-0.170031f,0.164068f,-0.971685f},
-{-0.229274f,-0.0548793f,-0.971814f},{-0.203035f,-0.255423f,-0.94527f},{-0.116827f,-0.381483f,-0.916963f},
-{-0.00225283f,-0.43449f,-0.900674f},{0.127092f,-0.427409f,-0.89508f},{0.260125f,-0.364224f,-0.894246f},
-{0.375837f,-0.25252f,-0.891617f},{0.451585f,-0.11593f,-0.884664f},{0.479573f,0.0177851f,-0.877322f},
-{0.465354f,0.137133f,-0.874437f},{0.414091f,0.242881f,-0.877233f},{0.328899f,0.330658f,-0.884585f},
-{0.255655f,0.510592f,-0.820937f},{0.269217f,0.496777f,-0.825067f},{0.190196f,0.174579f,-0.966099f},
-{0.131151f,0.1438f,-0.980878f},{0.0787381f,0.0763682f,-0.993966f},{0.0487437f,-0.0156549f,-0.998689f},
-{0.0485044f,-0.100192f,-0.993785f},{0.0679649f,-0.15604f,-0.98541f},{0.0968914f,-0.187447f,-0.977484f},
-{0.138234f,-0.202344f,-0.969509f},{0.198197f,-0.193848f,-0.960802f},{0.266924f,-0.14981f,-0.952002f},
-{0.319768f,-0.0777643f,-0.944299f},{0.342966f,-0.00360353f,-0.939341f},{0.342411f,0.0569724f,-0.937821f},
-{0.325776f,0.106482f,-0.939432f},{0.293316f,0.147691f,-0.944539f},{0.246219f,0.173439f,-0.95357f},
-{0.258307f,0.38096f,0.887776f},{0.252871f,0.2404f,0.937157f},{0.313992f,0.324677f,0.892185f},
-{0.296928f,0.216441f,0.930047f},{0.383648f,0.254797f,0.887633f},{0.329608f,0.178289f,0.927131f},
-{0.430851f,0.18085f,0.884116f},{0.34441f,0.140222f,0.928288f},{0.454555f,0.107789f,0.884173f},
-{0.345761f,0.109338f,0.93193f},{0.451254f,0.028508f,0.89194f},{0.336206f,0.076578f,0.93867f},
-{0.408498f,-0.0677303f,0.910243f},{0.305382f,0.0335756f,0.951638f},{0.312714f,-0.173985f,0.933777f},
-{0.246924f,-0.00527788f,0.96902f},{0.174674f,-0.256876f,0.950528f},{0.18167f,-0.0170678f,0.983211f},
-{0.0295312f,-0.282552f,0.958797f},{0.135737f,-0.00345967f,0.990739f},{-0.0917341f,-0.234033f,0.967891f},
-{0.110558f,0.0209796f,0.993648f},{-0.167189f,-0.105758f,0.980236f},{0.0961791f,0.0576956f,0.99369f},
-{-0.172185f,0.0803977f,0.981778f},{0.0956933f,0.115643f,0.988671f},{-0.102757f,0.255574f,0.961313f},
-{0.118853f,0.180455f,0.976376f},{0.00684396f,0.362472f,0.93197f},{0.16015f,0.225882f,0.9609f},
-{0.121457f,0.396353f,0.910029f},{0.20652f,0.244312f,0.94745f},{0.347082f,0.515074f,0.78373f},
-{0.249506f,0.635311f,0.730839f},{0.478643f,0.367304f,0.797489f},{0.559961f,0.216863f,0.799634f},
-{0.602861f,0.078088f,0.794015f},{0.610046f,-0.069683f,0.789296f},{0.551611f,-0.257101f,0.793489f},
-{0.38207f,-0.465685f,0.798223f},{0.121673f,-0.612952f,0.780695f},{-0.146927f,-0.650919f,0.744793f},
-{-0.385172f,-0.58077f,0.717181f},{-0.58668f,-0.374453f,0.718047f},{-0.670595f,-0.00636265f,0.741796f},
-{-0.540432f,0.379137f,0.751124f},{-0.289466f,0.600903f,0.745067f},{-0.0436793f,0.662498f,0.747789f},
-{0.140618f,0.490361f,0.8601f},{0.109243f,0.507979f,0.854414f},{0.380531f,0.755905f,0.532733f},
-{0.225859f,0.883504f,0.410377f},{0.59605f,0.523204f,0.609083f},{0.713032f,0.266278f,0.6486f},
-{0.762247f,0.0288195f,0.646645f},{0.762093f,-0.214057f,0.61106f},{0.668216f,-0.496763f,0.553817f},
-{0.416626f,-0.766605f,0.48861f},{0.0545419f,-0.90563f,0.420547f},{-0.29318f,-0.889718f,0.349925f},
-{-0.591552f,-0.758995f,0.272017f},{-0.848551f,-0.492341f,0.193807f},{-0.985865f,-0.0582799f,0.157078f},
-{-0.881971f,0.429136f,0.194856f},{-0.581895f,0.76394f,0.278916f},{-0.238697f,0.899997f,0.364733f},
-{0.00501218f,0.789307f,0.613979f},{-0.0251125f,0.806017f,0.59136f},{0.362682f,0.922533f,0.131889f},
-{0.167637f,0.985742f,-0.0145074f},{0.675042f,0.684053f,0.276386f},{0.861957f,0.33668f,0.379047f},
-{0.919481f,-0.0263853f,0.392249f},{0.871276f,-0.372611f,0.319436f},{0.697519f,-0.689005f,0.196823f},
-{0.38794f,-0.918076f,0.0814794f},{0.00830921f,-0.999934f,0.00788592f},{-0.353657f,-0.934174f,-0.0473814f},
-{-0.658559f,-0.741582f,-0.127893f},{-0.873379f,-0.428149f,-0.232159f},{-0.952936f,-0.0310616f,-0.301577f},
-{-0.881119f,0.37659f,-0.286025f},{-0.666622f,0.718532f,-0.198309f},{-0.352833f,0.93106f,-0.0929322f},
-{-0.135999f,0.975217f,0.174515f},{-0.140791f,0.975534f,0.16885f},{0.258662f,0.909417f,-0.32566f},
-{0.0662442f,0.901289f,-0.428124f},{0.621608f,0.751307f,-0.221679f},{0.914602f,0.386148f,-0.119974f},
-{0.992511f,-0.088488f,-0.084218f},{0.859627f,-0.492181f,-0.137109f},{0.607892f,-0.758345f,-0.235333f},
-{0.300655f,-0.897575f,-0.322437f},{-0.0284315f,-0.925422f,-0.37787f},{-0.354203f,-0.835474f,-0.420148f},
-{-0.628523f,-0.617805f,-0.47252f},{-0.789277f,-0.310692f,-0.529634f},{-0.825511f,0.0090443f,-0.564314f},
-{-0.769059f,0.307146f,-0.560545f},{-0.622245f,0.583594f,-0.521756f},{-0.380717f,0.799662f,-0.464322f},
-{-0.209136f,0.944539f,-0.253197f},{-0.207913f,0.945204f,-0.251717f},{0.0829051f,0.69251f,-0.716628f},
-{-0.0583377f,0.651534f,-0.756373f},{0.355182f,0.592306f,-0.723201f},{0.614659f,0.31377f,-0.7237f},
-{0.712098f,-0.103352f,-0.694431f},{0.595913f,-0.454188f,-0.66227f},{0.38585f,-0.645546f,-0.659083f},
-{0.157323f,-0.719684f,-0.676243f},{-0.0788719f,-0.709682f,-0.700093f},{-0.315478f,-0.613671f,-0.723796f},
-{-0.515947f,-0.42928f,-0.741294f},{-0.633864f,-0.195427f,-0.748348f},{-0.66279f,0.0306839f,-0.748176f},
-{-0.624867f,0.232632f,-0.745268f},{-0.526051f,0.42017f,-0.73941f},{-0.364352f,0.57901f,-0.72938f},
-{-0.238862f,0.777411f,-0.581874f},{-0.250693f,0.765838f,-0.592153f},{-0.0872439f,0.389796f,-0.916759f},
-{-0.149617f,0.363837f,-0.919368f},{0.0497727f,0.321156f,-0.945718f},{0.170031f,0.164068f,-0.971685f},
-{0.229274f,-0.0548795f,-0.971813f},{0.203035f,-0.255423f,-0.94527f},{0.116827f,-0.381483f,-0.916964f},
-{0.00225283f,-0.43449f,-0.900674f},{-0.127092f,-0.427409f,-0.89508f},{-0.260125f,-0.364224f,-0.894246f},
-{-0.375837f,-0.25252f,-0.891617f},{-0.451585f,-0.11593f,-0.884664f},{-0.479573f,0.0177852f,-0.877322f},
-{-0.465354f,0.137133f,-0.874437f},{-0.414091f,0.242881f,-0.877233f},{-0.328899f,0.330658f,-0.884585f},
-{-0.255655f,0.510592f,-0.820937f},{-0.269217f,0.496777f,-0.825067f},{-0.190196f,0.174579f,-0.966099f},
-{-0.13115f,0.1438f,-0.980878f},{-0.0787381f,0.0763682f,-0.993966f},{-0.0487437f,-0.0156549f,-0.998689f},
-{-0.0485044f,-0.100192f,-0.993785f},{-0.0679649f,-0.15604f,-0.98541f},{-0.0968914f,-0.187447f,-0.977484f},
-{-0.138234f,-0.202344f,-0.969509f},{-0.198197f,-0.193848f,-0.960802f},{-0.266924f,-0.14981f,-0.952002f},
-{-0.319768f,-0.0777645f,-0.944299f},{-0.342966f,-0.00360326f,-0.939341f},{-0.342412f,0.0569721f,-0.937821f},
-{-0.325776f,0.106482f,-0.939432f},{-0.293316f,0.147691f,-0.944539f},{-0.246219f,0.173439f,-0.95357f}
-};
-static GLfloat textures [152][2] = {
-{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f},
-{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f},
-{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f},
-{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f},
-{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f},
-{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f},
-{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f},
-{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f},
-{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f},
-{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f},
-{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f},
-{0.0625f,0.75f},{0.0f,0.75f},{0.125f,0.75f},
-{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f},
-{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f},
-{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f},
-{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f},
-{0.9375f,0.75f},{1.0f,0.75f},{0.0625f,0.625f},
-{0.0f,0.625f},{0.125f,0.625f},{0.1875f,0.625f},
-{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f},
-{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f},
-{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f},
-{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f},
-{1.0f,0.625f},{0.0625f,0.5f},{0.0f,0.5f},
-{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f},
-{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f},
-{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f},
-{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f},
-{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f},
-{0.0625f,0.375f},{0.0f,0.375f},{0.125f,0.375f},
-{0.1875f,0.375f},{0.25f,0.375f},{0.3125f,0.375f},
-{0.375f,0.375f},{0.4375f,0.375f},{0.5f,0.375f},
-{0.5625f,0.375f},{0.625f,0.375f},{0.6875f,0.375f},
-{0.75f,0.375f},{0.8125f,0.375f},{0.875f,0.375f},
-{0.9375f,0.375f},{1.0f,0.375f},{0.0625f,0.25f},
-{0.0f,0.25f},{0.125f,0.25f},{0.1875f,0.25f},
-{0.25f,0.25f},{0.3125f,0.25f},{0.375f,0.25f},
-{0.4375f,0.25f},{0.5f,0.25f},{0.5625f,0.25f},
-{0.625f,0.25f},{0.6875f,0.25f},{0.75f,0.25f},
-{0.8125f,0.25f},{0.875f,0.25f},{0.9375f,0.25f},
-{1.0f,0.25f},{0.0625f,0.125f},{0.0f,0.125f},
-{0.125f,0.125f},{0.1875f,0.125f},{0.25f,0.125f},
-{0.3125f,0.125f},{0.375f,0.125f},{0.4375f,0.125f},
-{0.5f,0.125f},{0.5625f,0.125f},{0.625f,0.125f},
-{0.6875f,0.125f},{0.75f,0.125f},{0.8125f,0.125f},
-{0.875f,0.125f},{0.9375f,0.125f},{1.0f,0.125f},
-{0.0f,1.25145e-008f},{0.0625f,1.25145e-008f},{0.125f,1.25145e-008f},
-{0.1875f,1.25145e-008f},{0.25f,1.25145e-008f},{0.3125f,1.25145e-008f},
-{0.375f,1.25145e-008f},{0.4375f,1.25145e-008f},{0.5f,1.25145e-008f},
-{0.5625f,1.25145e-008f},{0.625f,1.25145e-008f},{0.6875f,1.25145e-008f},
-{0.75f,1.25145e-008f},{0.8125f,1.25145e-008f},{0.875f,1.25145e-008f},
-{0.9375f,1.25145e-008f},{0.9375f,1.25145e-008f}
-};
-/*Material indicies*/
-/*{material index,face count}*/
-static int material_ref [9][2] = {
-{0,94},
-{1,4},
-{0,28},
-{1,4},
-{0,188},
-{1,4},
-{0,28},
-{1,4},
-{0,94}
-};
-static void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
-{
- GLfloat d[4];
- d[0]=f[0];
- d[1]=f[1];
- d[2]=f[2];
- d[3]=alpha;
- glMaterialfv (GL_FRONT_AND_BACK,mode,d);
-}
-/*
- * SelectMaterial uses OpenGL commands to define facet colors.
- *
- * Returns:
- * Nothing
- */
-
-static void SelectMaterial(int i)
-{
- //
- // Define the reflective properties of the 3D Object faces.
- //
- glEnd();
- GLfloat alpha=materials[i].alpha;
- MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
- MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
- MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
- MyMaterial (GL_EMISSION, materials[i].emission,alpha);
- glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
- glBegin(GL_TRIANGLES);
-
-};
-
-static GLint Gen3DObjectList()
-{
- int i;
- int j;
-
- GLint lid=glGenLists(1);
- int mcount=0;
- int mindex=0;
- glNewList(lid, GL_COMPILE);
-
- glBegin (GL_TRIANGLES);
- for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
- {
- if(!mcount)
- {
- SelectMaterial(material_ref[mindex][0]);
- mcount=material_ref[mindex][1];
- mindex++;
- }
- mcount--;
- for(j=0;j<3;j++)
- {
- int vi=face_indicies[i][j];
- int ni=face_indicies[i][j+3];//Normal index
- int ti=face_indicies[i][j+6];//Texture index
- glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
- glTexCoord2f(textures[ti][0],textures[ti][1]);
- glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
- }
- }
- glEnd ();
-
- glEndList();
- return lid;
-};
-
-void initEyes(){
- initLids();
- eyes = Gen3DObjectList();
-}
-
-void drawEyes(GLfloat angle, GLfloat yangle){
- glPushMatrix();
- glTranslatef(0, 0, .8);
- glTranslatef(0,.35,0);
- glRotatef(-90, 1.0, 0.0, 0.0);
- glRotatef(yangle, 0.0, 0.0, -1.0);
- glRotatef(angle, 0, 1.0, 0.0);
- drawLids(5);
- glCallList(eyes);
-
- glPopMatrix();
-}; \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/eyes.h b/pidgin/plugins/crazychat/eyes.h
deleted file mode 100644
index 9e49f49882..0000000000
--- a/pidgin/plugins/crazychat/eyes.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void initEyes(void);
-
-void drawEyes(GLfloat angle, GLfloat yangle); \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/face.c b/pidgin/plugins/crazychat/face.c
deleted file mode 100644
index 83878692b3..0000000000
--- a/pidgin/plugins/crazychat/face.c
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "face.h"
-#include "sharky.h"
-#include "doggy.h"
-#include <assert.h>
-
-FACE init_face(KIND kind)
-{
- FACE face;
- face = (FACE)malloc(sizeof(*face));
-
- switch(kind){
- case DOG:
- init_dog(face);
- break;
- case SHARK:
- init_shark(face);
- break;
- default:
- printf("default face\n");
- init_dog(face);
- break;
- }
- return face;
-}
-
-void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode){
- face->draw_func(face, zrot, yrot, left_eye, right_eye, mouth_open, dir, mode);
-}
-
-void change_materials(FACE f, int* mats, int num_change){
- int i;
- assert(!(num_change<0 || num_change>NUM_PARTS));
- for(i=0;i<num_change;i++){
- f->mat_indeces[i]=mats[i];
- }
-}
-
-void free_face(FACE f){}
diff --git a/pidgin/plugins/crazychat/face.h b/pidgin/plugins/crazychat/face.h
deleted file mode 100644
index de7848df23..0000000000
--- a/pidgin/plugins/crazychat/face.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef __FACE_H__
-#define __FACE_H__
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "glm.h"
-
-#define NUM_PARTS 10
-#define DOG_SHARK_CHANGE 5
-#define CRAZY_COUNT 12
-#define MAX_EYE_POP 1.3
-#define EYE_TIME 120
-#define MAX_FILE_LEN 64
-#define ANGLE_INC 60
-
-typedef enum {DOG, SHARK} KIND;
-typedef int BOOL;
-typedef enum {UP, DOWN, CONST} DIRECTION;
-typedef enum {NORMAL, CRAZY1, CRAZY2, CRAZY3} OUTPUT_MODE;
-
-struct face_struct {
- char* name;
- KIND my_kind;
- void* char_struct;
- GLint* mat_indeces;
- GLMmat_str* materials;
- OUTPUT_MODE my_mode;
- int eye_count, crazy_count;
- void (*draw_func)(struct face_struct*, GLfloat, GLfloat, BOOL, BOOL, GLfloat, DIRECTION, OUTPUT_MODE);
- float curr_z_angle, curr_eye_pop;
-};
-
-typedef struct face_struct* FACE;
-typedef enum {APPENDAGE, HEAD, LIDS, LEFT_IRIS, RIGHT_IRIS, EYES, PUPIL, EXTRA1, EXTRA2, EXTRA3} PART;
-
-FACE init_face(KIND kind);
-
-FACE copy_face(FACE f);
-
-void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode);
-
-void change_materials(FACE face, int* mats, int num_change);
-
-#endif
diff --git a/pidgin/plugins/crazychat/filter.c b/pidgin/plugins/crazychat/filter.c
deleted file mode 100644
index 4bd800e00e..0000000000
--- a/pidgin/plugins/crazychat/filter.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include "cc_interface.h"
-#include "filter.h"
-#include "stdio.h"
-
-#define coef_0 .0022
-#define coef_1 .0174
-#define coef_2 .0737
-#define coef_3 .1662
-#define coef_4 .2405
-
-filter_bank* Filter_Initialize (void)
-{
- filter_bank* new_filter;
- new_filter=(filter_bank*)malloc(sizeof(filter_bank));
- memset(new_filter,0,sizeof(filter_bank));
-// fprintf(stderr,"RESETTING FILTER BANK *******************\n");
- return new_filter;
-}
-
-void Filter_Destroy (filter_bank *f)
-{
- free(f);
-}
-
-void filter(struct cc_features *features, filter_bank *f)
-{
-
-f->head_size[9]=f->head_size[8];
-f->head_size[8]=f->head_size[7];
-f->head_size[7]=f->head_size[6];
-f->head_size[6]=f->head_size[5];
-f->head_size[5]=f->head_size[4];
-f->head_size[4]=f->head_size[3];
-f->head_size[3]=f->head_size[2];
-f->head_size[2]=f->head_size[1];
-f->head_size[1]=f->head_size[0];
-f->head_size[0]=features->head_size;
-
-features->head_size=(guint8) ( (coef_0*(f->head_size[0]+f->head_size[9]))+(coef_1*(f->head_size[1]+f->head_size[8])) +
- (coef_2*(f->head_size[2]+f->head_size[7])) + (coef_3*(f->head_size[3]+f->head_size[6]))
- + (coef_4*(f->head_size[4]+f->head_size[5])));
-
-
-
-f->head_z_rot[9]=f->head_z_rot[8];
-f->head_z_rot[8]=f->head_z_rot[7];
-f->head_z_rot[7]=f->head_z_rot[6];
-f->head_z_rot[6]=f->head_z_rot[5];
-f->head_z_rot[5]=f->head_z_rot[4];
-f->head_z_rot[4]=f->head_z_rot[3];
-f->head_z_rot[3]=f->head_z_rot[2];
-f->head_z_rot[2]=f->head_z_rot[1];
-f->head_z_rot[1]=f->head_z_rot[0];
-f->head_z_rot[0]=features->head_z_rot;
-
-features->head_z_rot=(guint8) ( (coef_0*(f->head_z_rot[0]+f->head_z_rot[9]))+(coef_1*(f->head_z_rot[1]+f->head_z_rot[8])) +
- (coef_2*(f->head_z_rot[2]+f->head_z_rot[7])) + (coef_3*(f->head_z_rot[3]+f->head_z_rot[6]))
- + (coef_4*(f->head_z_rot[4]+f->head_z_rot[5])));
-
-
-f->head_y_rot[9]=f->head_y_rot[8];
-f->head_y_rot[8]=f->head_y_rot[7];
-f->head_y_rot[7]=f->head_y_rot[6];
-f->head_y_rot[6]=f->head_y_rot[5];
-f->head_y_rot[5]=f->head_y_rot[4];
-f->head_y_rot[4]=f->head_y_rot[3];
-f->head_y_rot[3]=f->head_y_rot[2];
-f->head_y_rot[2]=f->head_y_rot[1];
-f->head_y_rot[1]=f->head_y_rot[0];
-f->head_y_rot[0]=features->head_y_rot;
-
-features->head_y_rot=(guint8) ( (coef_0*(f->head_y_rot[0]+f->head_y_rot[9]))+(coef_1*(f->head_y_rot[1]+f->head_y_rot[8])) +
- (coef_2*(f->head_y_rot[2]+f->head_y_rot[7])) + (coef_3*(f->head_y_rot[3]+f->head_y_rot[6]))
- + (coef_4*(f->head_y_rot[4]+f->head_y_rot[5])));
-
-
-f->xfilt[9]=f->xfilt[8];
-f->xfilt[8]=f->xfilt[7];
-f->xfilt[7]=f->xfilt[6];
-f->xfilt[6]=f->xfilt[5];
-f->xfilt[5]=f->xfilt[4];
-f->xfilt[4]=f->xfilt[3];
-f->xfilt[3]=f->xfilt[2];
-f->xfilt[2]=f->xfilt[1];
-f->xfilt[1]=f->xfilt[0];
-f->xfilt[0]=features->x;
-
-features->x=(guint8) ( (coef_0*(f->xfilt[0]+f->xfilt[9]))+(coef_1*(f->xfilt[1]+f->xfilt[8])) +
- (coef_2*(f->xfilt[2]+f->xfilt[7])) + (coef_3*(f->xfilt[3]+f->xfilt[6]))
- + (coef_4*(f->xfilt[4]+f->xfilt[5])));
-
-
-f->yfilt[9]=f->yfilt[8];
-f->yfilt[8]=f->yfilt[7];
-f->yfilt[7]=f->yfilt[6];
-f->yfilt[6]=f->yfilt[5];
-f->yfilt[5]=f->yfilt[4];
-f->yfilt[4]=f->yfilt[3];
-f->yfilt[3]=f->yfilt[2];
-f->yfilt[2]=f->yfilt[1];
-f->yfilt[1]=f->yfilt[0];
-f->yfilt[0]=features->y;
-
-features->y=(guint8) ( (coef_0*(f->yfilt[0]+f->yfilt[9]))+(coef_1*(f->yfilt[1]+f->yfilt[8])) +
- (coef_2*(f->yfilt[2]+f->yfilt[7])) + (coef_3*(f->yfilt[3]+f->yfilt[6]))
- + (coef_4*(f->yfilt[4]+f->yfilt[5])));
-
-
-f->mouth_open[9]=f->mouth_open[8];
-f->mouth_open[8]=f->mouth_open[7];
-f->mouth_open[7]=f->mouth_open[6];
-f->mouth_open[6]=f->mouth_open[5];
-f->mouth_open[5]=f->mouth_open[4];
-f->mouth_open[4]=f->mouth_open[3];
-f->mouth_open[3]=f->mouth_open[2];
-f->mouth_open[2]=f->mouth_open[1];
-f->mouth_open[1]=f->mouth_open[0];
-f->mouth_open[0]=features->mouth_open;
-
-features->mouth_open=(guint8) ( (coef_0*(f->mouth_open[0]+f->mouth_open[9]))+(coef_1*(f->mouth_open[1]+f->mouth_open[8])) +
- (coef_2*(f->mouth_open[2]+f->mouth_open[7])) + (coef_3*(f->mouth_open[3]+f->mouth_open[6]))
- + (coef_4*(f->mouth_open[4]+f->mouth_open[5])));
-
-}
diff --git a/pidgin/plugins/crazychat/filter.h b/pidgin/plugins/crazychat/filter.h
deleted file mode 100644
index 40e472e8bd..0000000000
--- a/pidgin/plugins/crazychat/filter.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __FILTER_H__
-#define __FILTER_H__
-
-struct cc_features;
-
-typedef struct filter_bank {
- float head_size[10];
- float head_z_rot[10];
- float head_y_rot[10];
- float mouth_open[10];
- float xfilt[10];
- float yfilt[10];
-} filter_bank;
-
-filter_bank* Filter_Initialize (void);
-void Filter_Destroy (filter_bank *f);
-void filter(struct cc_features *instance, filter_bank *f);
-
-#endif /* __FILTER_H__ */
diff --git a/pidgin/plugins/crazychat/glm.c b/pidgin/plugins/crazychat/glm.c
deleted file mode 100644
index 28c117ce47..0000000000
--- a/pidgin/plugins/crazychat/glm.c
+++ /dev/null
@@ -1,1964 +0,0 @@
-/*
- glm.c
- */
-
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "glm.h"
-
-
-#define T(x) (model->triangles[(x)])
-
-
-/* _GLMnode: general purpose node
- */
-typedef struct _GLMnode {
- GLuint index;
- GLboolean averaged;
- struct _GLMnode* next;
-} GLMnode;
-
-
-/* glmMax: returns the maximum of two floats */
-static GLfloat
-glmMax(GLfloat a, GLfloat b)
-{
- if (b > a)
- return b;
- return a;
-}
-
-/* glmAbs: returns the absolute value of a float */
-static GLfloat
-glmAbs(GLfloat f)
-{
- if (f < 0)
- return -f;
- return f;
-}
-
-/* glmDot: compute the dot product of two vectors
- *
- * u - array of 3 GLfloats (GLfloat u[3])
- * v - array of 3 GLfloats (GLfloat v[3])
- */
-static GLfloat
-glmDot(GLfloat* u, GLfloat* v)
-{
- assert(u); assert(v);
-
- return u[0]*v[0] + u[1]*v[1] + u[2]*v[2];
-}
-
-/* glmCross: compute the cross product of two vectors
- *
- * u - array of 3 GLfloats (GLfloat u[3])
- * v - array of 3 GLfloats (GLfloat v[3])
- * n - array of 3 GLfloats (GLfloat n[3]) to return the cross product in
- */
-static GLvoid
-glmCross(GLfloat* u, GLfloat* v, GLfloat* n)
-{
- assert(u); assert(v); assert(n);
-
- n[0] = u[1]*v[2] - u[2]*v[1];
- n[1] = u[2]*v[0] - u[0]*v[2];
- n[2] = u[0]*v[1] - u[1]*v[0];
-}
-
-/* glmNormalize: normalize a vector
- *
- * v - array of 3 GLfloats (GLfloat v[3]) to be normalized
- */
-static GLvoid
-glmNormalize(GLfloat* v)
-{
- GLfloat l;
-
- assert(v);
-
- l = (GLfloat)sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
- v[0] /= l;
- v[1] /= l;
- v[2] /= l;
-}
-
-/* glmEqual: compares two vectors and returns GL_TRUE if they are
- * equal (within a certain threshold) or GL_FALSE if not. An epsilon
- * that works fairly well is 0.000001.
- *
- * u - array of 3 GLfloats (GLfloat u[3])
- * v - array of 3 GLfloats (GLfloat v[3])
- */
-static GLboolean
-glmEqual(GLfloat* u, GLfloat* v, GLfloat epsilon)
-{
- if (glmAbs(u[0] - v[0]) < epsilon &&
- glmAbs(u[1] - v[1]) < epsilon &&
- glmAbs(u[2] - v[2]) < epsilon)
- {
- return GL_TRUE;
- }
- return GL_FALSE;
-}
-
-/* glmWeldVectors: eliminate (weld) vectors that are within an
- * epsilon of each other.
- *
- * vectors - array of GLfloat[3]'s to be welded
- * numvectors - number of GLfloat[3]'s in vectors
- * epsilon - maximum difference between vectors
- *
- */
-GLfloat*
-glmWeldVectors(GLfloat* vectors, GLuint* numvectors, GLfloat epsilon)
-{
- GLfloat* copies;
- GLuint copied;
- GLuint i, j;
-
- copies = (GLfloat*)malloc(sizeof(GLfloat) * 3 * (*numvectors + 1));
- memcpy(copies, vectors, (sizeof(GLfloat) * 3 * (*numvectors + 1)));
-
- copied = 1;
- for (i = 1; i <= *numvectors; i++) {
- for (j = 1; j <= copied; j++) {
- if (glmEqual(&vectors[3 * i], &copies[3 * j], epsilon)) {
- goto duplicate;
- }
- }
-
- /* must not be any duplicates -- add to the copies array */
- copies[3 * copied + 0] = vectors[3 * i + 0];
- copies[3 * copied + 1] = vectors[3 * i + 1];
- copies[3 * copied + 2] = vectors[3 * i + 2];
- j = copied; /* pass this along for below */
- copied++;
-
- duplicate:
- /* set the first component of this vector to point at the correct
- index into the new copies array */
- vectors[3 * i + 0] = (GLfloat)j;
- }
-
- *numvectors = copied-1;
- return copies;
-}
-
-/* glmFindGroup: Find a group in the model
- */
-GLMgroup*
-glmFindGroup(GLMmodel* model, char* name)
-{
- GLMgroup* group;
-
- assert(model);
-
- group = model->groups;
- while(group) {
- if (!strcmp(name, group->name))
- break;
- group = group->next;
- }
-
- return group;
-}
-
-/* glmAddGroup: Add a group to the model
- */
-GLMgroup*
-glmAddGroup(GLMmodel* model, char* name)
-{
- GLMgroup* group;
-
- group = glmFindGroup(model, name);
- if (!group) {
- group = (GLMgroup*)malloc(sizeof(GLMgroup));
- group->name = strdup(name);
- group->material = 0;
- group->numtriangles = 0;
- group->triangles = NULL;
- group->next = model->groups;
- model->groups = group;
- model->numgroups++;
- }
-
- return group;
-}
-
-/* glmFindGroup: Find a material in the model
- */
-GLuint
-glmFindMaterial(GLMmodel* model, char* name)
-{
- GLuint i;
-
- /* XXX doing a linear search on a string key'd list is pretty lame,
- but it works and is fast enough for now. */
- for (i = 0; i < model->nummaterials; i++) {
- if (!strcmp(model->materials[i].name, name))
- goto found;
- }
-
- /* didn't find the name, so print a warning and return the default
- material (0). */
- //fprintf(stderr, "glmFindMaterial(): can't find material \"%s\".\n", name);
- i = 0;
-
-found:
- return i;
-}
-
-
-/* glmDirName: return the directory given a path
- *
- * path - filesystem path
- *
- * NOTE: the return value should be free'd.
- */
-static char*
-glmDirName(char* path)
-{
- char* dir;
- char* s;
-
- dir = strdup(path);
-
- s = strrchr(dir, '/');
- if (s)
- s[1] = '\0';
- else
- dir[0] = '\0';
-
- return dir;
-}
-
-
-void glmSetMat(GLMmat_str* mats, GLint index){
- GLMmaterial* material;
- assert(!(index<0 || index >=mats->num_materials));
- material = &mats->materials[index];
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material->ambient);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material->diffuse);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material->specular);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, material->shininess);
-}
-
-
-GLMmat_str* glmMTL(char* name){
- FILE* file;
- char* dir;
- char* filename;
- char buf[128];
- GLuint nummaterials, i;
- GLMmat_str* ret;
-
- file = fopen(name, "r");
- if (!file) {
- fprintf(stderr, "glmReadMTL() failed: can't open material file \"%s\".\n",
- name);
- exit(1);
- }
-
- /* count the number of materials in the file */
- nummaterials = 1;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'n': /* newmtl */
- fgets(buf, sizeof(buf), file);
- nummaterials++;
- sscanf(buf, "%s %s", buf, buf);
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
-
- rewind(file);
-
- ret = (GLMmat_str*)malloc(sizeof(GLMmat_str));
- ret->materials = (GLMmaterial*)malloc(sizeof(GLMmaterial) * nummaterials);
- ret->num_materials = nummaterials;
-
- /* set the default material */
- for (i = 0; i < nummaterials; i++) {
- ret->materials[i].name = NULL;
- ret->materials[i].shininess = 65.0;
- ret->materials[i].diffuse[0] = 0.8;
- ret->materials[i].diffuse[1] = 0.1;
- ret->materials[i].diffuse[2] = 0.1;
- ret->materials[i].diffuse[3] = 1.0;
- ret->materials[i].ambient[0] = 0.2;
- ret->materials[i].ambient[1] = 0.2;
- ret->materials[i].ambient[2] = 0.2;
- ret->materials[i].ambient[3] = 1.0;
- ret->materials[i].specular[0] = 0.0;
- ret->materials[i].specular[1] = 0.0;
- ret->materials[i].specular[2] = 0.0;
- ret->materials[i].specular[3] = 1.0;
- }
- ret->materials[0].name = strdup("default");
-
- /* now, read in the data */
- nummaterials = 0;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'n': /* newmtl */
- fgets(buf, sizeof(buf), file);
- sscanf(buf, "%s %s", buf, buf);
- nummaterials++;
- ret->materials[nummaterials].name = strdup(buf);
- break;
- case 'N':
- fscanf(file, "%f", &ret->materials[nummaterials].shininess);
- /* wavefront shininess is from [0, 1000], so scale for OpenGL */
- ret->materials[nummaterials].shininess /= 1000.0;
- ret->materials[nummaterials].shininess *= 128.0;
- break;
- case 'K':
- switch(buf[1]) {
- case 'd':
- fscanf(file, "%f %f %f",
- &ret->materials[nummaterials].diffuse[0],
- &ret->materials[nummaterials].diffuse[1],
- &ret->materials[nummaterials].diffuse[2]);
- break;
- case 's':
- fscanf(file, "%f %f %f",
- &ret->materials[nummaterials].specular[0],
- &ret->materials[nummaterials].specular[1],
- &ret->materials[nummaterials].specular[2]);
- break;
- case 'a':
- fscanf(file, "%f %f %f",
- &ret->materials[nummaterials].ambient[0],
- &ret->materials[nummaterials].ambient[1],
- &ret->materials[nummaterials].ambient[2]);
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
- return ret;
-}
-
-//^^^^charlie^^^^^
-
-/* glmReadMTL: read a wavefront material library file
- *
- * model - properly initialized GLMmodel structure
- * name - name of the material library
- */
-static GLvoid
-glmReadMTL(GLMmodel* model, char* name)
-{
- FILE* file;
- char* dir;
- char* filename;
- char buf[128];
- GLuint nummaterials, i;
-
- dir = glmDirName(model->pathname);
- filename = (char*)malloc(sizeof(char) * (strlen(dir) + strlen(name) + 1));
- strcpy(filename, dir);
- strcat(filename, name);
- free(dir);
-
- file = fopen(filename, "r");
- if (!file) {
- fprintf(stderr, "glmReadMTL() failed: can't open material file \"%s\".\n",
- filename);
- exit(1);
- }
- free(filename);
-
- /* count the number of materials in the file */
- nummaterials = 1;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'n': /* newmtl */
- fgets(buf, sizeof(buf), file);
- nummaterials++;
- sscanf(buf, "%s %s", buf, buf);
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
-
- rewind(file);
- model->materials = (GLMmaterial*)malloc(sizeof(GLMmaterial) * nummaterials);
- model->nummaterials = nummaterials;
-
- /* set the default material */
- for (i = 0; i < nummaterials; i++) {
- model->materials[i].name = NULL;
- model->materials[i].shininess = 65.0;
- model->materials[i].diffuse[0] = 0.8;
- model->materials[i].diffuse[1] = 0.1;
- model->materials[i].diffuse[2] = 0.1;
- model->materials[i].diffuse[3] = 1.0;
- model->materials[i].ambient[0] = 0.2;
- model->materials[i].ambient[1] = 0.2;
- model->materials[i].ambient[2] = 0.2;
- model->materials[i].ambient[3] = 1.0;
- model->materials[i].specular[0] = 0.0;
- model->materials[i].specular[1] = 0.0;
- model->materials[i].specular[2] = 0.0;
- model->materials[i].specular[3] = 1.0;
- }
- model->materials[0].name = strdup("default");
-
- /* now, read in the data */
- nummaterials = 0;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'n': /* newmtl */
- fgets(buf, sizeof(buf), file);
- sscanf(buf, "%s %s", buf, buf);
- nummaterials++;
- model->materials[nummaterials].name = strdup(buf);
- break;
- case 'N':
- fscanf(file, "%f", &model->materials[nummaterials].shininess);
- /* wavefront shininess is from [0, 1000], so scale for OpenGL */
- model->materials[nummaterials].shininess /= 1000.0;
- model->materials[nummaterials].shininess *= 128.0;
- break;
- case 'K':
- switch(buf[1]) {
- case 'd':
- fscanf(file, "%f %f %f",
- &model->materials[nummaterials].diffuse[0],
- &model->materials[nummaterials].diffuse[1],
- &model->materials[nummaterials].diffuse[2]);
- break;
- case 's':
- fscanf(file, "%f %f %f",
- &model->materials[nummaterials].specular[0],
- &model->materials[nummaterials].specular[1],
- &model->materials[nummaterials].specular[2]);
- break;
- case 'a':
- fscanf(file, "%f %f %f",
- &model->materials[nummaterials].ambient[0],
- &model->materials[nummaterials].ambient[1],
- &model->materials[nummaterials].ambient[2]);
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- break;
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
-}
-
-/* glmWriteMTL: write a wavefront material library file
- *
- * model - properly initialized GLMmodel structure
- * modelpath - pathname of the model being written
- * mtllibname - name of the material library to be written
- */
-static GLvoid
-glmWriteMTL(GLMmodel* model, char* modelpath, char* mtllibname)
-{
- FILE* file;
- char* dir;
- char* filename;
- GLMmaterial* material;
- GLuint i;
-
- dir = glmDirName(modelpath);
- filename = (char*)malloc(sizeof(char) * (strlen(dir)+strlen(mtllibname)));
- strcpy(filename, dir);
- strcat(filename, mtllibname);
- free(dir);
-
- /* open the file */
- file = fopen(filename, "w");
- if (!file) {
- fprintf(stderr, "glmWriteMTL() failed: can't open file \"%s\".\n",
- filename);
- exit(1);
- }
- free(filename);
-
- /* spit out a header */
- fprintf(file, "# \n");
- fprintf(file, "# Wavefront MTL generated by GLM library\n");
- fprintf(file, "# \n");
- fprintf(file, "# GLM library\n");
- fprintf(file, "# Nate Robins\n");
- fprintf(file, "# ndr@pobox.com\n");
- fprintf(file, "# http://www.pobox.com/~ndr\n");
- fprintf(file, "# \n\n");
-
- for (i = 0; i < model->nummaterials; i++) {
- material = &model->materials[i];
- fprintf(file, "newmtl %s\n", material->name);
- fprintf(file, "Ka %f %f %f\n",
- material->ambient[0], material->ambient[1], material->ambient[2]);
- fprintf(file, "Kd %f %f %f\n",
- material->diffuse[0], material->diffuse[1], material->diffuse[2]);
- fprintf(file, "Ks %f %f %f\n",
- material->specular[0],material->specular[1],material->specular[2]);
- fprintf(file, "Ns %f\n", material->shininess / 128.0 * 1000.0);
- fprintf(file, "\n");
- }
-
- fclose(file);
-}
-
-
-/* glmFirstPass: first pass at a Wavefront OBJ file that gets all the
- * statistics of the model (such as #vertices, #normals, etc)
- *
- * model - properly initialized GLMmodel structure
- * file - (fopen'd) file descriptor
- */
-static GLvoid
-glmFirstPass(GLMmodel* model, FILE* file)
-{
- GLuint numvertices; /* number of vertices in model */
- GLuint numnormals; /* number of normals in model */
- GLuint numtexcoords; /* number of texcoords in model */
- GLuint numtriangles; /* number of triangles in model */
- GLMgroup* group; /* current group */
- unsigned v, n, t;
- char buf[128];
-
- /* make a default group */
- group = glmAddGroup(model, "default");
-
- numvertices = numnormals = numtexcoords = numtriangles = 0;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'v': /* v, vn, vt */
- switch(buf[1]) {
- case '\0': /* vertex */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- numvertices++;
- break;
- case 'n': /* normal */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- numnormals++;
- break;
- case 't': /* texcoord */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- numtexcoords++;
- break;
- default:
- printf("glmFirstPass(): Unknown token \"%s\".\n", buf);
- exit(1);
- break;
- }
- break;
- case 'm':
- fgets(buf, sizeof(buf), file);
- sscanf(buf, "%s %s", buf, buf);
- model->mtllibname = strdup(buf);
- //glmReadMTL(model, buf);
- break;
- case 'u':
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'g': /* group */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
-#if SINGLE_STRING_GROUP_NAMES
- sscanf(buf, "%s", buf);
-#else
- buf[strlen(buf)-1] = '\0'; /* nuke '\n' */
-#endif
- group = glmAddGroup(model, buf);
- break;
- case 'f': /* face */
- v = n = t = 0;
- fscanf(file, "%s", buf);
- /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */
- if (strstr(buf, "//")) {
- /* v//n */
- sscanf(buf, "%d//%d", &v, &n);
- fscanf(file, "%d//%d", &v, &n);
- fscanf(file, "%d//%d", &v, &n);
- numtriangles++;
- group->numtriangles++;
- while(fscanf(file, "%d//%d", &v, &n) > 0) {
- numtriangles++;
- group->numtriangles++;
- }
- } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) {
- /* v/t/n */
- fscanf(file, "%d/%d/%d", &v, &t, &n);
- fscanf(file, "%d/%d/%d", &v, &t, &n);
- numtriangles++;
- group->numtriangles++;
- while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) {
- numtriangles++;
- group->numtriangles++;
- }
- } else if (sscanf(buf, "%d/%d", &v, &t) == 2) {
- /* v/t */
- fscanf(file, "%d/%d", &v, &t);
- fscanf(file, "%d/%d", &v, &t);
- numtriangles++;
- group->numtriangles++;
- while(fscanf(file, "%d/%d", &v, &t) > 0) {
- numtriangles++;
- group->numtriangles++;
- }
- } else {
- /* v */
- fscanf(file, "%d", &v);
- fscanf(file, "%d", &v);
- numtriangles++;
- group->numtriangles++;
- while(fscanf(file, "%d", &v) > 0) {
- numtriangles++;
- group->numtriangles++;
- }
- }
- break;
-
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
-
- /* set the stats in the model structure */
- model->numvertices = numvertices;
- model->numnormals = numnormals;
- model->numtexcoords = numtexcoords;
- model->numtriangles = numtriangles;
-
- /* allocate memory for the triangles in each group */
- group = model->groups;
- while(group) {
- group->triangles = (GLuint*)malloc(sizeof(GLuint) * group->numtriangles);
- group->numtriangles = 0;
- group = group->next;
- }
-}
-
-/* glmSecondPass: second pass at a Wavefront OBJ file that gets all
- * the data.
- *
- * model - properly initialized GLMmodel structure
- * file - (fopen'd) file descriptor
- */
-static GLvoid
-glmSecondPass(GLMmodel* model, FILE* file)
-{
- GLuint numvertices; /* number of vertices in model */
- GLuint numnormals; /* number of normals in model */
- GLuint numtexcoords; /* number of texcoords in model */
- GLuint numtriangles; /* number of triangles in model */
- GLfloat* vertices; /* array of vertices */
- GLfloat* normals; /* array of normals */
- GLfloat* texcoords; /* array of texture coordinates */
- GLMgroup* group; /* current group pointer */
- GLuint material; /* current material */
- GLuint v, n, t;
- char buf[128];
-
- /* set the pointer shortcuts */
- vertices = model->vertices;
- normals = model->normals;
- texcoords = model->texcoords;
- group = model->groups;
-
- /* on the second pass through the file, read all the data into the
- allocated arrays */
- numvertices = numnormals = numtexcoords = 1;
- numtriangles = 0;
- material = 0;
- while(fscanf(file, "%s", buf) != EOF) {
- switch(buf[0]) {
- case '#': /* comment */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- case 'v': /* v, vn, vt */
- switch(buf[1]) {
- case '\0': /* vertex */
- fscanf(file, "%f %f %f",
- &vertices[3 * numvertices + 0],
- &vertices[3 * numvertices + 1],
- &vertices[3 * numvertices + 2]);
- numvertices++;
- break;
- case 'n': /* normal */
- fscanf(file, "%f %f %f",
- &normals[3 * numnormals + 0],
- &normals[3 * numnormals + 1],
- &normals[3 * numnormals + 2]);
- numnormals++;
- break;
- case 't': /* texcoord */
- fscanf(file, "%f %f",
- &texcoords[2 * numtexcoords + 0],
- &texcoords[2 * numtexcoords + 1]);
- numtexcoords++;
- break;
- }
- break;
- case 'u':
- fgets(buf, sizeof(buf), file);
- sscanf(buf, "%s %s", buf, buf);
- group->material = material = glmFindMaterial(model, buf);
- break;
- case 'g': /* group */
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
-#if SINGLE_STRING_GROUP_NAMES
- sscanf(buf, "%s", buf);
-#else
- buf[strlen(buf)-1] = '\0'; /* nuke '\n' */
-#endif
- group = glmFindGroup(model, buf);
- group->material = material;
- break;
- case 'f': /* face */
- v = n = t = 0;
- fscanf(file, "%s", buf);
- /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */
- if (strstr(buf, "//")) {
- /* v//n */
- sscanf(buf, "%d//%d", &v, &n);
- T(numtriangles).vindices[0] = v;
- T(numtriangles).nindices[0] = n;
- fscanf(file, "%d//%d", &v, &n);
- T(numtriangles).vindices[1] = v;
- T(numtriangles).nindices[1] = n;
- fscanf(file, "%d//%d", &v, &n);
- T(numtriangles).vindices[2] = v;
- T(numtriangles).nindices[2] = n;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- while(fscanf(file, "%d//%d", &v, &n) > 0) {
- T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0];
- T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0];
- T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2];
- T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2];
- T(numtriangles).vindices[2] = v;
- T(numtriangles).nindices[2] = n;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- }
- } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) {
- /* v/t/n */
- T(numtriangles).vindices[0] = v;
- T(numtriangles).tindices[0] = t;
- T(numtriangles).nindices[0] = n;
- fscanf(file, "%d/%d/%d", &v, &t, &n);
- T(numtriangles).vindices[1] = v;
- T(numtriangles).tindices[1] = t;
- T(numtriangles).nindices[1] = n;
- fscanf(file, "%d/%d/%d", &v, &t, &n);
- T(numtriangles).vindices[2] = v;
- T(numtriangles).tindices[2] = t;
- T(numtriangles).nindices[2] = n;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) {
- T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0];
- T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0];
- T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0];
- T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2];
- T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2];
- T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2];
- T(numtriangles).vindices[2] = v;
- T(numtriangles).tindices[2] = t;
- T(numtriangles).nindices[2] = n;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- }
- } else if (sscanf(buf, "%d/%d", &v, &t) == 2) {
- /* v/t */
- T(numtriangles).vindices[0] = v;
- T(numtriangles).tindices[0] = t;
- fscanf(file, "%d/%d", &v, &t);
- T(numtriangles).vindices[1] = v;
- T(numtriangles).tindices[1] = t;
- fscanf(file, "%d/%d", &v, &t);
- T(numtriangles).vindices[2] = v;
- T(numtriangles).tindices[2] = t;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- while(fscanf(file, "%d/%d", &v, &t) > 0) {
- T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0];
- T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0];
- T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2];
- T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2];
- T(numtriangles).vindices[2] = v;
- T(numtriangles).tindices[2] = t;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- }
- } else {
- /* v */
- sscanf(buf, "%d", &v);
- T(numtriangles).vindices[0] = v;
- fscanf(file, "%d", &v);
- T(numtriangles).vindices[1] = v;
- fscanf(file, "%d", &v);
- T(numtriangles).vindices[2] = v;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- while(fscanf(file, "%d", &v) > 0) {
- T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0];
- T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2];
- T(numtriangles).vindices[2] = v;
- group->triangles[group->numtriangles++] = numtriangles;
- numtriangles++;
- }
- }
- break;
-
- default:
- /* eat up rest of line */
- fgets(buf, sizeof(buf), file);
- break;
- }
- }
-
-#if 0
- /* announce the memory requirements */
- printf(" Memory: %d bytes\n",
- numvertices * 3*sizeof(GLfloat) +
- numnormals * 3*sizeof(GLfloat) * (numnormals ? 1 : 0) +
- numtexcoords * 3*sizeof(GLfloat) * (numtexcoords ? 1 : 0) +
- numtriangles * sizeof(GLMtriangle));
-#endif
-}
-
-
-/* public functions */
-
-
-/* glmUnitize: "unitize" a model by translating it to the origin and
- * scaling it to fit in a unit cube around the origin. Modelurns the
- * scalefactor used.
- *
- * model - properly initialized GLMmodel structure
- */
-GLfloat
-glmUnitize(GLMmodel* model)
-{
- GLuint i;
- GLfloat maxx, minx, maxy, miny, maxz, minz;
- GLfloat cx, cy, cz, w, h, d;
- GLfloat scale;
-
- assert(model);
- assert(model->vertices);
-
- /* get the max/mins */
- maxx = minx = model->vertices[3 + 0];
- maxy = miny = model->vertices[3 + 1];
- maxz = minz = model->vertices[3 + 2];
- for (i = 1; i <= model->numvertices; i++) {
- if (maxx < model->vertices[3 * i + 0])
- maxx = model->vertices[3 * i + 0];
- if (minx > model->vertices[3 * i + 0])
- minx = model->vertices[3 * i + 0];
-
- if (maxy < model->vertices[3 * i + 1])
- maxy = model->vertices[3 * i + 1];
- if (miny > model->vertices[3 * i + 1])
- miny = model->vertices[3 * i + 1];
-
- if (maxz < model->vertices[3 * i + 2])
- maxz = model->vertices[3 * i + 2];
- if (minz > model->vertices[3 * i + 2])
- minz = model->vertices[3 * i + 2];
- }
-
- /* calculate model width, height, and depth */
- w = glmAbs(maxx) + glmAbs(minx);
- h = glmAbs(maxy) + glmAbs(miny);
- d = glmAbs(maxz) + glmAbs(minz);
-
- /* calculate center of the model */
- cx = (maxx + minx) / 2.0;
- cy = (maxy + miny) / 2.0;
- cz = (maxz + minz) / 2.0;
-
- /* calculate unitizing scale factor */
- scale = 2.0 / glmMax(glmMax(w, h), d);
-
- /* translate around center then scale */
- for (i = 1; i <= model->numvertices; i++) {
- model->vertices[3 * i + 0] -= cx;
- model->vertices[3 * i + 1] -= cy;
- model->vertices[3 * i + 2] -= cz;
- //charlie, i took this out, i just want to center
-/*
- model->vertices[3 * i + 0] *= scale;
- model->vertices[3 * i + 1] *= scale;
- model->vertices[3 * i + 2] *= scale;
-*/
- }
-
- return scale;
-}
-
-/* glmDimensions: Calculates the dimensions (width, height, depth) of
- * a model.
- *
- * model - initialized GLMmodel structure
- * dimensions - array of 3 GLfloats (GLfloat dimensions[3])
- */
-GLvoid
-glmDimensions(GLMmodel* model, GLfloat* dimensions)
-{
- GLuint i;
- GLfloat maxx, minx, maxy, miny, maxz, minz;
-
- assert(model);
- assert(model->vertices);
- assert(dimensions);
-
- /* get the max/mins */
- maxx = minx = model->vertices[3 + 0];
- maxy = miny = model->vertices[3 + 1];
- maxz = minz = model->vertices[3 + 2];
- for (i = 1; i <= model->numvertices; i++) {
- if (maxx < model->vertices[3 * i + 0])
- maxx = model->vertices[3 * i + 0];
- if (minx > model->vertices[3 * i + 0])
- minx = model->vertices[3 * i + 0];
-
- if (maxy < model->vertices[3 * i + 1])
- maxy = model->vertices[3 * i + 1];
- if (miny > model->vertices[3 * i + 1])
- miny = model->vertices[3 * i + 1];
-
- if (maxz < model->vertices[3 * i + 2])
- maxz = model->vertices[3 * i + 2];
- if (minz > model->vertices[3 * i + 2])
- minz = model->vertices[3 * i + 2];
- }
-
- /* calculate model width, height, and depth */
- dimensions[0] = glmAbs(maxx) + glmAbs(minx);
- dimensions[1] = glmAbs(maxy) + glmAbs(miny);
- dimensions[2] = glmAbs(maxz) + glmAbs(minz);
-}
-
-/* glmScale: Scales a model by a given amount.
- *
- * model - properly initialized GLMmodel structure
- * scale - scalefactor (0.5 = half as large, 2.0 = twice as large)
- */
-GLvoid
-glmScale(GLMmodel* model, GLfloat scale)
-{
- GLuint i;
-
- for (i = 1; i <= model->numvertices; i++) {
- model->vertices[3 * i + 0] *= scale;
- model->vertices[3 * i + 1] *= scale;
- model->vertices[3 * i + 2] *= scale;
- }
-}
-
-/* glmReverseWinding: Reverse the polygon winding for all polygons in
- * this model. Default winding is counter-clockwise. Also changes
- * the direction of the normals.
- *
- * model - properly initialized GLMmodel structure
- */
-GLvoid
-glmReverseWinding(GLMmodel* model)
-{
- GLuint i, swap;
-
- assert(model);
-
- for (i = 0; i < model->numtriangles; i++) {
- swap = T(i).vindices[0];
- T(i).vindices[0] = T(i).vindices[2];
- T(i).vindices[2] = swap;
-
- if (model->numnormals) {
- swap = T(i).nindices[0];
- T(i).nindices[0] = T(i).nindices[2];
- T(i).nindices[2] = swap;
- }
-
- if (model->numtexcoords) {
- swap = T(i).tindices[0];
- T(i).tindices[0] = T(i).tindices[2];
- T(i).tindices[2] = swap;
- }
- }
-
- /* reverse facet normals */
- for (i = 1; i <= model->numfacetnorms; i++) {
- model->facetnorms[3 * i + 0] = -model->facetnorms[3 * i + 0];
- model->facetnorms[3 * i + 1] = -model->facetnorms[3 * i + 1];
- model->facetnorms[3 * i + 2] = -model->facetnorms[3 * i + 2];
- }
-
- /* reverse vertex normals */
- for (i = 1; i <= model->numnormals; i++) {
- model->normals[3 * i + 0] = -model->normals[3 * i + 0];
- model->normals[3 * i + 1] = -model->normals[3 * i + 1];
- model->normals[3 * i + 2] = -model->normals[3 * i + 2];
- }
-}
-
-/* glmFacetNormals: Generates facet normals for a model (by taking the
- * cross product of the two vectors derived from the sides of each
- * triangle). Assumes a counter-clockwise winding.
- *
- * model - initialized GLMmodel structure
- */
-GLvoid
-glmFacetNormals(GLMmodel* model)
-{
- GLuint i;
- GLfloat u[3];
- GLfloat v[3];
-
- assert(model);
- assert(model->vertices);
-
- /* clobber any old facetnormals */
- if (model->facetnorms)
- free(model->facetnorms);
-
- /* allocate memory for the new facet normals */
- model->numfacetnorms = model->numtriangles;
- model->facetnorms = (GLfloat*)malloc(sizeof(GLfloat) *
- 3 * (model->numfacetnorms + 1));
-
- for (i = 0; i < model->numtriangles; i++) {
- model->triangles[i].findex = i+1;
-
- u[0] = model->vertices[3 * T(i).vindices[1] + 0] -
- model->vertices[3 * T(i).vindices[0] + 0];
- u[1] = model->vertices[3 * T(i).vindices[1] + 1] -
- model->vertices[3 * T(i).vindices[0] + 1];
- u[2] = model->vertices[3 * T(i).vindices[1] + 2] -
- model->vertices[3 * T(i).vindices[0] + 2];
-
- v[0] = model->vertices[3 * T(i).vindices[2] + 0] -
- model->vertices[3 * T(i).vindices[0] + 0];
- v[1] = model->vertices[3 * T(i).vindices[2] + 1] -
- model->vertices[3 * T(i).vindices[0] + 1];
- v[2] = model->vertices[3 * T(i).vindices[2] + 2] -
- model->vertices[3 * T(i).vindices[0] + 2];
-
- glmCross(u, v, &model->facetnorms[3 * (i+1)]);
- glmNormalize(&model->facetnorms[3 * (i+1)]);
- }
-}
-
-/* glmVertexNormals: Generates smooth vertex normals for a model.
- * First builds a list of all the triangles each vertex is in. Then
- * loops through each vertex in the the list averaging all the facet
- * normals of the triangles each vertex is in. Finally, sets the
- * normal index in the triangle for the vertex to the generated smooth
- * normal. If the dot product of a facet normal and the facet normal
- * associated with the first triangle in the list of triangles the
- * current vertex is in is greater than the cosine of the angle
- * parameter to the function, that facet normal is not added into the
- * average normal calculation and the corresponding vertex is given
- * the facet normal. This tends to preserve hard edges. The angle to
- * use depends on the model, but 90 degrees is usually a good start.
- *
- * model - initialized GLMmodel structure
- * angle - maximum angle (in degrees) to smooth across
- */
-GLvoid
-glmVertexNormals(GLMmodel* model, GLfloat angle)
-{
- GLMnode* node;
- GLMnode* tail;
- GLMnode** members;
- GLfloat* normals;
- GLuint numnormals;
- GLfloat average[3];
- GLfloat dot, cos_angle;
- GLuint i, avg;
-
- assert(model);
- assert(model->facetnorms);
-
- /* calculate the cosine of the angle (in degrees) */
- cos_angle = cos(angle * M_PI / 180.0);
-
- /* nuke any previous normals */
- if (model->normals)
- free(model->normals);
-
- /* allocate space for new normals */
- model->numnormals = model->numtriangles * 3; /* 3 normals per triangle */
- model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1));
-
- /* allocate a structure that will hold a linked list of triangle
- indices for each vertex */
- members = (GLMnode**)malloc(sizeof(GLMnode*) * (model->numvertices + 1));
- for (i = 1; i <= model->numvertices; i++)
- members[i] = NULL;
-
- /* for every triangle, create a node for each vertex in it */
- for (i = 0; i < model->numtriangles; i++) {
- node = (GLMnode*)malloc(sizeof(GLMnode));
- node->index = i;
- node->next = members[T(i).vindices[0]];
- members[T(i).vindices[0]] = node;
-
- node = (GLMnode*)malloc(sizeof(GLMnode));
- node->index = i;
- node->next = members[T(i).vindices[1]];
- members[T(i).vindices[1]] = node;
-
- node = (GLMnode*)malloc(sizeof(GLMnode));
- node->index = i;
- node->next = members[T(i).vindices[2]];
- members[T(i).vindices[2]] = node;
- }
-
- /* calculate the average normal for each vertex */
- numnormals = 1;
- for (i = 1; i <= model->numvertices; i++) {
- /* calculate an average normal for this vertex by averaging the
- facet normal of every triangle this vertex is in */
- node = members[i];
- if (!node)
- fprintf(stderr, "glmVertexNormals(): vertex w/o a triangle\n");
- average[0] = 0.0; average[1] = 0.0; average[2] = 0.0;
- avg = 0;
- while (node) {
- /* only average if the dot product of the angle between the two
- facet normals is greater than the cosine of the threshold
- angle -- or, said another way, the angle between the two
- facet normals is less than (or equal to) the threshold angle */
- dot = glmDot(&model->facetnorms[3 * T(node->index).findex],
- &model->facetnorms[3 * T(members[i]->index).findex]);
- if (dot > cos_angle) {
- node->averaged = GL_TRUE;
- average[0] += model->facetnorms[3 * T(node->index).findex + 0];
- average[1] += model->facetnorms[3 * T(node->index).findex + 1];
- average[2] += model->facetnorms[3 * T(node->index).findex + 2];
- avg = 1; /* we averaged at least one normal! */
- } else {
- node->averaged = GL_FALSE;
- }
- node = node->next;
- }
-
- if (avg) {
- /* normalize the averaged normal */
- glmNormalize(average);
-
- /* add the normal to the vertex normals list */
- model->normals[3 * numnormals + 0] = average[0];
- model->normals[3 * numnormals + 1] = average[1];
- model->normals[3 * numnormals + 2] = average[2];
- avg = numnormals;
- numnormals++;
- }
-
- /* set the normal of this vertex in each triangle it is in */
- node = members[i];
- while (node) {
- if (node->averaged) {
- /* if this node was averaged, use the average normal */
- if (T(node->index).vindices[0] == i)
- T(node->index).nindices[0] = avg;
- else if (T(node->index).vindices[1] == i)
- T(node->index).nindices[1] = avg;
- else if (T(node->index).vindices[2] == i)
- T(node->index).nindices[2] = avg;
- } else {
- /* if this node wasn't averaged, use the facet normal */
- model->normals[3 * numnormals + 0] =
- model->facetnorms[3 * T(node->index).findex + 0];
- model->normals[3 * numnormals + 1] =
- model->facetnorms[3 * T(node->index).findex + 1];
- model->normals[3 * numnormals + 2] =
- model->facetnorms[3 * T(node->index).findex + 2];
- if (T(node->index).vindices[0] == i)
- T(node->index).nindices[0] = numnormals;
- else if (T(node->index).vindices[1] == i)
- T(node->index).nindices[1] = numnormals;
- else if (T(node->index).vindices[2] == i)
- T(node->index).nindices[2] = numnormals;
- numnormals++;
- }
- node = node->next;
- }
- }
-
- model->numnormals = numnormals - 1;
-
- /* free the member information */
- for (i = 1; i <= model->numvertices; i++) {
- node = members[i];
- while (node) {
- tail = node;
- node = node->next;
- free(tail);
- }
- }
- free(members);
-
- /* pack the normals array (we previously allocated the maximum
- number of normals that could possibly be created (numtriangles *
- 3), so get rid of some of them (usually alot unless none of the
- facet normals were averaged)) */
- normals = model->normals;
- model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1));
- for (i = 1; i <= model->numnormals; i++) {
- model->normals[3 * i + 0] = normals[3 * i + 0];
- model->normals[3 * i + 1] = normals[3 * i + 1];
- model->normals[3 * i + 2] = normals[3 * i + 2];
- }
- free(normals);
-}
-
-
-/* glmLinearTexture: Generates texture coordinates according to a
- * linear projection of the texture map. It generates these by
- * linearly mapping the vertices onto a square.
- *
- * model - pointer to initialized GLMmodel structure
- */
-GLvoid
-glmLinearTexture(GLMmodel* model)
-{
- GLMgroup *group;
- GLfloat dimensions[3];
- GLfloat x, y, scalefactor;
- GLuint i;
-
- assert(model);
-
- if (model->texcoords)
- free(model->texcoords);
- model->numtexcoords = model->numvertices;
- model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1));
-
- glmDimensions(model, dimensions);
- scalefactor = 2.0 /
- glmAbs(glmMax(glmMax(dimensions[0], dimensions[1]), dimensions[2]));
-
- /* do the calculations */
- for(i = 1; i <= model->numvertices; i++) {
- x = model->vertices[3 * i + 0] * scalefactor;
- y = model->vertices[3 * i + 2] * scalefactor;
- model->texcoords[2 * i + 0] = (x + 1.0) / 2.0;
- model->texcoords[2 * i + 1] = (y + 1.0) / 2.0;
- }
-
- /* go through and put texture coordinate indices in all the triangles */
- group = model->groups;
- while(group) {
- for(i = 0; i < group->numtriangles; i++) {
- T(group->triangles[i]).tindices[0] = T(group->triangles[i]).vindices[0];
- T(group->triangles[i]).tindices[1] = T(group->triangles[i]).vindices[1];
- T(group->triangles[i]).tindices[2] = T(group->triangles[i]).vindices[2];
- }
- group = group->next;
- }
-
-#if 0
- printf("glmLinearTexture(): generated %d linear texture coordinates\n",
- model->numtexcoords);
-#endif
-}
-
-/* glmSpheremapTexture: Generates texture coordinates according to a
- * spherical projection of the texture map. Sometimes referred to as
- * spheremap, or reflection map texture coordinates. It generates
- * these by using the normal to calculate where that vertex would map
- * onto a sphere. Since it is impossible to map something flat
- * perfectly onto something spherical, there is distortion at the
- * poles. This particular implementation causes the poles along the X
- * axis to be distorted.
- *
- * model - pointer to initialized GLMmodel structure
- */
-GLvoid
-glmSpheremapTexture(GLMmodel* model)
-{
- GLMgroup* group;
- GLfloat theta, phi, rho, x, y, z, r;
- GLuint i;
-
- assert(model);
- assert(model->normals);
-
- if (model->texcoords)
- free(model->texcoords);
- model->numtexcoords = model->numnormals;
- model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1));
-
- for (i = 1; i <= model->numnormals; i++) {
- z = model->normals[3 * i + 0]; /* re-arrange for pole distortion */
- y = model->normals[3 * i + 1];
- x = model->normals[3 * i + 2];
- r = sqrt((x * x) + (y * y));
- rho = sqrt((r * r) + (z * z));
-
- if(r == 0.0) {
- theta = 0.0;
- phi = 0.0;
- } else {
- if(z == 0.0)
- phi = 3.14159265 / 2.0;
- else
- phi = acos(z / rho);
-
- if(y == 0.0)
- theta = 3.141592365 / 2.0;
- else
- theta = asin(y / r) + (3.14159265 / 2.0);
- }
-
- model->texcoords[2 * i + 0] = theta / 3.14159265;
- model->texcoords[2 * i + 1] = phi / 3.14159265;
- }
-
- /* go through and put texcoord indices in all the triangles */
- group = model->groups;
- while(group) {
- for (i = 0; i < group->numtriangles; i++) {
- T(group->triangles[i]).tindices[0] = T(group->triangles[i]).nindices[0];
- T(group->triangles[i]).tindices[1] = T(group->triangles[i]).nindices[1];
- T(group->triangles[i]).tindices[2] = T(group->triangles[i]).nindices[2];
- }
- group = group->next;
- }
-}
-
-/* glmDelete: Deletes a GLMmodel structure.
- *
- * model - initialized GLMmodel structure
- */
-GLvoid
-glmDelete(GLMmodel* model)
-{
- GLMgroup* group;
- GLuint i;
-
- assert(model);
-
- if (model->pathname) free(model->pathname);
- if (model->mtllibname) free(model->mtllibname);
- if (model->vertices) free(model->vertices);
- if (model->normals) free(model->normals);
- if (model->texcoords) free(model->texcoords);
- if (model->facetnorms) free(model->facetnorms);
- if (model->triangles) free(model->triangles);
- if (model->materials) {
- for (i = 0; i < model->nummaterials; i++)
- free(model->materials[i].name);
- }
- free(model->materials);
- while(model->groups) {
- group = model->groups;
- model->groups = model->groups->next;
- free(group->name);
- free(group->triangles);
- free(group);
- }
-
- free(model);
-}
-
-/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file.
- * Modelurns a pointer to the created object which should be free'd with
- * glmDelete().
- *
- * filename - name of the file containing the Wavefront .OBJ format data.
- */
-GLMmodel*
-glmReadOBJ(char* filename)
-{
- GLMmodel* model;
- FILE* file;
-printf("*");
-fflush(NULL);
-
- /* open the file */
- file = fopen(filename, "r");
- if (!file) {
- fprintf(stderr, "glmReadOBJ() failed: can't open data file \"%s\".\n",
- filename);
- exit(1);
- }
-
- /* allocate a new model */
- model = (GLMmodel*)malloc(sizeof(GLMmodel));
- model->pathname = strdup(filename);
- model->mtllibname = NULL;
- model->numvertices = 0;
- model->vertices = NULL;
- model->numnormals = 0;
- model->normals = NULL;
- model->numtexcoords = 0;
- model->texcoords = NULL;
- model->numfacetnorms = 0;
- model->facetnorms = NULL;
- model->numtriangles = 0;
- model->triangles = NULL;
- model->nummaterials = 0;
- model->materials = NULL;
- model->numgroups = 0;
- model->groups = NULL;
- model->position[0] = 0.0;
- model->position[1] = 0.0;
- model->position[2] = 0.0;
-
- /* make a first pass through the file to get a count of the number
- of vertices, normals, texcoords & triangles */
- glmFirstPass(model, file);
-
- /* allocate memory */
- model->vertices = (GLfloat*)malloc(sizeof(GLfloat) *
- 3 * (model->numvertices + 1));
- model->triangles = (GLMtriangle*)malloc(sizeof(GLMtriangle) *
- model->numtriangles);
- if (model->numnormals) {
- model->normals = (GLfloat*)malloc(sizeof(GLfloat) *
- 3 * (model->numnormals + 1));
- }
- if (model->numtexcoords) {
- model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) *
- 2 * (model->numtexcoords + 1));
- }
-
- /* rewind to beginning of file and read in the data this pass */
- rewind(file);
-
- glmSecondPass(model, file);
-
- /* close the file */
- fclose(file);
-
- return model;
-}
-
-/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to
- * a file.
- *
- * model - initialized GLMmodel structure
- * filename - name of the file to write the Wavefront .OBJ format data to
- * mode - a bitwise or of values describing what is written to the file
- * GLM_NONE - render with only vertices
- * GLM_FLAT - render with facet normals
- * GLM_SMOOTH - render with vertex normals
- * GLM_TEXTURE - render with texture coords
- * GLM_COLOR - render with colors (color material)
- * GLM_MATERIAL - render with materials
- * GLM_COLOR and GLM_MATERIAL should not both be specified.
- * GLM_FLAT and GLM_SMOOTH should not both be specified.
- */
-GLvoid
-glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode)
-{
- GLuint i;
- FILE* file;
- GLMgroup* group;
-
- assert(model);
-
- /* do a bit of warning */
- if (mode & GLM_FLAT && !model->facetnorms) {
- printf("glmWriteOBJ() warning: flat normal output requested "
- "with no facet normals defined.\n");
- mode &= ~GLM_FLAT;
- }
- if (mode & GLM_SMOOTH && !model->normals) {
- printf("glmWriteOBJ() warning: smooth normal output requested "
- "with no normals defined.\n");
- mode &= ~GLM_SMOOTH;
- }
- if (mode & GLM_TEXTURE && !model->texcoords) {
- printf("glmWriteOBJ() warning: texture coordinate output requested "
- "with no texture coordinates defined.\n");
- mode &= ~GLM_TEXTURE;
- }
- if (mode & GLM_FLAT && mode & GLM_SMOOTH) {
- printf("glmWriteOBJ() warning: flat normal output requested "
- "and smooth normal output requested (using smooth).\n");
- mode &= ~GLM_FLAT;
- }
- if (mode & GLM_COLOR && !model->materials) {
- printf("glmWriteOBJ() warning: color output requested "
- "with no colors (materials) defined.\n");
- mode &= ~GLM_COLOR;
- }
- if (mode & GLM_MATERIAL && !model->materials) {
- printf("glmWriteOBJ() warning: material output requested "
- "with no materials defined.\n");
- mode &= ~GLM_MATERIAL;
- }
- if (mode & GLM_COLOR && mode & GLM_MATERIAL) {
- printf("glmWriteOBJ() warning: color and material output requested "
- "outputting only materials.\n");
- mode &= ~GLM_COLOR;
- }
-
-
- /* open the file */
- file = fopen(filename, "w");
- if (!file) {
- fprintf(stderr, "glmWriteOBJ() failed: can't open file \"%s\" to write.\n",
- filename);
- exit(1);
- }
-
- /* spit out a header */
- fprintf(file, "# \n");
- fprintf(file, "# Wavefront OBJ generated by GLM library\n");
- fprintf(file, "# \n");
- fprintf(file, "# GLM library\n");
- fprintf(file, "# Nate Robins\n");
- fprintf(file, "# ndr@pobox.com\n");
- fprintf(file, "# http://www.pobox.com/~ndr\n");
- fprintf(file, "# \n");
-
- if (mode & GLM_MATERIAL && model->mtllibname) {
- fprintf(file, "\nmtllib %s\n\n", model->mtllibname);
- glmWriteMTL(model, filename, model->mtllibname);
- }
-
- /* spit out the vertices */
- fprintf(file, "\n");
- fprintf(file, "# %d vertices\n", model->numvertices);
- for (i = 1; i <= model->numvertices; i++) {
- fprintf(file, "v %f %f %f\n",
- model->vertices[3 * i + 0],
- model->vertices[3 * i + 1],
- model->vertices[3 * i + 2]);
- }
-
- /* spit out the smooth/flat normals */
- if (mode & GLM_SMOOTH) {
- fprintf(file, "\n");
- fprintf(file, "# %d normals\n", model->numnormals);
- for (i = 1; i <= model->numnormals; i++) {
- fprintf(file, "vn %f %f %f\n",
- model->normals[3 * i + 0],
- model->normals[3 * i + 1],
- model->normals[3 * i + 2]);
- }
- } else if (mode & GLM_FLAT) {
- fprintf(file, "\n");
- fprintf(file, "# %d normals\n", model->numfacetnorms);
- for (i = 1; i <= model->numnormals; i++) {
- fprintf(file, "vn %f %f %f\n",
- model->facetnorms[3 * i + 0],
- model->facetnorms[3 * i + 1],
- model->facetnorms[3 * i + 2]);
- }
- }
-
- /* spit out the texture coordinates */
- if (mode & GLM_TEXTURE) {
- fprintf(file, "\n");
- fprintf(file, "# %d texcoords\n", model->texcoords);
- for (i = 1; i <= model->numtexcoords; i++) {
- fprintf(file, "vt %f %f\n",
- model->texcoords[2 * i + 0],
- model->texcoords[2 * i + 1]);
- }
- }
-
- fprintf(file, "\n");
- fprintf(file, "# %d groups\n", model->numgroups);
- fprintf(file, "# %d faces (triangles)\n", model->numtriangles);
- fprintf(file, "\n");
-
- group = model->groups;
- while(group) {
- fprintf(file, "g %s\n", group->name);
- if (mode & GLM_MATERIAL)
- fprintf(file, "usemtl %s\n", model->materials[group->material].name);
- for (i = 0; i < group->numtriangles; i++) {
- if (mode & GLM_SMOOTH && mode & GLM_TEXTURE) {
- fprintf(file, "f %d/%d/%d %d/%d/%d %d/%d/%d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).nindices[0],
- T(group->triangles[i]).tindices[0],
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).nindices[1],
- T(group->triangles[i]).tindices[1],
- T(group->triangles[i]).vindices[2],
- T(group->triangles[i]).nindices[2],
- T(group->triangles[i]).tindices[2]);
- } else if (mode & GLM_FLAT && mode & GLM_TEXTURE) {
- fprintf(file, "f %d/%d %d/%d %d/%d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).findex,
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).findex,
- T(group->triangles[i]).vindices[2],
- T(group->triangles[i]).findex);
- } else if (mode & GLM_TEXTURE) {
- fprintf(file, "f %d/%d %d/%d %d/%d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).tindices[0],
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).tindices[1],
- T(group->triangles[i]).vindices[2],
- T(group->triangles[i]).tindices[2]);
- } else if (mode & GLM_SMOOTH) {
- fprintf(file, "f %d//%d %d//%d %d//%d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).nindices[0],
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).nindices[1],
- T(group->triangles[i]).vindices[2],
- T(group->triangles[i]).nindices[2]);
- } else if (mode & GLM_FLAT) {
- fprintf(file, "f %d//%d %d//%d %d//%d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).findex,
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).findex,
- T(group->triangles[i]).vindices[2],
- T(group->triangles[i]).findex);
- } else {
- fprintf(file, "f %d %d %d\n",
- T(group->triangles[i]).vindices[0],
- T(group->triangles[i]).vindices[1],
- T(group->triangles[i]).vindices[2]);
- }
- }
- fprintf(file, "\n");
- group = group->next;
- }
-
- fclose(file);
-}
-
-/* glmDraw: Renders the model to the current OpenGL context using the
- * mode specified.
- *
- * model - initialized GLMmodel structure
- * mode - a bitwise OR of values describing what is to be rendered.
- * GLM_NONE - render with only vertices
- * GLM_FLAT - render with facet normals
- * GLM_SMOOTH - render with vertex normals
- * GLM_TEXTURE - render with texture coords
- * GLM_COLOR - render with colors (color material)
- * GLM_MATERIAL - render with materials
- * GLM_COLOR and GLM_MATERIAL should not both be specified.
- * GLM_FLAT and GLM_SMOOTH should not both be specified.
- */
-GLvoid
-glmDraw(GLMmodel* model, GLuint mode)
-{
- static GLuint i;
- static GLMgroup* group;
- static GLMtriangle* triangle;
- static GLMmaterial* material;
-
- assert(model);
- assert(model->vertices);
-
- /* do a bit of warning */
- if (mode & GLM_FLAT && !model->facetnorms) {
- printf("glmDraw() warning: flat render mode requested "
- "with no facet normals defined.\n");
- mode &= ~GLM_FLAT;
- }
- if (mode & GLM_SMOOTH && !model->normals) {
- printf("glmDraw() warning: smooth render mode requested "
- "with no normals defined.\n");
- mode &= ~GLM_SMOOTH;
- }
- if (mode & GLM_TEXTURE && !model->texcoords) {
- printf("glmDraw() warning: texture render mode requested "
- "with no texture coordinates defined.\n");
- mode &= ~GLM_TEXTURE;
- }
- if (mode & GLM_FLAT && mode & GLM_SMOOTH) {
- printf("glmDraw() warning: flat render mode requested "
- "and smooth render mode requested (using smooth).\n");
- mode &= ~GLM_FLAT;
- }
- if (mode & GLM_COLOR && !model->materials) {
- printf("glmDraw() warning: color render mode requested "
- "with no materials defined.\n");
- mode &= ~GLM_COLOR;
- }
- if (mode & GLM_MATERIAL && !model->materials) {
- printf("glmDraw() warning: material render mode requested "
- "with no materials defined.\n");
- mode &= ~GLM_MATERIAL;
- }
- if (mode & GLM_COLOR && mode & GLM_MATERIAL) {
- printf("glmDraw() warning: color and material render mode requested "
- "using only material mode.\n");
- mode &= ~GLM_COLOR;
- }
- if (mode & GLM_COLOR)
- glEnable(GL_COLOR_MATERIAL);
- else if (mode & GLM_MATERIAL)
- glDisable(GL_COLOR_MATERIAL);
-
- /* perhaps this loop should be unrolled into material, color, flat,
- smooth, etc. loops? since most cpu's have good branch prediction
- schemes (and these branches will always go one way), probably
- wouldn't gain too much? */
-
- group = model->groups;
- while (group) {
- if (mode & GLM_MATERIAL) {
- material = &model->materials[group->material];
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material->ambient);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material->diffuse);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material->specular);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, material->shininess);
- }
-
- if (mode & GLM_COLOR) {
- glColor3fv(material->diffuse);
- }
-
- glBegin(GL_TRIANGLES);
- for (i = 0; i < group->numtriangles; i++) {
- triangle = &T(group->triangles[i]);
-
- if (mode & GLM_FLAT)
- glNormal3fv(&model->facetnorms[3 * triangle->findex]);
-
- if (mode & GLM_SMOOTH)
- glNormal3fv(&model->normals[3 * triangle->nindices[0]]);
- if (mode & GLM_TEXTURE)
- glTexCoord2fv(&model->texcoords[2 * triangle->tindices[0]]);
- glVertex3fv(&model->vertices[3 * triangle->vindices[0]]);
-
- if (mode & GLM_SMOOTH)
- glNormal3fv(&model->normals[3 * triangle->nindices[1]]);
- if (mode & GLM_TEXTURE)
- glTexCoord2fv(&model->texcoords[2 * triangle->tindices[1]]);
- glVertex3fv(&model->vertices[3 * triangle->vindices[1]]);
-
- if (mode & GLM_SMOOTH)
- glNormal3fv(&model->normals[3 * triangle->nindices[2]]);
- if (mode & GLM_TEXTURE)
- glTexCoord2fv(&model->texcoords[2 * triangle->tindices[2]]);
- glVertex3fv(&model->vertices[3 * triangle->vindices[2]]);
-
- }
- glEnd();
-
- group = group->next;
- }
-}
-
-/* glmList: Generates and modelurns a display list for the model using
- * the mode specified.
- *
- * model - initialized GLMmodel structure
- * mode - a bitwise OR of values describing what is to be rendered.
- * GLM_NONE - render with only vertices
- * GLM_FLAT - render with facet normals
- * GLM_SMOOTH - render with vertex normals
- * GLM_TEXTURE - render with texture coords
- * GLM_COLOR - render with colors (color material)
- * GLM_MATERIAL - render with materials
- * GLM_COLOR and GLM_MATERIAL should not both be specified.
- * GLM_FLAT and GLM_SMOOTH should not both be specified. */
-GLuint
-glmList(GLMmodel* model, GLuint mode)
-{
- GLuint list;
-
- list = glGenLists(1);
- glNewList(list, GL_COMPILE);
- glmDraw(model, mode);
- glEndList();
-
- return list;
-}
-
-/* glmWeld: eliminate (weld) vectors that are within an epsilon of
- * each other.
- *
- * model - initialized GLMmodel structure
- * epsilon - maximum difference between vertices
- * ( 0.00001 is a good start for a unitized model)
- *
- */
-GLvoid
-glmWeld(GLMmodel* model, GLfloat epsilon)
-{
- GLfloat* vectors;
- GLfloat* copies;
- GLuint numvectors;
- GLuint i;
-
- /* vertices */
- numvectors = model->numvertices;
- vectors = model->vertices;
- copies = glmWeldVectors(vectors, &numvectors, epsilon);
-
-#if 0
- printf("glmWeld(): %d redundant vertices.\n",
- model->numvertices - numvectors - 1);
-#endif
-
- for (i = 0; i < model->numtriangles; i++) {
- T(i).vindices[0] = (GLuint)vectors[3 * T(i).vindices[0] + 0];
- T(i).vindices[1] = (GLuint)vectors[3 * T(i).vindices[1] + 0];
- T(i).vindices[2] = (GLuint)vectors[3 * T(i).vindices[2] + 0];
- }
-
- /* free space for old vertices */
- free(vectors);
-
- /* allocate space for the new vertices */
- model->numvertices = numvectors;
- model->vertices = (GLfloat*)malloc(sizeof(GLfloat) *
- 3 * (model->numvertices + 1));
-
- /* copy the optimized vertices into the actual vertex list */
- for (i = 1; i <= model->numvertices; i++) {
- model->vertices[3 * i + 0] = copies[3 * i + 0];
- model->vertices[3 * i + 1] = copies[3 * i + 1];
- model->vertices[3 * i + 2] = copies[3 * i + 2];
- }
-
- free(copies);
-}
-
-
-#if 0
- /* normals */
- if (model->numnormals) {
- numvectors = model->numnormals;
- vectors = model->normals;
- copies = glmOptimizeVectors(vectors, &numvectors);
-
- printf("glmOptimize(): %d redundant normals.\n",
- model->numnormals - numvectors);
-
- for (i = 0; i < model->numtriangles; i++) {
- T(i).nindices[0] = (GLuint)vectors[3 * T(i).nindices[0] + 0];
- T(i).nindices[1] = (GLuint)vectors[3 * T(i).nindices[1] + 0];
- T(i).nindices[2] = (GLuint)vectors[3 * T(i).nindices[2] + 0];
- }
-
- /* free space for old normals */
- free(vectors);
-
- /* allocate space for the new normals */
- model->numnormals = numvectors;
- model->normals = (GLfloat*)malloc(sizeof(GLfloat) *
- 3 * (model->numnormals + 1));
-
- /* copy the optimized vertices into the actual vertex list */
- for (i = 1; i <= model->numnormals; i++) {
- model->normals[3 * i + 0] = copies[3 * i + 0];
- model->normals[3 * i + 1] = copies[3 * i + 1];
- model->normals[3 * i + 2] = copies[3 * i + 2];
- }
-
- free(copies);
- }
-
- /* texcoords */
- if (model->numtexcoords) {
- numvectors = model->numtexcoords;
- vectors = model->texcoords;
- copies = glmOptimizeVectors(vectors, &numvectors);
-
- printf("glmOptimize(): %d redundant texcoords.\n",
- model->numtexcoords - numvectors);
-
- for (i = 0; i < model->numtriangles; i++) {
- for (j = 0; j < 3; j++) {
- T(i).tindices[j] = (GLuint)vectors[3 * T(i).tindices[j] + 0];
- }
- }
-
- /* free space for old texcoords */
- free(vectors);
-
- /* allocate space for the new texcoords */
- model->numtexcoords = numvectors;
- model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) *
- 2 * (model->numtexcoords + 1));
-
- /* copy the optimized vertices into the actual vertex list */
- for (i = 1; i <= model->numtexcoords; i++) {
- model->texcoords[2 * i + 0] = copies[2 * i + 0];
- model->texcoords[2 * i + 1] = copies[2 * i + 1];
- }
-
- free(copies);
- }
-
-#endif
-
-#if 0
- /* look for unused vertices */
- /* look for unused normals */
- /* look for unused texcoords */
- for (i = 1; i <= model->numvertices; i++) {
- for (j = 0; j < model->numtriangles; i++) {
- if (T(j).vindices[0] == i ||
- T(j).vindices[1] == i ||
- T(j).vindices[1] == i)
- break;
- }
- }
-#endif
diff --git a/pidgin/plugins/crazychat/glm.h b/pidgin/plugins/crazychat/glm.h
deleted file mode 100644
index 9c5285f62d..0000000000
--- a/pidgin/plugins/crazychat/glm.h
+++ /dev/null
@@ -1,269 +0,0 @@
-#ifndef __GLM__H__
-#define __GLM__H__
-
-/*
- glm.h
-
- */
-
-
-#if defined(WIN32)
-#include "glut.h"
-#else
-//#include <GL/glut.h>
-#endif
-
-#include<GL/glu.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#define GLM_NONE (0) /* render with only vertices */
-#define GLM_FLAT (1 << 0) /* render with facet normals */
-#define GLM_SMOOTH (1 << 1) /* render with vertex normals */
-#define GLM_TEXTURE (1 << 2) /* render with texture coords */
-#define GLM_COLOR (1 << 3) /* render with colors */
-#define GLM_MATERIAL (1 << 4) /* render with materials */
-
-
-/* GLMmaterial: Structure that defines a material in a model.
- */
-typedef struct _GLMmaterial
-{
- char* name; /* name of material */
- GLfloat diffuse[4]; /* diffuse component */
- GLfloat ambient[4]; /* ambient component */
- GLfloat specular[4]; /* specular component */
- GLfloat emmissive[4]; /* emmissive component */
- GLfloat shininess; /* specular exponent */
-} GLMmaterial;
-
-typedef struct _GLMmat_str{
- GLint num_materials;
- GLMmaterial* materials;
-} GLMmat_str;
-
-
-/* GLMtriangle: Structure that defines a triangle in a model.
- */
-typedef struct _GLMtriangle {
- GLuint vindices[3]; /* array of triangle vertex indices */
- GLuint nindices[3]; /* array of triangle normal indices */
- GLuint tindices[3]; /* array of triangle texcoord indices*/
- GLuint findex; /* index of triangle facet normal */
-} GLMtriangle;
-
-/* GLMgroup: Structure that defines a group in a model.
- */
-typedef struct _GLMgroup {
- char* name; /* name of this group */
- GLuint numtriangles; /* number of triangles in this group */
- GLuint* triangles; /* array of triangle indices */
- GLuint material; /* index to material for group */
- struct _GLMgroup* next; /* pointer to next group in model */
-} GLMgroup;
-
-/* GLMmodel: Structure that defines a model.
- */
-typedef struct _GLMmodel {
- char* pathname; /* path to this model */
- char* mtllibname; /* name of the material library */
-
- GLuint numvertices; /* number of vertices in model */
- GLfloat* vertices; /* array of vertices */
-
- GLuint numnormals; /* number of normals in model */
- GLfloat* normals; /* array of normals */
-
- GLuint numtexcoords; /* number of texcoords in model */
- GLfloat* texcoords; /* array of texture coordinates */
-
- GLuint numfacetnorms; /* number of facetnorms in model */
- GLfloat* facetnorms; /* array of facetnorms */
-
- GLuint numtriangles; /* number of triangles in model */
- GLMtriangle* triangles; /* array of triangles */
-
- GLuint nummaterials; /* number of materials in model */
- GLMmaterial* materials; /* array of materials */
-
- GLuint numgroups; /* number of groups in model */
- GLMgroup* groups; /* linked list of groups */
-
- GLfloat position[3]; /* position of the model */
-
-} GLMmodel;
-
-# ifdef __cplusplus
-extern "C" {
-# endif /* __cplusplus */
-
-/* glmUnitize: "unitize" a model by translating it to the origin and
- * scaling it to fit in a unit cube around the origin. Returns the
- * scalefactor used.
- *
- * model - properly initialized GLMmodel structure
- */
-GLfloat
-glmUnitize(GLMmodel* model);
-
-/* glmDimensions: Calculates the dimensions (width, height, depth) of
- * a model.
- *
- * model - initialized GLMmodel structure
- * dimensions - array of 3 GLfloats (GLfloat dimensions[3])
- */
-GLvoid
-glmDimensions(GLMmodel* model, GLfloat* dimensions);
-
-/* glmScale: Scales a model by a given amount.
- *
- * model - properly initialized GLMmodel structure
- * scale - scalefactor (0.5 = half as large, 2.0 = twice as large)
- */
-GLvoid
-glmScale(GLMmodel* model, GLfloat scale);
-
-/* glmReverseWinding: Reverse the polygon winding for all polygons in
- * this model. Default winding is counter-clockwise. Also changes
- * the direction of the normals.
- *
- * model - properly initialized GLMmodel structure
- */
-GLvoid
-glmReverseWinding(GLMmodel* model);
-
-/* glmFacetNormals: Generates facet normals for a model (by taking the
- * cross product of the two vectors derived from the sides of each
- * triangle). Assumes a counter-clockwise winding.
- *
- * model - initialized GLMmodel structure
- */
-GLvoid
-glmFacetNormals(GLMmodel* model);
-
-/* glmVertexNormals: Generates smooth vertex normals for a model.
- * First builds a list of all the triangles each vertex is in. Then
- * loops through each vertex in the the list averaging all the facet
- * normals of the triangles each vertex is in. Finally, sets the
- * normal index in the triangle for the vertex to the generated smooth
- * normal. If the dot product of a facet normal and the facet normal
- * associated with the first triangle in the list of triangles the
- * current vertex is in is greater than the cosine of the angle
- * parameter to the function, that facet normal is not added into the
- * average normal calculation and the corresponding vertex is given
- * the facet normal. This tends to preserve hard edges. The angle to
- * use depends on the model, but 90 degrees is usually a good start.
- *
- * model - initialized GLMmodel structure
- * angle - maximum angle (in degrees) to smooth across
- */
-GLvoid
-glmVertexNormals(GLMmodel* model, GLfloat angle);
-
-/* glmLinearTexture: Generates texture coordinates according to a
- * linear projection of the texture map. It generates these by
- * linearly mapping the vertices onto a square.
- *
- * model - pointer to initialized GLMmodel structure
- */
-GLvoid
-glmLinearTexture(GLMmodel* model);
-
-/* glmSpheremapTexture: Generates texture coordinates according to a
- * spherical projection of the texture map. Sometimes referred to as
- * spheremap, or reflection map texture coordinates. It generates
- * these by using the normal to calculate where that vertex would map
- * onto a sphere. Since it is impossible to map something flat
- * perfectly onto something spherical, there is distortion at the
- * poles. This particular implementation causes the poles along the X
- * axis to be distorted.
- *
- * model - pointer to initialized GLMmodel structure
- */
-GLvoid
-glmSpheremapTexture(GLMmodel* model);
-
-/* glmDelete: Deletes a GLMmodel structure.
- *
- * model - initialized GLMmodel structure
- */
-GLvoid
-glmDelete(GLMmodel* model);
-
-/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file.
- * Returns a pointer to the created object which should be free'd with
- * glmDelete().
- *
- * filename - name of the file containing the Wavefront .OBJ format data.
- */
-GLMmodel*
-glmReadOBJ(char* filename);
-
-/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to
- * a file.
- *
- * model - initialized GLMmodel structure
- * filename - name of the file to write the Wavefront .OBJ format data to
- * mode - a bitwise or of values describing what is written to the file
- * GLM_NONE - write only vertices
- * GLM_FLAT - write facet normals
- * GLM_SMOOTH - write vertex normals
- * GLM_TEXTURE - write texture coords
- * GLM_FLAT and GLM_SMOOTH should not both be specified.
- */
-GLvoid
-glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode);
-
-/* glmDraw: Renders the model to the current OpenGL context using the
- * mode specified.
- *
- * model - initialized GLMmodel structure
- * mode - a bitwise OR of values describing what is to be rendered.
- * GLM_NONE - render with only vertices
- * GLM_FLAT - render with facet normals
- * GLM_SMOOTH - render with vertex normals
- * GLM_TEXTURE - render with texture coords
- * GLM_FLAT and GLM_SMOOTH should not both be specified.
- */
-GLvoid
-glmDraw(GLMmodel* model, GLuint mode);
-
-/* glmList: Generates and returns a display list for the model using
- * the mode specified.
- *
- * model - initialized GLMmodel structure
- * mode - a bitwise OR of values describing what is to be rendered.
- * GLM_NONE - render with only vertices
- * GLM_FLAT - render with facet normals
- * GLM_SMOOTH - render with vertex normals
- * GLM_TEXTURE - render with texture coords
- * GLM_FLAT and GLM_SMOOTH should not both be specified.
- */
-GLuint
-glmList(GLMmodel* model, GLuint mode);
-
-/* glmWeld: eliminate (weld) vectors that are within an epsilon of
- * each other.
- *
- * model - initialized GLMmodel structure
- * epsilon - maximum difference between vertices
- * ( 0.00001 is a good start for a unitized model)
- *
- */
-GLvoid
-glmWeld(GLMmodel* model, GLfloat epsilon);
-
-GLMmat_str*
-glmMTL(char* name);
-
-void
-glmSetMat(GLMmat_str* mats, GLint index);
-
-# ifdef __cplusplus
-}
-# endif /* __cplusplus */
-
-
-#endif
diff --git a/pidgin/plugins/crazychat/lids.c b/pidgin/plugins/crazychat/lids.c
deleted file mode 100644
index fb25888ab8..0000000000
--- a/pidgin/plugins/crazychat/lids.c
+++ /dev/null
@@ -1,4080 +0,0 @@
-
-#include "lids.h"
-#include "mat_struct.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-
-#define NUM_LIDS 9
-
-GLint lidLists[NUM_LIDS];
-
-/*
-typedef struct sample_MATERIAL{
- GLfloat ambient[3];
- GLfloat diffuse[3];
- GLfloat specular[3];
- GLfloat emission[3];
- GLfloat alpha;
- GLfloat phExp;
- int texture;
-}sample_MATERIAL;*/
-
-static sample_MATERIAL materials [1] = {
- {{0.215686f,0.117647f,0.0627451f}, {0.847059f,0.713726f,0.639216f}, {0.044902f,0.044902f,0.044902f}, {0.0f,0.0f,0.0f}, 1.0f,11.3137f,-1} //Material #519
-};
-
-static short face_indicies[NUM_LIDS][448][9] = {
-
-//lid 10
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 9
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,61 ,233,251,252 ,61,78,79 }, {174,61,175 ,233,252,234 ,61,79,62 },
- {175,61,191 ,234,252,253 ,62,79,80 }, {175,191,176 ,234,253,235 ,62,80,63 },
- {176,191,192 ,235,253,254 ,63,80,81 }, {176,192,177 ,235,254,236 ,63,81,64 },
- {177,192,193 ,236,254,255 ,64,81,82 }, {177,193,178 ,236,255,237 ,64,82,65 },
- {178,193,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {195,194,196 ,258,259,260 ,1,0,2 }, {196,194,197 ,260,261,262 ,2,3,4 },
- {197,194,198 ,262,263,264 ,4,5,6 }, {198,194,199 ,264,265,266 ,6,7,8 },
- {199,194,200 ,266,267,268 ,8,9,10 }, {200,194,201 ,268,269,270 ,10,11,12 },
- {201,194,202 ,270,271,272 ,12,13,14 }, {202,194,203 ,272,273,274 ,14,15,16 },
- {203,194,204 ,274,275,276 ,16,17,18 }, {204,194,205 ,276,277,278 ,18,19,20 },
- {205,194,206 ,278,279,280 ,20,21,22 }, {206,194,207 ,280,281,282 ,22,23,24 },
- {207,194,208 ,282,283,284 ,24,25,26 }, {208,194,209 ,284,285,286 ,26,27,28 },
- {209,194,210 ,286,287,288 ,28,29,30 }, {210,194,195 ,288,289,289 ,30,31,32 },
- {211,195,212 ,290,258,291 ,33,1,34 }, {212,195,196 ,291,258,260 ,34,1,2 },
- {212,196,213 ,291,260,292 ,34,2,35 }, {213,196,197 ,292,260,262 ,35,2,4 },
- {213,197,214 ,292,262,293 ,35,4,36 }, {214,197,198 ,293,262,264 ,36,4,6 },
- {214,198,215 ,293,264,294 ,36,6,37 }, {215,198,199 ,294,264,266 ,37,6,8 },
- {215,199,216 ,294,266,295 ,37,8,38 }, {216,199,200 ,295,266,268 ,38,8,10 },
- {216,200,217 ,295,268,296 ,38,10,39 }, {217,200,201 ,296,268,270 ,39,10,12 },
- {217,201,218 ,296,270,297 ,39,12,40 }, {218,201,202 ,297,270,272 ,40,12,14 },
- {218,202,219 ,297,272,298 ,40,14,41 }, {219,202,203 ,298,272,274 ,41,14,16 },
- {219,203,220 ,298,274,299 ,41,16,42 }, {220,203,204 ,299,274,276 ,42,16,18 },
- {220,204,221 ,299,276,300 ,42,18,43 }, {221,204,205 ,300,276,278 ,43,18,20 },
- {221,205,222 ,300,278,301 ,43,20,44 }, {222,205,206 ,301,278,280 ,44,20,22 },
- {222,206,223 ,301,280,302 ,44,22,45 }, {223,206,207 ,302,280,282 ,45,22,24 },
- {223,207,224 ,302,282,303 ,45,24,46 }, {224,207,208 ,303,282,284 ,46,24,26 },
- {224,208,225 ,303,284,304 ,46,26,47 }, {225,208,209 ,304,284,286 ,47,26,28 },
- {225,209,226 ,304,286,305 ,47,28,48 }, {226,209,210 ,305,286,288 ,48,28,30 },
- {226,210,211 ,305,288,306 ,48,30,49 }, {211,210,195 ,307,288,307 ,49,30,32 },
- {227,211,228 ,308,290,309 ,50,33,51 }, {228,211,212 ,309,290,291 ,51,33,34 },
- {228,212,229 ,309,291,310 ,51,34,52 }, {229,212,213 ,310,291,292 ,52,34,35 },
- {229,213,230 ,310,292,311 ,52,35,53 }, {230,213,214 ,311,292,293 ,53,35,36 },
- {230,214,231 ,311,293,312 ,53,36,54 }, {231,214,215 ,312,293,294 ,54,36,37 },
- {231,215,232 ,312,294,313 ,54,37,55 }, {232,215,216 ,313,294,295 ,55,37,38 },
- {232,216,233 ,313,295,314 ,55,38,56 }, {233,216,217 ,314,295,296 ,56,38,39 },
- {233,217,234 ,314,296,315 ,56,39,57 }, {234,217,218 ,315,296,297 ,57,39,40 },
- {234,218,235 ,315,297,316 ,57,40,58 }, {235,218,219 ,316,297,298 ,58,40,41 },
- {235,219,236 ,316,298,317 ,58,41,59 }, {236,219,220 ,317,298,299 ,59,41,42 },
- {236,220,237 ,317,299,318 ,59,42,60 }, {237,220,221 ,318,299,300 ,60,42,43 },
- {237,221,238 ,318,300,319 ,60,43,61 }, {238,221,222 ,319,300,301 ,61,43,44 },
- {238,222,239 ,319,301,320 ,61,44,62 }, {239,222,223 ,320,301,302 ,62,44,45 },
- {239,223,240 ,320,302,321 ,62,45,63 }, {240,223,224 ,321,302,303 ,63,45,46 },
- {240,224,241 ,321,303,322 ,63,46,64 }, {241,224,225 ,322,303,304 ,64,46,47 },
- {241,225,242 ,322,304,323 ,64,47,65 }, {242,225,226 ,323,304,305 ,65,47,48 },
- {242,226,227 ,323,305,324 ,65,48,66 }, {227,226,211 ,325,305,325 ,66,48,49 },
- {243,227,244 ,326,308,327 ,67,50,68 }, {244,227,228 ,327,308,309 ,68,50,51 },
- {244,228,245 ,327,309,328 ,68,51,69 }, {245,228,229 ,328,309,310 ,69,51,52 },
- {245,229,246 ,328,310,329 ,69,52,70 }, {246,229,230 ,329,310,311 ,70,52,53 },
- {246,230,247 ,329,311,330 ,70,53,71 }, {247,230,231 ,330,311,312 ,71,53,54 },
- {247,231,248 ,330,312,331 ,71,54,72 }, {248,231,232 ,331,312,313 ,72,54,55 },
- {248,232,249 ,331,313,332 ,72,55,73 }, {249,232,233 ,332,313,314 ,73,55,56 },
- {249,233,250 ,332,314,333 ,73,56,74 }, {250,233,234 ,333,314,315 ,74,56,57 },
- {250,234,251 ,333,315,334 ,74,57,75 }, {251,234,235 ,334,315,316 ,75,57,58 },
- {251,235,252 ,334,316,335 ,75,58,76 }, {252,235,236 ,335,316,317 ,76,58,59 },
- {252,236,253 ,335,317,336 ,76,59,77 }, {253,236,237 ,336,317,318 ,77,59,60 },
- {253,237,254 ,336,318,337 ,77,60,78 }, {254,237,238 ,337,318,319 ,78,60,61 },
- {254,238,126 ,337,319,338 ,78,61,79 }, {126,238,239 ,338,319,320 ,79,61,62 },
- {126,239,255 ,338,320,339 ,79,62,80 }, {255,239,240 ,339,320,321 ,80,62,63 },
- {255,240,256 ,339,321,340 ,80,63,81 }, {256,240,241 ,340,321,322 ,81,63,64 },
- {256,241,257 ,340,322,341 ,81,64,82 }, {257,241,242 ,341,322,323 ,82,64,65 },
- {257,242,243 ,341,323,342 ,82,65,83 }, {243,242,227 ,343,323,343 ,83,65,66 }
-},
-
-//lid 8
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 6
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 5
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 4
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-//lid 3
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 2
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,118 ,329,311,330 ,70,53,71 }, {118,231,232 ,330,311,312 ,71,53,54 },
- {118,232,248 ,330,312,331 ,71,54,72 }, {248,232,233 ,331,312,313 ,72,54,55 },
- {248,233,249 ,331,313,332 ,72,55,73 }, {249,233,234 ,332,313,314 ,73,55,56 },
- {249,234,250 ,332,314,333 ,73,56,74 }, {250,234,235 ,333,314,315 ,74,56,57 },
- {250,235,251 ,333,315,334 ,74,57,75 }, {251,235,236 ,334,315,316 ,75,57,58 },
- {251,236,252 ,334,316,335 ,75,58,76 }, {252,236,237 ,335,316,317 ,76,58,59 },
- {252,237,253 ,335,317,336 ,76,59,77 }, {253,237,238 ,336,317,318 ,77,59,60 },
- {253,238,254 ,336,318,337 ,77,60,78 }, {254,238,239 ,337,318,319 ,78,60,61 },
- {254,239,126 ,337,319,338 ,78,61,79 }, {126,239,240 ,338,319,320 ,79,61,62 },
- {126,240,255 ,338,320,339 ,79,62,80 }, {255,240,241 ,339,320,321 ,80,62,63 },
- {255,241,256 ,339,321,340 ,80,63,81 }, {256,241,242 ,340,321,322 ,81,63,64 },
- {256,242,257 ,340,322,341 ,81,64,82 }, {257,242,243 ,341,322,323 ,82,64,65 },
- {257,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-},
-
-//lid 1
-
-{
-// Object #-1
- {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 },
- {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 },
- {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 },
- {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 },
- {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 },
- {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 },
- {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 },
- {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 },
- {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 },
- {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 },
- {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 },
- {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 },
- {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 },
- {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 },
- {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 },
- {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 },
- {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 },
- {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 },
- {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 },
- {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 },
- {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 },
- {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 },
- {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 },
- {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 },
- {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 },
- {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 },
- {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 },
- {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 },
- {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 },
- {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 },
- {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 },
- {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 },
- {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 },
- {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 },
- {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 },
- {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 },
- {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 },
- {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 },
- {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 },
- {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 },
- {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 },
- {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 },
- {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 },
- {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 },
- {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 },
- {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 },
- {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 },
- {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 },
- {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 },
- {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 },
- {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 },
- {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 },
- {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 },
- {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 },
- {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 },
- {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 },
- {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 },
- {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 },
- {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 },
- {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 },
- {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 },
- {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 },
- {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 },
- {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 },
- {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 },
- {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 },
- {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 },
- {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 },
- {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 },
- {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 },
- {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 },
- {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 },
- {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 },
- {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 },
- {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 },
- {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 },
- {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 },
- {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 },
- {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 },
- {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 },
- {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 },
- {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 },
- {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 },
- {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 },
- {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 },
- {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 },
- {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 },
- {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 },
- {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 },
- {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 },
- {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 },
- {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 },
- {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 },
- {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 },
- {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 },
- {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 },
- {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 },
- {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 },
- {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 },
- {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 },
- {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 },
- {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 },
- {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 },
- {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 },
- {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 },
- {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 },
- {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 },
- {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 },
- {114,113,98 ,171,151,171 ,83,65,66 }
-// Object #-1
- , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 },
- {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 },
- {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 },
- {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 },
- {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 },
- {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 },
- {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 },
- {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 },
- {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 },
- {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 },
- {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 },
- {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 },
- {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 },
- {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 },
- {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 },
- {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 },
- {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 },
- {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 },
- {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 },
- {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 },
- {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 },
- {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 },
- {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 },
- {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 },
- {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 },
- {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 },
- {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 },
- {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 },
- {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 },
- {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 },
- {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 },
- {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 },
- {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 },
- {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 },
- {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 },
- {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 },
- {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 },
- {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 },
- {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 },
- {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 },
- {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 },
- {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 },
- {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 },
- {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 },
- {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 },
- {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 },
- {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 },
- {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 },
- {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 },
- {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 },
- {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 },
- {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 },
- {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 },
- {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 },
- {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 },
- {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 },
- {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 },
- {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 },
- {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 },
- {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 },
- {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 },
- {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 },
- {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 },
- {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 },
- {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 },
- {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 },
- {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 },
- {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 },
- {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 },
- {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 },
- {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 },
- {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 },
- {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 },
- {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 },
- {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 },
- {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 },
- {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 },
- {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 },
- {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 },
- {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 },
- {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 },
- {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 },
- {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 },
- {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 },
- {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 },
- {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 },
- {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 },
- {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 },
- {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 },
- {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 },
- {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 },
- {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 },
- {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 },
- {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 },
- {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 },
- {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 },
- {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 },
- {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 },
- {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 },
- {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 },
- {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 },
- {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 },
- {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 },
- {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 },
- {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 },
- {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 },
- {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 },
- {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 },
- {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 },
- {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 },
- {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 },
- {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 }
-}
-
-};
-
-
-static GLfloat vertices [NUM_LIDS][260][3] = {
-
-//lid 10
-{
-{-0.343683f,0.0932276f,-0.0808442f},{-0.352388f,0.0509511f,-0.122382f},{-0.380222f,0.053445f,-0.125489f},
-{-0.402561f,0.0605469f,-0.120347f},{-0.41485f,0.0711757f,-0.107383f},{-0.414844f,0.0837132f,-0.0888708f},
-{-0.403224f,0.0962507f,-0.0683421f},{-0.382806f,0.10688f,-0.0494748f},{-0.357221f,0.113981f,-0.0351177f},
-{-0.330137f,0.116475f,-0.0269877f},{-0.305195f,0.113981f,-0.0259064f},{-0.285916f,0.10688f,-0.0319369f},
-{-0.27509f,0.0962508f,-0.0441779f},{-0.274086f,0.0837133f,-0.0607215f},{-0.282788f,0.0711757f,-0.0791407f},
-{-0.300108f,0.0605469f,-0.0970521f},{-0.324256f,0.053445f,-0.112215f},{-0.353956f,-0.00391801f,-0.143495f},
-{-0.406556f,0.000690078f,-0.149706f},{-0.44962f,0.0138127f,-0.140053f},{-0.472019f,0.0334522f,-0.114869f},
-{-0.469142f,0.0566185f,-0.0792073f},{-0.444738f,0.0797848f,-0.0411625f},{-0.406781f,0.0994242f,-0.0083254f},
-{-0.361986f,0.112547f,0.0151765f},{-0.314714f,0.117155f,0.0283778f},{-0.269974f,0.112547f,0.0305063f},
-{-0.235063f,0.0994242f,0.0199389f},{-0.216662f,0.0797847f,-0.00294113f},{-0.2168f,0.0566185f,-0.0337662f},
-{-0.233011f,0.0334521f,-0.0667812f},{-0.262346f,0.0138127f,-0.0980229f},{-0.303477f,0.000690076f,-0.124775f},
-{-0.349115f,-0.0630264f,-0.141198f},{-0.416647f,-0.0570057f,-0.146593f},{-0.471994f,-0.0398601f,-0.131983f},
-{-0.499332f,-0.0142f,-0.098174f},{-0.492887f,0.0160683f,-0.0523413f},{-0.459889f,0.0463366f,-0.00548934f},
-{-0.412508f,0.0719967f,0.0330037f},{-0.358013f,0.0891423f,0.0598819f},{-0.298752f,0.095163f,0.0764664f},
-{-0.239999f,0.0891423f,0.0816282f},{-0.193576f,0.0719967f,0.0698183f},{-0.171052f,0.0463365f,0.0391026f},
-{-0.174628f,0.0160682f,-0.00326448f},{-0.197804f,-0.0142f,-0.0471786f},{-0.234863f,-0.0398601f,-0.0869477f},
-{-0.285586f,-0.0570057f,-0.119624f},{-0.340812f,-0.117375f,-0.116494f},{-0.410435f,-0.110859f,-0.117365f},
-{-0.466555f,-0.0923004f,-0.0986838f},{-0.493515f,-0.064526f,-0.0625363f},{-0.486108f,-0.0317639f,-0.0165297f},
-{-0.452382f,0.000998166f,0.0289768f},{-0.404425f,0.0287725f,0.0661753f},{-0.348021f,0.0473308f,0.0935464f},
-{-0.284297f,0.0538476f,0.113032f},{-0.219522f,0.0473308f,0.121693f},{-0.16847f,0.0287725f,0.110644f},
-{-0.145166f,0.000998132f,0.0764654f},{-0.151592f,-0.031764f,0.0281869f},{-0.178972f,-0.0645261f,-0.0214156f},
-{-0.219936f,-0.0923004f,-0.0648312f},{-0.274181f,-0.110859f,-0.0978641f},{0.343683f,0.0932276f,-0.0808442f},
-{0.352388f,0.0509511f,-0.122382f},{0.380222f,0.053445f,-0.125489f},{0.402561f,0.0605469f,-0.120347f},
-{0.41485f,0.0711757f,-0.107383f},{0.414844f,0.0837132f,-0.0888707f},{0.403224f,0.0962508f,-0.0683421f},
-{0.382806f,0.10688f,-0.0494748f},{0.357221f,0.113981f,-0.0351177f},{0.330137f,0.116475f,-0.0269877f},
-{0.305195f,0.113981f,-0.0259064f},{0.285916f,0.10688f,-0.0319369f},{0.27509f,0.0962508f,-0.0441779f},
-{0.274086f,0.0837133f,-0.0607215f},{0.282788f,0.0711757f,-0.0791407f},{0.300108f,0.0605469f,-0.0970521f},
-{0.324257f,0.053445f,-0.112215f},{0.353956f,-0.003918f,-0.143495f},{0.406556f,0.000690089f,-0.149706f},
-{0.44962f,0.0138127f,-0.140053f},{0.472019f,0.0334522f,-0.114869f},{0.469142f,0.0566185f,-0.0792073f},
-{0.444738f,0.0797848f,-0.0411625f},{0.406781f,0.0994242f,-0.0083254f},{0.361986f,0.112547f,0.0151765f},
-{0.314714f,0.117155f,0.0283778f},{0.269974f,0.112547f,0.0305063f},{0.235063f,0.0994242f,0.0199389f},
-{0.216662f,0.0797848f,-0.00294113f},{0.2168f,0.0566185f,-0.0337662f},{0.233011f,0.0334521f,-0.0667812f},
-{0.262346f,0.0138127f,-0.0980229f},{0.303477f,0.000690081f,-0.124775f},{0.349115f,-0.0630264f,-0.141198f},
-{0.416647f,-0.0570057f,-0.146593f},{0.471994f,-0.0398601f,-0.131983f},{0.499332f,-0.0142f,-0.098174f},
-{0.492887f,0.0160683f,-0.0523413f},{0.45989f,0.0463366f,-0.00548934f},{0.412508f,0.0719967f,0.0330037f},
-{0.358013f,0.0891423f,0.0598819f},{0.298752f,0.095163f,0.0764664f},{0.239999f,0.0891423f,0.0816282f},
-{0.193576f,0.0719967f,0.0698183f},{0.171052f,0.0463365f,0.0391026f},{0.174629f,0.0160683f,-0.00326448f},
-{0.197804f,-0.0141999f,-0.0471786f},{0.234863f,-0.0398601f,-0.0869477f},{0.285586f,-0.0570057f,-0.119624f},
-{0.340812f,-0.117375f,-0.116494f},{0.410435f,-0.110859f,-0.117365f},{0.466555f,-0.0923004f,-0.0986838f},
-{0.493515f,-0.064526f,-0.0625363f},{0.486108f,-0.0317639f,-0.0165297f},{0.452382f,0.000998165f,0.0289768f},
-{0.404425f,0.0287725f,0.0661753f},{0.348021f,0.0473308f,0.0935464f},{0.284297f,0.0538476f,0.113032f},
-{0.219522f,0.0473308f,0.121693f},{0.16847f,0.0287725f,0.110644f},{0.145166f,0.000998129f,0.0764654f},
-{0.151592f,-0.031764f,0.0281869f},{0.178973f,-0.0645261f,-0.0214156f},{0.219936f,-0.0923004f,-0.0648312f},
-{0.274181f,-0.110859f,-0.0978641f},{-0.299079f,0.0958282f,0.075584f},{-0.31504f,0.117375f,0.0272876f},
-{-0.338602f,0.114996f,0.0266701f},{-0.355762f,0.10822f,0.0331344f},{-0.363792f,0.0980784f,0.0452518f},
-{-0.361929f,0.0861159f,0.0605897f},{-0.351081f,0.0741534f,0.0766588f},{-0.333006f,0.0640121f,0.0915983f},
-{-0.309891f,0.0572358f,0.104011f},{-0.284547f,0.0548563f,0.112407f},{-0.260658f,0.0572358f,0.115136f},
-{-0.24234f,0.064012f,0.111029f},{-0.232993f,0.0741534f,0.100179f},{-0.234196f,0.0861159f,0.0842273f},
-{-0.245435f,0.0980784f,0.0659791f},{-0.264676f,0.10822f,0.0486193f},{-0.289045f,0.114996f,0.0350069f},
-{-0.330443f,0.116217f,-0.0281498f},{-0.376622f,0.111821f,-0.0296334f},{-0.409825f,0.0992999f,-0.0162356f},
-{-0.423182f,0.0805612f,0.00924655f},{-0.416791f,0.0584573f,0.0400915f},{-0.395343f,0.0363535f,0.0700464f},
-{-0.363257f,0.0176148f,0.0966719f},{-0.322911f,0.00509398f,0.119456f},{-0.27691f,0.000697269f,0.136065f},
-{-0.231205f,0.00509398f,0.142105f},{-0.19511f,0.0176148f,0.134121f},{-0.177144f,0.0363535f,0.112203f},
-{-0.180418f,0.0584574f,0.0803985f},{-0.202116f,0.0805612f,0.0450649f},{-0.237155f,0.0992999f,0.0123635f},
-{-0.281386f,0.111821f,-0.0131619f},{-0.343923f,0.0925307f,-0.0818601f},{-0.408753f,0.0867861f,-0.0862252f},
-{-0.455729f,0.0704268f,-0.0684926f},{-0.472454f,0.0459435f,-0.0315206f},{-0.46048f,0.0170635f,0.0132626f},
-{-0.429943f,-0.0118166f,0.0551654f},{-0.388862f,-0.0362999f,0.0913457f},{-0.339208f,-0.0526592f,0.122215f},
-{-0.281228f,-0.0584037f,0.14396f},{-0.220778f,-0.0526591f,0.149706f},{-0.17139f,-0.0362999f,0.135578f},
-{-0.146815f,-0.0118166f,0.103441f},{-0.151526f,0.0170635f,0.0600771f},{-0.179724f,0.0459436f,0.0142591f},
-{-0.223279f,0.0704269f,-0.0271356f},{-0.278744f,0.0867861f,-0.0603045f},{-0.352496f,0.0499212f,-0.123042f},
-{-0.425996f,0.0437033f,-0.130422f},{-0.480485f,0.0259961f,-0.111688f},{-0.5f,-0.000504367f,-0.0691896f},
-{-0.486108f,-0.0317639f,-0.0165297f},{-0.451623f,-0.0630235f,0.0331431f},{-0.407178f,-0.0895241f,0.0757201f},
-{-0.355434f,-0.107231f,0.110467f},{-0.295211f,-0.113449f,0.132021f},{-0.230886f,-0.107231f,0.133409f},
-{-0.176698f,-0.089524f,0.11295f},{-0.148448f,-0.0630235f,0.0751234f},{-0.151592f,-0.0317639f,0.0281869f},
-{-0.179627f,-0.000504385f,-0.0191356f},{-0.223715f,0.0259962f,-0.061618f},{-0.281467f,0.0437033f,-0.0973949f},
-{0.299079f,0.0958282f,0.075584f},{0.31504f,0.117375f,0.0272877f},{0.338602f,0.114996f,0.0266701f},
-{0.355762f,0.10822f,0.0331344f},{0.363792f,0.0980784f,0.0452518f},{0.361929f,0.0861159f,0.0605897f},
-{0.351081f,0.0741534f,0.0766588f},{0.333006f,0.0640121f,0.0915983f},{0.309891f,0.0572358f,0.104011f},
-{0.284547f,0.0548563f,0.112407f},{0.260658f,0.0572358f,0.115136f},{0.24234f,0.064012f,0.111029f},
-{0.232993f,0.0741534f,0.100179f},{0.234196f,0.0861159f,0.0842273f},{0.245435f,0.0980784f,0.0659791f},
-{0.264676f,0.10822f,0.0486193f},{0.289045f,0.114996f,0.0350069f},{0.330443f,0.116217f,-0.0281497f},
-{0.376622f,0.111821f,-0.0296334f},{0.409825f,0.0992999f,-0.0162356f},{0.423182f,0.0805612f,0.00924655f},
-{0.416791f,0.0584573f,0.0400915f},{0.395343f,0.0363535f,0.0700464f},{0.363257f,0.0176148f,0.0966719f},
-{0.322912f,0.00509398f,0.119456f},{0.27691f,0.000697269f,0.136065f},{0.231205f,0.00509397f,0.142105f},
-{0.19511f,0.0176148f,0.134121f},{0.177144f,0.0363535f,0.112203f},{0.180418f,0.0584574f,0.0803985f},
-{0.202116f,0.0805612f,0.0450649f},{0.237155f,0.0992999f,0.0123635f},{0.281386f,0.111821f,-0.0131619f},
-{0.343923f,0.0925307f,-0.0818601f},{0.408753f,0.0867861f,-0.0862252f},{0.455729f,0.0704268f,-0.0684926f},
-{0.472454f,0.0459435f,-0.0315206f},{0.46048f,0.0170635f,0.0132626f},{0.429943f,-0.0118166f,0.0551654f},
-{0.388862f,-0.0362999f,0.0913457f},{0.339208f,-0.0526592f,0.122215f},{0.281228f,-0.0584037f,0.14396f},
-{0.220778f,-0.0526591f,0.149706f},{0.17139f,-0.0362999f,0.135578f},{0.146815f,-0.0118166f,0.103441f},
-{0.151526f,0.0170635f,0.0600771f},{0.179724f,0.0459436f,0.0142591f},{0.223279f,0.0704269f,-0.0271356f},
-{0.278744f,0.0867861f,-0.0603045f},{0.352496f,0.0499212f,-0.123042f},{0.425996f,0.0437033f,-0.130422f},
-{0.480485f,0.0259961f,-0.111688f},{0.5f,-0.000504367f,-0.0691896f},{0.486108f,-0.0317639f,-0.0165297f},
-{0.451623f,-0.0630235f,0.0331431f},{0.407178f,-0.0895241f,0.0757201f},{0.355434f,-0.107231f,0.110467f},
-{0.295211f,-0.113449f,0.132021f},{0.230887f,-0.107231f,0.133409f},{0.176698f,-0.089524f,0.11295f},
-{0.148448f,-0.0630235f,0.0751234f},{0.151592f,-0.0317639f,0.0281869f},{0.179627f,-0.000504385f,-0.0191356f},
-{0.223715f,0.0259962f,-0.061618f},{0.281467f,0.0437033f,-0.0973949f}
-},
-
-//lid 9
-{
-{-0.3488f,0.0865926f,-0.0971807f},{-0.355149f,0.0384448f,-0.131394f},{-0.383397f,0.0414699f,-0.135249f},
-{-0.406599f,0.050085f,-0.131759f},{-0.420077f,0.0629783f,-0.121066f},{-0.421253f,0.078187f,-0.104942f},
-{-0.410423f,0.0933956f,-0.0864117f},{-0.390209f,0.106289f,-0.0688549f},{-0.364329f,0.114904f,-0.0550734f},
-{-0.336691f,0.117929f,-0.0468607f},{-0.311134f,0.114904f,-0.045088f},{-0.29125f,0.106289f,-0.0498234f},
-{-0.279811f,0.0933956f,-0.0602377f},{-0.278177f,0.078187f,-0.0746586f},{-0.286279f,0.0629783f,-0.0910166f},
-{-0.303118f,0.050085f,-0.107269f},{-0.326994f,0.04147f,-0.12142f},{-0.354272f,-0.0191842f,-0.143262f},
-{-0.406923f,-0.0135943f,-0.150064f},{-0.45107f,0.00232414f,-0.143143f},{-0.475731f,0.0261478f,-0.122366f},
-{-0.475481f,0.0542498f,-0.0914424f},{-0.452868f,0.0823518f,-0.0571111f},{-0.415338f,0.106175f,-0.0264407f},
-{-0.370037f,0.122094f,-0.00389177f},{-0.322023f,0.127684f,0.00912666f},{-0.276588f,0.122094f,0.0118882f},
-{-0.240895f,0.106175f,0.00314799f},{-0.22145f,0.0823517f,-0.0166116f},{-0.220325f,0.0542497f,-0.0435621f},
-{-0.235311f,0.0261478f,-0.0728357f},{-0.26371f,0.00232414f,-0.101058f},{-0.304208f,-0.0135943f,-0.125642f},
-{-0.347807f,-0.0775208f,-0.131687f},{-0.414577f,-0.0702173f,-0.13703f},{-0.470347f,-0.0494188f,-0.125525f},
-{-0.5f,-0.0182916f,-0.0974381f},{-0.496833f,0.0184253f,-0.0578607f},{-0.466347f,0.0551422f,-0.0157821f},
-{-0.420001f,0.0862694f,0.0198636f},{-0.365715f,0.107068f,0.0450127f},{-0.306476f,0.114371f,0.0605497f},
-{-0.247349f,0.107068f,0.0659861f},{-0.19973f,0.0862694f,0.056531f},{-0.175301f,0.0551422f,0.0300508f},
-{-0.176868f,0.0184253f,-0.00730101f},{-0.198555f,-0.0182916f,-0.0466047f},{-0.234831f,-0.0494188f,-0.0826403f},
-{-0.28505f,-0.0702173f,-0.112264f},{-0.338949f,-0.127684f,-0.0988612f},{-0.407241f,-0.119779f,-0.0997776f},
-{-0.462866f,-0.0972665f,-0.0844077f},{-0.491146f,-0.0635747f,-0.0543019f},{-0.486365f,-0.0238325f,-0.0148972f},
-{-0.455136f,0.0159096f,0.0254358f},{-0.408856f,0.0496013f,0.059075f},{-0.353684f,0.0721135f,0.0836812f},
-{-0.290783f,0.0800187f,0.101396f},{-0.22564f,0.0721136f,0.110631f},{-0.172661f,0.0496013f,0.10308f},
-{-0.146696f,0.0159096f,0.0741784f},{-0.151058f,-0.0238325f,0.0313679f},{-0.177696f,-0.0635748f,-0.0133948f},
-{-0.218854f,-0.0972665f,-0.0527407f},{-0.273153f,-0.119779f,-0.0824408f},{0.3488f,0.0865926f,-0.0971807f},
-{0.355149f,0.0384448f,-0.131394f},{0.383397f,0.04147f,-0.135249f},{0.406599f,0.050085f,-0.131759f},
-{0.420077f,0.0629783f,-0.121066f},{0.421253f,0.078187f,-0.104942f},{0.410423f,0.0933956f,-0.0864117f},
-{0.390209f,0.106289f,-0.0688549f},{0.364329f,0.114904f,-0.0550734f},{0.336691f,0.117929f,-0.0468607f},
-{0.311134f,0.114904f,-0.045088f},{0.29125f,0.106289f,-0.0498234f},{0.279811f,0.0933956f,-0.0602376f},
-{0.278177f,0.078187f,-0.0746586f},{0.286279f,0.0629783f,-0.0910166f},{0.303118f,0.050085f,-0.107269f},
-{0.326994f,0.04147f,-0.12142f},{0.354272f,-0.0191842f,-0.143262f},{0.406923f,-0.0135943f,-0.150064f},
-{0.451071f,0.00232424f,-0.143143f},{0.475731f,0.0261478f,-0.122366f},{0.475482f,0.0542498f,-0.0914424f},
-{0.452868f,0.0823518f,-0.0571111f},{0.415338f,0.106175f,-0.0264407f},{0.370037f,0.122094f,-0.00389177f},
-{0.322023f,0.127684f,0.00912666f},{0.276589f,0.122094f,0.0118882f},{0.240895f,0.106175f,0.00314799f},
-{0.22145f,0.0823517f,-0.0166116f},{0.220325f,0.0542497f,-0.0435621f},{0.235311f,0.0261478f,-0.0728357f},
-{0.26371f,0.00232414f,-0.101058f},{0.304208f,-0.0135943f,-0.125642f},{0.347807f,-0.0775207f,-0.131687f},
-{0.414577f,-0.0702173f,-0.13703f},{0.470347f,-0.0494188f,-0.125525f},{0.5f,-0.0182916f,-0.0974381f},
-{0.496833f,0.0184253f,-0.0578607f},{0.466347f,0.0551422f,-0.0157821f},{0.420001f,0.0862695f,0.0198636f},
-{0.365715f,0.107068f,0.0450127f},{0.306476f,0.114371f,0.0605497f},{0.247349f,0.107068f,0.0659861f},
-{0.19973f,0.0862694f,0.056531f},{0.175301f,0.0551422f,0.0300508f},{0.176868f,0.0184253f,-0.00730098f},
-{0.198555f,-0.0182916f,-0.0466047f},{0.234831f,-0.0494188f,-0.0826403f},{0.28505f,-0.0702173f,-0.112264f},
-{0.338949f,-0.127684f,-0.0988612f},{0.407241f,-0.119779f,-0.0997776f},{0.462866f,-0.0972665f,-0.0844077f},
-{0.491147f,-0.0635747f,-0.0543019f},{0.486365f,-0.0238325f,-0.0148972f},{0.455136f,0.0159096f,0.0254358f},
-{0.408856f,0.0496013f,0.059075f},{0.353684f,0.0721135f,0.0836812f},{0.290783f,0.0800187f,0.101396f},
-{0.22564f,0.0721136f,0.110631f},{0.172661f,0.0496013f,0.10308f},{0.146696f,0.0159096f,0.0741784f},
-{0.151058f,-0.0238325f,0.0313679f},{0.177696f,-0.0635748f,-0.0133948f},{0.218854f,-0.0972665f,-0.0527407f},
-{0.273153f,-0.119779f,-0.0824408f},{-0.297829f,0.0980529f,0.0842386f},{-0.313667f,0.123265f,0.038132f},
-{-0.33705f,0.120639f,0.0372689f},{-0.354056f,0.113163f,0.0431301f},{-0.362066f,0.101974f,0.0543168f},
-{-0.36034f,0.0887749f,0.0685476f},{-0.349711f,0.0755762f,0.0835722f},{-0.331827f,0.064387f,0.0977591f},
-{-0.308798f,0.0569104f,0.109844f},{-0.283419f,0.0542851f,0.118356f},{-0.2594f,0.0569105f,0.121591f},
-{-0.240924f,0.0643869f,0.11828f},{-0.231469f,0.0755762f,0.108374f},{-0.232666f,0.0887749f,0.0933521f},
-{-0.243995f,0.101974f,0.0758818f},{-0.26335f,0.113163f,0.0590793f},{-0.28776f,0.120639f,0.0457874f},
-{-0.328873f,0.126082f,-0.0164282f},{-0.374561f,0.121231f,-0.0180109f},{-0.407332f,0.107417f,-0.00547944f},
-{-0.420692f,0.0867414f,0.0183273f},{-0.414793f,0.0623534f,0.0470197f},{-0.394038f,0.0379655f,0.0749315f},
-{-0.362508f,0.0172904f,0.100144f},{-0.322425f,0.00347572f,0.122329f},{-0.276379f,-0.00137538f,0.139072f},
-{-0.230358f,0.00347572f,0.145889f},{-0.193783f,0.0172904f,0.139267f},{-0.175374f,0.0379654f,0.119083f},
-{-0.17845f,0.0623534f,0.0889719f},{-0.200266f,0.0867414f,0.05494f},{-0.235598f,0.107417f,0.0231068f},
-{-0.280002f,0.121231f,-0.00181462f},{-0.342729f,0.106077f,-0.0712325f},{-0.40707f,0.0997385f,-0.0755093f},
-{-0.453559f,0.0816888f,-0.0588285f},{-0.470324f,0.0546754f,-0.0239743f},{-0.459008f,0.022811f,0.0181521f},
-{-0.42934f,-0.00905347f,0.0575822f},{-0.3889f,-0.0360667f,0.0920333f},{-0.339532f,-0.0541165f,0.122036f},
-{-0.28154f,-0.0604547f,0.143658f},{-0.220773f,-0.0541165f,0.150064f},{-0.170787f,-0.0360668f,0.137505f},
-{-0.14554f,-0.00905347f,0.107605f},{-0.149815f,0.022811f,0.0664637f},{-0.177993f,0.0546754f,0.0222531f},
-{-0.221855f,0.0816888f,-0.0181252f},{-0.277621f,0.0997385f,-0.05043f},{-0.352579f,0.0662937f,-0.115311f},
-{-0.426014f,0.0594332f,-0.122827f},{-0.480338f,0.0398963f,-0.10543f},{-0.499898f,0.0106573f,-0.065114f},
-{-0.486365f,-0.0238325f,-0.0148973f},{-0.452313f,-0.0583224f,0.0325481f},{-0.408062f,-0.0875614f,0.0734018f},
-{-0.356245f,-0.107098f,0.107029f},{-0.295864f,-0.113959f,0.128165f},{-0.231347f,-0.107098f,0.130078f},
-{-0.176848f,-0.0875614f,0.111236f},{-0.148202f,-0.0583224f,0.0758284f},{-0.179053f,0.0106573f,-0.0141398f},
-{-0.223329f,0.0398963f,-0.0555068f},{-0.281369f,0.0594333f,-0.0903756f},{0.297829f,0.0980529f,0.0842386f},
-{0.313667f,0.123265f,0.038132f},{0.33705f,0.120639f,0.0372689f},{0.354056f,0.113163f,0.0431301f},
-{0.362066f,0.101974f,0.0543168f},{0.36034f,0.0887749f,0.0685476f},{0.349711f,0.0755762f,0.0835722f},
-{0.331827f,0.064387f,0.0977591f},{0.308798f,0.0569104f,0.109844f},{0.283419f,0.0542851f,0.118356f},
-{0.2594f,0.0569105f,0.121591f},{0.240924f,0.0643869f,0.11828f},{0.231469f,0.0755762f,0.108374f},
-{0.232666f,0.0887749f,0.0933521f},{0.243995f,0.101974f,0.0758818f},{0.26335f,0.113163f,0.0590793f},
-{0.28776f,0.120639f,0.0457874f},{0.328873f,0.126082f,-0.0164282f},{0.374561f,0.121231f,-0.0180109f},
-{0.407332f,0.107417f,-0.00547944f},{0.420692f,0.0867414f,0.0183273f},{0.414793f,0.0623534f,0.0470197f},
-{0.394038f,0.0379655f,0.0749315f},{0.362508f,0.0172904f,0.100144f},{0.322425f,0.00347572f,0.122329f},
-{0.276379f,-0.00137538f,0.139072f},{0.230358f,0.00347572f,0.145889f},{0.193783f,0.0172904f,0.139267f},
-{0.175374f,0.0379654f,0.119083f},{0.17845f,0.0623534f,0.0889719f},{0.200266f,0.0867414f,0.05494f},
-{0.235598f,0.107417f,0.0231068f},{0.280002f,0.121231f,-0.00181462f},{0.342729f,0.106077f,-0.0712325f},
-{0.40707f,0.0997385f,-0.0755093f},{0.453559f,0.0816888f,-0.0588285f},{0.470324f,0.0546754f,-0.0239743f},
-{0.459008f,0.022811f,0.0181521f},{0.42934f,-0.00905347f,0.0575822f},{0.3889f,-0.0360667f,0.0920333f},
-{0.339532f,-0.0541165f,0.122036f},{0.28154f,-0.0604547f,0.143658f},{0.220773f,-0.0541165f,0.150064f},
-{0.170787f,-0.0360668f,0.137505f},{0.14554f,-0.00905347f,0.107605f},{0.149815f,0.022811f,0.0664637f},
-{0.177993f,0.0546754f,0.0222531f},{0.221855f,0.0816888f,-0.0181252f},{0.277621f,0.0997385f,-0.05043f},
-{0.352579f,0.0662937f,-0.115311f},{0.426014f,0.0594332f,-0.122827f},{0.480338f,0.0398963f,-0.10543f},
-{0.499898f,0.0106573f,-0.065114f},{0.486365f,-0.0238325f,-0.0148973f},{0.452313f,-0.0583224f,0.0325481f},
-{0.408062f,-0.0875614f,0.0734018f},{0.356245f,-0.107098f,0.107029f},{0.295864f,-0.113959f,0.128165f},
-{0.231347f,-0.107098f,0.130078f},{0.176848f,-0.0875614f,0.111236f},{0.148202f,-0.0583224f,0.0758284f},
-{0.179053f,0.0106573f,-0.0141398f},{0.223329f,0.0398963f,-0.0555068f},{0.281369f,0.0594333f,-0.0903756f}
-},
-
-//lid 8
-{
-{-0.348964f,0.0841141f,-0.102844f},{-0.354155f,0.034321f,-0.134653f},{-0.382714f,0.0375006f,-0.138946f},
-{-0.406454f,0.0465551f,-0.136169f},{-0.420594f,0.0601062f,-0.126341f},{-0.422361f,0.0760907f,-0.111045f},
-{-0.411852f,0.0920752f,-0.0931276f},{-0.39161f,0.105626f,-0.0758779f},{-0.365443f,0.114681f,-0.0621226f},
-{-0.337443f,0.11786f,-0.0537301f},{-0.311591f,0.114681f,-0.0516105f},{-0.291492f,0.105626f,-0.0558164f},
-{-0.279841f,0.0920752f,-0.0655216f},{-0.277923f,0.0760906f,-0.0791518f},{-0.285685f,0.0601061f,-0.0948063f},
-{-0.302221f,0.0465551f,-0.110585f},{-0.325939f,0.0375006f,-0.124552f},{-0.352121f,-0.0239383f,-0.143656f},
-{-0.405164f,-0.0180633f,-0.150868f},{-0.450226f,-0.00133275f,-0.145058f},{-0.476253f,0.0237063f,-0.125898f},
-{-0.477338f,0.0532419f,-0.0965964f},{-0.455389f,0.0827775f,-0.0633853f},{-0.417606f,0.107817f,-0.0331416f},
-{-0.371497f,0.124547f,-0.0105503f},{-0.32275f,0.130422f,0.00261082f},{-0.277032f,0.124547f,0.0055299f},
-{-0.241377f,0.107817f,-0.0027318f},{-0.221859f,0.0827775f,-0.0214042f},{-0.220238f,0.0532419f,-0.0468527f},
-{-0.234397f,0.0237063f,-0.0747574f},{-0.262018f,-0.00133274f,-0.102078f},{-0.302085f,-0.0180633f,-0.12617f},
-{-0.344948f,-0.0817945f,-0.129319f},{-0.412012f,-0.0741185f,-0.134705f},{-0.4687f,-0.0522589f,-0.124335f},
-{-0.5f,-0.0195438f,-0.0982293f},{-0.498575f,0.0190463f,-0.0607126f},{-0.468954f,0.0576364f,-0.0200192f},
-{-0.422252f,0.0903515f,0.0151393f},{-0.366996f,0.112211f,0.0402528f},{-0.307083f,0.119887f,0.0555925f},
-{-0.247974f,0.112211f,0.0606335f},{-0.200709f,0.0903515f,0.0512665f},{-0.176262f,0.0576364f,0.0259707f},
-{-0.177034f,0.0190463f,-0.00941388f},{-0.197421f,-0.0195438f,-0.0469124f},{-0.232576f,-0.052259f,-0.081761f},
-{-0.282258f,-0.0741185f,-0.110534f},{-0.335953f,-0.130439f,-0.0940914f},{-0.404416f,-0.122131f,-0.0948819f},
-{-0.460736f,-0.0984704f,-0.0805227f},{-0.49041f,-0.0630598f,-0.052294f},{-0.487177f,-0.0212901f,-0.0148493f},
-{-0.456766f,0.0204795f,0.0241508f},{-0.410302f,0.05589f,0.0571937f},{-0.354541f,0.0795506f,0.0814215f},
-{-0.291402f,0.0878591f,0.0984543f},{-0.226542f,0.0795506f,0.106885f},{-0.173908f,0.05589f,0.0992358f},
-{-0.147736f,0.0204794f,0.0715326f},{-0.15111f,-0.0212902f,0.0308063f},{-0.176369f,-0.0630598f,-0.0119795f},
-{-0.216431f,-0.0984704f,-0.0499184f},{-0.270239f,-0.122131f,-0.0785263f},{0.348964f,0.0841141f,-0.102844f},
-{0.354155f,0.034321f,-0.134653f},{0.382714f,0.0375006f,-0.138946f},{0.406454f,0.0465551f,-0.136169f},
-{0.420594f,0.0601062f,-0.126341f},{0.422361f,0.0760907f,-0.111045f},{0.411852f,0.0920752f,-0.0931276f},
-{0.39161f,0.105626f,-0.075878f},{0.365443f,0.114681f,-0.0621226f},{0.337443f,0.11786f,-0.0537301f},
-{0.311591f,0.114681f,-0.0516105f},{0.291492f,0.105626f,-0.0558164f},{0.279841f,0.0920752f,-0.0655216f},
-{0.277923f,0.0760906f,-0.0791518f},{0.285685f,0.0601061f,-0.0948063f},{0.302221f,0.0465551f,-0.110585f},
-{0.32594f,0.0375006f,-0.124552f},{0.352121f,-0.0239383f,-0.143656f},{0.405164f,-0.0180633f,-0.150868f},
-{0.450226f,-0.00133275f,-0.145058f},{0.476253f,0.0237063f,-0.125898f},{0.477338f,0.0532419f,-0.0965964f},
-{0.455389f,0.0827775f,-0.0633853f},{0.417606f,0.107817f,-0.0331416f},{0.371497f,0.124547f,-0.0105503f},
-{0.32275f,0.130422f,0.00261082f},{0.277032f,0.124547f,0.0055299f},{0.241377f,0.107817f,-0.0027318f},
-{0.221859f,0.0827775f,-0.0214042f},{0.220238f,0.0532419f,-0.0468527f},{0.234397f,0.0237063f,-0.0747574f},
-{0.262018f,-0.00133274f,-0.102078f},{0.302085f,-0.0180633f,-0.12617f},{0.344948f,-0.0817945f,-0.129319f},
-{0.412012f,-0.0741185f,-0.134705f},{0.4687f,-0.0522589f,-0.124335f},{0.5f,-0.0195438f,-0.0982293f},
-{0.498575f,0.0190463f,-0.0607126f},{0.468954f,0.0576364f,-0.0200192f},{0.422252f,0.0903515f,0.0151393f},
-{0.366996f,0.112211f,0.0402528f},{0.307083f,0.119887f,0.0555925f},{0.247974f,0.112211f,0.0606335f},
-{0.200709f,0.0903515f,0.0512665f},{0.176262f,0.0576364f,0.0259707f},{0.177034f,0.0190463f,-0.00941388f},
-{0.197421f,-0.0195438f,-0.0469124f},{0.232576f,-0.052259f,-0.081761f},{0.282258f,-0.0741185f,-0.110534f},
-{0.335953f,-0.130439f,-0.0940914f},{0.404416f,-0.122131f,-0.0948819f},{0.460736f,-0.0984704f,-0.0805227f},
-{0.49041f,-0.0630598f,-0.052294f},{0.487177f,-0.0212901f,-0.0148493f},{0.456766f,0.0204795f,0.0241508f},
-{0.410302f,0.05589f,0.0571937f},{0.354541f,0.0795506f,0.0814215f},{0.291402f,0.0878591f,0.0984543f},
-{0.226542f,0.0795506f,0.106885f},{0.173908f,0.05589f,0.0992358f},{0.147736f,0.0204794f,0.0715326f},
-{0.15111f,-0.0212902f,0.0308063f},{0.176369f,-0.0630598f,-0.0119795f},{0.216431f,-0.0984704f,-0.0499184f},
-{0.270239f,-0.122131f,-0.0785263f},{-0.291072f,0.0869352f,0.0992675f},{-0.306729f,0.119396f,0.0566704f},
-{-0.330009f,0.116298f,0.0553776f},{-0.347061f,0.107476f,0.060103f},{-0.355392f,0.094272f,0.0696509f},
-{-0.35423f,0.078697f,0.082139f},{-0.344255f,0.063122f,0.0957421f},{-0.326952f,0.0499182f,0.109044f},
-{-0.304306f,0.0410956f,0.120722f},{-0.279013f,0.0379976f,0.129152f},{-0.254731f,0.0410956f,0.13261f},
-{-0.235694f,0.0499182f,0.129947f},{-0.225567f,0.063122f,0.121192f},{-0.226215f,0.078697f,0.1077f},
-{-0.237249f,0.094272f,0.0918433f},{-0.256524f,0.107476f,0.0764213f},{-0.280909f,0.116298f,0.0640395f},
-{-0.322409f,0.130439f,0.00385885f},{-0.367471f,0.124715f,0.00184701f},{-0.400107f,0.108413f,0.0123315f},
-{-0.414317f,0.0840155f,0.0327456f},{-0.410025f,0.0552367f,0.0577653f},{-0.391009f,0.0264579f,0.0829813f},
-{-0.360978f,0.00206033f,0.106894f},{-0.322089f,-0.0142416f,0.128503f},{-0.276729f,-0.019966f,0.144602f},
-{-0.230467f,-0.0142416f,0.150868f},{-0.192583f,0.00206035f,0.144734f},{-0.172269f,0.0264579f,0.126669f},
-{-0.173642f,0.0552367f,0.0998949f},{-0.194526f,0.0840156f,0.0694042f},{-0.229637f,0.108413f,0.0404957f},
-{-0.273962f,0.124715f,0.0175577f},{-0.337139f,0.118383f,-0.0525144f},{-0.400699f,0.110904f,-0.0571073f},
-{-0.447192f,0.0896042f,-0.0430756f},{-0.465444f,0.0577272f,-0.01278f},{-0.456584f,0.0201259f,0.0244976f},
-{-0.42927f,-0.0174755f,0.0605408f},{-0.390675f,-0.0493524f,0.093387f},{-0.342933f,-0.0706518f,0.122279f},
-{-0.286261f,-0.0781312f,0.142185f},{-0.225698f,-0.0706519f,0.146978f},{-0.174201f,-0.0493524f,0.13474f},
-{-0.146169f,-0.0174755f,0.107994f},{-0.147595f,0.0201259f,0.0718902f},{-0.17391f,0.0577273f,0.0327803f},
-{-0.217068f,0.0896041f,-0.00361029f},{-0.272593f,0.110904f,-0.033185f},{-0.348767f,0.0850626f,-0.10191f},
-{-0.422111f,0.076967f,-0.110121f},{-0.477084f,0.0539125f,-0.0958718f},{-0.498416f,0.0194093f,-0.0603363f},
-{-0.487177f,-0.0212902f,-0.0148492f},{-0.454951f,-0.0619896f,0.0292421f},{-0.411793f,-0.0964929f,0.0680066f},
-{-0.360878f,-0.119547f,0.0996509f},{-0.301511f,-0.127643f,0.118439f},{-0.237483f,-0.119547f,0.118782f},
-{-0.182061f,-0.0964929f,0.100861f},{-0.151065f,-0.0619896f,0.0694335f},{-0.15111f,-0.0212902f,0.0308063f},
-{-0.176925f,0.0194093f,-0.00906683f},{-0.220087f,0.0539126f,-0.0462431f},{-0.27776f,0.0769669f,-0.0783452f},
-{0.291072f,0.0869352f,0.0992675f},{0.306729f,0.119396f,0.0566704f},{0.330009f,0.116298f,0.0553776f},
-{0.347061f,0.107476f,0.060103f},{0.355392f,0.094272f,0.0696509f},{0.35423f,0.078697f,0.082139f},
-{0.344255f,0.063122f,0.095742f},{0.326952f,0.0499182f,0.109044f},{0.304306f,0.0410956f,0.120722f},
-{0.279013f,0.0379976f,0.129152f},{0.254731f,0.0410956f,0.13261f},{0.235694f,0.0499182f,0.129947f},
-{0.225567f,0.063122f,0.121192f},{0.226215f,0.078697f,0.1077f},{0.237249f,0.094272f,0.0918432f},
-{0.256524f,0.107476f,0.0764213f},{0.280909f,0.116298f,0.0640395f},{0.322409f,0.130439f,0.00385884f},
-{0.367471f,0.124715f,0.001847f},{0.400107f,0.108413f,0.0123315f},{0.414317f,0.0840155f,0.0327456f},
-{0.410025f,0.0552367f,0.0577653f},{0.391009f,0.0264579f,0.0829813f},{0.360978f,0.00206034f,0.106894f},
-{0.322089f,-0.0142416f,0.128503f},{0.276729f,-0.019966f,0.144602f},{0.230467f,-0.0142416f,0.150868f},
-{0.192583f,0.00206036f,0.144734f},{0.172269f,0.0264579f,0.126669f},{0.173642f,0.0552368f,0.0998949f},
-{0.194526f,0.0840156f,0.0694042f},{0.229637f,0.108413f,0.0404957f},{0.273962f,0.124715f,0.0175577f},
-{0.337139f,0.118383f,-0.0525144f},{0.400699f,0.110904f,-0.0571073f},{0.447192f,0.0896042f,-0.0430756f},
-{0.465443f,0.0577272f,-0.01278f},{0.456584f,0.0201259f,0.0244975f},{0.42927f,-0.0174755f,0.0605408f},
-{0.390675f,-0.0493524f,0.093387f},{0.342933f,-0.0706518f,0.122279f},{0.286261f,-0.0781312f,0.142185f},
-{0.225698f,-0.0706519f,0.146978f},{0.174201f,-0.0493524f,0.13474f},{0.146169f,-0.0174755f,0.107994f},
-{0.147595f,0.0201259f,0.0718902f},{0.17391f,0.0577273f,0.0327803f},{0.217068f,0.0896041f,-0.0036103f},
-{0.272593f,0.110904f,-0.033185f},{0.348767f,0.0850626f,-0.10191f},{0.422111f,0.0769669f,-0.110121f},
-{0.477084f,0.0539125f,-0.0958718f},{0.498416f,0.0194093f,-0.0603363f},{0.487177f,-0.0212902f,-0.0148492f},
-{0.454951f,-0.0619896f,0.0292421f},{0.411793f,-0.0964929f,0.0680066f},{0.360878f,-0.119547f,0.0996509f},
-{0.301511f,-0.127643f,0.118439f},{0.237483f,-0.119547f,0.118782f},{0.182061f,-0.0964929f,0.100861f},
-{0.151065f,-0.0619896f,0.0694335f},{0.15111f,-0.0212902f,0.0308063f},{0.176925f,0.0194093f,-0.00906683f},
-{0.220087f,0.0539126f,-0.0462431f},{0.27776f,0.0769669f,-0.0783453f}
-},
-
-//lid 6
-{
-{-0.351756f,0.0844025f,-0.109661f},{-0.355945f,0.0328842f,-0.138446f},{-0.384378f,0.0362308f,-0.142751f},
-{-0.408193f,0.0457608f,-0.140451f},{-0.42265f,0.0600234f,-0.131521f},{-0.424904f,0.0768473f,-0.117353f},
-{-0.414884f,0.0936713f,-0.100537f},{-0.394983f,0.107934f,-0.084143f},{-0.36896f,0.117464f,-0.070887f},
-{-0.340955f,0.12081f,-0.0626191f},{-0.315021f,0.117464f,-0.0602733f},{-0.294794f,0.107934f,-0.0639409f},
-{-0.282961f,0.0936712f,-0.0728692f},{-0.2808f,0.0768474f,-0.0856041f},{-0.288278f,0.0600233f,-0.100374f},
-{-0.304522f,0.0457607f,-0.115367f},{-0.327964f,0.0362308f,-0.128713f},{-0.353096f,-0.0259013f,-0.144196f},
-{-0.405674f,-0.0197177f,-0.151037f},{-0.450633f,-0.00210858f,-0.145914f},{-0.477229f,0.0242454f,-0.128485f},
-{-0.479417f,0.0553321f,-0.10146f},{-0.458564f,0.0864186f,-0.0703846f},{-0.421405f,0.112773f,-0.0416503f},
-{-0.375401f,0.130382f,-0.0198441f},{-0.326511f,0.136565f,-0.00688288f},{-0.280637f,0.130382f,-0.00366803f},
-{-0.244819f,0.112772f,-0.0110978f},{-0.225012f,0.0864185f,-0.0284403f},{-0.222941f,0.055332f,-0.0523391f},
-{-0.23661f,0.0242453f,-0.078796f},{-0.263825f,-0.00210858f,-0.104838f},{-0.30352f,-0.0197177f,-0.127723f},
-{-0.34558f,-0.0830043f,-0.126825f},{-0.411879f,-0.0749251f,-0.131548f},{-0.468152f,-0.0519177f,-0.121991f},
-{-0.5f,-0.0174846f,-0.0981684f},{-0.499979f,0.023132f,-0.0636476f},{-0.47182f,0.0637486f,-0.0256644f},
-{-0.425949f,0.0981816f,0.00767143f},{-0.370867f,0.121189f,0.0318387f},{-0.310857f,0.129268f,0.0468414f},
-{-0.251612f,0.121189f,0.0521057f},{-0.204087f,0.0981816f,0.0437074f},{-0.179119f,0.0637485f,0.0201095f},
-{-0.179202f,0.0231319f,-0.013301f},{-0.19903f,-0.0174846f,-0.0490307f},{-0.233919f,-0.0519177f,-0.0823255f},
-{-0.283398f,-0.0749251f,-0.109512f},{-0.336776f,-0.129732f,-0.0889855f},{-0.404391f,-0.120987f,-0.0893879f},
-{-0.460079f,-0.0960837f,-0.0761018f},{-0.490006f,-0.0588136f,-0.0503488f},{-0.487934f,-0.0148505f,-0.0159837f},
-{-0.458895f,0.0291126f,0.020314f},{-0.413359f,0.0663826f,0.0515159f},{-0.358011f,0.0912858f,0.0746728f},
-{-0.294985f,0.100031f,0.0912395f},{-0.229974f,0.0912857f,0.0999435f},{-0.176824f,0.0663827f,0.0935117f},
-{-0.149845f,0.0291126f,0.067785f},{-0.152477f,-0.0148506f,0.0292381f},{-0.177433f,-0.0588137f,-0.0115784f},
-{-0.217614f,-0.0960837f,-0.0477599f},{-0.271491f,-0.120987f,-0.074726f},{0.351756f,0.0844025f,-0.109661f},
-{0.355945f,0.0328842f,-0.138446f},{0.384378f,0.0362308f,-0.142751f},{0.408193f,0.0457608f,-0.140451f},
-{0.42265f,0.0600234f,-0.131521f},{0.424904f,0.0768474f,-0.117353f},{0.414884f,0.0936713f,-0.100537f},
-{0.394983f,0.107934f,-0.084143f},{0.36896f,0.117464f,-0.070887f},{0.340955f,0.12081f,-0.0626191f},
-{0.315021f,0.117464f,-0.0602733f},{0.294794f,0.107934f,-0.0639409f},{0.282961f,0.0936712f,-0.0728692f},
-{0.2808f,0.0768474f,-0.0856041f},{0.288278f,0.0600233f,-0.100374f},{0.304522f,0.0457607f,-0.115367f},
-{0.327964f,0.0362308f,-0.128713f},{0.353096f,-0.0259012f,-0.144196f},{0.405674f,-0.0197177f,-0.151037f},
-{0.450633f,-0.00210858f,-0.145914f},{0.477229f,0.0242454f,-0.128485f},{0.479417f,0.0553321f,-0.10146f},
-{0.458564f,0.0864186f,-0.0703846f},{0.421405f,0.112773f,-0.0416503f},{0.375401f,0.130382f,-0.0198441f},
-{0.326511f,0.136565f,-0.00688288f},{0.280637f,0.130382f,-0.00366802f},{0.244819f,0.112772f,-0.0110978f},
-{0.225012f,0.0864185f,-0.0284403f},{0.222941f,0.055332f,-0.0523391f},{0.236611f,0.0242453f,-0.078796f},
-{0.263825f,-0.00210858f,-0.104838f},{0.30352f,-0.0197177f,-0.127723f},{0.345581f,-0.0830043f,-0.126825f},
-{0.411879f,-0.0749251f,-0.131548f},{0.468152f,-0.0519177f,-0.121991f},{0.5f,-0.0174846f,-0.0981684f},
-{0.499979f,0.023132f,-0.0636476f},{0.47182f,0.0637486f,-0.0256644f},{0.425949f,0.0981816f,0.00767143f},
-{0.370867f,0.121189f,0.0318387f},{0.310857f,0.129268f,0.0468414f},{0.251612f,0.121189f,0.0521057f},
-{0.204087f,0.0981816f,0.0437074f},{0.179119f,0.0637485f,0.0201095f},{0.179202f,0.0231319f,-0.013301f},
-{0.19903f,-0.0174846f,-0.0490307f},{0.233919f,-0.0519177f,-0.0823255f},{0.283398f,-0.0749251f,-0.109512f},
-{0.336776f,-0.129732f,-0.0889855f},{0.404391f,-0.120987f,-0.0893879f},{0.460079f,-0.0960837f,-0.0761018f},
-{0.490007f,-0.0588136f,-0.0503488f},{0.487934f,-0.0148505f,-0.0159837f},{0.458895f,0.0291126f,0.020314f},
-{0.413359f,0.0663826f,0.0515159f},{0.358011f,0.0912858f,0.0746728f},{0.294985f,0.100031f,0.0912395f},
-{0.229974f,0.0912857f,0.0999435f},{0.176824f,0.0663827f,0.0935117f},{0.149845f,0.0291126f,0.067785f},
-{0.152477f,-0.0148506f,0.0292381f},{0.177433f,-0.0588137f,-0.0115784f},{0.217614f,-0.0960837f,-0.0477599f},
-{0.271491f,-0.120987f,-0.074726f},{-0.287056f,0.0758929f,0.110646f},{-0.301988f,0.115564f,0.0728616f},
-{-0.325153f,0.112018f,0.0708336f},{-0.342261f,0.101921f,0.0739892f},{-0.351035f,0.0868102f,0.0813745f},
-{-0.350709f,0.0689855f,0.0915995f},{-0.341765f,0.0511608f,0.10337f},{-0.325429f,0.0360497f,0.115558f},
-{-0.303445f,0.0259528f,0.126808f},{-0.278313f,0.0224073f,0.135353f},{-0.253592f,0.0259528f,0.139427f},
-{-0.233614f,0.0360497f,0.137946f},{-0.22236f,0.0511608f,0.130911f},{-0.22208f,0.0689854f,0.119439f},
-{-0.232625f,0.0868102f,0.105524f},{-0.2518f,0.101921f,0.0916217f},{-0.276219f,0.112018f,0.080118f},
-{-0.317919f,0.13538f,0.0237192f},{-0.36191f,0.128829f,0.0210766f},{-0.394013f,0.110172f,0.0288914f},
-{-0.409112f,0.0822505f,0.0448135f},{-0.40697f,0.0493148f,0.0648619f},{-0.390534f,0.016379f,0.08627f},
-{-0.362855f,-0.0115425f,0.108162f},{-0.325769f,-0.0301992f,0.128919f},{-0.281276f,-0.0367505f,0.144595f},
-{-0.234463f,-0.0301991f,0.151037f},{-0.194554f,-0.0115425f,0.146466f},{-0.171463f,0.016379f,0.131679f},
-{-0.170486f,0.0493148f,0.109223f},{-0.190284f,0.0822505f,0.082936f},{-0.225447f,0.110172f,0.0573035f},
-{-0.269985f,0.128829f,0.0364921f},{-0.333196f,0.132325f,-0.0320871f},{-0.39485f,0.123765f,-0.0366893f},
-{-0.440427f,0.0993894f,-0.0258578f},{-0.460181f,0.0629081f,-0.00177522f},{-0.454693f,0.0198755f,0.0284132f},
-{-0.431007f,-0.0231572f,0.0590285f},{-0.395363f,-0.0596384f,0.0888389f},{-0.34986f,-0.0840145f,0.115946f},
-{-0.294567f,-0.0925742f,0.134374f},{-0.233834f,-0.0840145f,0.13864f},{-0.180142f,-0.0596384f,0.12824f},
-{-0.148514f,-0.0231572f,0.106138f},{-0.146522f,0.0198755f,0.07627f},{-0.171003f,0.0629081f,0.0431261f},
-{-0.213996f,0.0993894f,0.0113892f},{-0.269657f,0.123765f,-0.0148336f},{-0.346426f,0.106864f,-0.0853202f},
-{-0.418148f,0.0975991f,-0.0933364f},{-0.472597f,0.0712147f,-0.0826396f},{-0.495756f,0.0317277f,-0.0538754f},
-{-0.487934f,-0.0148505f,-0.0159838f},{-0.458964f,-0.0614287f,0.0220605f},{-0.417971f,-0.100916f,0.056811f},
-{-0.36836f,-0.1273f,0.0855621f},{-0.309844f,-0.136565f,0.102268f},{-0.245932f,-0.1273f,0.102289f},
-{-0.189196f,-0.100916f,0.0869168f},{-0.155469f,-0.0614287f,0.0609428f},{-0.152477f,-0.0148505f,0.0292381f},
-{-0.176282f,0.0317276f,-0.00420161f},{-0.21885f,0.0712148f,-0.0363203f},{-0.276383f,0.0975992f,-0.0644713f},
-{0.287056f,0.0758929f,0.110646f},{0.301988f,0.115564f,0.0728616f},{0.325153f,0.112018f,0.0708336f},
-{0.342261f,0.101921f,0.0739892f},{0.351035f,0.0868102f,0.0813745f},{0.350709f,0.0689855f,0.0915995f},
-{0.341765f,0.0511608f,0.10337f},{0.325429f,0.0360497f,0.115558f},{0.303445f,0.0259528f,0.126808f},
-{0.278313f,0.0224073f,0.135353f},{0.253592f,0.0259528f,0.139427f},{0.233614f,0.0360497f,0.137946f},
-{0.22236f,0.0511608f,0.130911f},{0.22208f,0.0689854f,0.119439f},{0.232625f,0.0868102f,0.105524f},
-{0.2518f,0.101921f,0.0916217f},{0.276219f,0.112018f,0.080118f},{0.317919f,0.13538f,0.0237192f},
-{0.36191f,0.128829f,0.0210766f},{0.394013f,0.110172f,0.0288914f},{0.409112f,0.0822505f,0.0448135f},
-{0.40697f,0.0493148f,0.0648619f},{0.390534f,0.016379f,0.08627f},{0.362855f,-0.0115425f,0.108162f},
-{0.325769f,-0.0301992f,0.128919f},{0.281276f,-0.0367505f,0.144595f},{0.234463f,-0.0301991f,0.151037f},
-{0.194554f,-0.0115425f,0.146466f},{0.171463f,0.016379f,0.131679f},{0.170486f,0.0493148f,0.109223f},
-{0.190285f,0.0822505f,0.082936f},{0.225447f,0.110172f,0.0573035f},{0.269985f,0.128829f,0.0364921f},
-{0.333196f,0.132325f,-0.0320871f},{0.394851f,0.123765f,-0.0366893f},{0.440427f,0.0993894f,-0.0258578f},
-{0.460181f,0.0629081f,-0.00177522f},{0.454693f,0.0198755f,0.0284132f},{0.431007f,-0.0231572f,0.0590285f},
-{0.395363f,-0.0596384f,0.0888389f},{0.34986f,-0.0840145f,0.115946f},{0.294567f,-0.0925742f,0.134374f},
-{0.233834f,-0.0840145f,0.13864f},{0.180142f,-0.0596384f,0.12824f},{0.148514f,-0.0231572f,0.106138f},
-{0.146523f,0.0198755f,0.07627f},{0.171003f,0.0629081f,0.0431261f},{0.213996f,0.0993894f,0.0113892f},
-{0.269657f,0.123765f,-0.0148336f},{0.346426f,0.106864f,-0.0853202f},{0.418148f,0.0975991f,-0.0933364f},
-{0.472597f,0.0712147f,-0.0826396f},{0.495756f,0.0317277f,-0.0538754f},{0.487934f,-0.0148505f,-0.0159838f},
-{0.458964f,-0.0614287f,0.0220605f},{0.417971f,-0.100916f,0.056811f},{0.36836f,-0.1273f,0.0855621f},
-{0.309845f,-0.136565f,0.102268f},{0.245932f,-0.1273f,0.102289f},{0.189196f,-0.100916f,0.0869168f},
-{0.155469f,-0.0614287f,0.0609428f},{0.152477f,-0.0148505f,0.0292381f},{0.176282f,0.0317276f,-0.00420161f},
-{0.21885f,0.0712148f,-0.0363203f},{0.276383f,0.0975992f,-0.0644713f}
-},
-
-//lid 5
-{
-{-0.35222f,0.0807632f,-0.116269f},{-0.355112f,0.0275006f,-0.141217f},{-0.383561f,0.0310274f,-0.145773f},
-{-0.407652f,0.0410709f,-0.144276f},{-0.422647f,0.056102f,-0.136598f},{-0.425567f,0.0738323f,-0.123872f},
-{-0.416122f,0.0915627f,-0.108372f},{-0.396538f,0.106594f,-0.092926f},{-0.370553f,0.116637f,-0.0801451f},
-{-0.342414f,0.120164f,-0.0718868f},{-0.316287f,0.116637f,-0.0691268f},{-0.295842f,0.106594f,-0.0720026f},
-{-0.283736f,0.0915627f,-0.0798502f},{-0.281224f,0.0738323f,-0.0913764f},{-0.288303f,0.0561019f,-0.104997f},
-{-0.304166f,0.0410709f,-0.119044f},{-0.327307f,0.0310274f,-0.131739f},{-0.351234f,-0.0315149f,-0.14288f},
-{-0.40356f,-0.0249982f,-0.149751f},{-0.448778f,-0.00644035f,-0.14589f},{-0.476382f,0.0213335f,-0.130823f},
-{-0.480046f,0.0540949f,-0.106621f},{-0.46045f,0.0868564f,-0.0780273f},{-0.423811f,0.11463f,-0.0509148f},
-{-0.377654f,0.133188f,-0.0298383f},{-0.328398f,0.139705f,-0.0169541f},{-0.282288f,0.133188f,-0.0132744f},
-{-0.246317f,0.11463f,-0.019573f},{-0.22617f,0.0868563f,-0.0350928f},{-0.223453f,0.0540949f,-0.0568338f},
-{-0.236342f,0.0213334f,-0.0812907f},{-0.262887f,-0.00644041f,-0.105693f},{-0.302078f,-0.0249983f,-0.127263f},
-{-0.34326f,-0.0872989f,-0.121779f},{-0.408985f,-0.0787845f,-0.126311f},{-0.465236f,-0.0545374f,-0.11824f},
-{-0.498151f,-0.0182492f,-0.0974167f},{-0.5f,0.0245557f,-0.0664839f},{-0.473501f,0.0673606f,-0.0315635f},
-{-0.428328f,0.103649f,-0.000164158f},{-0.373146f,0.127896f,0.0230542f},{-0.3129f,0.13641f,0.037678f},
-{-0.25362f,0.127896f,0.0431086f},{-0.206011f,0.103649f,0.0358444f},{-0.1805f,0.0673606f,0.0145129f},
-{-0.17957f,0.0245557f,-0.0160796f},{-0.198361f,-0.0182492f,-0.0492255f},{-0.232567f,-0.0545374f,-0.0804019f},
-{-0.281607f,-0.0787845f,-0.105784f},{-0.334569f,-0.131359f,-0.0809148f},{-0.40145f,-0.122143f,-0.0813779f},
-{-0.456808f,-0.0958979f,-0.069794f},{-0.487429f,-0.0566198f,-0.0471402f},{-0.486932f,-0.0102881f,-0.0163207f},
-{-0.459465f,0.0360436f,0.0170134f},{-0.414816f,0.0753217f,0.0462327f},{-0.359802f,0.101566f,0.0681354f},
-{-0.296993f,0.110782f,0.0839128f},{-0.232114f,0.101566f,0.0925683f},{-0.178659f,0.0753217f,0.0873822f},
-{-0.150754f,0.0360435f,0.0642135f},{-0.152175f,-0.0102882f,0.0287899f},{-0.176247f,-0.0566198f,-0.00911687f},
-{-0.216092f,-0.0958979f,-0.042849f},{-0.269784f,-0.122143f,-0.0678564f},{0.35222f,0.0807632f,-0.116269f},
-{0.355112f,0.0275006f,-0.141217f},{0.383561f,0.0310274f,-0.145773f},{0.407652f,0.0410709f,-0.144276f},
-{0.422647f,0.056102f,-0.136598f},{0.425567f,0.0738323f,-0.123872f},{0.416122f,0.0915627f,-0.108372f},
-{0.396538f,0.106594f,-0.092926f},{0.370553f,0.116637f,-0.0801451f},{0.342414f,0.120164f,-0.0718868f},
-{0.316287f,0.116637f,-0.0691268f},{0.295842f,0.106594f,-0.0720026f},{0.283736f,0.0915627f,-0.0798502f},
-{0.281224f,0.0738323f,-0.0913764f},{0.288303f,0.0561019f,-0.104997f},{0.304166f,0.0410709f,-0.119044f},
-{0.327307f,0.0310274f,-0.131739f},{0.351234f,-0.031515f,-0.14288f},{0.40356f,-0.0249982f,-0.149751f},
-{0.448778f,-0.00644035f,-0.14589f},{0.476382f,0.0213335f,-0.130823f},{0.480046f,0.0540949f,-0.106621f},
-{0.46045f,0.0868564f,-0.0780273f},{0.423811f,0.11463f,-0.0509149f},{0.377654f,0.133188f,-0.0298383f},
-{0.328398f,0.139705f,-0.0169541f},{0.282288f,0.133188f,-0.0132744f},{0.246317f,0.11463f,-0.019573f},
-{0.22617f,0.0868563f,-0.0350928f},{0.223453f,0.0540949f,-0.0568338f},{0.236342f,0.0213334f,-0.0812907f},
-{0.262887f,-0.00644041f,-0.105693f},{0.302078f,-0.0249983f,-0.127263f},{0.34326f,-0.0872989f,-0.121779f},
-{0.408985f,-0.0787845f,-0.126311f},{0.465236f,-0.0545374f,-0.11824f},{0.498151f,-0.0182492f,-0.0974167f},
-{0.5f,0.0245557f,-0.0664839f},{0.473501f,0.0673606f,-0.0315635f},{0.428328f,0.103649f,-0.00016416f},
-{0.373146f,0.127896f,0.0230542f},{0.3129f,0.13641f,0.037678f},{0.25362f,0.127896f,0.0431086f},
-{0.206011f,0.103649f,0.0358444f},{0.1805f,0.0673606f,0.0145129f},{0.17957f,0.0245557f,-0.0160796f},
-{0.198361f,-0.0182492f,-0.0492255f},{0.232567f,-0.0545375f,-0.0804019f},{0.281607f,-0.0787845f,-0.105784f},
-{0.334569f,-0.131359f,-0.0809148f},{0.40145f,-0.122143f,-0.0813779f},{0.456808f,-0.0958979f,-0.069794f},
-{0.487429f,-0.0566198f,-0.0471402f},{0.486932f,-0.0102881f,-0.0163207f},{0.459465f,0.0360436f,0.0170134f},
-{0.414816f,0.0753217f,0.0462327f},{0.359802f,0.101566f,0.0681354f},{0.296993f,0.110782f,0.0839128f},
-{0.232114f,0.101566f,0.0925683f},{0.178659f,0.0753217f,0.0873822f},{0.150754f,0.0360435f,0.0642135f},
-{0.152175f,-0.0102882f,0.0287899f},{0.176247f,-0.0566198f,-0.00911686f},{0.216092f,-0.0958979f,-0.042849f},
-{0.269784f,-0.122143f,-0.0678564f},{-0.283516f,0.0684505f,0.117249f},{-0.297523f,0.111982f,0.0825327f},
-{-0.320672f,0.108213f,0.0800315f},{-0.337917f,0.0974768f,0.0822191f},{-0.347078f,0.0814095f,0.0883145f},
-{-0.347375f,0.062457f,0.0972086f},{-0.33918f,0.0435043f,0.107872f},{-0.323569f,0.0274371f,0.119293f},
-{-0.302141f,0.0167013f,0.1301f},{-0.277259f,0.0129314f,0.138501f},{-0.252381f,0.0167013f,0.142792f},
-{-0.231847f,0.0274371f,0.14198f},{-0.219791f,0.0435043f,0.136064f},{-0.218713f,0.0624569f,0.125981f},
-{-0.228674f,0.0814096f,0.113434f},{-0.247538f,0.0974768f,0.100606f},{-0.271824f,0.108213f,0.0897131f},
-{-0.313436f,0.1369f,0.0359331f},{-0.35693f,0.129934f,0.0327261f},{-0.388907f,0.110097f,0.0387786f},
-{-0.404696f,0.0804084f,0.0519694f},{-0.403928f,0.0453886f,0.0691129f},{-0.389077f,0.0103687f,0.0882565f},
-{-0.36285f,-0.0193198f,0.108704f},{-0.326938f,-0.0391569f,0.12848f},{-0.28316f,-0.0461228f,0.14344f},
-{-0.236305f,-0.0391569f,0.149751f},{-0.195408f,-0.0193197f,0.146165f},{-0.170624f,0.0103687f,0.133635f},
-{-0.167907f,0.0453885f,0.114231f},{-0.18657f,0.0804084f,0.090957f},{-0.221347f,0.110097f,0.0676455f},
-{-0.265804f,0.129934f,0.0482343f},{-0.328906f,0.139409f,-0.0188677f},{-0.389563f,0.130308f,-0.0237764f},
-{-0.434822f,0.104389f,-0.0151712f},{-0.455683f,0.0655995f,0.00499309f},{-0.452287f,0.0198438f,0.0308808f},
-{-0.430691f,-0.0259118f,0.0581252f},{-0.396613f,-0.0647016f,0.085662f},{-0.352229f,-0.0906201f,0.111006f},
-{-0.29775f,-0.0997214f,0.128053f},{-0.237276f,-0.09062f,0.131966f},{-0.182806f,-0.0647016f,0.122977f},
-{-0.149318f,-0.0259118f,0.104165f},{-0.145113f,0.0198439f,0.0786865f},{-0.168025f,0.0655996f,0.0497981f},
-{-0.21047f,0.104389f,0.0213453f},{-0.265982f,0.130308f,-0.00271041f},{-0.342835f,0.119128f,-0.0736233f},
-{-0.413662f,0.109277f,-0.0818217f},{-0.468026f,0.0812232f,-0.0736504f},{-0.492562f,0.0392375f,-0.0493431f},
-{-0.486932f,-0.0102881f,-0.0163207f},{-0.459805f,-0.0598137f,0.0177488f},{-0.419752f,-0.101799f,0.0495111f},
-{-0.37045f,-0.129853f,0.0758506f},{-0.312195f,-0.139705f,0.0909771f},{-0.248628f,-0.129853f,0.091013f},
-{-0.191762f,-0.101799f,0.0777037f},{-0.156931f,-0.0598137f,0.0556475f},{-0.152175f,-0.0102881f,0.0287899f},
-{-0.174436f,0.0392374f,-0.000122022f},{-0.216246f,0.0812232f,-0.0287078f},{-0.273448f,0.109277f,-0.0542936f},
-{0.283516f,0.0684505f,0.117249f},{0.297523f,0.111982f,0.0825327f},{0.320672f,0.108213f,0.0800315f},
-{0.337917f,0.0974768f,0.0822191f},{0.347078f,0.0814095f,0.0883145f},{0.347375f,0.062457f,0.0972086f},
-{0.33918f,0.0435043f,0.107872f},{0.323569f,0.0274371f,0.119293f},{0.302141f,0.0167013f,0.1301f},
-{0.277259f,0.0129314f,0.138501f},{0.252381f,0.0167013f,0.142792f},{0.231847f,0.0274371f,0.14198f},
-{0.219791f,0.0435043f,0.136064f},{0.218713f,0.062457f,0.125981f},{0.228674f,0.0814096f,0.113434f},
-{0.247538f,0.0974768f,0.100606f},{0.271824f,0.108213f,0.0897131f},{0.313436f,0.1369f,0.0359331f},
-{0.35693f,0.129934f,0.0327261f},{0.388907f,0.110097f,0.0387786f},{0.404696f,0.0804084f,0.0519694f},
-{0.403928f,0.0453886f,0.0691129f},{0.389077f,0.0103687f,0.0882565f},{0.36285f,-0.0193197f,0.108704f},
-{0.326938f,-0.0391569f,0.12848f},{0.28316f,-0.0461228f,0.14344f},{0.236305f,-0.0391569f,0.149751f},
-{0.195408f,-0.0193197f,0.146165f},{0.170624f,0.0103687f,0.133635f},{0.167907f,0.0453885f,0.114231f},
-{0.18657f,0.0804084f,0.090957f},{0.221347f,0.110097f,0.0676455f},{0.265804f,0.129934f,0.0482343f},
-{0.328906f,0.139409f,-0.0188677f},{0.389563f,0.130308f,-0.0237764f},{0.434822f,0.104389f,-0.0151712f},
-{0.455683f,0.0655995f,0.00499309f},{0.452287f,0.0198438f,0.0308808f},{0.430691f,-0.0259118f,0.0581252f},
-{0.396613f,-0.0647016f,0.085662f},{0.352229f,-0.0906201f,0.111006f},{0.29775f,-0.0997214f,0.128053f},
-{0.237276f,-0.09062f,0.131966f},{0.182806f,-0.0647016f,0.122977f},{0.149318f,-0.0259118f,0.104165f},
-{0.145113f,0.0198439f,0.0786865f},{0.168025f,0.0655996f,0.0497981f},{0.21047f,0.104389f,0.0213453f},
-{0.265982f,0.130308f,-0.00271041f},{0.342835f,0.119128f,-0.0736233f},{0.413662f,0.109277f,-0.0818217f},
-{0.468026f,0.0812232f,-0.0736504f},{0.492562f,0.0392375f,-0.0493431f},{0.486932f,-0.0102881f,-0.0163207f},
-{0.459805f,-0.0598137f,0.0177488f},{0.419752f,-0.101799f,0.0495111f},{0.37045f,-0.129853f,0.0758506f},
-{0.312195f,-0.139705f,0.0909771f},{0.248628f,-0.129853f,0.091013f},{0.191762f,-0.101799f,0.0777037f},
-{0.156931f,-0.0598137f,0.0556475f},{0.152175f,-0.0102881f,0.0287899f},{0.174436f,0.0392374f,-0.000122023f},
-{0.216246f,0.0812232f,-0.0287078f},{0.273448f,0.109277f,-0.0542936f}
-},
-
-//lid 4
-{
-{-0.353855f,0.0634518f,-0.127808f},{-0.353743f,0.00680746f,-0.14288f},{-0.382005f,0.0107183f,-0.14774f},
-{-0.406503f,0.0218554f,-0.148074f},{-0.422603f,0.0385233f,-0.143562f},{-0.427103f,0.0581844f,-0.134712f},
-{-0.419209f,0.0778456f,-0.12295f},{-0.400665f,0.0945135f,-0.110367f},{-0.37505f,0.105651f,-0.0991699f},
-{-0.346773f,0.109561f,-0.0911444f},{-0.32025f,0.105651f,-0.0873742f},{-0.299264f,0.0945134f,-0.088188f},
-{-0.286447f,0.0778455f,-0.0932286f},{-0.283047f,0.0581844f,-0.101633f},{-0.28916f,0.0385233f,-0.112242f},
-{-0.304115f,0.0218554f,-0.123685f},{-0.32649f,0.0107183f,-0.134417f},{-0.347829f,-0.051748f,-0.134586f},
-{-0.39918f,-0.0445217f,-0.141112f},{-0.444479f,-0.023943f,-0.140152f},{-0.474048f,0.00685527f,-0.131052f},
-{-0.481203f,0.0431843f,-0.114419f},{-0.465041f,0.0795133f,-0.0929282f},{-0.430264f,0.110311f,-0.0708482f},
-{-0.384188f,0.13089f,-0.0522717f},{-0.334187f,0.138117f,-0.0397563f},{-0.287418f,0.13089f,-0.0346676f},
-{-0.250883f,0.110312f,-0.0377287f},{-0.229717f,0.0795133f,-0.0483917f},{-0.225358f,0.0431842f,-0.0646188f},
-{-0.236481f,0.00685524f,-0.0839373f},{-0.261654f,-0.023943f,-0.103878f},{-0.299784f,-0.0445217f,-0.121626f},
-{-0.339278f,-0.1033f,-0.104625f},{-0.40326f,-0.0938584f,-0.108657f},{-0.458827f,-0.066971f,-0.104285f},
-{-0.493724f,-0.0267311f,-0.0911008f},{-0.5f,0.020735f,-0.0697199f},{-0.47804f,0.0682011f,-0.0435093f},
-{-0.435242f,0.108441f,-0.0180731f},{-0.380135f,0.135328f,0.00212642f},{-0.319193f,0.14477f,0.0158355f},
-{-0.259542f,0.135328f,0.0221782f},{-0.211448f,0.108441f,0.0183685f},{-0.184369f,0.0682011f,0.0031685f},
-{-0.180904f,0.0207349f,-0.0201245f},{-0.197459f,-0.0267312f,-0.0464986f},{-0.230533f,-0.066971f,-0.0718127f},
-{-0.278897f,-0.0938584f,-0.0921433f},{-0.331281f,-0.14f,-0.0568862f},{-0.396099f,-0.129781f,-0.0579084f},
-{-0.450089f,-0.100678f,-0.050944f},{-0.481864f,-0.0571228f,-0.0363563f},{-0.48513f,-0.00574581f,-0.0149238f},
-{-0.461947f,0.0456311f,0.0101581f},{-0.419991f,0.0891865f,0.0335696f},{-0.365921f,0.118289f,0.0519629f},
-{-0.303382f,0.128509f,0.0659771f},{-0.238494f,0.118289f,0.0750094f},{-0.184008f,0.0891864f,0.0734764f},
-{-0.153528f,0.0456311f,0.0572033f},{-0.151825f,-0.00574587f,0.0300291f},{-0.174023f,-0.0571228f,-9.32868e-005f},
-{-0.213722f,-0.100678f,-0.027056f},{-0.267552f,-0.129781f,-0.0467337f},{0.353855f,0.0634518f,-0.127808f},
-{0.353743f,0.00680746f,-0.14288f},{0.382005f,0.0107183f,-0.14774f},{0.406503f,0.0218554f,-0.148074f},
-{0.422603f,0.0385233f,-0.143562f},{0.427103f,0.0581844f,-0.134712f},{0.419209f,0.0778455f,-0.12295f},
-{0.400665f,0.0945135f,-0.110367f},{0.37505f,0.105651f,-0.0991699f},{0.346773f,0.109561f,-0.0911444f},
-{0.32025f,0.105651f,-0.0873742f},{0.299264f,0.0945134f,-0.0881879f},{0.286447f,0.0778455f,-0.0932286f},
-{0.283047f,0.0581844f,-0.101633f},{0.28916f,0.0385233f,-0.112242f},{0.304115f,0.0218554f,-0.123685f},
-{0.32649f,0.0107183f,-0.134417f},{0.347829f,-0.051748f,-0.134586f},{0.39918f,-0.0445217f,-0.141112f},
-{0.444479f,-0.023943f,-0.140152f},{0.474048f,0.00685527f,-0.131052f},{0.481203f,0.0431843f,-0.114419f},
-{0.465041f,0.0795133f,-0.0929282f},{0.430264f,0.110311f,-0.0708482f},{0.384188f,0.13089f,-0.0522717f},
-{0.334187f,0.138117f,-0.0397563f},{0.287418f,0.13089f,-0.0346676f},{0.250883f,0.110312f,-0.0377287f},
-{0.229717f,0.0795133f,-0.0483917f},{0.225358f,0.0431842f,-0.0646188f},{0.236481f,0.00685524f,-0.0839372f},
-{0.261654f,-0.023943f,-0.103878f},{0.299784f,-0.0445217f,-0.121626f},{0.339278f,-0.1033f,-0.104625f},
-{0.40326f,-0.0938584f,-0.108657f},{0.458827f,-0.066971f,-0.104285f},{0.493724f,-0.0267311f,-0.0911008f},
-{0.5f,0.020735f,-0.0697199f},{0.47804f,0.068201f,-0.0435093f},{0.435242f,0.108441f,-0.0180731f},
-{0.380135f,0.135328f,0.00212642f},{0.319193f,0.14477f,0.0158355f},{0.259542f,0.135328f,0.0221782f},
-{0.211448f,0.108441f,0.0183685f},{0.184369f,0.0682011f,0.0031685f},{0.180904f,0.0207349f,-0.0201245f},
-{0.197459f,-0.0267312f,-0.0464986f},{0.230533f,-0.066971f,-0.0718127f},{0.278897f,-0.0938584f,-0.0921433f},
-{0.331281f,-0.14f,-0.0568862f},{0.396099f,-0.129781f,-0.0579084f},{0.450089f,-0.100678f,-0.050944f},
-{0.481864f,-0.0571228f,-0.0363563f},{0.48513f,-0.00574581f,-0.0149238f},{0.461947f,0.0456311f,0.0101581f},
-{0.419991f,0.0891864f,0.0335696f},{0.365921f,0.118289f,0.0519629f},{0.303382f,0.128509f,0.0659771f},
-{0.238494f,0.118289f,0.0750095f},{0.184008f,0.0891864f,0.0734764f},{0.153528f,0.0456311f,0.0572033f},
-{0.151825f,-0.00574587f,0.0300291f},{0.174023f,-0.0571228f,-9.32874e-005f},{0.213722f,-0.100678f,-0.027056f},
-{0.267552f,-0.129781f,-0.0467337f},{-0.279283f,0.0520408f,0.127571f},{-0.291091f,0.101044f,0.0980386f},
-{-0.314344f,0.0969793f,0.0946093f},{-0.331977f,0.0854032f,0.0951078f},{-0.341951f,0.0680782f,0.0990535f},
-{-0.343465f,0.0476421f,0.105775f},{-0.336696f,0.027206f,0.11463f},{-0.322456f,0.00988106f,0.12477f},
-{-0.302072f,-0.0016951f,0.134807f},{-0.277652f,-0.00576013f,0.142958f},{-0.252472f,-0.00169512f,0.147658f},
-{-0.230868f,0.00988104f,0.148074f},{-0.217233f,0.0272059f,0.144161f},{-0.214527f,0.0476421f,0.136514f},
-{-0.223242f,0.0680783f,0.126309f},{-0.241414f,0.0854032f,0.115241f},{-0.265439f,0.0969793f,0.10525f},
-{-0.306765f,0.13379f,0.0561555f},{-0.349583f,0.126279f,0.0517622f},{-0.381449f,0.104889f,0.0547534f},
-{-0.398489f,0.0728766f,0.0633834f},{-0.400159f,0.0351155f,0.0757282f},{-0.388138f,-0.00264553f,0.0910661f},
-{-0.364489f,-0.0346578f,0.108922f},{-0.330591f,-0.0560477f,0.126846f},{-0.287987f,-0.0635589f,0.140574f},
-{-0.241024f,-0.0560477f,0.146878f},{-0.198397f,-0.0346578f,0.145269f},{-0.17056f,-0.00264554f,0.136838f},
-{-0.164573f,0.0351155f,0.122803f},{-0.18101f,0.0728766f,0.104726f},{-0.215025f,0.104889f,0.0852658f},
-{-0.259448f,0.126279f,0.067972f},{-0.322458f,0.145293f,0.00425289f},{-0.381335f,0.135479f,-0.00130134f},
-{-0.4259f,0.107531f,0.00352389f},{-0.448605f,0.0657054f,0.0170174f},{-0.448895f,0.0163682f,0.0354859f},
-{-0.431053f,-0.0329691f,0.0567292f},{-0.399729f,-0.0747951f,0.0799807f},{-0.35711f,-0.102742f,0.102015f},
-{-0.303763f,-0.112556f,0.116832f},{-0.243626f,-0.102742f,0.120643f},{-0.18791f,-0.0747951f,0.114571f},
-{-0.151294f,-0.032969f,0.101662f},{-0.143201f,0.0163682f,0.0838106f},{-0.163332f,0.0657054f,0.0622674f},
-{-0.204947f,0.107531f,0.0393893f},{-0.260449f,0.135479f,0.018813f},{-0.337146f,0.133801f,-0.0513591f},
-{-0.405991f,0.123178f,-0.0596923f},{-0.459809f,0.0929286f,-0.0556713f},{-0.486676f,0.0476564f,-0.039131f},
-{-0.48513f,-0.00574584f,-0.0149238f},{-0.461581f,-0.0591481f,0.0117126f},{-0.423384f,-0.10442f,0.0378093f},
-{-0.374549f,-0.13467f,0.059798f},{-0.316475f,-0.145293f,0.072463f},{-0.253313f,-0.13467f,0.0730645f},
-{-0.196251f,-0.10442f,0.0637669f},{-0.159614f,-0.059148f,0.0486072f},{-0.151825f,-0.00574584f,0.0300291f},
-{-0.171463f,0.0476564f,0.00889002f},{-0.212175f,0.0929286f,-0.0135302f},{-0.269009f,0.123178f,-0.0346653f},
-{0.279283f,0.0520408f,0.127571f},{0.291091f,0.101044f,0.0980386f},{0.314344f,0.0969793f,0.0946093f},
-{0.331977f,0.0854032f,0.0951078f},{0.341951f,0.0680782f,0.0990535f},{0.343465f,0.0476421f,0.105775f},
-{0.336696f,0.027206f,0.11463f},{0.322456f,0.00988106f,0.12477f},{0.302072f,-0.0016951f,0.134807f},
-{0.277652f,-0.00576013f,0.142958f},{0.252472f,-0.00169512f,0.147658f},{0.230868f,0.00988104f,0.148074f},
-{0.217233f,0.0272059f,0.144161f},{0.214527f,0.0476421f,0.136514f},{0.223242f,0.0680782f,0.126309f},
-{0.241414f,0.0854032f,0.115241f},{0.265439f,0.0969793f,0.10525f},{0.306765f,0.13379f,0.0561555f},
-{0.349583f,0.126279f,0.0517622f},{0.381449f,0.104889f,0.0547534f},{0.398489f,0.0728766f,0.0633834f},
-{0.400159f,0.0351155f,0.0757282f},{0.388138f,-0.00264554f,0.0910661f},{0.364489f,-0.0346578f,0.108922f},
-{0.330591f,-0.0560477f,0.126846f},{0.287987f,-0.0635589f,0.140574f},{0.241024f,-0.0560477f,0.146878f},
-{0.198397f,-0.0346578f,0.145269f},{0.17056f,-0.00264554f,0.136838f},{0.164573f,0.0351155f,0.122803f},
-{0.18101f,0.0728766f,0.104726f},{0.215025f,0.104889f,0.0852658f},{0.259448f,0.126279f,0.067972f},
-{0.322458f,0.145293f,0.00425289f},{0.381335f,0.135479f,-0.00130134f},{0.4259f,0.107531f,0.00352389f},
-{0.448605f,0.0657054f,0.0170174f},{0.448896f,0.0163682f,0.0354859f},{0.431053f,-0.0329691f,0.0567292f},
-{0.399729f,-0.0747951f,0.0799807f},{0.35711f,-0.102742f,0.102015f},{0.303763f,-0.112556f,0.116832f},
-{0.243626f,-0.102742f,0.120643f},{0.187909f,-0.0747951f,0.114571f},{0.151294f,-0.032969f,0.101662f},
-{0.143201f,0.0163682f,0.0838106f},{0.163332f,0.0657054f,0.0622674f},{0.204947f,0.107531f,0.0393893f},
-{0.260449f,0.135479f,0.018813f},{0.337146f,0.133801f,-0.0513591f},{0.405991f,0.123178f,-0.0596923f},
-{0.459809f,0.0929286f,-0.0556713f},{0.486676f,0.0476564f,-0.039131f},{0.48513f,-0.00574584f,-0.0149238f},
-{0.461581f,-0.0591481f,0.0117126f},{0.423385f,-0.10442f,0.0378093f},{0.374549f,-0.13467f,0.059798f},
-{0.316475f,-0.145293f,0.072463f},{0.253313f,-0.13467f,0.0730645f},{0.196251f,-0.10442f,0.0637669f},
-{0.159614f,-0.059148f,0.0486072f},{0.151825f,-0.00574584f,0.0300291f},{0.171463f,0.0476564f,0.00889002f},
-{0.212175f,0.0929286f,-0.0135302f},{0.269009f,0.123178f,-0.0346653f}
-},
-
-//lid3
-{
-{-0.354934f,0.0573656f,-0.132288f},{-0.35381f,-0.000170749f,-0.143506f},{-0.381882f,0.0038597f,-0.148337f},
-{-0.406389f,0.0153374f,-0.149276f},{-0.422778f,0.032515f,-0.145954f},{-0.427813f,0.0527773f,-0.138659f},
-{-0.420534f,0.0730396f,-0.128481f},{-0.402489f,0.0902173f,-0.117185f},{-0.377147f,0.101695f,-0.106769f},
-{-0.348936f,0.105725f,-0.098952f},{-0.322337f,0.101695f,-0.0948513f},{-0.301181f,0.0902172f,-0.0948892f},
-{-0.288106f,0.0730396f,-0.0988492f},{-0.28438f,0.0527773f,-0.106035f},{-0.290143f,0.032515f,-0.11543f},
-{-0.304767f,0.0153374f,-0.125765f},{-0.326835f,0.00385966f,-0.135594f},{-0.34734f,-0.0581242f,-0.131498f},
-{-0.398136f,-0.0506769f,-0.137744f},{-0.443184f,-0.0294689f,-0.13778f},{-0.473215f,0.00227113f,-0.130937f},
-{-0.481555f,0.039711f,-0.117333f},{-0.466781f,0.077151f,-0.0988643f},{-0.432955f,0.108891f,-0.0790885f},
-{-0.387165f,0.130099f,-0.0617732f},{-0.337041f,0.137546f,-0.0495308f},{-0.290066f,0.130099f,-0.0438717f},
-{-0.253281f,0.108891f,-0.0455929f},{-0.231674f,0.0771509f,-0.0543229f},{-0.226688f,0.039711f,-0.0683984f},
-{-0.237222f,0.00227109f,-0.0856564f},{-0.26199f,-0.0294689f,-0.103695f},{-0.299775f,-0.0506769f,-0.119748f},
-{-0.338795f,-0.107672f,-0.0983158f},{-0.401925f,-0.0979416f,-0.102189f},{-0.456905f,-0.070232f,-0.0992443f},
-{-0.492207f,-0.0287616f,-0.0890065f},{-0.5f,0.020156f,-0.0714432f},{-0.479892f,0.0690737f,-0.0489261f},
-{-0.438293f,0.110544f,-0.0262122f},{-0.383453f,0.138254f,-0.00747452f},{-0.322322f,0.147984f,0.00582876f},
-{-0.262487f,0.138254f,0.0126678f},{-0.214117f,0.110544f,0.0103978f},{-0.186347f,0.0690736f,-0.00228616f},
-{-0.181908f,0.020156f,-0.0226702f},{-0.197763f,-0.0287616f,-0.0462757f},{-0.230646f,-0.070232f,-0.0690678f},
-{-0.278912f,-0.0979416f,-0.0872364f},{-0.331209f,-0.141271f,-0.0482373f},{-0.395084f,-0.130739f,-0.0496675f},
-{-0.44825f,-0.100746f,-0.0446528f},{-0.480164f,-0.0558588f,-0.0332809f},{-0.484745f,-0.00291071f,-0.0156133f},
-{-0.463326f,0.0500373f,0.00600839f},{-0.422637f,0.0949245f,0.0268506f},{-0.369065f,0.124917f,0.0437058f},
-{-0.30661f,0.135449f,0.0570844f},{-0.241634f,0.124917f,0.0664523f},{-0.186655f,0.0949245f,0.0665538f},
-{-0.155078f,0.0500372f,0.053143f},{-0.152135f,-0.00291078f,0.0293266f},{-0.173756f,-0.0558588f,0.00241507f},
-{-0.213691f,-0.100746f,-0.0216839f},{-0.267826f,-0.130739f,-0.0391481f},{0.354934f,0.0573656f,-0.132288f},
-{0.35381f,-0.000170749f,-0.143506f},{0.381882f,0.00385971f,-0.148337f},{0.406389f,0.0153374f,-0.149276f},
-{0.422778f,0.032515f,-0.145954f},{0.427813f,0.0527773f,-0.138659f},{0.420534f,0.0730396f,-0.128481f},
-{0.402489f,0.0902173f,-0.117185f},{0.377147f,0.101695f,-0.106769f},{0.348936f,0.105725f,-0.098952f},
-{0.322337f,0.101695f,-0.0948513f},{0.30118f,0.0902172f,-0.0948892f},{0.288106f,0.0730396f,-0.0988492f},
-{0.28438f,0.0527773f,-0.106035f},{0.290143f,0.032515f,-0.11543f},{0.304766f,0.0153374f,-0.125765f},
-{0.326835f,0.00385966f,-0.135594f},{0.34734f,-0.0581242f,-0.131498f},{0.398136f,-0.0506769f,-0.137744f},
-{0.443184f,-0.0294689f,-0.13778f},{0.473215f,0.00227113f,-0.130937f},{0.481555f,0.039711f,-0.117333f},
-{0.466781f,0.077151f,-0.0988643f},{0.432955f,0.108891f,-0.0790885f},{0.387165f,0.130099f,-0.0617732f},
-{0.337041f,0.137546f,-0.0495308f},{0.290066f,0.130099f,-0.0438717f},{0.253281f,0.108891f,-0.0455929f},
-{0.231674f,0.0771509f,-0.0543229f},{0.226688f,0.039711f,-0.0683984f},{0.237222f,0.00227109f,-0.0856564f},
-{0.26199f,-0.0294689f,-0.103695f},{0.299775f,-0.0506769f,-0.119748f},{0.338795f,-0.107672f,-0.0983158f},
-{0.401925f,-0.0979416f,-0.102189f},{0.456905f,-0.070232f,-0.0992443f},{0.492207f,-0.0287616f,-0.0890065f},
-{0.5f,0.020156f,-0.0714432f},{0.479892f,0.0690737f,-0.0489261f},{0.438293f,0.110544f,-0.0262122f},
-{0.383453f,0.138254f,-0.00747452f},{0.322321f,0.147984f,0.00582876f},{0.262487f,0.138254f,0.0126678f},
-{0.214117f,0.110544f,0.0103978f},{0.186347f,0.0690736f,-0.00228616f},{0.181908f,0.020156f,-0.0226702f},
-{0.197763f,-0.0287616f,-0.0462757f},{0.230646f,-0.070232f,-0.0690678f},{0.278912f,-0.0979416f,-0.0872364f},
-{0.331209f,-0.141271f,-0.0482373f},{0.395083f,-0.130739f,-0.0496675f},{0.44825f,-0.100746f,-0.0446528f},
-{0.480164f,-0.0558588f,-0.0332809f},{0.484745f,-0.00291071f,-0.0156133f},{0.463326f,0.0500373f,0.00600839f},
-{0.422637f,0.0949245f,0.0268506f},{0.369065f,0.124917f,0.0437058f},{0.30661f,0.135449f,0.0570844f},
-{0.241634f,0.124917f,0.0664523f},{0.186655f,0.0949245f,0.0665538f},{0.155078f,0.0500372f,0.053143f},
-{0.152135f,-0.00291078f,0.0293266f},{0.173756f,-0.0558588f,0.00241507f},{0.213691f,-0.100746f,-0.0216839f},
-{0.267826f,-0.130739f,-0.0391481f},{-0.277987f,0.0386883f,0.132131f},{-0.287513f,0.0910388f,0.106426f},
-{-0.310982f,0.0868129f,0.102243f},{-0.32908f,0.0747783f,0.101479f},{-0.339832f,0.0567673f,0.103884f},
-{-0.342399f,0.0355218f,0.10907f},{-0.336808f,0.0142763f,0.116615f},{-0.323672f,-0.00373473f,0.125754f},
-{-0.304119f,-0.0157693f,0.135112f},{-0.280073f,-0.0199953f,0.142976f},{-0.254669f,-0.0157693f,0.147932f},
-{-0.232214f,-0.00373472f,0.149276f},{-0.217264f,0.0142763f,0.146921f},{-0.21312f,0.0355218f,0.141185f},
-{-0.22065f,0.0567673f,0.13281f},{-0.238105f,0.0747783f,0.123086f},{-0.261851f,0.0868129f,0.113735f},
-{-0.302723f,0.129086f,0.0681242f},{-0.345325f,0.121278f,0.0626405f},{-0.37736f,0.0990408f,0.0633087f},
-{-0.395498f,0.0657608f,0.068684f},{-0.399073f,0.0265043f,0.0776627f},{-0.389194f,-0.0127523f,0.0902372f},
-{-0.367429f,-0.0460323f,0.105995f},{-0.33493f,-0.0682694f,0.122262f},{-0.293123f,-0.076078f,0.134908f},
-{-0.246114f,-0.0682694f,0.141237f},{-0.202283f,-0.0460323f,0.141245f},{-0.172133f,-0.0127523f,0.136049f},
-{-0.163456f,0.0265042f,0.126224f},{-0.177871f,0.0657607f,0.11221f},{-0.21106f,0.0990408f,0.0956785f},
-{-0.255442f,0.121278f,0.0798278f},{-0.318575f,0.147039f,0.018955f},{-0.376353f,0.136836f,0.0126824f},
-{-0.420545f,0.107782f,0.0146494f},{-0.444704f,0.0642997f,0.0232859f},{-0.447788f,0.0130085f,0.036352f},
-{-0.432737f,-0.0382826f,0.0530567f},{-0.403325f,-0.0817651f,0.0727878f},{-0.361725f,-0.110819f,0.0920003f},
-{-0.308949f,-0.121022f,0.105077f},{-0.249036f,-0.110819f,0.109041f},{-0.192594f,-0.0817651f,0.105453f},
-{-0.153797f,-0.0382826f,0.0971894f},{-0.142695f,0.0130085f,0.0852546f},{-0.160501f,0.0642996f,0.0694309f},
-{-0.201377f,0.107782f,0.0508067f},{-0.256994f,0.136836f,0.0326489f},{-0.333621f,0.142162f,-0.0362204f},
-{-0.400982f,0.131119f,-0.0447669f},{-0.454372f,0.0996714f,-0.0438248f},{-0.483064f,0.0526063f,-0.0330922f},
-{-0.484745f,-0.00291076f,-0.0156133f},{-0.464001f,-0.0584278f,0.00516931f},{-0.42714f,-0.105493f,0.0266546f},
-{-0.378398f,-0.136941f,0.0451392f},{-0.320159f,-0.147984f,0.0560012f},{-0.257181f,-0.136941f,0.0573072f},
-{-0.200088f,-0.105493f,0.0513338f},{-0.162235f,-0.0584278f,0.0415487f},{-0.152135f,-0.00291073f,0.0293265f},
-{-0.169683f,0.0526063f,0.0142241f},{-0.209585f,0.0996715f,-0.00340899f},{-0.266299f,0.131119f,-0.0212809f},
-{0.277987f,0.0386883f,0.132131f},{0.287513f,0.0910388f,0.106426f},{0.310982f,0.0868129f,0.102243f},
-{0.32908f,0.0747783f,0.101479f},{0.339832f,0.0567673f,0.103884f},{0.342399f,0.0355218f,0.10907f},
-{0.336808f,0.0142763f,0.116615f},{0.323672f,-0.00373473f,0.125754f},{0.304119f,-0.0157693f,0.135112f},
-{0.280073f,-0.0199953f,0.142976f},{0.254669f,-0.0157693f,0.147932f},{0.232214f,-0.00373472f,0.149276f},
-{0.217264f,0.0142763f,0.146921f},{0.21312f,0.0355218f,0.141185f},{0.22065f,0.0567673f,0.13281f},
-{0.238105f,0.0747783f,0.123086f},{0.261851f,0.0868129f,0.113735f},{0.302723f,0.129086f,0.0681242f},
-{0.345325f,0.121278f,0.0626405f},{0.37736f,0.0990408f,0.0633087f},{0.395498f,0.0657608f,0.068684f},
-{0.399073f,0.0265043f,0.0776627f},{0.389194f,-0.0127523f,0.0902372f},{0.367429f,-0.0460323f,0.105995f},
-{0.33493f,-0.0682694f,0.122262f},{0.293123f,-0.076078f,0.134908f},{0.246114f,-0.0682694f,0.141237f},
-{0.202283f,-0.0460323f,0.141246f},{0.172133f,-0.0127523f,0.136049f},{0.163456f,0.0265042f,0.126224f},
-{0.177871f,0.0657607f,0.11221f},{0.21106f,0.0990408f,0.0956785f},{0.255442f,0.121278f,0.0798278f},
-{0.318575f,0.147039f,0.018955f},{0.376353f,0.136836f,0.0126824f},{0.420545f,0.107782f,0.0146494f},
-{0.444704f,0.0642997f,0.0232859f},{0.447787f,0.0130085f,0.036352f},{0.432737f,-0.0382826f,0.0530567f},
-{0.403325f,-0.0817651f,0.0727878f},{0.361725f,-0.110819f,0.0920003f},{0.308949f,-0.121022f,0.105077f},
-{0.249036f,-0.110819f,0.109041f},{0.192594f,-0.0817651f,0.105453f},{0.153797f,-0.0382825f,0.0971894f},
-{0.142695f,0.0130085f,0.0852546f},{0.160501f,0.0642996f,0.0694309f},{0.201377f,0.107782f,0.0508067f},
-{0.256994f,0.136836f,0.0326489f},{0.333621f,0.142162f,-0.0362204f},{0.400982f,0.131119f,-0.0447669f},
-{0.454372f,0.0996714f,-0.0438248f},{0.483064f,0.0526063f,-0.0330922f},{0.484745f,-0.00291076f,-0.0156133f},
-{0.464001f,-0.0584278f,0.00516931f},{0.42714f,-0.105493f,0.0266546f},{0.378398f,-0.136941f,0.0451392f},
-{0.320159f,-0.147984f,0.0560012f},{0.257181f,-0.136941f,0.0573072f},{0.200088f,-0.105493f,0.0513338f},
-{0.162235f,-0.0584278f,0.0415487f},{0.152135f,-0.00291073f,0.0293265f},{0.169683f,0.0526063f,0.0142241f},
-{0.209585f,0.0996715f,-0.00340899f},{0.266299f,0.131119f,-0.0212809f}
-},
-
-//lid2
-{
-{-0.35492f,0.0490122f,-0.136664f},{-0.352441f,-0.00933507f,-0.143152f},{-0.38041f,-0.00517772f,-0.148025f},
-{-0.405069f,0.00666169f,-0.149782f},{-0.421938f,0.0243805f,-0.147992f},{-0.427713f,0.0452814f,-0.142654f},
-{-0.421216f,0.0661823f,-0.134438f},{-0.403749f,0.0839011f,-0.124699f},{-0.378666f,0.0957405f,-0.115177f},
-{-0.35044f,0.0998979f,-0.107521f},{-0.323665f,0.0957405f,-0.102911f},{-0.302226f,0.0839011f,-0.101906f},
-{-0.288762f,0.0661823f,-0.104479f},{-0.284557f,0.0452814f,-0.110146f},{-0.289822f,0.0243805f,-0.118063f},
-{-0.304004f,0.00666169f,-0.127075f},{-0.32572f,-0.00517772f,-0.13585f},{-0.345275f,-0.0662611f,-0.126649f},
-{-0.395652f,-0.0585793f,-0.132679f},{-0.44069f,-0.0367029f,-0.13407f},{-0.471557f,-0.00396281f,-0.130108f},
-{-0.481531f,0.0346569f,-0.12031f},{-0.468499f,0.0732766f,-0.105598f},{-0.435716f,0.106017f,-0.0886244f},
-{-0.390041f,0.127893f,-0.0727466f},{-0.339539f,0.135575f,-0.0606899f},{-0.292198f,0.127893f,-0.0541963f},
-{-0.255096f,0.106017f,-0.0541648f},{-0.232923f,0.0732764f,-0.0604336f},{-0.22704f,0.0346569f,-0.0718106f},
-{-0.236654f,-0.00396281f,-0.0865268f},{-0.26078f,-0.0367029f,-0.102256f},{-0.298141f,-0.0585793f,-0.116287f},
-{-0.336804f,-0.1131f,-0.0896059f},{-0.399229f,-0.103063f,-0.0934247f},{-0.453895f,-0.0744799f,-0.0923695f},
-{-0.490081f,-0.0317029f,-0.0858416f},{-0.5f,0.0187562f,-0.0730349f},{-0.482199f,0.0692151f,-0.0551062f},
-{-0.441819f,0.111992f,-0.0357056f},{-0.386863f,0.140575f,-0.0186269f},{-0.32513f,0.150612f,-0.00569723f},
-{-0.265008f,0.140575f,0.00175248f},{-0.216493f,0.111992f,0.00131805f},{-0.188031f,0.0692151f,-0.0082449f},
-{-0.182283f,0.018756f,-0.0249265f},{-0.196942f,-0.0317029f,-0.045005f},{-0.229284f,-0.0744799f,-0.0646411f},
-{-0.277356f,-0.103063f,-0.080166f},{-0.329818f,-0.14272f,-0.0368107f},{-0.392866f,-0.131856f,-0.0388037f},
-{-0.445457f,-0.100918f,-0.0362398f},{-0.477976f,-0.0546165f,-0.0288117f},{-0.484459f,0.0f,-0.0157477f},
-{-0.465204f,0.0546165f,0.00161825f},{-0.425725f,0.100918f,0.0193463f},{-0.372221f,0.131856f,0.034428f},
-{-0.309484f,0.14272f,0.0470423f},{-0.244464f,0.131856f,0.0565813f},{-0.189292f,0.100918f,0.0583469f},
-{-0.156703f,0.0546165f,0.048326f},{-0.152152f,0.0f,0.0288029f},{-0.172617f,-0.0546165f,0.00608634f},
-{-0.212389f,-0.100918f,-0.0143389f},{-0.266725f,-0.131856f,-0.0290232f},{0.35492f,0.0490122f,-0.136664f},
-{0.352441f,-0.00933507f,-0.143152f},{0.38041f,-0.00517772f,-0.148025f},{0.405069f,0.00666169f,-0.149782f},
-{0.421938f,0.0243805f,-0.147992f},{0.427713f,0.0452814f,-0.142654f},{0.421216f,0.0661823f,-0.134438f},
-{0.403749f,0.0839011f,-0.124699f},{0.378666f,0.0957405f,-0.115177f},{0.35044f,0.0998979f,-0.107521f},
-{0.323665f,0.0957405f,-0.102911f},{0.302226f,0.0839011f,-0.101906f},{0.288762f,0.0661823f,-0.104479f},
-{0.284557f,0.0452814f,-0.110146f},{0.289822f,0.0243805f,-0.118063f},{0.304004f,0.00666169f,-0.127075f},
-{0.32572f,-0.00517772f,-0.13585f},{0.345275f,-0.0662611f,-0.126649f},{0.395652f,-0.0585793f,-0.132679f},
-{0.44069f,-0.0367029f,-0.13407f},{0.471557f,-0.00396281f,-0.130108f},{0.481531f,0.0346569f,-0.12031f},
-{0.468499f,0.0732766f,-0.105598f},{0.435716f,0.106017f,-0.0886244f},{0.390041f,0.127893f,-0.0727466f},
-{0.339539f,0.135575f,-0.0606899f},{0.292198f,0.127893f,-0.0541963f},{0.255096f,0.106017f,-0.0541648f},
-{0.232923f,0.0732764f,-0.0604336f},{0.22704f,0.0346569f,-0.0718106f},{0.236655f,-0.00396281f,-0.0865268f},
-{0.26078f,-0.0367029f,-0.102256f},{0.298142f,-0.0585793f,-0.116287f},{0.336804f,-0.1131f,-0.0896059f},
-{0.399229f,-0.103063f,-0.0934246f},{0.453895f,-0.0744799f,-0.0923695f},{0.490081f,-0.0317029f,-0.0858416f},
-{0.5f,0.0187562f,-0.0730349f},{0.482199f,0.0692151f,-0.0551062f},{0.441819f,0.111992f,-0.0357056f},
-{0.386863f,0.140575f,-0.018627f},{0.32513f,0.150612f,-0.00569723f},{0.265008f,0.140575f,0.00175248f},
-{0.216493f,0.111992f,0.00131805f},{0.188031f,0.0692151f,-0.0082449f},{0.182283f,0.018756f,-0.0249265f},
-{0.196942f,-0.0317029f,-0.045005f},{0.229284f,-0.0744799f,-0.0646411f},{0.277356f,-0.103063f,-0.0801659f},
-{0.329818f,-0.14272f,-0.0368107f},{0.392866f,-0.131856f,-0.0388037f},{0.445457f,-0.100918f,-0.0362398f},
-{0.477976f,-0.0546165f,-0.0288117f},{0.484459f,0.0f,-0.0157477f},{0.465204f,0.0546165f,0.00161825f},
-{0.425725f,0.100918f,0.0193463f},{0.372221f,0.131856f,0.034428f},{0.309485f,0.14272f,0.0470423f},
-{0.244464f,0.131856f,0.0565813f},{0.189292f,0.100918f,0.0583469f},{0.156704f,0.0546165f,0.048326f},
-{0.152152f,0.0f,0.0288029f},{0.172617f,-0.0546165f,0.00608634f},{0.212389f,-0.100918f,-0.0143389f},
-{0.266725f,-0.131856f,-0.0290232f},{-0.277716f,0.00836844f,0.14043f},{-0.280742f,0.0653898f,0.122636f},
-{-0.304826f,0.0610009f,0.117201f},{-0.324257f,0.0485021f,0.114166f},{-0.336986f,0.0297963f,0.11374f},
-{-0.341972f,0.00773147f,0.11596f},{-0.338904f,-0.0143335f,0.120679f},{-0.328031f,-0.0330392f,0.127263f},
-{-0.310188f,-0.0455381f,0.134519f},{-0.287054f,-0.0499271f,0.141103f},{-0.26152f,-0.0455381f,0.146069f},
-{-0.23771f,-0.0330392f,0.149017f},{-0.220253f,-0.0143335f,0.149782f},{-0.21295f,0.00773147f,0.148127f},
-{-0.217451f,0.0297963f,0.143878f},{-0.232678f,0.0485021f,0.137394f},{-0.255266f,0.0610009f,0.129799f},
-{-0.293369f,0.112456f,0.0912079f},{-0.336341f,0.104346f,0.0834187f},{-0.369703f,0.0812518f,0.0796233f},
-{-0.390712f,0.0466881f,0.0791105f},{-0.398299f,0.00591745f,0.0819687f},{-0.392462f,-0.0348534f,0.0889353f},
-{-0.373867f,-0.0694169f,0.09953f},{-0.343481f,-0.0925117f,0.111166f},{-0.303004f,-0.100622f,0.120699f},
-{-0.256454f,-0.0925117f,0.126708f},{-0.211359f,-0.0694169f,0.129889f},{-0.177502f,-0.0348532f,0.131224f},
-{-0.163381f,0.00591745f,0.13016f},{-0.172658f,0.0466881f,0.125f},{-0.202749f,0.0812518f,0.115147f},
-{-0.24612f,0.104346f,0.102663f},{-0.309223f,0.142402f,0.0478398f},{-0.365947f,0.131806f,0.0395624f},
-{-0.410513f,0.101631f,0.0358015f},{-0.438152f,0.0564719f,0.0354415f},{-0.446767f,0.00320249f,0.0385313f},
-{-0.436696f,-0.0500671f,0.0461625f},{-0.409985f,-0.0952267f,0.0578119f},{-0.369058f,-0.125401f,0.0700902f},
-{-0.316548f,-0.135997f,0.0790487f},{-0.257432f,-0.125401f,0.0834509f},{-0.201015f,-0.0952267f,0.0851812f},
-{-0.159359f,-0.0500669f,0.0863865f},{-0.142616f,0.00320249f,0.0865623f},{-0.154858f,0.0564719f,0.0828629f},
-{-0.192921f,0.101632f,0.0734676f},{-0.248087f,0.131806f,0.0602875f},{-0.324881f,0.150669f,-0.00479203f},
-{-0.39012f,0.1392f,-0.0144446f},{-0.443458f,0.106539f,-0.0197515f},{-0.476273f,0.0576585f,-0.0201944f},
-{-0.484459f,0.0f,-0.0157477f},{-0.468884f,-0.0576585f,-0.00684364f},{-0.433719f,-0.106539f,0.00467625f},
-{-0.38391f,-0.1392f,0.0154431f},{-0.32438f,-0.150669f,0.0225054f},{-0.261719f,-0.1392f,0.0255482f},
-{-0.205523f,-0.106539f,0.0267245f},{-0.166441f,-0.0576583f,0.0280126f},{-0.152152f,0.0f,0.0288029f},
-{-0.165015f,0.0576585f,0.0263835f},{-0.202543f,0.106539f,0.0188847f},{-0.258754f,0.1392f,0.00739763f},
-{0.277716f,0.00836844f,0.14043f},{0.280742f,0.0653898f,0.122636f},{0.304826f,0.0610009f,0.117201f},
-{0.324257f,0.0485021f,0.114166f},{0.336986f,0.0297963f,0.11374f},{0.341972f,0.00773147f,0.11596f},
-{0.338904f,-0.0143335f,0.120679f},{0.328031f,-0.0330392f,0.127263f},{0.310188f,-0.0455381f,0.134519f},
-{0.287054f,-0.0499271f,0.141103f},{0.26152f,-0.0455381f,0.146069f},{0.23771f,-0.0330392f,0.149017f},
-{0.220253f,-0.0143335f,0.149782f},{0.21295f,0.00773147f,0.148127f},{0.217451f,0.0297963f,0.143878f},
-{0.232678f,0.0485021f,0.137394f},{0.255266f,0.0610009f,0.129799f},{0.293369f,0.112456f,0.0912079f},
-{0.336341f,0.104346f,0.0834187f},{0.369703f,0.0812518f,0.0796233f},{0.390712f,0.0466881f,0.0791105f},
-{0.398299f,0.00591745f,0.0819687f},{0.392462f,-0.0348534f,0.0889353f},{0.373867f,-0.0694169f,0.09953f},
-{0.343481f,-0.0925117f,0.111166f},{0.303004f,-0.100622f,0.120699f},{0.256454f,-0.0925117f,0.126708f},
-{0.211359f,-0.0694169f,0.129889f},{0.177502f,-0.0348532f,0.131224f},{0.163381f,0.00591745f,0.13016f},
-{0.172658f,0.0466881f,0.125f},{0.202749f,0.0812518f,0.115147f},{0.24612f,0.104346f,0.102663f},
-{0.309223f,0.142402f,0.0478398f},{0.365947f,0.131806f,0.0395624f},{0.410513f,0.101631f,0.0358015f},
-{0.438152f,0.0564719f,0.0354415f},{0.446767f,0.00320249f,0.0385313f},{0.436696f,-0.0500671f,0.0461625f},
-{0.409985f,-0.0952267f,0.0578119f},{0.369058f,-0.125401f,0.0700902f},{0.316548f,-0.135997f,0.0790487f},
-{0.257432f,-0.125401f,0.0834509f},{0.201015f,-0.0952267f,0.0851812f},{0.159359f,-0.0500669f,0.0863865f},
-{0.142616f,0.00320249f,0.0865623f},{0.154858f,0.0564719f,0.082863f},{0.192921f,0.101632f,0.0734676f},
-{0.248087f,0.131806f,0.0602875f},{0.324881f,0.150669f,-0.00479203f},{0.39012f,0.1392f,-0.0144446f},
-{0.443458f,0.106539f,-0.0197515f},{0.476273f,0.0576585f,-0.0201944f},{0.468884f,-0.0576585f,-0.00684364f},
-{0.433719f,-0.106539f,0.00467625f},{0.38391f,-0.1392f,0.0154431f},{0.32438f,-0.150669f,0.0225054f},
-{0.261719f,-0.1392f,0.0255482f},{0.205523f,-0.106539f,0.0267245f},{0.166441f,-0.0576583f,0.0280126f},
-{0.165015f,0.0576585f,0.0263835f},{0.202543f,0.106539f,0.0188847f},{0.258754f,0.1392f,0.00739763f}
-},
-
-//lid 1
-{
-{-0.353951f,0.019129f,-0.142995f},{-0.348688f,-0.0395605f,-0.13725f},{-0.37644f,-0.0352039f,-0.142413f},
-{-0.401426f,-0.0227972f,-0.146432f},{-0.419356f,-0.00422938f,-0.148674f},{-0.426804f,0.0176729f,-0.148449f},
-{-0.422104f,0.0395752f,-0.145383f},{-0.405972f,0.058143f,-0.139773f},{-0.38145f,0.0705497f,-0.132638f},
-{-0.353099f,0.0749063f,-0.125394f},{-0.325786f,0.0705497f,-0.119389f},{-0.303578f,0.058143f,-0.115579f},
-{-0.289167f,0.0395752f,-0.114452f},{-0.283899f,0.0176729f,-0.116049f},{-0.288135f,-0.00422939f,-0.119964f},
-{-0.301449f,-0.0227972f,-0.125397f},{-0.322478f,-0.0352039f,-0.13141f},{-0.340315f,-0.0922273f,-0.10959f},
-{-0.389728f,-0.0841773f,-0.115854f},{-0.434689f,-0.0612528f,-0.121228f},{-0.467406f,-0.0269439f,-0.124791f},
-{-0.481165f,0.0135262f,-0.124789f},{-0.472339f,0.0539964f,-0.119913f},{-0.442178f,0.0883053f,-0.110465f},
-{-0.396778f,0.11123f,-0.0984804f},{-0.345153f,0.11928f,-0.0867588f},{-0.296599f,0.11123f,-0.0776884f},
-{-0.258429f,0.0883053f,-0.0726898f},{-0.234746f,0.0539964f,-0.0723075f},{-0.226799f,0.0135262f,-0.076421f},
-{-0.234523f,-0.0269439f,-0.0840859f},{-0.257485f,-0.0612528f,-0.0933808f},{-0.294094f,-0.0841773f,-0.102202f},
-{-0.332059f,-0.130853f,-0.0636959f},{-0.392836f,-0.120335f,-0.0686586f},{-0.446727f,-0.0903832f,-0.0732333f},
-{-0.484947f,-0.0455564f,-0.0763222f},{-0.5f,0.00732036f,-0.0756228f},{-0.488046f,0.0601971f,-0.0697015f},
-{-0.450962f,0.105024f,-0.0593253f},{-0.395754f,0.134976f,-0.0468043f},{-0.332196f,0.145494f,-0.0345443f},
-{-0.270886f,0.134976f,-0.02476f},{-0.221613f,0.105024f,-0.0196705f},{-0.191182f,0.0601971f,-0.0206756f},
-{-0.182158f,0.00732032f,-0.0273943f},{-0.194127f,-0.0455565f,-0.0377315f},{-0.225565f,-0.0903832f,-0.0486242f},
-{-0.273503f,-0.120335f,-0.0574568f},{-0.325519f,-0.149558f,-0.00603217f},{-0.386779f,-0.138174f,-0.0106294f},
-{-0.438138f,-0.105754f,-0.0150412f},{-0.472319f,-0.0572334f,-0.0176549f},{-0.483755f,3.0617e-008f,-0.0160775f},
-{-0.470309f,0.0572334f,-0.0097539f},{-0.434281f,0.105754f,-0.000563411f},{-0.381004f,0.138174f,0.00963235f},
-{-0.317226f,0.149558f,0.0205644f},{-0.251709f,0.138174f,0.031268f},{-0.195747f,0.105754f,0.0380775f},
-{-0.160203f,0.0572334f,0.0373458f},{-0.151073f,-4.4012e-008f,0.0293253f},{-0.16826f,-0.0572335f,0.0178688f},
-{-0.207633f,-0.105754f,0.00716789f},{-0.262789f,-0.138174f,-0.000655924f},{0.353951f,0.019129f,-0.142995f},
-{0.348688f,-0.0395605f,-0.13725f},{0.37644f,-0.0352039f,-0.142413f},{0.401426f,-0.0227972f,-0.146432f},
-{0.419356f,-0.00422938f,-0.148674f},{0.426804f,0.0176729f,-0.148449f},{0.422103f,0.0395752f,-0.145383f},
-{0.405972f,0.058143f,-0.139773f},{0.381449f,0.0705497f,-0.132638f},{0.353099f,0.0749063f,-0.125394f},
-{0.325786f,0.0705497f,-0.119389f},{0.303578f,0.058143f,-0.115579f},{0.289167f,0.0395752f,-0.114452f},
-{0.283899f,0.0176729f,-0.116049f},{0.288135f,-0.00422939f,-0.119964f},{0.301449f,-0.0227972f,-0.125397f},
-{0.322478f,-0.0352039f,-0.13141f},{0.340315f,-0.0922273f,-0.10959f},{0.389728f,-0.0841773f,-0.115854f},
-{0.434689f,-0.0612528f,-0.121228f},{0.467405f,-0.0269439f,-0.124791f},{0.481165f,0.0135262f,-0.124789f},
-{0.472339f,0.0539964f,-0.119913f},{0.442178f,0.0883053f,-0.110465f},{0.396778f,0.11123f,-0.0984804f},
-{0.345153f,0.11928f,-0.0867588f},{0.296598f,0.11123f,-0.0776884f},{0.258429f,0.0883053f,-0.0726898f},
-{0.234746f,0.0539964f,-0.0723075f},{0.226799f,0.0135262f,-0.076421f},{0.234523f,-0.0269439f,-0.0840859f},
-{0.257485f,-0.0612528f,-0.0933808f},{0.294094f,-0.0841773f,-0.102202f},{0.332059f,-0.130853f,-0.0636959f},
-{0.392836f,-0.120335f,-0.0686586f},{0.446727f,-0.0903832f,-0.0732333f},{0.484947f,-0.0455564f,-0.0763222f},
-{0.5f,0.00732036f,-0.0756228f},{0.488046f,0.0601971f,-0.0697015f},{0.450962f,0.105024f,-0.0593253f},
-{0.395754f,0.134976f,-0.0468043f},{0.332195f,0.145494f,-0.0345443f},{0.270886f,0.134976f,-0.02476f},
-{0.221613f,0.105024f,-0.0196705f},{0.191182f,0.0601971f,-0.0206756f},{0.182158f,0.00732032f,-0.0273943f},
-{0.194127f,-0.0455565f,-0.0377315f},{0.225565f,-0.0903832f,-0.0486242f},{0.273503f,-0.120335f,-0.0574568f},
-{0.325519f,-0.149558f,-0.00603217f},{0.386779f,-0.138174f,-0.0106294f},{0.438138f,-0.105754f,-0.0150412f},
-{0.472319f,-0.0572334f,-0.0176549f},{0.483755f,3.0617e-008f,-0.0160775f},{0.470309f,0.0572334f,-0.0097539f},
-{0.434281f,0.105754f,-0.000563411f},{0.381004f,0.138174f,0.00963235f},{0.317226f,0.149558f,0.0205644f},
-{0.251709f,0.138174f,0.031268f},{0.195747f,0.105754f,0.0380775f},{0.160203f,0.0572334f,0.0373458f},
-{0.151073f,-4.4012e-008f,0.0293253f},{0.16826f,-0.0572335f,0.0178688f},{0.207633f,-0.105754f,0.00716789f},
-{0.262789f,-0.138174f,-0.000655924f},{-0.278685f,-0.0184455f,0.142104f},{-0.276782f,0.0402249f,0.131836f},
-{-0.301275f,0.0358657f,0.125528f},{-0.32166f,0.023452f,0.120724f},{-0.335761f,0.00487346f,0.117933f},
-{-0.342327f,-0.0170414f,0.117442f},{-0.340777f,-0.0389562f,0.119308f},{-0.331139f,-0.0575348f,0.123149f},
-{-0.314161f,-0.0699485f,0.128161f},{-0.291535f,-0.0743076f,0.133481f},{-0.266105f,-0.0699485f,0.138543f},
-{-0.241813f,-0.0575347f,0.143068f},{-0.223134f,-0.0389562f,0.146692f},{-0.213979f,-0.0170414f,0.148674f},
-{-0.216437f,0.00487348f,0.148103f},{-0.22997f,0.023452f,0.144568f},{-0.251555f,0.0358657f,0.138674f},
-{-0.286428f,0.0927713f,0.106668f},{-0.329876f,0.0847167f,0.0969867f},{-0.364411f,0.0617791f,0.0897744f},
-{-0.387562f,0.0274504f,0.0847431f},{-0.397904f,-0.0130429f,0.0824777f},{-0.394525f,-0.0535363f,0.0840476f},
-{-0.377363f,-0.0878649f,0.089252f},{-0.347459f,-0.110803f,0.096282f},{-0.307253f,-0.118857f,0.103236f},
-{-0.261203f,-0.110803f,0.1096f},{-0.216225f,-0.0878649f,0.116136f},{-0.180992f,-0.0535363f,0.123303f},
-{-0.163781f,-0.0130429f,0.129625f},{-0.169441f,0.0274504f,0.131883f},{-0.196926f,0.0617791f,0.127674f},
-{-0.239231f,0.0847167f,0.117999f},{-0.30165f,0.131194f,0.068821f},{-0.357946f,0.12067f,0.0586132f},
-{-0.402983f,0.0907009f,0.0504722f},{-0.433219f,0.0458484f,0.0433801f},{-0.445856f,-0.00705878f,0.0384981f},
-{-0.439138f,-0.0599659f,0.0380252f},{-0.413572f,-0.104818f,0.0420112f},{-0.371905f,-0.134788f,0.0480844f},
-{-0.318578f,-0.145312f,0.0540119f},{-0.259936f,-0.134788f,0.0596851f},{-0.204491f,-0.104818f,0.0666849f},
-{-0.162112f,-0.0599659f,0.0760798f},{-0.142086f,-0.00705876f,0.0861686f},{-0.150271f,0.0458484f,0.0923222f},
-{-0.18592f,0.0907008f,0.0903491f},{-0.24061f,0.12067f,0.0808271f},{-0.317406f,0.149644f,0.0199458f},
-{-0.381217f,0.138253f,0.00904715f},{-0.434494f,0.105814f,-0.00103264f},{-0.470442f,0.0572662f,-0.0100155f},
-{-0.483755f,3.82713e-009f,-0.0160775f},{-0.472208f,-0.0572662f,-0.0173934f},{-0.437995f,-0.105814f,-0.0145555f},
-{-0.386668f,-0.138253f,-0.00998602f},{-0.325449f,-0.149644f,-0.00532854f},{-0.262724f,-0.138253f,-8.28803e-006f},
-{-0.207546f,-0.105814f,0.00765557f},{-0.168184f,-0.0572662f,0.0181296f},{-0.151073f,3.82713e-009f,0.0293253f},
-{-0.160302f,0.0572663f,0.0370842f},{-0.195903f,0.105814f,0.0376073f},{-0.251874f,0.138253f,0.030682f},
-{0.278685f,-0.0184455f,0.142104f},{0.276782f,0.0402249f,0.131836f},{0.301275f,0.0358657f,0.125528f},
-{0.32166f,0.023452f,0.120724f},{0.335761f,0.00487346f,0.117933f},{0.342327f,-0.0170414f,0.117442f},
-{0.340777f,-0.0389562f,0.119308f},{0.331139f,-0.0575348f,0.123149f},{0.314161f,-0.0699485f,0.128161f},
-{0.291535f,-0.0743076f,0.133481f},{0.266105f,-0.0699485f,0.138543f},{0.241813f,-0.0575347f,0.143068f},
-{0.223134f,-0.0389562f,0.146692f},{0.213978f,-0.0170414f,0.148674f},{0.216437f,0.00487348f,0.148103f},
-{0.229969f,0.023452f,0.144568f},{0.251555f,0.0358657f,0.138674f},{0.286428f,0.0927713f,0.106668f},
-{0.329876f,0.0847167f,0.0969866f},{0.364411f,0.0617791f,0.0897744f},{0.387562f,0.0274504f,0.084743f},
-{0.397904f,-0.0130429f,0.0824776f},{0.394525f,-0.0535363f,0.0840476f},{0.377363f,-0.0878649f,0.089252f},
-{0.347459f,-0.110803f,0.0962819f},{0.307253f,-0.118857f,0.103236f},{0.261203f,-0.110802f,0.1096f},
-{0.216225f,-0.0878649f,0.116136f},{0.180992f,-0.0535363f,0.123303f},{0.163781f,-0.0130429f,0.129625f},
-{0.169441f,0.0274504f,0.131883f},{0.196926f,0.0617791f,0.127674f},{0.239231f,0.0847167f,0.117999f},
-{0.30165f,0.131194f,0.068821f},{0.357946f,0.12067f,0.0586132f},{0.402983f,0.0907009f,0.0504722f},
-{0.433218f,0.0458484f,0.0433801f},{0.445856f,-0.00705878f,0.0384981f},{0.439138f,-0.0599659f,0.0380252f},
-{0.413572f,-0.104818f,0.0420112f},{0.371905f,-0.134788f,0.0480844f},{0.318578f,-0.145312f,0.0540119f},
-{0.259936f,-0.134788f,0.0596851f},{0.204491f,-0.104818f,0.0666849f},{0.162111f,-0.0599659f,0.0760797f},
-{0.142086f,-0.00705875f,0.0861686f},{0.150271f,0.0458484f,0.0923222f},{0.18592f,0.0907008f,0.0903491f},
-{0.24061f,0.12067f,0.0808271f},{0.317406f,0.149644f,0.0199458f},{0.381217f,0.138253f,0.00904715f},
-{0.434494f,0.105814f,-0.00103264f},{0.470442f,0.0572662f,-0.0100155f},{0.483755f,3.82713e-009f,-0.0160775f},
-{0.472208f,-0.0572662f,-0.0173934f},{0.437995f,-0.105814f,-0.0145555f},{0.386668f,-0.138253f,-0.00998602f},
-{0.325449f,-0.149644f,-0.00532854f},{0.262724f,-0.138253f,-8.28803e-006f},{0.207546f,-0.105814f,0.00765557f},
-{0.168184f,-0.0572662f,0.0181296f},{0.151073f,3.82713e-009f,0.0293253f},{0.160302f,0.0572663f,0.0370842f},
-{0.195903f,0.105814f,0.0376073f},{0.251874f,0.138253f,0.030682f}
-}
-
-};
-
-static GLfloat normals [NUM_LIDS][344][3] = {
-
-//lid 10
-{
-{0.14128f,0.678859f,-0.720549f},{0.141183f,0.470342f,-0.871117f},{0.0436259f,0.538027f,-0.841798f},
-{0.0679973f,0.716579f,-0.694184f},{-0.119311f,0.639257f,-0.759681f},{-0.00235058f,0.772214f,-0.635358f},
-{-0.255136f,0.759046f,-0.598962f},{-0.0474012f,0.827055f,-0.560118f},{-0.314039f,0.853304f,-0.416235f},
-{-0.0600024f,0.866637f,-0.495318f},{-0.292773f,0.915841f,-0.274809f},{-0.049072f,0.891986f,-0.449392f},
-{-0.212481f,0.95807f,-0.192231f},{-0.0178326f,0.908456f,-0.417599f},{-0.0920599f,0.982527f,-0.161757f},
-{0.0370726f,0.914058f,-0.403886f},{0.0521203f,0.982077f,-0.18113f},{0.108309f,0.902514f,-0.416819f},
-{0.201428f,0.946854f,-0.250789f},{0.179027f,0.872331f,-0.45496f},{0.331459f,0.872109f,-0.359945f},
-{0.23599f,0.827361f,-0.509688f},{0.418216f,0.768374f,-0.484455f},{0.271011f,0.775009f,-0.570888f},
-{0.450676f,0.660369f,-0.60067f},{0.28066f,0.726565f,-0.627163f},{0.433824f,0.571637f,-0.69644f},
-{0.269128f,0.691375f,-0.670501f},{0.379646f,0.512038f,-0.77051f},{0.242614f,0.670979f,-0.70066f},
-{0.296688f,0.482442f,-0.824152f},{0.20092f,0.665188f,-0.719135f},{0.111321f,0.0838976f,-0.990237f},
-{-0.029379f,0.177399f,-0.983701f},{-0.36291f,0.315654f,-0.876732f},{-0.636533f,0.537885f,-0.552726f},
-{-0.692297f,0.698565f,-0.180919f},{-0.609692f,0.790176f,0.0624294f},{-0.463645f,0.864983f,0.191929f},
-{-0.266794f,0.932768f,0.242413f},{-0.0294763f,0.976851f,0.211879f},{0.23276f,0.968844f,0.0846355f},
-{0.473096f,0.871906f,-0.126332f},{0.622688f,0.697126f,-0.355352f},{0.663374f,0.512375f,-0.54535f},
-{0.624155f,0.368076f,-0.689167f},{0.531327f,0.266649f,-0.804108f},{0.396108f,0.19478f,-0.897307f},
-{0.301284f,0.331535f,-0.894043f},{0.293635f,0.335978f,-0.894929f},{0.0262531f,-0.314782f,-0.948801f},
-{-0.145065f,-0.279238f,-0.949201f},{-0.600169f,-0.204803f,-0.773209f},{-0.94784f,0.0687263f,-0.311249f},
-{-0.931339f,0.326478f,0.161309f},{-0.775903f,0.471621f,0.418986f},{-0.595717f,0.581008f,0.554573f},
-{-0.378996f,0.685218f,0.621963f},{-0.1154f,0.782225f,0.612215f},{0.228237f,0.846899f,0.480282f},
-{0.608238f,0.775101f,0.17107f},{0.820052f,0.537806f,-0.19565f},{0.837034f,0.294875f,-0.460893f},
-{0.762505f,0.126921f,-0.634411f},{0.630338f,0.00231725f,-0.776317f},{0.436413f,-0.113109f,-0.892609f},
-{0.320267f,0.0147375f,-0.947213f},{0.348327f,-0.00790562f,-0.93734f},{-0.0276759f,-0.417145f,-0.908418f},
-{-0.141207f,-0.463983f,-0.874517f},{-0.573196f,-0.464631f,-0.674955f},{-0.943646f,-0.249543f,-0.217397f},
-{-0.961507f,0.0693531f,0.265886f},{-0.808033f,0.269491f,0.523886f},{-0.636184f,0.393708f,0.663524f},
-{-0.43775f,0.497816f,0.748702f},{-0.202579f,0.60248f,0.771997f},{0.122768f,0.708696f,0.694751f},
-{0.564416f,0.712283f,0.417239f},{0.875302f,0.482711f,-0.0289185f},{0.906907f,0.205191f,-0.367988f},
-{0.825239f,0.0254238f,-0.564212f},{0.68962f,-0.103674f,-0.716712f},{0.478163f,-0.232147f,-0.847035f},
-{0.283993f,-0.306895f,-0.908385f},{0.330854f,-0.348141f,-0.877117f},{-0.141183f,0.470342f,-0.871117f},
-{-0.14128f,0.678859f,-0.720549f},{-0.043626f,0.538027f,-0.841798f},{-0.0679977f,0.716579f,-0.694184f},
-{0.119311f,0.639257f,-0.759681f},{0.00235085f,0.772214f,-0.635358f},{0.255136f,0.759046f,-0.598961f},
-{0.0474012f,0.827055f,-0.560118f},{0.314038f,0.853304f,-0.416236f},{0.0600023f,0.866637f,-0.495318f},
-{0.292773f,0.915841f,-0.274809f},{0.0490718f,0.891986f,-0.449392f},{0.212481f,0.95807f,-0.192231f},
-{0.0178326f,0.908456f,-0.417599f},{0.0920599f,0.982527f,-0.161757f},{-0.0370725f,0.914058f,-0.403886f},
-{-0.0521203f,0.982077f,-0.18113f},{-0.108309f,0.902514f,-0.416819f},{-0.201428f,0.946854f,-0.250789f},
-{-0.179027f,0.872331f,-0.45496f},{-0.331459f,0.872109f,-0.359945f},{-0.235989f,0.827361f,-0.509688f},
-{-0.418216f,0.768374f,-0.484455f},{-0.271012f,0.775009f,-0.570889f},{-0.450676f,0.660369f,-0.60067f},
-{-0.28066f,0.726565f,-0.627163f},{-0.433824f,0.571637f,-0.696439f},{-0.269128f,0.691375f,-0.670501f},
-{-0.379647f,0.512038f,-0.77051f},{-0.242614f,0.67098f,-0.70066f},{-0.296688f,0.482442f,-0.824152f},
-{-0.20092f,0.665189f,-0.719135f},{-0.111321f,0.0838977f,-0.990237f},{0.029379f,0.177399f,-0.983701f},
-{0.36291f,0.315654f,-0.876732f},{0.636533f,0.537885f,-0.552726f},{0.692297f,0.698565f,-0.18092f},
-{0.609692f,0.790176f,0.0624292f},{0.463645f,0.864984f,0.191929f},{0.266794f,0.932768f,0.242413f},
-{0.0294763f,0.976851f,0.211879f},{-0.23276f,0.968844f,0.0846357f},{-0.473096f,0.871906f,-0.126332f},
-{-0.622688f,0.697126f,-0.355352f},{-0.663374f,0.512375f,-0.54535f},{-0.624155f,0.368076f,-0.689167f},
-{-0.531328f,0.266649f,-0.804108f},{-0.396108f,0.19478f,-0.897307f},{-0.301284f,0.331535f,-0.894043f},
-{-0.293635f,0.335978f,-0.894929f},{-0.0262532f,-0.314781f,-0.948801f},{0.145065f,-0.279238f,-0.949201f},
-{0.600169f,-0.204803f,-0.773209f},{0.94784f,0.0687262f,-0.311249f},{0.931339f,0.326478f,0.161309f},
-{0.775903f,0.471621f,0.418986f},{0.595716f,0.581008f,0.554573f},{0.378996f,0.685218f,0.621963f},
-{0.1154f,0.782225f,0.612215f},{-0.228237f,0.846899f,0.480282f},{-0.608238f,0.775101f,0.17107f},
-{-0.820052f,0.537806f,-0.19565f},{-0.837034f,0.294875f,-0.460893f},{-0.762505f,0.126921f,-0.634411f},
-{-0.630338f,0.00231719f,-0.776317f},{-0.436413f,-0.113109f,-0.892609f},{-0.320267f,0.0147371f,-0.947213f},
-{-0.348327f,-0.0079059f,-0.93734f},{0.027676f,-0.417145f,-0.908418f},{0.141207f,-0.463983f,-0.874517f},
-{0.573197f,-0.46463f,-0.674955f},{0.943646f,-0.249543f,-0.217397f},{0.961506f,0.0693526f,0.265886f},
-{0.808033f,0.269491f,0.523887f},{0.636184f,0.393708f,0.663524f},{0.43775f,0.497816f,0.748702f},
-{0.202579f,0.60248f,0.771997f},{-0.122768f,0.708696f,0.694751f},{-0.564416f,0.712283f,0.417239f},
-{-0.875302f,0.482711f,-0.0289183f},{-0.906908f,0.205191f,-0.367988f},{-0.825239f,0.0254234f,-0.564211f},
-{-0.68962f,-0.103674f,-0.716712f},{-0.478163f,-0.232147f,-0.847035f},{-0.283994f,-0.306895f,-0.908385f},
-{-0.330854f,-0.34814f,-0.877117f},{-0.101791f,0.89554f,0.433181f},{-0.10134f,0.982935f,0.153519f},
-{-0.198237f,0.947331f,0.251529f},{-0.164187f,0.866134f,0.472075f},{-0.328502f,0.861858f,0.386377f},
-{-0.22236f,0.81515f,0.534871f},{-0.407264f,0.738985f,0.53669f},{-0.261475f,0.745438f,0.61315f},
-{-0.423584f,0.613071f,0.666874f},{-0.268118f,0.677242f,0.685169f},{-0.392497f,0.519335f,0.759103f},
-{-0.24919f,0.634149f,0.731956f},{-0.338078f,0.471162f,0.814684f},{-0.22364f,0.617892f,0.753787f},
-{-0.270615f,0.460525f,0.84539f},{-0.194833f,0.616506f,0.762863f},{-0.183681f,0.479089f,0.858333f},
-{-0.149814f,0.630977f,0.761199f},{-0.0646262f,0.532383f,0.844033f},{-0.0833697f,0.671555f,0.736249f},
-{0.0858598f,0.628864f,0.77276f},{-0.0110594f,0.735267f,0.677687f},{0.225661f,0.746376f,0.626099f},
-{0.0402802f,0.800838f,0.597525f},{0.297614f,0.844032f,0.446135f},{0.0578062f,0.850871f,0.522185f},
-{0.287181f,0.911623f,0.294058f},{0.0462129f,0.884f,0.465197f},{0.212292f,0.957645f,0.194545f},
-{0.0112676f,0.903058f,0.429371f},{0.0946535f,0.984007f,0.1509f},{-0.0411956f,0.907323f,0.418412f},
-{-0.0768357f,0.963819f,-0.255243f},{-0.231191f,0.968651f,-0.0909206f},{-0.478011f,0.865024f,0.152442f},
-{-0.613761f,0.668302f,0.420321f},{-0.621661f,0.468695f,0.627584f},{-0.555999f,0.333983f,0.761131f},
-{-0.465216f,0.269773f,0.843087f},{-0.358395f,0.248428f,0.899909f},{-0.215945f,0.246155f,0.944868f},
-{-0.00160027f,0.275933f,0.961176f},{0.307449f,0.391756f,0.867181f},{0.57879f,0.576987f,0.57627f},
-{0.658558f,0.716536f,0.229952f},{0.597679f,0.801598f,-0.0148259f},{0.460401f,0.872625f,-0.162965f},
-{0.266984f,0.934523f,-0.235344f},{0.103983f,0.993374f,-0.048947f},{0.105796f,0.993123f,-0.0501399f},
-{-0.0197862f,0.790362f,-0.61232f},{-0.242279f,0.852503f,-0.463184f},{-0.632416f,0.763443f,-0.131166f},
-{-0.817379f,0.505342f,0.276625f},{-0.788174f,0.265216f,0.555375f},{-0.687043f,0.131972f,0.714531f},
-{-0.56985f,0.0751975f,0.818301f},{-0.421735f,0.0372272f,0.905954f},{-0.203784f,-0.0289837f,0.978587f},
-{0.124815f,-0.104369f,0.986675f},{0.577569f,-0.0689256f,0.813427f},{0.917184f,0.152931f,0.367949f},
-{0.924202f,0.373489f,-0.0797226f},{0.792991f,0.508953f,-0.334863f},{0.620113f,0.617825f,-0.483478f},
-{0.394039f,0.719565f,-0.571804f},{0.224221f,0.865854f,-0.447239f},{0.212217f,0.873358f,-0.438418f},
-{0.0136589f,0.693472f,-0.720354f},{-0.145306f,0.729801f,-0.668039f},{-0.601517f,0.69868f,-0.387329f},
-{-0.891335f,0.442876f,0.0968627f},{-0.872552f,0.175056f,0.45608f},{-0.763231f,0.0371769f,0.645055f},
-{-0.642575f,-0.0180662f,0.76601f},{-0.48495f,-0.0563598f,0.872724f},{-0.238167f,-0.142315f,0.960741f},
-{0.123424f,-0.279803f,0.952091f},{0.574493f,-0.347868f,0.740908f},{0.939284f,-0.188771f,0.28655f},
-{0.979786f,0.0995065f,-0.173547f},{0.850407f,0.302179f,-0.430692f},{0.68788f,0.4362f,-0.580131f},
-{0.478047f,0.550419f,-0.684478f},{0.3163f,0.607377f,-0.72873f},{0.292721f,0.633415f,-0.71631f},
-{0.10134f,0.982936f,0.153519f},{0.101791f,0.895541f,0.433181f},{0.198237f,0.947331f,0.251529f},
-{0.164188f,0.866134f,0.472075f},{0.328502f,0.861858f,0.386377f},{0.22236f,0.81515f,0.534871f},
-{0.407264f,0.738986f,0.53669f},{0.261475f,0.745438f,0.61315f},{0.423584f,0.613071f,0.666874f},
-{0.268118f,0.677242f,0.685168f},{0.392497f,0.519336f,0.759103f},{0.24919f,0.634149f,0.731956f},
-{0.338078f,0.471162f,0.814684f},{0.22364f,0.617892f,0.753787f},{0.270615f,0.460525f,0.84539f},
-{0.194833f,0.616506f,0.762863f},{0.183681f,0.479089f,0.858333f},{0.149814f,0.630977f,0.761199f},
-{0.0646263f,0.532382f,0.844033f},{0.0833696f,0.671555f,0.736249f},{-0.0858598f,0.628864f,0.77276f},
-{0.0110594f,0.735267f,0.677687f},{-0.225661f,0.746376f,0.626099f},{-0.0402801f,0.800838f,0.597525f},
-{-0.297614f,0.844032f,0.446135f},{-0.0578062f,0.850871f,0.522185f},{-0.287181f,0.911623f,0.294058f},
-{-0.0462129f,0.884f,0.465198f},{-0.212292f,0.957645f,0.194545f},{-0.0112675f,0.903058f,0.429371f},
-{-0.0946533f,0.984007f,0.1509f},{0.041196f,0.907323f,0.418412f},{0.0768359f,0.963819f,-0.255243f},
-{0.231191f,0.968651f,-0.0909207f},{0.478011f,0.865024f,0.152442f},{0.613761f,0.668302f,0.420321f},
-{0.621661f,0.468695f,0.627584f},{0.555999f,0.333984f,0.761131f},{0.465216f,0.269773f,0.843087f},
-{0.358395f,0.248428f,0.899909f},{0.215945f,0.246155f,0.944868f},{0.00160026f,0.275933f,0.961176f},
-{-0.307449f,0.391756f,0.867181f},{-0.57879f,0.576987f,0.57627f},{-0.658558f,0.716536f,0.229952f},
-{-0.597679f,0.801598f,-0.014826f},{-0.460401f,0.872625f,-0.162965f},{-0.266984f,0.934523f,-0.235344f},
-{-0.103983f,0.993374f,-0.0489471f},{-0.105795f,0.993123f,-0.0501397f},{0.0197862f,0.790362f,-0.61232f},
-{0.242279f,0.852503f,-0.463184f},{0.632416f,0.763443f,-0.131166f},{0.817379f,0.505342f,0.276625f},
-{0.788174f,0.265216f,0.555375f},{0.687043f,0.131972f,0.714531f},{0.56985f,0.0751974f,0.818301f},
-{0.421735f,0.0372273f,0.905954f},{0.203784f,-0.0289837f,0.978587f},{-0.124815f,-0.104369f,0.986675f},
-{-0.577568f,-0.0689258f,0.813427f},{-0.917184f,0.152931f,0.367949f},{-0.924202f,0.373489f,-0.0797229f},
-{-0.792991f,0.508952f,-0.334863f},{-0.620113f,0.617825f,-0.483478f},{-0.394039f,0.719565f,-0.571804f},
-{-0.224221f,0.865854f,-0.447239f},{-0.212217f,0.873358f,-0.438418f},{-0.0136587f,0.693472f,-0.720354f},
-{0.145306f,0.729801f,-0.668039f},{0.601517f,0.69868f,-0.387329f},{0.891335f,0.442876f,0.0968627f},
-{0.872552f,0.175056f,0.45608f},{0.763232f,0.0371764f,0.645055f},{0.642575f,-0.0180665f,0.76601f},
-{0.48495f,-0.0563598f,0.872724f},{0.238168f,-0.142315f,0.960741f},{-0.123424f,-0.279803f,0.952091f},
-{-0.574493f,-0.347868f,0.740909f},{-0.939284f,-0.188771f,0.28655f},{-0.979786f,0.0995065f,-0.173547f},
-{-0.850407f,0.302179f,-0.430692f},{-0.68788f,0.4362f,-0.580131f},{-0.478047f,0.550419f,-0.684478f},
-{-0.3163f,0.607377f,-0.72873f},{-0.292721f,0.633415f,-0.71631f}
-},
-
-//lid 9
-{
-{0.170541f,0.555718f,-0.813691f},{0.159436f,0.323043f,-0.932857f},{0.0675904f,0.387311f,-0.919468f},
-{0.101067f,0.59512f,-0.797256f},{-0.092135f,0.494669f,-0.864184f},{0.0336952f,0.658639f,-0.751704f},
-{-0.229373f,0.644702f,-0.72921f},{-0.0108063f,0.727029f,-0.686522f},{-0.288707f,0.777821f,-0.55825f},
-{-0.0233612f,0.779424f,-0.626062f},{-0.263651f,0.867508f,-0.421803f},{-0.012134f,0.812561f,-0.58275f},
-{-0.179349f,0.921161f,-0.345394f},{0.0175103f,0.832714f,-0.553427f},{-0.0584333f,0.945729f,-0.319658f},
-{0.0683393f,0.839411f,-0.539184f},{0.0823237f,0.938165f,-0.336258f},{0.135725f,0.826017f,-0.54706f},
-{0.225929f,0.891127f,-0.393507f},{0.204819f,0.79023f,-0.577569f},{0.350601f,0.801826f,-0.483894f},
-{0.261618f,0.736218f,-0.62413f},{0.433427f,0.683162f,-0.587734f},{0.296097f,0.673774f,-0.677019f},
-{0.463621f,0.562726f,-0.684394f},{0.304738f,0.617548f,-0.725099f},{0.446703f,0.464193f,-0.764841f},
-{0.293235f,0.577481f,-0.761924f},{0.394005f,0.394726f,-0.830031f},{0.267887f,0.553192f,-0.788806f},
-{0.313145f,0.353344f,-0.881526f},{0.227697f,0.543901f,-0.807667f},{0.103488f,-0.0756736f,-0.991748f},
-{-0.0254071f,0.00398757f,-0.999669f},{-0.349912f,0.130467f,-0.927653f},{-0.638155f,0.398665f,-0.658654f},
-{-0.703033f,0.642145f,-0.305605f},{-0.609007f,0.79022f,-0.068285f},{-0.449166f,0.892346f,0.04437f},
-{-0.241132f,0.967482f,0.0763763f},{0.00191164f,0.99924f,0.0389275f},{0.257914f,0.963174f,-0.0759974f},
-{0.484125f,0.836707f,-0.256014f},{0.624151f,0.639931f,-0.448246f},{0.662818f,0.438996f,-0.606593f},
-{0.625793f,0.279749f,-0.728096f},{0.534464f,0.160511f,-0.82981f},{0.397089f,0.067222f,-0.915315f},
-{0.305679f,0.19791f,-0.931339f},{0.308629f,0.196352f,-0.930696f},{0.0010928f,-0.457257f,-0.889334f},
-{-0.16025f,-0.427096f,-0.889892f},{-0.589829f,-0.355518f,-0.725057f},{-0.94399f,-0.0546976f,-0.325408f},
-{-0.95306f,0.282341f,0.109367f},{-0.796299f,0.492715f,0.350912f},{-0.606733f,0.645652f,0.46369f},
-{-0.372043f,0.777756f,0.506636f},{-0.086674f,0.876457f,0.473614f},{0.257346f,0.909395f,0.326763f},
-{0.607804f,0.79297f,0.0421005f},{0.806237f,0.525687f,-0.271357f},{0.829843f,0.255751f,-0.495936f},
-{0.762498f,0.0578159f,-0.644402f},{0.631312f,-0.0985713f,-0.769239f},{0.42819f,-0.241367f,-0.870859f},
-{0.306199f,-0.119536f,-0.944433f},{0.342896f,-0.146123f,-0.927939f},{-0.0528956f,-0.553316f,-0.83129f},
-{-0.163834f,-0.590968f,-0.789883f},{-0.573892f,-0.568852f,-0.589114f},{-0.928504f,-0.32689f,-0.176134f},
-{-0.965442f,0.0371366f,0.25796f},{-0.823071f,0.286223f,0.490542f},{-0.651703f,0.453096f,0.608265f},
-{-0.440343f,0.593015f,0.674115f},{-0.181412f,0.713338f,0.676933f},{0.152749f,0.80595f,0.571937f},
-{0.566841f,0.771152f,0.289856f},{0.85507f,0.507622f,-0.105715f},{0.89627f,0.194243f,-0.398711f},
-{0.82294f,-0.0268582f,-0.567493f},{0.68957f,-0.19749f,-0.696772f},{0.470535f,-0.360343f,-0.80545f},
-{0.266767f,-0.44909f,-0.852733f},{0.309762f,-0.481723f,-0.81975f},{-0.159438f,0.323043f,-0.932857f},
-{-0.170543f,0.555717f,-0.813691f},{-0.0675907f,0.387311f,-0.919468f},{-0.101065f,0.595122f,-0.797255f},
-{0.0921356f,0.49467f,-0.864183f},{-0.0336954f,0.658639f,-0.751704f},{0.229373f,0.644702f,-0.72921f},
-{0.0108064f,0.72703f,-0.686521f},{0.288706f,0.777821f,-0.558249f},{0.0233612f,0.779424f,-0.626062f},
-{0.263651f,0.867508f,-0.421803f},{0.012134f,0.812561f,-0.58275f},{0.179349f,0.921161f,-0.345394f},
-{-0.0175103f,0.832714f,-0.553427f},{0.0584332f,0.945729f,-0.319658f},{-0.0683394f,0.83941f,-0.539184f},
-{-0.0823238f,0.938165f,-0.336259f},{-0.135725f,0.826017f,-0.54706f},{-0.225929f,0.891127f,-0.393507f},
-{-0.204819f,0.79023f,-0.577569f},{-0.350601f,0.801826f,-0.483894f},{-0.261618f,0.736219f,-0.62413f},
-{-0.433427f,0.683162f,-0.587733f},{-0.296097f,0.673776f,-0.677018f},{-0.463621f,0.562727f,-0.684393f},
-{-0.304738f,0.617549f,-0.725099f},{-0.446703f,0.464193f,-0.764841f},{-0.293235f,0.577482f,-0.761924f},
-{-0.394004f,0.394726f,-0.830031f},{-0.267886f,0.553192f,-0.788807f},{-0.313145f,0.353344f,-0.881526f},
-{-0.227697f,0.543901f,-0.807667f},{-0.103488f,-0.0756737f,-0.991748f},{0.0254069f,0.00398732f,-0.999669f},
-{0.349912f,0.130467f,-0.927653f},{0.638155f,0.398665f,-0.658654f},{0.703033f,0.642145f,-0.305605f},
-{0.609007f,0.79022f,-0.0682853f},{0.449166f,0.892346f,0.0443696f},{0.241132f,0.967482f,0.0763763f},
-{-0.0019117f,0.99924f,0.0389275f},{-0.257914f,0.963174f,-0.0759975f},{-0.484125f,0.836707f,-0.256014f},
-{-0.624151f,0.639931f,-0.448246f},{-0.662818f,0.438997f,-0.606592f},{-0.625793f,0.279749f,-0.728096f},
-{-0.534464f,0.160511f,-0.82981f},{-0.397088f,0.0672218f,-0.915315f},{-0.305679f,0.19791f,-0.931339f},
-{-0.308629f,0.196352f,-0.930696f},{-0.00109355f,-0.457257f,-0.889334f},{0.16025f,-0.427096f,-0.889893f},
-{0.589829f,-0.355518f,-0.725057f},{0.94399f,-0.0546977f,-0.325408f},{0.95306f,0.282341f,0.109367f},
-{0.796299f,0.492715f,0.350912f},{0.606732f,0.645652f,0.46369f},{0.372042f,0.777756f,0.506636f},
-{0.0866739f,0.876457f,0.473614f},{-0.257346f,0.909395f,0.326763f},{-0.607805f,0.79297f,0.0421001f},
-{-0.806237f,0.525687f,-0.271357f},{-0.829843f,0.255751f,-0.495936f},{-0.762498f,0.0578159f,-0.644402f},
-{-0.631312f,-0.0985713f,-0.769239f},{-0.42819f,-0.241367f,-0.870859f},{-0.306198f,-0.119536f,-0.944433f},
-{-0.342896f,-0.146124f,-0.927939f},{0.0528946f,-0.553315f,-0.831291f},{0.163834f,-0.590967f,-0.789884f},
-{0.573892f,-0.568851f,-0.589114f},{0.928504f,-0.32689f,-0.176134f},{0.965442f,0.0371366f,0.257959f},
-{0.823071f,0.286223f,0.490542f},{0.651704f,0.453095f,0.608266f},{0.440343f,0.593015f,0.674116f},
-{0.181412f,0.713338f,0.676933f},{-0.152749f,0.80595f,0.571937f},{-0.566841f,0.771152f,0.289855f},
-{-0.85507f,0.507622f,-0.105715f},{-0.89627f,0.194243f,-0.398711f},{-0.82294f,-0.026858f,-0.567493f},
-{-0.68957f,-0.19749f,-0.696772f},{-0.470535f,-0.360343f,-0.80545f},{-0.266767f,-0.44909f,-0.852733f},
-{-0.309761f,-0.481723f,-0.819751f},{-0.11464f,0.854504f,0.506637f},{-0.114874f,0.966279f,0.230455f},
-{-0.210589f,0.921522f,0.326266f},{-0.174897f,0.822321f,0.541478f},{-0.337297f,0.824425f,0.454483f},
-{-0.232515f,0.765838f,0.599525f},{-0.411322f,0.691063f,0.594345f},{-0.270972f,0.689156f,0.67204f},
-{-0.424194f,0.559147f,0.71233f},{-0.276544f,0.616478f,0.73721f},{-0.393218f,0.46414f,0.793696f},
-{-0.258301f,0.57317f,0.777661f},{-0.342514f,0.416759f,0.842019f},{-0.23626f,0.558058f,0.795457f},
-{-0.280672f,0.405896f,0.869754f},{-0.211881f,0.556491f,0.803383f},{-0.200032f,0.422183f,0.884166f},
-{-0.170563f,0.570243f,0.803574f},{-0.0874915f,0.472863f,0.876781f},{-0.107036f,0.611665f,0.783842f},
-{0.0581153f,0.571308f,0.818676f},{-0.036373f,0.679483f,0.732789f},{0.197933f,0.699796f,0.686373f},
-{0.0148238f,0.751729f,0.659306f},{0.273319f,0.812315f,0.51521f},{0.03261f,0.807523f,0.588934f},
-{0.266335f,0.891038f,0.367583f},{0.0218574f,0.843568f,0.536578f},{0.194206f,0.942733f,0.271181f},
-{-0.0102549f,0.863372f,0.504464f},{0.078806f,0.970194f,0.229157f},{-0.0581579f,0.867363f,0.494266f},
-{-0.0914466f,0.978258f,-0.186143f},{-0.244068f,0.969568f,-0.0192072f},{-0.48466f,0.847182f,0.217684f},
-{-0.612357f,0.635581f,0.470165f},{-0.615785f,0.428517f,0.661198f},{-0.550439f,0.291383f,0.782377f},
-{-0.463909f,0.226398f,0.856465f},{-0.362763f,0.202436f,0.909628f},{-0.225975f,0.194219f,0.954575f},
-{-0.0183055f,0.216191f,0.976179f},{0.286186f,0.330996f,0.899188f},{0.562947f,0.537093f,0.628189f},
-{0.648012f,0.704916f,0.288398f},{0.587764f,0.807722f,0.0460294f},{0.450024f,0.887599f,-0.0982117f},
-{0.255516f,0.952228f,-0.167251f},{0.0906943f,0.995508f,0.0271607f},{0.0933649f,0.995308f,0.0253784f},
-{-0.0355931f,0.831294f,-0.554693f},{-0.254659f,0.881814f,-0.396929f},{-0.632414f,0.771627f,-0.0681498f},
-{-0.809248f,0.494993f,0.316386f},{-0.781041f,0.242949f,0.575283f},{-0.682456f,0.101224f,0.723883f},
-{-0.568426f,0.0370607f,0.821899f},{-0.423234f,-0.0101017f,0.905964f},{-0.206764f,-0.0865563f,0.974555f},
-{0.118895f,-0.168938f,0.978429f},{0.568569f,-0.131554f,0.812049f},{0.916179f,0.11474f,0.383994f},
-{0.927836f,0.368796f,-0.0557681f},{0.794685f,0.525236f,-0.304306f},{0.618087f,0.648299f,-0.444608f},
-{0.385917f,0.758658f,-0.524887f},{0.210919f,0.897809f,-0.38659f},{0.203377f,0.902055f,-0.380702f},
-{-0.00079517f,0.742438f,-0.669914f},{-0.157844f,0.77598f,-0.610689f},{-0.602335f,0.730097f,-0.322724f},
-{-0.880543f,0.453024f,0.13933f},{-0.864745f,0.167017f,0.473626f},{-0.759086f,0.014962f,0.650818f},
-{-0.640551f,-0.0522314f,0.766137f},{-0.484416f,-0.104116f,0.86862f},{-0.23751f,-0.203911f,0.949742f},
-{0.123602f,-0.346612f,0.929829f},{0.570647f,-0.405671f,0.713998f},{0.936051f,-0.22429f,0.271114f},
-{0.980428f,0.0927185f,-0.173679f},{0.852254f,0.314963f,-0.417685f},{0.688798f,0.464589f,-0.55652f},
-{0.47305f,0.592612f,-0.651946f},{0.30497f,0.65594f,-0.690461f},{0.282411f,0.679895f,-0.676747f},
-{0.114874f,0.966279f,0.230455f},{0.11464f,0.854504f,0.506637f},{0.210589f,0.921522f,0.326266f},
-{0.174897f,0.822321f,0.541478f},{0.337297f,0.824425f,0.454483f},{0.232515f,0.765837f,0.599525f},
-{0.411322f,0.691063f,0.594346f},{0.270972f,0.689156f,0.67204f},{0.424194f,0.559147f,0.71233f},
-{0.276544f,0.616478f,0.73721f},{0.393218f,0.46414f,0.793696f},{0.258301f,0.57317f,0.777661f},
-{0.342514f,0.416759f,0.842019f},{0.236261f,0.558058f,0.795457f},{0.280672f,0.405896f,0.869754f},
-{0.211882f,0.556491f,0.803383f},{0.200032f,0.422183f,0.884166f},{0.170563f,0.570243f,0.803574f},
-{0.0874913f,0.472863f,0.876781f},{0.107037f,0.611665f,0.783842f},{-0.0581153f,0.571308f,0.818676f},
-{0.036373f,0.679483f,0.732789f},{-0.197933f,0.699796f,0.686373f},{-0.0148238f,0.751729f,0.659306f},
-{-0.273319f,0.812315f,0.515211f},{-0.03261f,0.807523f,0.588934f},{-0.266335f,0.891038f,0.367583f},
-{-0.0218573f,0.843568f,0.536577f},{-0.194206f,0.942733f,0.271181f},{0.0102549f,0.863372f,0.504464f},
-{-0.078806f,0.970194f,0.229156f},{0.058158f,0.867363f,0.494266f},{0.0914466f,0.978258f,-0.186143f},
-{0.244068f,0.969568f,-0.0192073f},{0.48466f,0.847182f,0.217684f},{0.612358f,0.635581f,0.470165f},
-{0.615785f,0.428517f,0.661198f},{0.550439f,0.291383f,0.782377f},{0.463909f,0.226398f,0.856465f},
-{0.362763f,0.202436f,0.909628f},{0.225975f,0.19422f,0.954575f},{0.0183055f,0.216191f,0.976179f},
-{-0.286186f,0.330996f,0.899188f},{-0.562947f,0.537093f,0.628189f},{-0.648012f,0.704916f,0.288399f},
-{-0.587764f,0.807722f,0.0460294f},{-0.450024f,0.887599f,-0.0982118f},{-0.255516f,0.952228f,-0.167251f},
-{-0.0906943f,0.995508f,0.0271607f},{-0.093365f,0.995308f,0.0253784f},{0.0355932f,0.831294f,-0.554693f},
-{0.254659f,0.881814f,-0.396929f},{0.632414f,0.771627f,-0.0681498f},{0.809248f,0.494993f,0.316386f},
-{0.781041f,0.242949f,0.575283f},{0.682456f,0.101224f,0.723883f},{0.568426f,0.0370607f,0.821899f},
-{0.423234f,-0.0101017f,0.905964f},{0.206764f,-0.0865562f,0.974555f},{-0.118895f,-0.168938f,0.978429f},
-{-0.568569f,-0.131554f,0.812049f},{-0.916179f,0.11474f,0.383994f},{-0.927836f,0.368796f,-0.0557682f},
-{-0.794686f,0.525236f,-0.304306f},{-0.618087f,0.648299f,-0.444608f},{-0.385917f,0.758658f,-0.524887f},
-{-0.210919f,0.897809f,-0.38659f},{-0.203377f,0.902055f,-0.380702f},{0.000795401f,0.742438f,-0.669914f},
-{0.157843f,0.77598f,-0.610689f},{0.602334f,0.730098f,-0.322724f},{0.880543f,0.453024f,0.13933f},
-{0.864745f,0.167017f,0.473626f},{0.759086f,0.014962f,0.650819f},{0.640551f,-0.0522313f,0.766137f},
-{0.484416f,-0.104115f,0.86862f},{0.23751f,-0.203911f,0.949742f},{-0.123602f,-0.346612f,0.92983f},
-{-0.570647f,-0.405671f,0.713998f},{-0.936051f,-0.22429f,0.271113f},{-0.980428f,0.0927184f,-0.173679f},
-{-0.852254f,0.314963f,-0.417685f},{-0.688798f,0.46459f,-0.55652f},{-0.47305f,0.592612f,-0.651947f},
-{-0.30497f,0.65594f,-0.690461f},{-0.282411f,0.679895f,-0.676747f}
-},
-
-//lid 8
-{
-{0.183219f,0.515603f,-0.837009f},{0.168233f,0.276577f,-0.946151f},{0.0789236f,0.33771f,-0.937936f},
-{0.115197f,0.55477f,-0.82399f},{-0.0788423f,0.444272f,-0.892416f},{0.0493115f,0.619585f,-0.783379f},
-{-0.215796f,0.602783f,-0.76817f},{0.00509343f,0.691651f,-0.722214f},{-0.275265f,0.749386f,-0.602205f},
-{-0.00771255f,0.748436f,-0.663162f},{-0.249493f,0.848683f,-0.466358f},{0.00346534f,0.784383f,-0.620267f},
-{-0.165042f,0.90581f,-0.390218f},{0.0322572f,0.805564f,-0.591631f},{-0.0456364f,0.929892f,-0.364991f},
-{0.080755f,0.81256f,-0.577256f},{0.0928438f,0.920014f,-0.380728f},{0.146091f,0.799024f,-0.583282f},
-{0.23474f,0.86947f,-0.434649f},{0.215159f,0.761573f,-0.611321f},{0.358561f,0.775663f,-0.519404f},
-{0.272868f,0.704116f,-0.655564f},{0.440662f,0.653013f,-0.615948f},{0.307414f,0.638509f,-0.705551f},
-{0.470318f,0.530909f,-0.704937f},{0.315767f,0.581186f,-0.75001f},{0.453707f,0.431995f,-0.779443f},
-{0.304783f,0.540878f,-0.783938f},{0.401809f,0.360715f,-0.841685f},{0.280105f,0.515498f,-0.809816f},
-{0.321717f,0.314999f,-0.892902f},{0.23998f,0.50473f,-0.829251f},{0.10177f,-0.124175f,-0.987028f},
-{-0.0213474f,-0.0510002f,-0.99847f},{-0.339633f,0.0669536f,-0.938172f},{-0.632029f,0.346039f,-0.693395f},
-{-0.701873f,0.620211f,-0.350303f},{-0.603308f,0.789452f,-0.113069f},{-0.43881f,0.898572f,-0.00368722f},
-{-0.229713f,0.972972f,0.023611f},{0.0125592f,0.999809f,-0.0149582f},{0.266795f,0.955612f,-0.125002f},
-{0.490219f,0.820159f,-0.294998f},{0.62726f,0.617606f,-0.474456f},{0.664848f,0.416024f,-0.620404f},
-{0.629087f,0.257234f,-0.73354f},{0.538512f,0.134383f,-0.831833f},{0.399787f,0.0328209f,-0.916021f},
-{0.30886f,0.159902f,-0.93757f},{0.317338f,0.155631f,-0.935455f},{-0.00782778f,-0.499674f,-0.866178f},
-{-0.163187f,-0.471999f,-0.866364f},{-0.57959f,-0.404497f,-0.70743f},{-0.937032f,-0.10026f,-0.334542f},
-{-0.960051f,0.266588f,0.0850474f},{-0.800902f,0.504502f,0.322543f},{-0.605592f,0.671753f,0.426623f},
-{-0.365098f,0.809509f,0.459781f},{-0.0727785f,0.904433f,0.420363f},{0.27279f,0.922361f,0.27356f},
-{0.614661f,0.788789f,0.00173532f},{0.8065f,0.514327f,-0.291591f},{0.830963f,0.243768f,-0.500077f},
-{0.767385f,0.0433333f,-0.639721f},{0.636351f,-0.121862f,-0.761714f},{0.42732f,-0.276056f,-0.860925f},
-{0.301003f,-0.155958f,-0.940784f},{0.343504f,-0.185537f,-0.920642f},{-0.0626903f,-0.592958f,-0.802789f},
-{-0.170517f,-0.628368f,-0.758997f},{-0.568461f,-0.601158f,-0.56166f},{-0.918823f,-0.356076f,-0.170216f},
-{-0.968663f,0.0240955f,0.247208f},{-0.829274f,0.296802f,0.473512f},{-0.65542f,0.48147f,0.581903f},
-{-0.438276f,0.633814f,0.637334f},{-0.16793f,0.756496f,0.632071f},{0.173844f,0.835371f,0.521472f},
-{0.578754f,0.777582f,0.245785f},{0.854862f,0.503223f,-0.126398f},{0.896856f,0.188576f,-0.40011f},
-{0.828344f,-0.0368846f,-0.559005f},{0.696091f,-0.218808f,-0.683798f},{0.470358f,-0.395467f,-0.788904f},
-{0.259101f,-0.490013f,-0.832318f},{0.302875f,-0.521613f,-0.797613f},{-0.168233f,0.276577f,-0.946152f},
-{-0.183218f,0.515603f,-0.837009f},{-0.0789234f,0.33771f,-0.937936f},{-0.115196f,0.55477f,-0.82399f},
-{0.0788423f,0.444272f,-0.892416f},{-0.0493115f,0.619585f,-0.783379f},{0.215796f,0.602783f,-0.76817f},
-{-0.00509343f,0.691651f,-0.722214f},{0.275265f,0.749386f,-0.602205f},{0.00771252f,0.748436f,-0.663162f},
-{0.249494f,0.848683f,-0.466358f},{-0.00346547f,0.784383f,-0.620267f},{0.165042f,0.90581f,-0.390218f},
-{-0.032257f,0.805564f,-0.591631f},{0.0456365f,0.929892f,-0.364991f},{-0.080755f,0.81256f,-0.577256f},
-{-0.0928437f,0.920014f,-0.380728f},{-0.146091f,0.799024f,-0.583282f},{-0.23474f,0.86947f,-0.434649f},
-{-0.215159f,0.761573f,-0.611321f},{-0.358561f,0.775663f,-0.519404f},{-0.272868f,0.704116f,-0.655563f},
-{-0.440662f,0.653013f,-0.615948f},{-0.307414f,0.638509f,-0.705551f},{-0.470318f,0.530909f,-0.704937f},
-{-0.315767f,0.581186f,-0.75001f},{-0.453707f,0.431995f,-0.779442f},{-0.304784f,0.540878f,-0.783938f},
-{-0.401809f,0.360715f,-0.841685f},{-0.280105f,0.515498f,-0.809816f},{-0.321718f,0.314999f,-0.892902f},
-{-0.23998f,0.50473f,-0.829251f},{-0.10177f,-0.124175f,-0.987028f},{0.0213474f,-0.0510003f,-0.99847f},
-{0.339633f,0.0669536f,-0.938172f},{0.632029f,0.346039f,-0.693395f},{0.701873f,0.620211f,-0.350303f},
-{0.603308f,0.789452f,-0.11307f},{0.43881f,0.898572f,-0.0036873f},{0.229713f,0.972972f,0.023611f},
-{-0.0125591f,0.999809f,-0.0149581f},{-0.266795f,0.955612f,-0.125002f},{-0.490219f,0.820159f,-0.294999f},
-{-0.62726f,0.617606f,-0.474456f},{-0.664848f,0.416024f,-0.620404f},{-0.629087f,0.257234f,-0.73354f},
-{-0.538512f,0.134383f,-0.831833f},{-0.399786f,0.0328209f,-0.916021f},{-0.30886f,0.159902f,-0.93757f},
-{-0.317339f,0.155631f,-0.935454f},{0.00782779f,-0.499674f,-0.866178f},{0.163186f,-0.471999f,-0.866364f},
-{0.57959f,-0.404497f,-0.707431f},{0.937032f,-0.10026f,-0.334542f},{0.960051f,0.266587f,0.0850475f},
-{0.800902f,0.504502f,0.322543f},{0.605592f,0.671753f,0.426623f},{0.365098f,0.809509f,0.459781f},
-{0.0727785f,0.904433f,0.420363f},{-0.27279f,0.922361f,0.27356f},{-0.614661f,0.788789f,0.00173559f},
-{-0.8065f,0.514327f,-0.291591f},{-0.830963f,0.243767f,-0.500077f},{-0.767385f,0.0433335f,-0.639721f},
-{-0.636351f,-0.121862f,-0.761713f},{-0.42732f,-0.276056f,-0.860925f},{-0.301003f,-0.155958f,-0.940784f},
-{-0.343504f,-0.185537f,-0.920642f},{0.0626903f,-0.592958f,-0.802789f},{0.170517f,-0.628368f,-0.758997f},
-{0.568461f,-0.601158f,-0.56166f},{0.918823f,-0.356076f,-0.170216f},{0.968663f,0.0240956f,0.247208f},
-{0.829274f,0.296802f,0.473512f},{0.65542f,0.48147f,0.581904f},{0.438276f,0.633814f,0.637334f},
-{0.16793f,0.756496f,0.632071f},{-0.173844f,0.835371f,0.521472f},{-0.578754f,0.777582f,0.245785f},
-{-0.854863f,0.503223f,-0.126398f},{-0.896856f,0.188576f,-0.40011f},{-0.828343f,-0.0368841f,-0.559005f},
-{-0.696091f,-0.218808f,-0.683798f},{-0.470358f,-0.395467f,-0.788904f},{-0.259101f,-0.490013f,-0.832318f},
-{-0.302875f,-0.521613f,-0.797613f},{-0.136628f,0.763066f,0.631715f},{-0.139911f,0.91351f,0.382f},
-{-0.230294f,0.853362f,0.467694f},{-0.193796f,0.727236f,0.658461f},{-0.346303f,0.741592f,0.574556f},
-{-0.248184f,0.665563f,0.703868f},{-0.410724f,0.601945f,0.684812f},{-0.282328f,0.587202f,0.758607f},
-{-0.420812f,0.474512f,0.773147f},{-0.286105f,0.519799f,0.804955f},{-0.394192f,0.388462f,0.832893f},
-{-0.271441f,0.48297f,0.832502f},{-0.348961f,0.345726f,0.871034f},{-0.253473f,0.469114f,0.845981f},
-{-0.288397f,0.331318f,0.898363f},{-0.227904f,0.465937f,0.854963f},{-0.205609f,0.337301f,0.918669f},
-{-0.183354f,0.479034f,0.858434f},{-0.0927383f,0.374538f,0.922562f},{-0.122056f,0.518721f,0.846186f},
-{0.0476515f,0.463623f,0.88475f},{-0.0593579f,0.58286f,0.810401f},{0.180078f,0.598609f,0.780538f},
-{-0.0151815f,0.654338f,0.75605f},{0.249804f,0.732175f,0.633654f},{-0.000536045f,0.713225f,0.700935f},
-{0.238979f,0.831312f,0.501806f},{-0.0116876f,0.752305f,0.658711f},{0.164828f,0.894338f,0.415923f},
-{-0.0414348f,0.773339f,0.632638f},{0.0495883f,0.923567f,0.380217f},{-0.0846693f,0.777271f,0.623443f},
-{-0.119615f,0.992173f,-0.0358517f},{-0.26578f,0.955061f,0.131223f},{-0.488134f,0.802358f,0.343433f},
-{-0.600233f,0.576302f,0.554613f},{-0.602773f,0.370741f,0.706552f},{-0.548009f,0.239525f,0.801444f},
-{-0.470781f,0.173944f,0.864933f},{-0.366503f,0.136982f,0.920278f},{-0.215389f,0.104768f,0.970892f},
-{0.00346038f,0.0981433f,0.995166f},{0.301978f,0.191861f,0.933809f},{0.572361f,0.418812f,0.704982f},
-{0.653782f,0.645133f,0.39544f},{0.583085f,0.795283f,0.165941f},{0.434465f,0.90003f,0.0344497f},
-{0.232282f,0.972393f,-0.0223025f},{0.0629826f,0.980353f,0.186928f},{0.0646f,0.980455f,0.185836f},
-{-0.0658798f,0.902312f,-0.426021f},{-0.275788f,0.926084f,-0.257505f},{-0.625976f,0.778258f,0.0496934f},
-{-0.790611f,0.479302f,0.381055f},{-0.772137f,0.214951f,0.597997f},{-0.688996f,0.0606832f,0.72222f},
-{-0.585024f,-0.0246281f,0.810642f},{-0.429108f,-0.106703f,0.896929f},{-0.181204f,-0.217596f,0.959071f},
-{0.160618f,-0.312677f,0.936181f},{0.582391f,-0.272557f,0.765855f},{0.918424f,-0.000439342f,0.395597f},
-{0.945892f,0.324477f,-0.00184092f},{0.807139f,0.541361f,-0.235489f},{0.61697f,0.701103f,-0.357495f},
-{0.370398f,0.829668f,-0.417679f},{0.185885f,0.94934f,-0.253379f},{0.183324f,0.950425f,-0.251168f},
-{-0.0297826f,0.831883f,-0.554151f},{-0.180719f,0.855135f,-0.485886f},{-0.598032f,0.776013f,-0.200401f},
-{-0.857929f,0.470815f,0.20565f},{-0.856175f,0.160369f,0.491168f},{-0.765669f,-0.0168231f,0.643014f},
-{-0.656838f,-0.115393f,0.74515f},{-0.492626f,-0.214217f,0.843463f},{-0.212263f,-0.358894f,0.908922f},
-{0.169484f,-0.501572f,0.848352f},{0.583877f,-0.521011f,0.622604f},{0.92203f,-0.305082f,0.238299f},
-{0.986224f,0.0586274f,-0.154675f},{0.863745f,0.332515f,-0.378654f},{0.693047f,0.521436f,-0.497785f},
-{0.463554f,0.677117f,-0.571516f},{0.283588f,0.75075f,-0.596617f},{0.2633f,0.769891f,-0.581327f},
-{0.13991f,0.91351f,0.382f},{0.136627f,0.763066f,0.631715f},{0.230294f,0.853362f,0.467694f},
-{0.193795f,0.727236f,0.658461f},{0.346303f,0.741592f,0.574556f},{0.248184f,0.665563f,0.703868f},
-{0.410724f,0.601945f,0.684812f},{0.282327f,0.587202f,0.758607f},{0.420812f,0.474512f,0.773147f},
-{0.286105f,0.519799f,0.804955f},{0.394192f,0.388462f,0.832892f},{0.271441f,0.482971f,0.832501f},
-{0.348961f,0.345727f,0.871034f},{0.253473f,0.469115f,0.845981f},{0.288397f,0.331318f,0.898363f},
-{0.227904f,0.465937f,0.854963f},{0.205609f,0.337301f,0.918669f},{0.183354f,0.479033f,0.858434f},
-{0.0927382f,0.374539f,0.922562f},{0.122055f,0.518722f,0.846186f},{-0.0476519f,0.463624f,0.88475f},
-{0.0593579f,0.58286f,0.810401f},{-0.180078f,0.598609f,0.780538f},{0.0151815f,0.654338f,0.75605f},
-{-0.249804f,0.732175f,0.633655f},{0.000536048f,0.713225f,0.700935f},{-0.238979f,0.831312f,0.501806f},
-{0.0116876f,0.752305f,0.658711f},{-0.164827f,0.894338f,0.415923f},{0.0414349f,0.773338f,0.632638f},
-{-0.0495883f,0.923567f,0.380217f},{0.0846698f,0.777271f,0.623443f},{0.119615f,0.992173f,-0.035852f},
-{0.26578f,0.955061f,0.131222f},{0.488134f,0.802358f,0.343433f},{0.600233f,0.576303f,0.554613f},
-{0.602773f,0.370741f,0.706552f},{0.548009f,0.239525f,0.801444f},{0.470781f,0.173944f,0.864933f},
-{0.366503f,0.136982f,0.920278f},{0.215389f,0.104768f,0.970892f},{-0.00346019f,0.0981433f,0.995166f},
-{-0.301978f,0.191862f,0.933809f},{-0.572361f,0.418812f,0.704982f},{-0.653782f,0.645133f,0.39544f},
-{-0.583085f,0.795283f,0.165942f},{-0.434465f,0.90003f,0.0344495f},{-0.232282f,0.972393f,-0.0223026f},
-{-0.0629828f,0.980353f,0.186927f},{-0.0646003f,0.980455f,0.185836f},{0.0658797f,0.902312f,-0.426021f},
-{0.275788f,0.926084f,-0.257506f},{0.625976f,0.778258f,0.0496934f},{0.790612f,0.479302f,0.381054f},
-{0.772137f,0.214951f,0.597996f},{0.688996f,0.0606832f,0.72222f},{0.585024f,-0.0246278f,0.810642f},
-{0.429108f,-0.106702f,0.896929f},{0.181204f,-0.217596f,0.959071f},{-0.160618f,-0.312677f,0.936181f},
-{-0.582391f,-0.272557f,0.765855f},{-0.918424f,-0.000439169f,0.395597f},{-0.945892f,0.324477f,-0.00184075f},
-{-0.807139f,0.541361f,-0.235489f},{-0.61697f,0.701103f,-0.357495f},{-0.370398f,0.829668f,-0.41768f},
-{-0.185885f,0.94934f,-0.253379f},{-0.183324f,0.950425f,-0.251168f},{0.0297826f,0.831883f,-0.554151f},
-{0.180719f,0.855135f,-0.485886f},{0.598032f,0.776013f,-0.200402f},{0.857929f,0.470815f,0.20565f},
-{0.856175f,0.16037f,0.491167f},{0.765669f,-0.0168233f,0.643014f},{0.656839f,-0.115393f,0.745149f},
-{0.492626f,-0.214217f,0.843463f},{0.212263f,-0.358894f,0.908922f},{-0.169484f,-0.501571f,0.848352f},
-{-0.583876f,-0.521011f,0.622604f},{-0.92203f,-0.305082f,0.238299f},{-0.986224f,0.0586269f,-0.154675f},
-{-0.863745f,0.332514f,-0.378654f},{-0.693047f,0.521436f,-0.497785f},{-0.463554f,0.677117f,-0.571516f},
-{-0.283588f,0.75075f,-0.596617f},{-0.2633f,0.769891f,-0.581327f}
-},
-
-//lid 6
-{
-{0.18588f,0.467699f,-0.864122f},{0.164569f,0.222549f,-0.960931f},{0.0776709f,0.28004f,-0.956841f},
-{0.119855f,0.505696f,-0.854345f},{-0.077628f,0.383854f,-0.920125f},{0.0565274f,0.570373f,-0.819439f},
-{-0.212757f,0.548379f,-0.808712f},{0.0137009f,0.645146f,-0.763937f},{-0.270868f,0.708583f,-0.651568f},
-{0.00144722f,0.706519f,-0.707693f},{-0.242624f,0.819741f,-0.518804f},{0.0133808f,0.74627f,-0.665509f},
-{-0.155487f,0.88262f,-0.443629f},{0.0427661f,0.769529f,-0.637179f},{-0.0347823f,0.907459f,-0.418699f},
-{0.0908849f,0.777336f,-0.622486f},{0.103208f,0.895443f,-0.433047f},{0.155223f,0.763664f,-0.626677f},
-{0.243236f,0.841282f,-0.482785f},{0.223441f,0.724979f,-0.651521f},{0.36442f,0.743646f,-0.560525f},
-{0.280273f,0.665542f,-0.691738f},{0.443866f,0.618457f,-0.648454f},{0.313675f,0.598365f,-0.73727f},
-{0.471772f,0.49537f,-0.729411f},{0.321239f,0.540099f,-0.777881f},{0.454403f,0.395144f,-0.79836f},
-{0.309857f,0.498331f,-0.809725f},{0.401749f,0.320453f,-0.85785f},{0.284175f,0.47071f,-0.83527f},
-{0.320433f,0.269367f,-0.908165f},{0.242663f,0.45807f,-0.855153f},{0.0869607f,-0.178282f,-0.980129f},
-{-0.0317048f,-0.109602f,-0.99347f},{-0.342502f,0.000655748f,-0.939517f},{-0.633753f,0.283601f,-0.719671f},
-{-0.708418f,0.584765f,-0.395213f},{-0.606138f,0.778497f,-0.162908f},{-0.434607f,0.898751f,-0.0579898f},
-{-0.220487f,0.974733f,-0.0357786f},{0.0234381f,0.996835f,-0.0759604f},{0.27529f,0.944113f,-0.181291f},
-{0.493509f,0.800437f,-0.340221f},{0.626126f,0.593557f,-0.505625f},{0.662475f,0.390644f,-0.639159f},
-{0.627328f,0.22911f,-0.744291f},{0.535737f,0.0995679f,-0.838494f},{0.392946f,-0.0108421f,-0.919498f},
-{0.300356f,0.11447f,-0.946933f},{0.315126f,0.107501f,-0.942942f},{-0.0254372f,-0.545227f,-0.837903f},
-{-0.178221f,-0.515778f,-0.83798f},{-0.581813f,-0.444985f,-0.680795f},{-0.932889f,-0.139635f,-0.331996f},
-{-0.967129f,0.24585f,0.0649586f},{-0.809593f,0.507989f,0.294119f},{-0.609129f,0.691194f,0.38886f},
-{-0.361291f,0.836961f,0.411052f},{-0.0620213f,0.929727f,0.362989f},{0.282972f,0.934857f,0.214405f},
-{0.615301f,0.786983f,-0.0454198f},{0.801931f,0.50525f,-0.318792f},{0.828411f,0.229084f,-0.511132f},
-{0.767789f,0.0192651f,-0.640413f},{0.635529f,-0.158819f,-0.755566f},{0.419196f,-0.323113f,-0.848453f},
-{0.287092f,-0.204083f,-0.93591f},{0.332725f,-0.234094f,-0.913506f},{-0.0777156f,-0.636227f,-0.767578f},
-{-0.185381f,-0.665275f,-0.723217f},{-0.574317f,-0.624742f,-0.529015f},{-0.915037f,-0.372036f,-0.155874f},
-{-0.970312f,0.0155884f,0.241355f},{-0.835734f,0.302763f,0.458131f},{-0.661248f,0.502507f,0.55699f},
-{-0.4389f,0.667767f,0.60121f},{-0.159616f,0.794844f,0.585445f},{0.18591f,0.864414f,0.467146f},
-{0.581437f,0.789583f,0.196187f},{0.849235f,0.504775f,-0.154925f},{0.893859f,0.18134f,-0.410039f},
-{0.828751f,-0.0575603f,-0.556649f},{0.696171f,-0.255841f,-0.67074f},{0.464342f,-0.444749f,-0.765888f},
-{0.24798f,-0.5422f,-0.802823f},{0.288333f,-0.569201f,-0.769983f},{-0.164569f,0.222549f,-0.960931f},
-{-0.18588f,0.467699f,-0.864122f},{-0.0776708f,0.28004f,-0.956841f},{-0.119855f,0.505696f,-0.854346f},
-{0.0776279f,0.383854f,-0.920125f},{-0.0565274f,0.570373f,-0.819439f},{0.212757f,0.548378f,-0.808713f},
-{-0.0137025f,0.645143f,-0.763939f},{0.270868f,0.708582f,-0.651568f},{-0.00144792f,0.706521f,-0.707691f},
-{0.242623f,0.819742f,-0.518803f},{-0.0133807f,0.74627f,-0.665509f},{0.155487f,0.88262f,-0.443629f},
-{-0.042766f,0.769529f,-0.637179f},{0.0347824f,0.907459f,-0.418699f},{-0.0908848f,0.777336f,-0.622486f},
-{-0.103208f,0.895443f,-0.433047f},{-0.155223f,0.763664f,-0.626676f},{-0.243236f,0.841282f,-0.482785f},
-{-0.223441f,0.724979f,-0.651521f},{-0.36442f,0.743646f,-0.560525f},{-0.280274f,0.665541f,-0.691738f},
-{-0.443867f,0.618457f,-0.648455f},{-0.313675f,0.598365f,-0.73727f},{-0.471772f,0.49537f,-0.729411f},
-{-0.32124f,0.540099f,-0.777881f},{-0.454403f,0.395144f,-0.79836f},{-0.309857f,0.49833f,-0.809726f},
-{-0.401749f,0.320453f,-0.85785f},{-0.284176f,0.47071f,-0.83527f},{-0.320433f,0.269367f,-0.908165f},
-{-0.242663f,0.45807f,-0.855153f},{-0.0869606f,-0.178282f,-0.980129f},{0.031705f,-0.109602f,-0.99347f},
-{0.342502f,0.000655692f,-0.939517f},{0.633753f,0.283601f,-0.719671f},{0.708419f,0.584765f,-0.395213f},
-{0.606138f,0.778498f,-0.162908f},{0.434606f,0.898752f,-0.0579898f},{0.220487f,0.974733f,-0.0357785f},
-{-0.0234378f,0.996835f,-0.0759606f},{-0.275291f,0.944112f,-0.181292f},{-0.493509f,0.800437f,-0.340221f},
-{-0.626126f,0.593557f,-0.505625f},{-0.662475f,0.390645f,-0.639158f},{-0.627328f,0.22911f,-0.744291f},
-{-0.535737f,0.099568f,-0.838494f},{-0.392946f,-0.0108418f,-0.919498f},{-0.300357f,0.11447f,-0.946933f},
-{-0.315126f,0.107502f,-0.942942f},{0.0254373f,-0.545227f,-0.837903f},{0.178221f,-0.515778f,-0.83798f},
-{0.581813f,-0.444985f,-0.680795f},{0.932888f,-0.139635f,-0.331996f},{0.967129f,0.24585f,0.0649582f},
-{0.809593f,0.507989f,0.294119f},{0.609129f,0.691194f,0.38886f},{0.361291f,0.836962f,0.411052f},
-{0.0620221f,0.929727f,0.36299f},{-0.282972f,0.934857f,0.214405f},{-0.615301f,0.786982f,-0.0454205f},
-{-0.801931f,0.50525f,-0.318792f},{-0.828411f,0.229084f,-0.511132f},{-0.767789f,0.0192654f,-0.640413f},
-{-0.635529f,-0.158819f,-0.755566f},{-0.419196f,-0.323113f,-0.848453f},{-0.287092f,-0.204083f,-0.935911f},
-{-0.332725f,-0.234094f,-0.913506f},{0.0777156f,-0.636227f,-0.767578f},{0.185381f,-0.665275f,-0.723217f},
-{0.574317f,-0.624742f,-0.529015f},{0.915037f,-0.372037f,-0.155874f},{0.970312f,0.0155882f,0.241355f},
-{0.835734f,0.302764f,0.45813f},{0.661248f,0.502507f,0.55699f},{0.4389f,0.667767f,0.60121f},
-{0.159616f,0.794844f,0.585445f},{-0.185909f,0.864414f,0.467147f},{-0.581437f,0.789583f,0.196187f},
-{-0.849235f,0.504775f,-0.154925f},{-0.893859f,0.18134f,-0.410039f},{-0.828751f,-0.0575601f,-0.556649f},
-{-0.696171f,-0.255841f,-0.67074f},{-0.464342f,-0.44475f,-0.765888f},{-0.24798f,-0.5422f,-0.802823f},
-{-0.288333f,-0.569202f,-0.769983f},{-0.164231f,0.647208f,0.744413f},{-0.168401f,0.825722f,0.538354f},
-{-0.252556f,0.752327f,0.608457f},{-0.218923f,0.609165f,0.762228f},{-0.356681f,0.632058f,0.687955f},
-{-0.270207f,0.544858f,0.7938f},{-0.412454f,0.495243f,0.764602f},{-0.299424f,0.470627f,0.829973f},
-{-0.422015f,0.380859f,0.822709f},{-0.301851f,0.415248f,0.858169f},{-0.401892f,0.308829f,0.862037f},
-{-0.292041f,0.388966f,0.873738f},{-0.363526f,0.271835f,0.891041f},{-0.278694f,0.377274f,0.883173f},
-{-0.304694f,0.252246f,0.918441f},{-0.251401f,0.371711f,0.89366f},{-0.21953f,0.245247f,0.944278f},
-{-0.203426f,0.38298f,0.901079f},{-0.106344f,0.266344f,0.957994f},{-0.14537f,0.419089f,0.896232f},
-{0.027634f,0.342629f,0.939064f},{-0.0921043f,0.475795f,0.87472f},{0.150223f,0.478986f,0.864873f},
-{-0.0560432f,0.540989f,0.83916f},{0.212316f,0.629316f,0.747585f},{-0.0446826f,0.598166f,0.800126f},
-{0.197281f,0.745623f,0.636495f},{-0.0554218f,0.637032f,0.768843f},{0.122751f,0.816344f,0.56437f},
-{-0.0810959f,0.657415f,0.749152f},{0.0109646f,0.843844f,0.536477f},{-0.11762f,0.661328f,0.740818f},
-{-0.150429f,0.979508f,0.133919f},{-0.290601f,0.909681f,0.2967f},{-0.492893f,0.728683f,0.475477f},
-{-0.588316f,0.49644f,0.638304f},{-0.591448f,0.302121f,0.747604f},{-0.550134f,0.182488f,0.814893f},
-{-0.484732f,0.115851f,0.866957f},{-0.378527f,0.0607272f,0.923596f},{-0.212839f,-0.000689027f,0.977087f},
-{0.015943f,-0.0365482f,0.999205f},{0.305805f,0.0359447f,0.951415f},{0.57072f,0.278041f,0.77264f},
-{0.651417f,0.564719f,0.506703f},{0.56895f,0.766234f,0.298632f},{0.409059f,0.893493f,0.185313f},
-{0.201877f,0.968758f,0.144064f},{0.0304928f,0.931217f,0.363189f},{0.0245996f,0.929896f,0.366999f},
-{-0.10373f,0.955245f,-0.277031f},{-0.304298f,0.947159f,-0.101449f},{-0.625893f,0.75942f,0.177593f},
-{-0.773097f,0.445834f,0.451168f},{-0.7627f,0.179062f,0.62147f},{-0.697411f,0.0163115f,0.716486f},
-{-0.606449f,-0.0938258f,0.789567f},{-0.441344f,-0.218556f,0.870316f},{-0.163703f,-0.363292f,0.917181f},
-{0.189081f,-0.461406f,0.866806f},{0.58293f,-0.414287f,0.69897f},{0.912069f,-0.125103f,0.390487f},
-{0.962139f,0.268252f,0.0482682f},{0.817556f,0.55344f,-0.159083f},{0.610798f,0.750085f,-0.25357f},
-{0.349988f,0.891328f,-0.288173f},{0.158433f,0.982699f,-0.0959295f},{0.160262f,0.982234f,-0.0976385f},
-{-0.0706087f,0.906588f,-0.416067f},{-0.213969f,0.914498f,-0.343382f},{-0.603053f,0.79487f,-0.0671517f},
-{-0.837519f,0.469329f,0.279806f},{-0.845853f,0.147687f,0.512563f},{-0.772128f,-0.0502244f,0.633479f},
-{-0.675299f,-0.184114f,0.714194f},{-0.504383f,-0.337547f,0.79477f},{-0.192974f,-0.522644f,0.830424f},
-{0.200919f,-0.646592f,0.735901f},{0.584482f,-0.62365f,0.519077f},{0.903386f,-0.383047f,0.19279f},
-{0.989227f,0.0196845f,-0.145061f},{0.873732f,0.349006f,-0.338803f},{0.693124f,0.580565f,-0.427228f},
-{0.447705f,0.760557f,-0.470226f},{0.253468f,0.841137f,-0.477748f},{0.241386f,0.850733f,-0.46689f},
-{0.168401f,0.825722f,0.538354f},{0.164232f,0.647208f,0.744413f},{0.252556f,0.752327f,0.608457f},
-{0.218923f,0.609165f,0.762227f},{0.35668f,0.632058f,0.687954f},{0.270207f,0.544859f,0.793799f},
-{0.412454f,0.495243f,0.764602f},{0.299424f,0.470627f,0.829973f},{0.422015f,0.380859f,0.822709f},
-{0.301851f,0.415248f,0.85817f},{0.401892f,0.308829f,0.862037f},{0.292041f,0.388965f,0.873738f},
-{0.363526f,0.271835f,0.891041f},{0.278694f,0.377274f,0.883173f},{0.304695f,0.252246f,0.918441f},
-{0.251401f,0.371711f,0.89366f},{0.21953f,0.245247f,0.944278f},{0.203426f,0.38298f,0.901079f},
-{0.106344f,0.266344f,0.957994f},{0.14537f,0.419089f,0.896232f},{-0.0276341f,0.342629f,0.939064f},
-{0.0921045f,0.475795f,0.874721f},{-0.150223f,0.478986f,0.864873f},{0.0560429f,0.540989f,0.83916f},
-{-0.212316f,0.629316f,0.747585f},{0.0446824f,0.598166f,0.800126f},{-0.197281f,0.745623f,0.636495f},
-{0.0554217f,0.637032f,0.768842f},{-0.122751f,0.816344f,0.56437f},{0.0810955f,0.657415f,0.749152f},
-{-0.0109649f,0.843844f,0.536477f},{0.11762f,0.661328f,0.740818f},{0.150429f,0.979508f,0.133919f},
-{0.290601f,0.909681f,0.2967f},{0.492893f,0.728683f,0.475477f},{0.588316f,0.49644f,0.638304f},
-{0.591449f,0.30212f,0.747604f},{0.550134f,0.182488f,0.814893f},{0.484732f,0.115851f,0.866957f},
-{0.378527f,0.0607272f,0.923596f},{0.212839f,-0.000689037f,0.977087f},{-0.015943f,-0.0365482f,0.999205f},
-{-0.305805f,0.0359448f,0.951415f},{-0.57072f,0.278041f,0.77264f},{-0.651417f,0.564719f,0.506703f},
-{-0.56895f,0.766234f,0.298632f},{-0.409059f,0.893493f,0.185313f},{-0.201877f,0.968758f,0.144064f},
-{-0.0304928f,0.931217f,0.363188f},{-0.0245995f,0.929896f,0.366999f},{0.103731f,0.955245f,-0.277031f},
-{0.304298f,0.947159f,-0.101449f},{0.625893f,0.75942f,0.177593f},{0.773097f,0.445834f,0.451168f},
-{0.7627f,0.179062f,0.621471f},{0.697411f,0.0163118f,0.716486f},{0.606449f,-0.0938259f,0.789567f},
-{0.441344f,-0.218556f,0.870316f},{0.163703f,-0.363292f,0.917181f},{-0.189081f,-0.461406f,0.866806f},
-{-0.58293f,-0.414287f,0.69897f},{-0.912069f,-0.125103f,0.390487f},{-0.962139f,0.268252f,0.0482685f},
-{-0.817556f,0.55344f,-0.159082f},{-0.610798f,0.750085f,-0.25357f},{-0.349988f,0.891328f,-0.288172f},
-{-0.158433f,0.982699f,-0.0959295f},{-0.160262f,0.982234f,-0.0976387f},{0.0706102f,0.906589f,-0.416066f},
-{0.213969f,0.914498f,-0.343382f},{0.603053f,0.79487f,-0.0671515f},{0.837519f,0.469329f,0.279806f},
-{0.845853f,0.147687f,0.512564f},{0.772128f,-0.0502239f,0.633479f},{0.675299f,-0.184114f,0.714195f},
-{0.504383f,-0.337547f,0.79477f},{0.192974f,-0.522644f,0.830424f},{-0.200919f,-0.646592f,0.735901f},
-{-0.584483f,-0.62365f,0.519077f},{-0.903386f,-0.383047f,0.19279f},{-0.989227f,0.0196847f,-0.145061f},
-{-0.873732f,0.349006f,-0.338802f},{-0.693124f,0.580565f,-0.427228f},{-0.447705f,0.760557f,-0.470226f},
-{-0.253469f,0.841136f,-0.477748f},{-0.241386f,0.850734f,-0.466889f}
-},
-
-//lid 5
-{
-{0.193444f,0.407529f,-0.892468f},{0.165525f,0.155217f,-0.973914f},{0.0817702f,0.2083f,-0.974641f},
-{0.130027f,0.443981f,-0.886552f},{-0.0700469f,0.308246f,-0.948724f},{0.0698369f,0.508184f,-0.858413f},
-{-0.202986f,0.479244f,-0.853887f},{0.0285804f,0.58596f,-0.809836f},{-0.259965f,0.655945f,-0.708629f},
-{0.0167872f,0.652994f,-0.757177f},{-0.22937f,0.781713f,-0.579925f},{0.0293912f,0.697471f,-0.71601f},
-{-0.13996f,0.851318f,-0.505638f},{0.0589978f,0.723127f,-0.688191f},{-0.0190551f,0.876732f,-0.480602f},
-{0.105824f,0.731903f,-0.673142f},{0.117151f,0.862225f,-0.492791f},{0.168272f,0.71841f,-0.674961f},
-{0.254554f,0.804206f,-0.53708f},{0.23545f,0.678528f,-0.695818f},{0.373057f,0.702449f,-0.60613f},
-{0.29162f,0.616637f,-0.731243f},{0.450121f,0.574444f,-0.683671f},{0.323966f,0.547484f,-0.771562f},
-{0.476569f,0.450249f,-0.755088f},{0.330806f,0.488291f,-0.807552f},{0.458733f,0.348468f,-0.817395f},
-{0.31924f,0.444994f,-0.8367f},{0.405583f,0.269649f,-0.87338f},{0.29274f,0.414652f,-0.861608f},
-{0.32327f,0.212095f,-0.922232f},{0.24994f,0.399549f,-0.881981f},{0.0759488f,-0.244867f,-0.966577f},
-{-0.0372175f,-0.181635f,-0.982661f},{-0.339106f,-0.0810756f,-0.937248f},{-0.630476f,0.204915f,-0.748672f},
-{-0.71242f,0.539226f,-0.449103f},{-0.6053f,0.763821f,-0.224031f},{-0.425226f,0.896448f,-0.124756f},
-{-0.206691f,0.972417f,-0.108088f},{0.0371f,0.98819f,-0.148678f},{0.285431f,0.926163f,-0.246478f},
-{0.498493f,0.773669f,-0.391077f},{0.627033f,0.56197f,-0.539462f},{0.662497f,0.357666f,-0.658159f},
-{0.628481f,0.192969f,-0.753508f},{0.53626f,0.0552887f,-0.84224f},{0.389472f,-0.0657248f,-0.91869f},
-{0.295455f,0.056842f,-0.953664f},{0.316848f,0.0475216f,-0.947285f},{-0.0397306f,-0.599632f,-0.799289f},
-{-0.189195f,-0.569456f,-0.799953f},{-0.578897f,-0.49671f,-0.64665f},{-0.925553f,-0.191261f,-0.326758f},
-{-0.975049f,0.218034f,0.0417236f},{-0.819003f,0.512483f,0.258062f},{-0.611015f,0.715488f,0.338728f},
-{-0.354073f,0.868841f,0.346045f},{-0.0474662f,0.956162f,0.288965f},{0.295731f,0.944569f,0.142591f},
-{0.617105f,0.780581f,-0.0993728f},{0.798058f,0.491737f,-0.348278f},{0.826967f,0.210536f,-0.521345f},
-{0.770201f,-0.00938286f,-0.637732f},{0.637273f,-0.202705f,-0.743501f},{0.413738f,-0.379248f,-0.827642f},
-{0.2762f,-0.263919f,-0.924154f},{0.324592f,-0.293701f,-0.899099f},{-0.089634f,-0.686727f,-0.721368f},
-{-0.196968f,-0.709494f,-0.676625f},{-0.57606f,-0.656331f,-0.487222f},{-0.907761f,-0.396805f,-0.13607f},
-{-0.97175f,0.00107842f,0.236008f},{-0.843724f,0.309278f,0.438722f},{-0.667858f,0.529876f,0.522683f},
-{-0.437969f,0.71117f,0.549927f},{-0.146691f,0.841099f,0.520609f},{0.20301f,0.895177f,0.396793f},
-{0.586122f,0.798484f,0.137423f},{0.843686f,0.503519f,-0.186178f},{0.891329f,0.172679f,-0.419183f},
-{0.830646f,-0.0802118f,-0.550994f},{0.698204f,-0.297244f,-0.651273f},{0.46035f,-0.500613f,-0.733119f},
-{0.239202f,-0.60152f,-0.762205f},{0.275863f,-0.623816f,-0.731268f},{-0.165525f,0.155217f,-0.973914f},
-{-0.193444f,0.407529f,-0.892468f},{-0.0817703f,0.2083f,-0.974641f},{-0.130028f,0.443981f,-0.886552f},
-{0.070047f,0.308246f,-0.948724f},{-0.0698366f,0.508184f,-0.858412f},{0.202986f,0.479244f,-0.853886f},
-{-0.0285805f,0.58596f,-0.809836f},{0.259965f,0.655945f,-0.708629f},{-0.0167873f,0.652994f,-0.757177f},
-{0.22937f,0.781714f,-0.579925f},{-0.0293914f,0.697471f,-0.71601f},{0.13996f,0.851318f,-0.505638f},
-{-0.0589978f,0.723127f,-0.688191f},{0.0190551f,0.876732f,-0.480602f},{-0.105824f,0.731903f,-0.673142f},
-{-0.117152f,0.862225f,-0.492791f},{-0.168272f,0.71841f,-0.674961f},{-0.254554f,0.804206f,-0.53708f},
-{-0.23545f,0.678528f,-0.695818f},{-0.373057f,0.702449f,-0.60613f},{-0.29162f,0.616637f,-0.731243f},
-{-0.450121f,0.574444f,-0.683671f},{-0.323966f,0.547484f,-0.771561f},{-0.476569f,0.450249f,-0.755088f},
-{-0.330806f,0.488291f,-0.807552f},{-0.458733f,0.348468f,-0.817394f},{-0.319241f,0.444994f,-0.836699f},
-{-0.405583f,0.269649f,-0.87338f},{-0.29274f,0.414652f,-0.861608f},{-0.32327f,0.212094f,-0.922232f},
-{-0.249939f,0.399549f,-0.881981f},{-0.0759488f,-0.244867f,-0.966577f},{0.0372174f,-0.181635f,-0.982661f},
-{0.339106f,-0.0810758f,-0.937248f},{0.630476f,0.204915f,-0.748672f},{0.71242f,0.539226f,-0.449103f},
-{0.6053f,0.763821f,-0.224031f},{0.425226f,0.896448f,-0.124756f},{0.206691f,0.972417f,-0.108088f},
-{-0.0370999f,0.98819f,-0.148678f},{-0.285431f,0.926163f,-0.246478f},{-0.498494f,0.773669f,-0.391077f},
-{-0.627033f,0.56197f,-0.539462f},{-0.662496f,0.357666f,-0.658159f},{-0.62848f,0.192969f,-0.753509f},
-{-0.53626f,0.0552887f,-0.84224f},{-0.389472f,-0.0657248f,-0.91869f},{-0.295455f,0.0568416f,-0.953664f},
-{-0.316847f,0.0475212f,-0.947285f},{0.0397307f,-0.599632f,-0.799289f},{0.189195f,-0.569456f,-0.799953f},
-{0.578897f,-0.496711f,-0.64665f},{0.925553f,-0.191262f,-0.326758f},{0.975049f,0.218034f,0.0417234f},
-{0.819003f,0.512483f,0.258062f},{0.611015f,0.715488f,0.338728f},{0.354073f,0.868841f,0.346045f},
-{0.0474661f,0.956162f,0.288965f},{-0.295731f,0.944569f,0.142591f},{-0.617106f,0.78058f,-0.0993727f},
-{-0.798058f,0.491737f,-0.348278f},{-0.826967f,0.210536f,-0.521344f},{-0.770201f,-0.00938315f,-0.637733f},
-{-0.637273f,-0.202705f,-0.743501f},{-0.413738f,-0.379248f,-0.827642f},{-0.2762f,-0.263918f,-0.924154f},
-{-0.324592f,-0.293701f,-0.8991f},{0.0896339f,-0.686727f,-0.721368f},{0.196968f,-0.709494f,-0.676625f},
-{0.57606f,-0.656331f,-0.487222f},{0.907761f,-0.396806f,-0.136069f},{0.971751f,0.001078f,0.236008f},
-{0.843724f,0.309278f,0.438722f},{0.667858f,0.529876f,0.522683f},{0.437969f,0.71117f,0.549927f},
-{0.146691f,0.841099f,0.520609f},{-0.203011f,0.895177f,0.396793f},{-0.586122f,0.798484f,0.137422f},
-{-0.843686f,0.503519f,-0.186178f},{-0.89133f,0.172678f,-0.419182f},{-0.830646f,-0.0802122f,-0.550993f},
-{-0.698204f,-0.297244f,-0.651273f},{-0.46035f,-0.500613f,-0.733119f},{-0.239203f,-0.601519f,-0.762205f},
-{-0.275863f,-0.623816f,-0.731268f},{-0.180068f,0.577236f,0.796476f},{-0.184464f,0.761676f,0.621147f},
-{-0.263986f,0.684387f,0.679651f},{-0.233173f,0.53943f,0.809102f},{-0.360888f,0.565359f,0.741707f},
-{-0.281882f,0.476613f,0.832696f},{-0.413008f,0.435886f,0.799642f},{-0.307999f,0.408132f,0.859398f},
-{-0.423679f,0.331379f,0.843021f},{-0.309908f,0.360869f,0.87962f},{-0.407224f,0.266101f,0.873704f},
-{-0.302213f,0.339523f,0.890725f},{-0.371172f,0.229158f,0.899843f},{-0.289523f,0.327562f,0.899378f},
-{-0.31079f,0.203294f,0.928483f},{-0.259276f,0.319654f,0.911371f},{-0.221476f,0.186725f,0.957122f},
-{-0.208676f,0.329032f,0.920974f},{-0.105951f,0.197938f,0.974472f},{-0.152893f,0.361911f,0.919589f},
-{0.0247945f,0.266447f,0.963531f},{-0.105696f,0.412464f,0.904821f},{0.139783f,0.401472f,0.905141f},
-{-0.0747584f,0.471703f,0.878582f},{0.194322f,0.559025f,0.806058f},{-0.065496f,0.526649f,0.847556f},
-{0.173984f,0.683979f,0.708451f},{-0.0765603f,0.565675f,0.821066f},{0.0973667f,0.758329f,0.64456f},
-{-0.101272f,0.586349f,0.803703f},{-0.0128182f,0.784094f,0.620509f},{-0.13559f,0.590702f,0.795416f},
-{-0.167613f,0.95658f,0.238456f},{-0.302976f,0.868131f,0.393134f},{-0.492446f,0.677089f,0.546852f},
-{-0.580527f,0.448426f,0.679634f},{-0.58693f,0.263618f,0.765519f},{-0.554051f,0.148408f,0.819147f},
-{-0.493685f,0.0752757f,0.866377f},{-0.383034f,0.00329912f,0.923728f},{-0.205087f,-0.0772348f,0.975691f},
-{0.0313089f,-0.126159f,0.991516f},{0.314577f,-0.0622055f,0.947191f},{0.572765f,0.183372f,0.798947f},
-{0.652539f,0.501707f,0.567876f},{0.561476f,0.73558f,0.379034f},{0.392032f,0.876671f,0.278852f},
-{0.180957f,0.951871f,0.247377f},{0.0093866f,0.885281f,0.464963f},{-0.00263635f,0.88147f,0.472233f},
-{-0.124483f,0.975732f,-0.180142f},{-0.318931f,0.947771f,-0.00348479f},{-0.623523f,0.739693f,0.253129f},
-{-0.76216f,0.422483f,0.49053f},{-0.758436f,0.156186f,0.632756f},{-0.704104f,-0.0146938f,0.709945f},
-{-0.618543f,-0.14637f,0.771998f},{-0.444527f,-0.300675f,0.843795f},{-0.148418f,-0.459723f,0.875572f},
-{0.208804f,-0.548394f,0.809731f},{0.584935f,-0.489972f,0.646358f},{0.905722f,-0.196085f,0.37579f},
-{0.97087f,0.227395f,0.0755174f},{0.825811f,0.553351f,-0.10881f},{0.607682f,0.772688f,-0.183509f},
-{0.337269f,0.919679f,-0.201098f},{0.141443f,0.989923f,0.00676962f},{0.143487f,0.989641f,0.00480806f},
-{-0.0933005f,0.94115f,-0.324855f},{-0.231626f,0.939611f,-0.251951f},{-0.604057f,0.796837f,0.0128559f},
-{-0.825195f,0.463072f,0.323448f},{-0.840198f,0.136845f,0.524729f},{-0.776581f,-0.0757791f,0.625444f},
-{-0.684572f,-0.236751f,0.689427f},{-0.505898f,-0.425245f,0.750489f},{-0.17675f,-0.62361f,0.761492f},
-{0.21899f,-0.722456f,0.65582f},{0.585977f,-0.671017f,0.454276f},{0.893638f,-0.418293f,0.162611f},
-{0.990147f,-0.00181478f,-0.140023f},{0.881177f,0.355667f,-0.311494f},{0.694655f,0.61195f,-0.378116f},
-{0.438808f,0.804679f,-0.399924f},{0.236289f,0.887341f,-0.39597f},{0.228909f,0.892442f,-0.388777f},
-{0.184464f,0.761676f,0.621147f},{0.180068f,0.577236f,0.796476f},{0.263986f,0.684387f,0.679651f},
-{0.233173f,0.53943f,0.809102f},{0.360888f,0.565359f,0.741707f},{0.281881f,0.476613f,0.832696f},
-{0.413008f,0.435886f,0.799643f},{0.307998f,0.408132f,0.859398f},{0.423679f,0.331378f,0.843021f},
-{0.309908f,0.360868f,0.87962f},{0.407224f,0.266101f,0.873704f},{0.302213f,0.339523f,0.890725f},
-{0.371172f,0.229158f,0.899843f},{0.289523f,0.327562f,0.899377f},{0.310791f,0.203294f,0.928483f},
-{0.259276f,0.319654f,0.911371f},{0.221476f,0.186725f,0.957122f},{0.208676f,0.329032f,0.920974f},
-{0.105951f,0.197938f,0.974472f},{0.152893f,0.361911f,0.919589f},{-0.0247946f,0.266447f,0.96353f},
-{0.105696f,0.412464f,0.904821f},{-0.139783f,0.401473f,0.905141f},{0.0747584f,0.471704f,0.878582f},
-{-0.194321f,0.559026f,0.806058f},{0.065496f,0.526648f,0.847556f},{-0.173984f,0.683979f,0.708451f},
-{0.0765603f,0.565675f,0.821066f},{-0.0973666f,0.758329f,0.64456f},{0.101272f,0.586349f,0.803703f},
-{0.0128182f,0.784094f,0.620509f},{0.13559f,0.590702f,0.795416f},{0.167613f,0.95658f,0.238456f},
-{0.302976f,0.868131f,0.393134f},{0.492446f,0.677089f,0.546852f},{0.580527f,0.448426f,0.679635f},
-{0.58693f,0.263618f,0.765518f},{0.554051f,0.148408f,0.819147f},{0.493685f,0.0752757f,0.866377f},
-{0.383034f,0.00329909f,0.923728f},{0.205088f,-0.0772348f,0.975691f},{-0.0313088f,-0.126159f,0.991516f},
-{-0.314577f,-0.0622053f,0.947191f},{-0.572765f,0.183371f,0.798946f},{-0.65254f,0.501707f,0.567876f},
-{-0.561476f,0.73558f,0.379034f},{-0.392032f,0.876671f,0.278852f},{-0.180957f,0.951871f,0.247377f},
-{-0.00938683f,0.885281f,0.464963f},{0.0026364f,0.88147f,0.472233f},{0.124484f,0.975732f,-0.180142f},
-{0.318931f,0.947771f,-0.00348472f},{0.623523f,0.739693f,0.253129f},{0.76216f,0.422484f,0.49053f},
-{0.758436f,0.156185f,0.632756f},{0.704104f,-0.0146936f,0.709945f},{0.618543f,-0.14637f,0.771998f},
-{0.444527f,-0.300675f,0.843795f},{0.148418f,-0.459723f,0.875572f},{-0.208804f,-0.548394f,0.809732f},
-{-0.584935f,-0.489972f,0.646358f},{-0.905722f,-0.196085f,0.37579f},{-0.97087f,0.227394f,0.0755171f},
-{-0.825811f,0.55335f,-0.10881f},{-0.607682f,0.772688f,-0.183509f},{-0.337269f,0.919679f,-0.201098f},
-{-0.141444f,0.989923f,0.0067696f},{-0.143487f,0.989641f,0.00480797f},{0.0933005f,0.94115f,-0.324856f},
-{0.231626f,0.939611f,-0.251951f},{0.604057f,0.796837f,0.012856f},{0.825195f,0.463072f,0.323448f},
-{0.840198f,0.136845f,0.524729f},{0.77658f,-0.0757789f,0.625444f},{0.684572f,-0.236751f,0.689427f},
-{0.505898f,-0.425245f,0.750489f},{0.17675f,-0.62361f,0.761492f},{-0.21899f,-0.722456f,0.65582f},
-{-0.585977f,-0.671017f,0.454276f},{-0.893638f,-0.418292f,0.162611f},{-0.990147f,-0.00181415f,-0.140023f},
-{-0.881177f,0.355667f,-0.311494f},{-0.694655f,0.61195f,-0.378116f},{-0.438808f,0.804679f,-0.399924f},
-{-0.236289f,0.887341f,-0.39597f},{-0.228909f,0.892442f,-0.388777f}
-},
-
-//lid 4
-{
-{0.197806f,0.252423f,-0.947183f},{0.152974f,-0.0131419f,-0.988143f},{0.076402f,0.0291397f,-0.996651f},
-{0.141586f,0.282977f,-0.948619f},{-0.0651858f,0.114567f,-0.991275f},{0.0907763f,0.340981f,-0.935677f},
-{-0.188783f,0.288503f,-0.938684f},{0.0551476f,0.4203f,-0.905708f},{-0.240493f,0.497493f,-0.833465f},
-{0.0456548f,0.499267f,-0.865244f},{-0.202638f,0.66064f,-0.722836f},{0.0611606f,0.557154f,-0.828154f},
-{-0.105771f,0.750916f,-0.651872f},{0.0934525f,0.590793f,-0.801393f},{0.0175425f,0.780671f,-0.624695f},
-{0.139504f,0.603068f,-0.785397f},{0.15047f,0.76202f,-0.629829f},{0.198294f,0.591171f,-0.781791f},
-{0.281108f,0.697071f,-0.659599f},{0.261657f,0.550939f,-0.792465f},{0.391376f,0.589919f,-0.706272f},
-{0.313791f,0.487662f,-0.814691f},{0.461111f,0.461151f,-0.758101f},{0.342101f,0.418757f,-0.841195f},
-{0.483411f,0.338155f,-0.807443f},{0.346951f,0.359543f,-0.86623f},{0.463587f,0.232429f,-0.855022f},
-{0.33397f,0.311178f,-0.889737f},{0.407038f,0.141258f,-0.902422f},{0.302905f,0.271678f,-0.913477f},
-{0.318994f,0.0666247f,-0.945412f},{0.25442f,0.249147f,-0.93445f},{0.0393542f,-0.403638f,-0.914072f},
-{-0.0633284f,-0.348984f,-0.934987f},{-0.341741f,-0.268004f,-0.90077f},{-0.622255f,0.00424061f,-0.782803f},
-{-0.723034f,0.396393f,-0.565769f},{-0.608206f,0.699392f,-0.375414f},{-0.40421f,0.8671f,-0.291121f},
-{-0.172562f,0.943235f,-0.283777f},{0.0704847f,0.944233f,-0.321646f},{0.30922f,0.863119f,-0.39926f},
-{0.508772f,0.695251f,-0.507717f},{0.627113f,0.478984f,-0.61425f},{0.661072f,0.274946f,-0.698133f},
-{0.629603f,0.100423f,-0.7704f},{0.533618f,-0.0611259f,-0.843514f},{0.373406f,-0.207599f,-0.904141f},
-{0.272005f,-0.0903327f,-0.958047f},{0.308413f,-0.102804f,-0.945681f},{-0.0753382f,-0.721378f,-0.688431f},
-{-0.221636f,-0.685687f,-0.693333f},{-0.580906f,-0.600102f,-0.549932f},{-0.906914f,-0.30141f,-0.294379f},
-{-0.990017f,0.14083f,-0.00574827f},{-0.844923f,0.508554f,0.165766f},{-0.615889f,0.760283f,0.206519f},
-{-0.333857f,0.926152f,0.175449f},{-0.012656f,0.99492f,0.0998718f},{0.322707f,0.945914f,-0.0332746f},
-{0.619119f,0.751467f,-0.22801f},{0.787733f,0.452378f,-0.418129f},{0.823064f,0.161486f,-0.544508f},
-{0.775054f,-0.0856956f,-0.626057f},{0.638683f,-0.318141f,-0.700622f},{0.397172f,-0.52005f,-0.756176f},
-{0.246139f,-0.418283f,-0.874331f},{0.294987f,-0.443073f,-0.846563f},{-0.116264f,-0.796737f,-0.593036f},
-{-0.226117f,-0.802769f,-0.551755f},{-0.586943f,-0.715357f,-0.379158f},{-0.89438f,-0.440125f,-0.0798445f},
-{-0.973234f,-0.0311641f,0.227692f},{-0.864269f,0.318505f,0.389351f},{-0.684692f,0.588076f,0.430538f},
-{-0.433616f,0.80353f,0.40782f},{-0.11501f,0.932725f,0.341755f},{0.240096f,0.946978f,0.213511f},
-{0.593785f,0.804597f,-0.00656442f},{0.829619f,0.49272f,-0.262602f},{0.884967f,0.146821f,-0.441901f},
-{0.834044f,-0.142061f,-0.533093f},{0.699282f,-0.404508f,-0.589388f},{0.447792f,-0.634866f,-0.629625f},
-{0.219984f,-0.737571f,-0.638433f},{0.244461f,-0.748524f,-0.616401f},{-0.152973f,-0.0131418f,-0.988143f},
-{-0.197805f,0.252424f,-0.947183f},{-0.0764017f,0.0291398f,-0.996651f},{-0.141586f,0.282977f,-0.948619f},
-{0.0651859f,0.114567f,-0.991275f},{-0.0907765f,0.340981f,-0.935677f},{0.188783f,0.288503f,-0.938684f},
-{-0.0551476f,0.4203f,-0.905708f},{0.240493f,0.497493f,-0.833465f},{-0.0456548f,0.499267f,-0.865244f},
-{0.202638f,0.66064f,-0.722836f},{-0.0611606f,0.557154f,-0.828154f},{0.105771f,0.750916f,-0.651872f},
-{-0.0934527f,0.590793f,-0.801393f},{-0.0175423f,0.780672f,-0.624695f},{-0.139504f,0.603067f,-0.785397f},
-{-0.15047f,0.76202f,-0.629829f},{-0.198294f,0.591171f,-0.781791f},{-0.281108f,0.697071f,-0.659599f},
-{-0.261658f,0.550939f,-0.792466f},{-0.391376f,0.589919f,-0.706272f},{-0.313791f,0.487663f,-0.81469f},
-{-0.46111f,0.46115f,-0.758101f},{-0.342102f,0.418756f,-0.841196f},{-0.483411f,0.338154f,-0.807443f},
-{-0.346951f,0.359543f,-0.86623f},{-0.463587f,0.23243f,-0.855022f},{-0.333971f,0.311179f,-0.889737f},
-{-0.407039f,0.141259f,-0.902422f},{-0.302905f,0.271678f,-0.913477f},{-0.318994f,0.0666247f,-0.945412f},
-{-0.25442f,0.249147f,-0.93445f},{-0.0393541f,-0.403638f,-0.914072f},{0.0633285f,-0.348984f,-0.934987f},
-{0.341741f,-0.268004f,-0.90077f},{0.622255f,0.00424059f,-0.782803f},{0.723034f,0.396392f,-0.565769f},
-{0.608206f,0.699393f,-0.375414f},{0.40421f,0.8671f,-0.291121f},{0.172562f,0.943235f,-0.283777f},
-{-0.0704845f,0.944233f,-0.321646f},{-0.30922f,0.863119f,-0.39926f},{-0.508772f,0.695251f,-0.507717f},
-{-0.627113f,0.478984f,-0.61425f},{-0.661072f,0.274945f,-0.698133f},{-0.629603f,0.100424f,-0.7704f},
-{-0.533618f,-0.0611257f,-0.843514f},{-0.373405f,-0.207599f,-0.904141f},{-0.272005f,-0.0903328f,-0.958047f},
-{-0.308413f,-0.102804f,-0.945681f},{0.0753384f,-0.721378f,-0.688431f},{0.221636f,-0.685687f,-0.693333f},
-{0.580906f,-0.600103f,-0.549932f},{0.906914f,-0.301409f,-0.294379f},{0.990017f,0.14083f,-0.00574841f},
-{0.844923f,0.508554f,0.165766f},{0.615889f,0.760283f,0.206519f},{0.333857f,0.926152f,0.175449f},
-{0.012656f,0.99492f,0.0998718f},{-0.322707f,0.945914f,-0.0332747f},{-0.619119f,0.751468f,-0.22801f},
-{-0.787733f,0.452378f,-0.418128f},{-0.823064f,0.161485f,-0.544508f},{-0.775054f,-0.0856957f,-0.626057f},
-{-0.638683f,-0.318141f,-0.700622f},{-0.397172f,-0.52005f,-0.756176f},{-0.246138f,-0.418282f,-0.874332f},
-{-0.294987f,-0.443073f,-0.846563f},{0.116265f,-0.796737f,-0.593037f},{0.226117f,-0.802769f,-0.551755f},
-{0.586943f,-0.715357f,-0.379159f},{0.89438f,-0.440125f,-0.0798443f},{0.973234f,-0.031164f,0.227692f},
-{0.864269f,0.318505f,0.389351f},{0.684692f,0.588076f,0.430539f},{0.433616f,0.803529f,0.40782f},
-{0.11501f,0.932725f,0.341755f},{-0.240096f,0.946978f,0.213511f},{-0.593785f,0.804597f,-0.00656453f},
-{-0.829619f,0.49272f,-0.262602f},{-0.884968f,0.146821f,-0.4419f},{-0.834045f,-0.142061f,-0.533093f},
-{-0.699282f,-0.404508f,-0.589388f},{-0.447792f,-0.634866f,-0.629625f},{-0.219984f,-0.737571f,-0.638433f},
-{-0.24446f,-0.748524f,-0.616401f},{-0.208426f,0.467505f,0.859068f},{-0.21141f,0.645342f,0.734057f},
-{-0.282958f,0.5677f,0.773079f},{-0.258987f,0.431703f,0.864036f},{-0.368601f,0.458411f,0.808698f},
-{-0.303103f,0.374109f,0.876454f},{-0.416668f,0.346642f,0.840374f},{-0.324375f,0.31716f,0.891174f},
-{-0.430617f,0.259782f,0.864339f},{-0.325747f,0.282993f,0.902111f},{-0.420251f,0.203556f,0.884282f},
-{-0.320713f,0.268048f,0.908457f},{-0.386943f,0.162916f,0.907598f},{-0.307412f,0.253854f,0.917091f},
-{-0.322163f,0.122735f,0.938695f},{-0.27108f,0.240458f,0.932038f},{-0.223762f,0.0878124f,0.97068f},
-{-0.21604f,0.245468f,0.945025f},{-0.10262f,0.0825365f,0.991291f},{-0.16423f,0.272449f,0.948051f},
-{0.0234933f,0.139016f,0.990011f},{-0.126689f,0.312363f,0.941477f},{0.125261f,0.270589f,0.954511f},
-{-0.103528f,0.360547f,0.926978f},{0.165273f,0.437098f,0.884098f},{-0.0972457f,0.411136f,0.906372f},
-{0.133677f,0.573686f,0.808093f},{-0.109202f,0.451287f,0.885672f},{0.0521017f,0.651921f,0.756495f},
-{-0.133792f,0.473599f,0.870519f},{-0.0551972f,0.673656f,0.736981f},{-0.166331f,0.479272f,0.861761f},
-{-0.194724f,0.892923f,0.40592f},{-0.321362f,0.778328f,0.539381f},{-0.489835f,0.58226f,0.648872f},
-{-0.569077f,0.369664f,0.734506f},{-0.583491f,0.204904f,0.785845f},{-0.565193f,0.0957166f,0.819387f},
-{-0.512484f,0.00638424f,0.858673f},{-0.392507f,-0.0996617f,0.914333f},{-0.192249f,-0.211968f,0.958181f},
-{0.0562841f,-0.275946f,0.959524f},{0.32738f,-0.221716f,0.918512f},{0.573276f,0.0211426f,0.819089f},
-{0.653155f,0.381962f,0.65383f},{0.546416f,0.668325f,0.504748f},{0.357923f,0.829639f,0.428475f},
-{0.140622f,0.899867f,0.412874f},{-0.0284427f,0.788122f,0.614862f},{-0.0532601f,0.776915f,0.627349f},
-{-0.157489f,0.987401f,-0.0154112f},{-0.342529f,0.926003f,0.158719f},{-0.619782f,0.690843f,0.372299f},
-{-0.744927f,0.377356f,0.550169f},{-0.752895f,0.119041f,0.647285f},{-0.717327f,-0.0636677f,0.693822f},
-{-0.639658f,-0.233703f,0.732271f},{-0.449197f,-0.43605f,0.779796f},{-0.124989f,-0.610088f,0.782413f},
-{0.23555f,-0.675885f,0.698352f},{0.5842f,-0.598166f,0.54855f},{0.89061f,-0.305432f,0.336936f},
-{0.982168f,0.152087f,0.110523f},{0.839266f,0.543118f,-0.0256032f},{0.599899f,0.797656f,-0.0621713f},
-{0.313645f,0.948255f,-0.0493838f},{0.112243f,0.977134f,0.180584f},{0.109262f,0.976934f,0.183471f},
-{-0.130507f,0.977203f,-0.167459f},{-0.261054f,0.960363f,-0.0977477f},{-0.60797f,0.781317f,0.141124f},
-{-0.806985f,0.441576f,0.392157f},{-0.831542f,0.116681f,0.543069f},{-0.785144f,-0.11618f,0.608318f},
-{-0.700039f,-0.321851f,0.637462f},{-0.505872f,-0.56167f,0.654691f},{-0.151627f,-0.765957f,0.624755f},
-{0.241223f,-0.821394f,0.51684f},{0.585322f,-0.732453f,0.347723f},{0.87707f,-0.467825f,0.109029f},
-{0.989822f,-0.0383588f,-0.137044f},{0.893267f,0.361677f,-0.266953f},{0.695714f,0.656377f,-0.291808f},
-{0.422793f,0.86367f,-0.274445f},{0.208815f,0.94524f,-0.250834f},{0.208427f,0.945437f,-0.250415f},
-{0.21141f,0.645342f,0.734057f},{0.208426f,0.467506f,0.859068f},{0.282958f,0.5677f,0.773079f},
-{0.258987f,0.431703f,0.864036f},{0.368601f,0.458412f,0.808698f},{0.303103f,0.374109f,0.876454f},
-{0.416668f,0.346641f,0.840374f},{0.324375f,0.317159f,0.891174f},{0.430617f,0.259782f,0.864339f},
-{0.325748f,0.282993f,0.90211f},{0.420251f,0.203557f,0.884282f},{0.320713f,0.268048f,0.908457f},
-{0.386943f,0.162916f,0.907598f},{0.307412f,0.253853f,0.917091f},{0.322162f,0.122735f,0.938695f},
-{0.27108f,0.240458f,0.932038f},{0.223762f,0.0878123f,0.97068f},{0.21604f,0.245468f,0.945025f},
-{0.10262f,0.0825365f,0.991291f},{0.16423f,0.272449f,0.948051f},{-0.0234933f,0.139016f,0.990011f},
-{0.126689f,0.312363f,0.941477f},{-0.125261f,0.270589f,0.954511f},{0.103528f,0.360547f,0.926978f},
-{-0.165273f,0.437098f,0.884099f},{0.0972457f,0.411136f,0.906372f},{-0.133677f,0.573686f,0.808093f},
-{0.109202f,0.451287f,0.885672f},{-0.0521018f,0.651921f,0.756495f},{0.133792f,0.473599f,0.870519f},
-{0.0551972f,0.673656f,0.736981f},{0.166331f,0.479272f,0.861761f},{0.194723f,0.892923f,0.40592f},
-{0.321362f,0.778328f,0.539381f},{0.489835f,0.58226f,0.648872f},{0.569077f,0.369664f,0.734506f},
-{0.583491f,0.204904f,0.785845f},{0.565193f,0.0957165f,0.819387f},{0.512484f,0.00638429f,0.858673f},
-{0.392507f,-0.0996618f,0.914333f},{0.192249f,-0.211968f,0.95818f},{-0.0562842f,-0.275946f,0.959524f},
-{-0.32738f,-0.221716f,0.918512f},{-0.573277f,0.0211428f,0.819089f},{-0.653155f,0.381962f,0.65383f},
-{-0.546416f,0.668325f,0.504748f},{-0.357923f,0.829639f,0.428475f},{-0.140621f,0.899867f,0.412874f},
-{0.0284431f,0.788121f,0.614862f},{0.0532601f,0.776915f,0.627349f},{0.157489f,0.987401f,-0.015411f},
-{0.342529f,0.926003f,0.158719f},{0.619782f,0.690843f,0.372299f},{0.744927f,0.377355f,0.55017f},
-{0.752895f,0.119041f,0.647285f},{0.717327f,-0.0636679f,0.693822f},{0.639658f,-0.233703f,0.732271f},
-{0.449197f,-0.43605f,0.779796f},{0.124989f,-0.610088f,0.782413f},{-0.23555f,-0.675885f,0.698352f},
-{-0.5842f,-0.598167f,0.54855f},{-0.89061f,-0.305431f,0.336936f},{-0.982168f,0.152087f,0.110523f},
-{-0.839266f,0.543117f,-0.0256036f},{-0.5999f,0.797656f,-0.0621718f},{-0.313645f,0.948255f,-0.0493838f},
-{-0.112243f,0.977134f,0.180583f},{-0.109261f,0.976934f,0.183472f},{0.130507f,0.977203f,-0.167459f},
-{0.261054f,0.960363f,-0.0977474f},{0.607969f,0.781317f,0.141124f},{0.806984f,0.441576f,0.392157f},
-{0.831542f,0.116681f,0.543069f},{0.785144f,-0.11618f,0.608318f},{0.700039f,-0.32185f,0.637462f},
-{0.505872f,-0.56167f,0.654691f},{0.151627f,-0.765957f,0.624755f},{-0.241224f,-0.821394f,0.51684f},
-{-0.585322f,-0.732453f,0.347722f},{-0.87707f,-0.467826f,0.109028f},{-0.989822f,-0.0383587f,-0.137044f},
-{-0.893267f,0.361677f,-0.266952f},{-0.695714f,0.656377f,-0.291808f},{-0.422793f,0.86367f,-0.274445f},
-{-0.208815f,0.94524f,-0.250834f},{-0.208427f,0.945437f,-0.250415f}
-},
-
-//lid 3
-{
-{0.19311f,0.19139f,-0.96233f},{0.142208f,-0.0774502f,-0.986802f},{0.0678547f,-0.0384938f,-0.996952f},
-{0.13967f,0.219289f,-0.965611f},{-0.0696221f,0.0408271f,-0.996738f},{0.0926616f,0.273519f,-0.957393f},
-{-0.188488f,0.211241f,-0.959088f},{0.0595677f,0.351221f,-0.934396f},{-0.237285f,0.427549f,-0.872294f},
-{0.0513543f,0.433495f,-0.899691f},{-0.196157f,0.604068f,-0.772415f},{0.0685151f,0.496912f,-0.865092f},
-{-0.0957246f,0.703615f,-0.704104f},{0.102755f,0.534448f,-0.838932f},{0.0293679f,0.736459f,-0.675844f},
-{0.149571f,0.54853f,-0.822644f},{0.161603f,0.717349f,-0.677713f},{0.207462f,0.537636f,-0.817256f},
-{0.289597f,0.651122f,-0.701551f},{0.268886f,0.498353f,-0.824224f},{0.3962f,0.544012f,-0.739646f},
-{0.318634f,0.436497f,-0.841393f},{0.462795f,0.417077f,-0.782219f},{0.345075f,0.369444f,-0.862806f},
-{0.483462f,0.295309f,-0.824049f},{0.349167f,0.310606f,-0.884085f},{0.462611f,0.187373f,-0.866535f},
-{0.335206f,0.259551f,-0.905688f},{0.403961f,0.0904898f,-0.91029f},{0.301477f,0.215711f,-0.928752f},
-{0.312545f,0.00928211f,-0.949858f},{0.250059f,0.189983f,-0.949409f},{0.0226189f,-0.461349f,-0.88693f},
-{-0.0777483f,-0.407964f,-0.909682f},{-0.347637f,-0.331404f,-0.877109f},{-0.62028f,-0.0696448f,-0.781283f},
-{-0.72716f,0.332372f,-0.600639f},{-0.61173f,0.662993f,-0.431541f},{-0.39808f,0.845991f,-0.354728f},
-{-0.160319f,0.923082f,-0.349597f},{0.0827605f,0.919205f,-0.384985f},{0.317574f,0.832385f,-0.454183f},
-{0.511501f,0.661363f,-0.548603f},{0.625966f,0.446074f,-0.639675f},{0.659684f,0.2427f,-0.711276f},
-{0.629048f,0.0628337f,-0.774823f},{0.530845f,-0.10926f,-0.840396f},{0.36452f,-0.264439f,-0.892859f},
-{0.259041f,-0.148767f,-0.954341f},{0.299861f,-0.161339f,-0.940241f},{-0.0884018f,-0.762538f,-0.640876f},
-{-0.235609f,-0.723775f,-0.648566f},{-0.585528f,-0.630369f,-0.509698f},{-0.900905f,-0.335078f,-0.275848f},
-{-0.993743f,0.110014f,-0.0192989f},{-0.855874f,0.50061f,0.129883f},{-0.618627f,0.770592f,0.15326f},
-{-0.32579f,0.939296f,0.107627f},{0.000229109f,0.999641f,0.0267795f},{0.331651f,0.938181f,-0.09912f},
-{0.618913f,0.735647f,-0.275264f},{0.783293f,0.435371f,-0.443738f},{0.821251f,0.141209f,-0.552817f},
-{0.775996f,-0.117576f,-0.619682f},{0.637531f,-0.364574f,-0.678704f},{0.389838f,-0.573292f,-0.720668f},
-{0.234329f,-0.478618f,-0.846177f},{0.280671f,-0.500188f,-0.819167f},{-0.125194f,-0.832553f,-0.539613f},
-{-0.23729f,-0.832272f,-0.501016f},{-0.593865f,-0.730879f,-0.336364f},{-0.891521f,-0.44951f,-0.0559531f},
-{-0.973153f,-0.0412239f,0.226436f},{-0.872411f,0.319219f,0.370133f},{-0.691725f,0.605878f,0.392973f},
-{-0.431433f,0.831836f,0.349162f},{-0.103034f,0.957642f,0.268899f},{0.252442f,0.957152f,0.141888f},
-{0.595298f,0.801204f,-0.0607619f},{0.823888f,0.48597f,-0.291617f},{0.882366f,0.135114f,-0.450749f},
-{0.834461f,-0.168251f,-0.524753f},{0.697484f,-0.446476f,-0.560514f},{0.441864f,-0.682478f,-0.58222f},
-{0.213859f,-0.783387f,-0.583584f},{0.2332f,-0.79081f,-0.565895f},{-0.142208f,-0.0774502f,-0.986802f},
-{-0.19311f,0.19139f,-0.96233f},{-0.0678546f,-0.0384938f,-0.996952f},{-0.13967f,0.219289f,-0.965611f},
-{0.0696222f,0.0408271f,-0.996738f},{-0.0926615f,0.273519f,-0.957393f},{0.188488f,0.211241f,-0.959088f},
-{-0.0595678f,0.351221f,-0.934396f},{0.237285f,0.427549f,-0.872294f},{-0.0513544f,0.433495f,-0.899691f},
-{0.196157f,0.604068f,-0.772415f},{-0.0685151f,0.496912f,-0.865092f},{0.0957247f,0.703616f,-0.704104f},
-{-0.102755f,0.534448f,-0.838932f},{-0.029368f,0.73646f,-0.675844f},{-0.149571f,0.548531f,-0.822644f},
-{-0.161603f,0.717349f,-0.677713f},{-0.207461f,0.537636f,-0.817256f},{-0.289597f,0.651122f,-0.701551f},
-{-0.268886f,0.498353f,-0.824224f},{-0.396201f,0.544011f,-0.739646f},{-0.318635f,0.436497f,-0.841393f},
-{-0.462795f,0.417077f,-0.782219f},{-0.345075f,0.369444f,-0.862806f},{-0.483462f,0.295309f,-0.824049f},
-{-0.349167f,0.310605f,-0.884085f},{-0.462611f,0.187373f,-0.866535f},{-0.335206f,0.259552f,-0.905687f},
-{-0.403961f,0.09049f,-0.910289f},{-0.301477f,0.215711f,-0.928752f},{-0.312545f,0.00928195f,-0.949857f},
-{-0.250059f,0.189983f,-0.949409f},{-0.0226189f,-0.46135f,-0.88693f},{0.0777483f,-0.407964f,-0.909681f},
-{0.347638f,-0.331404f,-0.877109f},{0.62028f,-0.0696447f,-0.781283f},{0.72716f,0.332372f,-0.600639f},
-{0.61173f,0.662993f,-0.431541f},{0.39808f,0.845991f,-0.354728f},{0.160319f,0.923082f,-0.349597f},
-{-0.0827604f,0.919205f,-0.384985f},{-0.317574f,0.832385f,-0.454183f},{-0.511501f,0.661363f,-0.548603f},
-{-0.625966f,0.446074f,-0.639675f},{-0.659685f,0.242701f,-0.711275f},{-0.629047f,0.0628333f,-0.774824f},
-{-0.530845f,-0.10926f,-0.840396f},{-0.36452f,-0.26444f,-0.892859f},{-0.259042f,-0.148767f,-0.954341f},
-{-0.299861f,-0.161339f,-0.940241f},{0.0884017f,-0.762538f,-0.640876f},{0.235608f,-0.723775f,-0.648566f},
-{0.585528f,-0.630369f,-0.509698f},{0.900905f,-0.335078f,-0.275848f},{0.993743f,0.110014f,-0.0192989f},
-{0.855874f,0.50061f,0.129883f},{0.618627f,0.770592f,0.153259f},{0.325789f,0.939296f,0.107627f},
-{-0.000229102f,0.999641f,0.0267794f},{-0.331651f,0.938181f,-0.0991201f},{-0.618913f,0.735647f,-0.275264f},
-{-0.783293f,0.435371f,-0.443739f},{-0.821251f,0.141209f,-0.552817f},{-0.775996f,-0.117575f,-0.619682f},
-{-0.637531f,-0.364574f,-0.678704f},{-0.389838f,-0.573292f,-0.720668f},{-0.234329f,-0.478618f,-0.846177f},
-{-0.280672f,-0.500188f,-0.819167f},{0.125194f,-0.832552f,-0.539614f},{0.23729f,-0.832272f,-0.501016f},
-{0.593865f,-0.730879f,-0.336363f},{0.891521f,-0.44951f,-0.0559528f},{0.973153f,-0.0412245f,0.226437f},
-{0.872411f,0.319219f,0.370134f},{0.691726f,0.605878f,0.392973f},{0.431433f,0.831836f,0.349161f},
-{0.103034f,0.957642f,0.268899f},{-0.252442f,0.957152f,0.141888f},{-0.595298f,0.801204f,-0.0607619f},
-{-0.823888f,0.485971f,-0.291617f},{-0.882366f,0.135114f,-0.45075f},{-0.834461f,-0.168251f,-0.524753f},
-{-0.697484f,-0.446475f,-0.560514f},{-0.441864f,-0.682478f,-0.58222f},{-0.213859f,-0.783387f,-0.583584f},
-{-0.2332f,-0.79081f,-0.565895f},{-0.229669f,0.394981f,0.889518f},{-0.231123f,0.558736f,0.79649f},
-{-0.296793f,0.48526f,0.822458f},{-0.27818f,0.361869f,0.889757f},{-0.375088f,0.387567f,0.842082f},
-{-0.3186f,0.309805f,0.895832f},{-0.421505f,0.290791f,0.858938f},{-0.336716f,0.261486f,0.90457f},
-{-0.438512f,0.215537f,0.872497f},{-0.337864f,0.234783f,0.911441f},{-0.432128f,0.162153f,0.887114f},
-{-0.333658f,0.221571f,0.916285f},{-0.399382f,0.113997f,0.909669f},{-0.318071f,0.203324f,0.926008f},
-{-0.329136f,0.0589227f,0.942442f},{-0.276121f,0.184141f,0.943318f},{-0.221544f,0.00826323f,0.975115f},
-{-0.217713f,0.184842f,0.95835f},{-0.0944669f,-0.00852958f,0.995491f},{-0.168781f,0.207319f,0.963604f},
-{0.0290205f,0.0408228f,0.998745f},{-0.137636f,0.239871f,0.960999f},{0.120965f,0.170167f,0.977962f},
-{-0.119261f,0.280395f,0.952447f},{0.148983f,0.342616f,0.927587f},{-0.114791f,0.328866f,0.937374f},
-{0.106802f,0.487704f,0.866452f},{-0.128197f,0.372061f,0.919313f},{0.0195776f,0.569159f,0.821994f},
-{-0.154669f,0.397586f,0.904435f},{-0.0864364f,0.588895f,0.803574f},{-0.188131f,0.405089f,0.894712f},
-{-0.213787f,0.826684f,0.520469f},{-0.33275f,0.699806f,0.632099f},{-0.486569f,0.510276f,0.709133f},
-{-0.562541f,0.316054f,0.763975f},{-0.58474f,0.166721f,0.793903f},{-0.577003f,0.0581446f,0.81467f},
-{-0.5284f,-0.0497126f,0.847539f},{-0.398676f,-0.186188f,0.897993f},{-0.17981f,-0.319832f,0.930256f},
-{0.0771954f,-0.387706f,0.918545f},{0.338345f,-0.336226f,0.878906f},{0.573425f,-0.101638f,0.812929f},
-{0.654623f,0.279956f,0.702206f},{0.53579f,0.60401f,0.590001f},{0.329575f,0.779685f,0.532421f},
-{0.106662f,0.843401f,0.526591f},{-0.0582746f,0.705608f,0.706202f},{-0.0917435f,0.688008f,0.719881f},
-{-0.18003f,0.977476f,0.110137f},{-0.357939f,0.891518f,0.277623f},{-0.615207f,0.644291f,0.454323f},
-{-0.732591f,0.34145f,0.588832f},{-0.750623f,0.0927056f,0.654195f},{-0.728923f,-0.0996895f,0.677299f},
-{-0.654723f,-0.300832f,0.693425f},{-0.44952f,-0.535469f,0.714986f},{-0.106872f,-0.711745f,0.69426f},
-{0.252943f,-0.755576f,0.604256f},{0.582754f,-0.663256f,0.469562f},{0.876843f,-0.377081f,0.298256f},
-{0.987578f,0.0908329f,0.128218f},{0.85011f,0.525354f,0.0362723f},{0.592618f,0.80484f,0.0321829f},
-{0.293156f,0.953591f,0.0687309f},{0.0880785f,0.946859f,0.309353f},{0.0767341f,0.944294f,0.320033f},
-{-0.156098f,0.986732f,-0.0446366f},{-0.281294f,0.959401f,0.0205867f},{-0.610051f,0.757103f,0.233735f},
-{-0.794174f,0.419187f,0.439966f},{-0.826092f,0.100254f,0.554546f},{-0.792747f,-0.146156f,0.59177f},
-{-0.710556f,-0.384711f,0.589158f},{-0.501651f,-0.653698f,0.566591f},{-0.133125f,-0.849606f,0.510341f},
-{0.253964f,-0.875214f,0.411708f},{0.584528f,-0.765206f,0.269789f},{0.86544f,-0.496404f,0.0677977f},
-{0.988373f,-0.0650512f,-0.13743f},{0.90281f,0.361254f,-0.2333f},{0.696363f,0.682041f,-0.223379f},
-{0.410113f,0.895258f,-0.174126f},{0.189645f,0.972416f,-0.135803f},{0.191705f,0.971681f,-0.138152f},
-{0.231123f,0.558736f,0.79649f},{0.229668f,0.394981f,0.889518f},{0.296793f,0.48526f,0.822458f},
-{0.27818f,0.361869f,0.889757f},{0.375088f,0.387566f,0.842082f},{0.318601f,0.309804f,0.895832f},
-{0.421505f,0.290791f,0.858938f},{0.336717f,0.261487f,0.90457f},{0.438512f,0.215537f,0.872497f},
-{0.337864f,0.234783f,0.911441f},{0.432128f,0.162153f,0.887114f},{0.333659f,0.221571f,0.916285f},
-{0.399382f,0.113997f,0.909669f},{0.318071f,0.203323f,0.926008f},{0.329136f,0.0589225f,0.942442f},
-{0.27612f,0.184141f,0.943319f},{0.221544f,0.00826301f,0.975115f},{0.217714f,0.184842f,0.95835f},
-{0.0944672f,-0.00852984f,0.995491f},{0.168781f,0.207319f,0.963604f},{-0.0290205f,0.0408228f,0.998745f},
-{0.137636f,0.23987f,0.960999f},{-0.120965f,0.170168f,0.977962f},{0.119261f,0.280396f,0.952447f},
-{-0.148983f,0.342615f,0.927587f},{0.114791f,0.328866f,0.937374f},{-0.106802f,0.487704f,0.866452f},
-{0.128197f,0.372061f,0.919313f},{-0.0195775f,0.569159f,0.821994f},{0.154669f,0.397586f,0.904435f},
-{0.0864366f,0.588895f,0.803574f},{0.188132f,0.405089f,0.894712f},{0.213787f,0.826684f,0.52047f},
-{0.332749f,0.699806f,0.632099f},{0.486569f,0.510276f,0.709133f},{0.562541f,0.316053f,0.763975f},
-{0.58474f,0.166722f,0.793903f},{0.577003f,0.0581448f,0.81467f},{0.5284f,-0.0497127f,0.847539f},
-{0.398676f,-0.186189f,0.897993f},{0.17981f,-0.319832f,0.930256f},{-0.0771954f,-0.387706f,0.918545f},
-{-0.338345f,-0.336226f,0.878906f},{-0.573425f,-0.101638f,0.812929f},{-0.654623f,0.279956f,0.702206f},
-{-0.535791f,0.60401f,0.590001f},{-0.329575f,0.779685f,0.53242f},{-0.106662f,0.843401f,0.526591f},
-{0.0582748f,0.705608f,0.706202f},{0.0917444f,0.688007f,0.719881f},{0.18003f,0.977476f,0.110137f},
-{0.35794f,0.891518f,0.277623f},{0.615207f,0.644291f,0.454323f},{0.732591f,0.341449f,0.588832f},
-{0.750623f,0.0927057f,0.654195f},{0.728923f,-0.0996895f,0.677299f},{0.654723f,-0.300832f,0.693425f},
-{0.44952f,-0.535469f,0.714986f},{0.106872f,-0.711745f,0.69426f},{-0.252943f,-0.755576f,0.604256f},
-{-0.582754f,-0.663256f,0.469562f},{-0.876843f,-0.377081f,0.298256f},{-0.987578f,0.0908331f,0.128219f},
-{-0.85011f,0.525354f,0.0362722f},{-0.592618f,0.80484f,0.0321824f},{-0.293156f,0.953591f,0.0687308f},
-{-0.0880785f,0.946859f,0.309353f},{-0.0767339f,0.944294f,0.320033f},{0.156098f,0.986732f,-0.0446371f},
-{0.281294f,0.959401f,0.0205868f},{0.610051f,0.757103f,0.233736f},{0.794174f,0.419187f,0.439966f},
-{0.826092f,0.100253f,0.554546f},{0.792747f,-0.146156f,0.591769f},{0.710556f,-0.384711f,0.589158f},
-{0.501651f,-0.653698f,0.566591f},{0.133125f,-0.849606f,0.510341f},{-0.253964f,-0.875214f,0.411708f},
-{-0.584528f,-0.765207f,0.269788f},{-0.86544f,-0.496404f,0.0677973f},{-0.988373f,-0.0650511f,-0.137429f},
-{-0.90281f,0.361254f,-0.2333f},{-0.696363f,0.682041f,-0.223379f},{-0.410113f,0.895258f,-0.174126f},
-{-0.189645f,0.972416f,-0.135803f},{-0.191705f,0.971681f,-0.138152f}
-},
-
-//lid 2
-{
-{0.187256f,0.116412f,-0.975389f},{0.129319f,-0.155775f,-0.979291f},{0.0579089f,-0.120735f,-0.990994f},
-{0.137498f,0.140876f,-0.980433f},{-0.0738917f,-0.0492811f,-0.996048f},{0.0954745f,0.189637f,-0.977201f},
-{-0.186073f,0.114379f,-0.975856f},{0.0656717f,0.26388f,-0.962317f},{-0.230893f,0.336505f,-0.912936f},
-{0.0590603f,0.34927f,-0.935159f},{-0.185953f,0.52868f,-0.828202f},{0.0783567f,0.419768f,-0.904243f},
-{-0.081558f,0.640475f,-0.763636f},{0.115249f,0.462736f,-0.878973f},{0.0452996f,0.67806f,-0.733609f},
-{0.163262f,0.479446f,-0.862251f},{0.176397f,0.659123f,-0.731054f},{0.220148f,0.470118f,-0.854707f},
-{0.301033f,0.59221f,-0.74744f},{0.279072f,0.432589f,-0.857313f},{0.403142f,0.486599f,-0.775047f},
-{0.325609f,0.373537f,-0.86859f},{0.466056f,0.363663f,-0.806561f},{0.349637f,0.31003f,-0.884101f},
-{0.484992f,0.244556f,-0.839628f},{0.352937f,0.25237f,-0.900969f},{0.462945f,0.13394f,-0.876209f},
-{0.337758f,0.197705f,-0.920235f},{0.401344f,0.0292842f,-0.915459f},{0.300295f,0.147658f,-0.942348f},
-{0.305224f,-0.0606399f,-0.950348f},{0.24473f,0.117415f,-0.962456f},{0.00340102f,-0.529962f,-0.848015f},
-{-0.0938613f,-0.478074f,-0.87329f},{-0.352454f,-0.406562f,-0.842902f},{-0.61385f,-0.160057f,-0.773027f},
-{-0.728006f,0.248101f,-0.639103f},{-0.613132f,0.611566f,-0.500057f},{-0.387794f,0.814176f,-0.432126f},
-{-0.143534f,0.892502f,-0.427596f},{0.0984222f,0.883124f,-0.458699f},{0.328302f,0.790308f,-0.51733f},
-{0.515789f,0.617037f,-0.594329f},{0.626024f,0.405388f,-0.666149f},{0.660135f,0.204925f,-0.722654f},
-{0.630921f,0.0188943f,-0.775617f},{0.52944f,-0.167059f,-0.831736f},{0.354696f,-0.333342f,-0.873541f},
-{0.243538f,-0.22025f,-0.944552f},{0.289875f,-0.232645f,-0.928358f},{-0.102856f,-0.809156f,-0.578522f},
-{-0.250447f,-0.767445f,-0.590174f},{-0.588122f,-0.665757f,-0.459217f},{-0.891009f,-0.37675f,-0.253303f},
-{-0.996878f,0.0697304f,-0.0370518f},{-0.868428f,0.488907f,0.0824813f},{-0.61914f,0.780765f,0.0840951f},
-{-0.313284f,0.949395f,0.0224016f},{0.0164307f,0.997917f,-0.0623912f},{0.342913f,0.922407f,-0.177695f},
-{0.620304f,0.711419f,-0.330312f},{0.779717f,0.412151f,-0.471353f},{0.821408f,0.11749f,-0.558109f},
-{0.780344f,-0.153673f,-0.606174f},{0.638631f,-0.418378f,-0.645841f},{0.382109f,-0.635191f,-0.671212f},
-{0.220792f,-0.550559f,-0.805069f},{0.263945f,-0.568498f,-0.779194f},{-0.135299f,-0.871634f,-0.471114f},
-{-0.249238f,-0.864706f,-0.436078f},{-0.599387f,-0.748603f,-0.283423f},{-0.885957f,-0.462876f,-0.0287339f},
-{-0.973386f,-0.055693f,0.222302f},{-0.882814f,0.320471f,0.343421f},{-0.69843f,0.628487f,0.342344f},
-{-0.425676f,0.863021f,0.272019f},{-0.0871386f,0.980548f,0.175874f},{0.268067f,0.961922f,0.0533471f},
-{0.599281f,0.790612f,-0.12568f},{0.819088f,0.473157f,-0.324372f},{0.881267f,0.120534f,-0.45699f},
-{0.838241f,-0.197245f,-0.508376f},{0.698173f,-0.493499f,-0.518664f},{0.435853f,-0.735407f,-0.518853f},
-{0.206757f,-0.833563f,-0.512273f},{0.22074f,-0.837852f,-0.499277f},{-0.129319f,-0.155775f,-0.979291f},
-{-0.187257f,0.116412f,-0.975389f},{-0.0579092f,-0.120735f,-0.990994f},{-0.137498f,0.140876f,-0.980433f},
-{0.0738916f,-0.0492814f,-0.996048f},{-0.0954751f,0.189636f,-0.977201f},{0.186073f,0.11438f,-0.975855f},
-{-0.0656712f,0.263882f,-0.962317f},{0.230893f,0.336506f,-0.912936f},{-0.05906f,0.349268f,-0.93516f},
-{0.185953f,0.528679f,-0.828203f},{-0.0783569f,0.419768f,-0.904243f},{0.0815577f,0.640475f,-0.763636f},
-{-0.11525f,0.462736f,-0.878973f},{-0.0452998f,0.67806f,-0.733609f},{-0.163262f,0.479446f,-0.862251f},
-{-0.176397f,0.659123f,-0.731054f},{-0.220148f,0.470118f,-0.854707f},{-0.301033f,0.592211f,-0.747439f},
-{-0.279072f,0.432589f,-0.857313f},{-0.403142f,0.486599f,-0.775047f},{-0.32561f,0.373536f,-0.86859f},
-{-0.466056f,0.363663f,-0.806561f},{-0.349637f,0.310031f,-0.884101f},{-0.484992f,0.244557f,-0.839628f},
-{-0.352937f,0.25237f,-0.900969f},{-0.462945f,0.13394f,-0.876209f},{-0.337758f,0.197703f,-0.920235f},
-{-0.401345f,0.0292838f,-0.915459f},{-0.300296f,0.147658f,-0.942348f},{-0.305224f,-0.0606397f,-0.950348f},
-{-0.24473f,0.117415f,-0.962456f},{-0.00340093f,-0.529962f,-0.848015f},{0.0938612f,-0.478075f,-0.87329f},
-{0.352454f,-0.406562f,-0.842902f},{0.61385f,-0.160057f,-0.773027f},{0.728006f,0.248101f,-0.639103f},
-{0.613132f,0.611566f,-0.500057f},{0.387794f,0.814176f,-0.432126f},{0.143534f,0.892502f,-0.427596f},
-{-0.0984221f,0.883124f,-0.458699f},{-0.328302f,0.790308f,-0.517331f},{-0.515789f,0.617037f,-0.594329f},
-{-0.626024f,0.405389f,-0.666149f},{-0.660135f,0.204925f,-0.722653f},{-0.63092f,0.018894f,-0.775617f},
-{-0.529439f,-0.167059f,-0.831736f},{-0.354696f,-0.333342f,-0.873541f},{-0.243538f,-0.22025f,-0.944552f},
-{-0.289875f,-0.232645f,-0.928358f},{0.102856f,-0.809156f,-0.578522f},{0.250447f,-0.767445f,-0.590174f},
-{0.588122f,-0.665757f,-0.459217f},{0.891009f,-0.37675f,-0.253303f},{0.996878f,0.0697302f,-0.0370519f},
-{0.868427f,0.488908f,0.0824812f},{0.61914f,0.780765f,0.0840952f},{0.313285f,0.949395f,0.0224016f},
-{-0.0164307f,0.997917f,-0.0623912f},{-0.342913f,0.922407f,-0.177696f},{-0.620304f,0.711419f,-0.330313f},
-{-0.779717f,0.412152f,-0.471352f},{-0.821408f,0.11749f,-0.558108f},{-0.780344f,-0.153673f,-0.606175f},
-{-0.638631f,-0.418378f,-0.645841f},{-0.38211f,-0.635191f,-0.671212f},{-0.220793f,-0.550559f,-0.805068f},
-{-0.263945f,-0.568497f,-0.779194f},{0.135299f,-0.871634f,-0.471114f},{0.249238f,-0.864706f,-0.436078f},
-{0.599387f,-0.748603f,-0.283424f},{0.885957f,-0.462876f,-0.0287343f},{0.973386f,-0.0556929f,0.222302f},
-{0.882814f,0.32047f,0.343421f},{0.69843f,0.628487f,0.342344f},{0.425676f,0.863021f,0.272019f},
-{0.0871387f,0.980548f,0.175874f},{-0.268067f,0.961922f,0.0533472f},{-0.599281f,0.790612f,-0.12568f},
-{-0.819088f,0.473157f,-0.324372f},{-0.881267f,0.120534f,-0.45699f},{-0.838241f,-0.197244f,-0.508376f},
-{-0.698173f,-0.4935f,-0.518664f},{-0.435853f,-0.735407f,-0.518853f},{-0.206757f,-0.833563f,-0.512274f},
-{-0.220741f,-0.837852f,-0.499276f},{-0.25909f,0.275155f,0.925831f},{-0.260689f,0.411094f,0.873524f},
-{-0.317162f,0.351731f,0.880735f},{-0.303933f,0.249266f,0.919506f},{-0.386375f,0.278498f,0.879291f},
-{-0.337758f,0.208897f,0.917759f},{-0.432851f,0.205417f,0.877749f},{-0.352056f,0.172151f,0.920011f},
-{-0.456366f,0.140033f,0.878704f},{-0.353222f,0.148434f,0.923689f},{-0.455199f,0.074466f,0.88727f},
-{-0.346659f,0.125659f,0.929536f},{-0.417496f,-0.00714653f,0.908651f},{-0.320588f,0.0897104f,0.942961f},
-{-0.327345f,-0.104932f,0.93906f},{-0.26398f,0.0534085f,0.963048f},{-0.192886f,-0.188203f,0.963003f},
-{-0.19785f,0.0430034f,0.979288f},{-0.0492551f,-0.219339f,0.974405f},{-0.152308f,0.0574572f,0.986662f},
-{0.0717795f,-0.1755f,0.981859f},{-0.129198f,0.08014f,0.988375f},{0.147879f,-0.0481031f,0.987835f},
-{-0.116173f,0.112476f,0.98684f},{0.154069f,0.137754f,0.97841f},{-0.114789f,0.165197f,0.979558f},
-{0.0873191f,0.307741f,0.947455f},{-0.135074f,0.224582f,0.965048f},{-0.0179641f,0.406632f,0.913415f},
-{-0.172292f,0.265112f,0.9487f},{-0.128381f,0.433488f,0.891968f},{-0.214693f,0.280536f,0.935525f},
-{-0.245676f,0.670307f,0.700237f},{-0.3474f,0.544072f,0.76374f},{-0.479751f,0.386625f,0.78763f},
-{-0.557924f,0.231905f,0.796832f},{-0.598018f,0.101114f,0.795079f},{-0.607651f,-0.027379f,0.793732f},
-{-0.558296f,-0.19439f,0.806547f},{-0.397246f,-0.396803f,0.827492f},{-0.137564f,-0.552716f,0.821937f},
-{0.13254f,-0.603532f,0.786246f},{0.372904f,-0.543639f,0.751931f},{0.581714f,-0.336158f,0.74068f},
-{0.668633f,0.0458593f,0.742177f},{0.534189f,0.433018f,0.726043f},{0.285923f,0.644991f,0.708685f},
-{0.0453926f,0.700839f,0.711874f},{-0.108407f,0.543837f,0.832159f},{-0.14636f,0.521887f,0.840365f},
-{-0.21819f,0.908956f,0.355236f},{-0.37833f,0.784453f,0.491427f},{-0.599202f,0.541926f,0.589299f},
-{-0.711835f,0.275202f,0.646185f},{-0.754253f,0.0427209f,0.655192f},{-0.755977f,-0.18121f,0.629016f},
-{-0.675388f,-0.448443f,0.585449f},{-0.432908f,-0.72345f,0.537783f},{-0.0651935f,-0.876173f,0.477568f},
-{0.28624f,-0.870309f,0.400785f},{0.585434f,-0.749534f,0.308975f},{0.849956f,-0.483778f,0.208648f},
-{0.988981f,-0.0370003f,0.143341f},{0.877374f,0.453848f,0.15568f},{0.581119f,0.781752f,0.226196f},
-{0.246531f,0.919117f,0.307321f},{0.0350671f,0.839431f,0.542334f},{0.00382345f,0.823531f,0.567259f},
-{-0.199301f,0.957252f,0.209638f},{-0.313378f,0.912873f,0.261643f},{-0.604842f,0.684644f,0.40673f},
-{-0.768845f,0.368021f,0.522913f},{-0.820627f,0.0645513f,0.567806f},{-0.811706f,-0.213571f,0.543618f},
-{-0.72293f,-0.512783f,0.463062f},{-0.476565f,-0.803756f,0.356177f},{-0.0965455f,-0.958156f,0.269474f},
-{0.275182f,-0.938919f,0.206655f},{0.589036f,-0.798747f,0.122636f},{0.849483f,-0.527538f,-0.00910188f},
-{0.984391f,-0.112052f,-0.135719f},{0.925676f,0.342887f,-0.159849f},{0.702208f,0.708021f,-0.0749055f},
-{0.382441f,0.923041f,0.0416495f},{0.150729f,0.982769f,0.106983f},{0.147868f,0.982829f,0.110375f},
-{0.260689f,0.411093f,0.873524f},{0.25909f,0.275155f,0.92583f},{0.317162f,0.351731f,0.880735f},
-{0.303932f,0.249266f,0.919506f},{0.386375f,0.278498f,0.879291f},{0.337757f,0.208897f,0.917759f},
-{0.432851f,0.205417f,0.877749f},{0.352056f,0.172151f,0.920011f},{0.456366f,0.140033f,0.878704f},
-{0.353222f,0.148434f,0.923689f},{0.455199f,0.0744661f,0.88727f},{0.346659f,0.125659f,0.929536f},
-{0.417496f,-0.00714663f,0.908651f},{0.320588f,0.0897105f,0.942961f},{0.327345f,-0.104932f,0.93906f},
-{0.26398f,0.0534084f,0.963048f},{0.192886f,-0.188203f,0.963003f},{0.197851f,0.0430034f,0.979288f},
-{0.0492551f,-0.219339f,0.974405f},{0.152308f,0.0574573f,0.986662f},{-0.0717796f,-0.1755f,0.981859f},
-{0.129198f,0.0801399f,0.988375f},{-0.147879f,-0.048103f,0.987835f},{0.116173f,0.112476f,0.98684f},
-{-0.154069f,0.137754f,0.97841f},{0.114789f,0.165197f,0.979558f},{-0.0873192f,0.307741f,0.947455f},
-{0.135074f,0.224582f,0.965048f},{0.0179641f,0.406632f,0.913415f},{0.172292f,0.265112f,0.9487f},
-{0.128382f,0.433487f,0.891968f},{0.214693f,0.280536f,0.935525f},{0.245676f,0.670307f,0.700237f},
-{0.3474f,0.544072f,0.76374f},{0.479751f,0.386625f,0.78763f},{0.557924f,0.231905f,0.796832f},
-{0.598018f,0.101113f,0.795079f},{0.607651f,-0.0273789f,0.793732f},{0.558296f,-0.19439f,0.806547f},
-{0.397246f,-0.396803f,0.827492f},{0.137564f,-0.552716f,0.821937f},{-0.13254f,-0.603532f,0.786246f},
-{-0.372904f,-0.543639f,0.751931f},{-0.581714f,-0.336158f,0.740679f},{-0.668633f,0.0458594f,0.742177f},
-{-0.534188f,0.433018f,0.726043f},{-0.285924f,0.644991f,0.708685f},{-0.0453924f,0.700838f,0.711874f},
-{0.108408f,0.543836f,0.83216f},{0.14636f,0.521887f,0.840365f},{0.21819f,0.908956f,0.355237f},
-{0.37833f,0.784453f,0.491427f},{0.599202f,0.541926f,0.589299f},{0.711835f,0.275203f,0.646185f},
-{0.754253f,0.0427209f,0.655192f},{0.755977f,-0.18121f,0.629017f},{0.675388f,-0.448443f,0.585449f},
-{0.432908f,-0.72345f,0.537783f},{0.0651936f,-0.876173f,0.477568f},{-0.28624f,-0.870309f,0.400785f},
-{-0.585434f,-0.749534f,0.308976f},{-0.849956f,-0.483778f,0.208648f},{-0.988981f,-0.0370008f,0.14334f},
-{-0.877374f,0.453849f,0.15568f},{-0.581118f,0.781752f,0.226197f},{-0.246531f,0.919117f,0.307321f},
-{-0.0350672f,0.839431f,0.542333f},{-0.0038228f,0.823531f,0.567259f},{0.199301f,0.957252f,0.209638f},
-{0.313378f,0.912873f,0.261644f},{0.604842f,0.684644f,0.40673f},{0.768845f,0.368021f,0.522914f},
-{0.820627f,0.0645516f,0.567806f},{0.811706f,-0.213571f,0.543618f},{0.722929f,-0.512783f,0.463062f},
-{0.476565f,-0.803756f,0.356177f},{0.0965456f,-0.958156f,0.269474f},{-0.275182f,-0.938919f,0.206655f},
-{-0.589036f,-0.798747f,0.122636f},{-0.849483f,-0.527538f,-0.00910149f},{-0.984391f,-0.112052f,-0.135719f},
-{-0.925676f,0.342887f,-0.159849f},{-0.702208f,0.708021f,-0.0749052f},{-0.382441f,0.923041f,0.0416498f},
-{-0.150728f,0.982769f,0.106983f},{-0.147869f,0.982829f,0.110375f}
-},
-
-//lid 1
-{
-{0.170033f,-0.0808841f,-0.982113f},{0.0991637f,-0.351643f,-0.930867f},{0.0327961f,-0.322779f,-0.945906f},
-{0.127706f,-0.063447f,-0.989781f},{-0.086217f,-0.267487f,-0.959696f},{0.0961476f,-0.0272848f,-0.994993f},
-{-0.181751f,-0.127272f,-0.975074f},{0.0739063f,0.0353914f,-0.996637f},{-0.215664f,0.0915415f,-0.972167f},
-{0.0716391f,0.12319f,-0.989794f},{-0.16116f,0.311979f,-0.936321f},{0.0969912f,0.209661f,-0.972952f},
-{-0.046894f,0.454896f,-0.889309f},{0.141817f,0.267782f,-0.952985f},{0.0844277f,0.508821f,-0.856722f},
-{0.194301f,0.292492f,-0.93632f},{0.212463f,0.495016f,-0.842507f},{0.24922f,0.287968f,-0.924643f},
-{0.328265f,0.43128f,-0.840381f},{0.300985f,0.256755f,-0.918415f},{0.419234f,0.333799f,-0.844287f},
-{0.338886f,0.207317f,-0.917701f},{0.473826f,0.221963f,-0.852186f},{0.35754f,0.153168f,-0.921252f},
-{0.489045f,0.106572f,-0.865724f},{0.359076f,0.0964688f,-0.928309f},{0.463733f,-0.0144368f,-0.885857f},
-{0.339982f,0.0312277f,-0.939913f},{0.394368f,-0.138702f,-0.908425f},{0.293215f,-0.0338574f,-0.955447f},
-{0.28677f,-0.245835f,-0.92592f},{0.228639f,-0.0745071f,-0.970656f},{-0.0325453f,-0.68793f,-0.725047f},
-{-0.127355f,-0.639044f,-0.758554f},{-0.364076f,-0.573592f,-0.733786f},{-0.596709f,-0.366853f,-0.713692f},
-{-0.722067f,0.0228584f,-0.691446f},{-0.613531f,0.44611f,-0.651587f},{-0.35934f,0.699754f,-0.61743f},
-{-0.0981476f,0.785488f,-0.611045f},{0.139556f,0.766936f,-0.626366f},{0.355613f,0.66565f,-0.656087f},
-{0.527228f,0.494736f,-0.690845f},{0.628305f,0.295939f,-0.719481f},{0.663179f,0.0997115f,-0.741789f},
-{0.635683f,-0.105603f,-0.764693f},{0.52601f,-0.323037f,-0.78674f},{0.334451f,-0.507225f,-0.79427f},
-{0.212833f,-0.406554f,-0.888491f},{0.263052f,-0.41547f,-0.87074f},{-0.128016f,-0.904378f,-0.407079f},
-{-0.279766f,-0.859132f,-0.428513f},{-0.595541f,-0.737597f,-0.318249f},{-0.867722f,-0.465516f,-0.174224f},
-{-0.997693f,-0.0361903f,-0.0574295f},{-0.89954f,0.435753f,-0.03076f},{-0.618557f,0.779961f,-0.0951219f},
-{-0.277132f,0.94154f,-0.191575f},{0.0567628f,0.959392f,-0.276306f},{0.367868f,0.857611f,-0.359411f},
-{0.623082f,0.636977f,-0.453903f},{0.771953f,0.34731f,-0.532415f},{0.820825f,0.0532505f,-0.568692f},
-{0.786007f,-0.245625f,-0.567328f},{0.636046f,-0.542784f,-0.548481f},{0.366481f,-0.767941f,-0.525317f},
-{0.19982f,-0.715118f,-0.669835f},{0.230048f,-0.72379f,-0.650543f},{-0.153901f,-0.944866f,-0.289037f},
-{-0.27318f,-0.925861f,-0.261063f},{-0.612847f,-0.778574f,-0.135058f},{-0.871441f,-0.486954f,0.0588787f},
-{-0.968914f,-0.0944346f,0.228664f},{-0.908279f,0.309565f,0.281424f},{-0.714681f,0.667427f,0.209219f},
-{-0.406015f,0.911098f,0.0710771f},{-0.0481226f,0.997305f,-0.0553851f},{0.299353f,0.941114f,-0.15714f},
-{0.604763f,0.747553f,-0.274638f},{0.80719f,0.435193f,-0.398812f},{0.877878f,0.0840118f,-0.471458f},
-{0.843833f,-0.263295f,-0.46757f},{0.69423f,-0.590936f,-0.4109f},{0.421959f,-0.834474f,-0.354407f},
-{0.195816f,-0.924426f,-0.327249f},{0.200539f,-0.924982f,-0.322788f},{-0.0991637f,-0.351643f,-0.930867f},
-{-0.170033f,-0.080884f,-0.982113f},{-0.0327961f,-0.322779f,-0.945906f},{-0.127706f,-0.0634469f,-0.989781f},
-{0.0862171f,-0.267487f,-0.959696f},{-0.0961476f,-0.0272849f,-0.994993f},{0.181751f,-0.127272f,-0.975074f},
-{-0.0739063f,0.0353914f,-0.996637f},{0.215664f,0.0915414f,-0.972167f},{-0.0716392f,0.12319f,-0.989794f},
-{0.16116f,0.311979f,-0.936321f},{-0.0969912f,0.209661f,-0.972952f},{0.0468939f,0.454896f,-0.889309f},
-{-0.141817f,0.267782f,-0.952985f},{-0.0844277f,0.508821f,-0.856722f},{-0.194301f,0.292492f,-0.93632f},
-{-0.212463f,0.495016f,-0.842507f},{-0.24922f,0.287968f,-0.924643f},{-0.328265f,0.43128f,-0.840381f},
-{-0.300984f,0.256755f,-0.918415f},{-0.419234f,0.333799f,-0.844287f},{-0.338886f,0.207317f,-0.917701f},
-{-0.473826f,0.221963f,-0.852186f},{-0.35754f,0.153168f,-0.921252f},{-0.489045f,0.106571f,-0.865724f},
-{-0.359076f,0.0964685f,-0.928309f},{-0.463733f,-0.014437f,-0.885857f},{-0.339982f,0.0312277f,-0.939913f},
-{-0.394368f,-0.138702f,-0.908425f},{-0.293215f,-0.0338572f,-0.955447f},{-0.28677f,-0.245835f,-0.92592f},
-{-0.228639f,-0.0745069f,-0.970656f},{0.0325452f,-0.68793f,-0.725047f},{0.127355f,-0.639044f,-0.758554f},
-{0.364076f,-0.573592f,-0.733786f},{0.596709f,-0.366853f,-0.713692f},{0.722066f,0.0228584f,-0.691446f},
-{0.613531f,0.446109f,-0.651587f},{0.35934f,0.699754f,-0.61743f},{0.0981477f,0.785488f,-0.611045f},
-{-0.139556f,0.766936f,-0.626366f},{-0.355613f,0.66565f,-0.656087f},{-0.527228f,0.494736f,-0.690845f},
-{-0.628305f,0.295939f,-0.719481f},{-0.663179f,0.0997115f,-0.741789f},{-0.635683f,-0.105603f,-0.764693f},
-{-0.52601f,-0.323037f,-0.78674f},{-0.334451f,-0.507225f,-0.79427f},{-0.212833f,-0.406554f,-0.888491f},
-{-0.263052f,-0.41547f,-0.87074f},{0.128016f,-0.904378f,-0.407079f},{0.279766f,-0.859132f,-0.428513f},
-{0.595541f,-0.737597f,-0.318249f},{0.867721f,-0.465516f,-0.174224f},{0.997693f,-0.0361901f,-0.0574301f},
-{0.89954f,0.435753f,-0.0307605f},{0.618557f,0.779961f,-0.0951221f},{0.277132f,0.94154f,-0.191575f},
-{-0.0567628f,0.959392f,-0.276306f},{-0.367868f,0.857611f,-0.359411f},{-0.623082f,0.636978f,-0.453903f},
-{-0.771953f,0.34731f,-0.532415f},{-0.820825f,0.0532507f,-0.568692f},{-0.786007f,-0.245625f,-0.567328f},
-{-0.636046f,-0.542784f,-0.548481f},{-0.366481f,-0.767941f,-0.525317f},{-0.199821f,-0.715118f,-0.669835f},
-{-0.230048f,-0.723789f,-0.650544f},{0.153902f,-0.944866f,-0.289038f},{0.27318f,-0.925861f,-0.261063f},
-{0.612847f,-0.778574f,-0.135058f},{0.871441f,-0.486954f,0.058879f},{0.968914f,-0.0944348f,0.228664f},
-{0.908278f,0.309565f,0.281425f},{0.714681f,0.667427f,0.209219f},{0.406015f,0.911098f,0.0710772f},
-{0.0481226f,0.997305f,-0.0553851f},{-0.299353f,0.941114f,-0.157141f},{-0.604763f,0.747553f,-0.274638f},
-{-0.80719f,0.435193f,-0.398812f},{-0.877878f,0.084012f,-0.471458f},{-0.843833f,-0.263295f,-0.46757f},
-{-0.69423f,-0.590936f,-0.410901f},{-0.421959f,-0.834474f,-0.354407f},{-0.195816f,-0.924426f,-0.327249f},
-{-0.200539f,-0.924982f,-0.322788f},{-0.274592f,0.174388f,0.945615f},{-0.279076f,0.301266f,0.911787f},
-{-0.329298f,0.2523f,0.909894f},{-0.314928f,0.1548f,0.936406f},{-0.393562f,0.19355f,0.898692f},
-{-0.344531f,0.121609f,0.930865f},{-0.440573f,0.129756f,0.88829f},{-0.358316f,0.0865385f,0.929581f},
-{-0.468003f,0.0598531f,0.881698f},{-0.359773f,0.0538913f,0.931482f},{-0.468217f,-0.0283813f,0.883158f},
-{-0.348396f,0.0130349f,0.937257f},{-0.422712f,-0.146026f,0.894422f},{-0.311357f,-0.0425276f,0.949341f},
-{-0.314744f,-0.27671f,0.907947f},{-0.244768f,-0.0926729f,0.965143f},{-0.162371f,-0.373759f,0.913203f},
-{-0.175774f,-0.11056f,0.978202f},{-0.0114407f,-0.403112f,0.915079f},{-0.132327f,-0.100493f,0.986099f},
-{0.105896f,-0.3578f,0.927774f},{-0.111692f,-0.0809213f,0.990443f},{0.173376f,-0.234368f,0.956563f},
-{-0.0998722f,-0.0481502f,0.993835f},{0.168055f,-0.0433064f,0.984826f},{-0.101326f,0.0145724f,0.994747f},
-{0.0843648f,0.148394f,0.985323f},{-0.130019f,0.0931257f,0.987129f},{-0.0359753f,0.269135f,0.96243f},
-{-0.178792f,0.15071f,0.972276f},{-0.151761f,0.310221f,0.938473f},{-0.229283f,0.174998f,0.957499f},
-{-0.2678f,0.5358f,0.800751f},{-0.35637f,0.423467f,0.832872f},{-0.476561f,0.294623f,0.828304f},
-{-0.558104f,0.164185f,0.813365f},{-0.609262f,0.0354151f,0.792178f},{-0.62625f,-0.121961f,0.770023f},
-{-0.567602f,-0.338786f,0.750368f},{-0.380861f,-0.573083f,0.725617f},{-0.102764f,-0.720569f,0.685726f},
-{0.167181f,-0.746836f,0.643651f},{0.393748f,-0.676346f,0.62251f},{0.583979f,-0.49102f,0.646427f},
-{0.672544f,-0.139115f,0.726865f},{0.53245f,0.270395f,0.802112f},{0.252808f,0.510165f,0.822083f},
-{-0.000430566f,0.567174f,0.823598f},{-0.144443f,0.416356f,0.897655f},{-0.17502f,0.398991f,0.900097f},
-{-0.244077f,0.810462f,0.532521f},{-0.388554f,0.67049f,0.632036f},{-0.585245f,0.450842f,0.673966f},
-{-0.698492f,0.217713f,0.681697f},{-0.757717f,-0.00531936f,0.652561f},{-0.770035f,-0.256798f,0.584039f},
-{-0.673661f,-0.561197f,0.480873f},{-0.405964f,-0.834516f,0.372525f},{-0.037435f,-0.955912f,0.291259f},
-{0.30449f,-0.923199f,0.234498f},{0.590489f,-0.787303f,0.177417f},{0.834721f,-0.536296f,0.125006f},
-{0.983082f,-0.12496f,0.133923f},{0.894006f,0.377014f,0.242101f},{0.565197f,0.73007f,0.384122f},
-{0.199286f,0.847592f,0.491806f},{-0.012911f,0.718485f,0.695423f},{-0.0557474f,0.689361f,0.722269f},
-{-0.227453f,0.884551f,0.407227f},{-0.333236f,0.830407f,0.446518f},{-0.595902f,0.602506f,0.530931f},
-{-0.750001f,0.315665f,0.581252f},{-0.817264f,0.0288773f,0.575539f},{-0.822818f,-0.269884f,0.500134f},
-{-0.71988f,-0.598072f,0.352255f},{-0.447652f,-0.874512f,0.186644f},{-0.0739497f,-0.993583f,0.0855858f},
-{0.287303f,-0.956873f,0.0430333f},{0.596468f,-0.802625f,-0.0044153f},{0.842439f,-0.531975f,-0.0854336f},
-{0.979279f,-0.138682f,-0.147577f},{0.942167f,0.319173f,-0.102225f},{0.704603f,0.707437f,0.0553817f},
-{0.351449f,0.908373f,0.226586f},{0.114208f,0.945229f,0.305776f},{0.0986314f,0.941089f,0.323454f},
-{0.279076f,0.301266f,0.911787f},{0.274592f,0.174388f,0.945615f},{0.329298f,0.2523f,0.909894f},
-{0.314929f,0.1548f,0.936406f},{0.393563f,0.19355f,0.898692f},{0.344531f,0.121608f,0.930865f},
-{0.440574f,0.129756f,0.88829f},{0.358316f,0.0865388f,0.929581f},{0.468003f,0.0598537f,0.881698f},
-{0.359773f,0.0538922f,0.931482f},{0.468217f,-0.0283817f,0.883158f},{0.348396f,0.0130332f,0.937257f},
-{0.422711f,-0.146026f,0.894422f},{0.311357f,-0.0425282f,0.949341f},{0.314744f,-0.27671f,0.907947f},
-{0.244769f,-0.0926728f,0.965142f},{0.162371f,-0.373759f,0.913203f},{0.175773f,-0.11056f,0.978203f},
-{0.0114408f,-0.403112f,0.915079f},{0.132328f,-0.100494f,0.986099f},{-0.105896f,-0.3578f,0.927774f},
-{0.111692f,-0.0809209f,0.990443f},{-0.173376f,-0.234368f,0.956563f},{0.0998722f,-0.0481507f,0.993835f},
-{-0.168055f,-0.0433065f,0.984826f},{0.101326f,0.0145723f,0.994747f},{-0.0843647f,0.148394f,0.985323f},
-{0.130019f,0.0931262f,0.987128f},{0.0359753f,0.269135f,0.96243f},{0.178792f,0.150709f,0.972276f},
-{0.151761f,0.310221f,0.938473f},{0.229284f,0.174998f,0.957499f},{0.2678f,0.5358f,0.800751f},
-{0.35637f,0.423467f,0.832872f},{0.476561f,0.294623f,0.828304f},{0.558104f,0.164184f,0.813365f},
-{0.609262f,0.0354153f,0.792177f},{0.626251f,-0.121961f,0.770023f},{0.567602f,-0.338786f,0.750368f},
-{0.380861f,-0.573083f,0.725617f},{0.102764f,-0.720569f,0.685726f},{-0.167181f,-0.746836f,0.643651f},
-{-0.393747f,-0.676347f,0.622509f},{-0.583979f,-0.49102f,0.646427f},{-0.672543f,-0.139115f,0.726865f},
-{-0.53245f,0.270395f,0.802112f},{-0.252808f,0.510165f,0.822083f},{0.000430498f,0.567174f,0.823598f},
-{0.144443f,0.416356f,0.897655f},{0.17502f,0.398991f,0.900097f},{0.244077f,0.810462f,0.532521f},
-{0.388554f,0.67049f,0.632036f},{0.585245f,0.450842f,0.673966f},{0.698492f,0.217713f,0.681697f},
-{0.757717f,-0.00531963f,0.652562f},{0.770035f,-0.256798f,0.584039f},{0.673661f,-0.561197f,0.480873f},
-{0.405965f,-0.834516f,0.372525f},{0.0374351f,-0.955912f,0.291259f},{-0.30449f,-0.923199f,0.234498f},
-{-0.590489f,-0.787303f,0.177417f},{-0.834721f,-0.536297f,0.125006f},{-0.983082f,-0.12496f,0.133923f},
-{-0.894006f,0.377014f,0.242101f},{-0.565197f,0.73007f,0.384122f},{-0.199286f,0.847592f,0.491806f},
-{0.012911f,0.718485f,0.695423f},{0.0557474f,0.689362f,0.722269f},{0.227453f,0.884551f,0.407227f},
-{0.333236f,0.830407f,0.446518f},{0.595902f,0.602506f,0.53093f},{0.750001f,0.315666f,0.581252f},
-{0.817264f,0.0288774f,0.575539f},{0.822817f,-0.269884f,0.500134f},{0.71988f,-0.598072f,0.352255f},
-{0.447652f,-0.874512f,0.186644f},{0.0739498f,-0.993583f,0.0855857f},{-0.287303f,-0.956873f,0.0430335f},
-{-0.596468f,-0.802625f,-0.00441504f},{-0.842439f,-0.531975f,-0.0854334f},{-0.979279f,-0.138682f,-0.147577f},
-{-0.942167f,0.319173f,-0.102225f},{-0.704604f,0.707437f,0.0553818f},{-0.351449f,0.908373f,0.226586f},
-{-0.114207f,0.945229f,0.305777f},{-0.0986314f,0.941089f,0.323454f}
-}
-
-};
-
-static GLfloat textures [84][2] = {
-//lid 1
-{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f},
-{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f},
-{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f},
-{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f},
-{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f},
-{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f},
-{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f},
-{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f},
-{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f},
-{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f},
-{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f},
-{0.0f,0.75f},{0.0625f,0.75f},{0.125f,0.75f},
-{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f},
-{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f},
-{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f},
-{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f},
-{0.9375f,0.75f},{1.0f,0.75f},{0.0f,0.625f},
-{0.0625f,0.625f},{0.125f,0.625f},{0.1875f,0.625f},
-{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f},
-{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f},
-{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f},
-{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f},
-{1.0f,0.625f},{0.0f,0.5f},{0.0625f,0.5f},
-{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f},
-{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f},
-{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f},
-{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f},
-{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f}
-};
-
-static int material_ref [1][2] = {
-{0,448}
-};
-
-static void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
-{
- GLfloat d[4];
- d[0]=f[0];
- d[1]=f[1];
- d[2]=f[2];
- d[3]=alpha;
- glMaterialfv (GL_FRONT_AND_BACK,mode,d);
-};
-
-
-static void SelectMaterial(int i)
-{
- //
- // Define the reflective properties of the 3D Object faces.
- //
- glEnd();
- GLfloat alpha=materials[i].alpha;
- MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
- MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
- MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
- MyMaterial (GL_EMISSION, materials[i].emission,alpha);
- glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
- glBegin(GL_TRIANGLES);
-
-};
-
-static GLint Gen3DObjectList(int numlid)
-{
- int i;
- int j;
-
- GLint lid=glGenLists(1);
- int mcount=0;
- int mindex=0;
- glNewList(lid, GL_COMPILE);
-
- glBegin (GL_TRIANGLES);
- for(i=0;i<sizeof(face_indicies[numlid])/sizeof(face_indicies[numlid][0]);i++)
- {
- if(!mcount)
- {
- SelectMaterial(material_ref[mindex][0]);
- mcount=material_ref[mindex][1];
- mindex++;
- }
- mcount--;
- for(j=0;j<3;j++)
- {
- int vi=face_indicies[numlid][i][j];
- int ni=face_indicies[numlid][i][j+3];//Normal index
- int ti=face_indicies[numlid][i][j+6];//Texture index
- glNormal3f (normals[numlid][ni][0],normals[numlid][ni][1],normals[numlid][ni][2]);
- glTexCoord2f(textures[ti][0],textures[ti][1]);
- glVertex3f (vertices[numlid][vi][0],vertices[numlid][vi][1],vertices[numlid][vi][2]);
- }
- }
- glEnd ();
-
- glEndList();
- return lid;
-};
-
-void initLids(){
- GLint test;
- int i;
- for(i=0;i<NUM_LIDS;i++){
- lidLists[i]=Gen3DObjectList(i);
- }
-};
-
-void drawLids(int num) {
- glCallList(lidLists[num]);
-}
diff --git a/pidgin/plugins/crazychat/lids.h b/pidgin/plugins/crazychat/lids.h
deleted file mode 100644
index c66fe1cf13..0000000000
--- a/pidgin/plugins/crazychat/lids.h
+++ /dev/null
@@ -1,3 +0,0 @@
-void initLids(void);
-
-void drawLid(int num);
diff --git a/pidgin/plugins/crazychat/main.c b/pidgin/plugins/crazychat/main.c
deleted file mode 100644
index 4721d441b0..0000000000
--- a/pidgin/plugins/crazychat/main.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/sw/#ifdef __APPLE_CC__
-#include <Carbon/Carbon.h>
-#else
-#include <Carbon.h>
-#endif
-
-
-#include "Utilities.h"
-#include "QTUtilities.h"
-
-#include "camdata.h"
-#include "camproc.h"
-
-
-#define BailErr(err) {if(err != noErr) goto bail;}
-
-
-int main(void)
-{
- EnterMovies();
- CamProc(); // change this prototype-> no windows
- fprintf(stderr, "you have just murdered 1000 people.");
- RunApplicationEventLoop();
- return 0;
-} \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/mat_struct.h b/pidgin/plugins/crazychat/mat_struct.h
deleted file mode 100644
index 816d12de88..0000000000
--- a/pidgin/plugins/crazychat/mat_struct.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-typedef struct sample_MATERIAL{
- GLfloat ambient[3];
- GLfloat diffuse[3];
- GLfloat specular[3];
- GLfloat emission[3];
- GLfloat alpha;
- GLfloat phExp;
- int texture;
-}sample_MATERIAL; \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/models.c b/pidgin/plugins/crazychat/models.c
deleted file mode 100644
index b6e16bb88c..0000000000
--- a/pidgin/plugins/crazychat/models.c
+++ /dev/null
@@ -1,75 +0,0 @@
-#include"glm.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "face.h"
-
-#define ASCII_DIGITS 48
-
-void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale){
- int i;
- char c;
- GLint* temp_lists;
- GLMmodel** temp_models;
- char* temp = (char*)malloc(sizeof(char) * (strlen(name) + strlen(".obj" + 3)));
- GLMmodel* model;
- float dum;
- temp_lists = (GLint*)malloc(sizeof(GLint) * num_lists);
- temp_models = (GLMmodel**)malloc(sizeof(GLMmodel*) * num_lists);
-
- for(i=0;i<num_lists;i++) {
- strcpy(temp, name);
- if(i<10){
- c = (char)(ASCII_DIGITS+i);
- strncat(temp, &c, 1);
- }
- else{
- c = (char)(i/10+ASCII_DIGITS);
- strncat(temp, &c, 1);
- c = (char)(i%10 + ASCII_DIGITS);
- strncat(temp, &c, 1);
- }
- strcat(temp, ".obj");
- temp_models[i]=glmReadOBJ(temp);
- glmScale(temp_models[i], my_scale);
- dum =glmUnitize(temp_models[i]); // this actually just centers
- //printf("%s factor %f", temp, dum);
- temp_lists[i]=glmList(temp_models[i], GLM_SMOOTH);
- }
-
- *lists = temp_lists;
- *models = temp_models;
- free(temp);
-}
-
-int compute_lid(BOOL open, int curr_lid, int max){
- if(open) {
- if(curr_lid < max){
- curr_lid++;
- }
- else
- curr_lid=max;
- }
- else {
- if(curr_lid >=2){
- curr_lid-=2;
- }
- else if(curr_lid==1){
- curr_lid--;
- }
- curr_lid=0;
- }
- return curr_lid;
-}
-
-void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir)
-{
- struct doggy_struct* dog = (struct doggy_struct*)f->char_struct;
- if(f->my_mode==NORMAL){
- f->curr_z_angle=0;
- return;
- }
- if(f->my_mode==CRAZY1){
- f->curr_z_angle = f->curr_z_angle+ANGLE_INC;
- *angle = f->curr_z_angle;
- }
-}
diff --git a/pidgin/plugins/crazychat/models.h b/pidgin/plugins/crazychat/models.h
deleted file mode 100644
index b05a4d68e5..0000000000
--- a/pidgin/plugins/crazychat/models.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#include"glm.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale);
-
-int compute_lid(BOOL open, int curr_lid, int max);
-
-void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir); \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/sharky.c b/pidgin/plugins/crazychat/sharky.c
deleted file mode 100644
index 5b8025cc82..0000000000
--- a/pidgin/plugins/crazychat/sharky.c
+++ /dev/null
@@ -1,249 +0,0 @@
-#include "face.h"
-#include "sharky.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "models.h"
-
-#define NUM_SHARKS 12
-#define NUM_SHARK_LIDS 10
-#define NUM_FINS 4
-#define NUM_SHARK_EYES 1
-#define NUM_SHARK_PUPILS 1
-#define NUM_SHARK_IRIS 1
-#define SHARK_SCALE .025
-#define SHARK_EYES_Y 7.5*SHARK_SCALE // .295
-#define SHARK_EYES_X 28.89*SHARK_SCALE // .26
-#define SHARK_EYES_Z 56*SHARK_SCALE // .38
-#define SHARK_FINS_X 75*SHARK_SCALE //.65
-#define SHARK_FINS_Y -44*SHARK_SCALE//.18
-#define SHARK_FINS_Z -15*SHARK_SCALE //.05
-#define SHARK_IRIS_X 0*SHARK_SCALE
-#define SHARK_IRIS_Y 1.67*SHARK_SCALE//.015
-#define SHARK_IRIS_Z 5.0*SHARK_SCALE//.08
-#define SHARK_PUP_X 0*SHARK_SCALE
-#define SHARK_PUP_Y 0*SHARK_SCALE
-#define SHARK_PUP_Z 2.5*SHARK_SCALE //.028
-#define SHARK_IRIS_SCALE .10*SHARK_SCALE
-#define SHARK_PUP_SCALE .08*SHARK_SCALE
-#define SHARK_FIN_SCALE .9*SHARK_SCALE
-#define SHARK_EYE_SCALE .7*SHARK_SCALE
-#define SHARK_LID_SCALE .84*SHARK_SCALE
-#define SHARK_HEAD_SCALE .58*SHARK_SCALE
-#define TOP_FIN_X 0*SHARK_SCALE
-#define TOP_FIN_Y 4*SHARK_SCALE
-#define TOP_FIN_Z 25*SHARK_SCALE
-#define BOT_FIN_X 0*SHARK_SCALE
-#define BOT_FIN_Y 9*SHARK_SCALE
-#define BOT_FIN_Z -70*SHARK_SCALE
-#define TOP_FIN_SCALE 2*SHARK_SCALE
-#define MAX_FIN_ANGLE 90.0
-#define MIN_FIN_ANGLE -20.0
-#define ANGLE_INC 60
-float fins=0;
-
-
-char shark_mtl_file[MAX_FILE_LEN] = "dog.mtl";
-// the initial dog materials
-GLint init_shark_mats[NUM_PARTS] = {1, 2, 3, 4, 5, 3, 5, 0, 0, 0};
-
-void draw_shark_pupil(FACE f, PART p) {
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
- glPushMatrix();
- glTranslatef(SHARK_IRIS_X, -SHARK_IRIS_Z, SHARK_IRIS_Y);
- if(p==LEFT_IRIS)
- glmSetMat(f->materials, f->mat_indeces[LEFT_IRIS]);
- else
- glmSetMat(f->materials, f->mat_indeces[RIGHT_IRIS]);
- glCallList(shark->iris[0]);
- glTranslatef(SHARK_PUP_X, -SHARK_PUP_Z, SHARK_PUP_Y);
- glmSetMat(f->materials, f->mat_indeces[PUPIL]);
- glCallList(shark->pupil[0]);
- glPopMatrix();
-}
-
-void draw_shark_left_eye(FACE f, BOOL open, int max) {
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
- if(f->my_mode==CRAZY2)
- shark->curr_left_lid=NUM_SHARK_LIDS-1;
- else
- shark->curr_left_lid = compute_lid(open, shark->curr_left_lid, max);
- glPushMatrix();
- glTranslatef(-SHARK_EYES_X, 0.0, 0.0);
- glPushMatrix();
- glTranslatef(0.0, -f->curr_eye_pop, 0.0);
- draw_shark_pupil(f, LEFT_IRIS);
- glmSetMat(f->materials, f->mat_indeces[EYES]);
- glCallList(shark->eyes[shark->curr_left_eye]);
- glPopMatrix();
- glmSetMat(f->materials, f->mat_indeces[LIDS]);
- glCallList(shark->lids[shark->curr_left_lid]);
- glPopMatrix();
-}
-
-void draw_shark_right_eye(FACE f, BOOL open, int max) {
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
- if(f->my_mode==CRAZY2)
- shark->curr_right_lid=NUM_SHARK_LIDS-1;
- else
- shark->curr_right_lid = compute_lid(open, shark->curr_right_lid, max);
- glPushMatrix();
- glTranslatef(SHARK_EYES_X, 0.0, 0.0);
- glPushMatrix();
- glTranslatef(0.0, -f->curr_eye_pop, 0.0);
- draw_shark_pupil(f, RIGHT_IRIS);
- glmSetMat(f->materials, f->mat_indeces[EYES]);
- glCallList(shark->eyes[shark->curr_right_eye]);
- glPopMatrix();
- glmSetMat(f->materials, f->mat_indeces[LIDS]);
- glCallList(shark->lids[shark->curr_right_lid]);
- glPopMatrix();
-}
-
-void shark_eyes(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, DIRECTION dir)
-{
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
- int max_eye;
- if(dir==CONST) { //then not moving, eyes are gettin sleepy
- f->eye_count--;
- }
- else{
- f->eye_count=EYE_TIME*NUM_SHARK_LIDS-1;
- }
- max_eye=f->eye_count/EYE_TIME;
- if(max_eye<0)
- max_eye=0;
- if(f->my_mode==CRAZY2)
- f->curr_eye_pop=f->curr_eye_pop + (MAX_EYE_POP - f->curr_eye_pop)/2;
- else
- f->curr_eye_pop=f->curr_eye_pop - (f->curr_eye_pop-0)/2;
- glPushMatrix();
- glTranslatef(0, 0, SHARK_EYES_Y);
- glTranslatef(0, -SHARK_EYES_Z,0);
- draw_shark_left_eye(f, left_open, max_eye);
- draw_shark_right_eye(f, right_open, max_eye);
- glPopMatrix();
-}
-
-void shark_fins(FACE f, DIRECTION dir){
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
-
- if(dir==DOWN){
- if(shark->curr_fin < (NUM_FINS-1))
- shark->curr_fin++;
- shark->curr_fin_angle = shark->curr_fin_angle+(MAX_FIN_ANGLE-shark->curr_fin_angle)/2;
- }
- if(dir==UP){
- if(shark->curr_fin > 0)
- shark->curr_fin--;
- shark->curr_fin_angle = shark->curr_fin_angle+(MIN_FIN_ANGLE-shark->curr_fin_angle)/2;
- }
- else if(dir==CONST){
- shark->curr_fin=1;
- shark->curr_fin_angle = shark->curr_fin_angle+(0-shark->curr_fin_angle)/3;
- }
-
- glPushMatrix();
- glTranslatef(-SHARK_FINS_X, -SHARK_FINS_Z, SHARK_FINS_Y);
- if(f->my_mode==CRAZY1)
- glRotatef(MAX_FIN_ANGLE, 0.0, 1.0, 0.0);
- else
- glRotatef(shark->curr_fin_angle, 0.0, 1.0, 0.0);
- glmSetMat(f->materials, f->mat_indeces[APPENDAGE]);
- glCallList(shark->fins[shark->curr_fin]);
- glPopMatrix();
- glPushMatrix();
- glTranslatef(SHARK_FINS_X, -SHARK_FINS_Z, SHARK_FINS_Y);
- glScalef(-1, 1, 1);
- if(f->my_mode==CRAZY1)
- glRotatef(MIN_FIN_ANGLE, 0.0, 1.0, 0.0);
- else
- glRotatef(shark->curr_fin_angle, 0.0, 1.0, 0.0);
- glCallList(shark->fins[shark->curr_fin]);
- glPopMatrix();
-}
-
-void draw_back_fins(FACE f){
- struct shark_struct* shark=(struct shark_struct*)f->char_struct;
- glPushMatrix();
- glTranslatef(0, fins, TOP_FIN_Y);
- glRotatef(180, 0.0, 1.0, 0.0);
- glScalef(.5*TOP_FIN_SCALE,TOP_FIN_SCALE,TOP_FIN_SCALE);
- glmSetMat(f->materials, f->mat_indeces[APPENDAGE]);
- glCallList(shark->fins[2]);
- glPopMatrix();
-
-}
-
-void draw_shark(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, GLfloat open, DIRECTION dir, OUTPUT_MODE mode){
- int next_face;
- struct shark_struct* shark;
-
- f->crazy_count--;
- if(f->crazy_count==0){
- f->my_mode = mode;
- if(mode!=NORMAL)
- f->crazy_count = CRAZY_COUNT;
- else
- f->crazy_count = 1;
- }
- apply_output_mode(f, &angle, &yangle, &left_open, &right_open, &open, &dir);
- next_face = NUM_SHARKS - open*NUM_SHARKS - 1;
- shark = (struct shark_struct*)f->char_struct;
- if(next_face > shark->curr_face)
- shark->curr_face++;
- else if(next_face < shark->curr_face)
- shark->curr_face--;
-
- glPushMatrix();
- glRotatef(-90, 1.0, 0.0, 0.0);
- glRotatef(-yangle, 0.0, 0.0, -1.0);
- glRotatef(-angle, 0, 1, 0);
- shark_eyes(f, angle, yangle, left_open, right_open, dir);
- shark_fins(f, dir);
- //draw_back_fins(f);
- glmSetMat(f->materials, f->mat_indeces[HEAD]);
- glCallList(shark->faces[shark->curr_face]);
- glPopMatrix();
-}
-
-
-void init_shark(FACE f){
- int i;
- struct shark_struct* shark;
- f->char_struct = (struct shark_struct*)malloc(sizeof(struct shark_struct));
- f->materials = glmMTL(shark_mtl_file);
- f->mat_indeces=(GLint*)malloc(sizeof(GLint)*NUM_PARTS);
- //initialize all of the parts to some colors
- change_materials(f, init_shark_mats, NUM_PARTS);
- f->my_mode = NORMAL;
- f->eye_count = EYE_TIME*NUM_SHARK_LIDS-1;
- f->crazy_count = 1;
- f->curr_z_angle = 0;
- f->curr_eye_pop = 0;
- f->name = strdup("sharky");
- f->draw_func = draw_shark;
- shark = (struct shark_struct*)f->char_struct;
-
- printf("\nReading models: ");
- fflush(0);
-
- //initialize the draw lists
- init_lists(&shark->faces, &shark->m_faces, NUM_SHARKS, f->name, SHARK_HEAD_SCALE);
- init_lists(&shark->lids, &shark->m_lids, NUM_SHARK_LIDS, "sharkylid", SHARK_LID_SCALE);
- init_lists(&shark->fins, &shark->m_fins, NUM_FINS, "sharkyfin", SHARK_FIN_SCALE);
- init_lists(&shark->eyes, &shark->m_eyes, NUM_SHARK_EYES, "sharkyeye", SHARK_EYE_SCALE);
- init_lists(&shark->pupil, &shark->m_pupil, NUM_SHARK_PUPILS, "sharkypupil", SHARK_PUP_SCALE);
- init_lists(&shark->iris, &shark->m_iris, NUM_SHARK_IRIS, "sharkyiris", SHARK_IRIS_SCALE);
-
- printf("\n");
- fflush(0);
-
- shark->curr_face = 0;
- shark->curr_fin = 1;
- shark->curr_left_lid = 0;
- shark->curr_right_lid = 0;
- shark->curr_left_eye = 0;
- shark->curr_right_eye = 0;
- shark->curr_pupil = 0;
- shark->curr_fin_angle = 0;
-}
diff --git a/pidgin/plugins/crazychat/sharky.h b/pidgin/plugins/crazychat/sharky.h
deleted file mode 100644
index 7555df3f38..0000000000
--- a/pidgin/plugins/crazychat/sharky.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "glm.h"
-
-struct shark_struct{
- GLint* faces, *lids, *fins, *eyes, *iris, *pupil;
- GLMmodel** m_faces, **m_lids, **m_fins, **m_eyes, **m_iris, **m_pupil;
- int curr_face, curr_fin, curr_left_lid, curr_right_lid, curr_right_eye, curr_left_eye, curr_pupil, eye_count;
- float curr_fin_angle;
-};
-
-void init_shark(FACE f); \ No newline at end of file
diff --git a/pidgin/plugins/crazychat/test.h b/pidgin/plugins/crazychat/test.h
deleted file mode 100644
index 9c150c7934..0000000000
--- a/pidgin/plugins/crazychat/test.h
+++ /dev/null
@@ -1,8 +0,0 @@
-class Test {
- public:
- Test(void);
- ~Test(void);
- void runTest(void);
- private:
- asdfint fake;
-};
diff --git a/pidgin/plugins/crazychat/util.h b/pidgin/plugins/crazychat/util.h
deleted file mode 100644
index d405fe0789..0000000000
--- a/pidgin/plugins/crazychat/util.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef __UTIL_H__
-#define __UTIL_H__
-
-#include <debug.h>
-
-#define SET_TIME(x) \
- do { \
- assert(!gettimeofday((x), NULL)); \
- } while(0)
-
-#define SET_TIMEOUT(timespec, given_timeout) /* timeout is in ms */ \
- do { \
- struct timeval* curr = (struct timeval*)(timespec); \
- unsigned int tout; \
- if (given_timeout > 100) { \
- tout = given_timeout; \
- } else { \
- tout = 100; \
- } \
- SET_TIME(curr); \
- curr->tv_sec += (tout / 1000); \
- curr->tv_usec /= 1000; /* set to ms */ \
- curr->tv_usec += (tout % 1000); \
- curr->tv_sec += (curr->tv_usec / 1000); \
- curr->tv_usec = (curr->tv_usec % 1000); \
- curr->tv_usec *= 1000000; \
- } while (0)
-
-#endif
-
-/* -- gcc specific vararg macro support ... but its so nice! -- */
-#ifdef _DEBUG_
-#define Debug(x, args...) \
- do { \
- printf(x, ## args); \
- purple_debug(PURPLE_DEBUG_INFO, "crazychat", x, ## args); \
- } while (0)
-#else
-#define Debug(x, args...) do{}while(0)
-#endif
diff --git a/pidgin/plugins/gtkbuddynote.c b/pidgin/plugins/gtkbuddynote.c
index 4e841da1dd..c73bc9bf21 100644
--- a/pidgin/plugins/gtkbuddynote.c
+++ b/pidgin/plugins/gtkbuddynote.c
@@ -42,44 +42,6 @@ append_to_tooltip(PurpleBlistNode *node, GString *text, gboolean full)
}
}
-#if 0
-static gboolean
-check_for_buddynote(gpointer data)
-{
- PurplePlugin *buddynote = NULL;
- PurplePlugin *plugin = (PurplePlugin *)data;
-
- buddynote = purple_plugins_find_with_id("core-plugin_pack-buddynote");
-
- if (buddynote == NULL) {
- buddynote = purple_plugins_find_with_basename("buddynote");
- }
-
- if (buddynote != NULL) {
- PurplePluginInfo *bninfo = buddynote->info;
-
- bninfo->flags = PURPLE_PLUGIN_FLAG_INVISIBLE;
-
-
- /* If non-gtk buddy note plugin is loaded, but we are not, then load
- * ourselves, otherwise people upgrading from pre-gtkbuddynote days
- * will not have 'Buddy Notes' showing as loaded in the plugins list.
- * We also trigger a save on the list of plugins because it's not been
- * loaded through the UI. */
- if (purple_plugin_is_loaded(buddynote) &&
- !purple_plugin_is_loaded(plugin)) {
- purple_plugin_load(plugin);
- pidgin_plugins_save();
- }
-
- } else {
- info.flags = PURPLE_PLUGIN_FLAG_INVISIBLE;
- }
-
- return FALSE;
-}
-#endif
-
static PidginPluginInfo *
plugin_query(GError **error)
{
@@ -119,13 +81,6 @@ plugin_load(PurplePlugin *plugin, GError **error)
static gboolean
plugin_unload(PurplePlugin *plugin, GError **error)
{
-#if 0
- PurplePlugin *buddynote = NULL;
-
- buddynote = purple_plugins_find_with_id("core-plugin_pack-buddynote");
- purple_plugin_unload(buddynote);
-#endif
-
return TRUE;
}
diff --git a/pidgin/plugins/notify.c b/pidgin/plugins/notify.c
index 7b38cf0422..a9c2826915 100644
--- a/pidgin/plugins/notify.c
+++ b/pidgin/plugins/notify.c
@@ -262,13 +262,34 @@ message_displayed_cb(PurpleConversation *conv, PurpleMessage *msg, gpointer _unu
{
PurpleMessageFlags flags = purple_message_get_flags(msg);
+ /* Ignore anything that's not a received message or a system message */
+ if (!(flags & (PURPLE_MESSAGE_RECV|PURPLE_MESSAGE_SYSTEM)))
+ return FALSE;
+ /* Don't highlight for delayed messages */
+ if ((flags & PURPLE_MESSAGE_RECV) && (flags & PURPLE_MESSAGE_DELAYED))
+ return FALSE;
+ /* Check whether to highlight for system message for either chat or IM */
+ if (flags & PURPLE_MESSAGE_SYSTEM) {
+ if (PURPLE_IS_CHAT_CONVERSATION(conv)) {
+ if (!purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_sys"))
+ return FALSE;
+ } else if (PURPLE_IS_IM_CONVERSATION(conv)) {
+ if (!purple_prefs_get_bool("/plugins/gtk/X11/notify/type_im_sys"))
+ return FALSE;
+ } else {
+ /* System message not from chat or IM, ignore */
+ return FALSE;
+ }
+ }
+
+ /* If it's a chat, check if we should only highlight when nick is mentioned */
if ((PURPLE_IS_CHAT_CONVERSATION(conv) &&
purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_nick") &&
!(flags & PURPLE_MESSAGE_NICK)))
return FALSE;
- if ((flags & PURPLE_MESSAGE_RECV) && !(flags & PURPLE_MESSAGE_DELAYED))
- notify(conv, TRUE);
+ /* Nothing speaks against notifying, do so */
+ notify(conv, TRUE);
return FALSE;
}
@@ -691,6 +712,17 @@ get_config_frame(PurplePlugin *plugin)
g_signal_connect(G_OBJECT(toggle), "toggled",
G_CALLBACK(type_toggle_cb), "type_im");
+ ref = toggle;
+ toggle = gtk_check_button_new_with_mnemonic(_("\t_Notify for System messages"));
+ gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
+ purple_prefs_get_bool("/plugins/gtk/X11/notify/type_im_sys"));
+ g_signal_connect(G_OBJECT(toggle), "toggled",
+ G_CALLBACK(type_toggle_cb), "type_im_sys");
+ gtk_widget_set_sensitive(toggle, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ref)));
+ g_signal_connect(G_OBJECT(ref), "toggled",
+ G_CALLBACK(pidgin_toggle_sensitive), toggle);
+
toggle = gtk_check_button_new_with_mnemonic(_("C_hat windows"));
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
@@ -709,6 +741,16 @@ get_config_frame(PurplePlugin *plugin)
g_signal_connect(G_OBJECT(ref), "toggled",
G_CALLBACK(pidgin_toggle_sensitive), toggle);
+ toggle = gtk_check_button_new_with_mnemonic(_("\tNotify for _System messages"));
+ gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
+ purple_prefs_get_bool("/plugins/gtk/X11/notify/type_chat_sys"));
+ g_signal_connect(G_OBJECT(toggle), "toggled",
+ G_CALLBACK(type_toggle_cb), "type_chat_sys");
+ gtk_widget_set_sensitive(toggle, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ref)));
+ g_signal_connect(G_OBJECT(ref), "toggled",
+ G_CALLBACK(pidgin_toggle_sensitive), toggle);
+
toggle = gtk_check_button_new_with_mnemonic(_("_Focused windows"));
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
@@ -779,6 +821,8 @@ get_config_frame(PurplePlugin *plugin)
G_CALLBACK(method_toggle_cb), "method_raise");
/* Present conversation method button */
+ /* Translators: "Present" as used here is a verb. The plugin presents
+ * the window to the user. */
toggle = gtk_check_button_new_with_mnemonic(_("_Present conversation window"));
gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
@@ -876,8 +920,10 @@ plugin_load(PurplePlugin *plugin, GError **error)
purple_prefs_add_none("/plugins/gtk/X11/notify");
purple_prefs_add_bool("/plugins/gtk/X11/notify/type_im", TRUE);
+ purple_prefs_add_bool("/plugins/gtk/X11/notify/type_im_sys", FALSE);
purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat", FALSE);
purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat_nick", FALSE);
+ purple_prefs_add_bool("/plugins/gtk/X11/notify/type_chat_sys", FALSE);
purple_prefs_add_bool("/plugins/gtk/X11/notify/type_focused", FALSE);
purple_prefs_add_bool("/plugins/gtk/X11/notify/method_string", FALSE);
purple_prefs_add_string("/plugins/gtk/X11/notify/title_string", "(*)");
diff --git a/pidgin/plugins/themeedit-icon.c b/pidgin/plugins/themeedit-icon.c
deleted file mode 100644
index 0cb55b024f..0000000000
--- a/pidgin/plugins/themeedit-icon.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-#include "internal.h"
-#include "pidgin.h"
-#include "debug.h"
-#include "version.h"
-
-#include "theme-manager.h"
-
-#include "gtk3compat.h"
-#include "gtkblist.h"
-#include "gtkblist-theme.h"
-#include "gtkutils.h"
-#include "gtkplugin.h"
-
-#include "pidginstock.h"
-#include "themeedit-icon.h"
-
-typedef enum
-{
- FLAG_SIZE_MICROSOPIC = 0,
- FLAG_SIZE_EXTRA_SMALL,
- FLAG_SIZE_SMALL,
- FLAG_SIZE_MEDIUM,
- FLAG_SIZE_LARGE,
- FLAG_SIZE_HUGE,
- FLAG_SIZE_NONE,
-} SectionFlags;
-
-#define SECTION_FLAGS_ALL (0x3f)
-
-static const char *stocksizes [] = {
- [FLAG_SIZE_MICROSOPIC] = PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC,
- [FLAG_SIZE_EXTRA_SMALL] = PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL,
- [FLAG_SIZE_SMALL] = PIDGIN_ICON_SIZE_TANGO_SMALL,
- [FLAG_SIZE_MEDIUM] = PIDGIN_ICON_SIZE_TANGO_MEDIUM,
- [FLAG_SIZE_LARGE] = PIDGIN_ICON_SIZE_TANGO_LARGE,
- [FLAG_SIZE_HUGE] = PIDGIN_ICON_SIZE_TANGO_HUGE,
- [FLAG_SIZE_NONE] = NULL,
-};
-
-static const struct options {
- const char *stockid;
- const char *text;
-} statuses[] = {
- {PIDGIN_STOCK_STATUS_AVAILABLE, N_("Available")},
- {PIDGIN_STOCK_STATUS_AWAY, N_("Away")},
- {PIDGIN_STOCK_STATUS_XA, N_("Extended Away")},
- {PIDGIN_STOCK_STATUS_BUSY, N_("Busy")},
- {PIDGIN_STOCK_STATUS_OFFLINE, N_("Offline")},
- {PIDGIN_STOCK_STATUS_LOGIN, N_("Just logged in")},
- {PIDGIN_STOCK_STATUS_LOGOUT, N_("Just logged out")},
- {PIDGIN_STOCK_STATUS_PERSON, N_("Icon for Contact/\nIcon for Unknown person")},
- {PIDGIN_STOCK_STATUS_CHAT, N_("Icon for Chat")},
- {NULL, NULL}
-}, chatemblems[] = {
- {PIDGIN_STOCK_STATUS_IGNORED, N_("Ignored")},
- {PIDGIN_STOCK_STATUS_FOUNDER, N_("Founder")},
- /* A user in a chat room who has special privileges. */
- {PIDGIN_STOCK_STATUS_OPERATOR, N_("Operator")},
- /* A half operator is someone who has a subset of the privileges
- that an operator has. */
- {PIDGIN_STOCK_STATUS_HALFOP, N_("Half Operator")},
- {PIDGIN_STOCK_STATUS_VOICE, N_("Voice")},
- {NULL, NULL}
-}, dialogicons[] = {
- {PIDGIN_STOCK_DIALOG_AUTH, N_("Authorization dialog")},
- {PIDGIN_STOCK_DIALOG_ERROR, N_("Error dialog")},
- {PIDGIN_STOCK_DIALOG_INFO, N_("Information dialog")},
- {PIDGIN_STOCK_DIALOG_MAIL, N_("Mail dialog")},
- {PIDGIN_STOCK_DIALOG_QUESTION, N_("Question dialog")},
- {PIDGIN_STOCK_DIALOG_WARNING, N_("Warning dialog")},
- {NULL, NULL},
- {PIDGIN_STOCK_DIALOG_COOL, N_("What kind of dialog is this?")},
-};
-
-static const struct {
- const char *heading;
- const struct options *options;
- SectionFlags flags;
-} sections[] = {
- {N_("Status Icons"), statuses, SECTION_FLAGS_ALL ^ (1 << FLAG_SIZE_HUGE)},
- {N_("Chatroom Emblems"), chatemblems, FLAG_SIZE_SMALL},
- {N_("Dialog Icons"), dialogicons, (1 << FLAG_SIZE_EXTRA_SMALL) | (1 << FLAG_SIZE_HUGE)},
- {NULL, NULL, 0}
-};
-
-static PidginStatusIconTheme *
-create_icon_theme(GtkWidget *window)
-{
- int s, i, j;
- const char *dirname = g_get_tmp_dir();
- PidginStatusIconTheme *theme;
- const char *author;
-#ifndef _WIN32
- author = getlogin();
-#else
- author = "user";
-#endif
- theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME, "type", "status-icon",
- "author", author,
- "directory", dirname,
- NULL);
-
- for (s = 0; sections[s].heading; s++) {
- GtkWidget *vbox = g_object_get_data(G_OBJECT(window), sections[s].heading);
- for (i = 0; sections[s].options[i].stockid; i++) {
- GtkWidget *image = g_object_get_data(G_OBJECT(vbox), sections[s].options[i].stockid);
- GdkPixbuf *pixbuf = g_object_get_data(G_OBJECT(image), "pixbuf");
- if (!pixbuf)
- continue;
- pidgin_icon_theme_set_icon(PIDGIN_ICON_THEME(theme), sections[s].options[i].stockid,
- sections[s].options[i].stockid);
- for (j = 0; stocksizes[j]; j++) {
- int width, height;
- GtkIconSize iconsize;
- char size[8];
- char *name;
- GdkPixbuf *scale;
- GError *error = NULL;
-
- if (!(sections[s].flags & (1 << j)))
- continue;
-
- iconsize = gtk_icon_size_from_name(stocksizes[j]);
- gtk_icon_size_lookup(iconsize, &width, &height);
- g_snprintf(size, sizeof(size), "%d", width);
-
- if (i == 0) {
- name = g_build_filename(dirname, size, NULL);
- purple_build_dir(name, S_IRUSR | S_IWUSR | S_IXUSR);
- g_free(name);
- }
-
- name = g_build_filename(dirname, size, sections[s].options[i].stockid, NULL);
- scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
- gdk_pixbuf_save(scale, name, "png", &error, "compression", "9", NULL);
- g_free(name);
- g_object_unref(G_OBJECT(scale));
- if (error)
- g_error_free(error);
- }
- }
- }
- return theme;
-}
-
-static void
-use_icon_theme(GtkWidget *w, GtkWidget *window)
-{
- /* I don't quite understand the icon-theme stuff. For example, I don't
- * know why PidginIconTheme needs to be abstract, or how PidginStatusIconTheme
- * would be different from other PidginIconTheme's (e.g. PidginStockIconTheme)
- * etc., but anyway, this works for now.
- *
- * Here's an interesting note: A PidginStatusIconTheme can be used for both
- * stock and status icons. Like I said, I don't quite know how they could be
- * different. So I am going to just keep it as it is, for now anyway, until I
- * have the time to dig through this, or someone explains this stuff to me
- * clearly.
- * -- Sad
- */
- PidginStatusIconTheme *theme = create_icon_theme(window);
- pidgin_stock_load_status_icon_theme(PIDGIN_STATUS_ICON_THEME(theme));
- pidgin_stock_load_stock_icon_theme((PidginStockIconTheme *)theme);
- pidgin_blist_refresh(purple_blist_get_buddy_list());
- g_object_unref(theme);
-}
-
-#ifdef NOT_SADRUL
-static void
-save_icon_theme(GtkWidget *w, GtkWidget *window)
-{
- /* TODO: SAVE! */
- gtk_widget_destroy(window);
-}
-#endif
-
-static void
-close_icon_theme(GtkWidget *w, GtkWidget *window)
-{
- gtk_widget_destroy(window);
-}
-
-static void
-stock_icon_selected(const char *filename, gpointer image)
-{
- GError *error = NULL;
- GdkPixbuf *scale;
- int i;
- GdkPixbuf *pixbuf;
-
- if (!filename)
- return;
-
- pixbuf = gdk_pixbuf_new_from_file(filename, &error);
- if (error || !pixbuf) {
- purple_debug_error("theme-editor-icon", "Unable to load icon file '%s' (%s)\n",
- filename, error ? error->message : "Reason unknown");
- if (error)
- g_error_free(error);
- return;
- }
-
- scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, GDK_INTERP_BILINEAR);
- gtk_image_set_from_pixbuf(GTK_IMAGE(image), scale);
- g_object_unref(G_OBJECT(scale));
-
- /* Update the size previews */
- for (i = 0; stocksizes[i]; i++) {
- int width, height;
- GtkIconSize iconsize;
- GtkWidget *prev = g_object_get_data(G_OBJECT(image), stocksizes[i]);
- if (!prev)
- continue;
- iconsize = gtk_icon_size_from_name(stocksizes[i]);
- gtk_icon_size_lookup(iconsize, &width, &height);
- scale = gdk_pixbuf_scale_simple(pixbuf, width, height, GDK_INTERP_BILINEAR);
- gtk_image_set_from_pixbuf(GTK_IMAGE(prev), scale);
- g_object_unref(G_OBJECT(scale));
- }
-
- /* Save the original pixbuf so we can use it for resizing later */
- g_object_set_data_full(G_OBJECT(image), "pixbuf", pixbuf,
- (GDestroyNotify)g_object_unref);
-}
-
-static gboolean
-change_stock_image(GtkWidget *widget, GdkEventButton *event, GtkWidget *image)
-{
- GtkWidget *win = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
- stock_icon_selected, image);
- gtk_window_set_title(GTK_WINDOW(win),
- g_object_get_data(G_OBJECT(image), "localized-name"));
- gtk_widget_show_all(win);
-
- return TRUE;
-}
-
-void pidgin_icon_theme_edit(PurplePluginAction *unused)
-{
- GtkWidget *dialog;
- GtkWidget *box, *vbox;
- GtkWidget *notebook;
- GtkSizeGroup *sizegroup;
- int s, i, j;
- dialog = pidgin_create_dialog(_("Pidgin Icon Theme Editor"), 0, "theme-editor-icon", FALSE);
- box = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, PIDGIN_HIG_BOX_SPACE);
-
- notebook = gtk_notebook_new();
- gtk_box_pack_start(GTK_BOX(box), notebook, TRUE, TRUE, PIDGIN_HIG_BOX_SPACE);
- sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
- for (s = 0; sections[s].heading; s++) {
- const char *heading = sections[s].heading;
-
- box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), box, gtk_label_new(heading));
-
- vbox = pidgin_make_frame(box, heading);
- g_object_set_data(G_OBJECT(dialog), heading, vbox);
-
- for (i = 0; sections[s].options[i].stockid; i++) {
- const char *id = sections[s].options[i].stockid;
- const char *text = _(sections[s].options[i].text);
-
- GtkWidget *hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_CAT_SPACE);
- GtkWidget *label = gtk_label_new(text);
- GtkWidget *image = gtk_image_new_from_stock(id,
- gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
- GtkWidget *ebox = gtk_event_box_new();
- gtk_container_add(GTK_CONTAINER(ebox), image);
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-
- g_signal_connect(G_OBJECT(ebox), "button-press-event", G_CALLBACK(change_stock_image), image);
- g_object_set_data(G_OBJECT(image), "property-name", (gpointer)id);
- g_object_set_data(G_OBJECT(image), "localized-name", (gpointer)text);
-
- gtk_size_group_add_widget(sizegroup, label);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), ebox, FALSE, FALSE, 0);
-
- for (j = 0; stocksizes[j]; j++) {
- GtkWidget *sh;
-
- if (!(sections[s].flags & (1 << j)))
- continue;
-
- sh = gtk_image_new_from_stock(id, gtk_icon_size_from_name(stocksizes[j]));
- gtk_box_pack_start(GTK_BOX(hbox), sh, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(image), stocksizes[j], sh);
- }
-
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
-
- g_object_set_data(G_OBJECT(vbox), id, image);
- }
- }
-
-#ifdef NOT_SADRUL
- pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, G_CALLBACK(save_icon_theme), dialog);
-#endif
- pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_APPLY, G_CALLBACK(use_icon_theme), dialog);
- pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, G_CALLBACK(close_icon_theme), dialog);
- gtk_widget_show_all(dialog);
- g_object_unref(sizegroup);
-}
-
diff --git a/pidgin/plugins/themeedit-icon.h b/pidgin/plugins/themeedit-icon.h
deleted file mode 100644
index fbc8e4ad5c..0000000000
--- a/pidgin/plugins/themeedit-icon.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#ifndef _THEMEEDIT_ICON_H_
-#define _THEMEEDIT_ICON_H_
-
-void pidgin_icon_theme_edit(PurplePluginAction *);
-
-#endif
-
diff --git a/pidgin/plugins/themeedit.c b/pidgin/plugins/themeedit.c
deleted file mode 100644
index 4872fe7db3..0000000000
--- a/pidgin/plugins/themeedit.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/* Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-#include "internal.h"
-#include "pidgin.h"
-#include "version.h"
-
-#include "gtk3compat.h"
-
-#include "theme-manager.h"
-
-#include "gtkblist.h"
-#include "gtkblist-theme.h"
-#include "gtkutils.h"
-#include "gtkplugin.h"
-
-#define PLUGIN_ID "gtk-theme-editor"
-
-#include "themeedit-icon.h"
-
-static gboolean
-prop_type_is_color(PidginBlistTheme *theme, const char *prop)
-{
- PidginBlistThemeClass *klass = PIDGIN_BLIST_THEME_GET_CLASS(theme);
- GParamSpec *spec = g_object_class_find_property(G_OBJECT_CLASS(klass), prop);
-
- return G_IS_PARAM_SPEC_BOXED(spec);
-}
-
-#ifdef NOT_SADRUL
-static void
-save_blist_theme(GtkWidget *w, GtkWidget *window)
-{
- /* TODO: SAVE! */
- gtk_widget_destroy(window);
-}
-#endif
-
-static void
-close_blist_theme(GtkWidget *w, GtkWidget *window)
-{
- gtk_widget_destroy(window);
-}
-
-static void
-theme_color_selected(GtkColorButton *button, const char *prop)
-{
- GdkColor color;
- PidginBlistTheme *theme;
-
- pidgin_color_chooser_get_rgb(GTK_COLOR_CHOOSER(button), &color);
-
- theme = pidgin_blist_get_theme();
-
- if (prop_type_is_color(theme, prop)) {
- g_object_set(G_OBJECT(theme), prop, &color, NULL);
- } else {
- PidginThemeFont *font = NULL;
- g_object_get(G_OBJECT(theme), prop, &font, NULL);
- if (!font) {
- font = pidgin_theme_font_new(NULL, &color);
- g_object_set(G_OBJECT(theme), prop, font, NULL);
- pidgin_theme_font_free(font);
- } else {
- pidgin_theme_font_set_color(font, &color);
- }
- }
- pidgin_blist_set_theme(theme);
-}
-
-static void
-theme_font_face_selected(GtkFontButton *button, PidginThemeFont *font)
-{
- const char *fontname = gtk_font_button_get_font_name(button);
- pidgin_theme_font_set_font_face(font, fontname);
- pidgin_blist_refresh(purple_blist_get_buddy_list());
-}
-
-static GtkWidget *
-theme_font_select_face_widget(const char *prop)
-{
- GtkWidget *widget;
- PidginBlistTheme *theme;
- PidginThemeFont *font = NULL;
- const char *face;
-
- theme = pidgin_blist_get_theme();
- g_object_get(G_OBJECT(theme), prop, &font, NULL);
-
- if (!font) {
- font = pidgin_theme_font_new(NULL, NULL);
- g_object_set(G_OBJECT(theme), prop, font, NULL);
- pidgin_theme_font_free(font);
- g_object_get(G_OBJECT(theme), prop, &font, NULL);
- }
-
- face = pidgin_theme_font_get_font_face(font);
- widget = gtk_font_button_new();
- gtk_font_button_set_title(GTK_FONT_BUTTON(widget), _("Select Font"));
- if (face && *face)
- gtk_font_button_set_font_name(GTK_FONT_BUTTON(widget), face);
- g_signal_connect(G_OBJECT(widget), "font-set", G_CALLBACK(theme_font_face_selected),
- font);
-
- return widget;
-}
-
-static GtkWidget *
-theme_color_select_widget(const char *prop)
-{
- GtkWidget *widget;
- PidginBlistTheme *theme;
- const GdkColor *color = NULL;
-
- theme = pidgin_blist_get_theme();
-
- if (prop_type_is_color(theme, prop)) {
- g_object_get(G_OBJECT(theme), prop, &color, NULL);
- } else {
- PidginThemeFont *pair = NULL;
- g_object_get(G_OBJECT(theme), prop, &pair, NULL);
- if (pair)
- color = pidgin_theme_font_get_color(pair);
- }
-
- widget = gtk_color_button_new();
- gtk_color_button_set_title(GTK_COLOR_BUTTON(widget), _("Select Color"));
- gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(widget), FALSE);
- if (color)
- pidgin_color_chooser_set_rgb(GTK_COLOR_CHOOSER(widget), color);
- g_signal_connect(G_OBJECT(widget), "color-set",
- G_CALLBACK(theme_color_selected), (gpointer)prop);
-
- return widget;
-}
-
-static GtkWidget *
-pidgin_theme_create_color_selector(const char *text, const char *blurb, const char *prop,
- GtkSizeGroup *sizegroup)
-{
- GtkWidget *color;
- GtkWidget *hbox, *label;
-
- hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_CAT_SPACE);
-
- label = gtk_label_new(_(text));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(sizegroup, label);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_widget_set_tooltip_text(label, blurb);
-
- color = theme_color_select_widget(prop);
- gtk_box_pack_start(GTK_BOX(hbox), color, FALSE, FALSE, 0);
-
- return hbox;
-}
-
-static GtkWidget *
-pidgin_theme_create_font_selector(const char *text, const char *blurb, const char *prop,
- GtkSizeGroup *sizegroup)
-{
- GtkWidget *color, *font;
- GtkWidget *hbox, *label;
-
- hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, PIDGIN_HIG_CAT_SPACE);
-
- label = gtk_label_new(_(text));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(sizegroup, label);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
- gtk_widget_set_tooltip_text(label, blurb);
-
- font = theme_font_select_face_widget(prop);
- gtk_box_pack_start(GTK_BOX(hbox), font, FALSE, FALSE, 0);
-
- color = theme_color_select_widget(prop);
- gtk_box_pack_start(GTK_BOX(hbox), color, FALSE, FALSE, 0);
-
- return hbox;
-}
-
-static void
-pidgin_blist_theme_edit(PurplePluginAction *unused)
-{
- GtkWidget *dialog;
- GtkWidget *box;
- GtkSizeGroup *group;
- PidginBlistTheme *theme;
- GObjectClass *klass;
- int i, j;
- static struct {
- const char *header;
- const char *props[12];
- } sections[] = {
- {N_("Contact"), {
- "contact-color",
- "contact",
- "online",
- "away",
- "offline",
- "idle",
- "message",
- "message-nick-said",
- "status",
- NULL
- }
- },
- {N_("Group"), {
- "expanded-color",
- "expanded-text",
- "collapsed-color",
- "collapsed-text",
- NULL
- }
- },
- { NULL, { } }
- };
-
- dialog = pidgin_create_dialog(_("Pidgin Buddylist Theme Editor"), 0, "theme-editor-blist", FALSE);
- box = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, PIDGIN_HIG_BOX_SPACE);
-
- theme = pidgin_blist_get_theme();
- if (!theme) {
- const char *author;
-#ifndef _WIN32
- author = getlogin();
-#else
- author = "user";
-#endif
- theme = g_object_new(PIDGIN_TYPE_BLIST_THEME, "type", "blist",
- "author", author,
- NULL);
- pidgin_blist_set_theme(theme);
- }
- klass = G_OBJECT_CLASS(PIDGIN_BLIST_THEME_GET_CLASS(theme));
-
- group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- for (i = 0; sections[i].header; i++) {
- GtkWidget *vbox;
- GtkWidget *hbox;
- GParamSpec *spec;
-
- vbox = pidgin_make_frame(box, _(sections[i].header));
- for (j = 0; sections[i].props[j]; j++) {
- const char *label;
- const char *blurb;
- spec = g_object_class_find_property(klass, sections[i].props[j]);
- label = g_param_spec_get_nick(spec);
- blurb = g_param_spec_get_blurb(spec);
- if (G_IS_PARAM_SPEC_BOXED(spec)) {
- hbox = pidgin_theme_create_color_selector(label, blurb,
- sections[i].props[j], group);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- } else {
- hbox = pidgin_theme_create_font_selector(label, blurb,
- sections[i].props[j], group);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- }
- }
- }
-
-#ifdef NOT_SADRUL
- pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_SAVE, G_CALLBACK(save_blist_theme), dialog);
-#endif
- pidgin_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, G_CALLBACK(close_blist_theme), dialog);
-
- gtk_widget_show_all(dialog);
-
- g_object_unref(group);
-}
-
-static GList *
-actions(PurplePlugin *plugin)
-{
- GList *l = NULL;
- PurplePluginAction *act = NULL;
-
- act = purple_plugin_action_new(_("Edit Buddylist Theme"), pidgin_blist_theme_edit);
- l = g_list_append(l, act);
- act = purple_plugin_action_new(_("Edit Icon Theme"), pidgin_icon_theme_edit);
- l = g_list_append(l, act);
-
- return l;
-}
-
-static PidginPluginInfo *
-plugin_query(GError **error)
-{
- const gchar * const authors[] = {
- "Sadrul Habib Chowdhury <imadil@gmail.com>",
- NULL
- };
-
- return pidgin_plugin_info_new(
- "id", PLUGIN_ID,
- "name", N_("Pidgin Theme Editor"),
- "version", DISPLAY_VERSION,
- "category", N_("Theming"),
- "summary", N_("Pidgin Theme Editor"),
- "description", N_("Pidgin Theme Editor."),
- "authors", authors,
- "website", PURPLE_WEBSITE,
- "abi-version", PURPLE_ABI_VERSION,
- "actions-cb", actions,
- NULL
- );
-}
-
-static gboolean
-plugin_load(PurplePlugin *plugin, GError **error)
-{
- return TRUE;
-}
-
-static gboolean
-plugin_unload(PurplePlugin *plugin, GError **error)
-{
- return TRUE;
-}
-
-PURPLE_PLUGIN_INIT(themeeditor, plugin_query, plugin_load, plugin_unload);
diff --git a/pidgin/win32/nsis/nsis_translations.desktop.in b/pidgin/win32/nsis/nsis_translations.desktop.in
index e732e7f120..16b5ffa99c 100644
--- a/pidgin/win32/nsis/nsis_translations.desktop.in
+++ b/pidgin/win32/nsis/nsis_translations.desktop.in
@@ -39,7 +39,7 @@ _PIDGINFINISHVISITWEBSITE=Visit the Pidgin Web Page
_PIDGINPROMPTCONTINUEWITHOUTUNINSTALL=Unable to uninstall the currently installed version of Pidgin. The new version will be installed without removing the currently installed version.
-_PIDGINPROMPTFORCENOGTK=Pidgin requires a compatible GTK+ Runtime (which doesn't appear to be already present).$\rAre you sure you want to skip installing the GTK+ Runtime?
+_PIDGINPROMPTFORCENOGTK=Pidgin requires a compatible GTK+ Runtime (which does not appear to be installed).$\rAre you sure you want to skip installing the GTK+ Runtime?
#Installer Subsection Text
_URIHANDLERSSECTIONTITLE=URI Handlers
diff --git a/pidgin/win32/nsis/pidgin-installer.nsi b/pidgin/win32/nsis/pidgin-installer.nsi
index c7f9ac1ab0..34e0e5b7e9 100644
--- a/pidgin/win32/nsis/pidgin-installer.nsi
+++ b/pidgin/win32/nsis/pidgin-installer.nsi
@@ -580,7 +580,6 @@ Section Uninstall
Delete "$INSTDIR\plugins\ssl-nss.dll"
Delete "$INSTDIR\plugins\ssl.dll"
Delete "$INSTDIR\plugins\statenotify.dll"
- Delete "$INSTDIR\plugins\themeedit.dll"
Delete "$INSTDIR\plugins\ticker.dll"
Delete "$INSTDIR\plugins\timestamp.dll"
Delete "$INSTDIR\plugins\timestamp_format.dll"
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 78745ce7f5..ce9cd05061 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -186,7 +186,6 @@ libpurple/protocols/yahoo/yahoo_filexfer.c
libpurple/protocols/yahoo/yahoo_packet.c
libpurple/protocols/yahoo/yahoo_profile.c
libpurple/protocols/yahoo/yahoochat.c
-libpurple/protocols/yahoo/yahoojp.c
libpurple/protocols/yahoo/ycht.c
libpurple/protocols/yahoo/ymsg.c
libpurple/protocols/zephyr/zephyr.c
@@ -265,8 +264,6 @@ pidgin/plugins/relnot.c
pidgin/plugins/screencap.c
pidgin/plugins/sendbutton.c
pidgin/plugins/spellchk.c
-pidgin/plugins/themeedit-icon.c
-pidgin/plugins/themeedit.c
pidgin/plugins/ticker/ticker.c
pidgin/plugins/unity.c
pidgin/plugins/webkit.c
diff --git a/po/br.po b/po/br.po
index b5f1c24114..ab4d48911b 100644
--- a/po/br.po
+++ b/po/br.po
@@ -6619,7 +6619,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -10056,7 +10055,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2997
msgid "Encoding"
msgstr ""
@@ -13273,17 +13271,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13307,59 +13302,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13642,10 +13611,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/brx.po b/po/brx.po
index 25893a37e4..e51ea1a39c 100644
--- a/po/brx.po
+++ b/po/brx.po
@@ -6512,7 +6512,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9949,7 +9948,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2999
msgid "Encoding"
msgstr ""
@@ -13166,17 +13164,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13200,59 +13195,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13535,10 +13504,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/es_AR.po b/po/es_AR.po
index 0887f5e5bb..05706edac3 100644
--- a/po/es_AR.po
+++ b/po/es_AR.po
@@ -6512,7 +6512,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9949,7 +9948,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2999
msgid "Encoding"
msgstr ""
@@ -13166,17 +13164,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13200,59 +13195,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13535,10 +13504,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/hy.po b/po/hy.po
index 443e85174d..a90f76e4a9 100644
--- a/po/hy.po
+++ b/po/hy.po
@@ -6620,7 +6620,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -10057,7 +10056,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2997
msgid "Encoding"
msgstr ""
@@ -13274,17 +13272,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13308,59 +13303,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13643,10 +13612,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/kk.po b/po/kk.po
index 664b45461a..c5f8d5c1df 100644
--- a/po/kk.po
+++ b/po/kk.po
@@ -6509,7 +6509,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3709
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9941,7 +9940,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2982
msgid "Encoding"
msgstr ""
@@ -13149,17 +13147,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13183,59 +13178,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:928
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13514,10 +13483,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/ks.po b/po/ks.po
index 9ff6cf5a14..63618c514f 100644
--- a/po/ks.po
+++ b/po/ks.po
@@ -6512,7 +6512,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9949,7 +9948,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2999
msgid "Encoding"
msgstr ""
@@ -13166,17 +13164,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13200,59 +13195,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13535,10 +13504,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/lv.po b/po/lv.po
index 174b1daa51..9f9045d646 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -6515,7 +6515,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3709
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9955,7 +9954,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2990
msgid "Encoding"
msgstr ""
@@ -13181,17 +13179,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13215,59 +13210,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:928
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13546,10 +13515,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/ms_MY.po b/po/ms_MY.po
index db9213871b..ef930f31d2 100644
--- a/po/ms_MY.po
+++ b/po/ms_MY.po
@@ -6617,7 +6617,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -10050,7 +10049,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2997
msgid "Encoding"
msgstr ""
@@ -13258,17 +13256,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13292,59 +13287,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13627,10 +13596,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/pl.po b/po/pl.po
index ebf6f4fd7e..5b4147d9e2 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6981,7 +6981,6 @@ msgstr "ping &lt;identyfikator_Jabbera&gt;: Wysyła ping do użytkownika/skład
#: ../libpurple/protocols/jabber/jabber.c:3714
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr "buzz: szepcze do użytkownika, aby uzyskać jego uwagę"
@@ -9927,7 +9926,6 @@ msgstr "Wtyczka protokołu ICQ"
#: ../libpurple/protocols/oscar/libicq.c:165
#: ../libpurple/protocols/yahoo/libyahoo.c:318
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
#: ../libpurple/protocols/zephyr/zephyr.c:3030
msgid "Encoding"
msgstr "Kodowanie"
@@ -12733,17 +12731,14 @@ msgid "Auth Domain"
msgstr "Domena uwierzytelnienia"
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr "join &lt;pokój&gt;: dołącza do pokoju konferencji w sieci Yahoo!"
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr "list: wyświetla listę pokoi w sieci Yahoo!"
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr "doodle: prosi użytkownika o rozpoczęcia sesji Doodle"
@@ -12767,54 +12762,29 @@ msgid "Yahoo! Protocol Plugin"
msgstr "Wtyczka protokołu Yahoo!"
#: ../libpurple/protocols/yahoo/libyahoo.c:309
-#: ../libpurple/protocols/yahoo/libyahoojp.c:207
msgid "Pager port"
msgstr "Port pagera"
#: ../libpurple/protocols/yahoo/libyahoo.c:312
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "File transfer server"
msgstr "Serwer przesyłania plików"
#: ../libpurple/protocols/yahoo/libyahoo.c:315
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "Chat room locale"
msgstr "Lokalizacja pokoju konferencji"
#: ../libpurple/protocols/yahoo/libyahoo.c:321
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Ignore conference and chatroom invitations"
msgstr "Ignorowanie zaproszeń do konferencji"
#: ../libpurple/protocols/yahoo/libyahoo.c:325
-#: ../libpurple/protocols/yahoo/libyahoojp.c:223
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr "Użycie pośrednika konta dla połączeń HTTP i HTTPS"
#: ../libpurple/protocols/yahoo/libyahoo.c:328
-#: ../libpurple/protocols/yahoo/libyahoojp.c:226
msgid "Chat room list URL"
msgstr "Adres URL listy pokoi konferencji"
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr "Identyfikator Yahoo! Japan..."
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:182
-#: ../libpurple/protocols/yahoo/libyahoojp.c:184
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr "Wtyczka protokołu Yahoo! Japan"
-
#: ../libpurple/protocols/yahoo/libymsg.c:929
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13072,10 +13042,6 @@ msgstr "Nieobsługiwana metoda"
msgid "Write Error"
msgstr "Błąd zapisu"
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:799
-msgid "Yahoo! Japan Profile"
-msgstr "Profil Yahoo! Japan"
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:800
msgid "Yahoo! Profile"
msgstr "Profil Yahoo!"
diff --git a/po/sd.po b/po/sd.po
index 5c9f4424b7..d3a5a78c23 100644
--- a/po/sd.po
+++ b/po/sd.po
@@ -6512,7 +6512,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9949,7 +9948,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2999
msgid "Encoding"
msgstr ""
@@ -13166,17 +13164,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13200,59 +13195,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13535,10 +13504,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/tt.po b/po/tt.po
index 2cf99cdced..85f506d247 100644
--- a/po/tt.po
+++ b/po/tt.po
@@ -6509,7 +6509,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3709
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9941,7 +9940,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2990
msgid "Encoding"
msgstr ""
@@ -13149,17 +13147,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13183,59 +13178,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:928
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13514,10 +13483,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""
diff --git a/po/uz.po b/po/uz.po
index 5d308f0997..a5640492b0 100644
--- a/po/uz.po
+++ b/po/uz.po
@@ -6509,7 +6509,6 @@ msgstr ""
#: ../libpurple/protocols/jabber/jabber.c:3717
#: ../libpurple/protocols/yahoo/libyahoo.c:53
-#: ../libpurple/protocols/yahoo/libyahoojp.c:50
msgid "buzz: Buzz a user to get their attention"
msgstr ""
@@ -9942,7 +9941,6 @@ msgstr ""
#: ../libpurple/protocols/oscar/libicq.c:162
#: ../libpurple/protocols/yahoo/libyahoo.c:326
-#: ../libpurple/protocols/yahoo/libyahoojp.c:222
#: ../libpurple/protocols/zephyr/zephyr.c:2999
msgid "Encoding"
msgstr ""
@@ -13150,17 +13148,14 @@ msgid "Auth Domain"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:44
-#: ../libpurple/protocols/yahoo/libyahoojp.c:41
msgid "join &lt;room&gt;: Join a chat room on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:49
-#: ../libpurple/protocols/yahoo/libyahoojp.c:46
msgid "list: List rooms on the Yahoo network"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:57
-#: ../libpurple/protocols/yahoo/libyahoojp.c:54
msgid "doodle: Request user to start a Doodle session"
msgstr ""
@@ -13184,59 +13179,33 @@ msgid "Yahoo! Protocol Plugin"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:314
-#: ../libpurple/protocols/yahoo/libyahoojp.c:210
msgid "Pager port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:317
-#: ../libpurple/protocols/yahoo/libyahoojp.c:213
msgid "File transfer server"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:320
-#: ../libpurple/protocols/yahoo/libyahoojp.c:216
msgid "File transfer port"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:323
-#: ../libpurple/protocols/yahoo/libyahoojp.c:219
msgid "Chat room locale"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:329
-#: ../libpurple/protocols/yahoo/libyahoojp.c:225
msgid "Ignore conference and chatroom invitations"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:332
-#: ../libpurple/protocols/yahoo/libyahoojp.c:228
msgid "Use account proxy for HTTP and HTTPS connections"
msgstr ""
#: ../libpurple/protocols/yahoo/libyahoo.c:336
-#: ../libpurple/protocols/yahoo/libyahoojp.c:232
msgid "Chat room list URL"
msgstr ""
-#: ../libpurple/protocols/yahoo/libyahoojp.c:62
-msgid "Yahoo JAPAN ID..."
-msgstr ""
-
-#. *< type
-#. *< ui_requirement
-#. *< flags
-#. *< dependencies
-#. *< priority
-#. *< id
-#. *< name
-#. *< version
-#. * summary
-#. * description
-#: ../libpurple/protocols/yahoo/libyahoojp.c:185
-#: ../libpurple/protocols/yahoo/libyahoojp.c:187
-msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/libymsg.c:926
#, c-format
msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -13519,10 +13488,6 @@ msgstr ""
msgid "Write Error"
msgstr ""
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:797
-msgid "Yahoo! Japan Profile"
-msgstr ""
-
#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
msgid "Yahoo! Profile"
msgstr ""