summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJarek Kobus <jkobus@trolltech.com>2009-04-17 06:59:50 (GMT)
committerJarek Kobus <jkobus@trolltech.com>2009-04-17 06:59:50 (GMT)
commitfa58c0e9afecc3807bd76babbd5da3918afcdd3d (patch)
tree4895431d492b093b1e2ee29032fa82999a8ed09b /src
parent04c01e15739d926ef653293ef1e89132085d7acd (diff)
parent8eb08c8c294f00763961e86cc3370b0ef78c8976 (diff)
downloadQt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.zip
Qt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.tar.gz
Qt-fa58c0e9afecc3807bd76babbd5da3918afcdd3d.tar.bz2
Merge branch '4.5' of git@scm.dev.nokia.troll.no:qt/qt into 4.5
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/ColorData.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c5
-rw-r--r--src/3rdparty/webkit/WebCore/generated/tokenizer.cpp2315
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp16
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp28
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp2
-rw-r--r--src/corelib/io/qprocess_unix.cpp8
-rw-r--r--src/corelib/io/qsettings.cpp4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp2
-rw-r--r--src/corelib/kernel/qcoreevent.h1
-rw-r--r--src/corelib/tools/qstring.cpp34
-rw-r--r--src/corelib/tools/qvector.h2
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp13
-rw-r--r--src/gui/dialogs/qfiledialog.cpp37
-rw-r--r--src/gui/dialogs/qinputdialog.cpp181
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp31
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp18
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm8
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm25
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm7
-rw-r--r--src/gui/kernel/qwidget_mac.mm17
-rw-r--r--src/gui/kernel/qwidget_x11.cpp4
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp7
-rw-r--r--src/gui/painting/qprintengine_mac.mm66
-rw-r--r--src/gui/painting/qprintengine_mac_p.h1
-rw-r--r--src/gui/painting/qtransform.cpp26
-rw-r--r--src/gui/painting/qwindowsurface.cpp7
-rw-r--r--src/gui/styles/gtksymbols.cpp1
-rw-r--r--src/gui/styles/qgtkstyle.cpp11
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm6
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qtabbar.cpp90
-rw-r--r--src/gui/widgets/qtabbar_p.h33
-rw-r--r--src/network/socket/qabstractsocket.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp19
-rw-r--r--src/opengl/opengl.pro10
-rw-r--r--src/opengl/qgl.cpp4
-rw-r--r--src/opengl/qgl_mac.mm30
-rw-r--r--src/opengl/qgl_p.h1
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget.cpp8
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask.cpp8
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp6
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp19
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p.h3
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p_p.h6
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend.cpp2
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp4
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp5
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp8
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp18
-rw-r--r--src/scripttools/debugging/qscriptedit.cpp10
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.h4
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp2
61 files changed, 2189 insertions, 1122 deletions
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 9decb66..1762ecd 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- f72c14123c593dc9d649d25b7186334bba0026b5
+ e446518445c51c56471e41b1697e2a9e9f3adf36
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index d0382f2..3774ea5 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,51 @@
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ This is a follow up of r40546. Call toImage() once speeds up ImageBuffer::getImageData()
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-02-03 Dirk Schulze <krit@webkit.org>
+
+ Reviewed by Sam Weinig and Oliver Hunt.
+
+ Added getImageData() support for QtWebKit.
+
+ [QT] lacks getImageData / putImageData support in Canvas
+ https://bugs.webkit.org/show_bug.cgi?id=22186
+
+ * platform/graphics/qt/ImageBufferQt.cpp:
+ (WebCore::ImageBuffer::getImageData):
+
+2009-04-14 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25099
+
+ When creating a QNetworkRequest make sure to populate the
+ CacheLoadControlAttribute with the value set by the ResourceRequest::cachePolicy() so that the cache will be used as WebKit expects.
+
+ * WebKit/qt/tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::requestCache):
+
+ * platform/network/qt/ResourceRequestQt.cpp:
+ (WebCore::ResourceRequest::toNetworkRequest):
+
+2009-04-07 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler
+
+ While working on <rdar://problem/5968249>, noticed some glaring problems with LocalStorage.
+
+ * page/DOMWindow.cpp:
+ (WebCore::DOMWindow::localStorage): Return the cached m_localStorage object if it exists to
+ avoid creating multiple representations for the same underlying StorageArea.
+ * page/DOMWindow.h:
+ (WebCore::DOMWindow::optionalLocalStorage): Return m_localStorage, not m_sessionStorage.
+
2009-04-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
index ca4ea5a..25313ac 100644
--- a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -a -L ANSI-C -E -C -c -o -t --key-positions='*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 CSSPropertyNames.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -217,6 +217,9 @@ hash_prop (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct props *
findProp (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
index d0433e0..5ff0858 100644
--- a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
+++ b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -L ANSI-C -E -C -n -o -t --key-positions='*' -NfindValue -Hhash_val -Wwordlist_value -D CSSValueKeywords.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -179,6 +179,9 @@ hash_val (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct css_value *
findValue (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/ColorData.c b/src/3rdparty/webkit/WebCore/generated/ColorData.c
index 18d9926..478566c 100644
--- a/src/3rdparty/webkit/WebCore/generated/ColorData.c
+++ b/src/3rdparty/webkit/WebCore/generated/ColorData.c
@@ -1,5 +1,5 @@
#include <string.h>// bogus
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -CDEot -L ANSI-C --key-positions='*' -N findColor -D -s 2 */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -141,6 +141,9 @@ hash (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct NamedColor *
findColor (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
index ad63b9e..686629c 100644
--- a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp
@@ -1,5 +1,5 @@
#include <string.h>// bogus
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -CEot -L ANSI-C --key-positions='*' -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -331,6 +331,9 @@ hash (register const char *str, register unsigned int len)
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct PubIDInfo *
findDoctypeEntry (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
index 470c4cd..993e106 100644
--- a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
+++ b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c
@@ -1,4 +1,4 @@
-/* ANSI-C code produced by gperf version 3.0.2 */
+/* ANSI-C code produced by gperf version 3.0.3 */
/* Command-line: gperf -a -L ANSI-C -C -G -c -o -t --key-positions='*' -N findEntity -D -s 2 */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -520,6 +520,9 @@ static const short lookup[] =
#ifdef __GNUC__
__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
#endif
const struct Entity *
findEntity (register const char *str, register unsigned int len)
diff --git a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
index 1da1a0b..8462f51 100644
--- a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
+++ b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp
@@ -78,42 +78,42 @@ static yyconst flex_int16_t yy_accept[479] =
{ 0,
0, 0, 0, 0, 0, 0, 69, 67, 2, 2,
67, 67, 67, 67, 67, 67, 67, 67, 67, 56,
- 67, 67, 67, 67, 15, 15, 15, 67, 67, 66,
+ 67, 67, 15, 15, 15, 67, 67, 67, 67, 66,
15, 15, 15, 65, 15, 2, 0, 0, 0, 14,
- 0, 0, 0, 0, 18, 18, 8, 0, 0, 9,
- 0, 0, 0, 15, 15, 15, 57, 0, 55, 0,
- 0, 56, 0, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 16, 54, 54, 51, 54, 0, 0,
- 0, 35, 35, 35, 35, 35, 35, 35, 15, 15,
- 7, 62, 15, 0, 0, 15, 15, 0, 15, 6,
+ 0, 0, 0, 18, 18, 0, 8, 0, 0, 9,
+ 0, 0, 15, 15, 15, 0, 57, 0, 55, 0,
+ 0, 56, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 16, 54, 54, 51, 54, 0, 54, 0, 0,
+ 35, 35, 35, 35, 35, 35, 35, 0, 62, 15,
+ 0, 0, 15, 15, 0, 15, 15, 15, 7, 6,
5, 15, 15, 15, 15, 0, 0, 0, 14, 0,
- 0, 0, 18, 18, 18, 0, 18, 0, 0, 14,
- 0, 0, 4, 16, 15, 0, 0, 54, 54, 54,
- 0, 54, 41, 54, 37, 39, 54, 52, 43, 54,
- 42, 50, 54, 45, 44, 40, 54, 54, 0, 35,
- 35, 35, 35, 0, 35, 35, 35, 35, 35, 35,
- 15, 15, 15, 16, 15, 15, 63, 63, 15, 12,
- 10, 15, 13, 0, 0, 0, 17, 18, 18, 18,
- 17, 0, 0, 15, 0, 1, 54, 54, 54, 54,
- 46, 54, 53, 16, 47, 54, 3, 35, 35, 35,
-
- 35, 35, 35, 35, 35, 35, 35, 15, 15, 58,
- 0, 63, 63, 63, 62, 11, 0, 0, 0, 18,
- 18, 18, 0, 15, 0, 0, 54, 54, 54, 48,
- 49, 35, 35, 35, 35, 35, 35, 35, 35, 20,
- 15, 15, 64, 63, 63, 63, 63, 0, 0, 0,
- 0, 60, 0, 0, 0, 0, 18, 18, 18, 0,
- 15, 54, 54, 38, 35, 35, 35, 35, 35, 35,
- 21, 35, 15, 15, 64, 63, 63, 63, 63, 63,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
- 0, 0, 0, 0, 17, 18, 18, 17, 0, 15,
-
- 54, 54, 35, 35, 35, 35, 35, 19, 35, 15,
- 15, 64, 63, 63, 63, 63, 63, 63, 0, 59,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 18, 18, 0, 15, 54, 54, 35,
- 35, 35, 23, 35, 35, 15, 64, 63, 63, 63,
+ 0, 0, 18, 18, 0, 18, 18, 0, 0, 14,
+ 0, 0, 4, 16, 15, 0, 0, 54, 0, 41,
+ 54, 37, 39, 54, 52, 43, 54, 42, 50, 54,
+ 45, 44, 40, 54, 54, 54, 54, 54, 0, 35,
+ 35, 0, 35, 35, 35, 35, 35, 35, 35, 35,
+ 15, 15, 16, 15, 15, 63, 63, 15, 15, 12,
+ 10, 15, 13, 0, 0, 0, 17, 17, 18, 18,
+ 18, 0, 0, 15, 0, 1, 54, 54, 46, 54,
+ 53, 16, 47, 54, 54, 54, 3, 35, 35, 35,
+
+ 35, 35, 35, 35, 35, 35, 35, 15, 58, 0,
+ 63, 63, 63, 62, 15, 11, 0, 0, 0, 18,
+ 18, 18, 0, 15, 0, 0, 54, 48, 49, 54,
+ 54, 35, 35, 35, 35, 35, 35, 35, 20, 35,
+ 15, 64, 63, 63, 63, 63, 0, 0, 0, 0,
+ 60, 0, 15, 0, 0, 0, 18, 18, 18, 0,
+ 15, 54, 54, 38, 35, 35, 35, 35, 35, 21,
+ 35, 35, 15, 64, 63, 63, 63, 63, 63, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0,
+ 0, 15, 0, 0, 17, 17, 18, 18, 0, 15,
+
+ 54, 54, 35, 35, 35, 35, 19, 35, 35, 15,
+ 64, 63, 63, 63, 63, 63, 63, 0, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 15, 0, 0, 18, 18, 0, 15, 54, 54, 35,
+ 35, 23, 35, 35, 35, 15, 64, 63, 63, 63,
63, 63, 63, 63, 0, 59, 0, 0, 0, 59,
0, 0, 0, 0, 18, 15, 54, 35, 35, 35,
35, 64, 0, 0, 0, 36, 15, 35, 35, 35,
@@ -122,7 +122,7 @@ static yyconst flex_int16_t yy_accept[479] =
35, 35, 35, 35, 35, 35, 35, 35, 0, 0,
0, 0, 0, 0, 35, 35, 35, 35, 25, 35,
- 35, 35, 0, 0, 0, 61, 0, 0, 26, 35,
+ 35, 35, 0, 61, 0, 0, 0, 0, 26, 35,
35, 35, 35, 27, 35, 0, 0, 0, 0, 31,
35, 35, 35, 35, 0, 0, 0, 35, 35, 35,
35, 0, 0, 35, 35, 29, 35, 0, 0, 35,
@@ -138,437 +138,909 @@ static yyconst flex_int32_t yy_ec[256] =
1, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 12, 18, 19, 20, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 12, 22, 23,
- 24, 25, 26, 27, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 12, 28, 12, 29, 30, 12, 31, 32, 33, 34,
-
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 12, 59, 1, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
-
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 12, 54, 12, 55, 56, 12, 57, 58, 59, 60,
+
+ 61, 62, 63, 64, 65, 37, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 12, 84, 1, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
+ 85, 85, 85, 85, 85
} ;
-static yyconst flex_int32_t yy_meta[61] =
+static yyconst flex_int32_t yy_meta[86] =
{ 0,
- 1, 2, 3, 3, 3, 4, 5, 5, 5, 5,
- 5, 5, 5, 6, 7, 5, 5, 8, 5, 5,
- 9, 5, 5, 5, 5, 10, 5, 11, 5, 11,
- 12, 12, 12, 12, 12, 12, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 5, 5, 5, 11
+ 1, 2, 3, 4, 4, 5, 6, 7, 6, 6,
+ 6, 6, 7, 8, 9, 6, 6, 10, 6, 6,
+ 11, 6, 6, 6, 6, 12, 6, 13, 13, 13,
+ 13, 13, 13, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 6, 14, 13, 13, 13, 13,
+ 13, 13, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 6, 6, 6, 14
} ;
-static yyconst flex_int16_t yy_base[517] =
+static yyconst flex_int16_t yy_base[550] =
{ 0,
- 0, 0, 39, 41, 1573, 1566, 1594, 2399, 62, 71,
- 76, 61, 69, 1560, 78, 1559, 89, 1561, 1565, 132,
- 1573, 91, 123, 1555, 80, 104, 97, 1554, 1551, 2399,
- 85, 176, 175, 2399, 177, 193, 204, 1531, 84, 2399,
- 242, 110, 180, 196, 1545, 205, 2399, 113, 277, 2399,
- 1547, 72, 221, 133, 206, 234, 181, 1555, 1548, 1530,
- 1528, 0, 268, 118, 1515, 221, 60, 240, 92, 230,
- 95, 223, 244, 267, 238, 286, 1512, 268, 1521, 279,
- 294, 1510, 278, 190, 290, 232, 292, 293, 308, 335,
- 2399, 2399, 317, 326, 1516, 351, 336, 356, 366, 2399,
-
- 2399, 320, 367, 369, 370, 1478, 393, 327, 345, 420,
- 455, 398, 1495, 490, 1481, 446, 481, 372, 365, 386,
- 525, 560, 2399, 325, 388, 1491, 387, 1477, 595, 1476,
- 516, 399, 1475, 34, 1472, 1461, 378, 1438, 1430, 318,
- 1429, 1426, 323, 1424, 1423, 1422, 231, 387, 1430, 377,
- 1411, 630, 1396, 551, 382, 108, 415, 408, 419, 412,
- 586, 436, 665, 1400, 624, 456, 419, 1382, 457, 490,
- 491, 625, 492, 1362, 526, 656, 672, 681, 1378, 716,
- 707, 527, 723, 561, 1374, 2399, 732, 1346, 767, 437,
- 1322, 410, 1312, 445, 1311, 546, 2399, 469, 758, 1303,
-
- 802, 576, 482, 580, 470, 440, 472, 793, 809, 2399,
- 818, 515, 1288, 1273, 853, 552, 1205, 839, 855, 861,
- 877, 883, 899, 645, 1227, 483, 905, 921, 612, 1183,
- 1168, 609, 927, 943, 626, 517, 628, 508, 629, 1167,
- 949, 965, 971, 550, 1167, 1157, 1123, 1006, 1020, 666,
- 682, 2399, 1047, 1091, 1006, 1038, 1055, 1063, 1071, 1079,
- 632, 1087, 1095, 1105, 539, 1103, 1111, 542, 543, 681,
- 1097, 683, 1119, 1127, 1135, 585, 1091, 1083, 1067, 1039,
- 721, 752, 772, 1170, 717, 1205, 1184, 1217, 1244, 1258,
- 1285, 1320, 984, 1244, 2399, 1276, 1311, 917, 1328, 767,
-
- 1336, 1344, 733, 1352, 1360, 734, 578, 899, 582, 1395,
- 1381, 1397, 623, 853, 822, 794, 793, 760, 807, 2399,
- 875, 788, 1432, 1459, 1494, 818, 769, 1440, 1529, 1564,
- 1438, 702, 1485, 919, 1520, 1555, 849, 963, 1572, 587,
- 1299, 1580, 706, 441, 614, 1615, 1601, 715, 2399, 2399,
- 2399, 2399, 2399, 2399, 1473, 839, 856, 1617, 1652, 804,
- 852, 1638, 1654, 633, 1480, 871, 1508, 1650, 1542, 644,
- 834, 1673, 1679, 1695, 1701, 2399, 1015, 872, 915, 916,
- 877, 959, 704, 616, 586, 2399, 1717, 1723, 1739, 1002,
- 1148, 514, 961, 989, 990, 1016, 1745, 1761, 1767, 1802,
-
- 1137, 1008, 1018, 1017, 985, 1129, 878, 1038, 1790, 1806,
- 1829, 1211, 1827, 1849, 944, 1057, 1152, 787, 584, 615,
- 1196, 918, 1863, 1890, 1279, 2399, 1869, 1867, 516, 1199,
- 1154, 943, 1242, 515, 653, 1904, 1906, 1941, 1968, 480,
- 945, 1200, 1149, 1214, 1927, 1949, 1947, 1239, 1301, 1207,
- 1302, 1974, 1990, 1392, 1267, 411, 1354, 1996, 2012, 1310,
- 376, 1241, 1039, 2018, 2034, 1338, 348, 1377, 2040, 1216,
- 1391, 1421, 1394, 324, 1226, 1376, 263, 2399, 2075, 2080,
- 2091, 2096, 2101, 2110, 2117, 2128, 2137, 2142, 2153, 2165,
- 2167, 2176, 2181, 2190, 2195, 2204, 2213, 2225, 2234, 2243,
-
- 2248, 2260, 2265, 2276, 2281, 2292, 2303, 2314, 2319, 2330,
- 2341, 2346, 2357, 2366, 2377, 2386
+ 0, 0, 64, 66, 54, 56, 1407, 6578, 93, 98,
+ 107, 83, 155, 1376, 77, 1350, 99, 1345, 1328, 207,
+ 1334, 275, 100, 108, 125, 326, 1315, 1313, 1312, 6578,
+ 141, 110, 151, 6578, 105, 197, 295, 89, 107, 6578,
+ 387, 120, 0, 429, 1281, 471, 6578, 117, 532, 6578,
+ 1283, 269, 137, 176, 281, 574, 283, 1289, 1292, 1246,
+ 1257, 0, 1221, 249, 135, 282, 276, 153, 91, 169,
+ 299, 308, 318, 266, 1219, 320, 616, 102, 1246, 348,
+ 1209, 316, 127, 359, 346, 347, 375, 658, 6578, 208,
+ 700, 1241, 400, 409, 1220, 397, 327, 761, 6578, 6578,
+
+ 6578, 411, 419, 414, 424, 248, 368, 355, 356, 822,
+ 883, 0, 1191, 925, 967, 1190, 1028, 381, 421, 464,
+ 1089, 1150, 6578, 214, 456, 1225, 312, 1151, 1192, 1142,
+ 442, 1139, 1134, 452, 1131, 1104, 458, 1082, 1060, 358,
+ 1046, 1028, 1027, 462, 453, 1000, 1253, 469, 1023, 463,
+ 986, 1295, 492, 486, 500, 484, 502, 513, 969, 1356,
+ 425, 1417, 1001, 545, 494, 193, 993, 543, 1459, 544,
+ 554, 558, 555, 508, 398, 1520, 0, 1562, 956, 1623,
+ 1684, 570, 1745, 563, 993, 6578, 948, 1806, 935, 520,
+ 921, 498, 914, 546, 1848, 564, 6578, 585, 913, 1909,
+
+ 568, 576, 586, 606, 631, 640, 1951, 2012, 6578, 0,
+ 203, 924, 907, 694, 2054, 565, 543, 2115, 0, 2157,
+ 2218, 2279, 2340, 669, 912, 505, 2401, 856, 840, 2443,
+ 612, 615, 2504, 608, 557, 639, 682, 668, 839, 2546,
+ 2607, 0, 288, 863, 841, 819, 741, 794, 573, 418,
+ 6578, 2668, 2710, 620, 2771, 0, 2813, 2874, 2935, 2996,
+ 3057, 3131, 3173, 3234, 670, 3295, 718, 719, 729, 763,
+ 684, 3337, 3398, 0, 456, 782, 777, 760, 742, 829,
+ 649, 834, 3459, 572, 3520, 854, 894, 915, 920, 3581,
+ 3642, 3684, 593, 3745, 6578, 697, 3806, 3867, 3928, 3989,
+
+ 4050, 4111, 730, 4172, 731, 683, 672, 759, 4214, 4275,
+ 0, 762, 682, 429, 417, 414, 411, 859, 6578, 650,
+ 838, 957, 4336, 4397, 607, 926, 988, 4458, 4519, 4580,
+ 1002, 672, 1010, 4622, 4664, 1042, 752, 4706, 4767, 756,
+ 4828, 376, 812, 847, 1069, 1033, 0, 387, 6578, 6578,
+ 6578, 6578, 6578, 6578, 1122, 924, 963, 4870, 1162, 1049,
+ 1050, 4912, 4973, 678, 1063, 850, 1074, 5005, 1103, 841,
+ 989, 0, 5062, 5104, 5146, 6578, 1066, 1080, 1081, 1084,
+ 1108, 1137, 877, 328, 273, 6578, 5188, 5230, 5272, 641,
+ 1140, 884, 916, 836, 1105, 1161, 5314, 5356, 1233, 1286,
+
+ 1147, 1138, 919, 1206, 1165, 1186, 1141, 1207, 1291, 1263,
+ 1316, 1345, 1327, 5398, 1086, 1029, 1225, 1133, 258, 1247,
+ 1248, 1310, 1388, 6578, 1427, 5440, 1449, 5501, 242, 1311,
+ 1341, 1324, 1326, 173, 1317, 1454, 5562, 1480, 5604, 170,
+ 1061, 1328, 1355, 1372, 1552, 5646, 5688, 1351, 1374, 1389,
+ 1409, 5730, 5772, 1419, 1456, 154, 1453, 5814, 5856, 1457,
+ 112, 897, 793, 5898, 1557, 1418, 109, 1348, 1582, 1550,
+ 1477, 1481, 1485, 90, 1564, 1458, 39, 6578, 5959, 5964,
+ 5977, 5982, 5987, 5994, 6004, 6017, 296, 6022, 6032, 6045,
+ 6059, 651, 6064, 6074, 6079, 6089, 6099, 6103, 571, 6112,
+
+ 6125, 6138, 6152, 6166, 6176, 6186, 6191, 6203, 657, 6217,
+ 758, 6222, 6234, 6247, 801, 6261, 859, 6266, 6278, 6291,
+ 6304, 6317, 6330, 1086, 6335, 6348, 1120, 6353, 6365, 6378,
+ 6391, 6404, 6417, 6430, 6435, 6448, 1216, 6453, 6465, 6478,
+ 6491, 6504, 6517, 1219, 1220, 6530, 6543, 6553, 6563
} ;
-static yyconst flex_int16_t yy_def[517] =
+static yyconst flex_int16_t yy_def[550] =
{ 0,
478, 1, 1, 1, 1, 1, 478, 478, 478, 478,
478, 479, 480, 478, 481, 478, 482, 478, 478, 478,
- 478, 483, 484, 478, 485, 485, 485, 478, 478, 478,
- 485, 485, 485, 478, 485, 478, 478, 478, 479, 478,
- 486, 480, 478, 487, 488, 488, 478, 481, 489, 478,
- 478, 478, 484, 485, 485, 485, 20, 490, 478, 491,
- 478, 20, 492, 493, 493, 493, 493, 493, 493, 493,
- 493, 493, 493, 493, 493, 493, 493, 493, 478, 483,
- 494, 495, 495, 495, 495, 495, 495, 495, 485, 485,
- 478, 478, 485, 496, 478, 485, 485, 478, 485, 478,
-
- 478, 485, 485, 485, 485, 478, 479, 479, 479, 479,
- 486, 478, 488, 46, 488, 497, 46, 481, 481, 481,
- 481, 489, 478, 478, 485, 490, 498, 493, 493, 493,
- 499, 493, 493, 493, 493, 493, 493, 493, 493, 493,
+ 478, 483, 484, 484, 484, 485, 478, 478, 478, 478,
+ 484, 484, 484, 478, 484, 478, 478, 478, 479, 478,
+ 486, 480, 487, 488, 488, 489, 478, 481, 490, 478,
+ 478, 478, 484, 484, 484, 485, 20, 491, 478, 492,
+ 478, 20, 493, 493, 493, 493, 493, 493, 493, 493,
+ 493, 493, 493, 493, 493, 493, 494, 493, 478, 483,
+ 495, 495, 495, 495, 495, 495, 495, 496, 478, 484,
+ 497, 478, 484, 484, 498, 484, 484, 484, 478, 478,
+
+ 478, 484, 484, 484, 484, 478, 479, 479, 479, 479,
+ 486, 499, 488, 488, 500, 488, 114, 501, 501, 501,
+ 501, 502, 478, 478, 484, 503, 504, 493, 505, 493,
+ 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
493, 493, 493, 493, 493, 493, 493, 493, 478, 495,
- 495, 495, 495, 500, 495, 495, 495, 495, 495, 495,
- 90, 485, 90, 478, 485, 485, 501, 478, 485, 485,
- 485, 485, 485, 478, 479, 110, 478, 114, 488, 114,
- 46, 481, 121, 485, 502, 478, 129, 493, 129, 493,
- 493, 493, 493, 493, 493, 493, 478, 495, 152, 495,
-
- 152, 495, 495, 495, 495, 495, 495, 90, 163, 478,
- 478, 503, 478, 478, 504, 485, 478, 110, 478, 114,
- 180, 46, 121, 485, 502, 498, 129, 189, 493, 493,
- 493, 495, 152, 201, 495, 495, 495, 495, 495, 495,
- 90, 163, 478, 505, 478, 478, 478, 504, 504, 506,
- 507, 478, 508, 478, 110, 478, 114, 180, 46, 121,
- 485, 129, 189, 493, 495, 152, 201, 495, 495, 495,
- 495, 495, 90, 163, 478, 509, 478, 478, 478, 478,
- 478, 506, 478, 510, 507, 511, 504, 504, 504, 504,
- 504, 508, 478, 110, 478, 114, 180, 488, 121, 485,
-
- 129, 189, 495, 152, 201, 495, 495, 495, 495, 485,
- 163, 478, 512, 478, 478, 478, 478, 478, 478, 478,
- 506, 506, 506, 506, 510, 507, 507, 507, 507, 511,
- 291, 478, 110, 488, 180, 121, 485, 493, 189, 495,
- 495, 201, 495, 495, 495, 485, 478, 478, 478, 478,
- 478, 478, 478, 478, 506, 506, 506, 324, 507, 507,
- 507, 329, 291, 478, 488, 485, 493, 495, 495, 495,
- 495, 478, 324, 329, 291, 478, 485, 495, 495, 495,
- 495, 495, 495, 495, 495, 478, 324, 329, 291, 485,
- 495, 495, 495, 495, 495, 495, 324, 329, 291, 513,
-
- 495, 495, 495, 495, 495, 495, 495, 495, 324, 329,
- 513, 411, 514, 515, 495, 495, 495, 495, 495, 495,
- 495, 495, 515, 515, 478, 478, 515, 516, 495, 495,
- 495, 495, 495, 495, 495, 515, 424, 515, 424, 495,
- 495, 495, 495, 495, 424, 515, 439, 495, 495, 495,
- 495, 424, 439, 495, 495, 495, 495, 424, 439, 495,
- 495, 495, 495, 424, 439, 495, 495, 495, 439, 495,
+ 495, 506, 495, 495, 495, 495, 495, 495, 495, 495,
+ 484, 98, 478, 484, 484, 507, 478, 484, 98, 484,
+ 484, 484, 484, 478, 508, 508, 509, 114, 488, 114,
+ 114, 501, 501, 484, 510, 478, 493, 147, 493, 493,
+ 493, 493, 493, 493, 147, 493, 478, 495, 495, 160,
+
+ 495, 495, 495, 495, 495, 495, 160, 98, 478, 511,
+ 512, 478, 478, 513, 98, 484, 478, 514, 515, 114,
+ 114, 114, 501, 484, 510, 516, 147, 493, 493, 147,
+ 493, 495, 160, 495, 495, 495, 495, 495, 495, 160,
+ 98, 517, 518, 478, 478, 478, 519, 519, 520, 521,
+ 478, 522, 98, 478, 523, 524, 525, 525, 258, 526,
+ 98, 147, 147, 147, 495, 160, 495, 495, 495, 495,
+ 495, 160, 98, 527, 528, 478, 478, 478, 478, 478,
+ 520, 478, 529, 530, 531, 532, 532, 532, 532, 532,
+ 533, 98, 478, 534, 478, 535, 535, 297, 536, 98,
+
+ 147, 301, 495, 160, 495, 495, 495, 495, 160, 98,
+ 537, 538, 478, 478, 478, 478, 478, 478, 478, 539,
+ 539, 539, 539, 540, 541, 541, 541, 541, 542, 543,
+ 300, 478, 534, 297, 298, 536, 300, 301, 301, 495,
+ 160, 495, 495, 495, 495, 300, 544, 478, 478, 478,
+ 478, 478, 478, 478, 539, 539, 539, 323, 541, 541,
+ 541, 328, 543, 478, 335, 300, 339, 495, 495, 495,
+ 495, 545, 323, 328, 363, 478, 300, 495, 495, 495,
+ 495, 495, 495, 495, 495, 478, 323, 328, 363, 300,
+ 495, 495, 495, 495, 495, 495, 323, 328, 543, 546,
+
+ 495, 495, 495, 495, 495, 495, 495, 495, 539, 541,
+ 546, 546, 547, 548, 495, 495, 495, 495, 495, 495,
+ 495, 495, 478, 478, 547, 549, 547, 547, 495, 495,
+ 495, 495, 495, 495, 495, 547, 428, 547, 428, 495,
+ 495, 495, 495, 495, 547, 437, 428, 495, 495, 495,
+ 495, 437, 428, 495, 495, 495, 495, 437, 428, 495,
+ 495, 495, 495, 437, 547, 495, 495, 495, 547, 495,
495, 495, 495, 495, 495, 495, 495, 0, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478
} ;
-static yyconst flex_int16_t yy_nxt[2460] =
+static yyconst flex_int16_t yy_nxt[6664] =
{ 0,
8, 9, 10, 9, 9, 9, 11, 12, 13, 14,
8, 8, 15, 8, 8, 16, 8, 17, 18, 19,
- 20, 8, 21, 8, 8, 8, 22, 23, 24, 25,
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 26, 25, 25, 25, 25, 25, 25,
- 27, 25, 25, 25, 25, 25, 8, 28, 29, 25,
- 30, 131, 30, 36, 36, 36, 36, 36, 40, 31,
- 191, 31, 36, 36, 36, 36, 36, 37, 37, 37,
- 37, 37, 32, 33, 32, 33, 42, 131, 41, 43,
- 40, 40, 52, 92, 134, 34, 44, 34, 92, 46,
-
- 46, 46, 46, 46, 46, 49, 51, 94, 80, 52,
- 92, 41, 94, 98, 38, 124, 53, 92, 81, 131,
- 95, 96, 131, 83, 94, 40, 84, 478, 102, 85,
- 478, 94, 55, 86, 87, 154, 88, 44, 139, 137,
- 49, 56, 59, 90, 99, 131, 92, 132, 97, 60,
- 61, 203, 62, 90, 90, 90, 90, 90, 90, 63,
- 94, 64, 65, 65, 66, 67, 68, 65, 69, 70,
- 71, 65, 72, 65, 73, 74, 65, 75, 65, 76,
- 77, 78, 65, 65, 65, 65, 65, 65, 92, 92,
- 92, 65, 95, 96, 36, 36, 36, 36, 36, 478,
-
- 112, 57, 94, 94, 94, 37, 37, 37, 37, 37,
- 112, 112, 112, 112, 112, 112, 114, 154, 104, 92,
- 103, 105, 95, 96, 65, 117, 114, 114, 114, 114,
- 114, 114, 116, 94, 156, 117, 117, 117, 117, 117,
- 117, 90, 38, 39, 39, 39, 107, 92, 131, 109,
- 131, 90, 90, 90, 90, 90, 90, 131, 131, 154,
- 140, 94, 110, 133, 195, 131, 158, 131, 125, 111,
- 144, 131, 110, 110, 110, 110, 110, 110, 48, 48,
- 48, 118, 135, 95, 143, 138, 141, 145, 129, 120,
- 154, 146, 142, 136, 131, 131, 478, 121, 129, 129,
-
- 129, 129, 129, 129, 122, 154, 81, 121, 121, 121,
- 121, 121, 121, 131, 152, 155, 147, 154, 148, 154,
- 154, 92, 159, 160, 152, 152, 152, 152, 152, 152,
- 92, 150, 157, 92, 40, 94, 89, 89, 89, 89,
- 89, 95, 95, 194, 94, 131, 163, 94, 92, 92,
- 131, 154, 40, 170, 41, 161, 163, 163, 163, 163,
- 163, 163, 94, 94, 92, 161, 161, 161, 161, 161,
- 161, 165, 41, 193, 48, 154, 167, 40, 94, 92,
- 92, 168, 92, 92, 40, 166, 167, 167, 167, 167,
- 167, 167, 49, 94, 94, 39, 94, 94, 40, 49,
-
- 40, 92, 127, 154, 154, 131, 186, 169, 192, 154,
- 172, 198, 202, 49, 131, 94, 171, 173, 177, 184,
- 41, 108, 175, 175, 175, 108, 131, 40, 177, 177,
- 177, 177, 177, 177, 196, 154, 211, 131, 154, 154,
- 176, 205, 154, 230, 213, 190, 154, 41, 207, 92,
- 176, 176, 176, 176, 176, 176, 39, 39, 39, 107,
- 204, 206, 109, 94, 131, 194, 180, 154, 154, 210,
- 215, 229, 131, 370, 239, 110, 180, 180, 180, 180,
- 180, 180, 111, 94, 94, 110, 110, 110, 110, 110,
- 110, 113, 113, 113, 113, 113, 154, 154, 226, 154,
-
- 232, 181, 186, 92, 210, 92, 240, 154, 238, 154,
- 178, 181, 181, 181, 181, 181, 181, 94, 94, 94,
- 178, 178, 178, 178, 178, 178, 119, 182, 182, 182,
- 119, 236, 211, 40, 269, 154, 189, 40, 271, 40,
- 245, 154, 154, 154, 154, 183, 189, 189, 189, 189,
- 189, 189, 49, 41, 49, 183, 183, 183, 183, 183,
- 183, 48, 48, 48, 118, 92, 154, 211, 403, 154,
- 154, 201, 120, 131, 92, 277, 306, 303, 307, 94,
- 121, 201, 201, 201, 201, 201, 201, 122, 94, 231,
- 121, 121, 121, 121, 121, 121, 128, 128, 128, 128,
-
- 128, 224, 211, 154, 368, 154, 208, 154, 344, 154,
- 314, 154, 345, 154, 154, 187, 208, 208, 208, 208,
- 208, 208, 131, 235, 237, 187, 187, 187, 187, 187,
- 187, 151, 151, 151, 151, 151, 154, 92, 92, 131,
- 211, 154, 154, 154, 165, 92, 371, 433, 349, 265,
- 199, 94, 94, 154, 264, 154, 154, 154, 92, 94,
- 199, 199, 199, 199, 199, 199, 162, 162, 162, 162,
- 162, 154, 94, 283, 268, 270, 218, 272, 384, 216,
- 154, 300, 376, 261, 444, 209, 218, 218, 218, 218,
- 218, 218, 219, 284, 283, 209, 209, 209, 209, 209,
-
- 209, 220, 219, 219, 219, 219, 219, 219, 154, 286,
- 154, 220, 220, 220, 220, 220, 220, 179, 179, 179,
- 179, 179, 281, 281, 281, 281, 281, 222, 309, 283,
- 308, 154, 211, 154, 396, 252, 221, 222, 222, 222,
- 222, 222, 222, 223, 286, 364, 221, 221, 221, 221,
- 221, 221, 227, 223, 223, 223, 223, 223, 223, 283,
- 154, 154, 227, 227, 227, 227, 227, 227, 188, 188,
- 188, 188, 188, 319, 319, 319, 319, 319, 233, 284,
- 92, 283, 340, 343, 337, 354, 320, 228, 233, 233,
- 233, 233, 233, 233, 94, 283, 286, 228, 228, 228,
-
- 228, 228, 228, 200, 200, 200, 200, 200, 319, 319,
- 319, 319, 319, 241, 154, 284, 283, 432, 353, 352,
- 285, 320, 234, 241, 241, 241, 241, 241, 241, 242,
- 283, 286, 234, 234, 234, 234, 234, 234, 243, 242,
- 242, 242, 242, 242, 242, 286, 283, 351, 243, 243,
- 243, 243, 243, 243, 248, 248, 248, 248, 248, 255,
- 250, 154, 92, 283, 283, 251, 284, 252, 385, 255,
- 255, 255, 255, 255, 255, 256, 94, 282, 350, 286,
- 253, 257, 283, 284, 92, 256, 256, 256, 256, 256,
- 256, 257, 257, 257, 257, 257, 257, 258, 94, 154,
-
- 366, 377, 284, 259, 154, 154, 391, 258, 258, 258,
- 258, 258, 258, 259, 259, 259, 259, 259, 259, 260,
- 113, 113, 113, 113, 113, 262, 154, 394, 421, 260,
- 260, 260, 260, 260, 260, 262, 262, 262, 262, 262,
- 262, 263, 154, 154, 116, 154, 116, 266, 435, 392,
- 393, 263, 263, 263, 263, 263, 263, 266, 266, 266,
- 266, 266, 266, 267, 128, 128, 128, 128, 128, 273,
- 154, 154, 154, 267, 267, 267, 267, 267, 267, 273,
- 273, 273, 273, 273, 273, 274, 154, 448, 154, 442,
- 131, 275, 429, 395, 404, 274, 274, 274, 274, 274,
-
- 274, 275, 275, 275, 275, 275, 275, 248, 248, 248,
- 248, 248, 154, 250, 332, 400, 154, 154, 251, 419,
- 252, 281, 281, 281, 281, 281, 294, 478, 92, 94,
- 405, 406, 478, 253, 252, 154, 294, 294, 294, 294,
- 294, 294, 94, 154, 154, 154, 416, 253, 281, 281,
- 281, 281, 287, 417, 289, 418, 468, 407, 295, 289,
- 289, 290, 390, 408, 318, 154, 154, 291, 295, 295,
- 295, 295, 295, 295, 292, 296, 422, 291, 291, 291,
- 291, 291, 291, 297, 154, 296, 296, 296, 296, 296,
- 296, 298, 317, 297, 297, 297, 297, 297, 297, 299,
-
- 430, 298, 298, 298, 298, 298, 298, 301, 316, 299,
- 299, 299, 299, 299, 299, 302, 315, 301, 301, 301,
- 301, 301, 301, 304, 154, 302, 302, 302, 302, 302,
- 302, 305, 131, 304, 304, 304, 304, 304, 304, 310,
- 293, 305, 305, 305, 305, 305, 305, 311, 280, 310,
- 310, 310, 310, 310, 310, 312, 154, 311, 311, 311,
- 311, 311, 311, 420, 154, 312, 312, 312, 312, 312,
- 312, 282, 282, 282, 321, 154, 154, 323, 415, 154,
- 401, 154, 279, 402, 441, 281, 281, 281, 281, 281,
- 324, 478, 278, 450, 154, 131, 478, 325, 252, 431,
-
- 324, 324, 324, 324, 324, 324, 285, 285, 285, 326,
- 131, 253, 478, 478, 478, 478, 478, 328, 281, 281,
- 281, 281, 281, 154, 478, 329, 154, 154, 478, 478,
- 434, 252, 330, 440, 154, 329, 329, 329, 329, 329,
- 329, 154, 226, 154, 253, 281, 281, 281, 281, 281,
- 449, 478, 254, 154, 456, 451, 478, 472, 252, 281,
- 281, 281, 281, 281, 333, 478, 154, 476, 154, 154,
- 478, 253, 252, 454, 333, 333, 333, 333, 333, 333,
- 425, 425, 425, 425, 425, 253, 287, 287, 287, 287,
- 287, 443, 478, 426, 154, 467, 334, 478, 247, 252,
-
- 151, 151, 151, 151, 151, 331, 334, 334, 334, 334,
- 334, 334, 253, 246, 462, 331, 331, 331, 331, 331,
- 331, 281, 281, 281, 281, 287, 154, 289, 154, 154,
- 154, 335, 289, 289, 290, 455, 457, 154, 131, 131,
- 291, 335, 335, 335, 335, 335, 335, 292, 336, 131,
- 291, 291, 291, 291, 291, 291, 338, 466, 336, 336,
- 336, 336, 336, 336, 339, 154, 338, 338, 338, 338,
- 338, 338, 341, 131, 339, 339, 339, 339, 339, 339,
- 342, 154, 341, 341, 341, 341, 341, 341, 470, 226,
- 342, 342, 342, 342, 342, 342, 89, 89, 89, 89,
-
- 89, 346, 463, 154, 154, 116, 217, 214, 92, 460,
- 471, 346, 346, 346, 346, 346, 346, 347, 154, 154,
- 164, 154, 94, 154, 477, 473, 475, 347, 347, 347,
- 347, 347, 347, 355, 319, 319, 319, 355, 154, 283,
- 461, 359, 319, 319, 319, 359, 356, 197, 154, 131,
- 131, 131, 283, 131, 360, 474, 131, 131, 363, 284,
- 322, 357, 357, 357, 322, 131, 283, 286, 363, 363,
- 363, 363, 363, 363, 355, 319, 319, 319, 355, 358,
- 283, 179, 179, 179, 179, 179, 284, 356, 131, 358,
- 358, 358, 358, 358, 358, 282, 282, 282, 321, 131,
-
- 284, 323, 131, 131, 131, 39, 127, 116, 116, 188,
- 188, 188, 188, 188, 324, 39, 39, 39, 39, 39,
- 39, 325, 116, 174, 324, 324, 324, 324, 324, 324,
- 327, 361, 361, 361, 327, 131, 164, 154, 149, 131,
- 365, 283, 131, 200, 200, 200, 200, 200, 57, 362,
- 365, 365, 365, 365, 365, 365, 286, 63, 59, 362,
- 362, 362, 362, 362, 362, 285, 285, 285, 326, 154,
- 127, 123, 116, 106, 101, 48, 328, 100, 91, 79,
- 58, 57, 50, 47, 329, 48, 48, 48, 48, 48,
- 48, 330, 367, 478, 329, 329, 329, 329, 329, 329,
-
- 369, 35, 367, 367, 367, 367, 367, 367, 35, 478,
- 369, 369, 369, 369, 369, 369, 162, 162, 162, 162,
- 162, 372, 478, 478, 478, 478, 478, 478, 92, 478,
- 478, 372, 372, 372, 372, 372, 372, 373, 478, 478,
- 478, 478, 94, 478, 478, 478, 478, 373, 373, 373,
- 373, 373, 373, 359, 319, 319, 319, 359, 374, 478,
- 478, 478, 478, 478, 283, 478, 360, 478, 374, 374,
- 374, 374, 374, 374, 375, 478, 478, 154, 478, 286,
- 478, 478, 478, 378, 375, 375, 375, 375, 375, 375,
- 379, 478, 380, 386, 478, 478, 478, 381, 382, 387,
-
- 478, 383, 478, 386, 386, 386, 386, 386, 386, 387,
- 387, 387, 387, 387, 387, 388, 478, 478, 478, 478,
- 478, 389, 478, 478, 478, 388, 388, 388, 388, 388,
- 388, 389, 389, 389, 389, 389, 389, 397, 478, 478,
- 478, 478, 478, 398, 478, 478, 478, 397, 397, 397,
- 397, 397, 397, 398, 398, 398, 398, 398, 398, 399,
- 478, 478, 478, 478, 478, 409, 478, 478, 478, 399,
- 399, 399, 399, 399, 399, 409, 409, 409, 409, 409,
- 409, 410, 478, 478, 478, 478, 478, 249, 478, 478,
- 478, 410, 410, 410, 410, 410, 410, 249, 249, 249,
-
- 249, 249, 249, 411, 411, 411, 411, 411, 478, 478,
- 282, 478, 478, 478, 478, 478, 478, 478, 478, 412,
- 282, 282, 282, 282, 282, 282, 285, 478, 478, 413,
- 411, 411, 411, 411, 411, 478, 285, 285, 285, 285,
- 285, 285, 478, 478, 478, 478, 412, 424, 478, 478,
- 425, 425, 425, 425, 425, 478, 413, 424, 424, 424,
- 424, 424, 424, 426, 425, 425, 425, 425, 425, 478,
- 425, 425, 425, 425, 425, 478, 428, 426, 478, 478,
- 478, 478, 478, 426, 478, 478, 478, 439, 478, 478,
- 428, 436, 436, 436, 436, 436, 428, 439, 439, 439,
-
- 439, 439, 439, 478, 426, 425, 425, 425, 425, 425,
- 437, 478, 478, 478, 478, 478, 478, 428, 426, 478,
- 437, 437, 437, 437, 437, 437, 445, 478, 478, 478,
- 478, 428, 478, 478, 478, 478, 445, 445, 445, 445,
- 445, 445, 425, 425, 425, 425, 425, 452, 478, 478,
- 425, 425, 425, 425, 425, 426, 478, 452, 452, 452,
- 452, 452, 452, 426, 478, 478, 478, 453, 428, 446,
- 446, 446, 446, 446, 478, 478, 428, 453, 453, 453,
- 453, 453, 453, 478, 478, 478, 478, 478, 447, 478,
- 478, 478, 478, 478, 458, 478, 478, 478, 447, 447,
-
- 447, 447, 447, 447, 458, 458, 458, 458, 458, 458,
- 459, 478, 478, 478, 478, 478, 464, 478, 478, 478,
- 459, 459, 459, 459, 459, 459, 464, 464, 464, 464,
- 464, 464, 465, 478, 478, 478, 478, 478, 427, 478,
- 478, 478, 465, 465, 465, 465, 465, 465, 427, 427,
- 427, 427, 427, 427, 469, 478, 478, 478, 478, 478,
- 427, 478, 478, 478, 469, 469, 469, 469, 469, 469,
- 427, 427, 427, 427, 427, 427, 39, 478, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 45, 45, 478,
- 45, 45, 48, 478, 48, 48, 48, 48, 48, 48,
-
- 48, 48, 48, 54, 54, 478, 54, 54, 82, 478,
- 478, 82, 82, 89, 89, 89, 89, 89, 89, 89,
- 89, 89, 93, 478, 93, 93, 478, 93, 93, 108,
+ 20, 8, 21, 8, 8, 8, 22, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
+ 24, 23, 23, 23, 23, 23, 23, 25, 23, 23,
+ 23, 23, 23, 26, 27, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, 23, 23, 24, 23,
+ 23, 23, 23, 23, 23, 25, 23, 23, 23, 23,
+ 23, 8, 28, 29, 23, 30, 35, 30, 35, 40,
+ 40, 31, 152, 31, 36, 36, 36, 36, 36, 36,
+
+ 36, 36, 36, 36, 32, 33, 32, 33, 37, 37,
+ 37, 37, 37, 89, 40, 35, 51, 35, 89, 52,
+ 31, 89, 31, 89, 92, 93, 92, 93, 106, 40,
+ 49, 136, 32, 33, 32, 33, 41, 478, 89, 54,
+ 478, 95, 38, 152, 129, 34, 105, 34, 55, 94,
+ 89, 103, 56, 91, 89, 129, 106, 148, 91, 136,
+ 41, 91, 152, 91, 89, 152, 131, 54, 154, 96,
+ 49, 38, 42, 46, 105, 43, 55, 94, 91, 103,
+ 152, 102, 44, 44, 44, 44, 44, 44, 129, 89,
+ 91, 104, 92, 93, 91, 131, 154, 96, 36, 36,
+
+ 36, 36, 36, 137, 91, 135, 129, 152, 46, 102,
+ 210, 44, 44, 44, 44, 44, 44, 59, 212, 104,
+ 210, 89, 129, 152, 60, 61, 152, 62, 244, 91,
+ 92, 92, 137, 135, 63, 63, 64, 65, 66, 63,
+ 67, 68, 69, 63, 70, 63, 71, 72, 63, 73,
+ 63, 74, 75, 76, 63, 63, 63, 63, 63, 63,
+ 77, 91, 78, 63, 63, 64, 65, 66, 63, 67,
+ 68, 69, 70, 63, 71, 72, 63, 73, 63, 74,
+ 75, 76, 63, 63, 63, 63, 63, 63, 130, 52,
+ 174, 63, 80, 144, 89, 152, 37, 37, 37, 37,
+
+ 37, 478, 129, 57, 82, 210, 112, 83, 112, 124,
+ 84, 152, 125, 276, 85, 86, 130, 87, 174, 129,
+ 134, 132, 144, 63, 92, 140, 152, 127, 88, 129,
+ 38, 186, 133, 82, 91, 129, 83, 124, 138, 84,
+ 89, 125, 85, 86, 139, 87, 98, 141, 134, 132,
+ 153, 63, 129, 98, 98, 98, 98, 98, 98, 38,
+ 133, 129, 40, 40, 142, 478, 138, 145, 143, 152,
+ 39, 129, 139, 129, 157, 40, 141, 156, 192, 153,
+ 91, 152, 98, 98, 98, 98, 98, 98, 39, 39,
+ 39, 107, 142, 40, 109, 145, 143, 150, 155, 152,
+
+ 152, 88, 158, 157, 210, 40, 156, 110, 41, 41,
+ 89, 129, 152, 89, 110, 110, 110, 110, 110, 110,
+ 164, 41, 89, 478, 89, 150, 155, 89, 152, 152,
+ 282, 158, 89, 40, 49, 168, 354, 89, 89, 353,
+ 111, 170, 352, 110, 110, 110, 110, 110, 110, 114,
+ 91, 41, 172, 91, 351, 165, 114, 114, 114, 114,
+ 114, 114, 91, 168, 91, 171, 478, 91, 173, 89,
+ 170, 285, 91, 210, 49, 189, 40, 91, 91, 190,
+ 172, 313, 115, 165, 184, 114, 114, 114, 114, 114,
+ 114, 117, 193, 171, 198, 129, 173, 194, 117, 117,
+
+ 117, 117, 117, 117, 189, 129, 129, 209, 190, 91,
+ 191, 129, 196, 184, 204, 129, 152, 49, 192, 201,
+ 226, 193, 129, 198, 186, 194, 202, 117, 117, 117,
+ 117, 117, 117, 48, 48, 48, 118, 152, 191, 152,
+ 196, 205, 203, 204, 120, 152, 206, 91, 201, 217,
+ 228, 129, 121, 152, 202, 152, 214, 89, 89, 121,
+ 121, 121, 121, 121, 121, 164, 152, 209, 89, 205,
+ 203, 89, 478, 129, 268, 206, 89, 217, 89, 228,
+ 282, 177, 40, 177, 282, 122, 229, 254, 121, 121,
+ 121, 121, 121, 121, 98, 231, 91, 91, 91, 129,
+
+ 224, 98, 98, 98, 98, 98, 98, 91, 91, 216,
+ 152, 91, 234, 232, 229, 254, 91, 129, 91, 282,
+ 332, 152, 235, 49, 231, 285, 283, 236, 224, 152,
+ 98, 98, 98, 98, 98, 98, 147, 216, 152, 152,
+ 234, 237, 232, 147, 147, 147, 147, 147, 147, 332,
+ 235, 264, 265, 267, 400, 236, 282, 282, 90, 152,
+ 285, 152, 238, 63, 63, 129, 293, 219, 152, 219,
+ 237, 239, 147, 147, 147, 147, 147, 147, 160, 264,
+ 265, 267, 89, 269, 152, 160, 160, 160, 160, 160,
+ 160, 238, 152, 152, 293, 247, 247, 247, 247, 247,
+
+ 239, 249, 283, 283, 261, 303, 250, 350, 251, 270,
+ 343, 269, 364, 271, 160, 160, 160, 160, 160, 160,
+ 162, 152, 91, 152, 376, 152, 308, 162, 162, 162,
+ 162, 162, 162, 261, 303, 152, 152, 152, 270, 343,
+ 364, 271, 247, 247, 247, 247, 247, 252, 249, 305,
+ 115, 306, 376, 250, 308, 251, 162, 162, 162, 162,
+ 162, 162, 97, 97, 97, 97, 97, 317, 242, 90,
+ 242, 152, 152, 368, 89, 307, 340, 342, 305, 210,
+ 306, 169, 152, 152, 152, 316, 344, 349, 169, 169,
+ 169, 169, 169, 169, 252, 280, 280, 280, 280, 280,
+
+ 366, 478, 315, 307, 340, 342, 478, 314, 251, 152,
+ 468, 256, 152, 256, 91, 344, 152, 169, 169, 169,
+ 169, 169, 169, 108, 175, 175, 175, 108, 366, 40,
+ 280, 280, 280, 280, 280, 318, 318, 318, 318, 318,
+ 478, 370, 176, 251, 279, 282, 152, 252, 319, 176,
+ 176, 176, 176, 176, 176, 280, 280, 280, 280, 280,
+ 318, 318, 318, 318, 318, 152, 278, 90, 251, 274,
+ 370, 274, 384, 319, 405, 41, 371, 377, 176, 176,
+ 176, 176, 176, 176, 39, 39, 39, 107, 277, 152,
+ 109, 283, 152, 129, 152, 280, 280, 280, 280, 280,
+
+ 152, 384, 405, 110, 396, 371, 377, 252, 251, 129,
+ 110, 110, 110, 110, 110, 110, 280, 280, 280, 280,
+ 280, 280, 280, 280, 280, 280, 478, 226, 478, 251,
+ 152, 282, 246, 396, 251, 403, 111, 152, 282, 110,
+ 110, 110, 110, 110, 110, 178, 404, 252, 467, 245,
+ 152, 417, 178, 178, 178, 178, 178, 178, 355, 318,
+ 318, 318, 355, 403, 282, 478, 152, 129, 252, 152,
+ 282, 356, 152, 252, 129, 404, 467, 283, 115, 285,
+ 417, 178, 178, 178, 178, 178, 178, 180, 129, 359,
+ 318, 318, 318, 359, 180, 180, 180, 180, 180, 180,
+
+ 282, 129, 360, 97, 97, 97, 97, 97, 226, 115,
+ 283, 108, 175, 175, 175, 108, 283, 40, 213, 90,
+ 385, 163, 152, 180, 180, 180, 180, 180, 180, 116,
+ 116, 116, 116, 116, 161, 161, 161, 161, 161, 152,
+ 197, 285, 152, 119, 182, 182, 182, 119, 181, 385,
+ 90, 478, 478, 129, 40, 181, 181, 181, 181, 181,
+ 181, 282, 282, 41, 179, 179, 179, 179, 179, 430,
+ 159, 159, 159, 159, 159, 187, 187, 187, 187, 187,
+ 129, 129, 152, 90, 181, 181, 181, 181, 181, 181,
+ 119, 182, 182, 182, 119, 49, 295, 430, 295, 129,
+
+ 448, 40, 285, 285, 199, 199, 199, 199, 199, 183,
+ 390, 391, 392, 129, 152, 393, 183, 183, 183, 183,
+ 183, 183, 152, 355, 318, 318, 318, 355, 448, 282,
+ 311, 429, 311, 152, 152, 129, 356, 152, 390, 152,
+ 391, 392, 49, 406, 393, 183, 183, 183, 183, 183,
+ 183, 48, 48, 48, 118, 394, 152, 129, 152, 429,
+ 432, 152, 120, 359, 318, 318, 318, 359, 395, 401,
+ 121, 406, 402, 416, 282, 283, 360, 121, 121, 121,
+ 121, 121, 121, 394, 129, 415, 152, 129, 421, 432,
+ 152, 152, 129, 152, 152, 129, 419, 395, 401, 407,
+
+ 152, 402, 416, 122, 129, 408, 121, 121, 121, 121,
+ 121, 121, 188, 415, 152, 285, 421, 420, 152, 188,
+ 188, 188, 188, 188, 188, 419, 347, 407, 347, 372,
+ 386, 372, 386, 408, 286, 286, 286, 286, 286, 152,
+ 127, 418, 422, 115, 115, 167, 420, 251, 188, 188,
+ 188, 188, 188, 188, 146, 146, 146, 146, 146, 152,
+ 152, 163, 152, 149, 326, 361, 361, 361, 326, 431,
+ 418, 422, 129, 195, 129, 282, 433, 57, 152, 434,
+ 195, 195, 195, 195, 195, 195, 252, 411, 411, 411,
+ 411, 411, 321, 357, 357, 357, 321, 431, 282, 77,
+
+ 152, 152, 59, 412, 127, 433, 129, 123, 434, 195,
+ 195, 195, 195, 195, 195, 200, 285, 411, 411, 411,
+ 411, 411, 200, 200, 200, 200, 200, 200, 423, 423,
+ 423, 423, 423, 412, 115, 101, 100, 435, 99, 414,
+ 79, 424, 440, 58, 283, 444, 478, 478, 478, 478,
+ 478, 200, 200, 200, 200, 200, 200, 159, 159, 159,
+ 159, 159, 478, 152, 152, 57, 435, 442, 441, 414,
+ 152, 440, 443, 50, 444, 449, 207, 152, 471, 152,
+ 426, 152, 454, 207, 207, 207, 207, 207, 207, 423,
+ 423, 423, 423, 423, 152, 442, 450, 441, 414, 47,
+
+ 443, 152, 424, 449, 152, 455, 478, 471, 152, 152,
+ 451, 454, 207, 207, 207, 207, 207, 207, 161, 161,
+ 161, 161, 161, 478, 450, 152, 478, 152, 423, 423,
+ 423, 423, 423, 456, 455, 478, 460, 208, 451, 478,
+ 457, 424, 152, 478, 208, 208, 208, 208, 208, 208,
+ 423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
+ 478, 456, 152, 424, 461, 470, 478, 478, 424, 457,
+ 478, 152, 152, 208, 208, 208, 208, 208, 208, 215,
+ 426, 423, 423, 423, 423, 423, 215, 215, 215, 215,
+ 215, 215, 461, 470, 424, 478, 478, 478, 463, 478,
+
+ 462, 466, 426, 477, 478, 478, 152, 426, 473, 152,
+ 152, 152, 474, 478, 475, 215, 215, 215, 215, 215,
+ 215, 108, 175, 175, 175, 108, 463, 40, 462, 466,
+ 152, 477, 478, 426, 152, 478, 478, 473, 152, 478,
+ 218, 474, 478, 475, 478, 478, 478, 218, 218, 218,
+ 218, 218, 218, 423, 423, 423, 423, 423, 438, 438,
+ 438, 438, 438, 478, 478, 478, 424, 478, 478, 478,
+ 478, 424, 478, 41, 478, 478, 218, 218, 218, 218,
+ 218, 218, 220, 445, 445, 445, 445, 445, 472, 220,
+ 220, 220, 220, 220, 220, 478, 424, 478, 478, 478,
+
+ 478, 478, 476, 152, 478, 426, 478, 478, 478, 478,
+ 426, 478, 478, 478, 478, 478, 472, 152, 220, 220,
+ 220, 220, 220, 220, 179, 179, 179, 179, 179, 478,
+ 476, 478, 478, 478, 478, 426, 478, 478, 478, 478,
+ 478, 478, 478, 221, 478, 478, 478, 478, 478, 478,
+ 221, 221, 221, 221, 221, 221, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 221,
+ 221, 221, 221, 221, 221, 116, 116, 116, 116, 116,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 222, 478, 478, 478, 478, 478,
+ 478, 222, 222, 222, 222, 222, 222, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 222, 222, 222, 222, 222, 222, 119, 182, 182, 182,
+ 119, 478, 478, 478, 478, 478, 478, 40, 478, 478,
+ 478, 478, 478, 478, 478, 223, 478, 478, 478, 478,
+ 478, 478, 223, 223, 223, 223, 223, 223, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 49, 478,
+
+ 478, 223, 223, 223, 223, 223, 223, 187, 187, 187,
+ 187, 187, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 227, 478, 478, 478,
+ 478, 478, 478, 227, 227, 227, 227, 227, 227, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 227, 227, 227, 227, 227, 227, 230, 478,
+ 478, 478, 478, 478, 478, 230, 230, 230, 230, 230,
+ 230, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 230, 230, 230, 230, 230, 230,
+ 199, 199, 199, 199, 199, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 233,
+ 478, 478, 478, 478, 478, 478, 233, 233, 233, 233,
+ 233, 233, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 233, 233, 233, 233, 233,
+ 233, 240, 478, 478, 478, 478, 478, 478, 240, 240,
+ 240, 240, 240, 240, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 240, 240, 240,
+ 240, 240, 240, 161, 161, 161, 161, 161, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 241, 478, 478, 478, 478, 478, 478, 241,
+ 241, 241, 241, 241, 241, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 241, 241,
+ 241, 241, 241, 241, 253, 478, 478, 478, 478, 478,
+ 478, 253, 253, 253, 253, 253, 253, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 253, 253, 253, 253, 253, 253, 108, 175, 175, 175,
+ 108, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 255, 478, 478, 478, 478,
+ 478, 478, 255, 255, 255, 255, 255, 255, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 41, 478,
+ 478, 255, 255, 255, 255, 255, 255, 257, 478, 478,
+ 478, 478, 478, 478, 257, 257, 257, 257, 257, 257,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 257, 257, 257, 257, 257, 257, 179,
+ 179, 179, 179, 179, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 258, 478,
+ 478, 478, 478, 478, 478, 258, 258, 258, 258, 258,
+ 258, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 258, 258, 258, 258, 258, 258,
+ 116, 116, 116, 116, 116, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 259,
+
+ 478, 478, 478, 478, 478, 478, 259, 259, 259, 259,
+ 259, 259, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 259, 259, 259, 259, 259,
+ 259, 119, 182, 182, 182, 119, 478, 478, 478, 478,
+ 478, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 260, 478, 478, 478, 478, 478, 478, 260, 260, 260,
+ 260, 260, 260, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 49, 478, 478, 260, 260, 260, 260,
+
+ 260, 260, 187, 187, 187, 187, 187, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 262, 478, 478, 478, 478, 478, 478, 262, 262,
+ 262, 262, 262, 262, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 262, 262, 262,
+ 262, 262, 262, 263, 478, 478, 478, 478, 478, 478,
+ 263, 263, 263, 263, 263, 263, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 263,
+
+ 263, 263, 263, 263, 263, 199, 199, 199, 199, 199,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 266, 478, 478, 478, 478, 478,
+ 478, 266, 266, 266, 266, 266, 266, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 266, 266, 266, 266, 266, 266, 272, 478, 478, 478,
+ 478, 478, 478, 272, 272, 272, 272, 272, 272, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 272, 272, 272, 272, 272, 272, 161, 161,
+ 161, 161, 161, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 273, 478, 478,
+ 478, 478, 478, 478, 273, 273, 273, 273, 273, 273,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 273, 273, 273, 273, 273, 273, 280,
+ 280, 280, 280, 286, 478, 288, 478, 478, 478, 478,
+ 288, 288, 289, 478, 478, 478, 478, 478, 290, 478,
+ 478, 478, 478, 478, 478, 290, 290, 290, 290, 290,
+
+ 290, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 291, 478, 478, 290, 290, 290, 290, 290, 290,
+ 292, 478, 478, 478, 478, 478, 478, 292, 292, 292,
+ 292, 292, 292, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 292, 292, 292, 292,
+ 292, 292, 108, 175, 175, 175, 108, 478, 40, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 294, 478, 478, 478, 478, 478, 478, 294, 294,
+
+ 294, 294, 294, 294, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 41, 478, 478, 294, 294, 294,
+ 294, 294, 294, 296, 478, 478, 478, 478, 478, 478,
+ 296, 296, 296, 296, 296, 296, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 115, 478, 478, 296,
+ 296, 296, 296, 296, 296, 179, 179, 179, 179, 179,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 297, 478, 478, 478, 478, 478,
+
+ 478, 297, 297, 297, 297, 297, 297, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 115, 478, 478,
+ 297, 297, 297, 297, 297, 297, 116, 116, 116, 116,
+ 116, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 298, 478, 478, 478, 478,
+ 478, 478, 298, 298, 298, 298, 298, 298, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 298, 298, 298, 298, 298, 298, 119, 182, 182,
+
+ 182, 119, 478, 478, 478, 478, 478, 478, 40, 478,
+ 478, 478, 478, 478, 478, 478, 299, 478, 478, 478,
+ 478, 478, 478, 299, 299, 299, 299, 299, 299, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 49,
+ 478, 478, 299, 299, 299, 299, 299, 299, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 90, 478, 478,
+ 478, 478, 478, 478, 90, 90, 90, 90, 90, 90,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 300, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 90, 90, 90, 90, 90, 90, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 300, 187, 187, 187, 187, 187, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 301, 478, 478, 478, 478, 478, 478, 301, 301,
+ 301, 301, 301, 301, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 301, 301, 301,
+ 301, 301, 301, 302, 478, 478, 478, 478, 478, 478,
+
+ 302, 302, 302, 302, 302, 302, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 302,
+ 302, 302, 302, 302, 302, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 128, 478, 478, 478, 478, 478,
+ 478, 128, 128, 128, 128, 128, 128, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 128, 128, 128, 128, 128, 128, 199, 199, 199, 199,
+
+ 199, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 304, 478, 478, 478, 478,
+ 478, 478, 304, 304, 304, 304, 304, 304, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 304, 304, 304, 304, 304, 304, 309, 478, 478,
+ 478, 478, 478, 478, 309, 309, 309, 309, 309, 309,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 309, 309, 309, 309, 309, 309, 161,
+
+ 161, 161, 161, 161, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 310, 478,
+ 478, 478, 478, 478, 478, 310, 310, 310, 310, 310,
+ 310, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 310, 310, 310, 310, 310, 310,
+ 281, 281, 281, 320, 478, 478, 322, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 323,
+ 478, 478, 478, 478, 478, 478, 323, 323, 323, 323,
+ 323, 323, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 324, 478, 478, 323, 323, 323, 323, 323,
+ 323, 284, 284, 284, 325, 478, 478, 478, 478, 478,
+ 478, 478, 327, 478, 478, 478, 478, 478, 478, 478,
+ 328, 478, 478, 478, 478, 478, 478, 328, 328, 328,
+ 328, 328, 328, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 329, 478, 478, 328, 328, 328, 328,
+ 328, 328, 286, 286, 286, 286, 286, 478, 478, 478,
+ 478, 478, 478, 478, 478, 251, 478, 478, 478, 478,
+
+ 478, 330, 478, 478, 478, 478, 478, 478, 330, 330,
+ 330, 330, 330, 330, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 252, 478, 478, 330, 330, 330,
+ 330, 330, 330, 280, 280, 280, 280, 286, 478, 288,
+ 478, 478, 478, 478, 288, 288, 289, 478, 478, 478,
+ 478, 478, 290, 478, 478, 478, 478, 478, 478, 290,
+ 290, 290, 290, 290, 290, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 291, 478, 478, 290, 290,
+
+ 290, 290, 290, 290, 331, 478, 478, 478, 478, 478,
+ 478, 331, 331, 331, 331, 331, 331, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 331, 331, 331, 331, 331, 331, 108, 175, 175, 175,
+ 108, 478, 40, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 333, 478, 478, 478, 478,
+ 478, 478, 333, 333, 333, 333, 333, 333, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 41, 478,
+
+ 478, 333, 333, 333, 333, 333, 333, 179, 179, 179,
+ 179, 179, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 334, 478, 478, 478,
+ 478, 478, 478, 334, 334, 334, 334, 334, 334, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 115,
+ 478, 478, 334, 334, 334, 334, 334, 334, 116, 116,
+ 116, 116, 116, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 335, 478, 478,
+ 478, 478, 478, 478, 335, 335, 335, 335, 335, 335,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 335, 335, 335, 335, 335, 335, 119,
+ 182, 182, 182, 119, 478, 478, 478, 478, 478, 478,
+ 40, 478, 478, 478, 478, 478, 478, 478, 336, 478,
+ 478, 478, 478, 478, 478, 336, 336, 336, 336, 336,
+ 336, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 49, 478, 478, 336, 336, 336, 336, 336, 336,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 337, 478, 478, 90,
+ 478, 478, 478, 478, 478, 478, 90, 90, 90, 90,
+ 90, 90, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 90, 90, 90, 90, 90,
+ 90, 187, 187, 187, 187, 187, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 338, 478, 478, 478, 478, 478, 478, 338, 338, 338,
+ 338, 338, 338, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 338, 338, 338, 338,
+ 338, 338, 146, 146, 146, 146, 146, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 339, 478, 478, 478, 478, 478, 478, 339, 339,
+ 339, 339, 339, 339, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 339, 339, 339,
+ 339, 339, 339, 199, 199, 199, 199, 199, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 341, 478, 478, 478, 478, 478, 478, 341,
+
+ 341, 341, 341, 341, 341, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 341, 341,
+ 341, 341, 341, 341, 345, 478, 478, 478, 478, 478,
+ 478, 345, 345, 345, 345, 345, 345, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 345, 345, 345, 345, 345, 345, 161, 161, 161, 161,
+ 161, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 346, 478, 478, 478, 478,
+
+ 478, 478, 346, 346, 346, 346, 346, 346, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 346, 346, 346, 346, 346, 346, 321, 357, 357,
+ 357, 321, 478, 282, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 358, 478, 478, 478,
+ 478, 478, 478, 358, 358, 358, 358, 358, 358, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 283,
+ 478, 478, 358, 358, 358, 358, 358, 358, 281, 281,
+
+ 281, 320, 478, 478, 322, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 323, 478, 478,
+ 478, 478, 478, 478, 323, 323, 323, 323, 323, 323,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 324, 478, 478, 323, 323, 323, 323, 323, 323, 326,
+ 361, 361, 361, 326, 478, 478, 478, 478, 478, 478,
+ 282, 478, 478, 478, 478, 478, 478, 478, 362, 478,
+ 478, 478, 478, 478, 478, 362, 362, 362, 362, 362,
+ 362, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 285, 478, 478, 362, 362, 362, 362, 362, 362,
+ 284, 284, 284, 325, 478, 478, 478, 478, 478, 478,
+ 478, 327, 478, 478, 478, 478, 478, 478, 478, 328,
+ 478, 478, 478, 478, 478, 478, 328, 328, 328, 328,
+ 328, 328, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 329, 478, 478, 328, 328, 328, 328, 328,
+ 328, 286, 286, 286, 286, 286, 478, 478, 478, 478,
+ 478, 478, 478, 478, 251, 478, 478, 478, 478, 478,
+
+ 363, 478, 478, 478, 478, 478, 478, 363, 363, 363,
+ 363, 363, 363, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 252, 478, 478, 363, 363, 363, 363,
+ 363, 363, 365, 478, 478, 478, 478, 478, 478, 365,
+ 365, 365, 365, 365, 365, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 365, 365,
+ 365, 365, 365, 365, 113, 478, 478, 478, 478, 478,
+ 478, 113, 113, 113, 113, 113, 113, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 113, 113, 113, 113, 113, 113, 367, 478, 478, 478,
+ 478, 478, 478, 367, 367, 367, 367, 367, 367, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 367, 367, 367, 367, 367, 367, 146, 146,
+ 146, 146, 146, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 128, 478, 478,
+ 478, 478, 478, 478, 128, 128, 128, 128, 128, 128,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 128, 128, 128, 128, 128, 128, 199,
+ 199, 199, 199, 199, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 369, 478,
+ 478, 478, 478, 478, 478, 369, 369, 369, 369, 369,
+ 369, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 369, 369, 369, 369, 369, 369,
+ 373, 478, 478, 478, 478, 478, 478, 373, 373, 373,
+
+ 373, 373, 373, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 373, 373, 373, 373,
+ 373, 373, 374, 478, 478, 478, 478, 478, 478, 374,
+ 374, 374, 374, 374, 374, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 374, 374,
+ 374, 374, 374, 374, 286, 286, 286, 286, 286, 478,
+ 478, 478, 478, 478, 478, 478, 478, 251, 478, 478,
+ 478, 478, 478, 375, 478, 478, 478, 478, 478, 478,
+
+ 375, 375, 375, 375, 375, 375, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 252, 478, 478, 375,
+ 375, 375, 375, 375, 375, 378, 478, 478, 478, 478,
+ 478, 478, 379, 478, 380, 478, 478, 478, 478, 381,
+ 382, 478, 478, 383, 478, 478, 478, 478, 152, 478,
+ 478, 478, 478, 478, 378, 478, 478, 478, 478, 478,
+ 379, 478, 380, 478, 478, 478, 478, 381, 382, 478,
+ 478, 383, 387, 478, 478, 478, 478, 478, 478, 387,
+ 387, 387, 387, 387, 387, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 387, 387,
+ 387, 387, 387, 387, 388, 478, 478, 478, 478, 478,
+ 478, 388, 388, 388, 388, 388, 388, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 388, 388, 388, 388, 388, 388, 389, 478, 478, 478,
+ 478, 478, 478, 389, 389, 389, 389, 389, 389, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 389, 389, 389, 389, 389, 389, 397, 478,
+ 478, 478, 478, 478, 478, 397, 397, 397, 397, 397,
+ 397, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 397, 397, 397, 397, 397, 397,
+ 398, 478, 478, 478, 478, 478, 478, 398, 398, 398,
+ 398, 398, 398, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 398, 398, 398, 398,
+ 398, 398, 399, 478, 478, 478, 478, 478, 478, 399,
+
+ 399, 399, 399, 399, 399, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 399, 399,
+ 399, 399, 399, 399, 409, 478, 478, 478, 478, 478,
+ 478, 409, 409, 409, 409, 409, 409, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 409, 409, 409, 409, 409, 409, 410, 478, 478, 478,
+ 478, 478, 478, 410, 410, 410, 410, 410, 410, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 410, 410, 410, 410, 410, 410, 428, 478,
+ 478, 478, 478, 478, 478, 428, 428, 428, 428, 428,
+ 428, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 428, 428, 428, 428, 428, 428,
+ 437, 478, 478, 478, 478, 478, 478, 437, 437, 437,
+ 437, 437, 437, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 437, 437, 437, 437,
+
+ 437, 437, 438, 438, 438, 438, 438, 478, 478, 478,
+ 478, 478, 478, 478, 478, 424, 478, 478, 478, 478,
+ 478, 439, 478, 478, 478, 478, 478, 478, 439, 439,
+ 439, 439, 439, 439, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 426, 478, 478, 439, 439, 439,
+ 439, 439, 439, 445, 445, 445, 445, 445, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 446, 478, 478, 478, 478, 478, 478, 446,
+ 446, 446, 446, 446, 446, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 446, 446,
+ 446, 446, 446, 446, 447, 478, 478, 478, 478, 478,
+ 478, 447, 447, 447, 447, 447, 447, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 447, 447, 447, 447, 447, 447, 452, 478, 478, 478,
+ 478, 478, 478, 452, 452, 452, 452, 452, 452, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 452, 452, 452, 452, 452, 452, 453, 478,
+ 478, 478, 478, 478, 478, 453, 453, 453, 453, 453,
+ 453, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 453, 453, 453, 453, 453, 453,
+ 458, 478, 478, 478, 478, 478, 478, 458, 458, 458,
+ 458, 458, 458, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 458, 458, 458, 458,
+ 458, 458, 459, 478, 478, 478, 478, 478, 478, 459,
+
+ 459, 459, 459, 459, 459, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 459, 459,
+ 459, 459, 459, 459, 464, 478, 478, 478, 478, 478,
+ 478, 464, 464, 464, 464, 464, 464, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 464, 464, 464, 464, 464, 464, 465, 478, 478, 478,
+ 478, 478, 478, 465, 465, 465, 465, 465, 465, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 465, 465, 465, 465, 465, 465, 469, 478,
+ 478, 478, 478, 478, 478, 469, 469, 469, 469, 469,
+ 469, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 469, 469, 469, 469, 469, 469,
+ 39, 478, 478, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 45, 45, 478, 45, 45, 48, 478,
+ 478, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 53, 53, 478, 53, 53, 81, 478, 478, 81,
+
+ 81, 90, 478, 90, 90, 478, 90, 90, 97, 97,
+ 97, 97, 97, 97, 97, 97, 97, 97, 108, 108,
108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 115,
- 115, 478, 115, 115, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 126, 126, 126, 126, 126,
- 126, 126, 126, 126, 126, 126, 126, 65, 65, 128,
- 128, 128, 128, 128, 128, 128, 128, 128, 130, 130,
- 478, 130, 130, 151, 151, 151, 151, 151, 151, 151,
-
- 151, 151, 153, 153, 478, 153, 153, 162, 162, 162,
- 162, 162, 162, 162, 162, 162, 179, 179, 179, 179,
- 179, 179, 179, 179, 179, 185, 185, 185, 185, 185,
- 185, 185, 185, 185, 185, 185, 185, 188, 188, 188,
- 188, 188, 188, 188, 188, 188, 200, 200, 200, 200,
- 200, 200, 200, 200, 200, 212, 212, 212, 478, 212,
+ 108, 113, 113, 478, 113, 113, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 128, 128, 478, 128, 128, 146, 146,
+ 146, 146, 146, 146, 146, 146, 146, 146, 151, 151,
+ 478, 151, 151, 159, 159, 159, 159, 159, 159, 159,
+
+ 159, 159, 159, 161, 161, 161, 161, 161, 161, 161,
+ 161, 161, 161, 166, 166, 166, 179, 179, 179, 179,
+ 179, 179, 179, 179, 179, 179, 48, 48, 478, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+ 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
+
+ 211, 211, 211, 211, 39, 478, 478, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 225, 225, 225,
225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
- 225, 225, 244, 244, 244, 478, 244, 249, 249, 249,
- 249, 478, 249, 249, 249, 249, 249, 249, 276, 276,
- 276, 478, 276, 282, 478, 282, 282, 282, 282, 282,
-
- 282, 282, 282, 282, 285, 478, 285, 285, 285, 285,
- 285, 285, 285, 285, 285, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 313, 313, 313, 478,
- 313, 322, 322, 322, 322, 322, 322, 322, 322, 322,
- 322, 322, 327, 327, 327, 327, 327, 327, 327, 327,
- 327, 327, 327, 348, 348, 348, 478, 348, 414, 414,
- 414, 478, 478, 478, 414, 478, 478, 414, 414, 423,
- 423, 423, 423, 423, 423, 423, 423, 423, 427, 427,
- 427, 478, 478, 427, 427, 427, 478, 427, 427, 438,
- 438, 438, 438, 438, 438, 438, 438, 438, 7, 478,
+ 225, 243, 243, 243, 243, 248, 248, 248, 248, 248,
+ 248, 478, 248, 248, 248, 248, 248, 248, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 185, 185, 185, 185, 185, 185, 185, 185, 185,
+ 185, 185, 185, 185, 185, 275, 275, 275, 275, 248,
+ 248, 248, 248, 248, 248, 478, 248, 248, 248, 248,
+ 248, 248, 281, 478, 478, 281, 281, 281, 281, 281,
+
+ 281, 281, 281, 281, 281, 284, 478, 478, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 113, 113, 478, 113, 113, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 312, 312, 312, 312, 321, 321, 321, 321,
+ 321, 321, 321, 321, 321, 321, 321, 321, 321, 284,
+ 478, 478, 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 326, 326, 326, 326, 326, 326, 326, 326,
+
+ 326, 326, 326, 326, 326, 248, 248, 248, 248, 248,
+ 478, 478, 248, 248, 248, 248, 248, 248, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 39, 39, 39, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 113, 113, 478, 113, 113, 48,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 348, 348, 348, 348, 281, 281, 478, 281,
+ 281, 281, 281, 281, 281, 281, 281, 281, 281, 321,
+ 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
+ 321, 321, 284, 284, 478, 284, 284, 284, 284, 284,
+
+ 284, 284, 284, 284, 284, 326, 326, 326, 326, 326,
+ 326, 326, 326, 326, 326, 326, 326, 326, 248, 248,
+ 248, 248, 248, 478, 478, 248, 248, 248, 248, 248,
+ 248, 413, 413, 413, 413, 478, 478, 478, 478, 413,
+ 478, 478, 413, 413, 425, 425, 425, 425, 478, 478,
+ 478, 425, 425, 425, 478, 425, 425, 427, 427, 427,
+ 427, 427, 427, 427, 427, 427, 427, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 7, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478
} ;
-static yyconst flex_int16_t yy_chk[2460] =
+static yyconst flex_int16_t yy_chk[6664] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -576,270 +1048,733 @@ static yyconst flex_int16_t yy_chk[2460] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 134, 4, 9, 9, 9, 9, 9, 12, 3,
- 134, 4, 10, 10, 10, 10, 10, 11, 11, 11,
- 11, 11, 3, 3, 4, 4, 13, 67, 12, 13,
- 15, 39, 52, 25, 67, 3, 13, 4, 31, 13,
-
- 13, 13, 13, 13, 13, 15, 17, 25, 22, 17,
- 27, 39, 31, 27, 11, 52, 17, 26, 22, 69,
- 26, 26, 71, 22, 27, 48, 22, 42, 31, 22,
- 42, 26, 17, 22, 22, 156, 22, 42, 71, 69,
- 48, 17, 20, 23, 27, 64, 54, 64, 26, 20,
- 20, 156, 20, 23, 23, 23, 23, 23, 23, 20,
- 54, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 5, 4, 6, 15,
+ 12, 3, 477, 4, 9, 9, 9, 9, 9, 10,
+
+ 10, 10, 10, 10, 3, 3, 4, 4, 11, 11,
+ 11, 11, 11, 23, 39, 5, 17, 6, 35, 17,
+ 3, 24, 4, 32, 24, 24, 32, 32, 38, 48,
+ 15, 69, 3, 3, 4, 4, 12, 42, 25, 17,
+ 42, 25, 11, 474, 69, 3, 35, 4, 17, 24,
+ 53, 32, 17, 23, 31, 78, 38, 78, 35, 69,
+ 39, 24, 467, 32, 33, 461, 65, 17, 83, 25,
+ 48, 11, 13, 42, 35, 13, 17, 24, 25, 32,
+ 83, 31, 13, 13, 13, 13, 13, 13, 65, 54,
+ 53, 33, 54, 54, 31, 65, 83, 25, 36, 36,
+
+ 36, 36, 36, 70, 33, 68, 68, 456, 13, 31,
+ 166, 13, 13, 13, 13, 13, 13, 20, 166, 33,
+ 211, 90, 70, 440, 20, 20, 434, 20, 211, 54,
+ 124, 124, 70, 68, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 33, 32,
- 35, 20, 32, 32, 36, 36, 36, 36, 36, 57,
-
- 43, 57, 33, 32, 35, 37, 37, 37, 37, 37,
- 43, 43, 43, 43, 43, 43, 44, 84, 33, 55,
- 32, 35, 55, 55, 57, 46, 44, 44, 44, 44,
- 44, 44, 46, 55, 84, 46, 46, 46, 46, 46,
- 46, 53, 37, 41, 41, 41, 41, 56, 66, 41,
- 72, 53, 53, 53, 53, 53, 53, 70, 147, 86,
- 72, 56, 41, 66, 147, 75, 86, 68, 56, 41,
- 75, 73, 41, 41, 41, 41, 41, 41, 49, 49,
- 49, 49, 68, 74, 74, 70, 73, 75, 63, 49,
- 477, 75, 73, 68, 74, 78, 80, 49, 63, 63,
-
- 63, 63, 63, 63, 49, 83, 80, 49, 49, 49,
- 49, 49, 49, 76, 81, 83, 76, 85, 78, 87,
- 88, 89, 87, 88, 81, 81, 81, 81, 81, 81,
- 93, 80, 85, 102, 108, 89, 90, 90, 90, 90,
- 90, 124, 124, 143, 93, 140, 94, 102, 90, 97,
- 143, 474, 109, 102, 108, 90, 94, 94, 94, 94,
- 94, 94, 90, 97, 96, 90, 90, 90, 90, 90,
- 90, 96, 109, 140, 118, 467, 98, 119, 96, 99,
- 103, 98, 104, 105, 118, 97, 98, 98, 98, 98,
- 98, 98, 119, 99, 103, 107, 104, 105, 120, 118,
-
- 107, 125, 127, 461, 150, 137, 127, 99, 137, 155,
- 104, 150, 155, 120, 148, 125, 103, 105, 112, 125,
- 107, 110, 110, 110, 110, 110, 132, 110, 112, 112,
- 112, 112, 112, 112, 148, 158, 167, 192, 456, 160,
- 110, 158, 157, 192, 167, 132, 159, 110, 160, 162,
- 110, 110, 110, 110, 110, 110, 111, 111, 111, 111,
- 157, 159, 111, 162, 190, 194, 116, 206, 344, 166,
- 169, 190, 194, 344, 206, 111, 116, 116, 116, 116,
- 116, 116, 111, 166, 169, 111, 111, 111, 111, 111,
- 111, 114, 114, 114, 114, 114, 198, 205, 226, 207,
-
- 198, 117, 226, 170, 171, 173, 207, 440, 205, 203,
- 114, 117, 117, 117, 117, 117, 117, 170, 171, 173,
- 114, 114, 114, 114, 114, 114, 121, 121, 121, 121,
- 121, 203, 212, 175, 236, 238, 131, 121, 238, 182,
- 212, 392, 434, 429, 236, 121, 131, 131, 131, 131,
- 131, 131, 121, 175, 182, 121, 121, 121, 121, 121,
- 121, 122, 122, 122, 122, 216, 265, 244, 392, 268,
- 269, 154, 122, 196, 184, 244, 268, 265, 269, 216,
- 122, 154, 154, 154, 154, 154, 154, 122, 184, 196,
- 122, 122, 122, 122, 122, 122, 129, 129, 129, 129,
-
- 129, 184, 276, 202, 340, 307, 161, 204, 307, 309,
- 276, 419, 309, 385, 340, 129, 161, 161, 161, 161,
- 161, 161, 129, 202, 204, 129, 129, 129, 129, 129,
- 129, 152, 152, 152, 152, 152, 232, 165, 172, 229,
- 313, 345, 420, 384, 165, 261, 345, 420, 313, 232,
- 152, 165, 172, 235, 229, 237, 239, 152, 224, 261,
- 152, 152, 152, 152, 152, 152, 163, 163, 163, 163,
- 163, 370, 224, 250, 235, 237, 176, 239, 370, 172,
- 435, 261, 364, 224, 435, 163, 176, 176, 176, 176,
- 176, 176, 177, 250, 251, 163, 163, 163, 163, 163,
-
- 163, 178, 177, 177, 177, 177, 177, 177, 270, 251,
- 272, 178, 178, 178, 178, 178, 178, 180, 180, 180,
- 180, 180, 281, 281, 281, 281, 281, 181, 272, 285,
- 270, 383, 348, 343, 383, 281, 180, 181, 181, 181,
- 181, 181, 181, 183, 285, 332, 180, 180, 180, 180,
- 180, 180, 187, 183, 183, 183, 183, 183, 183, 282,
- 303, 306, 187, 187, 187, 187, 187, 187, 189, 189,
- 189, 189, 189, 283, 283, 283, 283, 283, 199, 282,
- 300, 327, 303, 306, 300, 318, 283, 189, 199, 199,
- 199, 199, 199, 199, 300, 322, 327, 189, 189, 189,
-
- 189, 189, 189, 201, 201, 201, 201, 201, 319, 319,
- 319, 319, 319, 208, 418, 322, 360, 418, 317, 316,
- 326, 319, 201, 208, 208, 208, 208, 208, 208, 209,
- 326, 360, 201, 201, 201, 201, 201, 201, 211, 209,
- 209, 209, 209, 209, 209, 326, 356, 315, 211, 211,
- 211, 211, 211, 211, 215, 215, 215, 215, 215, 218,
- 215, 371, 337, 357, 361, 215, 356, 215, 371, 218,
- 218, 218, 218, 218, 218, 219, 337, 321, 314, 361,
- 215, 220, 321, 357, 366, 219, 219, 219, 219, 219,
- 219, 220, 220, 220, 220, 220, 220, 221, 366, 378,
-
- 337, 366, 321, 222, 381, 407, 378, 221, 221, 221,
- 221, 221, 221, 222, 222, 222, 222, 222, 222, 223,
- 334, 334, 334, 334, 334, 227, 308, 381, 407, 223,
- 223, 223, 223, 223, 223, 227, 227, 227, 227, 227,
- 227, 228, 379, 380, 298, 422, 334, 233, 422, 379,
- 380, 228, 228, 228, 228, 228, 228, 233, 233, 233,
- 233, 233, 233, 234, 338, 338, 338, 338, 338, 241,
- 432, 415, 441, 234, 234, 234, 234, 234, 234, 241,
- 241, 241, 241, 241, 241, 242, 382, 441, 393, 432,
- 338, 243, 415, 382, 393, 242, 242, 242, 242, 242,
-
- 242, 243, 243, 243, 243, 243, 243, 248, 248, 248,
- 248, 248, 405, 248, 293, 390, 394, 395, 248, 405,
- 248, 249, 249, 249, 249, 249, 255, 249, 377, 390,
- 394, 395, 249, 248, 249, 402, 255, 255, 255, 255,
- 255, 255, 377, 396, 404, 403, 402, 249, 253, 253,
- 253, 253, 253, 403, 253, 404, 463, 396, 256, 253,
- 253, 253, 377, 396, 280, 408, 463, 253, 256, 256,
- 256, 256, 256, 256, 253, 257, 408, 253, 253, 253,
- 253, 253, 253, 258, 416, 257, 257, 257, 257, 257,
- 257, 259, 279, 258, 258, 258, 258, 258, 258, 260,
-
- 416, 259, 259, 259, 259, 259, 259, 262, 278, 260,
- 260, 260, 260, 260, 260, 263, 277, 262, 262, 262,
- 262, 262, 262, 266, 271, 263, 263, 263, 263, 263,
- 263, 267, 264, 266, 266, 266, 266, 266, 266, 273,
- 254, 267, 267, 267, 267, 267, 267, 274, 247, 273,
- 273, 273, 273, 273, 273, 275, 406, 274, 274, 274,
- 274, 274, 274, 406, 401, 275, 275, 275, 275, 275,
- 275, 284, 284, 284, 284, 391, 443, 284, 401, 417,
- 391, 431, 246, 391, 431, 287, 287, 287, 287, 287,
- 284, 287, 245, 443, 240, 231, 287, 284, 287, 417,
-
- 284, 284, 284, 284, 284, 284, 286, 286, 286, 286,
- 230, 287, 412, 412, 412, 412, 412, 286, 288, 288,
- 288, 288, 288, 421, 288, 286, 430, 442, 412, 288,
- 421, 288, 286, 430, 450, 286, 286, 286, 286, 286,
- 286, 444, 225, 470, 288, 289, 289, 289, 289, 289,
- 442, 289, 217, 475, 450, 444, 289, 470, 289, 290,
- 290, 290, 290, 290, 294, 290, 448, 475, 462, 433,
- 290, 289, 290, 448, 294, 294, 294, 294, 294, 294,
- 425, 425, 425, 425, 425, 290, 291, 291, 291, 291,
- 291, 433, 291, 425, 455, 462, 296, 291, 214, 291,
-
- 341, 341, 341, 341, 341, 291, 296, 296, 296, 296,
- 296, 296, 291, 213, 455, 291, 291, 291, 291, 291,
- 291, 292, 292, 292, 292, 292, 341, 292, 449, 451,
- 200, 297, 292, 292, 292, 449, 451, 460, 195, 193,
- 292, 297, 297, 297, 297, 297, 297, 292, 299, 191,
- 292, 292, 292, 292, 292, 292, 301, 460, 299, 299,
- 299, 299, 299, 299, 302, 466, 301, 301, 301, 301,
- 301, 301, 304, 188, 302, 302, 302, 302, 302, 302,
- 305, 457, 304, 304, 304, 304, 304, 304, 466, 185,
- 305, 305, 305, 305, 305, 305, 310, 310, 310, 310,
-
- 310, 311, 457, 476, 468, 179, 174, 168, 310, 454,
- 468, 311, 311, 311, 311, 311, 311, 312, 471, 454,
- 164, 473, 310, 153, 476, 471, 473, 312, 312, 312,
- 312, 312, 312, 323, 323, 323, 323, 323, 151, 323,
- 454, 328, 328, 328, 328, 328, 323, 149, 472, 146,
- 145, 144, 328, 142, 328, 472, 141, 139, 331, 323,
- 324, 324, 324, 324, 324, 138, 324, 328, 331, 331,
- 331, 331, 331, 331, 355, 355, 355, 355, 355, 324,
- 355, 365, 365, 365, 365, 365, 324, 355, 136, 324,
- 324, 324, 324, 324, 324, 325, 325, 325, 325, 135,
-
- 355, 325, 133, 130, 128, 333, 126, 365, 115, 367,
- 367, 367, 367, 367, 325, 333, 333, 333, 333, 333,
- 333, 325, 113, 106, 325, 325, 325, 325, 325, 325,
- 329, 329, 329, 329, 329, 367, 95, 82, 79, 77,
- 335, 329, 65, 369, 369, 369, 369, 369, 61, 329,
- 335, 335, 335, 335, 335, 335, 329, 60, 59, 329,
- 329, 329, 329, 329, 329, 330, 330, 330, 330, 369,
- 58, 51, 45, 38, 29, 336, 330, 28, 24, 21,
- 19, 18, 16, 14, 330, 336, 336, 336, 336, 336,
- 336, 330, 339, 7, 330, 330, 330, 330, 330, 330,
-
- 342, 6, 339, 339, 339, 339, 339, 339, 5, 0,
- 342, 342, 342, 342, 342, 342, 346, 346, 346, 346,
- 346, 347, 0, 0, 0, 0, 0, 0, 346, 0,
- 0, 347, 347, 347, 347, 347, 347, 358, 0, 0,
- 0, 0, 346, 0, 0, 0, 0, 358, 358, 358,
- 358, 358, 358, 359, 359, 359, 359, 359, 362, 0,
- 0, 0, 0, 0, 359, 0, 359, 0, 362, 362,
- 362, 362, 362, 362, 363, 0, 0, 368, 0, 359,
- 0, 0, 0, 368, 363, 363, 363, 363, 363, 363,
- 368, 0, 368, 372, 0, 0, 0, 368, 368, 373,
-
- 0, 368, 0, 372, 372, 372, 372, 372, 372, 373,
- 373, 373, 373, 373, 373, 374, 0, 0, 0, 0,
- 0, 375, 0, 0, 0, 374, 374, 374, 374, 374,
- 374, 375, 375, 375, 375, 375, 375, 387, 0, 0,
- 0, 0, 0, 388, 0, 0, 0, 387, 387, 387,
- 387, 387, 387, 388, 388, 388, 388, 388, 388, 389,
- 0, 0, 0, 0, 0, 397, 0, 0, 0, 389,
- 389, 389, 389, 389, 389, 397, 397, 397, 397, 397,
- 397, 398, 0, 0, 0, 0, 0, 399, 0, 0,
- 0, 398, 398, 398, 398, 398, 398, 399, 399, 399,
-
- 399, 399, 399, 400, 400, 400, 400, 400, 0, 0,
- 409, 0, 0, 0, 0, 0, 0, 0, 0, 400,
- 409, 409, 409, 409, 409, 409, 410, 0, 0, 400,
- 411, 411, 411, 411, 411, 0, 410, 410, 410, 410,
- 410, 410, 0, 0, 0, 0, 411, 413, 0, 0,
- 414, 414, 414, 414, 414, 0, 411, 413, 413, 413,
- 413, 413, 413, 414, 423, 423, 423, 423, 423, 0,
- 427, 427, 427, 427, 427, 0, 414, 423, 0, 0,
- 0, 0, 0, 427, 0, 0, 0, 428, 0, 0,
- 423, 424, 424, 424, 424, 424, 427, 428, 428, 428,
-
- 428, 428, 428, 0, 424, 436, 436, 436, 436, 436,
- 424, 0, 0, 0, 0, 0, 0, 424, 436, 0,
- 424, 424, 424, 424, 424, 424, 437, 0, 0, 0,
- 0, 436, 0, 0, 0, 0, 437, 437, 437, 437,
- 437, 437, 438, 438, 438, 438, 438, 445, 0, 0,
- 446, 446, 446, 446, 446, 438, 0, 445, 445, 445,
- 445, 445, 445, 446, 0, 0, 0, 447, 438, 439,
- 439, 439, 439, 439, 0, 0, 446, 447, 447, 447,
- 447, 447, 447, 0, 0, 0, 0, 0, 439, 0,
- 0, 0, 0, 0, 452, 0, 0, 0, 439, 439,
-
- 439, 439, 439, 439, 452, 452, 452, 452, 452, 452,
- 453, 0, 0, 0, 0, 0, 458, 0, 0, 0,
- 453, 453, 453, 453, 453, 453, 458, 458, 458, 458,
- 458, 458, 459, 0, 0, 0, 0, 0, 464, 0,
- 0, 0, 459, 459, 459, 459, 459, 459, 464, 464,
- 464, 464, 464, 464, 465, 0, 0, 0, 0, 0,
- 469, 0, 0, 0, 465, 465, 465, 465, 465, 465,
- 469, 469, 469, 469, 469, 469, 479, 0, 479, 479,
- 479, 479, 479, 479, 479, 479, 479, 480, 480, 0,
- 480, 480, 481, 0, 481, 481, 481, 481, 481, 481,
-
- 481, 481, 481, 482, 482, 0, 482, 482, 483, 0,
- 0, 483, 483, 484, 484, 484, 484, 484, 484, 484,
- 484, 484, 485, 0, 485, 485, 0, 485, 485, 486,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 90, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
+ 20, 20, 20, 20, 20, 20, 20, 20, 64, 52,
+ 106, 20, 22, 74, 55, 429, 37, 37, 37, 37,
+
+ 37, 57, 64, 57, 22, 243, 487, 22, 487, 52,
+ 22, 419, 55, 243, 22, 22, 64, 22, 106, 74,
+ 67, 66, 74, 57, 72, 72, 385, 127, 22, 67,
+ 37, 127, 66, 22, 55, 66, 22, 52, 71, 22,
+ 97, 55, 22, 22, 71, 22, 26, 73, 67, 66,
+ 82, 57, 71, 26, 26, 26, 26, 26, 26, 37,
+ 66, 72, 108, 109, 73, 80, 71, 76, 73, 82,
+ 107, 73, 71, 76, 86, 107, 73, 85, 140, 82,
+ 97, 384, 26, 26, 26, 26, 26, 26, 41, 41,
+ 41, 41, 73, 118, 41, 76, 73, 80, 84, 85,
+
+ 86, 80, 87, 86, 348, 175, 85, 41, 108, 109,
+ 96, 140, 84, 93, 41, 41, 41, 41, 41, 41,
+ 93, 107, 94, 119, 102, 80, 84, 104, 87, 342,
+ 250, 87, 103, 119, 118, 96, 317, 105, 161, 316,
+ 41, 102, 315, 41, 41, 41, 41, 41, 41, 44,
+ 96, 175, 104, 93, 314, 94, 44, 44, 44, 44,
+ 44, 44, 94, 96, 102, 103, 120, 104, 105, 125,
+ 102, 250, 103, 275, 119, 131, 120, 105, 161, 134,
+ 104, 275, 44, 94, 125, 44, 44, 44, 44, 44,
+ 44, 46, 144, 103, 150, 131, 105, 145, 46, 46,
+
+ 46, 46, 46, 46, 131, 134, 145, 165, 134, 125,
+ 137, 137, 148, 125, 156, 144, 150, 120, 192, 153,
+ 226, 144, 148, 150, 226, 145, 154, 46, 46, 46,
+ 46, 46, 46, 49, 49, 49, 49, 156, 137, 154,
+ 148, 157, 155, 156, 49, 153, 158, 165, 153, 174,
+ 190, 192, 49, 155, 154, 157, 168, 170, 164, 49,
+ 49, 49, 49, 49, 49, 164, 158, 171, 173, 157,
+ 155, 172, 182, 190, 235, 158, 184, 174, 216, 190,
+ 249, 499, 182, 499, 284, 49, 194, 217, 49, 49,
+ 49, 49, 49, 49, 56, 196, 168, 170, 164, 194,
+
+ 184, 56, 56, 56, 56, 56, 56, 171, 173, 172,
+ 235, 172, 201, 198, 194, 217, 184, 196, 216, 325,
+ 293, 201, 202, 182, 196, 284, 249, 203, 184, 202,
+ 56, 56, 56, 56, 56, 56, 77, 172, 198, 203,
+ 201, 204, 198, 77, 77, 77, 77, 77, 77, 293,
+ 202, 231, 232, 234, 390, 203, 281, 320, 390, 204,
+ 325, 234, 205, 492, 492, 231, 254, 509, 232, 509,
+ 204, 206, 77, 77, 77, 77, 77, 77, 88, 231,
+ 232, 234, 224, 236, 205, 88, 88, 88, 88, 88,
+ 88, 205, 236, 206, 254, 214, 214, 214, 214, 214,
+
+ 206, 214, 281, 320, 224, 265, 214, 313, 214, 237,
+ 306, 236, 332, 238, 88, 88, 88, 88, 88, 88,
+ 91, 238, 224, 265, 364, 307, 271, 91, 91, 91,
+ 91, 91, 91, 224, 265, 237, 306, 271, 237, 306,
+ 332, 238, 247, 247, 247, 247, 247, 214, 247, 267,
+ 296, 268, 364, 247, 271, 247, 91, 91, 91, 91,
+ 91, 91, 98, 98, 98, 98, 98, 279, 511, 337,
+ 511, 267, 268, 340, 98, 269, 303, 305, 267, 312,
+ 268, 98, 269, 303, 305, 278, 308, 312, 98, 98,
+ 98, 98, 98, 98, 247, 248, 248, 248, 248, 248,
+
+ 337, 248, 277, 269, 303, 305, 248, 276, 248, 340,
+ 463, 515, 308, 515, 98, 308, 270, 98, 98, 98,
+ 98, 98, 98, 110, 110, 110, 110, 110, 337, 110,
+ 280, 280, 280, 280, 280, 282, 282, 282, 282, 282,
+ 321, 343, 110, 280, 246, 321, 463, 248, 282, 110,
+ 110, 110, 110, 110, 110, 286, 286, 286, 286, 286,
+ 318, 318, 318, 318, 318, 343, 245, 366, 286, 517,
+ 343, 517, 370, 318, 394, 110, 344, 366, 110, 110,
+ 110, 110, 110, 110, 111, 111, 111, 111, 244, 394,
+ 111, 321, 239, 229, 370, 287, 287, 287, 287, 287,
+
+ 344, 370, 394, 111, 383, 344, 366, 286, 287, 228,
+ 111, 111, 111, 111, 111, 111, 288, 288, 288, 288,
+ 288, 289, 289, 289, 289, 289, 356, 225, 326, 288,
+ 383, 356, 213, 383, 289, 392, 111, 392, 326, 111,
+ 111, 111, 111, 111, 111, 114, 393, 287, 462, 212,
+ 462, 403, 114, 114, 114, 114, 114, 114, 322, 322,
+ 322, 322, 322, 392, 322, 357, 199, 193, 288, 393,
+ 357, 322, 403, 289, 191, 393, 462, 356, 114, 326,
+ 403, 114, 114, 114, 114, 114, 114, 115, 189, 327,
+ 327, 327, 327, 327, 115, 115, 115, 115, 115, 115,
+
+ 327, 187, 327, 331, 331, 331, 331, 331, 185, 179,
+ 322, 333, 333, 333, 333, 333, 357, 333, 167, 331,
+ 371, 163, 159, 115, 115, 115, 115, 115, 115, 117,
+ 117, 117, 117, 117, 346, 346, 346, 346, 346, 151,
+ 149, 327, 371, 336, 336, 336, 336, 336, 117, 371,
+ 346, 360, 361, 146, 336, 117, 117, 117, 117, 117,
+ 117, 360, 361, 333, 365, 365, 365, 365, 365, 416,
+ 345, 345, 345, 345, 345, 367, 367, 367, 367, 367,
+ 143, 142, 416, 377, 117, 117, 117, 117, 117, 117,
+ 121, 121, 121, 121, 121, 336, 524, 416, 524, 141,
+
+ 441, 121, 360, 361, 369, 369, 369, 369, 369, 121,
+ 377, 378, 379, 139, 441, 380, 121, 121, 121, 121,
+ 121, 121, 345, 355, 355, 355, 355, 355, 441, 355,
+ 527, 415, 527, 378, 379, 138, 355, 380, 377, 415,
+ 378, 379, 121, 395, 380, 121, 121, 121, 121, 121,
+ 121, 122, 122, 122, 122, 381, 369, 136, 395, 415,
+ 418, 381, 122, 359, 359, 359, 359, 359, 382, 391,
+ 122, 395, 391, 402, 359, 355, 359, 122, 122, 122,
+ 122, 122, 122, 381, 135, 401, 418, 133, 407, 418,
+ 382, 402, 132, 391, 407, 130, 405, 382, 391, 396,
+
+ 401, 391, 402, 122, 128, 396, 122, 122, 122, 122,
+ 122, 122, 129, 401, 396, 359, 407, 406, 405, 129,
+ 129, 129, 129, 129, 129, 405, 537, 396, 537, 544,
+ 545, 544, 545, 396, 399, 399, 399, 399, 399, 406,
+ 126, 404, 408, 116, 113, 95, 406, 399, 129, 129,
+ 129, 129, 129, 129, 147, 147, 147, 147, 147, 404,
+ 408, 92, 81, 79, 410, 410, 410, 410, 410, 417,
+ 404, 408, 75, 147, 63, 410, 420, 61, 417, 421,
+ 147, 147, 147, 147, 147, 147, 399, 400, 400, 400,
+ 400, 400, 409, 409, 409, 409, 409, 417, 409, 60,
+
+ 420, 421, 59, 400, 58, 420, 147, 51, 421, 147,
+ 147, 147, 147, 147, 147, 152, 410, 411, 411, 411,
+ 411, 411, 152, 152, 152, 152, 152, 152, 413, 413,
+ 413, 413, 413, 411, 45, 29, 28, 422, 27, 400,
+ 21, 413, 430, 19, 409, 435, 412, 412, 412, 412,
+ 412, 152, 152, 152, 152, 152, 152, 160, 160, 160,
+ 160, 160, 412, 422, 430, 18, 422, 432, 431, 411,
+ 435, 430, 433, 16, 435, 442, 160, 432, 468, 433,
+ 413, 442, 448, 160, 160, 160, 160, 160, 160, 423,
+ 423, 423, 423, 423, 431, 432, 443, 431, 412, 14,
+
+ 433, 468, 423, 442, 448, 449, 7, 468, 443, 160,
+ 444, 448, 160, 160, 160, 160, 160, 160, 162, 162,
+ 162, 162, 162, 0, 443, 444, 0, 449, 425, 425,
+ 425, 425, 425, 450, 449, 0, 454, 162, 444, 0,
+ 451, 425, 450, 0, 162, 162, 162, 162, 162, 162,
+ 427, 427, 427, 427, 427, 436, 436, 436, 436, 436,
+ 0, 450, 451, 427, 454, 466, 0, 0, 436, 451,
+ 0, 466, 454, 162, 162, 162, 162, 162, 162, 169,
+ 425, 438, 438, 438, 438, 438, 169, 169, 169, 169,
+ 169, 169, 454, 466, 438, 0, 0, 0, 457, 0,
+
+ 455, 460, 427, 476, 0, 0, 457, 436, 471, 455,
+ 460, 476, 472, 0, 473, 169, 169, 169, 169, 169,
+ 169, 176, 176, 176, 176, 176, 457, 176, 455, 460,
+ 471, 476, 0, 438, 472, 0, 0, 471, 473, 0,
+ 176, 472, 0, 473, 0, 0, 0, 176, 176, 176,
+ 176, 176, 176, 445, 445, 445, 445, 445, 465, 465,
+ 465, 465, 465, 0, 0, 0, 445, 0, 0, 0,
+ 0, 465, 0, 176, 0, 0, 176, 176, 176, 176,
+ 176, 176, 178, 469, 469, 469, 469, 469, 470, 178,
+ 178, 178, 178, 178, 178, 0, 469, 0, 0, 0,
+
+ 0, 0, 475, 470, 0, 445, 0, 0, 0, 0,
+ 465, 0, 0, 0, 0, 0, 470, 475, 178, 178,
+ 178, 178, 178, 178, 180, 180, 180, 180, 180, 0,
+ 475, 0, 0, 0, 0, 469, 0, 0, 0, 0,
+ 0, 0, 0, 180, 0, 0, 0, 0, 0, 0,
+ 180, 180, 180, 180, 180, 180, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
+ 180, 180, 180, 180, 180, 181, 181, 181, 181, 181,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0,
+ 0, 181, 181, 181, 181, 181, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 181, 181, 181, 181, 181, 181, 183, 183, 183, 183,
+ 183, 0, 0, 0, 0, 0, 0, 183, 0, 0,
+ 0, 0, 0, 0, 0, 183, 0, 0, 0, 0,
+ 0, 0, 183, 183, 183, 183, 183, 183, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 183, 0,
+
+ 0, 183, 183, 183, 183, 183, 183, 188, 188, 188,
+ 188, 188, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+ 0, 0, 0, 188, 188, 188, 188, 188, 188, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 188, 188, 188, 188, 188, 188, 195, 0,
+ 0, 0, 0, 0, 0, 195, 195, 195, 195, 195,
+ 195, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 195, 195, 195, 195, 195, 195,
+ 200, 200, 200, 200, 200, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 200,
+ 0, 0, 0, 0, 0, 0, 200, 200, 200, 200,
+ 200, 200, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 200, 200, 200, 200, 200,
+ 200, 207, 0, 0, 0, 0, 0, 0, 207, 207,
+ 207, 207, 207, 207, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 207, 207, 207,
+ 207, 207, 207, 208, 208, 208, 208, 208, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 208, 0, 0, 0, 0, 0, 0, 208,
+ 208, 208, 208, 208, 208, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 208, 208,
+ 208, 208, 208, 208, 215, 0, 0, 0, 0, 0,
+ 0, 215, 215, 215, 215, 215, 215, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 215, 215, 215, 215, 215, 215, 218, 218, 218, 218,
+ 218, 0, 218, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 218, 0, 0, 0, 0,
+ 0, 0, 218, 218, 218, 218, 218, 218, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 218, 0,
+ 0, 218, 218, 218, 218, 218, 218, 220, 0, 0,
+ 0, 0, 0, 0, 220, 220, 220, 220, 220, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 220, 220, 220, 220, 220, 221,
+ 221, 221, 221, 221, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 221, 0,
+ 0, 0, 0, 0, 0, 221, 221, 221, 221, 221,
+ 221, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 221, 221, 221, 221, 221, 221,
+ 222, 222, 222, 222, 222, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
+
+ 0, 0, 0, 0, 0, 0, 222, 222, 222, 222,
+ 222, 222, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 222, 222, 222, 222, 222,
+ 222, 223, 223, 223, 223, 223, 0, 0, 0, 0,
+ 0, 0, 223, 0, 0, 0, 0, 0, 0, 0,
+ 223, 0, 0, 0, 0, 0, 0, 223, 223, 223,
+ 223, 223, 223, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 223, 0, 0, 223, 223, 223, 223,
+
+ 223, 223, 227, 227, 227, 227, 227, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 227, 0, 0, 0, 0, 0, 0, 227, 227,
+ 227, 227, 227, 227, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 227, 227, 227,
+ 227, 227, 227, 230, 0, 0, 0, 0, 0, 0,
+ 230, 230, 230, 230, 230, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
+
+ 230, 230, 230, 230, 230, 233, 233, 233, 233, 233,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 233, 0, 0, 0, 0, 0,
+ 0, 233, 233, 233, 233, 233, 233, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 233, 233, 233, 233, 233, 233, 240, 0, 0, 0,
+ 0, 0, 0, 240, 240, 240, 240, 240, 240, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 240, 240, 240, 240, 240, 240, 241, 241,
+ 241, 241, 241, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 241, 0, 0,
+ 0, 0, 0, 0, 241, 241, 241, 241, 241, 241,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 241, 241, 241, 241, 241, 241, 252,
+ 252, 252, 252, 252, 0, 252, 0, 0, 0, 0,
+ 252, 252, 252, 0, 0, 0, 0, 0, 252, 0,
+ 0, 0, 0, 0, 0, 252, 252, 252, 252, 252,
+
+ 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 252, 0, 0, 252, 252, 252, 252, 252, 252,
+ 253, 0, 0, 0, 0, 0, 0, 253, 253, 253,
+ 253, 253, 253, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 253, 253, 253, 253,
+ 253, 253, 255, 255, 255, 255, 255, 0, 255, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 255, 0, 0, 0, 0, 0, 0, 255, 255,
+
+ 255, 255, 255, 255, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 255, 0, 0, 255, 255, 255,
+ 255, 255, 255, 257, 0, 0, 0, 0, 0, 0,
+ 257, 257, 257, 257, 257, 257, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 257,
+ 257, 257, 257, 257, 257, 258, 258, 258, 258, 258,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
+
+ 0, 258, 258, 258, 258, 258, 258, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 258, 0, 0,
+ 258, 258, 258, 258, 258, 258, 259, 259, 259, 259,
+ 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 0, 0, 0,
+ 0, 0, 259, 259, 259, 259, 259, 259, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 259, 259, 259, 259, 259, 259, 260, 260, 260,
+
+ 260, 260, 0, 0, 0, 0, 0, 0, 260, 0,
+ 0, 0, 0, 0, 0, 0, 260, 0, 0, 0,
+ 0, 0, 0, 260, 260, 260, 260, 260, 260, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 260,
+ 0, 0, 260, 260, 260, 260, 260, 260, 261, 261,
+ 261, 261, 261, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 261, 0, 0,
+ 0, 0, 0, 0, 261, 261, 261, 261, 261, 261,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 261, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 261, 261, 261, 261, 261, 261, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 261, 262, 262, 262, 262, 262, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 262, 0, 0, 0, 0, 0, 0, 262, 262,
+ 262, 262, 262, 262, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 262, 262, 262,
+ 262, 262, 262, 263, 0, 0, 0, 0, 0, 0,
+
+ 263, 263, 263, 263, 263, 263, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 263,
+ 263, 263, 263, 263, 263, 264, 264, 264, 264, 264,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 264, 0, 0, 0, 0, 0,
+ 0, 264, 264, 264, 264, 264, 264, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 264, 264, 264, 264, 264, 264, 266, 266, 266, 266,
+
+ 266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 266, 0, 0, 0, 0,
+ 0, 0, 266, 266, 266, 266, 266, 266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 266, 266, 266, 266, 266, 266, 272, 0, 0,
+ 0, 0, 0, 0, 272, 272, 272, 272, 272, 272,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 272, 272, 272, 272, 272, 272, 273,
+
+ 273, 273, 273, 273, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 273, 0,
+ 0, 0, 0, 0, 0, 273, 273, 273, 273, 273,
+ 273, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 273, 273, 273, 273, 273, 273,
+ 283, 283, 283, 283, 0, 0, 283, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
+ 0, 0, 0, 0, 0, 0, 283, 283, 283, 283,
+ 283, 283, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 283, 0, 0, 283, 283, 283, 283, 283,
+ 283, 285, 285, 285, 285, 0, 0, 0, 0, 0,
+ 0, 0, 285, 0, 0, 0, 0, 0, 0, 0,
+ 285, 0, 0, 0, 0, 0, 0, 285, 285, 285,
+ 285, 285, 285, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 285, 0, 0, 285, 285, 285, 285,
+ 285, 285, 290, 290, 290, 290, 290, 0, 0, 0,
+ 0, 0, 0, 0, 0, 290, 0, 0, 0, 0,
+
+ 0, 290, 0, 0, 0, 0, 0, 0, 290, 290,
+ 290, 290, 290, 290, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 290, 0, 0, 290, 290, 290,
+ 290, 290, 290, 291, 291, 291, 291, 291, 0, 291,
+ 0, 0, 0, 0, 291, 291, 291, 0, 0, 0,
+ 0, 0, 291, 0, 0, 0, 0, 0, 0, 291,
+ 291, 291, 291, 291, 291, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 291, 0, 0, 291, 291,
+
+ 291, 291, 291, 291, 292, 0, 0, 0, 0, 0,
+ 0, 292, 292, 292, 292, 292, 292, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 292, 292, 292, 292, 292, 292, 294, 294, 294, 294,
+ 294, 0, 294, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 294, 0, 0, 0, 0,
+ 0, 0, 294, 294, 294, 294, 294, 294, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 294, 0,
+
+ 0, 294, 294, 294, 294, 294, 294, 297, 297, 297,
+ 297, 297, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 297, 0, 0, 0,
+ 0, 0, 0, 297, 297, 297, 297, 297, 297, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 297,
+ 0, 0, 297, 297, 297, 297, 297, 297, 298, 298,
+ 298, 298, 298, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 298, 0, 0,
+ 0, 0, 0, 0, 298, 298, 298, 298, 298, 298,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 298, 298, 298, 298, 298, 298, 299,
+ 299, 299, 299, 299, 0, 0, 0, 0, 0, 0,
+ 299, 0, 0, 0, 0, 0, 0, 0, 299, 0,
+ 0, 0, 0, 0, 0, 299, 299, 299, 299, 299,
+ 299, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 299, 0, 0, 299, 299, 299, 299, 299, 299,
+ 300, 300, 300, 300, 300, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 300, 0, 0, 300,
+ 0, 0, 0, 0, 0, 0, 300, 300, 300, 300,
+ 300, 300, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 300, 300, 300, 300, 300,
+ 300, 301, 301, 301, 301, 301, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 301, 0, 0, 0, 0, 0, 0, 301, 301, 301,
+ 301, 301, 301, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 301, 301, 301, 301,
+ 301, 301, 302, 302, 302, 302, 302, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 302, 0, 0, 0, 0, 0, 0, 302, 302,
+ 302, 302, 302, 302, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 302, 302, 302,
+ 302, 302, 302, 304, 304, 304, 304, 304, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 304, 0, 0, 0, 0, 0, 0, 304,
+
+ 304, 304, 304, 304, 304, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 304, 304,
+ 304, 304, 304, 304, 309, 0, 0, 0, 0, 0,
+ 0, 309, 309, 309, 309, 309, 309, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 309, 309, 309, 309, 309, 309, 310, 310, 310, 310,
+ 310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 310, 0, 0, 0, 0,
+
+ 0, 0, 310, 310, 310, 310, 310, 310, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 310, 310, 310, 310, 310, 310, 323, 323, 323,
+ 323, 323, 0, 323, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 323, 0, 0, 0,
+ 0, 0, 0, 323, 323, 323, 323, 323, 323, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 323,
+ 0, 0, 323, 323, 323, 323, 323, 323, 324, 324,
+
+ 324, 324, 0, 0, 324, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 324, 0, 0,
+ 0, 0, 0, 0, 324, 324, 324, 324, 324, 324,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 324, 0, 0, 324, 324, 324, 324, 324, 324, 328,
+ 328, 328, 328, 328, 0, 0, 0, 0, 0, 0,
+ 328, 0, 0, 0, 0, 0, 0, 0, 328, 0,
+ 0, 0, 0, 0, 0, 328, 328, 328, 328, 328,
+ 328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 328, 0, 0, 328, 328, 328, 328, 328, 328,
+ 329, 329, 329, 329, 0, 0, 0, 0, 0, 0,
+ 0, 329, 0, 0, 0, 0, 0, 0, 0, 329,
+ 0, 0, 0, 0, 0, 0, 329, 329, 329, 329,
+ 329, 329, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 329, 0, 0, 329, 329, 329, 329, 329,
+ 329, 330, 330, 330, 330, 330, 0, 0, 0, 0,
+ 0, 0, 0, 0, 330, 0, 0, 0, 0, 0,
+
+ 330, 0, 0, 0, 0, 0, 0, 330, 330, 330,
+ 330, 330, 330, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 330, 0, 0, 330, 330, 330, 330,
+ 330, 330, 334, 0, 0, 0, 0, 0, 0, 334,
+ 334, 334, 334, 334, 334, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 334, 334,
+ 334, 334, 334, 334, 335, 0, 0, 0, 0, 0,
+ 0, 335, 335, 335, 335, 335, 335, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 335, 335, 335, 335, 335, 335, 338, 0, 0, 0,
+ 0, 0, 0, 338, 338, 338, 338, 338, 338, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 338, 338, 338, 338, 338, 338, 339, 339,
+ 339, 339, 339, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 339, 0, 0,
+ 0, 0, 0, 0, 339, 339, 339, 339, 339, 339,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 339, 339, 339, 339, 339, 339, 341,
+ 341, 341, 341, 341, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 341, 0,
+ 0, 0, 0, 0, 0, 341, 341, 341, 341, 341,
+ 341, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 341, 341, 341, 341, 341, 341,
+ 358, 0, 0, 0, 0, 0, 0, 358, 358, 358,
+
+ 358, 358, 358, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 358, 358, 358, 358,
+ 358, 358, 362, 0, 0, 0, 0, 0, 0, 362,
+ 362, 362, 362, 362, 362, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 362, 362,
+ 362, 362, 362, 362, 363, 363, 363, 363, 363, 0,
+ 0, 0, 0, 0, 0, 0, 0, 363, 0, 0,
+ 0, 0, 0, 363, 0, 0, 0, 0, 0, 0,
+
+ 363, 363, 363, 363, 363, 363, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 363, 0, 0, 363,
+ 363, 363, 363, 363, 363, 368, 0, 0, 0, 0,
+ 0, 0, 368, 0, 368, 0, 0, 0, 0, 368,
+ 368, 0, 0, 368, 0, 0, 0, 0, 368, 0,
+ 0, 0, 0, 0, 368, 0, 0, 0, 0, 0,
+ 368, 0, 368, 0, 0, 0, 0, 368, 368, 0,
+ 0, 368, 373, 0, 0, 0, 0, 0, 0, 373,
+ 373, 373, 373, 373, 373, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 373, 373,
+ 373, 373, 373, 373, 374, 0, 0, 0, 0, 0,
+ 0, 374, 374, 374, 374, 374, 374, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 374, 374, 374, 374, 374, 374, 375, 0, 0, 0,
+ 0, 0, 0, 375, 375, 375, 375, 375, 375, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 375, 375, 375, 375, 375, 375, 387, 0,
+ 0, 0, 0, 0, 0, 387, 387, 387, 387, 387,
+ 387, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 387, 387, 387, 387, 387, 387,
+ 388, 0, 0, 0, 0, 0, 0, 388, 388, 388,
+ 388, 388, 388, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 388, 388, 388, 388,
+ 388, 388, 389, 0, 0, 0, 0, 0, 0, 389,
+
+ 389, 389, 389, 389, 389, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 389, 389,
+ 389, 389, 389, 389, 397, 0, 0, 0, 0, 0,
+ 0, 397, 397, 397, 397, 397, 397, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 397, 397, 397, 397, 397, 397, 398, 0, 0, 0,
+ 0, 0, 0, 398, 398, 398, 398, 398, 398, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 398, 398, 398, 398, 398, 398, 414, 0,
+ 0, 0, 0, 0, 0, 414, 414, 414, 414, 414,
+ 414, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 414, 414, 414, 414, 414, 414,
+ 426, 0, 0, 0, 0, 0, 0, 426, 426, 426,
+ 426, 426, 426, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 426, 426, 426, 426,
+
+ 426, 426, 428, 428, 428, 428, 428, 0, 0, 0,
+ 0, 0, 0, 0, 0, 428, 0, 0, 0, 0,
+ 0, 428, 0, 0, 0, 0, 0, 0, 428, 428,
+ 428, 428, 428, 428, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 428, 0, 0, 428, 428, 428,
+ 428, 428, 428, 437, 437, 437, 437, 437, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 437, 0, 0, 0, 0, 0, 0, 437,
+ 437, 437, 437, 437, 437, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 437, 437,
+ 437, 437, 437, 437, 439, 0, 0, 0, 0, 0,
+ 0, 439, 439, 439, 439, 439, 439, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 439, 439, 439, 439, 439, 439, 446, 0, 0, 0,
+ 0, 0, 0, 446, 446, 446, 446, 446, 446, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 446, 446, 446, 446, 446, 446, 447, 0,
+ 0, 0, 0, 0, 0, 447, 447, 447, 447, 447,
+ 447, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 447, 447, 447, 447, 447, 447,
+ 452, 0, 0, 0, 0, 0, 0, 452, 452, 452,
+ 452, 452, 452, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 452, 452, 452, 452,
+ 452, 452, 453, 0, 0, 0, 0, 0, 0, 453,
+
+ 453, 453, 453, 453, 453, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 453, 453,
+ 453, 453, 453, 453, 458, 0, 0, 0, 0, 0,
+ 0, 458, 458, 458, 458, 458, 458, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 458, 458, 458, 458, 458, 458, 459, 0, 0, 0,
+ 0, 0, 0, 459, 459, 459, 459, 459, 459, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 459, 459, 459, 459, 459, 459, 464, 0,
+ 0, 0, 0, 0, 0, 464, 464, 464, 464, 464,
+ 464, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 464, 464, 464, 464, 464, 464,
+ 479, 0, 0, 479, 479, 479, 479, 479, 479, 479,
+ 479, 479, 479, 480, 480, 0, 480, 480, 481, 0,
+ 0, 481, 481, 481, 481, 481, 481, 481, 481, 481,
+ 481, 482, 482, 0, 482, 482, 483, 0, 0, 483,
+
+ 483, 484, 0, 484, 484, 0, 484, 484, 485, 485,
+ 485, 485, 485, 485, 485, 485, 485, 485, 486, 486,
486, 486, 486, 486, 486, 486, 486, 486, 486, 486,
- 487, 487, 487, 487, 487, 487, 487, 487, 487, 488,
- 488, 0, 488, 488, 489, 489, 489, 489, 489, 489,
- 489, 489, 489, 489, 489, 490, 490, 490, 490, 490,
- 490, 490, 490, 490, 490, 490, 490, 491, 491, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 493, 493,
- 0, 493, 493, 494, 494, 494, 494, 494, 494, 494,
-
- 494, 494, 495, 495, 0, 495, 495, 496, 496, 496,
- 496, 496, 496, 496, 496, 496, 497, 497, 497, 497,
- 497, 497, 497, 497, 497, 498, 498, 498, 498, 498,
- 498, 498, 498, 498, 498, 498, 498, 499, 499, 499,
- 499, 499, 499, 499, 499, 499, 500, 500, 500, 500,
- 500, 500, 500, 500, 500, 501, 501, 501, 0, 501,
+ 486, 488, 488, 0, 488, 488, 489, 489, 489, 489,
+ 489, 489, 489, 489, 489, 489, 490, 490, 490, 490,
+ 490, 490, 490, 490, 490, 490, 490, 490, 490, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 491, 493, 493, 0, 493, 493, 494, 494,
+ 494, 494, 494, 494, 494, 494, 494, 494, 495, 495,
+ 0, 495, 495, 496, 496, 496, 496, 496, 496, 496,
+
+ 496, 496, 496, 497, 497, 497, 497, 497, 497, 497,
+ 497, 497, 497, 498, 498, 498, 500, 500, 500, 500,
+ 500, 500, 500, 500, 500, 500, 501, 501, 0, 501,
+ 501, 501, 501, 501, 501, 501, 501, 501, 501, 502,
502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
- 502, 502, 503, 503, 503, 0, 503, 504, 504, 504,
- 504, 0, 504, 504, 504, 504, 504, 504, 505, 505,
- 505, 0, 505, 506, 0, 506, 506, 506, 506, 506,
-
- 506, 506, 506, 506, 507, 0, 507, 507, 507, 507,
- 507, 507, 507, 507, 507, 508, 508, 508, 508, 508,
- 508, 508, 508, 508, 508, 508, 509, 509, 509, 0,
- 509, 510, 510, 510, 510, 510, 510, 510, 510, 510,
- 510, 510, 511, 511, 511, 511, 511, 511, 511, 511,
- 511, 511, 511, 512, 512, 512, 0, 512, 513, 513,
- 513, 0, 0, 0, 513, 0, 0, 513, 513, 514,
- 514, 514, 514, 514, 514, 514, 514, 514, 515, 515,
- 515, 0, 0, 515, 515, 515, 0, 515, 515, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 478, 478,
+ 502, 502, 503, 503, 503, 503, 503, 503, 503, 503,
+ 503, 503, 503, 503, 503, 503, 504, 504, 504, 504,
+ 504, 504, 504, 504, 504, 504, 504, 504, 504, 504,
+ 505, 505, 505, 505, 505, 505, 505, 505, 505, 505,
+ 506, 506, 506, 506, 506, 506, 506, 506, 506, 506,
+
+ 507, 507, 507, 507, 508, 0, 0, 508, 508, 508,
+ 508, 508, 508, 508, 508, 508, 508, 510, 510, 510,
+ 510, 510, 510, 510, 510, 510, 510, 510, 510, 510,
+ 510, 512, 512, 512, 512, 513, 513, 513, 513, 513,
+ 513, 0, 513, 513, 513, 513, 513, 513, 514, 514,
+ 514, 514, 514, 514, 514, 514, 514, 514, 514, 514,
+ 514, 516, 516, 516, 516, 516, 516, 516, 516, 516,
+ 516, 516, 516, 516, 516, 518, 518, 518, 518, 519,
+ 519, 519, 519, 519, 519, 0, 519, 519, 519, 519,
+ 519, 519, 520, 0, 0, 520, 520, 520, 520, 520,
+
+ 520, 520, 520, 520, 520, 521, 0, 0, 521, 521,
+ 521, 521, 521, 521, 521, 521, 521, 521, 522, 522,
+ 522, 522, 522, 522, 522, 522, 522, 522, 522, 522,
+ 522, 523, 523, 523, 523, 523, 523, 523, 523, 523,
+ 523, 523, 523, 523, 525, 525, 0, 525, 525, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 528, 528, 528, 528, 529, 529, 529, 529,
+ 529, 529, 529, 529, 529, 529, 529, 529, 529, 530,
+ 0, 0, 530, 530, 530, 530, 530, 530, 530, 530,
+ 530, 530, 531, 531, 531, 531, 531, 531, 531, 531,
+
+ 531, 531, 531, 531, 531, 532, 532, 532, 532, 532,
+ 0, 0, 532, 532, 532, 532, 532, 532, 533, 533,
+ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
+ 533, 534, 534, 534, 534, 534, 534, 534, 534, 534,
+ 534, 534, 534, 534, 535, 535, 0, 535, 535, 536,
+ 536, 536, 536, 536, 536, 536, 536, 536, 536, 536,
+ 536, 536, 538, 538, 538, 538, 539, 539, 0, 539,
+ 539, 539, 539, 539, 539, 539, 539, 539, 539, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 541, 541, 0, 541, 541, 541, 541, 541,
+
+ 541, 541, 541, 541, 541, 542, 542, 542, 542, 542,
+ 542, 542, 542, 542, 542, 542, 542, 542, 543, 543,
+ 543, 543, 543, 0, 0, 543, 543, 543, 543, 543,
+ 543, 546, 546, 546, 546, 0, 0, 0, 0, 546,
+ 0, 0, 546, 546, 547, 547, 547, 547, 0, 0,
+ 0, 547, 547, 547, 0, 547, 547, 548, 548, 548,
+ 548, 548, 548, 548, 548, 548, 548, 549, 549, 549,
+ 549, 549, 549, 549, 549, 549, 549, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
- 478, 478, 478, 478, 478, 478, 478, 478, 478
+ 478, 478, 478, 478, 478, 478, 478, 478, 478, 478,
+ 478, 478, 478
} ;
#line 1 "<stdin>"
@@ -878,7 +1813,7 @@ YY_DECL
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 2399 );
+ while ( yy_base[yy_current_state] != 6578 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -1250,7 +2185,7 @@ YY_RULE_SETUP
#line 110 "<stdin>"
ECHO;
YY_BREAK
-#line 1761 "<stdout>"
+#line 2738 "<stdout>"
case YY_STATE_EOF(INITIAL):
case YY_END_OF_BUFFER:
case YY_STATE_EOF(mediaquery):
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
index 42d2e90..dd14fb9 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.cpp
@@ -333,6 +333,9 @@ Storage* DOMWindow::sessionStorage() const
Storage* DOMWindow::localStorage() const
{
+ if (m_localStorage)
+ return m_localStorage.get();
+
Document* document = this->document();
if (!document)
return 0;
diff --git a/src/3rdparty/webkit/WebCore/page/DOMWindow.h b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
index 0277441..e7fab18 100644
--- a/src/3rdparty/webkit/WebCore/page/DOMWindow.h
+++ b/src/3rdparty/webkit/WebCore/page/DOMWindow.h
@@ -265,7 +265,7 @@ namespace WebCore {
Location* optionalLocation() const { return m_location.get(); }
#if ENABLE(DOM_STORAGE)
Storage* optionalSessionStorage() const { return m_sessionStorage.get(); }
- Storage* optionalLocalStorage() const { return m_sessionStorage.get(); }
+ Storage* optionalLocalStorage() const { return m_localStorage.get(); }
#endif
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
DOMApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); }
diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
index d4ab59f..cea255e 100644
--- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp
@@ -35,6 +35,8 @@
#include "StillImageQt.h"
#include <QBuffer>
+#include <QColor>
+#include <QImage>
#include <QImageWriter>
#include <QPainter>
#include <QPixmap>
@@ -79,10 +81,57 @@ Image* ImageBuffer::image() const
return m_image.get();
}
-PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect&) const
+PassRefPtr<ImageData> ImageBuffer::getImageData(const IntRect& rect) const
{
- notImplemented();
- return 0;
+ PassRefPtr<ImageData> result = ImageData::create(rect.width(), rect.height());
+ unsigned char* data = result->data()->data();
+
+ if (rect.x() < 0 || rect.y() < 0 || (rect.x() + rect.width()) > m_size.width() || (rect.y() + rect.height()) > m_size.height())
+ memset(data, 0, result->data()->length());
+
+ int originx = rect.x();
+ int destx = 0;
+ if (originx < 0) {
+ destx = -originx;
+ originx = 0;
+ }
+ int endx = rect.x() + rect.width();
+ if (endx > m_size.width())
+ endx = m_size.width();
+ int numColumns = endx - originx;
+
+ int originy = rect.y();
+ int desty = 0;
+ if (originy < 0) {
+ desty = -originy;
+ originy = 0;
+ }
+ int endy = rect.y() + rect.height();
+ if (endy > m_size.height())
+ endy = m_size.height();
+ int numRows = endy - originy;
+
+ QImage image = m_data.m_pixmap.toImage();
+ if (image.format() != QImage::Format_ARGB32)
+ image = image.convertToFormat(QImage::Format_ARGB32);
+ ASSERT(image);
+
+ unsigned destBytesPerRow = 4 * rect.width();
+ unsigned char* destRows = data + desty * destBytesPerRow + destx * 4;
+ for (int y = 0; y < numRows; ++y) {
+ for (int x = 0; x < numColumns; x++) {
+ QRgb value = image.pixel(x + originx, y + originy);
+ int basex = x * 4;
+
+ destRows[basex] = qRed(value);
+ destRows[basex + 1] = qGreen(value);
+ destRows[basex + 2] = qBlue(value);
+ destRows[basex + 3] = qAlpha(value);
+ }
+ destRows += destBytesPerRow;
+ }
+
+ return result;
}
void ImageBuffer::putImageData(ImageData*, const IntRect&, const IntPoint&)
diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
index 9308878..c8f6ad5 100644
--- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp
@@ -41,6 +41,22 @@ QNetworkRequest ResourceRequest::toNetworkRequest() const
request.setRawHeader(name, value);
}
+ switch (cachePolicy()) {
+ case ReloadIgnoringCacheData:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);
+ break;
+ case ReturnCacheDataElseLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ break;
+ case ReturnCacheDataDontLoad:
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysCache);
+ break;
+ case UseProtocolCachePolicy:
+ // QNetworkRequest::PreferNetwork
+ default:
+ break;
+ }
+
return request;
}
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index d85e880..fe74fac 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -106,6 +106,8 @@ private slots:
void textSelection();
void textEditing();
+ void requestCache();
+
private:
@@ -989,6 +991,32 @@ void tst_QWebPage::textEditing()
delete page;
}
+void tst_QWebPage::requestCache()
+{
+ TestPage page;
+ QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me</a>"));
+ QTRY_COMPARE(loadSpy.count(), 1);
+ QTRY_COMPARE(page.navigations.count(), 1);
+
+ page.mainFrame()->setUrl(QString("data:text/html,<a href=\"data:text/html,Reached\" target=\"_blank\">Click me2</a>"));
+ QTRY_COMPARE(loadSpy.count(), 2);
+ QTRY_COMPARE(page.navigations.count(), 2);
+
+ page.triggerAction(QWebPage::Stop);
+ QVERIFY(page.history()->canGoBack());
+ page.triggerAction(QWebPage::Back);
+
+ QTRY_COMPARE(loadSpy.count(), 3);
+ QTRY_COMPARE(page.navigations.count(), 3);
+ QCOMPARE(page.navigations.at(0).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(1).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferNetwork);
+ QCOMPARE(page.navigations.at(2).request.attribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork).toInt(),
+ (int)QNetworkRequest::PreferCache);
+}
QTEST_MAIN(tst_QWebPage)
#include "tst_qwebpage.moc"
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index 4445e3c..fa44531 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -316,7 +316,7 @@ void QInotifyFileSystemWatcherEngine::readFromInotify()
// qDebug() << "QInotifyFileSystemWatcherEngine::readFromInotify";
int buffSize = 0;
- ioctl(inotifyFd, FIONREAD, &buffSize);
+ ioctl(inotifyFd, FIONREAD, (char *) &buffSize);
QVarLengthArray<char, 4096> buffer(buffSize);
buffSize = read(inotifyFd, buffer.data(), buffSize);
const char *at = buffer.data();
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index 37173c8..33d4a47 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -850,10 +850,10 @@ bool QProcessPrivate::processStarted()
qint64 QProcessPrivate::bytesAvailableFromStdout() const
{
- size_t nbytes = 0;
+ int nbytes = 0;
qint64 available = 0;
if (::ioctl(stdoutChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QPROCESS_DEBUG)
qDebug("QProcessPrivate::bytesAvailableFromStdout() == %lld", available);
#endif
@@ -862,10 +862,10 @@ qint64 QProcessPrivate::bytesAvailableFromStdout() const
qint64 QProcessPrivate::bytesAvailableFromStderr() const
{
- size_t nbytes = 0;
+ int nbytes = 0;
qint64 available = 0;
if (::ioctl(stderrChannel.pipe[0], FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QPROCESS_DEBUG)
qDebug("QProcessPrivate::bytesAvailableFromStderr() == %lld", available);
#endif
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 62b4ed5..484e79a 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -2330,6 +2330,10 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
\o \c{HKEY_LOCAL_MACHINE\Software\MySoft}
\endlist
+ \note On Windows, for 32-bit programs running in WOW64 mode, settings are
+ stored in the following registry path:
+ \c{HKEY_LOCAL_MACHINE\Software\WOW6432node}.
+
If the file format is IniFormat, the following files are
used on Unix and Mac OS X:
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index 3cfce83..6a7b067 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -268,11 +268,13 @@ static int _gettemp(char *path, int *doopen, int domkdir, int slen)
/*NOTREACHED*/
}
+#ifndef Q_WS_WIN
static int qt_mkstemps(char *path, int slen)
{
int fd = 0;
return (_gettemp(path, &fd, 0, slen) ? fd : -1);
}
+#endif
//************* QTemporaryFileEngine
class QTemporaryFileEngine : public QFSFileEngine
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index 5487703..fa472e6 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -264,6 +264,7 @@ public:
GrabKeyboard = 188,
UngrabKeyboard = 189,
CocoaRequestModal = 190, // Internal for requesting an application modal Cocoa Window
+ MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear
// 512 reserved for Qt Jambi's MetaCall event
// 513 reserved for Qt Jambi's DeleteOnMainThread event
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 9c637ac..375d672 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -579,7 +579,7 @@ const QString::Null QString::null = { };
'\\0' character for a null string (\e not a null pointer), and
QString() compares equal to QString(""). We recommend that you
always use the isEmpty() function and avoid isNull().
-
+
\section1 Argument Formats
In member functions where an argument \e format can be specified
@@ -1433,7 +1433,7 @@ QString &QString::append(QChar ch)
truncated at the specified \a position.
\snippet doc/src/snippets/qstring/main.cpp 37
-
+
\sa insert(), replace()
*/
QString &QString::remove(int pos, int len)
@@ -1552,7 +1552,7 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
return *this;
if (pos + len > d->size)
len = d->size - pos;
-
+
uint index = pos;
replace_helper(&index, 1, len, unicode, size);
return *this;
@@ -1561,15 +1561,13 @@ QString &QString::replace(int pos, int len, const QChar *unicode, int size)
/*!
\fn QString &QString::replace(int position, int n, QChar after)
\overload replace()
-
+
Replaces \a n characters beginning at index \a position with the
character \a after and returns a reference to this string.
*/
QString &QString::replace(int pos, int len, QChar after)
{
- uint index = pos;
- replace_helper(&index, 1, len, &after, 1);
- return *this;
+ return replace(pos, len, &after, 1);
}
/*!
@@ -1602,7 +1600,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
{
if (blen == alen) {
detach();
- for (int i = 0; i < nIndices; ++i)
+ for (int i = 0; i < nIndices; ++i)
memcpy(d->data + indices[i], after, alen * sizeof(QChar));
} else if (alen < blen) {
detach();
@@ -1633,7 +1631,7 @@ void QString::replace_helper(uint *indices, int nIndices, int blen, const QChar
int newLen = d->size + adjust;
int moveend = d->size;
resize(newLen);
-
+
while (nIndices) {
--nIndices;
int movestart = indices[nIndices] + blen;
@@ -1685,7 +1683,7 @@ QString &QString::replace(const QChar *before, int blen,
memcpy(copy, before, blen*sizeof(QChar));
b = copy;
}
-
+
QStringMatcher matcher(b, blen, cs);
int index = 0;
@@ -1712,7 +1710,7 @@ QString &QString::replace(const QChar *before, int blen,
// index has to be adjusted in case we get back into the loop above.
index += pos*(alen-blen);
}
-
+
if (a != after)
::free((QChar *)a);
if (b != before)
@@ -2250,7 +2248,7 @@ int QString::indexOf(const QLatin1String &str, int from, Qt::CaseSensitivity cs)
QVarLengthArray<ushort> s(len);
for (int i = 0; i < len; ++i)
s[i] = str.latin1()[i];
-
+
return qFindString(unicode(), length(), from, (const QChar *)s.data(), len, cs);
}
@@ -2346,7 +2344,7 @@ static int lastIndexOfHelper(const ushort *haystack, int from, const ushort *nee
/*
See indexOf() for explanations.
*/
-
+
const ushort *end = haystack;
haystack += from;
const int sl_minus_1 = sl-1;
@@ -2408,7 +2406,7 @@ int QString::lastIndexOf(const QString &str, int from, Qt::CaseSensitivity cs) c
const int sl = str.d->size;
if (sl == 1)
return lastIndexOf(QChar(str.d->data[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -2446,7 +2444,7 @@ int QString::lastIndexOf(const QLatin1String &str, int from, Qt::CaseSensitivity
const int sl = qstrlen(str.latin1());
if (sl == 1)
return lastIndexOf(QLatin1Char(str.latin1()[0]), from, cs);
-
+
const int l = d->size;
if (from < 0)
from += l;
@@ -5995,7 +5993,7 @@ QString QString::normalized(QString::NormalizationForm mode, QChar::UnicodeVersi
}
if (simple)
return *this;
-
+
QString s = *this;
if (version != CURRENT_VERSION) {
for (int i = 0; i < NumNormalizationCorrections; ++i) {
@@ -6207,7 +6205,7 @@ static QString replaceArgEscapes(const QString &s, const ArgEscapeData &d, int f
/*!
Returns a copy of this string with the lowest numbered place marker
replaced by string \a a, i.e., \c %1, \c %2, ..., \c %99.
-
+
\a fieldWidth specifies the minimum amount of space that argument \a
a shall occupy. If \a a requires less space than \a fieldWidth, it
is padded to \a fieldWidth with character \a fillChar. A positive
@@ -6819,7 +6817,7 @@ void QString::updateProperties() const
Appends the given \a ch character onto the end of this string.
*/
-/*!
+/*!
\fn std::string QString::toStdString() const
Returns a std::string object with the data contained in this
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 6bea03b..3fd52ee 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -98,6 +98,8 @@ struct QVectorTypedData
T array[1];
};
+class QRegion;
+
template <typename T>
class QVector
{
diff --git a/src/gui/accessible/qaccessiblewidget.cpp b/src/gui/accessible/qaccessiblewidget.cpp
index 4b2b2ab..753ac57 100644
--- a/src/gui/accessible/qaccessiblewidget.cpp
+++ b/src/gui/accessible/qaccessiblewidget.cpp
@@ -131,9 +131,16 @@ QString Q_GUI_EXPORT qt_accHotKey(const QString &text)
int fa = 0;
QChar ac;
while ((fa = text.indexOf(QLatin1Char('&'), fa)) != -1) {
- if (fa == text.length() - 1 || text.at(fa+1) != QLatin1Char('&')) {
- ac = text.at(fa+1);
- break;
+ ++fa;
+ if (fa < text.length()) {
+ // ignore "&&"
+ if (text.at(fa) == QLatin1Char('&')) {
+ ++fa;
+ continue;
+ } else {
+ ac = text.at(fa);
+ break;
+ }
}
}
if (ac.isNull())
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index 5131271..f70669c 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -957,25 +957,29 @@ void QFileDialog::setNameFilters(const QStringList &filters)
{
Q_D(QFileDialog);
d->defaultFileTypes = (filters == QStringList(QFileDialog::tr("All Files (*)")));
- d->nameFilters = filters;
+ QStringList cleanedFilters;
+ for (int i = 0; i < filters.count(); ++i) {
+ cleanedFilters << filters[i].simplified();
+ }
+ d->nameFilters = cleanedFilters;
if (d->nativeDialogInUse){
- d->setNameFilters_sys(filters);
+ d->setNameFilters_sys(cleanedFilters);
return;
}
d->qFileDialogUi->fileTypeCombo->clear();
- if (filters.isEmpty())
+ if (cleanedFilters.isEmpty())
return;
if (testOption(HideNameFilterDetails)) {
QStringList strippedFilters;
- for (int i = 0; i < filters.count(); ++i) {
- strippedFilters.append(filters[i].mid(0, filters[i].indexOf(QLatin1String(" ("))));
+ for (int i = 0; i < cleanedFilters.count(); ++i) {
+ strippedFilters.append(cleanedFilters[i].mid(0, cleanedFilters[i].indexOf(QLatin1String(" ("))));
}
d->qFileDialogUi->fileTypeCombo->addItems(strippedFilters);
} else {
- d->qFileDialogUi->fileTypeCombo->addItems(filters);
+ d->qFileDialogUi->fileTypeCombo->addItems(cleanedFilters);
}
d->_q_useNameFilter(0);
}
@@ -1589,7 +1593,12 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = ExistingFile;
args.options = options;
@@ -1674,7 +1683,12 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = ExistingFiles;
args.options = options;
@@ -1760,7 +1774,12 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
- args.selection = QFileDialogPrivate::initialSelection(dir);
+ //If workingDirectory returned a different path than the initial one,
+ //it means that the initial path was invalid. There is no point to try select a file
+ if (args.directory != QFileInfo(dir).path())
+ args.selection = QString();
+ else
+ args.selection = QFileDialogPrivate::initialSelection(dir);
args.filter = filter;
args.mode = AnyFile;
args.options = options;
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index b63c8ee..78d99e3 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -424,26 +424,27 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex,
/*!
\class QInputDialog
- \brief The QInputDialog class provides a simple convenience dialog to get a single value from the user.
+ \brief The QInputDialog class provides a simple convenience dialog to get a
+ single value from the user.
\ingroup dialogs
\mainclass
- The input value can be a string, a number or an item from a list. A
- label must be set to tell the user what they should enter.
+ The input value can be a string, a number or an item from a list. A label
+ must be set to tell the user what they should enter.
- Four static convenience functions are provided:
- getText(), getInt(), getDouble(), and getItem(). All the
- functions can be used in a similar way, for example:
+ Four static convenience functions are provided: getText(), getInt(),
+ getDouble(), and getItem(). All the functions can be used in a similar way,
+ for example:
\snippet examples/dialogs/standarddialogs/dialog.cpp 3
- The \c ok variable is set to true if the user clicks \gui OK;
- otherwise it is set to false.
+ The \c ok variable is set to true if the user clicks \gui OK; otherwise it
+ is set to false.
\img inputdialogs.png Input Dialogs
- The \l{dialogs/standarddialogs}{Standard Dialogs} example shows
- how to use QInputDialog as well as other built-in Qt dialogs.
+ The \l{dialogs/standarddialogs}{Standard Dialogs} example shows how to use
+ QInputDialog as well as other built-in Qt dialogs.
\sa QMessageBox, {Standard Dialogs Example}
*/
@@ -452,11 +453,13 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex,
\enum QInputDialog::InputMode
\since 4.5
- This enum describes the different modes of input that can be selected for the dialog.
+ This enum describes the different modes of input that can be selected for
+ the dialog.
\value TextInput Used to input text strings.
\value IntInput Used to input integers.
- \value DoubleInput Used to input floating point numbers with double precision accuracy.
+ \value DoubleInput Used to input floating point numbers with double
+ precision accuracy.
\sa inputMode
*/
@@ -487,7 +490,8 @@ QInputDialog::~QInputDialog()
\brief the mode used for input
- This property help determines which widget is used for entering input into the dialog.
+ This property help determines which widget is used for entering input into
+ the dialog.
*/
void QInputDialog::setInputMode(InputMode mode)
{
@@ -1104,15 +1108,18 @@ void QInputDialog::done(int result)
}
/*!
- Static convenience function to get a string from the user. \a
- title is the text which is displayed in the title bar of the
- dialog. \a label is the text which is shown to the user (it should
- say what should be entered). \a text is the default text which is
- placed in the line edit. The \a mode is the echo mode the line
- edit will use. If \a ok is nonnull \e *\a ok will be set to true
- if the user pressed \gui OK and to false if the user pressed
- \gui Cancel. The dialog's parent is \a parent. The dialog will be
- modal and uses the specified widget \a flags.
+ Static convenience function to get a string from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a text is the default text which is placed in the line edit.
+ \a mode is the echo mode the line edit will use.
+
+ If \a ok is nonnull \e *\a ok will be set to true if the user pressed
+ \gui OK and to false if the user pressed \gui Cancel. The dialog's parent
+ is \a parent. The dialog will be modal and uses the specified widget
+ \a flags.
This function returns the text which has been entered in the line
edit. It will not return an empty string.
@@ -1121,11 +1128,11 @@ void QInputDialog::done(int result)
\snippet examples/dialogs/standarddialogs/dialog.cpp 3
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getInteger(), getDouble(), getItem()
+ \sa getInt(), getDouble(), getItem()
*/
QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
@@ -1149,30 +1156,32 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri
}
/*!
- Static convenience function to get an integer input from the
- user. \a title is the text which is displayed in the title bar
- of the dialog. \a label is the text which is shown to the user
- (it should say what should be entered). \a value is the default
- integer which the spinbox will be set to. \a min and \a
- max are the minimum and maximum values the user may choose,
- and \a step is the amount by which the values change as the user
- presses the arrow buttons to increment or decrement the value.
-
- If \a ok is nonnull *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- On success, this function returns the integer which has been
- entered by the user; on failure, it returns the initial \a value.
+ \since 4.5
+
+ Static convenience function to get an integer input from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a value is the default integer which the spinbox will be set to.
+ \a min and \a max are the minimum and maximum values the user may choose.
+ \a step is the amount by which the values change as the user presses the
+ arrow buttons to increment or decrement the value.
+
+ If \a ok is nonnull *\a ok will be set to true if the user pressed \gui OK
+ and to false if the user pressed \gui Cancel. The dialog's parent is
+ \a parent. The dialog will be modal and uses the widget \a flags.
+
+ On success, this function returns the integer which has been entered by the
+ user; on failure, it returns the initial \a value.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 0
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
\sa getText(), getDouble(), getItem()
*/
@@ -1198,32 +1207,32 @@ int QInputDialog::getInt(QWidget *parent, const QString &title, const QString &l
}
/*!
- Static convenience function to get a floating point number from
- the user. \a title is the text which is displayed in the title
- bar of the dialog. \a label is the text which is shown to the user
- (it should say what should be entered). \a value is the default
- floating point number that the line edit will be set to. \a
- min and \a max are the minimum and maximum values the
- user may choose, and \a decimals is the maximum number of decimal
- places the number may have.
-
- If \a ok is nonnull, *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- This function returns the floating point number which has been
- entered by the user.
+ Static convenience function to get a floating point number from the user.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a value is the default floating point number that the line edit will be
+ set to.
+ \a min and \a max are the minimum and maximum values the user may choose.
+ \a decimals is the maximum number of decimal places the number may have.
+
+ If \a ok is nonnull, *\a ok will be set to true if the user pressed \gui OK
+ and to false if the user pressed \gui Cancel. The dialog's parent is
+ \a parent. The dialog will be modal and uses the widget \a flags.
+
+ This function returns the floating point number which has been entered by
+ the user.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 1
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getText(), getInteger(), getItem()
+ \sa getText(), getInt(), getItem()
*/
double QInputDialog::getDouble(QWidget *parent, const QString &title, const QString &label,
@@ -1248,32 +1257,34 @@ double QInputDialog::getDouble(QWidget *parent, const QString &title, const QStr
}
/*!
- Static convenience function to let the user select an item from a
- string list. \a title is the text which is displayed in the title
- bar of the dialog. \a label is the text which is shown to the user (it
- should say what should be entered). \a items is the
- string list which is inserted into the combobox, and \a current is the number
- of the item which should be the current item. If \a editable is true
- the user can enter their own text; if \a editable is false the user
- may only select one of the existing items.
-
- If \a ok is nonnull \e *\a ok will be set to true if the user
- pressed \gui OK and to false if the user pressed \gui Cancel. The
- dialog's parent is \a parent. The dialog will be modal and uses
- the widget \a flags.
-
- This function returns the text of the current item, or if \a
- editable is true, the current text of the combobox.
+ Static convenience function to let the user select an item from a string
+ list.
+
+ \a title is the text which is displayed in the title bar of the dialog.
+ \a label is the text which is shown to the user (it should say what should
+ be entered).
+ \a items is the string list which is inserted into the combobox.
+ \a current is the number of the item which should be the current item.
+
+ If \a editable is true the user can enter their own text; otherwise the
+ user may only select one of the existing items.
+
+ If \a ok is nonnull \e *\a ok will be set to true if the user pressed
+ \gui OK and to false if the user pressed \gui Cancel. The dialog's parent
+ is \a parent. The dialog will be modal and uses the widget \a flags.
+
+ This function returns the text of the current item, or if \a editable is
+ true, the current text of the combobox.
Use this static function like this:
\snippet examples/dialogs/standarddialogs/dialog.cpp 2
- \warning Do not delete \a parent during the execution of the dialog.
- If you want to do this, you should create the dialog
- yourself using one of the QInputDialog constructors.
+ \warning Do not delete \a parent during the execution of the dialog. If you
+ want to do this, you should create the dialog yourself using one of the
+ QInputDialog constructors.
- \sa getText(), getInteger(), getDouble()
+ \sa getText(), getInt(), getDouble()
*/
QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label,
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index b520a3f..d1b8393 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -4223,9 +4223,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect
*/
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
{
- if (!d_ptr->hasTransform)
- return QPolygonF(rect.translated(d_ptr->pos));
- return transform().map(rect.translated(d_ptr->pos));
+ QPolygonF p = !d_ptr->hasTransform ? rect : transform().map(rect);
+ p.translate(d_ptr->pos);
+ return p;
}
/*!
@@ -4292,8 +4292,8 @@ QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rec
*/
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
{
- QRectF r = rect.translated(d_ptr->pos.x(), d_ptr->pos.y());
- return !d_ptr->hasTransform ? r : transform().mapRect(r);
+ QRectF r = !d_ptr->hasTransform ? rect : transform().mapRect(rect);
+ return r.translated(d_ptr->pos);
}
/*!
@@ -4424,9 +4424,9 @@ QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &p
*/
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
{
- QPolygonF p = polygon;
+ QPolygonF p = !d_ptr->hasTransform ? polygon : transform().map(polygon);
p.translate(d_ptr->pos);
- return d_ptr->hasTransform ? transform().map(p) : p;
+ return p;
}
/*!
@@ -4468,7 +4468,10 @@ QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterP
*/
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
{
- return d_ptr->parent ? itemTransform(d_ptr->parent).map(path) : mapToScene(path);
+ QTransform x = QTransform::fromTranslate(d_ptr->pos.x(), d_ptr->pos.y());
+ if (d_ptr->hasTransform)
+ x = transform() * x;
+ return x.map(path);
}
/*!
@@ -5697,12 +5700,11 @@ void QGraphicsItem::removeFromIndex()
*/
void QGraphicsItem::prepareGeometryChange()
{
- if (!d_ptr->scene)
- return;
-
- d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper);
- QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
- scenePrivate->removeFromIndex(this);
+ if (d_ptr->scene) {
+ d_ptr->updateHelper(QRectF(), false, /*maybeDirtyClipPath=*/!d_ptr->inSetPosHelper);
+ QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
+ scenePrivate->removeFromIndex(this);
+ }
if (d_ptr->inSetPosHelper)
return;
@@ -8487,6 +8489,7 @@ void QGraphicsSimpleTextItem::setText(const QString &text)
return;
d->text = text;
d->updateBoundingRect();
+ update();
}
/*!
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index 10bcb9a..91431c4 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -1032,9 +1032,21 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc
}
}
- if (!source_rows_remove.isEmpty())
+ if (!source_rows_remove.isEmpty()) {
remove_source_items(m->proxy_rows, m->source_rows,
source_rows_remove, source_parent, Qt::Vertical);
+ QSet<int> source_rows_remove_set = source_rows_remove.toList().toSet();
+ QVector<QModelIndex>::iterator it = m->mapped_children.begin();
+ while (it != m->mapped_children.end()) {
+ const QModelIndex source_child_index = *it;
+ if (source_rows_remove_set.contains(source_child_index.row())) {
+ it = m->mapped_children.erase(it);
+ remove_from_mapping(source_child_index);
+ } else {
+ ++it;
+ }
+ }
+ }
if (!source_rows_resort.isEmpty()) {
// Re-sort the rows
@@ -1569,6 +1581,10 @@ bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent) const
return false;
if (!d->model->hasChildren(source_parent))
return false;
+
+ if (d->model->canFetchMore(source_parent))
+ return true; //we assume we might have children that can be fetched
+
QSortFilterProxyModelPrivate::Mapping *m = d->create_mapping(source_parent).value();
return m->source_rows.count() != 0 && m->source_columns.count() != 0;
}
diff --git a/src/gui/kernel/qcocoapanel_mac.mm b/src/gui/kernel/qcocoapanel_mac.mm
index 95e20af..c69826f 100644
--- a/src/gui/kernel/qcocoapanel_mac.mm
+++ b/src/gui/kernel/qcocoapanel_mac.mm
@@ -49,8 +49,10 @@
#include <QtGui/QWidget>
+QT_FORWARD_DECLARE_CLASS(QWidget);
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
-
+QT_END_NAMESPACE
QT_USE_NAMESPACE
@implementation QT_MANGLE_NAMESPACE(QCocoaPanel)
@@ -108,7 +110,7 @@ QT_USE_NAMESPACE
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
@@ -172,7 +174,7 @@ QT_USE_NAMESPACE
+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask
{
if (styleMask & QtMacCustomizeWindow)
- return [QCocoaWindowCustomThemeFrame class];
+ return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class];
return [super frameViewClassForStyleMask:styleMask];
}
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index bcbd1bf..e84af90 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -630,7 +630,7 @@ extern "C" {
for (NSView *lookView in viewsToLookAt) {
NSPoint tmpPoint = [lookView convertPoint:windowPoint fromView:nil];
for (NSView *view in [lookView subviews]) {
- if (view == mouseView)
+ if (view == mouseView || [view isHidden])
continue;
NSRect frameRect = [view frame];
if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
@@ -649,7 +649,7 @@ extern "C" {
NSPoint tmpPoint = [viewForDescent convertPoint:windowPoint fromView:nil];
// Apply same rule as above wrt z-order.
for (NSView *view in [viewForDescent subviews]) {
- if (NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
+ if (![view isHidden] && NSMouseInRect(tmpPoint, [view frame], [view isFlipped]))
lowerView = view;
}
if (!lowerView) // Low as we can be at this point.
@@ -944,6 +944,27 @@ extern "C" {
}
}
+- (void)viewWillMoveToWindow:(NSWindow *)window
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
+ && (window != [self window])) { // OpenGL Widget
+ // Create a stupid ClearDrawable Event
+ QEvent event(QEvent::MacGLClearDrawable);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+- (void)viewDidMoveToWindow
+{
+ if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
+ // call update paint event
+ qwidgetprivate->needWindowChange = true;
+ QEvent event(QEvent::MacGLWindowChange);
+ qApp->sendEvent(qwidget, &event);
+ }
+}
+
+
// NSTextInput Protocol implementation
- (void) insertText:(id)aString
diff --git a/src/gui/kernel/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm
index 972e477..89f481f 100644
--- a/src/gui/kernel/qcocoawindow_mac.mm
+++ b/src/gui/kernel/qcocoawindow_mac.mm
@@ -53,9 +53,10 @@
#include <QtGui/QWidget>
QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_USE_NAMESPACE
-
+QT_BEGIN_NAMESPACE
extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
+QT_END_NAMESPACE
+QT_USE_NAMESPACE
@implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration))
@@ -130,7 +131,7 @@ extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.
[self retain];
QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- QCocoaView *view = static_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
Qt::MouseButton mouseButton = cocoaButton2QtButton([event buttonNumber]);
// sometimes need to redirect mouse events to the popup.
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 827e098..2c3f7f1 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -465,7 +465,18 @@ Q_GUI_EXPORT OSWindowRef qt_mac_window_for(const QWidget *w)
if (hiview){
OSWindowRef window = qt_mac_window_for(hiview);
if (!window && qt_isGenuineQWidget(hiview)) {
- w->window()->d_func()->createWindow_sys();
+ QWidget *myWindow = w->window();
+ // This is a workaround for NSToolbar. When a widget is hidden
+ // by clicking the toolbar button, Cocoa reparents the widgets
+ // to another window (but Qt doesn't know about it).
+ // When we start showing them, it reparents back,
+ // but at this point it's window is nil, but the window it's being brought
+ // into (the Qt one) is for sure created.
+ // This stops the hierarchy moving under our feet.
+ if (myWindow != w && qt_mac_window_for(qt_mac_nativeview_for(myWindow)))
+ return qt_mac_window_for(qt_mac_nativeview_for(myWindow));
+
+ myWindow->d_func()->createWindow_sys();
// Reget the hiview since the "create window could potentially move the view (I guess).
hiview = qt_mac_nativeview_for(w);
window = qt_mac_window_for(hiview);
@@ -2847,10 +2858,10 @@ void QWidgetPrivate::updateSystemBackground()
void QWidgetPrivate::setCursor_sys(const QCursor &)
{
- Q_Q(QWidget);
#ifndef QT_MAC_USE_COCOA
qt_mac_update_cursor();
#else
+ Q_Q(QWidget);
if (q->testAttribute(Qt::WA_WState_Created)) {
[qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)];
}
@@ -2859,10 +2870,10 @@ void QWidgetPrivate::setCursor_sys(const QCursor &)
void QWidgetPrivate::unsetCursor_sys()
{
- Q_Q(QWidget);
#ifndef QT_MAC_USE_COCOA
qt_mac_update_cursor();
#else
+ Q_Q(QWidget);
if (q->testAttribute(Qt::WA_WState_Created)) {
[qt_mac_window_for(q) invalidateCursorRectsForView:qt_mac_nativeview_for(q)];
}
diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
index ea8af93..76734d4 100644
--- a/src/gui/kernel/qwidget_x11.cpp
+++ b/src/gui/kernel/qwidget_x11.cpp
@@ -1750,8 +1750,8 @@ void QWidgetPrivate::show_sys()
mwmhints.functions &= ~MWM_FUNC_RESIZE;
}
- mwmhints.flags |= MWM_HINTS_DECORATIONS;
if (mwmhints.decorations == MWM_DECOR_ALL) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations = (MWM_DECOR_BORDER
| MWM_DECOR_TITLE
| MWM_DECOR_MENU);
@@ -1760,10 +1760,12 @@ void QWidgetPrivate::show_sys()
}
if (q->windowFlags() & Qt::WindowMinimizeButtonHint) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MINIMIZE;
mwmhints.functions |= MWM_FUNC_MINIMIZE;
}
if (q->windowFlags() & Qt::WindowMaximizeButtonHint) {
+ mwmhints.flags |= MWM_HINTS_DECORATIONS;
mwmhints.decorations |= MWM_DECOR_MAXIMIZE;
mwmhints.functions |= MWM_FUNC_MAXIMIZE;
}
diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp
index e49c4d6..6329135 100644
--- a/src/gui/kernel/qx11embed_x11.cpp
+++ b/src/gui/kernel/qx11embed_x11.cpp
@@ -481,7 +481,7 @@ QX11EmbedWidget::QX11EmbedWidget(QWidget *parent)
| ExposureMask | StructureNotifyMask
| SubstructureNotifyMask | PropertyChangeMask);
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), internalWinId(), ATOM(_XEMBED_INFO),
ATOM(_XEMBED_INFO), 32, PropModeReplace,
(unsigned char*) data, 2);
@@ -1571,7 +1571,7 @@ void QX11EmbedContainer::showEvent(QShowEvent *)
{
Q_D(QX11EmbedContainer);
if (d->client) {
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
PropModeReplace, (unsigned char *) data, 2);
}
@@ -1587,8 +1587,7 @@ void QX11EmbedContainer::hideEvent(QHideEvent *)
{
Q_D(QX11EmbedContainer);
if (d->client) {
- unsigned int data[] = {XEMBED_VERSION, XEMBED_MAPPED};
-
+ long data[] = {XEMBED_VERSION, XEMBED_MAPPED};
XChangeProperty(x11Info().display(), d->client, ATOM(_XEMBED_INFO), ATOM(_XEMBED_INFO), 32,
PropModeReplace, (unsigned char *) data, 2);
}
diff --git a/src/gui/painting/qprintengine_mac.mm b/src/gui/painting/qprintengine_mac.mm
index 7a77e47..b1216b7 100644
--- a/src/gui/painting/qprintengine_mac.mm
+++ b/src/gui/painting/qprintengine_mac.mm
@@ -62,6 +62,10 @@ bool QMacPrintEngine::begin(QPaintDevice *dev)
{
Q_D(QMacPrintEngine);
+ Q_ASSERT(dev && dev->devType() == QInternal::Printer);
+ if (!static_cast<QPrinter *>(dev)->isValid())
+ return false;
+
if (d->state == QPrinter::Idle && !d->isPrintSessionInitialized()) // Need to reinitialize
d->initialize();
@@ -121,24 +125,8 @@ bool QMacPrintEngine::end()
if(d->paintEngine->type() == QPaintEngine::CoreGraphics)
static_cast<QCoreGraphicsPaintEngine*>(d->paintEngine)->d_func()->hd = 0;
d->paintEngine->end();
- if (d->state != QPrinter::Idle) {
-#ifndef QT_MAC_USE_COCOA
- if (d->shouldSuppressStatus()) {
- PMSessionEndPageNoDialog(d->session);
- PMSessionEndDocumentNoDialog(d->session);
- } else {
- PMSessionEndPage(d->session);
- PMSessionEndDocument(d->session);
- }
- PMRelease(d->session);
-#else
- PMSessionEndPageNoDialog(d->session);
- PMSessionEndDocumentNoDialog(d->session);
- [d->printInfo release];
-#endif
- d->printInfo = 0;
- d->session = 0;
- }
+ if (d->state != QPrinter::Idle)
+ d->releaseSession();
d->state = QPrinter::Idle;
return true;
}
@@ -509,6 +497,26 @@ void QMacPrintEnginePrivate::initialize()
}
}
+void QMacPrintEnginePrivate::releaseSession()
+{
+#ifndef QT_MAC_USE_COCOA
+ if (shouldSuppressStatus()) {
+ PMSessionEndPageNoDialog(session);
+ PMSessionEndDocumentNoDialog(session);
+ } else {
+ PMSessionEndPage(session);
+ PMSessionEndDocument(session);
+ }
+ PMRelease(session);
+#else
+ PMSessionEndPageNoDialog(session);
+ PMSessionEndDocumentNoDialog(session);
+ [printInfo release];
+#endif
+ printInfo = 0;
+ session = 0;
+}
+
bool QMacPrintEnginePrivate::newPage_helper()
{
Q_Q(QMacPrintEngine);
@@ -737,6 +745,7 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
d->setPaperSize(QPrinter::PaperSize(value.toInt()));
break;
case PPK_PrinterName: {
+ bool printerNameSet = false;
OSStatus status = noErr;
QCFType<CFArrayRef> printerList;
status = PMServerCreatePrinterList(kPMServerLocal, &printerList);
@@ -747,12 +756,18 @@ void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &va
QString name = QCFString::toQString(PMPrinterGetName(printer));
if (name == value.toString()) {
status = PMSessionSetCurrentPMPrinter(d->session, printer);
+ printerNameSet = true;
break;
}
}
}
if (status != noErr)
qWarning("QMacPrintEngine::setPrinterName: Error setting printer: %ld", long(status));
+ if (!printerNameSet) {
+ qWarning("QMacPrintEngine::setPrinterName: Failed to set printer named '%s'.", qPrintable(value.toString()));
+ d->releaseSession();
+ d->state = QPrinter::Idle;
+ }
break; }
case PPK_SuppressSystemPrintStatus:
d->suppressStatus = value.toBool();
@@ -876,17 +891,12 @@ QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const
ret = r;
break; }
case PPK_PrinterName: {
- CFIndex currIndex;
- PMPrinter unused;
- QCFType<CFArrayRef> printerList;
- OSStatus status = PMSessionCreatePrinterList(d->session, &printerList, &currIndex, &unused);
+ PMPrinter printer;
+ OSStatus status = PMSessionGetCurrentPrinter(d->session, &printer);
if (status != noErr)
- qWarning("QMacPrintEngine::printerName: Problem getting list of printers: %ld", long(status));
- if (currIndex != -1 && printerList && currIndex < CFArrayGetCount(printerList)) {
- const CFStringRef name = static_cast<CFStringRef>(CFArrayGetValueAtIndex(printerList, currIndex));
- if (name)
- ret = QCFString::toQString(name);
- }
+ qWarning("QMacPrintEngine::printerName: Failed getting current PMPrinter: %ld", long(status));
+ if (printer)
+ ret = QCFString::toQString(PMPrinterGetName(printer));
break; }
case PPK_Resolution: {
ret = d->resolution.hRes;
diff --git a/src/gui/painting/qprintengine_mac_p.h b/src/gui/painting/qprintengine_mac_p.h
index 5e18845..bc917e7 100644
--- a/src/gui/painting/qprintengine_mac_p.h
+++ b/src/gui/painting/qprintengine_mac_p.h
@@ -143,6 +143,7 @@ public:
hasCustomPaperSize(false), hasCustomPageMargins(false) {}
~QMacPrintEnginePrivate();
void initialize();
+ void releaseSession();
bool newPage_helper();
void setPaperSize(QPrinter::PaperSize ps);
QPrinter::PaperSize paperSize() const;
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index fa808d0..39e429d 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1715,13 +1715,12 @@ QRect QTransform::mapRect(const QRect &rect) const
return QRect(x, y, w, h);
} else if (t < TxProject) {
// see mapToPolygon for explanations of the algorithm.
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.left(), rect.top(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.left(), rect.top(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.right() + 1, rect.top(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
@@ -1782,13 +1781,12 @@ QRectF QTransform::mapRect(const QRectF &rect) const
}
return QRectF(x, y, w, h);
} else if (t < TxProject) {
- qreal x0 = 0, y0 = 0;
- qreal x, y;
- MAP(rect.x(), rect.y(), x0, y0);
- qreal xmin = x0;
- qreal ymin = y0;
- qreal xmax = x0;
- qreal ymax = y0;
+ qreal x = 0, y = 0;
+ MAP(rect.x(), rect.y(), x, y);
+ qreal xmin = x;
+ qreal ymin = y;
+ qreal xmax = x;
+ qreal ymax = y;
MAP(rect.x() + rect.width(), rect.y(), x, y);
xmin = qMin(xmin, x);
ymin = qMin(ymin, y);
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index bcb0380..d941a24 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -310,10 +310,13 @@ void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
int lineskip = img.bytesPerLine();
int depth = img.depth() >> 3;
-
- const QRect r = rect & QRect(0, 0, img.width(), img.height());
+ const QRect imageRect(0, 0, img.width(), img.height());
+ const QRect r = rect & imageRect & imageRect.translated(-offset);
const QPoint p = rect.topLeft() + offset;
+ if (r.isEmpty())
+ return;
+
const uchar *src;
uchar *dest;
diff --git a/src/gui/styles/gtksymbols.cpp b/src/gui/styles/gtksymbols.cpp
index f7af8f8..acb8437 100644
--- a/src/gui/styles/gtksymbols.cpp
+++ b/src/gui/styles/gtksymbols.cpp
@@ -549,6 +549,7 @@ void QGtkStyleUpdateScheduler::updateTheme()
QPalette newPalette = qApp->style()->standardPalette();
QApplicationPrivate::setSystemPalette(newPalette);
QApplication::setPalette(newPalette);
+ QGtk::initGtkWidgets();
QGtk::applyCustomPaletteHash();
QList<QWidget*> widgets = QApplication::allWidgets();
// Notify all widgets that size metrics might have changed
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index 519fed7..b7fa575 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -977,7 +977,7 @@ void QGtkStyle::drawPrimitive(PrimitiveElement element,
if (widget && widget->testAttribute(Qt::WA_SetPalette) &&
resolve_mask & (1 << QPalette::Base)) // Palette overridden by user
- painter->fillRect(textRect, option->palette.base().color());
+ painter->fillRect(textRect, option->palette.base());
else
gtkPainter.paintFlatBox( gtkEntry, "entry_bg", textRect,
option->state & State_Enabled ? GTK_STATE_NORMAL : GTK_STATE_INSENSITIVE, GTK_SHADOW_NONE, gtkEntry->style);
@@ -2760,10 +2760,13 @@ void QGtkStyle::drawControl(ControlElement element,
if (tab->state & State_Selected)
state = GTK_STATE_NORMAL;
- bool first = tab->position == QStyleOptionTab::Beginning || tab->position == QStyleOptionTab::OnlyOneTab;
- bool last = tab->position == QStyleOptionTab::End || tab->position == QStyleOptionTab::OnlyOneTab;
bool selected = (tab->state & State_Selected);
- if (option->direction == Qt::RightToLeft) {
+ bool first = false, last = false;
+ if (widget) {
+ // This is most accurate and avoids resizing tabs while moving
+ first = tab->rect.left() == widget->rect().left();
+ last = tab->rect.right() == widget->rect().right();
+ } else if (option->direction == Qt::RightToLeft) {
bool tmp = first;
first = last;
last = tmp;
diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm
index c5fee66..6434289 100644
--- a/src/gui/widgets/qcocoamenu_mac.mm
+++ b/src/gui/widgets/qcocoamenu_mac.mm
@@ -55,11 +55,17 @@
QT_FORWARD_DECLARE_CLASS(QAction)
QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QApplication)
+QT_FORWARD_DECLARE_CLASS(QCoreApplication)
+QT_FORWARD_DECLARE_CLASS(QApplicationPrivate)
+QT_FORWARD_DECLARE_CLASS(QKeyEvent)
+QT_FORWARD_DECLARE_CLASS(QEvent)
QT_BEGIN_NAMESPACE
extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); //qapplication.cpp
QT_END_NAMESPACE
+QT_USE_NAMESPACE
+
@implementation QT_MANGLE_NAMESPACE(QCocoaMenu)
- (id)initWithQMenu:(QMenu*)menu
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index ed3e338..7396a9d 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -2889,8 +2889,8 @@ void QMenu::internalDelayedPopup()
int subMenuOffset = style()->pixelMetric(QStyle::PM_SubMenuOverlap, 0, this);
const QRect actionRect(d->actionRect(d->currentAction));
const QSize menuSize(d->activeMenu->sizeHint());
- const QPoint rightPos(mapToGlobal(QPoint(rect().right() + subMenuOffset + 1, actionRect.top())));
- const QPoint leftPos(mapToGlobal(QPoint(rect().left() - subMenuOffset - menuSize.width(), actionRect.top())));
+ const QPoint rightPos(mapToGlobal(QPoint(actionRect.right() + subMenuOffset + 1, actionRect.top())));
+ const QPoint leftPos(mapToGlobal(QPoint(actionRect.left() - subMenuOffset - menuSize.width(), actionRect.top())));
QPoint pos(rightPos);
QMenu *caused = qobject_cast<QMenu*>(d->activeMenu->d_func()->causedPopup.widget);
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 7d970ad..b6e6b6d 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -131,7 +131,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
option->state &= ~QStyle::State_Enabled;
if (isActiveWindow())
option->state |= QStyle::State_Active;
- if (option->rect == d->hoverRect)
+ if (!d->dragInProgress && option->rect == d->hoverRect)
option->state |= QStyle::State_MouseOver;
option->shape = d->shape;
option->text = tab.text;
@@ -454,9 +454,6 @@ void QTabBarPrivate::layoutTabs()
maxExtent = maxWidth;
}
- if (pressedIndex != -1 && movable)
- grabCache(0, tabList.count(), true);
-
Q_ASSERT(tabChainIndex == tabChain.count() - 1); // add an assert just to make sure.
// Mirror our front item.
tabChain[tabChainIndex].init();
@@ -1484,6 +1481,8 @@ void QTabBar::paintEvent(QPaintEvent *)
bool vertical = verticalTabs(d->shape);
QStyleOptionTab cutTab;
selected = d->currentIndex;
+ if (d->dragInProgress)
+ selected = d->pressedIndex;
for (int i = 0; i < d->tabList.count(); ++i)
optTabBase.tabBarRect |= tabRect(i);
@@ -1522,11 +1521,7 @@ void QTabBar::paintEvent(QPaintEvent *)
if (i == selected)
continue;
- if (!d->tabList[i].animatingCache.isNull() && d->paintWithOffsets) {
- p.drawPixmap(tab.rect, d->tabList[i].animatingCache);
- } else {
- p.drawControl(QStyle::CE_TabBarTab, tab);
- }
+ p.drawControl(QStyle::CE_TabBarTab, tab);
}
// Draw the selected tab last to get it "on top"
@@ -1539,7 +1534,11 @@ void QTabBar::paintEvent(QPaintEvent *)
else
tab.rect.moveLeft(tab.rect.x() + d->tabList[selected].dragOffset);
}
- p.drawControl(QStyle::CE_TabBarTab, tab);
+ if (!d->dragInProgress)
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ else
+ d->movingTab->setGeometry(tab.rect);
+
}
// Only draw the tear indicator if necessary. Most of the time we don't need too.
@@ -1680,6 +1679,7 @@ void QTabBarPrivate::_q_moveTab(int offset)
if (!validIndex(index))
return;
tabList[index].dragOffset = offset;
+ layoutTab(index); // Make buttons follow tab
q->update();
}
}
@@ -1727,8 +1727,7 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (!d->dragInProgress && d->pressedIndex != -1) {
if ((event->pos() - d->dragStartPosition).manhattanLength() > QApplication::startDragDistance()) {
d->dragInProgress = true;
- if (d->animations.isEmpty())
- d->grabCache(0, d->tabList.count(), false);
+ d->setupMovableTab();
}
}
@@ -1773,7 +1772,6 @@ void QTabBar::mouseMoveEvent(QMouseEvent *event)
if (dragDistance > needsToBeOver)
d->slide(i + offset, d->pressedIndex);
}
-
}
// Buttons needs to follow the dragged tab
d->layoutTab(d->pressedIndex);
@@ -1801,32 +1799,41 @@ void QTabBarPrivate::_q_moveTabFinished()
}
}
-void QTabBarPrivate::grabCache(int start, int end, bool unhide)
+void QTabBarPrivate::setupMovableTab()
{
Q_Q(QTabBar);
- paintWithOffsets = false;
- bool showButtonsAgain = rightB->isVisible();
- rightB->hide();
- leftB->hide();
-
- QWidget *topLevel = q->window();
- QPoint topLevelOffset(q->mapTo(topLevel, QPoint()));
- for (int i = start; i < end; ++i) {
- QRect tabRect = q->tabRect(i);
- tabRect.translate(topLevelOffset);
- if (unhide) {
- tabList[i].unHideWidgets();
- layoutWidgets(i);
- }
- tabList[i].animatingCache = QPixmap::grabWidget(topLevel, tabRect);
- if (i != pressedIndex)
- tabList[i].hideWidgets();
- }
- if (showButtonsAgain) {
- rightB->show();
- leftB->show();
- }
- paintWithOffsets = true;
+ if (!movingTab)
+ movingTab = new QWidget(q);
+
+ QRect grabRect = q->tabRect(pressedIndex);
+
+ QPixmap grabImage(grabRect.size());
+ grabImage.fill(Qt::transparent);
+ QStylePainter p(&grabImage, q);
+
+ QStyleOptionTabV3 tab;
+ q->initStyleOption(&tab, pressedIndex);
+ tab.rect.moveTopLeft(QPoint(0, 0));
+ p.drawControl(QStyle::CE_TabBarTab, tab);
+ p.end();
+
+ QPalette pal;
+ pal.setBrush(QPalette::All, QPalette::Window, grabImage);
+ movingTab->setPalette(pal);
+ movingTab->setGeometry(grabRect);
+ movingTab->setAutoFillBackground(true);
+ movingTab->raise();
+
+ // Re-arrange widget order to avoid overlaps
+ if (tabList[pressedIndex].leftWidget)
+ tabList[pressedIndex].leftWidget->raise();
+ if (tabList[pressedIndex].rightWidget)
+ tabList[pressedIndex].rightWidget->raise();
+ if (leftB)
+ leftB->raise();
+ if (rightB)
+ rightB->raise();
+ movingTab->setVisible(true);
}
void QTabBarPrivate::_q_moveTabFinished(int index)
@@ -1834,10 +1841,9 @@ void QTabBarPrivate::_q_moveTabFinished(int index)
Q_Q(QTabBar);
bool cleanup = (pressedIndex == index) || (pressedIndex == -1) || !validIndex(index);
if (animations.isEmpty() && cleanup) {
+ movingTab->setVisible(false); // We might not get a mouse release
for (int i = 0; i < tabList.count(); ++i) {
tabList[i].dragOffset = 0;
- tabList[i].unHideWidgets();
- tabList[i].animatingCache = QPixmap();
}
if (pressedIndex != -1 && movable) {
pressedIndex = -1;
@@ -1881,6 +1887,7 @@ void QTabBar::mouseReleaseEvent(QMouseEvent *event)
d->_q_moveTabFinished(d->pressedIndex);
}
d->dragInProgress = false;
+ d->movingTab->setVisible(false);
d->dragStartPosition = QPoint();
}
@@ -2203,19 +2210,16 @@ void QTabBar::setTabButton(int index, ButtonPosition position, QWidget *widget)
widget->setParent(this);
// make sure our left and right widgets stay on top
widget->lower();
+ widget->show();
}
if (position == LeftSide) {
if (d->tabList[index].leftWidget)
d->tabList[index].leftWidget->hide();
d->tabList[index].leftWidget = widget;
- if(!d->tabList[index].hidLeft && widget)
- widget->show();
} else {
if (d->tabList[index].rightWidget)
d->tabList[index].rightWidget->hide();
d->tabList[index].rightWidget = widget;
- if(!d->tabList[index].hidRight && widget)
- widget->show();
}
d->layoutTabs();
update();
diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h
index a117aa3..cb1a15b 100644
--- a/src/gui/widgets/qtabbar_p.h
+++ b/src/gui/widgets/qtabbar_p.h
@@ -70,7 +70,6 @@
QT_BEGIN_NAMESPACE
-
class QTabBarPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QTabBar)
@@ -78,7 +77,7 @@ public:
QTabBarPrivate()
:currentIndex(-1), pressedIndex(-1),
shape(QTabBar::RoundedNorth),
- layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false) {}
+ layoutDirty(false), drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), movingTab(0) {}
int currentIndex;
int pressedIndex;
@@ -98,8 +97,6 @@ public:
, lastTab(-1)
, timeLine(0)
, dragOffset(0)
- , hidLeft(false)
- , hidRight(false)
{}
bool enabled;
int shortcutId;
@@ -123,9 +120,6 @@ public:
QTimeLine *timeLine;
int dragOffset;
- QPixmap animatingCache;
- bool hidLeft;
- bool hidRight;
void makeTimeLine(QWidget *q) {
if (timeLine)
@@ -135,27 +129,6 @@ public:
q->connect(timeLine, SIGNAL(finished()), q, SLOT(_q_moveTabFinished()));
}
- void hideWidgets() {
- if (!hidRight && rightWidget) {
- hidRight = rightWidget->isVisible();
- rightWidget->hide();
- }
-
- if (!hidLeft && leftWidget) {
- hidLeft = leftWidget->isVisible();
- leftWidget->hide();
- }
- }
-
- void unHideWidgets() {
- if (leftWidget && hidLeft)
- leftWidget->show();
- hidLeft = false;
- if (rightWidget && hidRight)
- rightWidget->show();
- hidRight = false;
- }
-
};
QList<Tab> tabList;
QHash<QTimeLine*, int> animations;
@@ -184,12 +157,12 @@ public:
void _q_moveTabFinished(int offset);
QRect hoverRect;
- void grabCache(int start, int end, bool unhide);
void refresh();
void layoutTabs();
void layoutWidgets(int index = -1);
void layoutTab(int index);
void updateMacBorderMetrics();
+ void setupMovableTab();
void makeVisible(int index);
QSize iconSize;
@@ -206,6 +179,8 @@ public:
bool dragInProgress;
bool documentMode;
+ QWidget *movingTab;
+
// shared by tabwidget and qtabbar
static void initStyleBaseOption(QStyleOptionTabBarBaseV2 *optTabBase, QTabBar *tabbar, QSize size)
{
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 910e30a..f9750f2 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1263,7 +1263,7 @@ void QAbstractSocket::connectToHostImplementation(const QString &hostName, quint
(int) openMode);
#endif
- if (d->state == ConnectedState || d->state == ConnectingState) {
+ if (d->state == ConnectedState || d->state == ConnectingState || d->state == ClosingState) {
qWarning("QAbstractSocket::connectToHost() called when already connecting/connected to \"%s\"", qPrintable(hostName));
return;
}
@@ -2279,7 +2279,7 @@ void QAbstractSocket::disconnectFromHostImplementation()
emit delayedCloseFinished(); // compat signal
#endif
// only emit disconnected if we were connected before
- if (previousState == ConnectedState || ClosingState)
+ if (previousState == ConnectedState || previousState == ClosingState)
emit disconnected();
d->localPort = 0;
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 73f6f84..cc372a6 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -506,26 +506,11 @@ int QNativeSocketEnginePrivate::nativeAccept()
qint64 QNativeSocketEnginePrivate::nativeBytesAvailable() const
{
- /*
- Apparently, there is not consistency among different operating
- systems on how to use FIONREAD.
-
- FreeBSD, Linux and Solaris all expect the 3rd argument to
- ioctl() to be an int, which is normally 32-bit even on 64-bit
- machines.
-
- IRIX, on the other hand, expects a size_t, which is 64-bit on
- 64-bit machines.
-
- So, the solution is to use size_t initialized to zero to make
- sure all bits are set to zero, preventing underflow with the
- FreeBSD/Linux/Solaris ioctls.
- */
- size_t nbytes = 0;
+ int nbytes = 0;
// gives shorter than true amounts on Unix domain sockets.
qint64 available = 0;
if (::ioctl(socketDescriptor, FIONREAD, (char *) &nbytes) >= 0)
- available = (qint64) *((int *) &nbytes);
+ available = (qint64) nbytes;
#if defined (QNATIVESOCKETENGINE_DEBUG)
qDebug("QNativeSocketEnginePrivate::nativeBytesAvailable() == %lli", available);
diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro
index 48d7caf..78aaddb 100644
--- a/src/opengl/opengl.pro
+++ b/src/opengl/opengl.pro
@@ -25,18 +25,16 @@ HEADERS += qgl.h \
qglcolormap.h \
qglpixelbuffer.h \
qglframebufferobject.h \
- qglpixmapfilter_p.h
SOURCES += qgl.cpp \
qglcolormap.cpp \
qglpixelbuffer.cpp \
qglframebufferobject.cpp \
qglextensions.cpp \
- qglpixmapfilter.cpp
!contains(QT_CONFIG, opengles2) {
- HEADERS += qpaintengine_opengl_p.h
- SOURCES += qpaintengine_opengl.cpp
+ HEADERS += qpaintengine_opengl_p.h qglpixmapfilter_p.h
+ SOURCES += qpaintengine_opengl.cpp qglpixmapfilter.cpp
}
contains(QT_CONFIG, opengles2) {
@@ -130,6 +128,10 @@ wince*: {
contains(QT_CONFIG,opengles1cl) {
QMAKE_LIBS += "libGLES_CL.lib"
}
+ contains(QT_CONFIG,opengles2) {
+ QMAKE_LIBS += "libGLESv2.lib"
+ }
+
} else {
QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
}
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 6d75d02..b4a0e5c 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -3234,6 +3234,10 @@ bool QGLWidget::event(QEvent *e)
update();
}
return true;
+# if defined(QT_MAC_USE_COCOA)
+ } else if (e->type() == QEvent::MacGLClearDrawable) {
+ d->glcx->d_ptr->clearDrawable();
+# endif
}
#endif
diff --git a/src/opengl/qgl_mac.mm b/src/opengl/qgl_mac.mm
index 314c659..1319396 100644
--- a/src/opengl/qgl_mac.mm
+++ b/src/opengl/qgl_mac.mm
@@ -87,29 +87,6 @@ QT_FORWARD_DECLARE_CLASS(QWidget)
QT_FORWARD_DECLARE_CLASS(QWidgetPrivate)
QT_FORWARD_DECLARE_CLASS(QGLWidgetPrivate)
-@interface QT_MANGLE_NAMESPACE(QCocoaOpenGLView) : QT_MANGLE_NAMESPACE(QCocoaView)
-{
-}
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
-@end
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaOpenGLView)
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate
-{
- self = [super initWithQWidget:widget widgetPrivate:widgetprivate];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(_surfaceNeedsUpdate:)
- name:NSViewGlobalFrameDidChangeNotification
- object:self];
- return self;
-}
-
-- (void) _surfaceNeedsUpdate:(NSNotification*)notification
-{
- Q_UNUSED(notification);
- static_cast<QGLWidgetPrivate *>(qwidgetprivate)->glcx->updatePaintDevice();
-}
-@end
QT_BEGIN_NAMESPACE
void *qt_current_nsopengl_context()
@@ -435,6 +412,11 @@ void *QGLContextPrivate::tryFormat(const QGLFormat &format)
#endif
}
+void QGLContextPrivate::clearDrawable()
+{
+ [static_cast<NSOpenGLContext *>(cx) clearDrawable];
+}
+
/*!
\bold{Mac OS X only:} This virtual function tries to find a visual that
matches the format, reducing the demands if the original request
@@ -647,7 +629,7 @@ void QGLContext::updatePaintDevice()
// ideally we would use QWidget::isVisible(), but we get "invalid drawable" errors
if (![(NSWindow *)qt_mac_window_for(w) isVisible])
return;
- if ([static_cast<NSOpenGLContext *>(d->cx) view] != view)
+ if ([static_cast<NSOpenGLContext *>(d->cx) view] != view && ![view isHidden])
[static_cast<NSOpenGLContext *>(d->cx) setView:view];
} else if (d->paintDevice->devType() == QInternal::Pixmap) {
const QPixmap *pm = static_cast<const QPixmap *>(d->paintDevice);
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index b8bbeaf..16aaa96 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -234,6 +234,7 @@ public:
#if defined(Q_WS_MAC)
bool update;
void *tryFormat(const QGLFormat &format);
+ void clearDrawable();
#endif
QGLFormat glFormat;
QGLFormat reqFormat;
diff --git a/src/scripttools/debugging/qscriptbreakpointswidget.cpp b/src/scripttools/debugging/qscriptbreakpointswidget.cpp
index aea1fe7..efb3047 100644
--- a/src/scripttools/debugging/qscriptbreakpointswidget.cpp
+++ b/src/scripttools/debugging/qscriptbreakpointswidget.cpp
@@ -225,7 +225,6 @@ public:
bool eventFilter(QObject *editor, QEvent *event)
{
-#if QT_VERSION >= 0x040500
if (QLineEdit *le = qobject_cast<QLineEdit*>(editor)) {
if (event->type() == QEvent::KeyPress) {
int key = static_cast<QKeyEvent*>(event)->key();
@@ -237,21 +236,18 @@ public:
}
}
}
-#endif
return QStyledItemDelegate::eventFilter(editor, event);
}
void setModelData(QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
-#if QT_VERSION >= 0x040500
if (index.column() == 2) {
// check that the syntax is OK
QString condition = qobject_cast<QLineEdit*>(editor)->text();
if (QScriptEngine::checkSyntax(condition).state() != QScriptSyntaxCheckResult::Valid)
return;
}
-#endif
QStyledItemDelegate::setModelData(editor, model, index);
}
@@ -261,11 +257,7 @@ private Q_SLOTS:
QWidget *editor = qobject_cast<QWidget*>(sender());
QPalette pal = editor->palette();
QColor col;
-#if QT_VERSION >= 0x040500
bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid);
-#else
- bool ok = true;
-#endif
if (ok) {
col = Qt::white;
} else {
diff --git a/src/scripttools/debugging/qscriptcompletiontask.cpp b/src/scripttools/debugging/qscriptcompletiontask.cpp
index 3767505..119b96a 100644
--- a/src/scripttools/debugging/qscriptcompletiontask.cpp
+++ b/src/scripttools/debugging/qscriptcompletiontask.cpp
@@ -162,11 +162,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression()
obj = ctx->thisObject();
} else {
QScriptValueList scopeChain;
-#if QT_VERSION >= 0x040500
scopeChain = ctx->scopeChain();
-#else
- scopeChain.append(ctx->activationObject());
-#endif
for (int i = 0; i < scopeChain.size(); ++i) {
QScriptValue oo = scopeChain.at(i).property(topLevelIdent);
if (oo.isObject()) {
@@ -180,11 +176,7 @@ void QScriptCompletionTaskPrivate::completeScriptExpression()
if (obj.isValid())
objects.append(obj);
} else {
-#if QT_VERSION >= 0x040500
objects << ctx->scopeChain();
-#else
- objects.append(ctx->activationObject());
-#endif
QStringList keywords;
keywords.append(QString::fromLatin1("this"));
keywords.append(QString::fromLatin1("true"));
diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp
index 5a356ae..ce43572 100644
--- a/src/scripttools/debugging/qscriptdebugger.cpp
+++ b/src/scripttools/debugging/qscriptdebugger.cpp
@@ -663,11 +663,7 @@ QString QScriptDebuggerPrivate::toolTip(int frameIndex, int lineNumber,
objects.append(ctx->thisObject());
++pathIndex;
} else {
-#if QT_VERSION >= 0x040500
objects << ctx->scopeChain();
-#else
- objects.append(ctx->activationObject());
-#endif
}
for (int i = 0; i < objects.size(); ++i) {
QScriptValue val = objects.at(i);
@@ -991,13 +987,11 @@ public:
qint64 scriptId = m_added.at(m_index);
m_debugger->scriptsModel->addScript(scriptId, data);
-#if QT_VERSION >= 0x040500
// ### could be slow, might want to do this in a separate thread
QString xml = qt_scriptToXml(data.contents(), data.baseLineNumber());
QScriptXmlParser::Result extraInfo = QScriptXmlParser::parse(xml);
m_debugger->scriptsModel->addExtraScriptInfo(
scriptId, extraInfo.functionsInfo, extraInfo.executableLineNumbers);
-#endif
if (++m_index < m_added.size())
frontend.scheduleGetScriptData(m_added.at(m_index));
diff --git a/src/scripttools/debugging/qscriptdebuggeragent.cpp b/src/scripttools/debugging/qscriptdebuggeragent.cpp
index fcba033..0ea9c99 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent.cpp
+++ b/src/scripttools/debugging/qscriptdebuggeragent.cpp
@@ -88,16 +88,9 @@ QScriptDebuggerAgentPrivate *QScriptDebuggerAgentPrivate::get(
*/
QScriptDebuggerAgent::QScriptDebuggerAgent(
QScriptDebuggerBackendPrivate *backend, QScriptEngine *engine)
-#if QT_VERSION >= 0x040500
: QScriptEngineAgent(*new QScriptDebuggerAgentPrivate, engine)
-#else
- : QScriptEngineAgent(engine), d_ptr(new QScriptDebuggerAgentPrivate)
-#endif
{
Q_D(QScriptDebuggerAgent);
-#if QT_VERSION < 0x040500
- d_ptr->q_ptr = this;
-#endif
d->backend = backend;
QScriptContext *ctx = engine->currentContext();
@@ -117,9 +110,6 @@ QScriptDebuggerAgent::~QScriptDebuggerAgent()
Q_D(QScriptDebuggerAgent);
if (d->backend)
d->backend->agentDestroyed(this);
-#if QT_VERSION < 0x040500
- delete d_ptr;
-#endif
}
/*!
@@ -712,12 +702,7 @@ void QScriptDebuggerAgent::exceptionCatch(qint64 scriptId,
*/
bool QScriptDebuggerAgent::supportsExtension(Extension extension) const
{
-#if QT_VERSION >= 0x040500
return (extension == DebuggerInvocationRequest);
-#else
- Q_UNUSED(extension);
- return false;
-#endif
}
/*!
@@ -727,7 +712,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension,
const QVariant &argument)
{
Q_UNUSED(extension);
-#if QT_VERSION >= 0x040500
Q_D(QScriptDebuggerAgent);
Q_ASSERT(extension == DebuggerInvocationRequest);
QVariantList lst = argument.toList();
@@ -739,9 +723,6 @@ QVariant QScriptDebuggerAgent::extension(Extension extension,
d->backend->debuggerInvocationRequest(
scriptId, lineNumber, columnNumber);
}
-#else
- Q_UNUSED(argument);
-#endif
return QVariant();
}
diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p.h
index 556b17b..28ec46a 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent_p.h
+++ b/src/scripttools/debugging/qscriptdebuggeragent_p.h
@@ -125,9 +125,6 @@ public:
const QVariant &argument = QVariant());
private:
-#if QT_VERSION < 0x040500
- QScriptDebuggerAgentPrivate *d_ptr;
-#endif
Q_DECLARE_PRIVATE(QScriptDebuggerAgent)
Q_DISABLE_COPY(QScriptDebuggerAgent)
};
diff --git a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
index cf6fd1a..313b1c0 100644
--- a/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
+++ b/src/scripttools/debugging/qscriptdebuggeragent_p_p.h
@@ -68,9 +68,7 @@ QT_BEGIN_NAMESPACE
class QScriptDebuggerAgent;
class QScriptDebuggerAgentPrivate
-#if QT_VERSION >= 0x040500
: public QScriptEngineAgentPrivate
-#endif
{
Q_DECLARE_PUBLIC(QScriptDebuggerAgent)
public:
@@ -125,10 +123,6 @@ public:
int statementCounter;
QScriptDebuggerBackendPrivate *backend;
-
-#if QT_VERSION < 0x040500
- QScriptDebuggerAgent *q_ptr;
-#endif
};
QT_END_NAMESPACE
diff --git a/src/scripttools/debugging/qscriptdebuggerbackend.cpp b/src/scripttools/debugging/qscriptdebuggerbackend.cpp
index 24a3847..3c29130 100644
--- a/src/scripttools/debugging/qscriptdebuggerbackend.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerbackend.cpp
@@ -615,13 +615,11 @@ void QScriptDebuggerBackend::doPendingEvaluate(bool postEvent)
// push a new context and initialize its scope chain etc.
{
QScriptContext *evalContext = engine()->pushContext();
-#if QT_VERSION >= 0x040500
QScriptValueList scopeChain = ctx->scopeChain();
if (scopeChain.isEmpty())
scopeChain.append(engine()->globalObject());
while (!scopeChain.isEmpty())
evalContext->pushScope(scopeChain.takeLast());
-#endif
evalContext->setActivationObject(ctx->activationObject());
evalContext->setThisObject(ctx->thisObject());
}
diff --git a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
index e36386d..1be8c5f 100644
--- a/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
+++ b/src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp
@@ -287,13 +287,9 @@ QScriptDebuggerResponse QScriptDebuggerCommandExecutor::execute(
QScriptContext *ctx = backend->context(command.contextIndex());
if (ctx) {
QScriptDebuggerValueList dest;
-#if QT_VERSION >= 0x040500
QScriptValueList src = ctx->scopeChain();
for (int i = 0; i < src.size(); ++i)
dest.append(src.at(i));
-#else
- dest.append(ctx->activationObject());
-#endif
response.setResult(dest);
} else {
response.setError(QScriptDebuggerResponse::InvalidContextIndex);
diff --git a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
index 0018b92..f923508 100644
--- a/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp
@@ -448,12 +448,7 @@ QStringList QScriptDebuggerConsoleGlobalObject::getCommandCompletions(const QStr
bool QScriptDebuggerConsoleGlobalObject::checkSyntax(const QString &program)
{
-#if QT_VERSION >= 0x040500
return (QScriptEngine::checkSyntax(program).state() == QScriptSyntaxCheckResult::Valid);
-#else
- Q_UNUSED(program);
- return true;
-#endif
}
void QScriptDebuggerConsoleGlobalObject::setEvaluateAction(int action)
diff --git a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
index a4919be..60fe48d 100644
--- a/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp
@@ -206,11 +206,7 @@ private Q_SLOTS:
QWidget *editor = qobject_cast<QWidget*>(sender());
QPalette pal = editor->palette();
QColor col;
-#if QT_VERSION >= 0x040500
bool ok = (QScriptEngine::checkSyntax(text).state() == QScriptSyntaxCheckResult::Valid);
-#else
- bool ok = true;
-#endif
if (ok) {
col = Qt::white;
} else {
@@ -277,12 +273,10 @@ bool QScriptDebuggerLocalsItemDelegate::eventFilter(QObject *watched, QEvent *ev
return QStyledItemDelegate::eventFilter(watched, event);
QKeyEvent *ke = static_cast<QKeyEvent*>(event);
if ((ke->key() == Qt::Key_Enter) || (ke->key() == Qt::Key_Return)) {
-#if QT_VERSION >= 0x040500
if (QScriptEngine::checkSyntax(le->text()).state() != QScriptSyntaxCheckResult::Valid) {
// ignore when script contains syntax error
return true;
}
-#endif
}
if (ke->key() != Qt::Key_Tab)
return QStyledItemDelegate::eventFilter(watched, event);
@@ -296,14 +290,12 @@ void QScriptDebuggerLocalsItemDelegate::setModelData(
QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index) const
{
-#if QT_VERSION >= 0x040500
if (index.column() == 1) {
// check that the syntax is OK
QString expression = qobject_cast<QLineEdit*>(editor)->text();
if (QScriptEngine::checkSyntax(expression).state() != QScriptSyntaxCheckResult::Valid)
return;
}
-#endif
QStyledItemDelegate::setModelData(editor, model, index);
}
diff --git a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
index 20350f6..fa30d84 100644
--- a/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
+++ b/src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp
@@ -410,11 +410,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::start()
for (int i = 0; i < d->arguments.size(); ++i)
args.append(QScriptValue(engine, d->arguments.at(i)));
QScriptDebuggerConsoleGlobalObject *global;
-#if QT_VERSION >= 0x040500
global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject());
-#else
- global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject());
-#endif
Q_ASSERT(global != 0);
global->setScheduler(this);
global->setResponseHandler(this);
@@ -444,11 +440,7 @@ void QScriptDebuggerScriptedConsoleCommandJob::handleResponse(
args.append(qScriptValueFromValue(engine, response));
args.append(QScriptValue(engine, commandId));
QScriptDebuggerConsoleGlobalObject *global;
-#if QT_VERSION >= 0x040500
global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().toQObject());
-#else
- global = qobject_cast<QScriptDebuggerConsoleGlobalObject*>(engine->globalObject().scope().toQObject());
-#endif
Q_ASSERT(global != 0);
global->setScheduler(this);
global->setResponseHandler(this);
@@ -566,12 +558,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa
QScriptDebuggerConsoleGlobalObject *cppGlobal = new QScriptDebuggerConsoleGlobalObject();
QScriptValue global = engine->newQObject(cppGlobal,
QScriptEngine::ScriptOwnership,
-#if QT_VERSION >= 0x040500
QScriptEngine::ExcludeSuperClassContents);
-#else
- QScriptEngine::ExcludeSuperClassMethods
- | QScriptEngine::ExcludeSuperClassProperties);
-#endif
{
QScriptValueIterator it(engine->globalObject());
while (it.hasNext()) {
@@ -579,12 +566,7 @@ QScriptDebuggerScriptedConsoleCommand *QScriptDebuggerScriptedConsoleCommand::pa
global.setProperty(it.scriptName(), it.value(), it.flags());
}
}
-#if QT_VERSION >= 0x040500
engine->setGlobalObject(global);
-#else
- engine->globalObject().setScope(global);
- global = engine->globalObject();
-#endif
cppGlobal->setMessageHandler(messageHandler);
QScriptValue ret = engine->evaluate(program, fileName);
diff --git a/src/scripttools/debugging/qscriptedit.cpp b/src/scripttools/debugging/qscriptedit.cpp
index 2bc0a40..7c2a72c 100644
--- a/src/scripttools/debugging/qscriptedit.cpp
+++ b/src/scripttools/debugging/qscriptedit.cpp
@@ -342,11 +342,9 @@ void QScriptEdit::extraAreaPaintEvent(QPaintEvent *e)
icon.paint(&painter, r, Qt::AlignCenter);
}
-#if QT_VERSION >= 0x040500
if (!m_executableLineNumbers.contains(lineNumber))
painter.setPen(pal.color(QPalette::Mid));
else
-#endif
painter.setPen(QColor(Qt::darkCyan));
QString number = QString::number(lineNumber);
painter.drawText(rect.x() + markWidth, (int)top, rect.x() + extraAreaWidth - markWidth - 4,
@@ -370,10 +368,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
if (e->type() == QEvent::MouseMove && e->buttons() == 0) { // mouse tracking
bool hand = (e->pos().x() <= markWidth);
-#if QT_VERSION >= 0x040500
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
hand = hand && m_executableLineNumbers.contains(lineNumber);
-#endif
#ifndef QT_NO_CURSOR
if (hand != (m_extraArea->cursor().shape() == Qt::PointingHandCursor))
m_extraArea->setCursor(hand ? Qt::PointingHandCursor : Qt::ArrowCursor);
@@ -382,12 +378,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
if (e->type() == QEvent::MouseButtonPress) {
if (e->button() == Qt::LeftButton) {
-#if QT_VERSION >= 0x040500
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
bool executable = m_executableLineNumbers.contains(lineNumber);
-#else
- bool executable = true;
-#endif
if ((e->pos().x() <= markWidth) && executable)
m_extraAreaToggleBlockNumber = cursor.blockNumber();
else
@@ -402,10 +394,8 @@ void QScriptEdit::extraAreaMouseEvent(QMouseEvent *e)
}
} else if (e->button() == Qt::RightButton) {
int lineNumber = cursor.blockNumber() + m_baseLineNumber;
-#if QT_VERSION >= 0x040500
if (!m_executableLineNumbers.contains(lineNumber))
return;
-#endif
bool has = m_breakpoints.contains(lineNumber);
QMenu *popup = new QMenu();
QAction *toggleAct = new QAction(QObject::tr("Toggle Breakpoint"), popup);
diff --git a/src/scripttools/debugging/qscriptenginedebugger.h b/src/scripttools/debugging/qscriptenginedebugger.h
index d5e127f..a4853f0 100644
--- a/src/scripttools/debugging/qscriptenginedebugger.h
+++ b/src/scripttools/debugging/qscriptenginedebugger.h
@@ -48,11 +48,7 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#if QT_VERSION >= 0x040500
QT_MODULE(ScriptTools)
-#else
-# define Q_SCRIPTTOOLS_EXPORT
-#endif
class QAction;
class QScriptEngine;
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index d6423ae..2a83fe6 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -355,7 +355,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
} else {
fieldVal += QString::fromAscii(buf, rSize);
}
- if (fieldVal.size() + lengthIndicator >= colSize) {
+ if (lengthIndicator - fieldVal.size() <= 0) {
// workaround for Drivermanagers that don't return SQL_NO_DATA
break;
}