summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThe Qt Project <gerrit-noreply@qt-project.org>2019-11-25 14:49:13 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2019-11-25 14:49:13 +0000
commitbc1cae774ad8cc084a98cb37d363770efbde025c (patch)
treeaeb16a5fa9093632eba6143fe53ef1dad3e383a4 /src
parent8d35ad8726f44c4e853b5a192203ffcbbd2476e1 (diff)
parent26e876912435bdafbca2b425af43824d7ec5b876 (diff)
Merge "Merge remote-tracking branch 'origin/dev' into wip/cmake" into wip/cmake
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/double-conversion/README8
-rw-r--r--src/3rdparty/double-conversion/double-conversion.cc25
-rw-r--r--src/3rdparty/double-conversion/double-conversion.pri4
-rw-r--r--src/3rdparty/double-conversion/ieee.h4
-rw-r--r--src/3rdparty/double-conversion/include/double-conversion/utils.h15
-rw-r--r--src/3rdparty/double-conversion/qt_attribution.json4
-rw-r--r--src/3rdparty/libjpeg/jconfig.h2
-rw-r--r--src/3rdparty/libjpeg/jconfigint.h2
-rw-r--r--src/3rdparty/libjpeg/qt_attribution.json2
-rw-r--r--src/3rdparty/libjpeg/src/ChangeLog.md38
-rw-r--r--src/3rdparty/libjpeg/src/README.md28
-rw-r--r--src/3rdparty/libjpeg/src/jchuff.c6
-rw-r--r--src/3rdparty/libjpeg/src/jcmaster.c2
-rw-r--r--src/3rdparty/libjpeg/src/jdhuff.c10
-rw-r--r--src/3rdparty/libjpeg/src/jdmerge.c2
-rw-r--r--src/3rdparty/libjpeg/src/jdsample.c14
-rw-r--r--src/3rdparty/md4c/md4c.c92
-rw-r--r--src/3rdparty/md4c/md4c.h15
-rw-r--r--src/3rdparty/md4c/qt_attribution.json4
-rw-r--r--src/3rdparty/sqlite/patches/0001-Fix-CVE-2019-16168-in-SQLite.patch42
-rw-r--r--src/3rdparty/sqlite/qt_attribution.json4
-rw-r--r--src/3rdparty/sqlite/sqlite3.c9186
-rw-r--r--src/3rdparty/sqlite/sqlite3.h81
-rw-r--r--src/corelib/Qt5AndroidSupport.cmake197
-rw-r--r--src/corelib/Qt6CoreConfigExtras.cmake.in2
-rw-r--r--src/corelib/Qt6ModuleLocation.cmake.in2
-rw-r--r--src/corelib/configure.json12
-rw-r--r--src/corelib/corelib.pro13
-rw-r--r--src/corelib/doc/snippets/code/doc_src_containers.cpp8
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp10
-rw-r--r--src/corelib/doc/snippets/qstring/main.cpp8
-rw-r--r--src/corelib/doc/src/containers.qdoc140
-rw-r--r--src/corelib/doc/src/datastreamformat.qdoc1
-rw-r--r--src/corelib/doc/src/includes/containers-range-constructor.qdocinc2
-rw-r--r--src/corelib/global/qcompilerdetection.h22
-rw-r--r--src/corelib/global/qconfig-bootstrapped.h2
-rw-r--r--src/corelib/global/qendian.cpp2
-rw-r--r--src/corelib/global/qendian.h12
-rw-r--r--src/corelib/global/qglobal.cpp4
-rw-r--r--src/corelib/global/qglobal.h59
-rw-r--r--src/corelib/global/qnumeric_p.h6
-rw-r--r--src/corelib/global/qrandom.cpp4
-rw-r--r--src/corelib/global/qrandom.h2
-rw-r--r--src/corelib/global/qtypeinfo.h1
-rw-r--r--src/corelib/io/qdebug.h6
-rw-r--r--src/corelib/io/qfilesystemengine_p.h30
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp52
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp130
-rw-r--r--src/corelib/io/qfsfileengine.cpp116
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp77
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp70
-rw-r--r--src/corelib/io/qsettings.cpp5
-rw-r--r--src/corelib/io/qstandardpaths_unix.cpp48
-rw-r--r--src/corelib/io/qt_attribution.json2
-rw-r--r--src/corelib/io/qurltlds_p.h27587
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h10
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp40
-rw-r--r--src/corelib/kernel/qmetaobject.cpp4
-rw-r--r--src/corelib/kernel/qmetaobject_moc_p.h3
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder.cpp2
-rw-r--r--src/corelib/kernel/qmetatype.cpp46
-rw-r--r--src/corelib/kernel/qmetatype.h37
-rw-r--r--src/corelib/kernel/qmetatype_p.h3
-rw-r--r--src/corelib/kernel/qobject_p.h1
-rw-r--r--src/corelib/kernel/qvariant.cpp21
-rw-r--r--src/corelib/kernel/qvariant.h2
-rw-r--r--src/corelib/serialization/qbinaryjson.cpp415
-rw-r--r--src/corelib/serialization/qbinaryjson_p.h617
-rw-r--r--src/corelib/serialization/qbinaryjsonarray.cpp137
-rw-r--r--src/corelib/serialization/qbinaryjsonarray_p.h98
-rw-r--r--src/corelib/serialization/qbinaryjsonobject.cpp149
-rw-r--r--src/corelib/serialization/qbinaryjsonobject_p.h97
-rw-r--r--src/corelib/serialization/qbinaryjsonvalue.cpp155
-rw-r--r--src/corelib/serialization/qbinaryjsonvalue_p.h134
-rw-r--r--src/corelib/serialization/qcborstream.cpp112
-rw-r--r--src/corelib/serialization/qcborvalue.cpp108
-rw-r--r--src/corelib/serialization/qcborvalue.h4
-rw-r--r--src/corelib/serialization/qcborvalue_p.h8
-rw-r--r--src/corelib/serialization/qdatastream.h12
-rw-r--r--src/corelib/serialization/qjson.cpp451
-rw-r--r--src/corelib/serialization/qjson_p.h789
-rw-r--r--src/corelib/serialization/qjsonarray.cpp239
-rw-r--r--src/corelib/serialization/qjsonarray.h26
-rw-r--r--src/corelib/serialization/qjsoncbor.cpp146
-rw-r--r--src/corelib/serialization/qjsondocument.cpp354
-rw-r--r--src/corelib/serialization/qjsondocument.h27
-rw-r--r--src/corelib/serialization/qjsonobject.cpp320
-rw-r--r--src/corelib/serialization/qjsonobject.h29
-rw-r--r--src/corelib/serialization/qjsonparser.cpp458
-rw-r--r--src/corelib/serialization/qjsonparser_p.h51
-rw-r--r--src/corelib/serialization/qjsonvalue.cpp359
-rw-r--r--src/corelib/serialization/qjsonvalue.h55
-rw-r--r--src/corelib/serialization/qjsonwriter.cpp84
-rw-r--r--src/corelib/serialization/qjsonwriter_p.h4
-rw-r--r--src/corelib/serialization/qtextstream.h3
-rw-r--r--src/corelib/serialization/serialization.pri15
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp6
-rw-r--r--src/corelib/text/qbytearray.cpp72
-rw-r--r--src/corelib/text/qbytearray.h14
-rw-r--r--src/corelib/text/qbytearraylist.h16
-rw-r--r--src/corelib/text/qbytearraymatcher.h2
-rw-r--r--src/corelib/text/qchar.h20
-rw-r--r--src/corelib/text/qlocale.h7
-rw-r--r--src/corelib/text/qlocale.qdoc7
-rw-r--r--src/corelib/text/qlocale_data_p.h5712
-rw-r--r--src/corelib/text/qstring.cpp54
-rw-r--r--src/corelib/text/qstring.h11
-rw-r--r--src/corelib/text/qstringlist.h74
-rw-r--r--src/corelib/text/qt_attribution.json6
-rw-r--r--src/corelib/text/qunicodetables.cpp15190
-rw-r--r--src/corelib/text/qunicodetables_p.h7
-rw-r--r--src/corelib/text/qunicodetools.cpp47
-rw-r--r--src/corelib/thread/qthread.cpp12
-rw-r--r--src/corelib/thread/qthread.h33
-rw-r--r--src/corelib/thread/qthread_unix.cpp28
-rw-r--r--src/corelib/thread/qthread_win.cpp2
-rw-r--r--src/corelib/time/qdatetimeparser_p.h4
-rw-r--r--src/corelib/time/qhijricalendar_data_p.h2169
-rw-r--r--src/corelib/time/qjalalicalendar_data_p.h277
-rw-r--r--src/corelib/time/qmilankoviccalendar.cpp2
-rw-r--r--src/corelib/time/qromancalendar_data_p.h2177
-rw-r--r--src/corelib/time/qtimezoneprivate_data_p.h1889
-rw-r--r--src/corelib/tools/qarraydata.cpp26
-rw-r--r--src/corelib/tools/qarraydata.h17
-rw-r--r--src/corelib/tools/qarraydatapointer.h17
-rw-r--r--src/corelib/tools/qcontainerfwd.h2
-rw-r--r--src/corelib/tools/qcontiguouscache.h5
-rw-r--r--src/corelib/tools/qhash.h25
-rw-r--r--src/corelib/tools/qlinkedlist.h3
-rw-r--r--src/corelib/tools/qlist.cpp2013
-rw-r--r--src/corelib/tools/qlist.h1151
-rw-r--r--src/corelib/tools/qmap.h36
-rw-r--r--src/corelib/tools/qrefcount.h25
-rw-r--r--src/corelib/tools/qset.h3
-rw-r--r--src/corelib/tools/qset.qdoc6
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h51
-rw-r--r--src/corelib/tools/qvector.h138
-rw-r--r--src/corelib/tools/qvector.qdoc8
-rw-r--r--src/corelib/tools/qvector_msvc.cpp7
-rw-r--r--src/dbus/qdbusmisc.cpp5
-rw-r--r--src/gui/configure.json10
-rw-r--r--src/gui/gui.pro2
-rw-r--r--src/gui/image/qimage.cpp6
-rw-r--r--src/gui/kernel/kernel.pri30
-rw-r--r--src/gui/kernel/qdnd.cpp9
-rw-r--r--src/gui/kernel/qdnd_p.h4
-rw-r--r--src/gui/kernel/qdrag.cpp7
-rw-r--r--src/gui/kernel/qevent.cpp20
-rw-r--r--src/gui/kernel/qevent.h26
-rw-r--r--src/gui/kernel/qguiaction.cpp1214
-rw-r--r--src/gui/kernel/qguiaction.h198
-rw-r--r--src/gui/kernel/qguiaction_p.h128
-rw-r--r--src/gui/kernel/qguiactiongroup.cpp345
-rw-r--r--src/gui/kernel/qguiactiongroup.h104
-rw-r--r--src/gui/kernel/qguiactiongroup_p.h91
-rw-r--r--src/gui/kernel/qguiapplication.cpp23
-rw-r--r--src/gui/kernel/qguiapplication_p.h9
-rw-r--r--src/gui/kernel/qguishortcut.cpp354
-rw-r--r--src/gui/kernel/qguishortcut.h98
-rw-r--r--src/gui/kernel/qguishortcut_p.h92
-rw-r--r--src/gui/kernel/qguivariant.cpp10
-rw-r--r--src/gui/kernel/qkeymapper_p.h1
-rw-r--r--src/gui/kernel/qkeysequence.cpp11
-rw-r--r--src/gui/kernel/qkeysequence.h16
-rw-r--r--src/gui/kernel/qkeysequence_p.h4
-rw-r--r--src/gui/kernel/qplatformmenu.h6
-rw-r--r--src/gui/kernel/qplatformtheme.cpp8
-rw-r--r--src/gui/kernel/qplatformtheme.h8
-rw-r--r--src/gui/kernel/qplatformtheme_p.h6
-rw-r--r--src/gui/kernel/qshortcutmap.cpp4
-rw-r--r--src/gui/kernel/qshortcutmap_p.h6
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp13
-rw-r--r--src/gui/kernel/qwindowsysteminterface.h3
-rw-r--r--src/gui/kernel/qwindowsysteminterface_p.h3
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_compatibility.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_core.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_compatibility.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_core.h11
-rw-r--r--src/gui/opengl/qopenglfunctions_4_4_compatibility.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_4_core.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_5_compatibility.h10
-rw-r--r--src/gui/opengl/qopenglfunctions_4_5_core.h11
-rw-r--r--src/gui/opengl/qopenglversionfunctions.h10
-rw-r--r--src/gui/painting/qcolor.h2
-rw-r--r--src/gui/painting/qdrawhelper.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_ssse3.cpp2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp2
-rw-r--r--src/gui/painting/qtransform.cpp4
-rw-r--r--src/gui/rhi/qrhi.cpp26
-rw-r--r--src/gui/rhi/qrhigles2.cpp6
-rw-r--r--src/gui/rhi/qrhimetal.mm161
-rw-r--r--src/gui/rhi/qrhimetal_p_p.h7
-rw-r--r--src/gui/rhi/qshader.cpp155
-rw-r--r--src/gui/rhi/qshader_p.h5
-rw-r--r--src/gui/rhi/qshader_p_p.h10
-rw-r--r--src/gui/rhi/qshaderdescription.cpp152
-rw-r--r--src/gui/rhi/qshaderdescription_p.h40
-rw-r--r--src/gui/text/qfontengine_p.h2
-rw-r--r--src/gui/text/qfontengine_qpf2.cpp2
-rw-r--r--src/gui/text/qharfbuzzng.cpp17
-rw-r--r--src/gui/text/qtextdocument.cpp2
-rw-r--r--src/gui/text/qtextdocument.h1
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp8
-rw-r--r--src/gui/text/qtextengine.cpp24
-rw-r--r--src/gui/text/qtextengine_p.h2
-rw-r--r--src/gui/text/qtextmarkdownimporter.cpp21
-rw-r--r--src/gui/text/qtextmarkdownimporter_p.h34
-rw-r--r--src/gui/util/qgridlayoutengine.cpp2
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp40
-rw-r--r--src/network/access/qnetworkaccessmanager.h3
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h2
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp36
-rw-r--r--src/network/access/qnetworkreplyhttpimpl_p.h7
-rw-r--r--src/network/access/qnetworkrequest.cpp50
-rw-r--r--src/network/access/qnetworkrequest.h6
-rw-r--r--src/network/configure.json23
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp7
-rw-r--r--src/network/socket/qlocalserver_p.h9
-rw-r--r--src/network/socket/qlocalserver_win.cpp38
-rw-r--r--src/network/ssl/qdtls_openssl.cpp71
-rw-r--r--src/network/ssl/qdtls_openssl_p.h5
-rw-r--r--src/network/ssl/qsslcontext_openssl.cpp550
-rw-r--r--src/network/ssl/qsslcontext_openssl11.cpp467
-rw-r--r--src/network/ssl/qsslcontext_openssl_p.h8
-rw-r--r--src/network/ssl/qsslcontext_opensslpre11.cpp407
-rw-r--r--src/network/ssl/qsslellipticcurve_openssl.cpp4
-rw-r--r--src/network/ssl/qsslerror.h2
-rw-r--r--src/network/ssl/qsslkey_openssl.cpp24
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp276
-rw-r--r--src/network/ssl/qsslsocket_openssl11.cpp271
-rw-r--r--src/network/ssl/qsslsocket_openssl11_symbols_p.h195
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h2
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp325
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h214
-rw-r--r--src/network/ssl/qsslsocket_opensslpre11.cpp408
-rw-r--r--src/network/ssl/qsslsocket_opensslpre11_symbols_p.h202
-rw-r--r--src/network/ssl/qsslsocket_p.h1
-rw-r--r--src/network/ssl/qsslsocket_schannel.cpp131
-rw-r--r--src/network/ssl/qsslsocket_schannel_p.h1
-rw-r--r--src/network/ssl/qsslsocket_winrt.cpp5
-rw-r--r--src/network/ssl/ssl.pri12
-rw-r--r--src/openglextensions/qopenglextensions.cpp9
-rw-r--r--src/openglextensions/qopenglextensions.h10
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp15
-rw-r--r--src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp77
-rw-r--r--src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h19
-rw-r--r--src/platformsupport/linuxofono/linuxofono.pro15
-rw-r--r--src/platformsupport/linuxofono/qofonoservice_linux.cpp (renamed from src/plugins/bearer/linux_common/qofonoservice_linux.cpp)2
-rw-r--r--src/platformsupport/linuxofono/qofonoservice_linux_p.h (renamed from src/plugins/bearer/linux_common/qofonoservice_linux_p.h)0
-rw-r--r--src/platformsupport/platformsupport.pro4
-rw-r--r--src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes.cpp4
-rw-r--r--src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h4
-rw-r--r--src/plugins/bearer/connman/connman.pro4
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.h2
-rw-r--r--src/plugins/bearer/networkmanager/networkmanager.pro8
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp1
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.h2
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp14
-rw-r--r--src/plugins/platforms/android/androidjniinput.h2
-rw-r--r--src/plugins/platforms/android/qandroidinputcontext.cpp3
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm70
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm68
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.mm71
-rw-r--r--src/plugins/platforms/cocoa/qcocoascreen.h8
-rw-r--r--src/plugins/platforms/cocoa/qcocoascreen.mm60
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm11
-rw-r--r--src/plugins/platforms/cocoa/qnsview_drawing.mm11
-rw-r--r--src/plugins/platforms/cocoa/qprintengine_mac.mm2
-rw-r--r--src/plugins/platforms/haiku/qhaikuapplication.cpp5
-rw-r--r--src/plugins/platforms/wasm/wasm_shell.html2
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp8
-rw-r--r--src/plugins/platforms/xcb/qxcbsessionmanager.cpp5
-rw-r--r--src/plugins/sqldrivers/odbc/qsql_odbc.cpp10
-rw-r--r--src/plugins/sqldrivers/psql/qsql_psql.cpp43
-rw-r--r--src/plugins/sqldrivers/psql/qsql_psql_p.h1
-rw-r--r--src/printsupport/dialogs/qprintsettingsoutput.ui8
-rw-r--r--src/sql/models/qsqltablemodel.cpp2
-rw-r--r--src/testlib/doc/snippets/code/src_qtestlib_qtestcase.cpp30
-rw-r--r--src/testlib/doc/src/qttestlib-manual.qdoc53
-rw-r--r--src/testlib/qsignalspy.qdoc16
-rw-r--r--src/testlib/qtestcase.cpp4
-rw-r--r--src/testlib/qtestcase.qdoc57
-rw-r--r--src/testlib/qtestkeyboard.h4
-rw-r--r--src/tools/androiddeployqt/main.cpp2
-rw-r--r--src/tools/androidtestrunner/main.cpp2
-rw-r--r--src/tools/bootstrap/bootstrap.pro4
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp3
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp38
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp1
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp4
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp8
-rw-r--r--src/widgets/dialogs/qprogressdialog.cpp4
-rw-r--r--src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc2
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc4
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp6
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp13
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_p.h17
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.h3
-rw-r--r--src/widgets/itemviews/qlistwidget.cpp4
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp9
-rw-r--r--src/widgets/itemviews/qtableview.cpp2
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp2
-rw-r--r--src/widgets/kernel/kernel.pri28
-rw-r--r--src/widgets/kernel/qaction.cpp1071
-rw-r--r--src/widgets/kernel/qaction.h132
-rw-r--r--src/widgets/kernel/qaction_p.h49
-rw-r--r--src/widgets/kernel/qactiongroup.cpp308
-rw-r--r--src/widgets/kernel/qactiongroup.h44
-rw-r--r--src/widgets/kernel/qapplication.cpp23
-rw-r--r--src/widgets/kernel/qshortcut.cpp258
-rw-r--r--src/widgets/kernel/qshortcut.h46
-rw-r--r--src/widgets/kernel/qt_widgets_pch.h4
-rw-r--r--src/widgets/kernel/qwidget.cpp4
-rw-r--r--src/widgets/kernel/qwidget.h4
-rw-r--r--src/widgets/kernel/qwidgetaction.cpp3
-rw-r--r--src/widgets/kernel/qwidgetaction.h7
-rw-r--r--src/widgets/kernel/qwidgetaction_p.h2
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp22
-rw-r--r--src/widgets/styles/qstyleoption.cpp2
-rw-r--r--src/widgets/util/qundostack.cpp4
-rw-r--r--src/widgets/util/qundostack_p.h4
-rw-r--r--src/widgets/widgets.pro2
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp1
-rw-r--r--src/widgets/widgets/qabstractbutton.h4
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp35
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp27
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h1
-rw-r--r--src/widgets/widgets/qlabel.cpp1
-rw-r--r--src/widgets/widgets/qlineedit.cpp7
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp18
-rw-r--r--src/widgets/widgets/qlineedit_p.h8
-rw-r--r--src/widgets/widgets/qmdisubwindow.cpp8
-rw-r--r--src/widgets/widgets/qmenu.cpp38
-rw-r--r--src/widgets/widgets/qmenu.h54
-rw-r--r--src/widgets/widgets/qmenubar.cpp17
-rw-r--r--src/widgets/widgets/qtoolbar.cpp2
-rw-r--r--src/widgets/widgets/qtoolbarlayout.cpp2
-rw-r--r--src/widgets/widgets/qtoolbarlayout_p.h2
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp2
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp5
-rw-r--r--src/xml/dom/dom.pri7
-rw-r--r--src/xml/dom/qdom.cpp704
-rw-r--r--src/xml/dom/qdom_p.h533
-rw-r--r--src/xml/dom/qdomhelpers.cpp247
-rw-r--r--src/xml/dom/qdomhelpers_p.h121
347 files changed, 43767 insertions, 43649 deletions
diff --git a/src/3rdparty/double-conversion/README b/src/3rdparty/double-conversion/README
deleted file mode 100644
index 75d08df5fe..0000000000
--- a/src/3rdparty/double-conversion/README
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a copy of the library for binary-decimal and decimal-binary
-conversion routines for IEEE doubles, available from
-
- https://github.com/google/double-conversion
-
-commit 2fb03de56faa32bbba5e02222528e7b760f71d77
-
-See the LICENSE file for license information.
diff --git a/src/3rdparty/double-conversion/double-conversion.cc b/src/3rdparty/double-conversion/double-conversion.cc
index 881ca0adbc..8c52755cfb 100644
--- a/src/3rdparty/double-conversion/double-conversion.cc
+++ b/src/3rdparty/double-conversion/double-conversion.cc
@@ -255,6 +255,12 @@ bool DoubleToStringConverter::ToExponential(
const int kDecimalRepCapacity = kMaxExponentialDigits + 2;
ASSERT(kDecimalRepCapacity > kBase10MaximalLength);
char decimal_rep[kDecimalRepCapacity];
+#ifndef NDEBUG
+ // Problem: there is an assert in StringBuilder::AddSubstring() that
+ // will pass this buffer to strlen(), and this buffer is not generally
+ // null-terminated.
+ memset(decimal_rep, 0, sizeof(decimal_rep));
+#endif
int decimal_rep_length;
if (requested_digits == -1) {
@@ -534,7 +540,7 @@ static double SignedZero(bool sign) {
// because it constant-propagated the radix and concluded that the last
// condition was always true. By moving it into a separate function the
// compiler wouldn't warn anymore.
-#if _MSC_VER
+#ifdef _MSC_VER
#pragma optimize("",off)
static bool IsDecimalDigitForRadix(int c, int radix) {
return '0' <= c && c <= '9' && (c - '0') < radix;
@@ -558,7 +564,7 @@ static bool IsCharacterDigitForRadix(int c, int radix, char a_character) {
// Returns true, when the iterator is equal to end.
template<class Iterator>
-static bool Advance (Iterator* it, char separator, int base, Iterator& end) {
+static bool Advance (Iterator* it, uc16 separator, int base, Iterator& end) {
if (separator == StringToDoubleConverter::kNoSeparator) {
++(*it);
return *it == end;
@@ -586,7 +592,7 @@ static bool Advance (Iterator* it, char separator, int base, Iterator& end) {
template<class Iterator>
static bool IsHexFloatString(Iterator start,
Iterator end,
- char separator,
+ uc16 separator,
bool allow_trailing_junk) {
ASSERT(start != end);
@@ -603,8 +609,8 @@ static bool IsHexFloatString(Iterator start,
saw_digit = true;
if (Advance(&current, separator, 16, end)) return false;
}
- if (!saw_digit) return false; // Only the '.', but no digits.
}
+ if (!saw_digit) return false;
if (*current != 'p' && *current != 'P') return false;
if (Advance(&current, separator, 16, end)) return false;
if (*current == '+' || *current == '-') {
@@ -627,7 +633,7 @@ template <int radix_log_2, class Iterator>
static double RadixStringToIeee(Iterator* current,
Iterator end,
bool sign,
- char separator,
+ uc16 separator,
bool parse_as_hex_float,
bool allow_trailing_junk,
double junk_string_value,
@@ -762,7 +768,11 @@ static double RadixStringToIeee(Iterator* current,
}
int written_exponent = 0;
while (IsDecimalDigitForRadix(**current, 10)) {
- written_exponent = 10 * written_exponent + **current - '0';
+ // No need to read exponents if they are too big. That could potentially overflow
+ // the `written_exponent` variable.
+ if (abs(written_exponent) <= 100 * Double::kMaxExponent) {
+ written_exponent = 10 * written_exponent + **current - '0';
+ }
if (Advance(current, separator, radix, end)) break;
}
if (is_negative) written_exponent = -written_exponent;
@@ -898,10 +908,11 @@ double StringToDoubleConverter::StringToIeee(
(*current == 'x' || *current == 'X')) {
++current;
+ if (current == end) return junk_string_value_; // "0x"
+
bool parse_as_hex_float = (flags_ & ALLOW_HEX_FLOATS) &&
IsHexFloatString(current, end, separator_, allow_trailing_junk);
- if (current == end) return junk_string_value_; // "0x"
if (!parse_as_hex_float && !isDigit(*current, 16)) {
return junk_string_value_;
}
diff --git a/src/3rdparty/double-conversion/double-conversion.pri b/src/3rdparty/double-conversion/double-conversion.pri
index 6564f960d4..395c4682f9 100644
--- a/src/3rdparty/double-conversion/double-conversion.pri
+++ b/src/3rdparty/double-conversion/double-conversion.pri
@@ -1,4 +1,4 @@
-INCLUDEPATH += $$PWD/.. $$PWD/include $$PWD/include/double-conversion
+INCLUDEPATH += $$PWD/.. $$PWD/include
SOURCES += \
$$PWD/bignum.cc \
$$PWD/bignum-dtoa.cc \
@@ -20,5 +20,3 @@ HEADERS += \
$$PWD/ieee.h \
$$PWD/strtod.h \
$$PWD/include/double-conversion/utils.h
-
-OTHER_FILES += README
diff --git a/src/3rdparty/double-conversion/ieee.h b/src/3rdparty/double-conversion/ieee.h
index baaeced31c..6d23cc71cf 100644
--- a/src/3rdparty/double-conversion/ieee.h
+++ b/src/3rdparty/double-conversion/ieee.h
@@ -47,6 +47,8 @@ class Double {
static const uint64_t kHiddenBit = UINT64_2PART_C(0x00100000, 00000000);
static const int kPhysicalSignificandSize = 52; // Excludes the hidden bit.
static const int kSignificandSize = 53;
+ static const int kExponentBias = 0x3FF + kPhysicalSignificandSize;
+ static const int kMaxExponent = 0x7FF - kExponentBias;
Double() : d64_(0) {}
explicit Double(double d) : d64_(double_to_uint64(d)) {}
@@ -222,9 +224,7 @@ class Double {
}
private:
- static const int kExponentBias = 0x3FF + kPhysicalSignificandSize;
static const int kDenormalExponent = -kExponentBias + 1;
- static const int kMaxExponent = 0x7FF - kExponentBias;
static const uint64_t kInfinity = UINT64_2PART_C(0x7FF00000, 00000000);
static const uint64_t kNaN = UINT64_2PART_C(0x7FF80000, 00000000);
diff --git a/src/3rdparty/double-conversion/include/double-conversion/utils.h b/src/3rdparty/double-conversion/include/double-conversion/utils.h
index 7622fe6162..70e697ca00 100644
--- a/src/3rdparty/double-conversion/include/double-conversion/utils.h
+++ b/src/3rdparty/double-conversion/include/double-conversion/utils.h
@@ -56,6 +56,13 @@ inline void abort_noreturn() { abort(); }
#endif
#endif
+#ifndef DOUBLE_CONVERSION_UNUSED
+#ifdef __GNUC__
+#define DOUBLE_CONVERSION_UNUSED __attribute__((unused))
+#else
+#define DOUBLE_CONVERSION_UNUSED
+#endif
+#endif
// Double operations detection based on target architecture.
// Linux uses a 80bit wide floating point stack on x86. This induces double
@@ -91,10 +98,11 @@ int main(int argc, char** argv) {
defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
defined(__SH4__) || defined(__alpha__) || \
- defined(_MIPS_ARCH_MIPS32R2) || \
+ defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\
defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \
- defined(__riscv) || defined(__EMSCRIPTEN__) || \
- defined(__or1k__)
+ defined(__riscv) || \
+ defined(__or1k__) || defined(__arc__) || \
+ defined(__EMSCRIPTEN__)
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
#elif defined(__mc68000__) || \
defined(__pnacl__) || defined(__native_client__)
@@ -343,6 +351,7 @@ inline Dest BitCast(const Source& source) {
static_assert(sizeof(Dest) == sizeof(Source),
"source and destination size mismatch");
#else
+ DOUBLE_CONVERSION_UNUSED
typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1];
#endif
diff --git a/src/3rdparty/double-conversion/qt_attribution.json b/src/3rdparty/double-conversion/qt_attribution.json
index 1d244a69b4..86193e3b50 100644
--- a/src/3rdparty/double-conversion/qt_attribution.json
+++ b/src/3rdparty/double-conversion/qt_attribution.json
@@ -5,8 +5,8 @@
"QtUsage": "Used in Qt Core. Configure with -system-doubleconversion or -no-doubleconversion to avoid.",
"Homepage": "https://github.com/google/double-conversion",
- "Version": "3.1.1",
- "DownloadLocation": "https://github.com/google/double-conversion/commit/4199ef3d456ed0549e5665cf4186f0ee6210db3b",
+ "Version": "3.1.5",
+ "DownloadLocation": "https://github.com/google/double-conversion/commit/5fa81e88ef24e735b4283b8f7454dc59693ac1fc",
"License": "BSD 3-clause \"New\" or \"Revised\" License",
"LicenseId": "BSD-3-Clause",
"LicenseFile": "LICENSE",
diff --git a/src/3rdparty/libjpeg/jconfig.h b/src/3rdparty/libjpeg/jconfig.h
index 3f6a7f6b3c..fb1e88ae29 100644
--- a/src/3rdparty/libjpeg/jconfig.h
+++ b/src/3rdparty/libjpeg/jconfig.h
@@ -2,7 +2,7 @@
#define JPEG_LIB_VERSION 80
-#define LIBJPEG_TURBO_VERSION 2.0.2
+#define LIBJPEG_TURBO_VERSION 2.0.3
#define LIBJPEG_TURBO_VERSION_NUMBER 2000002
diff --git a/src/3rdparty/libjpeg/jconfigint.h b/src/3rdparty/libjpeg/jconfigint.h
index c3549bfd25..6616918509 100644
--- a/src/3rdparty/libjpeg/jconfigint.h
+++ b/src/3rdparty/libjpeg/jconfigint.h
@@ -8,7 +8,7 @@
#define PACKAGE_NAME "libjpeg-turbo"
-#define VERSION "2.0.0"
+#define VERSION "2.0.3"
#if SIZE_MAX == 0xffffffff
#define SIZEOF_SIZE_T 4
diff --git a/src/3rdparty/libjpeg/qt_attribution.json b/src/3rdparty/libjpeg/qt_attribution.json
index d1497bc20f..fa81529968 100644
--- a/src/3rdparty/libjpeg/qt_attribution.json
+++ b/src/3rdparty/libjpeg/qt_attribution.json
@@ -6,7 +6,7 @@
"Description": "The Independent JPEG Group's JPEG software",
"Homepage": "http://libjpeg-turbo.virtualgl.org/",
- "Version": "2.0.2",
+ "Version": "2.0.3",
"License": "Independent JPEG Group License",
"LicenseId": "IJG",
"LicenseFile": "LICENSE",
diff --git a/src/3rdparty/libjpeg/src/ChangeLog.md b/src/3rdparty/libjpeg/src/ChangeLog.md
index 7cf92c30fd..3667d120b1 100644
--- a/src/3rdparty/libjpeg/src/ChangeLog.md
+++ b/src/3rdparty/libjpeg/src/ChangeLog.md
@@ -1,3 +1,41 @@
+2.0.3
+=====
+
+### Significant changes relative to 2.0.2:
+
+1. Fixed "using JNI after critical get" errors that occurred on Android
+platforms when passing invalid arguments to certain methods in the TurboJPEG
+Java API.
+
+2. Fixed a regression in the SIMD feature detection code, introduced by
+the AVX2 SIMD extensions (2.0 beta1[1]), that was known to cause an illegal
+instruction exception, in rare cases, on CPUs that lack support for CPUID leaf
+07H (or on which the maximum CPUID leaf has been limited by way of a BIOS
+setting.)
+
+3. The 4:4:0 (h1v2) fancy (smooth) chroma upsampling algorithm in the
+decompressor now uses a similar bias pattern to that of the 4:2:2 (h2v1) fancy
+chroma upsampling algorithm, rounding up or down the upsampled result for
+alternate pixels rather than always rounding down. This ensures that,
+regardless of whether a 4:2:2 JPEG image is rotated or transposed prior to
+decompression (in the frequency domain) or after decompression (in the spatial
+domain), the final image will be similar.
+
+4. Fixed an integer overflow and subsequent segfault that occurred when
+attempting to compress or decompress images with more than 1 billion pixels
+using the TurboJPEG API.
+
+5. Fixed a regression introduced by 2.0 beta1[15] whereby attempting to
+generate a progressive JPEG image on an SSE2-capable CPU using a scan script
+containing one or more scans with lengths divisible by 16 would result in an
+error ("Missing Huffman code table entry") and an invalid JPEG image.
+
+6. Fixed an issue whereby `tjDecodeYUV()` and `tjDecodeYUVPlanes()` would throw
+an error ("Invalid progressive parameters") or a warning ("Inconsistent
+progression sequence") if passed a TurboJPEG instance that was previously used
+to decompress a progressive JPEG image.
+
+
2.0.2
=====
diff --git a/src/3rdparty/libjpeg/src/README.md b/src/3rdparty/libjpeg/src/README.md
index a769259891..c61b855644 100644
--- a/src/3rdparty/libjpeg/src/README.md
+++ b/src/3rdparty/libjpeg/src/README.md
@@ -135,12 +135,11 @@ without recompiling. libjpeg-turbo does not claim to support all of the
libjpeg v7+ features, nor to produce identical output to libjpeg v7+ in all
cases (see below.)
-By passing an argument of `--with-jpeg7` or `--with-jpeg8` to `configure`, or
-an argument of `-DWITH_JPEG7=1` or `-DWITH_JPEG8=1` to `cmake`, you can build a
-version of libjpeg-turbo that emulates the libjpeg v7 or v8 ABI, so that
-programs that are built against libjpeg v7 or v8 can be run with libjpeg-turbo.
-The following section describes which libjpeg v7+ features are supported and
-which aren't.
+By passing an argument of `-DWITH_JPEG7=1` or `-DWITH_JPEG8=1` to `cmake`, you
+can build a version of libjpeg-turbo that emulates the libjpeg v7 or v8 ABI, so
+that programs that are built against libjpeg v7 or v8 can be run with
+libjpeg-turbo. The following section describes which libjpeg v7+ features are
+supported and which aren't.
### Support for libjpeg v7 and v8 Features
@@ -247,9 +246,8 @@ don't, and it allows those functions to be provided in the "official"
libjpeg-turbo binaries.
Those who are concerned about maintaining strict conformance with the libjpeg
-v6b or v7 API can pass an argument of `--without-mem-srcdst` to `configure` or
-an argument of `-DWITH_MEM_SRCDST=0` to `cmake` prior to building
-libjpeg-turbo. This will restore the pre-1.3 behavior, in which
+v6b or v7 API can pass an argument of `-DWITH_MEM_SRCDST=0` to `cmake` prior to
+building libjpeg-turbo. This will restore the pre-1.3 behavior, in which
`jpeg_mem_src()` and `jpeg_mem_dest()` are only included when emulating the
libjpeg v8 API/ABI.
@@ -344,3 +342,15 @@ quality of 98-100. Thus, libjpeg-turbo must use the non-SIMD quantization
function in those cases. This causes performance to drop by as much as 40%.
It is therefore strongly advised that you use the slow integer forward DCT
whenever encoding images with a JPEG quality of 98 or higher.
+
+
+Memory Debugger Pitfalls
+========================
+
+Valgrind and Memory Sanitizer (MSan) can generate false positives
+(specifically, incorrect reports of uninitialized memory accesses) when used
+with libjpeg-turbo's SIMD extensions. It is generally recommended that the
+SIMD extensions be disabled, either by passing an argument of `-DWITH_SIMD=0`
+to `cmake` when configuring the build or by setting the environment variable
+`JSIMD_FORCENONE` to `1` at run time, when testing libjpeg-turbo with Valgrind,
+MSan, or other memory debuggers.
diff --git a/src/3rdparty/libjpeg/src/jchuff.c b/src/3rdparty/libjpeg/src/jchuff.c
index 939b3e76a1..526203e3db 100644
--- a/src/3rdparty/libjpeg/src/jchuff.c
+++ b/src/3rdparty/libjpeg/src/jchuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2009-2011, 2014-2016, 2018, D. R. Commander.
+ * Copyright (C) 2009-2011, 2014-2016, 2018-2019, D. R. Commander.
* Copyright (C) 2015, Matthieu Darbois.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
@@ -356,6 +356,8 @@ dump_buffer(working_state *state)
put_buffer = (put_buffer << size) | code; \
}
+#if SIZEOF_SIZE_T != 8 && !defined(_WIN64)
+
#define CHECKBUF15() { \
if (put_bits > 15) { \
EMIT_BYTE() \
@@ -363,6 +365,8 @@ dump_buffer(working_state *state)
} \
}
+#endif
+
#define CHECKBUF31() { \
if (put_bits > 31) { \
EMIT_BYTE() \
diff --git a/src/3rdparty/libjpeg/src/jcmaster.c b/src/3rdparty/libjpeg/src/jcmaster.c
index 93b3de6826..998dc40a5c 100644
--- a/src/3rdparty/libjpeg/src/jcmaster.c
+++ b/src/3rdparty/libjpeg/src/jcmaster.c
@@ -492,8 +492,8 @@ prepare_for_pass(j_compress_ptr cinfo)
*/
master->pass_type = output_pass;
master->pass_number++;
- /*FALLTHROUGH*/
#endif
+ /*FALLTHROUGH*/
case output_pass:
/* Do a data-output pass. */
/* We need not repeat per-scan setup if prior optimization pass did it. */
diff --git a/src/3rdparty/libjpeg/src/jdhuff.c b/src/3rdparty/libjpeg/src/jdhuff.c
index 95f38e547e..a1128178b0 100644
--- a/src/3rdparty/libjpeg/src/jdhuff.c
+++ b/src/3rdparty/libjpeg/src/jdhuff.c
@@ -4,7 +4,7 @@
* This file was part of the Independent JPEG Group's software:
* Copyright (C) 1991-1997, Thomas G. Lane.
* libjpeg-turbo Modifications:
- * Copyright (C) 2009-2011, 2016, 2018, D. R. Commander.
+ * Copyright (C) 2009-2011, 2016, 2018-2019, D. R. Commander.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -589,7 +589,11 @@ decode_mcu_slow(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
if (entropy->dc_needed[blkn]) {
/* Convert DC difference to actual value, update last_dc_val */
int ci = cinfo->MCU_membership[blkn];
- s += state.last_dc_val[ci];
+ /* This is really just
+ * s += state.last_dc_val[ci];
+ * It is written this way in order to shut up UBSan.
+ */
+ s = (int)((unsigned int)s + (unsigned int)state.last_dc_val[ci]);
state.last_dc_val[ci] = s;
if (block) {
/* Output the DC coefficient (assumes jpeg_natural_order[0] = 0) */
@@ -684,7 +688,7 @@ decode_mcu_fast(j_decompress_ptr cinfo, JBLOCKROW *MCU_data)
if (entropy->dc_needed[blkn]) {
int ci = cinfo->MCU_membership[blkn];
- s += state.last_dc_val[ci];
+ s = (int)((unsigned int)s + (unsigned int)state.last_dc_val[ci]);
state.last_dc_val[ci] = s;
if (block)
(*block)[0] = (JCOEF)s;
diff --git a/src/3rdparty/libjpeg/src/jdmerge.c b/src/3rdparty/libjpeg/src/jdmerge.c
index b3fec04f71..dff5a35087 100644
--- a/src/3rdparty/libjpeg/src/jdmerge.c
+++ b/src/3rdparty/libjpeg/src/jdmerge.c
@@ -429,8 +429,6 @@ h2v2_merged_upsample(j_decompress_ptr cinfo, JSAMPIMAGE input_buf,
#define PACK_TWO_PIXELS_LE(l, r) ((r << 16) | l)
#define PACK_TWO_PIXELS_BE(l, r) ((l << 16) | r)
-#define PACK_NEED_ALIGNMENT(ptr) (((size_t)(ptr)) & 3)
-
#define WRITE_TWO_PIXELS_LE(addr, pixels) { \
((INT16 *)(addr))[0] = (INT16)(pixels); \
((INT16 *)(addr))[1] = (INT16)((pixels) >> 16); \
diff --git a/src/3rdparty/libjpeg/src/jdsample.c b/src/3rdparty/libjpeg/src/jdsample.c
index 52ee9af49b..50a68b3013 100644
--- a/src/3rdparty/libjpeg/src/jdsample.c
+++ b/src/3rdparty/libjpeg/src/jdsample.c
@@ -8,6 +8,7 @@
* Copyright (C) 2010, 2015-2016, D. R. Commander.
* Copyright (C) 2014, MIPS Technologies, Inc., California.
* Copyright (C) 2015, Google, Inc.
+ * Copyright (C) 2019, Arm Limited.
* For conditions of distribution and use, see the accompanying README.ijg
* file.
*
@@ -315,9 +316,9 @@ h1v2_fancy_upsample(j_decompress_ptr cinfo, jpeg_component_info *compptr,
JSAMPARRAY output_data = *output_data_ptr;
JSAMPROW inptr0, inptr1, outptr;
#if BITS_IN_JSAMPLE == 8
- int thiscolsum;
+ int thiscolsum, bias;
#else
- JLONG thiscolsum;
+ JLONG thiscolsum, bias;
#endif
JDIMENSION colctr;
int inrow, outrow, v;
@@ -327,15 +328,18 @@ h1v2_fancy_upsample(j_decompress_ptr cinfo, jpeg_component_info *compptr,
for (v = 0; v < 2; v++) {
/* inptr0 points to nearest input row, inptr1 points to next nearest */
inptr0 = input_data[inrow];
- if (v == 0) /* next nearest is row above */
+ if (v == 0) { /* next nearest is row above */
inptr1 = input_data[inrow - 1];
- else /* next nearest is row below */
+ bias = 1;
+ } else { /* next nearest is row below */
inptr1 = input_data[inrow + 1];
+ bias = 2;
+ }
outptr = output_data[outrow++];
for (colctr = 0; colctr < compptr->downsampled_width; colctr++) {
thiscolsum = GETJSAMPLE(*inptr0++) * 3 + GETJSAMPLE(*inptr1++);
- *outptr++ = (JSAMPLE)((thiscolsum + 1) >> 2);
+ *outptr++ = (JSAMPLE)((thiscolsum + bias) >> 2);
}
}
inrow++;
diff --git a/src/3rdparty/md4c/md4c.c b/src/3rdparty/md4c/md4c.c
index 01e63a5fd2..3745cf3e46 100644
--- a/src/3rdparty/md4c/md4c.c
+++ b/src/3rdparty/md4c/md4c.c
@@ -127,7 +127,7 @@ struct MD_CTX_tag {
#endif
/* For resolving of inline spans. */
- MD_MARKCHAIN mark_chains[11];
+ MD_MARKCHAIN mark_chains[12];
#define PTR_CHAIN ctx->mark_chains[0]
#define TABLECELLBOUNDARIES ctx->mark_chains[1]
#define ASTERISK_OPENERS_extraword_mod3_0 ctx->mark_chains[2]
@@ -139,8 +139,9 @@ struct MD_CTX_tag {
#define UNDERSCORE_OPENERS ctx->mark_chains[8]
#define TILDE_OPENERS ctx->mark_chains[9]
#define BRACKET_OPENERS ctx->mark_chains[10]
+#define DOLLAR_OPENERS ctx->mark_chains[11]
#define OPENERS_CHAIN_FIRST 2
-#define OPENERS_CHAIN_LAST 10
+#define OPENERS_CHAIN_LAST 11
int n_table_cell_boundaries;
@@ -1128,7 +1129,7 @@ md_is_html_comment(MD_CTX* ctx, const MD_LINE* lines, int n_lines, OFF beg, OFF
if(off+1 < lines[0].end && CH(off) == _T('-') && CH(off+1) == _T('>'))
return FALSE;
- /* HTML comment must not contyain "--", so we scan just for "--" instead
+ /* HTML comment must not contain "--", so we scan just for "--" instead
* of "-->" and verify manually that '>' follows. */
if(md_scan_for_html_closer(ctx, _T("--"), 2,
lines, n_lines, off, max_end, p_end, &ctx->html_comment_horizon))
@@ -1686,7 +1687,7 @@ md_build_ref_def_hashtable(MD_CTX* ctx)
}
/* Make the bucket capable of holding more ref. defs. */
- list = (MD_REF_DEF_LIST*) malloc(sizeof(MD_REF_DEF_LIST) + 4 * sizeof(MD_REF_DEF));
+ list = (MD_REF_DEF_LIST*) malloc(sizeof(MD_REF_DEF_LIST) + 4 * sizeof(MD_REF_DEF*));
if(list == NULL) {
MD_LOG("malloc() failed.");
goto abort;
@@ -1703,7 +1704,7 @@ md_build_ref_def_hashtable(MD_CTX* ctx)
list = (MD_REF_DEF_LIST*) bucket;
if(list->n_ref_defs >= list->alloc_ref_defs) {
MD_REF_DEF_LIST* list_tmp = (MD_REF_DEF_LIST*) realloc(list,
- sizeof(MD_REF_DEF_LIST) + 2 * list->alloc_ref_defs * sizeof(MD_REF_DEF));
+ sizeof(MD_REF_DEF_LIST) + 2 * list->alloc_ref_defs * sizeof(MD_REF_DEF*));
if(list_tmp == NULL) {
MD_LOG("realloc() failed.");
goto abort;
@@ -2683,6 +2684,9 @@ md_build_mark_char_map(MD_CTX* ctx)
if(ctx->parser.flags & MD_FLAG_STRIKETHROUGH)
ctx->mark_char_map['~'] = 1;
+ if(ctx->parser.flags & MD_FLAG_LATEXMATHSPANS)
+ ctx->mark_char_map['$'] = 1;
+
if(ctx->parser.flags & MD_FLAG_PERMISSIVEEMAILAUTOLINKS)
ctx->mark_char_map['@'] = 1;
@@ -3251,6 +3255,21 @@ md_collect_marks(MD_CTX* ctx, const MD_LINE* lines, int n_lines, int table_mode)
continue;
}
+ /* A potential equation start/end */
+ if(ch == _T('$')) {
+ /* We can have at most two consecutive $ signs,
+ * where two dollar signs signify a display equation. */
+ OFF tmp = off+1;
+
+ while(tmp < line_end && CH(tmp) == _T('$'))
+ tmp++;
+
+ if (tmp - off <= 2)
+ PUSH_MARK(ch, off, tmp, MD_MARK_POTENTIAL_OPENER | MD_MARK_POTENTIAL_CLOSER);
+ off = tmp;
+ continue;
+ }
+
/* Turn non-trivial whitespace into single space. */
if(ISWHITESPACE_(ch)) {
OFF tmp = off+1;
@@ -3631,6 +3650,36 @@ md_analyze_tilde(MD_CTX* ctx, int mark_index)
}
static void
+md_analyze_dollar(MD_CTX* ctx, int mark_index)
+{
+ /* This should mimic the way inline equations work in LaTeX, so there
+ * can only ever be one item in the chain (i.e. the dollars can't be
+ * nested). This is basically the same as the md_analyze_tilde function,
+ * except that we require matching openers and closers to be of the same
+ * length.
+ *
+ * E.g.: $abc$$def$$ => abc (display equation) def (end equation) */
+ if(DOLLAR_OPENERS.head >= 0) {
+ /* If the potential closer has a non-matching number of $, discard */
+ MD_MARK* open = &ctx->marks[DOLLAR_OPENERS.head];
+ MD_MARK* close = &ctx->marks[mark_index];
+
+ int opener_index = DOLLAR_OPENERS.head;
+ md_rollback(ctx, opener_index, mark_index, MD_ROLLBACK_ALL);
+ if (open->end - open->beg == close->end - close->beg) {
+ /* We are the matching closer */
+ md_resolve_range(ctx, &DOLLAR_OPENERS, opener_index, mark_index);
+ } else {
+ /* We don't match the opener, so discard old opener and insert as opener */
+ md_mark_chain_append(ctx, &DOLLAR_OPENERS, mark_index);
+ }
+ } else {
+ /* No unmatched openers, so we are opener */
+ md_mark_chain_append(ctx, &DOLLAR_OPENERS, mark_index);
+ }
+}
+
+static void
md_analyze_permissive_url_autolink(MD_CTX* ctx, int mark_index)
{
MD_MARK* opener = &ctx->marks[mark_index];
@@ -3785,6 +3834,7 @@ md_analyze_marks(MD_CTX* ctx, const MD_LINE* lines, int n_lines,
case '_': /* Pass through. */
case '*': md_analyze_emph(ctx, i); break;
case '~': md_analyze_tilde(ctx, i); break;
+ case '$': md_analyze_dollar(ctx, i); break;
case '.': /* Pass through. */
case ':': md_analyze_permissive_url_autolink(ctx, i); break;
case '@': md_analyze_permissive_email_autolink(ctx, i); break;
@@ -3841,7 +3891,7 @@ static void
md_analyze_link_contents(MD_CTX* ctx, const MD_LINE* lines, int n_lines,
int mark_beg, int mark_end)
{
- md_analyze_marks(ctx, lines, n_lines, mark_beg, mark_end, _T("*_~@:."));
+ md_analyze_marks(ctx, lines, n_lines, mark_beg, mark_end, _T("*_~$@:."));
ASTERISK_OPENERS_extraword_mod3_0.head = -1;
ASTERISK_OPENERS_extraword_mod3_0.tail = -1;
ASTERISK_OPENERS_extraword_mod3_1.head = -1;
@@ -3858,6 +3908,8 @@ md_analyze_link_contents(MD_CTX* ctx, const MD_LINE* lines, int n_lines,
UNDERSCORE_OPENERS.tail = -1;
TILDE_OPENERS.head = -1;
TILDE_OPENERS.tail = -1;
+ DOLLAR_OPENERS.head = -1;
+ DOLLAR_OPENERS.tail = -1;
}
static int
@@ -3974,6 +4026,16 @@ md_process_inlines(MD_CTX* ctx, const MD_LINE* lines, int n_lines)
MD_LEAVE_SPAN(MD_SPAN_DEL, NULL);
break;
+ case '$':
+ if(mark->flags & MD_MARK_OPENER) {
+ MD_ENTER_SPAN((mark->end - off) % 2 ? MD_SPAN_LATEXMATH : MD_SPAN_LATEXMATH_DISPLAY, NULL);
+ text_type = MD_TEXT_LATEXMATH;
+ } else {
+ MD_LEAVE_SPAN((mark->end - off) % 2 ? MD_SPAN_LATEXMATH : MD_SPAN_LATEXMATH_DISPLAY, NULL);
+ text_type = MD_TEXT_NORMAL;
+ }
+ break;
+
case '[': /* Link, image. */
case '!':
case ']':
@@ -4072,12 +4134,12 @@ md_process_inlines(MD_CTX* ctx, const MD_LINE* lines, int n_lines)
if(off >= end)
break;
- if(text_type == MD_TEXT_CODE) {
+ if(text_type == MD_TEXT_CODE || text_type == MD_TEXT_LATEXMATH) {
OFF tmp;
MD_ASSERT(prev_mark != NULL);
- MD_ASSERT(prev_mark->ch == '`' && (prev_mark->flags & MD_MARK_OPENER));
- MD_ASSERT(mark->ch == '`' && (mark->flags & MD_MARK_CLOSER));
+ MD_ASSERT(ISANYOF2_(prev_mark->ch, '`', '$') && (prev_mark->flags & MD_MARK_OPENER));
+ MD_ASSERT(ISANYOF2_(mark->ch, '`', '$') && (mark->flags & MD_MARK_CLOSER));
/* Inside a code span, trailing line whitespace has to be
* outputted. */
@@ -4085,12 +4147,11 @@ md_process_inlines(MD_CTX* ctx, const MD_LINE* lines, int n_lines)
while(off < ctx->size && ISBLANK(off))
off++;
if(off > tmp)
- MD_TEXT(MD_TEXT_CODE, STR(tmp), off-tmp);
+ MD_TEXT(text_type, STR(tmp), off-tmp);
/* and new lines are transformed into single spaces. */
if(prev_mark->end < off && off < mark->beg)
- MD_TEXT(MD_TEXT_CODE, _T(" "), 1);
-
+ MD_TEXT(text_type, _T(" "), 1);
} else if(text_type == MD_TEXT_HTML) {
/* Inside raw HTML, we output the new line verbatim, including
* any trailing spaces. */
@@ -5425,7 +5486,10 @@ md_is_container_mark(MD_CTX* ctx, unsigned indent, OFF beg, OFF* p_end, MD_CONTA
p_container->start = p_container->start * 10 + CH(off) - _T('0');
off++;
}
- if(off+1 < ctx->size && (CH(off) == _T('.') || CH(off) == _T(')')) && (ISBLANK(off+1) || ISNEWLINE(off+1))) {
+ if(off > beg && off+1 < ctx->size &&
+ (CH(off) == _T('.') || CH(off) == _T(')')) &&
+ (ISBLANK(off+1) || ISNEWLINE(off+1)))
+ {
p_container->ch = CH(off);
p_container->is_loose = FALSE;
p_container->is_task = FALSE;
@@ -5700,7 +5764,7 @@ md_analyze_line(MD_CTX* ctx, OFF beg, OFF* p_end,
md_is_container_mark(ctx, line->indent, off, &off, &container))
{
if(pivot_line->type == MD_LINE_TEXT && n_parents == ctx->n_containers &&
- (off >= ctx->size || ISNEWLINE(off)))
+ (off >= ctx->size || ISNEWLINE(off)) && container.ch != _T('>'))
{
/* Noop. List mark followed by a blank line cannot interrupt a paragraph. */
} else if(pivot_line->type == MD_LINE_TEXT && n_parents == ctx->n_containers &&
diff --git a/src/3rdparty/md4c/md4c.h b/src/3rdparty/md4c/md4c.h
index dcdadad88d..6d9fce5180 100644
--- a/src/3rdparty/md4c/md4c.h
+++ b/src/3rdparty/md4c/md4c.h
@@ -129,7 +129,13 @@ typedef enum MD_SPANTYPE {
/* <del>...</del>
* Note: Recognized only when MD_FLAG_STRIKETHROUGH is enabled.
*/
- MD_SPAN_DEL
+ MD_SPAN_DEL,
+
+ /* For recognizing inline ($) and display ($$) equations
+ * Note: Recognized only when MD_FLAG_LATEXMATHSPANS is enabled.
+ */
+ MD_SPAN_LATEXMATH,
+ MD_SPAN_LATEXMATH_DISPLAY
} MD_SPANTYPE;
/* Text is the actual textual contents of span. */
@@ -168,7 +174,11 @@ typedef enum MD_TEXTTYPE {
/* Text is a raw HTML. If it is contents of a raw HTML block (i.e. not
* an inline raw HTML), then MD_TEXT_BR and MD_TEXT_SOFTBR are not used.
* The text contains verbatim '\n' for the new lines. */
- MD_TEXT_HTML
+ MD_TEXT_HTML,
+
+ /* Text is inside an equation. This is processed the same way as inlined code
+ * spans (`code`). */
+ MD_TEXT_LATEXMATH
} MD_TEXTTYPE;
@@ -275,6 +285,7 @@ typedef struct MD_SPAN_IMG_DETAIL {
#define MD_FLAG_STRIKETHROUGH 0x0200 /* Enable strikethrough extension. */
#define MD_FLAG_PERMISSIVEWWWAUTOLINKS 0x0400 /* Enable WWW autolinks (even without any scheme prefix, if they begin with 'www.') */
#define MD_FLAG_TASKLISTS 0x0800 /* Enable task list extension. */
+#define MD_FLAG_LATEXMATHSPANS 0x1000 /* Enable $ and $$ containing LaTeX equations. */
#define MD_FLAG_PERMISSIVEAUTOLINKS (MD_FLAG_PERMISSIVEEMAILAUTOLINKS | MD_FLAG_PERMISSIVEURLAUTOLINKS | MD_FLAG_PERMISSIVEWWWAUTOLINKS)
#define MD_FLAG_NOHTML (MD_FLAG_NOHTMLBLOCKS | MD_FLAG_NOHTMLSPANS)
diff --git a/src/3rdparty/md4c/qt_attribution.json b/src/3rdparty/md4c/qt_attribution.json
index fa0fd18853..5fd77269e9 100644
--- a/src/3rdparty/md4c/qt_attribution.json
+++ b/src/3rdparty/md4c/qt_attribution.json
@@ -9,7 +9,7 @@
"License": "MIT License",
"LicenseId": "MIT",
"LicenseFile": "LICENSE.md",
- "Version": "0.3.3",
- "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.3.3",
+ "Version": "0.3.4",
+ "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.3.4",
"Copyright": "Copyright © 2016-2019 Martin Mitáš"
}
diff --git a/src/3rdparty/sqlite/patches/0001-Fix-CVE-2019-16168-in-SQLite.patch b/src/3rdparty/sqlite/patches/0001-Fix-CVE-2019-16168-in-SQLite.patch
deleted file mode 100644
index e56a6a2411..0000000000
--- a/src/3rdparty/sqlite/patches/0001-Fix-CVE-2019-16168-in-SQLite.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 3442a3ce9c2bd366eb0bd1c18d37a6ce732a888d Mon Sep 17 00:00:00 2001
-From: Andy Shaw <andy.shaw@qt.io>
-Date: Wed, 25 Sep 2019 09:17:01 +0200
-Subject: [PATCH] Fix CVE-2019-16168 in SQLite
-
-v3.29.0 is the latest and there is no indication as to when the next
-release is so we will apply this separately for now and it can be
-reverted once it is in a release that we ship with.
-
-This patch is taken from https://www.sqlite.org/src/info/98357d8c1263920b
-
-Change-Id: I82d398b093b67842a4369e3220c01e7eea30763a
----
- src/3rdparty/sqlite/sqlite3.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c
-index 61bfdeb766..b3e6ae27b6 100644
---- a/src/3rdparty/sqlite/sqlite3.c
-+++ b/src/3rdparty/sqlite/sqlite3.c
-@@ -105933,7 +105933,9 @@ static void decodeIntArray(
- if( sqlite3_strglob("unordered*", z)==0 ){
- pIndex->bUnordered = 1;
- }else if( sqlite3_strglob("sz=[0-9]*", z)==0 ){
-- pIndex->szIdxRow = sqlite3LogEst(sqlite3Atoi(z+3));
-+ int sz = sqlite3Atoi(z+3);
-+ if( sz<2 ) sz = 2;
-+ pIndex->szIdxRow = sqlite3LogEst(sz);
- }else if( sqlite3_strglob("noskipscan*", z)==0 ){
- pIndex->noSkipScan = 1;
- }
-@@ -143260,6 +143262,7 @@ static int whereLoopAddBtreeIndex(
- ** it to pNew->rRun, which is currently set to the cost of the index
- ** seek only. Then, if this is a non-covering index, add the cost of
- ** visiting the rows in the main table. */
-+ assert( pSrc->pTab->szTabRow>0 );
- rCostIdx = pNew->nOut + 1 + (15*pProbe->szIdxRow)/pSrc->pTab->szTabRow;
- pNew->rRun = sqlite3LogEstAdd(rLogSize, rCostIdx);
- if( (pNew->wsFlags & (WHERE_IDX_ONLY|WHERE_IPK))==0 ){
---
-2.20.1 (Apple Git-117)
-
diff --git a/src/3rdparty/sqlite/qt_attribution.json b/src/3rdparty/sqlite/qt_attribution.json
index 2ad20f8637..4d0851e9b9 100644
--- a/src/3rdparty/sqlite/qt_attribution.json
+++ b/src/3rdparty/sqlite/qt_attribution.json
@@ -6,8 +6,8 @@
"Description": "SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.",
"Homepage": "https://www.sqlite.org/",
- "Version": "3.29.0",
- "DownloadLocation": "https://www.sqlite.org/2019/sqlite-amalgamation-3290000.zip",
+ "Version": "3.30.1",
+ "DownloadLocation": "https://www.sqlite.org/2019/sqlite-amalgamation-3300100.zip",
"License": "Public Domain",
"Copyright": "The authors disclaim copyright to the source code. However, a license can be obtained if needed."
}
diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c
index b3e6ae27b6..8fd740b300 100644
--- a/src/3rdparty/sqlite/sqlite3.c
+++ b/src/3rdparty/sqlite/sqlite3.c
@@ -1,6 +1,6 @@
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
-** version 3.29.0. By combining all the individual C code files into this
+** version 3.30.1. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements
@@ -331,8 +331,6 @@ static const char * const sqlite3azCompileOpt[] = {
#endif
#if defined(SQLITE_ENABLE_STAT4)
"ENABLE_STAT4",
-#elif defined(SQLITE_ENABLE_STAT3)
- "ENABLE_STAT3",
#endif
#if SQLITE_ENABLE_STMTVTAB
"ENABLE_STMTVTAB",
@@ -1167,9 +1165,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.29.0"
-#define SQLITE_VERSION_NUMBER 3029000
-#define SQLITE_SOURCE_ID "2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6"
+#define SQLITE_VERSION "3.30.1"
+#define SQLITE_VERSION_NUMBER 3030001
+#define SQLITE_SOURCE_ID "2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -3137,6 +3135,17 @@ struct sqlite3_mem_methods {
** following this call. The second parameter may be a NULL pointer, in
** which case the trigger setting is not reported back. </dd>
**
+** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
+** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
+** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
+** There should be two additional arguments.
+** The first argument is an integer which is 0 to disable views,
+** positive to enable views or negative to leave the setting unchanged.
+** The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether views are disabled or enabled
+** following this call. The second parameter may be a NULL pointer, in
+** which case the view setting is not reported back. </dd>
+**
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
** <dd> ^This option is used to enable or disable the
@@ -3309,7 +3318,8 @@ struct sqlite3_mem_methods {
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE 1012 /* int int* */
#define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */
#define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */
-#define SQLITE_DBCONFIG_MAX 1014 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */
+#define SQLITE_DBCONFIG_MAX 1015 /* Largest DBCONFIG */
/*
** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -4858,7 +4868,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
** ^The specific value of WHERE-clause [parameter] might influence the
** choice of query plan if the parameter is the left-hand side of a [LIKE]
** or [GLOB] operator or if the parameter is compared to an indexed column
-** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.
+** and the [SQLITE_ENABLE_STAT4] compile-time option is enabled.
** </li>
** </ol>
**
@@ -5893,6 +5903,12 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
** perform additional optimizations on deterministic functions, so use
** of the [SQLITE_DETERMINISTIC] flag is recommended where possible.
**
+** ^The fourth parameter may also optionally include the [SQLITE_DIRECTONLY]
+** flag, which if present prevents the function from being invoked from
+** within VIEWs or TRIGGERs. For security reasons, the [SQLITE_DIRECTONLY]
+** flag is recommended for any application-defined SQL function that has
+** side-effects.
+**
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
** function can gain access to this pointer using [sqlite3_user_data()].)^
**
@@ -6009,8 +6025,30 @@ SQLITE_API int sqlite3_create_window_function(
** [SQLITE_UTF8 | preferred text encoding] as the fourth argument
** to [sqlite3_create_function()], [sqlite3_create_function16()], or
** [sqlite3_create_function_v2()].
+**
+** The SQLITE_DETERMINISTIC flag means that the new function will always
+** maps the same inputs into the same output. The abs() function is
+** deterministic, for example, but randomblob() is not.
+**
+** The SQLITE_DIRECTONLY flag means that the function may only be invoked
+** from top-level SQL, and cannot be used in VIEWs or TRIGGERs. This is
+** a security feature which is recommended for all
+** [application-defined SQL functions] that have side-effects. This flag
+** prevents an attacker from adding triggers and views to a schema then
+** tricking a high-privilege application into causing unintended side-effects
+** while performing ordinary queries.
+**
+** The SQLITE_SUBTYPE flag indicates to SQLite that a function may call
+** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
+** Specifying this flag makes no difference for scalar or aggregate user
+** functions. However, if it is not specified for a user-defined window
+** function, then any sub-types belonging to arguments passed to the window
+** function may be discarded before the window function is called (i.e.
+** sqlite3_value_subtype() will always return 0).
*/
-#define SQLITE_DETERMINISTIC 0x800
+#define SQLITE_DETERMINISTIC 0x000000800
+#define SQLITE_DIRECTONLY 0x000080000
+#define SQLITE_SUBTYPE 0x000100000
/*
** CAPI3REF: Deprecated Functions
@@ -7656,6 +7694,12 @@ struct sqlite3_index_info {
** ^The sqlite3_create_module()
** interface is equivalent to sqlite3_create_module_v2() with a NULL
** destructor.
+**
+** ^If the third parameter (the pointer to the sqlite3_module object) is
+** NULL then no new module is create and any existing modules with the
+** same name are dropped.
+**
+** See also: [sqlite3_drop_modules()]
*/
SQLITE_API int sqlite3_create_module(
sqlite3 *db, /* SQLite connection to register module with */
@@ -7672,6 +7716,23 @@ SQLITE_API int sqlite3_create_module_v2(
);
/*
+** CAPI3REF: Remove Unnecessary Virtual Table Implementations
+** METHOD: sqlite3
+**
+** ^The sqlite3_drop_modules(D,L) interface removes all virtual
+** table modules from database connection D except those named on list L.
+** The L parameter must be either NULL or a pointer to an array of pointers
+** to strings where the array is terminated by a single NULL pointer.
+** ^If the L parameter is NULL, then all virtual table modules are removed.
+**
+** See also: [sqlite3_create_module()]
+*/
+SQLITE_API int sqlite3_drop_modules(
+ sqlite3 *db, /* Remove modules from this connection */
+ const char **azKeep /* Except, do not remove the ones named here */
+);
+
+/*
** CAPI3REF: Virtual Table Instance Object
** KEYWORDS: sqlite3_vtab
**
@@ -8379,7 +8440,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_FIRST 5
#define SQLITE_TESTCTRL_PRNG_SAVE 5
#define SQLITE_TESTCTRL_PRNG_RESTORE 6
-#define SQLITE_TESTCTRL_PRNG_RESET 7
+#define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
#define SQLITE_TESTCTRL_BITVEC_TEST 8
#define SQLITE_TESTCTRL_FAULT_INSTALL 9
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
@@ -8402,7 +8463,9 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_IMPOSTER 25
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
#define SQLITE_TESTCTRL_RESULT_INTREAL 27
-#define SQLITE_TESTCTRL_LAST 27 /* Largest TESTCTRL */
+#define SQLITE_TESTCTRL_PRNG_SEED 28
+#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
+#define SQLITE_TESTCTRL_LAST 29 /* Largest TESTCTRL */
/*
** CAPI3REF: SQL Keyword Checking
@@ -13099,15 +13162,15 @@ struct fts5_api {
** So we have to define the macros in different ways depending on the
** compiler.
*/
-#if defined(__PTRDIFF_TYPE__) /* This case should work for GCC */
+#if defined(HAVE_STDINT_H) /* Use this case if we have ANSI headers */
+# define SQLITE_INT_TO_PTR(X) ((void*)(intptr_t)(X))
+# define SQLITE_PTR_TO_INT(X) ((int)(intptr_t)(X))
+#elif defined(__PTRDIFF_TYPE__) /* This case should work for GCC */
# define SQLITE_INT_TO_PTR(X) ((void*)(__PTRDIFF_TYPE__)(X))
# define SQLITE_PTR_TO_INT(X) ((int)(__PTRDIFF_TYPE__)(X))
#elif !defined(__GNUC__) /* Works for compilers other than LLVM */
# define SQLITE_INT_TO_PTR(X) ((void*)&((char*)0)[X])
# define SQLITE_PTR_TO_INT(X) ((int)(((char*)X)-(char*)0))
-#elif defined(HAVE_STDINT_H) /* Use this case if we have ANSI headers */
-# define SQLITE_INT_TO_PTR(X) ((void*)(intptr_t)(X))
-# define SQLITE_PTR_TO_INT(X) ((int)(intptr_t)(X))
#else /* Generates a warning - but it always works */
# define SQLITE_INT_TO_PTR(X) ((void*)(X))
# define SQLITE_PTR_TO_INT(X) ((int)(X))
@@ -13597,100 +13660,103 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
#define TK_VIEW 79
#define TK_VIRTUAL 80
#define TK_WITH 81
-#define TK_CURRENT 82
-#define TK_FOLLOWING 83
-#define TK_PARTITION 84
-#define TK_PRECEDING 85
-#define TK_RANGE 86
-#define TK_UNBOUNDED 87
-#define TK_EXCLUDE 88
-#define TK_GROUPS 89
-#define TK_OTHERS 90
-#define TK_TIES 91
-#define TK_REINDEX 92
-#define TK_RENAME 93
-#define TK_CTIME_KW 94
-#define TK_ANY 95
-#define TK_BITAND 96
-#define TK_BITOR 97
-#define TK_LSHIFT 98
-#define TK_RSHIFT 99
-#define TK_PLUS 100
-#define TK_MINUS 101
-#define TK_STAR 102
-#define TK_SLASH 103
-#define TK_REM 104
-#define TK_CONCAT 105
-#define TK_COLLATE 106
-#define TK_BITNOT 107
-#define TK_ON 108
-#define TK_INDEXED 109
-#define TK_STRING 110
-#define TK_JOIN_KW 111
-#define TK_CONSTRAINT 112
-#define TK_DEFAULT 113
-#define TK_NULL 114
-#define TK_PRIMARY 115
-#define TK_UNIQUE 116
-#define TK_CHECK 117
-#define TK_REFERENCES 118
-#define TK_AUTOINCR 119
-#define TK_INSERT 120
-#define TK_DELETE 121
-#define TK_UPDATE 122
-#define TK_SET 123
-#define TK_DEFERRABLE 124
-#define TK_FOREIGN 125
-#define TK_DROP 126
-#define TK_UNION 127
-#define TK_ALL 128
-#define TK_EXCEPT 129
-#define TK_INTERSECT 130
-#define TK_SELECT 131
-#define TK_VALUES 132
-#define TK_DISTINCT 133
-#define TK_DOT 134
-#define TK_FROM 135
-#define TK_JOIN 136
-#define TK_USING 137
-#define TK_ORDER 138
-#define TK_GROUP 139
-#define TK_HAVING 140
-#define TK_LIMIT 141
-#define TK_WHERE 142
-#define TK_INTO 143
-#define TK_NOTHING 144
-#define TK_FLOAT 145
-#define TK_BLOB 146
-#define TK_INTEGER 147
-#define TK_VARIABLE 148
-#define TK_CASE 149
-#define TK_WHEN 150
-#define TK_THEN 151
-#define TK_ELSE 152
-#define TK_INDEX 153
-#define TK_ALTER 154
-#define TK_ADD 155
-#define TK_WINDOW 156
-#define TK_OVER 157
-#define TK_FILTER 158
-#define TK_TRUEFALSE 159
-#define TK_ISNOT 160
-#define TK_FUNCTION 161
+#define TK_NULLS 82
+#define TK_FIRST 83
+#define TK_LAST 84
+#define TK_CURRENT 85
+#define TK_FOLLOWING 86
+#define TK_PARTITION 87
+#define TK_PRECEDING 88
+#define TK_RANGE 89
+#define TK_UNBOUNDED 90
+#define TK_EXCLUDE 91
+#define TK_GROUPS 92
+#define TK_OTHERS 93
+#define TK_TIES 94
+#define TK_REINDEX 95
+#define TK_RENAME 96
+#define TK_CTIME_KW 97
+#define TK_ANY 98
+#define TK_BITAND 99
+#define TK_BITOR 100
+#define TK_LSHIFT 101
+#define TK_RSHIFT 102
+#define TK_PLUS 103
+#define TK_MINUS 104
+#define TK_STAR 105
+#define TK_SLASH 106
+#define TK_REM 107
+#define TK_CONCAT 108
+#define TK_COLLATE 109
+#define TK_BITNOT 110
+#define TK_ON 111
+#define TK_INDEXED 112
+#define TK_STRING 113
+#define TK_JOIN_KW 114
+#define TK_CONSTRAINT 115
+#define TK_DEFAULT 116
+#define TK_NULL 117
+#define TK_PRIMARY 118
+#define TK_UNIQUE 119
+#define TK_CHECK 120
+#define TK_REFERENCES 121
+#define TK_AUTOINCR 122
+#define TK_INSERT 123
+#define TK_DELETE 124
+#define TK_UPDATE 125
+#define TK_SET 126
+#define TK_DEFERRABLE 127
+#define TK_FOREIGN 128
+#define TK_DROP 129
+#define TK_UNION 130
+#define TK_ALL 131
+#define TK_EXCEPT 132
+#define TK_INTERSECT 133
+#define TK_SELECT 134
+#define TK_VALUES 135
+#define TK_DISTINCT 136
+#define TK_DOT 137
+#define TK_FROM 138
+#define TK_JOIN 139
+#define TK_USING 140
+#define TK_ORDER 141
+#define TK_GROUP 142
+#define TK_HAVING 143
+#define TK_LIMIT 144
+#define TK_WHERE 145
+#define TK_INTO 146
+#define TK_NOTHING 147
+#define TK_FLOAT 148
+#define TK_BLOB 149
+#define TK_INTEGER 150
+#define TK_VARIABLE 151
+#define TK_CASE 152
+#define TK_WHEN 153
+#define TK_THEN 154
+#define TK_ELSE 155
+#define TK_INDEX 156
+#define TK_ALTER 157
+#define TK_ADD 158
+#define TK_WINDOW 159
+#define TK_OVER 160
+#define TK_FILTER 161
#define TK_COLUMN 162
#define TK_AGG_FUNCTION 163
#define TK_AGG_COLUMN 164
-#define TK_UMINUS 165
-#define TK_UPLUS 166
-#define TK_TRUTH 167
-#define TK_REGISTER 168
-#define TK_VECTOR 169
-#define TK_SELECT_COLUMN 170
-#define TK_IF_NULL_ROW 171
-#define TK_ASTERISK 172
-#define TK_SPAN 173
-#define TK_SPACE 174
-#define TK_ILLEGAL 175
+#define TK_TRUEFALSE 165
+#define TK_ISNOT 166
+#define TK_FUNCTION 167
+#define TK_UMINUS 168
+#define TK_UPLUS 169
+#define TK_TRUTH 170
+#define TK_REGISTER 171
+#define TK_VECTOR 172
+#define TK_SELECT_COLUMN 173
+#define TK_IF_NULL_ROW 174
+#define TK_ASTERISK 175
+#define TK_SPAN 176
+#define TK_SPACE 177
+#define TK_ILLEGAL 178
/************** End of parse.h ***********************************************/
/************** Continuing where we left off in sqliteInt.h ******************/
@@ -14102,20 +14168,6 @@ typedef INT16_TYPE LogEst;
#endif
/*
-** Only one of SQLITE_ENABLE_STAT3 or SQLITE_ENABLE_STAT4 can be defined.
-** Priority is given to SQLITE_ENABLE_STAT4. If either are defined, also
-** define SQLITE_ENABLE_STAT3_OR_STAT4
-*/
-#ifdef SQLITE_ENABLE_STAT4
-# undef SQLITE_ENABLE_STAT3
-# define SQLITE_ENABLE_STAT3_OR_STAT4 1
-#elif SQLITE_ENABLE_STAT3
-# define SQLITE_ENABLE_STAT3_OR_STAT4 1
-#elif SQLITE_ENABLE_STAT3_OR_STAT4
-# undef SQLITE_ENABLE_STAT3_OR_STAT4
-#endif
-
-/*
** SELECTTRACE_ENABLED will be either 1 or 0 depending on whether or not
** the Select query generator tracing logic is turned on.
*/
@@ -14984,24 +15036,24 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Count 93 /* synopsis: r[P2]=count() */
#define OP_ReadCookie 94
#define OP_SetCookie 95
-#define OP_BitAnd 96 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
-#define OP_BitOr 97 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
-#define OP_ShiftLeft 98 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
-#define OP_ShiftRight 99 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
-#define OP_Add 100 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
-#define OP_Subtract 101 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
-#define OP_Multiply 102 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
-#define OP_Divide 103 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
-#define OP_Remainder 104 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
-#define OP_Concat 105 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
-#define OP_ReopenIdx 106 /* synopsis: root=P2 iDb=P3 */
-#define OP_BitNot 107 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
-#define OP_OpenRead 108 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenWrite 109 /* synopsis: root=P2 iDb=P3 */
-#define OP_String8 110 /* same as TK_STRING, synopsis: r[P2]='P4' */
-#define OP_OpenDup 111
-#define OP_OpenAutoindex 112 /* synopsis: nColumn=P2 */
-#define OP_OpenEphemeral 113 /* synopsis: nColumn=P2 */
+#define OP_ReopenIdx 96 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenRead 97 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenWrite 98 /* synopsis: root=P2 iDb=P3 */
+#define OP_BitAnd 99 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
+#define OP_BitOr 100 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
+#define OP_ShiftLeft 101 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
+#define OP_ShiftRight 102 /* same as TK_RSHIFT, synopsis: r[P3]=r[P2]>>r[P1] */
+#define OP_Add 103 /* same as TK_PLUS, synopsis: r[P3]=r[P1]+r[P2] */
+#define OP_Subtract 104 /* same as TK_MINUS, synopsis: r[P3]=r[P2]-r[P1] */
+#define OP_Multiply 105 /* same as TK_STAR, synopsis: r[P3]=r[P1]*r[P2] */
+#define OP_Divide 106 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
+#define OP_Remainder 107 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
+#define OP_Concat 108 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
+#define OP_OpenDup 109
+#define OP_BitNot 110 /* same as TK_BITNOT, synopsis: r[P2]= ~r[P1] */
+#define OP_OpenAutoindex 111 /* synopsis: nColumn=P2 */
+#define OP_OpenEphemeral 112 /* synopsis: nColumn=P2 */
+#define OP_String8 113 /* same as TK_STRING, synopsis: r[P2]='P4' */
#define OP_SorterOpen 114
#define OP_SequenceTest 115 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
#define OP_OpenPseudo 116 /* synopsis: P3 columns in r[P2] */
@@ -15033,10 +15085,10 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_LoadAnalysis 142
#define OP_DropTable 143
#define OP_DropIndex 144
-#define OP_Real 145 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
-#define OP_DropTrigger 146
-#define OP_IntegrityCk 147
-#define OP_RowSetAdd 148 /* synopsis: rowset(P1)=r[P2] */
+#define OP_DropTrigger 145
+#define OP_IntegrityCk 146
+#define OP_RowSetAdd 147 /* synopsis: rowset(P1)=r[P2] */
+#define OP_Real 148 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
#define OP_Param 149
#define OP_FkCounter 150 /* synopsis: fkctr[P1]+=P2 */
#define OP_MemMax 151 /* synopsis: r[P1]=max(r[P1],r[P2]) */
@@ -15085,13 +15137,13 @@ typedef struct VdbeOpList VdbeOpList;
/* 72 */ 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10,\
/* 80 */ 0x10, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00,\
/* 88 */ 0x12, 0x20, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00,\
-/* 96 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,\
-/* 104 */ 0x26, 0x26, 0x00, 0x12, 0x00, 0x00, 0x10, 0x00,\
-/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 96 */ 0x00, 0x00, 0x00, 0x26, 0x26, 0x26, 0x26, 0x26,\
+/* 104 */ 0x26, 0x26, 0x26, 0x26, 0x26, 0x00, 0x12, 0x00,\
+/* 112 */ 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
/* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
/* 128 */ 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x10,\
/* 136 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,\
-/* 144 */ 0x00, 0x10, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04,\
+/* 144 */ 0x00, 0x00, 0x00, 0x06, 0x10, 0x10, 0x00, 0x04,\
/* 152 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\
/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00,}
@@ -15161,10 +15213,10 @@ SQLITE_PRIVATE void sqlite3ExplainBreakpoint(const char*,const char*);
# define sqlite3ExplainBreakpoint(A,B) /*no-op*/
#endif
SQLITE_PRIVATE void sqlite3VdbeAddParseSchemaOp(Vdbe*,int,char*);
-SQLITE_PRIVATE void sqlite3VdbeChangeOpcode(Vdbe*, u32 addr, u8);
-SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe*, u32 addr, int P1);
-SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe*, u32 addr, int P2);
-SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe*, u32 addr, int P3);
+SQLITE_PRIVATE void sqlite3VdbeChangeOpcode(Vdbe*, int addr, u8);
+SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe*, int addr, int P1);
+SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe*, int addr, int P2);
+SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe*, int addr, int P3);
SQLITE_PRIVATE void sqlite3VdbeChangeP5(Vdbe*, u16 P5);
SQLITE_PRIVATE void sqlite3VdbeJumpHere(Vdbe*, int addr);
SQLITE_PRIVATE int sqlite3VdbeChangeToNoop(Vdbe*, int addr);
@@ -16121,6 +16173,7 @@ SQLITE_PRIVATE void sqlite3OsCloseFree(sqlite3_file *);
#define MUTEX_LOGIC(X)
#else
#define MUTEX_LOGIC(X) X
+SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*);
#endif /* defined(SQLITE_MUTEX_OMIT) */
/************** End of mutex.h ***********************************************/
@@ -16379,6 +16432,7 @@ struct sqlite3 {
unsigned orphanTrigger : 1; /* Last statement is orphaned TEMP trigger */
unsigned imposterTable : 1; /* Building an imposter table */
unsigned reopenMemdb : 1; /* ATTACH is really a reopen using MemDB */
+ char **azInit; /* "type", "name", and "tbl_name" columns */
} init;
int nVdbeActive; /* Number of VDBEs currently running */
int nVdbeRead; /* Number of active VDBEs that read or write */
@@ -16517,16 +16571,17 @@ struct sqlite3 {
#define SQLITE_Defensive 0x10000000 /* Input SQL is likely hostile */
#define SQLITE_DqsDDL 0x20000000 /* dbl-quoted strings allowed in DDL*/
#define SQLITE_DqsDML 0x40000000 /* dbl-quoted strings allowed in DML*/
+#define SQLITE_EnableView 0x80000000 /* Enable the use of views */
/* Flags used only if debugging */
#define HI(X) ((u64)(X)<<32)
#ifdef SQLITE_DEBUG
-#define SQLITE_SqlTrace HI(0x0001) /* Debug print SQL as it executes */
-#define SQLITE_VdbeListing HI(0x0002) /* Debug listings of VDBE progs */
-#define SQLITE_VdbeTrace HI(0x0004) /* True to trace VDBE execution */
-#define SQLITE_VdbeAddopTrace HI(0x0008) /* Trace sqlite3VdbeAddOp() calls */
-#define SQLITE_VdbeEQP HI(0x0010) /* Debug EXPLAIN QUERY PLAN */
-#define SQLITE_ParserTrace HI(0x0020) /* PRAGMA parser_trace=ON */
+#define SQLITE_SqlTrace HI(0x0100000) /* Debug print SQL as it executes */
+#define SQLITE_VdbeListing HI(0x0200000) /* Debug listings of VDBE progs */
+#define SQLITE_VdbeTrace HI(0x0400000) /* True to trace VDBE execution */
+#define SQLITE_VdbeAddopTrace HI(0x0800000) /* Trace sqlite3VdbeAddOp() calls */
+#define SQLITE_VdbeEQP HI(0x1000000) /* Debug EXPLAIN QUERY PLAN */
+#define SQLITE_ParserTrace HI(0x2000000) /* PRAGMA parser_trace=ON */
#endif
/*
@@ -16554,8 +16609,8 @@ struct sqlite3 {
#define SQLITE_OmitNoopJoin 0x0100 /* Omit unused tables in joins */
#define SQLITE_CountOfView 0x0200 /* The count-of-view optimization */
#define SQLITE_CursorHints 0x0400 /* Add OP_CursorHint opcodes */
-#define SQLITE_Stat34 0x0800 /* Use STAT3 or STAT4 data */
- /* TH3 expects the Stat34 ^^^^^^ value to be 0x0800. Don't change it */
+#define SQLITE_Stat4 0x0800 /* Use STAT4 data */
+ /* TH3 expects the Stat4 ^^^^^^ value to be 0x0800. Don't change it */
#define SQLITE_PushDown 0x1000 /* The push-down optimization */
#define SQLITE_SimplifyJoin 0x2000 /* Convert LEFT JOIN to JOIN */
#define SQLITE_SkipScan 0x4000 /* Skip-scans */
@@ -16643,6 +16698,7 @@ struct FuncDestructor {
** SQLITE_FUNC_LENGTH == OPFLAG_LENGTHARG
** SQLITE_FUNC_TYPEOF == OPFLAG_TYPEOFARG
** SQLITE_FUNC_CONSTANT == SQLITE_DETERMINISTIC from the API
+** SQLITE_FUNC_DIRECT == SQLITE_DIRECTONLY from the API
** SQLITE_FUNC_ENCMASK depends on SQLITE_UTF* macros in the API
*/
#define SQLITE_FUNC_ENCMASK 0x0003 /* SQLITE_UTF8, SQLITE_UTF16BE or UTF16LE */
@@ -16663,6 +16719,8 @@ struct FuncDestructor {
#define SQLITE_FUNC_OFFSET 0x8000 /* Built-in sqlite_offset() function */
#define SQLITE_FUNC_WINDOW 0x00010000 /* Built-in window-only function */
#define SQLITE_FUNC_INTERNAL 0x00040000 /* For use by NestedParse() only */
+#define SQLITE_FUNC_DIRECT 0x00080000 /* Not for use in TRIGGERs or VIEWs */
+#define SQLITE_FUNC_SUBTYPE 0x00100000 /* Result likely to have sub-type */
/*
** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are
@@ -16776,6 +16834,7 @@ struct Savepoint {
struct Module {
const sqlite3_module *pModule; /* Callback pointers */
const char *zName; /* Name passed to create_module() */
+ int nRefModule; /* Number of pointers to this object */
void *pAux; /* pAux passed to create_module() */
void (*xDestroy)(void *); /* Module destructor function */
Table *pEpoTab; /* Eponymous table for this module */
@@ -16841,11 +16900,12 @@ struct CollSeq {
** Note also that the numeric types are grouped together so that testing
** for a numeric type is a single comparison. And the BLOB type is first.
*/
-#define SQLITE_AFF_BLOB 'A'
-#define SQLITE_AFF_TEXT 'B'
-#define SQLITE_AFF_NUMERIC 'C'
-#define SQLITE_AFF_INTEGER 'D'
-#define SQLITE_AFF_REAL 'E'
+#define SQLITE_AFF_NONE 0x40 /* '@' */
+#define SQLITE_AFF_BLOB 0x41 /* 'A' */
+#define SQLITE_AFF_TEXT 0x42 /* 'B' */
+#define SQLITE_AFF_NUMERIC 0x43 /* 'C' */
+#define SQLITE_AFF_INTEGER 0x44 /* 'D' */
+#define SQLITE_AFF_REAL 0x45 /* 'E' */
#define sqlite3IsNumericAffinity(X) ((X)>=SQLITE_AFF_NUMERIC)
@@ -17113,11 +17173,17 @@ struct KeyInfo {
u16 nKeyField; /* Number of key columns in the index */
u16 nAllField; /* Total columns, including key plus others */
sqlite3 *db; /* The database connection */
- u8 *aSortOrder; /* Sort order for each column. */
+ u8 *aSortFlags; /* Sort order for each column. */
CollSeq *aColl[1]; /* Collating sequence for each term of the key */
};
/*
+** Allowed bit values for entries in the KeyInfo.aSortFlags[] array.
+*/
+#define KEYINFO_ORDER_DESC 0x01 /* DESC sort order */
+#define KEYINFO_ORDER_BIGNULL 0x02 /* NULL is larger than any other value */
+
+/*
** This object holds a record which has been parsed out into individual
** fields, for the purposes of doing a comparison.
**
@@ -17224,7 +17290,7 @@ struct Index {
unsigned hasStat1:1; /* aiRowLogEst values come from sqlite_stat1 */
unsigned bNoQuery:1; /* Do not use this index to optimize queries */
unsigned bAscKeyBug:1; /* True if the bba7b69f9849b5bf bug applies */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
int nSample; /* Number of elements in aSample[] */
int nSampleCol; /* Size of IndexSample.anEq[] and so on */
tRowcnt *aAvgEq; /* Average nEq values for keys not in aSample */
@@ -17256,7 +17322,7 @@ struct Index {
#define XN_EXPR (-2) /* Indexed column is an expression */
/*
-** Each sample stored in the sqlite_stat3 table is represented in memory
+** Each sample stored in the sqlite_stat4 table is represented in memory
** using a structure of this type. See documentation at the top of the
** analyze.c source file for additional information.
*/
@@ -17414,7 +17480,7 @@ typedef int ynVar;
*/
struct Expr {
u8 op; /* Operation performed by this node */
- char affinity; /* The affinity of the column or 0 if not a column */
+ char affExpr; /* affinity, or RAISE type */
u32 flags; /* Various flags. EP_* See below */
union {
char *zToken; /* Token value. Zero terminated and dequoted */
@@ -17445,6 +17511,8 @@ struct Expr {
** TK_REGISTER: register number
** TK_TRIGGER: 1 -> new, 0 -> old
** EP_Unlikely: 134217728 times likelihood
+ ** TK_IN: ephemerial table holding RHS
+ ** TK_SELECT_COLUMN: Number of columns on the LHS
** TK_SELECT: 1st register of result vector */
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
** TK_VARIABLE: variable number (always >= 1).
@@ -17458,7 +17526,7 @@ struct Expr {
union {
Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL
** for a column of an index on an expression */
- Window *pWin; /* TK_FUNCTION: Window definition for the func */
+ Window *pWin; /* EP_WinFunc: Window/Filter defn for a function */
struct { /* TK_IN, TK_SELECT, and TK_EXISTS */
int iAddr; /* Subroutine entry address */
int regReturn; /* Register used to hold return address */
@@ -17473,36 +17541,37 @@ struct Expr {
** EP_Agg == NC_HasAgg == SF_HasAgg
** EP_Win == NC_HasWin
*/
-#define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */
-#define EP_Distinct 0x000002 /* Aggregate function with DISTINCT keyword */
-#define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */
-#define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */
-#define EP_Agg 0x000010 /* Contains one or more aggregate functions */
-#define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
-#define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
-#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
-#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */
-#define EP_Generic 0x000200 /* Ignore COLLATE or affinity on this tree */
-#define EP_IntValue 0x000400 /* Integer value contained in u.iValue */
-#define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */
-#define EP_Skip 0x001000 /* Operator does not contribute to affinity */
-#define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
-#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
-#define EP_Win 0x008000 /* Contains window functions */
-#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
-#define EP_NoReduce 0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
-#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
-#define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
-#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
-#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
-#define EP_Alias 0x400000 /* Is an alias for a result set column */
-#define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
-#define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
-#define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */
-#define EP_Quoted 0x4000000 /* TK_ID was originally quoted */
-#define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */
-#define EP_IsTrue 0x10000000 /* Always has boolean value of TRUE */
-#define EP_IsFalse 0x20000000 /* Always has boolean value of FALSE */
+#define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */
+#define EP_Distinct 0x000002 /* Aggregate function with DISTINCT keyword */
+#define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */
+#define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */
+#define EP_Agg 0x000010 /* Contains one or more aggregate functions */
+#define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */
+#define EP_DblQuoted 0x000040 /* token.z was originally in "..." */
+#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */
+#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */
+ /* 0x000200 Available for reuse */
+#define EP_IntValue 0x000400 /* Integer value contained in u.iValue */
+#define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */
+#define EP_Skip 0x001000 /* Operator does not contribute to affinity */
+#define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */
+#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */
+#define EP_Win 0x008000 /* Contains window functions */
+#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */
+#define EP_NoReduce 0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
+#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
+#define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */
+#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
+#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */
+#define EP_Alias 0x400000 /* Is an alias for a result set column */
+#define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */
+#define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */
+#define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */
+#define EP_Quoted 0x4000000 /* TK_ID was originally quoted */
+#define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */
+#define EP_IsTrue 0x10000000 /* Always has boolean value of TRUE */
+#define EP_IsFalse 0x20000000 /* Always has boolean value of FALSE */
+#define EP_Indirect 0x40000000 /* Contained within a TRIGGER or a VIEW */
/*
** The EP_Propagate mask is a set of properties that automatically propagate
@@ -17547,6 +17616,18 @@ struct Expr {
#define EXPRDUP_REDUCE 0x0001 /* Used reduced-size Expr nodes */
/*
+** True if the expression passed as an argument was a function with
+** an OVER() clause (a window function).
+*/
+#ifdef SQLITE_OMIT_WINDOWFUNC
+# define IsWindowFunc(p) 0
+#else
+# define IsWindowFunc(p) ( \
+ ExprHasProperty((p), EP_WinFunc) && p->y.pWin->eFrmType!=TK_FILTER \
+ )
+#endif
+
+/*
** A list of expressions. Each expression may optionally have a
** name. An expr/name combination can be used in several ways, such
** as the list of "expr AS ID" fields following a "SELECT" or in the
@@ -17568,11 +17649,12 @@ struct ExprList {
Expr *pExpr; /* The parse tree for this expression */
char *zName; /* Token associated with this expression */
char *zSpan; /* Original text of the expression */
- u8 sortOrder; /* 1 for DESC or 0 for ASC */
+ u8 sortFlags; /* Mask of KEYINFO_ORDER_* flags */
unsigned done :1; /* A flag to indicate when processing is finished */
unsigned bSpanIsTab :1; /* zSpan holds DB.TABLE.COLUMN */
unsigned reusable :1; /* Constant expression is reusable */
unsigned bSorterRef :1; /* Defer evaluation until after sorting */
+ unsigned bNulls: 1; /* True if explicit "NULLS FIRST/LAST" */
union {
struct {
u16 iOrderByCol; /* For ORDER BY, column number in result set */
@@ -17863,6 +17945,7 @@ struct Select {
#define SF_Converted 0x10000 /* By convertCompoundSelectToSubquery() */
#define SF_IncludeHidden 0x20000 /* Include hidden columns in output */
#define SF_ComplexResult 0x40000 /* Result contains subquery or function */
+#define SF_WhereBegin 0x80000 /* Really a WhereBegin() call. Debug Only */
/*
** The results of a SELECT can be distributed in several ways, as defined
@@ -18367,11 +18450,12 @@ typedef struct {
*/
struct Sqlite3Config {
int bMemstat; /* True to enable memory status */
- int bCoreMutex; /* True to enable core mutexing */
- int bFullMutex; /* True to enable full mutexing */
- int bOpenUri; /* True to interpret filenames as URIs */
- int bUseCis; /* Use covering indices for full-scans */
- int bSmallMalloc; /* Avoid large memory allocations if true */
+ u8 bCoreMutex; /* True to enable core mutexing */
+ u8 bFullMutex; /* True to enable full mutexing */
+ u8 bOpenUri; /* True to interpret filenames as URIs */
+ u8 bUseCis; /* Use covering indices for full-scans */
+ u8 bSmallMalloc; /* Avoid large memory allocations if true */
+ u8 bExtraSchemaChecks; /* Verify type,name,tbl_name in schema */
int mxStrlen; /* Maximum string length */
int neverCorrupt; /* Database is always well-formed */
int szLookaside; /* Default lookaside buffer size */
@@ -18423,6 +18507,7 @@ struct Sqlite3Config {
int bInternalFunctions; /* Internal SQL functions are visible */
int iOnceResetThreshold; /* When to reset OP_Once counters */
u32 szSorterRef; /* Min size in bytes to use sorter-refs */
+ unsigned int iPrngSeed; /* Alternative fixed seed for the PRNG */
};
/*
@@ -18519,10 +18604,11 @@ struct TreeView {
#endif /* SQLITE_DEBUG */
/*
-** This object is used in various ways, all related to window functions
+** This object is used in various ways, most (but not all) related to window
+** functions.
**
** (1) A single instance of this structure is attached to the
-** the Expr.pWin field for each window function in an expression tree.
+** the Expr.y.pWin field for each window function in an expression tree.
** This object holds the information contained in the OVER clause,
** plus additional fields used during code generation.
**
@@ -18533,6 +18619,10 @@ struct TreeView {
** (3) The terms of the WINDOW clause of a SELECT are instances of this
** object on a linked list attached to Select.pWinDefn.
**
+** (4) For an aggregate function with a FILTER clause, an instance
+** of this object is stored in Expr.y.pWin with eFrmType set to
+** TK_FILTER. In this case the only field used is Window.pFilter.
+**
** The uses (1) and (2) are really the same Window object that just happens
** to be accessible in two different ways. Use case (3) are separate objects.
*/
@@ -18548,12 +18638,13 @@ struct Window {
u8 eExclude; /* TK_NO, TK_CURRENT, TK_TIES, TK_GROUP, or 0 */
Expr *pStart; /* Expression for "<expr> PRECEDING" */
Expr *pEnd; /* Expression for "<expr> FOLLOWING" */
+ Window **ppThis; /* Pointer to this object in Select.pWin list */
Window *pNextWin; /* Next window function belonging to this SELECT */
Expr *pFilter; /* The FILTER expression */
FuncDef *pFunc; /* The function */
int iEphCsr; /* Partition buffer or Peer buffer */
- int regAccum;
- int regResult;
+ int regAccum; /* Accumulator */
+ int regResult; /* Interim result */
int csrApp; /* Function cursor (used by min/max) */
int regApp; /* Function register (also used by min/max) */
int regPart; /* Array of registers for PARTITION BY values */
@@ -18563,14 +18654,18 @@ struct Window {
int regOne; /* Register containing constant value 1 */
int regStartRowid;
int regEndRowid;
+ u8 bExprArgs; /* Defer evaluation of window function arguments
+ ** due to the SQLITE_SUBTYPE flag */
};
#ifndef SQLITE_OMIT_WINDOWFUNC
SQLITE_PRIVATE void sqlite3WindowDelete(sqlite3*, Window*);
+SQLITE_PRIVATE void sqlite3WindowUnlinkFromSelect(Window*);
SQLITE_PRIVATE void sqlite3WindowListDelete(sqlite3 *db, Window *p);
SQLITE_PRIVATE Window *sqlite3WindowAlloc(Parse*, int, int, Expr*, int , Expr*, u8);
SQLITE_PRIVATE void sqlite3WindowAttach(Parse*, Expr*, Window*);
-SQLITE_PRIVATE int sqlite3WindowCompare(Parse*, Window*, Window*);
+SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin);
+SQLITE_PRIVATE int sqlite3WindowCompare(Parse*, Window*, Window*, int);
SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse*, Window*);
SQLITE_PRIVATE void sqlite3WindowCodeStep(Parse*, Select*, WhereInfo*, int, int);
SQLITE_PRIVATE int sqlite3WindowRewrite(Parse*, Select*);
@@ -18842,7 +18937,7 @@ SQLITE_PRIVATE void sqlite3ExprDelete(sqlite3*, Expr*);
SQLITE_PRIVATE void sqlite3ExprUnmapAndDelete(Parse*, Expr*);
SQLITE_PRIVATE ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*);
SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*);
-SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int);
+SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList*,int,int);
SQLITE_PRIVATE void sqlite3ExprListSetName(Parse*,ExprList*,Token*,int);
SQLITE_PRIVATE void sqlite3ExprListSetSpan(Parse*,ExprList*,const char*,const char*);
SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3*, ExprList*);
@@ -18861,8 +18956,8 @@ SQLITE_PRIVATE void sqlite3CollapseDatabaseArray(sqlite3*);
SQLITE_PRIVATE void sqlite3CommitInternalChanges(sqlite3*);
SQLITE_PRIVATE void sqlite3DeleteColumnNames(sqlite3*,Table*);
SQLITE_PRIVATE int sqlite3ColumnsFromExprList(Parse*,ExprList*,i16*,Column**);
-SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(Parse*,Table*,Select*);
-SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse*,Select*);
+SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(Parse*,Table*,Select*,char);
+SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse*,Select*,char);
SQLITE_PRIVATE void sqlite3OpenMasterTable(Parse *, int);
SQLITE_PRIVATE Index *sqlite3PrimaryKeyIndex(Table*);
SQLITE_PRIVATE i16 sqlite3ColumnOfIndex(Index*, i16);
@@ -19163,7 +19258,7 @@ SQLITE_PRIVATE LogEst sqlite3LogEstAdd(LogEst,LogEst);
SQLITE_PRIVATE LogEst sqlite3LogEstFromDouble(double);
#endif
#if defined(SQLITE_ENABLE_STMT_SCANSTATUS) || \
- defined(SQLITE_ENABLE_STAT3_OR_STAT4) || \
+ defined(SQLITE_ENABLE_STAT4) || \
defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
SQLITE_PRIVATE u64 sqlite3LogEstToInt(LogEst);
#endif
@@ -19229,9 +19324,10 @@ SQLITE_PRIVATE int sqlite3ExprCollSeqMatch(Parse*,Expr*,Expr*);
SQLITE_PRIVATE Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*, int);
SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(Parse*,Expr*,const char*);
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr*);
+SQLITE_PRIVATE Expr *sqlite3ExprSkipCollateAndLikely(Expr*);
SQLITE_PRIVATE int sqlite3CheckCollSeq(Parse *, CollSeq *);
SQLITE_PRIVATE int sqlite3WritableSchema(sqlite3*);
-SQLITE_PRIVATE int sqlite3CheckObjectName(Parse *, const char *);
+SQLITE_PRIVATE int sqlite3CheckObjectName(Parse*, const char*,const char*,const char*);
SQLITE_PRIVATE void sqlite3VdbeSetChanges(sqlite3 *, int);
SQLITE_PRIVATE int sqlite3AddInt64(i64*,i64);
SQLITE_PRIVATE int sqlite3SubInt64(i64*,i64);
@@ -19264,7 +19360,6 @@ SQLITE_PRIVATE const unsigned char sqlite3OpcodeProperty[];
SQLITE_PRIVATE const char sqlite3StrBINARY[];
SQLITE_PRIVATE const unsigned char sqlite3UpperToLower[];
SQLITE_PRIVATE const unsigned char sqlite3CtypeMap[];
-SQLITE_PRIVATE const Token sqlite3IntTokens[];
SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config;
SQLITE_PRIVATE FuncDefHash sqlite3BuiltinFunctions;
#ifndef SQLITE_OMIT_WSD
@@ -19318,6 +19413,7 @@ SQLITE_PRIVATE void sqlite3KeyInfoUnref(KeyInfo*);
SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoRef(KeyInfo*);
SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoOfIndex(Parse*, Index*);
SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoFromExprList(Parse*, ExprList*, int, int);
+SQLITE_PRIVATE int sqlite3HasExplicitNulls(Parse*, ExprList*);
#ifdef SQLITE_DEBUG
SQLITE_PRIVATE int sqlite3KeyInfoIsWriteable(KeyInfo*);
@@ -19350,8 +19446,7 @@ SQLITE_PRIVATE int sqlite3ExprCheckIN(Parse*, Expr*);
# define sqlite3ExprCheckIN(x,y) SQLITE_OK
#endif
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
-SQLITE_PRIVATE void sqlite3AnalyzeFunctions(void);
+#ifdef SQLITE_ENABLE_STAT4
SQLITE_PRIVATE int sqlite3Stat4ProbeSetValue(
Parse*,Index*,UnpackedRecord**,Expr*,int,int,int*);
SQLITE_PRIVATE int sqlite3Stat4ValueFromExpr(Parse*, Expr*, u8, sqlite3_value**);
@@ -19398,6 +19493,7 @@ SQLITE_PRIVATE int sqlite3Utf8To8(unsigned char*);
# define sqlite3VtabInSync(db) 0
# define sqlite3VtabLock(X)
# define sqlite3VtabUnlock(X)
+# define sqlite3VtabModuleUnref(D,X)
# define sqlite3VtabUnlockList(X)
# define sqlite3VtabSavepoint(X, Y, Z) SQLITE_OK
# define sqlite3GetVTable(X,Y) ((VTable*)0)
@@ -19409,6 +19505,7 @@ SQLITE_PRIVATE int sqlite3VtabRollback(sqlite3 *db);
SQLITE_PRIVATE int sqlite3VtabCommit(sqlite3 *db);
SQLITE_PRIVATE void sqlite3VtabLock(VTable *);
SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *);
+SQLITE_PRIVATE void sqlite3VtabModuleUnref(sqlite3*,Module*);
SQLITE_PRIVATE void sqlite3VtabUnlockList(sqlite3*);
SQLITE_PRIVATE int sqlite3VtabSavepoint(sqlite3 *, int, int);
SQLITE_PRIVATE void sqlite3VtabImportErrmsg(Vdbe*, sqlite3_vtab*);
@@ -19876,6 +19973,7 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = {
SQLITE_USE_URI, /* bOpenUri */
SQLITE_ALLOW_COVERING_INDEX_SCAN, /* bUseCis */
0, /* bSmallMalloc */
+ 1, /* bExtraSchemaChecks */
0x7ffffffe, /* mxStrlen */
0, /* neverCorrupt */
SQLITE_DEFAULT_LOOKASIDE, /* szLookaside, nLookaside */
@@ -19922,6 +20020,7 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = {
0, /* bInternalFunctions */
0x7ffffffe, /* iOnceResetThreshold */
SQLITE_DEFAULT_SORTERREF_SIZE, /* szSorterRef */
+ 0, /* iPrngSeed */
};
/*
@@ -19931,14 +20030,6 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = {
*/
SQLITE_PRIVATE FuncDefHash sqlite3BuiltinFunctions;
-/*
-** Constant tokens for values 0 and 1.
-*/
-SQLITE_PRIVATE const Token sqlite3IntTokens[] = {
- { "0", 1 },
- { "1", 1 }
-};
-
#ifdef VDBE_PROFILE
/*
** The following performance counter can be used in place of
@@ -20491,7 +20582,6 @@ SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor**, int*);
SQLITE_PRIVATE int sqlite3VdbeCursorRestore(VdbeCursor*);
SQLITE_PRIVATE u32 sqlite3VdbeSerialTypeLen(u32);
SQLITE_PRIVATE u8 sqlite3VdbeOneByteSerialTypeLen(u8);
-SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem*, int, u32*);
SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(unsigned char*, Mem*, u32);
SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*);
SQLITE_PRIVATE void sqlite3VdbeDeleteAuxData(sqlite3*, AuxData**, int, int);
@@ -22497,7 +22587,15 @@ SQLITE_PRIVATE void sqlite3OsDlClose(sqlite3_vfs *pVfs, void *pHandle){
}
#endif /* SQLITE_OMIT_LOAD_EXTENSION */
SQLITE_PRIVATE int sqlite3OsRandomness(sqlite3_vfs *pVfs, int nByte, char *zBufOut){
- return pVfs->xRandomness(pVfs, nByte, zBufOut);
+ if( sqlite3Config.iPrngSeed ){
+ memset(zBufOut, 0, nByte);
+ if( ALWAYS(nByte>(signed)sizeof(unsigned)) ) nByte = sizeof(unsigned int);
+ memcpy(zBufOut, &sqlite3Config.iPrngSeed, nByte);
+ return SQLITE_OK;
+ }else{
+ return pVfs->xRandomness(pVfs, nByte, zBufOut);
+ }
+
}
SQLITE_PRIVATE int sqlite3OsSleep(sqlite3_vfs *pVfs, int nMicro){
return pVfs->xSleep(pVfs, nMicro);
@@ -28778,13 +28876,17 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m
sqlite3TreeViewPush(pView, 1);
}
do{
- sqlite3TreeViewLine(pView,
- "SELECT%s%s (%u/%p) selFlags=0x%x nSelectRow=%d",
- ((p->selFlags & SF_Distinct) ? " DISTINCT" : ""),
- ((p->selFlags & SF_Aggregate) ? " agg_flag" : ""),
- p->selId, p, p->selFlags,
- (int)p->nSelectRow
- );
+ if( p->selFlags & SF_WhereBegin ){
+ sqlite3TreeViewLine(pView, "sqlite3WhereBegin()");
+ }else{
+ sqlite3TreeViewLine(pView,
+ "SELECT%s%s (%u/%p) selFlags=0x%x nSelectRow=%d",
+ ((p->selFlags & SF_Distinct) ? " DISTINCT" : ""),
+ ((p->selFlags & SF_Aggregate) ? " agg_flag" : ""),
+ p->selId, p, p->selFlags,
+ (int)p->nSelectRow
+ );
+ }
if( cnt++ ) sqlite3TreeViewPop(pView);
if( p->pPrior ){
n = 1000;
@@ -28801,7 +28903,10 @@ SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 m
if( p->pWinDefn ) n++;
#endif
}
- sqlite3TreeViewExprList(pView, p->pEList, (n--)>0, "result-set");
+ if( p->pEList ){
+ sqlite3TreeViewExprList(pView, p->pEList, n>0, "result-set");
+ }
+ n--;
#ifndef SQLITE_OMIT_WINDOWFUNC
if( p->pWin ){
Window *pX;
@@ -28997,12 +29102,14 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
sqlite3TreeViewPop(pView);
return;
}
- if( pExpr->flags ){
+ if( pExpr->flags || pExpr->affExpr ){
if( ExprHasProperty(pExpr, EP_FromJoin) ){
- sqlite3_snprintf(sizeof(zFlgs),zFlgs," flags=0x%x iRJT=%d",
- pExpr->flags, pExpr->iRightJoinTable);
+ sqlite3_snprintf(sizeof(zFlgs),zFlgs," fg.af=%x.%c iRJT=%d",
+ pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n',
+ pExpr->iRightJoinTable);
}else{
- sqlite3_snprintf(sizeof(zFlgs),zFlgs," flags=0x%x",pExpr->flags);
+ sqlite3_snprintf(sizeof(zFlgs),zFlgs," fg.af=%x.%c",
+ pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n');
}
}else{
zFlgs[0] = 0;
@@ -29129,7 +29236,14 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
}
case TK_COLLATE: {
- sqlite3TreeViewLine(pView, "COLLATE %Q", pExpr->u.zToken);
+ /* COLLATE operators without the EP_Collate flag are intended to
+ ** emulate collation associated with a table column. These show
+ ** up in the treeview output as "SOFT-COLLATE". Explicit COLLATE
+ ** operators that appear in the original SQL always have the
+ ** EP_Collate bit set and appear in treeview output as just "COLLATE" */
+ sqlite3TreeViewLine(pView, "%sCOLLATE %Q%s",
+ !ExprHasProperty(pExpr, EP_Collate) ? "SOFT-" : "",
+ pExpr->u.zToken, zFlgs);
sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
break;
}
@@ -29150,10 +29264,10 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
#endif
}
if( pExpr->op==TK_AGG_FUNCTION ){
- sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q",
- pExpr->op2, pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q%s",
+ pExpr->op2, pExpr->u.zToken, zFlgs);
}else{
- sqlite3TreeViewLine(pView, "FUNCTION %Q", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "FUNCTION %Q%s", pExpr->u.zToken, zFlgs);
}
if( pFarg ){
sqlite3TreeViewExprList(pView, pFarg, pWin!=0, 0);
@@ -29230,7 +29344,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
#ifndef SQLITE_OMIT_TRIGGER
case TK_RAISE: {
const char *zType = "unk";
- switch( pExpr->affinity ){
+ switch( pExpr->affExpr ){
case OE_Rollback: zType = "rollback"; break;
case OE_Abort: zType = "abort"; break;
case OE_Fail: zType = "fail"; break;
@@ -29271,7 +29385,7 @@ SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 m
sqlite3TreeViewExpr(pView, pExpr->pRight, 0);
}else if( zUniOp ){
sqlite3TreeViewLine(pView, "%s%s", zUniOp, zFlgs);
- sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
}
sqlite3TreeViewPop(pView);
}
@@ -31779,7 +31893,7 @@ SQLITE_PRIVATE LogEst sqlite3LogEstFromDouble(double x){
#endif /* SQLITE_OMIT_VIRTUALTABLE */
#if defined(SQLITE_ENABLE_STMT_SCANSTATUS) || \
- defined(SQLITE_ENABLE_STAT3_OR_STAT4) || \
+ defined(SQLITE_ENABLE_STAT4) || \
defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
/*
** Convert a LogEst into an integer.
@@ -31797,7 +31911,7 @@ SQLITE_PRIVATE u64 sqlite3LogEstToInt(LogEst x){
defined(SQLITE_EXPLAIN_ESTIMATED_ROWS)
if( x>60 ) return (u64)LARGEST_INT64;
#else
- /* If only SQLITE_ENABLE_STAT3_OR_STAT4 is on, then the largest input
+ /* If only SQLITE_ENABLE_STAT4 is on, then the largest input
** possible to this routine is 310, resulting in a maximum x of 31 */
assert( x<=60 );
#endif
@@ -32290,24 +32404,24 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 93 */ "Count" OpHelp("r[P2]=count()"),
/* 94 */ "ReadCookie" OpHelp(""),
/* 95 */ "SetCookie" OpHelp(""),
- /* 96 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
- /* 97 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
- /* 98 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
- /* 99 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
- /* 100 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
- /* 101 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
- /* 102 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
- /* 103 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
- /* 104 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
- /* 105 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
- /* 106 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
- /* 107 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
- /* 108 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
- /* 109 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
- /* 110 */ "String8" OpHelp("r[P2]='P4'"),
- /* 111 */ "OpenDup" OpHelp(""),
- /* 112 */ "OpenAutoindex" OpHelp("nColumn=P2"),
- /* 113 */ "OpenEphemeral" OpHelp("nColumn=P2"),
+ /* 96 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
+ /* 97 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
+ /* 98 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
+ /* 99 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
+ /* 100 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
+ /* 101 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
+ /* 102 */ "ShiftRight" OpHelp("r[P3]=r[P2]>>r[P1]"),
+ /* 103 */ "Add" OpHelp("r[P3]=r[P1]+r[P2]"),
+ /* 104 */ "Subtract" OpHelp("r[P3]=r[P2]-r[P1]"),
+ /* 105 */ "Multiply" OpHelp("r[P3]=r[P1]*r[P2]"),
+ /* 106 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
+ /* 107 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
+ /* 108 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
+ /* 109 */ "OpenDup" OpHelp(""),
+ /* 110 */ "BitNot" OpHelp("r[P2]= ~r[P1]"),
+ /* 111 */ "OpenAutoindex" OpHelp("nColumn=P2"),
+ /* 112 */ "OpenEphemeral" OpHelp("nColumn=P2"),
+ /* 113 */ "String8" OpHelp("r[P2]='P4'"),
/* 114 */ "SorterOpen" OpHelp(""),
/* 115 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
/* 116 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
@@ -32339,10 +32453,10 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 142 */ "LoadAnalysis" OpHelp(""),
/* 143 */ "DropTable" OpHelp(""),
/* 144 */ "DropIndex" OpHelp(""),
- /* 145 */ "Real" OpHelp("r[P2]=P4"),
- /* 146 */ "DropTrigger" OpHelp(""),
- /* 147 */ "IntegrityCk" OpHelp(""),
- /* 148 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 145 */ "DropTrigger" OpHelp(""),
+ /* 146 */ "IntegrityCk" OpHelp(""),
+ /* 147 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 148 */ "Real" OpHelp("r[P2]=P4"),
/* 149 */ "Param" OpHelp(""),
/* 150 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
/* 151 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
@@ -32481,13 +32595,29 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
# include <sys/param.h>
#endif /* SQLITE_ENABLE_LOCKING_STYLE */
-#if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
- (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
-# if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
- && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
-# define HAVE_GETHOSTUUID 1
-# else
-# warning "gethostuuid() is disabled."
+/*
+** Try to determine if gethostuuid() is available based on standard
+** macros. This might sometimes compute the wrong value for some
+** obscure platforms. For those cases, simply compile with one of
+** the following:
+**
+** -DHAVE_GETHOSTUUID=0
+** -DHAVE_GETHOSTUUID=1
+**
+** None if this matters except when building on Apple products with
+** -DSQLITE_ENABLE_LOCKING_STYLE.
+*/
+#ifndef HAVE_GETHOSTUUID
+# define HAVE_GETHOSTUUID 0
+# if defined(__APPLE__) && ((__MAC_OS_X_VERSION_MIN_REQUIRED > 1050) || \
+ (__IPHONE_OS_VERSION_MIN_REQUIRED > 2000))
+# if (!defined(TARGET_OS_EMBEDDED) || (TARGET_OS_EMBEDDED==0)) \
+ && (!defined(TARGET_IPHONE_SIMULATOR) || (TARGET_IPHONE_SIMULATOR==0))
+# undef HAVE_GETHOSTUUID
+# define HAVE_GETHOSTUUID 1
+# else
+# warning "gethostuuid() is disabled."
+# endif
# endif
#endif
@@ -33095,13 +33225,14 @@ static struct unix_syscall {
#if defined(__linux__) && defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
# ifdef __ANDROID__
{ "ioctl", (sqlite3_syscall_ptr)(int(*)(int, int, ...))ioctl, 0 },
+#define osIoctl ((int(*)(int,int,...))aSyscall[28].pCurrent)
# else
{ "ioctl", (sqlite3_syscall_ptr)ioctl, 0 },
+#define osIoctl ((int(*)(int,unsigned long,...))aSyscall[28].pCurrent)
# endif
#else
{ "ioctl", (sqlite3_syscall_ptr)0, 0 },
#endif
-#define osIoctl ((int(*)(int,int,...))aSyscall[28].pCurrent)
}; /* End of the overrideable system calls */
@@ -38343,6 +38474,7 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
UnixUnusedFd **pp;
assert( sqlite3_mutex_notheld(pInode->pLockMutex) );
sqlite3_mutex_enter(pInode->pLockMutex);
+ flags &= (SQLITE_OPEN_READONLY|SQLITE_OPEN_READWRITE);
for(pp=&pInode->pUnused; *pp && (*pp)->flags!=flags; pp=&((*pp)->pNext));
pUnused = *pp;
if( pUnused ){
@@ -38396,7 +38528,7 @@ static int getFileMode(
** If the SQLITE_ENABLE_8_3_NAMES option is enabled, then the
** original filename is unavailable. But 8_3_NAMES is only used for
** FAT filesystems and permissions do not matter there, so just use
-** the default permissions.
+** the default permissions. In 8_3_NAMES mode, leave *pMode set to zero.
*/
static int findCreateFileMode(
const char *zPath, /* Path of file (possibly) being created */
@@ -38631,11 +38763,19 @@ static int unixOpen(
goto open_finished;
}
- /* If this process is running as root and if creating a new rollback
- ** journal or WAL file, set the ownership of the journal or WAL to be
- ** the same as the original database.
+ /* The owner of the rollback journal or WAL file should always be the
+ ** same as the owner of the database file. Try to ensure that this is
+ ** the case. The chown() system call will be a no-op if the current
+ ** process lacks root privileges, be we should at least try. Without
+ ** this step, if a root process opens a database file, it can leave
+ ** behinds a journal/WAL that is owned by root and hence make the
+ ** database inaccessible to unprivileged processes.
+ **
+ ** If openMode==0, then that means uid and gid are not set correctly
+ ** (probably because SQLite is configured to use 8+3 filename mode) and
+ ** in that case we do not want to attempt the chown().
*/
- if( flags & (SQLITE_OPEN_WAL|SQLITE_OPEN_MAIN_JOURNAL) ){
+ if( openMode && (flags & (SQLITE_OPEN_WAL|SQLITE_OPEN_MAIN_JOURNAL))!=0 ){
robustFchown(fd, uid, gid);
}
}
@@ -38646,7 +38786,8 @@ static int unixOpen(
if( p->pPreallocatedUnused ){
p->pPreallocatedUnused->fd = fd;
- p->pPreallocatedUnused->flags = flags;
+ p->pPreallocatedUnused->flags =
+ flags & (SQLITE_OPEN_READONLY|SQLITE_OPEN_READWRITE);
}
if( isDelete ){
@@ -39492,7 +39633,7 @@ SQLITE_API int sqlite3_hostid_num = 0;
#define PROXY_HOSTIDLEN 16 /* conch file host id length */
-#ifdef HAVE_GETHOSTUUID
+#if HAVE_GETHOSTUUID
/* Not always defined in the headers as it ought to be */
extern int gethostuuid(uuid_t id, const struct timespec *wait);
#endif
@@ -39503,7 +39644,7 @@ extern int gethostuuid(uuid_t id, const struct timespec *wait);
static int proxyGetHostID(unsigned char *pHostID, int *pError){
assert(PROXY_HOSTIDLEN == sizeof(uuid_t));
memset(pHostID, 0, PROXY_HOSTIDLEN);
-#ifdef HAVE_GETHOSTUUID
+#if HAVE_GETHOSTUUID
{
struct timespec timeout = {1, 0}; /* 1 sec timeout */
if( gethostuuid(pHostID, &timeout) ){
@@ -40177,7 +40318,7 @@ static int proxyFileControl(sqlite3_file *id, int op, void *pArg){
assert( 0 ); /* The call assures that only valid opcodes are sent */
}
}
- /*NOTREACHED*/
+ /*NOTREACHED*/ assert(0);
return SQLITE_ERROR;
}
@@ -44862,6 +45003,7 @@ static int winShmMap(
rc = winOpenSharedMemory(pDbFd);
if( rc!=SQLITE_OK ) return rc;
pShm = pDbFd->pShm;
+ assert( pShm!=0 );
}
pShmNode = pShm->pShmNode;
@@ -45164,6 +45306,7 @@ static int winFetch(sqlite3_file *fd, i64 iOff, int nAmt, void **pp){
}
}
if( pFd->mmapSize >= iOff+nAmt ){
+ assert( pFd->pMapRegion!=0 );
*pp = &((u8 *)pFd->pMapRegion)[iOff];
pFd->nFetchOut++;
}
@@ -48085,6 +48228,7 @@ SQLITE_PRIVATE int sqlite3PcacheInitialize(void){
** built-in default page cache is used instead of the application defined
** page cache. */
sqlite3PCacheSetDefault();
+ assert( sqlite3GlobalConfig.pcache2.xInit!=0 );
}
return sqlite3GlobalConfig.pcache2.xInit(sqlite3GlobalConfig.pcache2.pArg);
}
@@ -49131,6 +49275,7 @@ static PgHdr1 *pcache1AllocPage(PCache1 *pCache, int benignMalloc){
assert( sqlite3_mutex_held(pCache->pGroup->mutex) );
if( pCache->pFree || (pCache->nPage==0 && pcache1InitBulk(pCache)) ){
+ assert( pCache->pFree!=0 );
p = pCache->pFree;
pCache->pFree = p->pNext;
p->pNext = 0;
@@ -61857,6 +62002,7 @@ SQLITE_PRIVATE int sqlite3WalFrames(
if( rc ) return rc;
iOffset += szFrame;
nExtra++;
+ assert( pLast!=0 );
}
}
if( bSync ){
@@ -61889,6 +62035,7 @@ SQLITE_PRIVATE int sqlite3WalFrames(
iFrame++;
rc = walIndexAppend(pWal, iFrame, p->pgno);
}
+ assert( pLast!=0 || nExtra==0 );
while( rc==SQLITE_OK && nExtra>0 ){
iFrame++;
nExtra--;
@@ -64900,9 +65047,12 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
if( (data[hdr+2] || data[hdr+1]) && gap+2<=top ){
u8 *pSpace = pageFindSlot(pPage, nByte, &rc);
if( pSpace ){
- assert( pSpace>=data && (pSpace - data)<65536 );
- *pIdx = (int)(pSpace - data);
- return SQLITE_OK;
+ assert( pSpace+nByte<=data+pPage->pBt->usableSize );
+ if( (*pIdx = (int)(pSpace-data))<=gap ){
+ return SQLITE_CORRUPT_PAGE(pPage);
+ }else{
+ return SQLITE_OK;
+ }
}else if( rc ){
return rc;
}
@@ -68129,6 +68279,7 @@ static int accessPayload(
assert( aWrite>=pBufStart ); /* due to (6) */
memcpy(aSave, aWrite, 4);
rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1));
+ if( rc && nextPage>pBt->nPage ) rc = SQLITE_CORRUPT_BKPT;
nextPage = get4byte(aWrite);
memcpy(aWrite, aSave, 4);
}else
@@ -69917,12 +70068,7 @@ static void insertCell(
assert( pPage->nOverflow<=ArraySize(pPage->apOvfl) );
assert( ArraySize(pPage->apOvfl)==ArraySize(pPage->aiOvfl) );
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
- /* The cell should normally be sized correctly. However, when moving a
- ** malformed cell from a leaf page to an interior page, if the cell size
- ** wanted to be less than 4 but got rounded up to 4 on the leaf, then size
- ** might be less than 8 (leaf-size + pointer) on the interior node. Hence
- ** the term after the || in the following assert(). */
- assert( sz==pPage->xCellSize(pPage, pCell) || (sz==8 && iChild>0) );
+ assert( sz==pPage->xCellSize(pPage, pCell) || CORRUPT_DB );
assert( pPage->nFree>=0 );
if( pPage->nOverflow || sz+2>pPage->nFree ){
if( pTemp ){
@@ -70154,7 +70300,7 @@ static int rebuildPage(
assert( i<iEnd );
j = get2byte(&aData[hdr+5]);
- if( NEVER(j>(u32)usableSize) ){ j = 0; }
+ if( j>(u32)usableSize ){ j = 0; }
memcpy(&pTmp[j], &aData[j], usableSize - j);
for(k=0; pCArray->ixNx[k]<=i && ALWAYS(k<NB*2); k++){}
@@ -70246,7 +70392,8 @@ static int pageInsertArray(
while( 1 /*Exit by break*/ ){
int sz, rc;
u8 *pSlot;
- sz = cachedCellSize(pCArray, i);
+ assert( pCArray->szCell[i]!=0 );
+ sz = pCArray->szCell[i];
if( (aData[1]==0 && aData[2]==0) || (pSlot = pageFindSlot(pPg,sz,&rc))==0 ){
if( (pData - pBegin)<sz ) return 1;
pData -= sz;
@@ -70407,6 +70554,7 @@ static int editPage(
memmove(&pCellptr[2], pCellptr, (nCell - iCell) * 2);
}
nCell++;
+ cachedCellSize(pCArray, iCell+iNew);
if( pageInsertArray(
pPg, pBegin, &pData, pCellptr,
iCell+iNew, 1, pCArray
@@ -70929,7 +71077,7 @@ static int balance_nonroot(
*/
memset(&b.szCell[b.nCell], 0, sizeof(b.szCell[0])*(limit+pOld->nOverflow));
if( pOld->nOverflow>0 ){
- if( limit<pOld->aiOvfl[0] ){
+ if( NEVER(limit<pOld->aiOvfl[0]) ){
rc = SQLITE_CORRUPT_BKPT;
goto balance_cleanup;
}
@@ -71215,6 +71363,8 @@ static int balance_nonroot(
));
assert( sqlite3PagerIswriteable(pParent->pDbPage) );
+ assert( nNew>=1 && nNew<=ArraySize(apNew) );
+ assert( apNew[nNew-1]!=0 );
put4byte(pRight, apNew[nNew-1]->pgno);
/* If the sibling pages are not leaves, ensure that the right-child pointer
@@ -71560,11 +71710,13 @@ static int balance(BtCursor *pCur){
VVA_ONLY( int balance_deeper_called = 0 );
do {
- int iPage = pCur->iPage;
+ int iPage;
MemPage *pPage = pCur->pPage;
if( NEVER(pPage->nFree<0) && btreeComputeFreeSpace(pPage) ) break;
- if( iPage==0 ){
+ if( pPage->nOverflow==0 && pPage->nFree<=nMin ){
+ break;
+ }else if( (iPage = pCur->iPage)==0 ){
if( pPage->nOverflow ){
/* The root page of the b-tree is overfull. In this case call the
** balance_deeper() function to create a new child for the root-page
@@ -71585,8 +71737,6 @@ static int balance(BtCursor *pCur){
}else{
break;
}
- }else if( pPage->nOverflow==0 && pPage->nFree<=nMin ){
- break;
}else{
MemPage * const pParent = pCur->apPage[iPage-1];
int const iIdx = pCur->aiIdx[iPage-1];
@@ -71728,7 +71878,9 @@ static int btreeOverwriteCell(BtCursor *pCur, const BtreePayload *pX){
Pgno ovflPgno; /* Next overflow page to write */
u32 ovflPageSize; /* Size to write on overflow page */
- if( pCur->info.pPayload + pCur->info.nLocal > pPage->aDataEnd ){
+ if( pCur->info.pPayload + pCur->info.nLocal > pPage->aDataEnd
+ || pCur->info.pPayload < pPage->aData + pPage->cellOffset
+ ){
return SQLITE_CORRUPT_BKPT;
}
/* Overwrite the local portion first */
@@ -71969,6 +72121,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
memcpy(newCell, oldCell, 4);
}
rc = clearCell(pPage, oldCell, &info);
+ testcase( pCur->curFlags & BTCF_ValidOvfl );
+ invalidateOverflowCache(pCur);
if( info.nSize==szNew && info.nLocal==info.nPayload
&& (!ISAUTOVACUUM || szNew<pPage->minLocal)
){
@@ -71982,7 +72136,12 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
** new entry uses overflow pages, as the insertCell() call below is
** necessary to add the PTRMAP_OVERFLOW1 pointer-map entry. */
assert( rc==SQLITE_OK ); /* clearCell never fails when nLocal==nPayload */
- if( oldCell+szNew > pPage->aDataEnd ) return SQLITE_CORRUPT_BKPT;
+ if( oldCell < pPage->aData+pPage->hdrOffset+10 ){
+ return SQLITE_CORRUPT_BKPT;
+ }
+ if( oldCell+szNew > pPage->aDataEnd ){
+ return SQLITE_CORRUPT_BKPT;
+ }
memcpy(oldCell, newCell, szNew);
return SQLITE_OK;
}
@@ -74319,8 +74478,10 @@ SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p){
}
if( p->isAttached ){
pp = sqlite3PagerBackupPtr(sqlite3BtreePager(p->pSrc));
+ assert( pp!=0 );
while( *pp!=p ){
pp = &(*pp)->pNext;
+ assert( pp!=0 );
}
*pp = p->pNext;
}
@@ -74735,7 +74896,13 @@ SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPre
assert( pMem->szMalloc==0
|| pMem->szMalloc==sqlite3DbMallocSize(pMem->db, pMem->zMalloc) );
if( pMem->szMalloc>0 && bPreserve && pMem->z==pMem->zMalloc ){
- pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n);
+ if( pMem->db ){
+ pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n);
+ }else{
+ pMem->zMalloc = sqlite3Realloc(pMem->z, n);
+ if( pMem->zMalloc==0 ) sqlite3_free(pMem->z);
+ pMem->z = pMem->zMalloc;
+ }
bPreserve = 0;
}else{
if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc);
@@ -75806,7 +75973,7 @@ struct ValueNewStat4Ctx {
** an sqlite3_value within the UnpackedRecord.a[] array.
*/
static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( p ){
UnpackedRecord *pRec = p->ppRec[0];
@@ -75842,7 +76009,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
}
#else
UNUSED_PARAMETER(p);
-#endif /* defined(SQLITE_ENABLE_STAT3_OR_STAT4) */
+#endif /* defined(SQLITE_ENABLE_STAT4) */
return sqlite3ValueNew(db);
}
@@ -75866,7 +76033,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
** and sets (*ppVal) to NULL. Or, if an error occurs, (*ppVal) is set to
** NULL and an SQLite error code returned.
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
static int valueFromFunction(
sqlite3 *db, /* The database connection */
Expr *p, /* The expression to evaluate */
@@ -75949,7 +76116,7 @@ static int valueFromFunction(
}
#else
# define valueFromFunction(a,b,c,d,e,f) SQLITE_OK
-#endif /* defined(SQLITE_ENABLE_STAT3_OR_STAT4) */
+#endif /* defined(SQLITE_ENABLE_STAT4) */
/*
** Extract a value from the supplied expression in the manner described
@@ -75978,7 +76145,7 @@ static int valueFromExpr(
assert( pExpr!=0 );
while( (op = pExpr->op)==TK_UPLUS || op==TK_SPAN ) pExpr = pExpr->pLeft;
-#if defined(SQLITE_ENABLE_STAT3_OR_STAT4)
+#if defined(SQLITE_ENABLE_STAT4)
if( op==TK_REGISTER ) op = pExpr->op2;
#else
if( NEVER(op==TK_REGISTER) ) op = pExpr->op2;
@@ -76071,7 +76238,7 @@ static int valueFromExpr(
0, SQLITE_DYNAMIC);
}
#endif
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
else if( op==TK_FUNCTION && pCtx!=0 ){
rc = valueFromFunction(db, pExpr, enc, affinity, &pVal, pCtx);
}
@@ -76088,13 +76255,13 @@ static int valueFromExpr(
return rc;
no_mem:
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( pCtx==0 || pCtx->pParse->nErr==0 )
#endif
sqlite3OomFault(db);
sqlite3DbFree(db, zVal);
assert( *ppVal==0 );
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( pCtx==0 ) sqlite3ValueFree(pVal);
#else
assert( pCtx==0 ); sqlite3ValueFree(pVal);
@@ -76122,56 +76289,7 @@ SQLITE_PRIVATE int sqlite3ValueFromExpr(
return pExpr ? valueFromExpr(db, pExpr, enc, affinity, ppVal, 0) : 0;
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
-/*
-** The implementation of the sqlite_record() function. This function accepts
-** a single argument of any type. The return value is a formatted database
-** record (a blob) containing the argument value.
-**
-** This is used to convert the value stored in the 'sample' column of the
-** sqlite_stat3 table to the record format SQLite uses internally.
-*/
-static void recordFunc(
- sqlite3_context *context,
- int argc,
- sqlite3_value **argv
-){
- const int file_format = 1;
- u32 iSerial; /* Serial type */
- int nSerial; /* Bytes of space for iSerial as varint */
- u32 nVal; /* Bytes of space required for argv[0] */
- int nRet;
- sqlite3 *db;
- u8 *aRet;
-
- UNUSED_PARAMETER( argc );
- iSerial = sqlite3VdbeSerialType(argv[0], file_format, &nVal);
- nSerial = sqlite3VarintLen(iSerial);
- db = sqlite3_context_db_handle(context);
-
- nRet = 1 + nSerial + nVal;
- aRet = sqlite3DbMallocRawNN(db, nRet);
- if( aRet==0 ){
- sqlite3_result_error_nomem(context);
- }else{
- aRet[0] = nSerial+1;
- putVarint32(&aRet[1], iSerial);
- sqlite3VdbeSerialPut(&aRet[1+nSerial], argv[0], iSerial);
- sqlite3_result_blob(context, aRet, nRet, SQLITE_TRANSIENT);
- sqlite3DbFreeNN(db, aRet);
- }
-}
-
-/*
-** Register built-in functions used to help read ANALYZE data.
-*/
-SQLITE_PRIVATE void sqlite3AnalyzeFunctions(void){
- static FuncDef aAnalyzeTableFuncs[] = {
- FUNCTION(sqlite_record, 1, 0, 0, recordFunc),
- };
- sqlite3InsertBuiltinFuncs(aAnalyzeTableFuncs, ArraySize(aAnalyzeTableFuncs));
-}
-
+#ifdef SQLITE_ENABLE_STAT4
/*
** Attempt to extract a value from pExpr and use it to construct *ppVal.
**
@@ -77078,7 +77196,7 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
int opcode = pOp->opcode;
if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename
|| opcode==OP_VDestroy
- || (opcode==OP_Function0 && pOp->p4.pFunc->funcFlags&SQLITE_FUNC_INTERNAL)
+ || (opcode==OP_ParseSchema && pOp->p4.z==0)
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
&& ((pOp->p1)!=SQLITE_OK && pOp->p2==OE_Abort))
){
@@ -77415,16 +77533,16 @@ SQLITE_PRIVATE void sqlite3VdbeScanStatus(
** Change the value of the opcode, or P1, P2, P3, or P5 operands
** for a specific instruction.
*/
-SQLITE_PRIVATE void sqlite3VdbeChangeOpcode(Vdbe *p, u32 addr, u8 iNewOpcode){
+SQLITE_PRIVATE void sqlite3VdbeChangeOpcode(Vdbe *p, int addr, u8 iNewOpcode){
sqlite3VdbeGetOp(p,addr)->opcode = iNewOpcode;
}
-SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe *p, u32 addr, int val){
+SQLITE_PRIVATE void sqlite3VdbeChangeP1(Vdbe *p, int addr, int val){
sqlite3VdbeGetOp(p,addr)->p1 = val;
}
-SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe *p, u32 addr, int val){
+SQLITE_PRIVATE void sqlite3VdbeChangeP2(Vdbe *p, int addr, int val){
sqlite3VdbeGetOp(p,addr)->p2 = val;
}
-SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe *p, u32 addr, int val){
+SQLITE_PRIVATE void sqlite3VdbeChangeP3(Vdbe *p, int addr, int val){
sqlite3VdbeGetOp(p,addr)->p3 = val;
}
SQLITE_PRIVATE void sqlite3VdbeChangeP5(Vdbe *p, u16 p5){
@@ -77931,14 +78049,16 @@ static char *displayP4(Op *pOp, char *zTemp, int nTemp){
case P4_KEYINFO: {
int j;
KeyInfo *pKeyInfo = pOp->p4.pKeyInfo;
- assert( pKeyInfo->aSortOrder!=0 );
+ assert( pKeyInfo->aSortFlags!=0 );
sqlite3_str_appendf(&x, "k(%d", pKeyInfo->nKeyField);
for(j=0; j<pKeyInfo->nKeyField; j++){
CollSeq *pColl = pKeyInfo->aColl[j];
const char *zColl = pColl ? pColl->zName : "";
if( strcmp(zColl, "BINARY")==0 ) zColl = "B";
- sqlite3_str_appendf(&x, ",%s%s",
- pKeyInfo->aSortOrder[j] ? "-" : "", zColl);
+ sqlite3_str_appendf(&x, ",%s%s%s",
+ (pKeyInfo->aSortFlags[j] & KEYINFO_ORDER_DESC) ? "-" : "",
+ (pKeyInfo->aSortFlags[j] & KEYINFO_ORDER_BIGNULL)? "N." : "",
+ zColl);
}
sqlite3_str_append(&x, ")", 1);
break;
@@ -78345,8 +78465,11 @@ SQLITE_PRIVATE int sqlite3VdbeList(
** pick up the appropriate opcode. */
int j;
i -= p->nOp;
+ assert( apSub!=0 );
+ assert( nSub>0 );
for(j=0; i>=apSub[j]->nOp; j++){
i -= apSub[j]->nOp;
+ assert( i<apSub[j]->nOp || j+1<nSub );
}
pOp = &apSub[j]->aOp[i];
}
@@ -79868,10 +79991,17 @@ SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor **pp, int *piCol){
** of SQLite will not understand those serial types.
*/
+#if 0 /* Inlined into the OP_MakeRecord opcode */
/*
** Return the serial-type for the value stored in pMem.
**
** This routine might convert a large MEM_IntReal value into MEM_Real.
+**
+** 2019-07-11: The primary user of this subroutine was the OP_MakeRecord
+** opcode in the byte-code engine. But by moving this routine in-line, we
+** can omit some redundant tests and make that opcode a lot faster. So
+** this routine is now only used by the STAT3 logic and STAT3 support has
+** ended. The code is kept here for historical reference only.
*/
SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format, u32 *pLen){
int flags = pMem->flags;
@@ -79932,6 +80062,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format, u32 *pLen){
*pLen = n;
return ((n*2) + 12 + ((flags&MEM_Str)!=0));
}
+#endif /* inlined into OP_MakeRecord */
/*
** The sizes for serial types less than 128
@@ -80240,7 +80371,7 @@ SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(
p = (UnpackedRecord *)sqlite3DbMallocRaw(pKeyInfo->db, nByte);
if( !p ) return 0;
p->aMem = (Mem*)&((char*)p)[ROUND8(sizeof(UnpackedRecord))];
- assert( pKeyInfo->aSortOrder!=0 );
+ assert( pKeyInfo->aSortFlags!=0 );
p->pKeyInfo = pKeyInfo;
p->nField = pKeyInfo->nKeyField + 1;
return p;
@@ -80339,7 +80470,7 @@ static int vdbeRecordCompareDebug(
if( szHdr1>98307 ) return SQLITE_CORRUPT;
d1 = szHdr1;
assert( pKeyInfo->nAllField>=pPKey2->nField || CORRUPT_DB );
- assert( pKeyInfo->aSortOrder!=0 );
+ assert( pKeyInfo->aSortFlags!=0 );
assert( pKeyInfo->nKeyField>0 );
assert( idx1<=szHdr1 || CORRUPT_DB );
do{
@@ -80370,7 +80501,12 @@ static int vdbeRecordCompareDebug(
pKeyInfo->nAllField>i ? pKeyInfo->aColl[i] : 0);
if( rc!=0 ){
assert( mem1.szMalloc==0 ); /* See comment below */
- if( pKeyInfo->aSortOrder[i] ){
+ if( (pKeyInfo->aSortFlags[i] & KEYINFO_ORDER_BIGNULL)
+ && ((mem1.flags & MEM_Null) || (pPKey2->aMem[i].flags & MEM_Null))
+ ){
+ rc = -rc;
+ }
+ if( pKeyInfo->aSortFlags[i] & KEYINFO_ORDER_DESC ){
rc = -rc; /* Invert the result for DESC sort order. */
}
goto debugCompareEnd;
@@ -80746,7 +80882,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip(
VVA_ONLY( mem1.szMalloc = 0; ) /* Only needed by assert() statements */
assert( pPKey2->pKeyInfo->nAllField>=pPKey2->nField
|| CORRUPT_DB );
- assert( pPKey2->pKeyInfo->aSortOrder!=0 );
+ assert( pPKey2->pKeyInfo->aSortFlags!=0 );
assert( pPKey2->pKeyInfo->nKeyField>0 );
assert( idx1<=szHdr1 || CORRUPT_DB );
do{
@@ -80869,8 +81005,14 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompareWithSkip(
}
if( rc!=0 ){
- if( pPKey2->pKeyInfo->aSortOrder[i] ){
- rc = -rc;
+ int sortFlags = pPKey2->pKeyInfo->aSortFlags[i];
+ if( sortFlags ){
+ if( (sortFlags & KEYINFO_ORDER_BIGNULL)==0
+ || ((sortFlags & KEYINFO_ORDER_DESC)
+ !=(serial_type==0 || (pRhs->flags&MEM_Null)))
+ ){
+ rc = -rc;
+ }
}
assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, rc) );
assert( mem1.szMalloc==0 ); /* See comment below */
@@ -81038,7 +81180,11 @@ static int vdbeRecordCompareString(
nCmp = MIN( pPKey2->aMem[0].n, nStr );
res = memcmp(&aKey1[szHdr], pPKey2->aMem[0].z, nCmp);
- if( res==0 ){
+ if( res>0 ){
+ res = pPKey2->r2;
+ }else if( res<0 ){
+ res = pPKey2->r1;
+ }else{
res = nStr - pPKey2->aMem[0].n;
if( res==0 ){
if( pPKey2->nField>1 ){
@@ -81052,10 +81198,6 @@ static int vdbeRecordCompareString(
}else{
res = pPKey2->r1;
}
- }else if( res>0 ){
- res = pPKey2->r2;
- }else{
- res = pPKey2->r1;
}
}
@@ -81087,7 +81229,10 @@ SQLITE_PRIVATE RecordCompare sqlite3VdbeFindCompare(UnpackedRecord *p){
** header size is (12*5 + 1 + 1) bytes. */
if( p->pKeyInfo->nAllField<=13 ){
int flags = p->aMem[0].flags;
- if( p->pKeyInfo->aSortOrder[0] ){
+ if( p->pKeyInfo->aSortFlags[0] ){
+ if( p->pKeyInfo->aSortFlags[0] & KEYINFO_ORDER_BIGNULL ){
+ return sqlite3VdbeRecordCompare;
+ }
p->r1 = 1;
p->r2 = -1;
}else{
@@ -81336,7 +81481,7 @@ SQLITE_PRIVATE void sqlite3VdbeSetVarmask(Vdbe *v, int iVar){
** features such as 'now'.
*/
SQLITE_PRIVATE int sqlite3NotPureFunc(sqlite3_context *pCtx){
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( pCtx->pVdbe==0 ) return 1;
#endif
if( pCtx->pVdbe->aOp[pCtx->iOp].opcode==OP_PureFunc ){
@@ -81433,7 +81578,7 @@ SQLITE_PRIVATE void sqlite3VdbePreUpdateHook(
preupdate.keyinfo.db = db;
preupdate.keyinfo.enc = ENC(db);
preupdate.keyinfo.nKeyField = pTab->nCol;
- preupdate.keyinfo.aSortOrder = (u8*)&fakeSortOrder;
+ preupdate.keyinfo.aSortFlags = (u8*)&fakeSortOrder;
preupdate.iKey1 = iKey1;
preupdate.iKey2 = iKey2;
preupdate.pTab = pTab;
@@ -82302,7 +82447,7 @@ SQLITE_API int sqlite3_vtab_nochange(sqlite3_context *p){
*/
SQLITE_PRIVATE sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context *p){
int rc;
-#ifndef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifndef SQLITE_ENABLE_STAT4
sqlite3_int64 *piTime = &p->pVdbe->iCurrentTime;
assert( p->pVdbe!=0 );
#else
@@ -82367,7 +82512,7 @@ SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
AuxData *pAuxData;
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
-#if SQLITE_ENABLE_STAT3_OR_STAT4
+#if SQLITE_ENABLE_STAT4
if( pCtx->pVdbe==0 ) return 0;
#else
assert( pCtx->pVdbe!=0 );
@@ -82401,7 +82546,7 @@ SQLITE_API void sqlite3_set_auxdata(
Vdbe *pVdbe = pCtx->pVdbe;
assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( pVdbe==0 ) goto failed;
#else
assert( pVdbe!=0 );
@@ -84053,6 +84198,7 @@ static void applyNumericAffinity(Mem *pRec, int bTryForInt){
** Convert pRec to a text representation.
**
** SQLITE_AFF_BLOB:
+** SQLITE_AFF_NONE:
** No-op. pRec is unchanged.
*/
static void applyAffinity(
@@ -84192,13 +84338,15 @@ SQLITE_PRIVATE void sqlite3VdbeMemPrettyPrint(Mem *pMem, char *zBuf){
c = 's';
}
*(zCsr++) = c;
+ *(zCsr++) = 'x';
sqlite3_snprintf(100, zCsr, "%d[", pMem->n);
zCsr += sqlite3Strlen30(zCsr);
- for(i=0; i<16 && i<pMem->n; i++){
+ for(i=0; i<25 && i<pMem->n; i++){
sqlite3_snprintf(100, zCsr, "%02X", ((int)pMem->z[i] & 0xFF));
zCsr += sqlite3Strlen30(zCsr);
}
- for(i=0; i<16 && i<pMem->n; i++){
+ *zCsr++ = '|';
+ for(i=0; i<25 && i<pMem->n; i++){
char z = pMem->z[i];
if( z<32 || z>126 ) *zCsr++ = '.';
else *zCsr++ = z;
@@ -84228,7 +84376,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemPrettyPrint(Mem *pMem, char *zBuf){
sqlite3_snprintf(100, &zBuf[k], "%d", pMem->n);
k += sqlite3Strlen30(&zBuf[k]);
zBuf[k++] = '[';
- for(j=0; j<15 && j<pMem->n; j++){
+ for(j=0; j<25 && j<pMem->n; j++){
u8 c = pMem->z[j];
if( c>=0x20 && c<0x7f ){
zBuf[k++] = c;
@@ -84261,7 +84409,7 @@ static void memTracePrint(Mem *p){
printf(" i:%lld", p->u.i);
#ifndef SQLITE_OMIT_FLOATING_POINT
}else if( p->flags & MEM_Real ){
- printf(" r:%g", p->u.r);
+ printf(" r:%.17g", p->u.r);
#endif
}else if( sqlite3VdbeMemIsRowSet(p) ){
printf(" (rowset)");
@@ -84939,7 +85087,6 @@ case OP_Real: { /* same as TK_FLOAT, out2 */
case OP_String8: { /* same as TK_STRING, out2 */
assert( pOp->p4.z!=0 );
pOut = out2Prerelease(p, pOp);
- pOp->opcode = OP_String;
pOp->p1 = sqlite3Strlen30(pOp->p4.z);
#ifndef SQLITE_OMIT_UTF16
@@ -84963,6 +85110,7 @@ case OP_String8: { /* same as TK_STRING, out2 */
if( pOp->p1>db->aLimit[SQLITE_LIMIT_LENGTH] ){
goto too_big;
}
+ pOp->opcode = OP_String;
assert( rc==SQLITE_OK );
/* Fall through to the next case, OP_String */
}
@@ -85630,6 +85778,7 @@ case OP_RealAffinity: { /* in1 */
testcase( pIn1->flags & MEM_Int );
testcase( pIn1->flags & MEM_IntReal );
sqlite3VdbeMemRealify(pIn1);
+ REGISTER_TRACE(pOp->p1, pIn1);
}
break;
}
@@ -86025,9 +86174,14 @@ case OP_Compare: {
REGISTER_TRACE(p2+idx, &aMem[p2+idx]);
assert( i<pKeyInfo->nKeyField );
pColl = pKeyInfo->aColl[i];
- bRev = pKeyInfo->aSortOrder[i];
+ bRev = (pKeyInfo->aSortFlags[i] & KEYINFO_ORDER_DESC);
iCompare = sqlite3MemCompare(&aMem[p1+idx], &aMem[p2+idx], pColl);
if( iCompare ){
+ if( (pKeyInfo->aSortFlags[i] & KEYINFO_ORDER_BIGNULL)
+ && ((aMem[p1+idx].flags & MEM_Null) || (aMem[p2+idx].flags & MEM_Null))
+ ){
+ iCompare = -iCompare;
+ }
if( bRev ) iCompare = -iCompare;
break;
}
@@ -86318,11 +86472,6 @@ case OP_Offset: { /* out3 */
** if the P4 argument is a P4_MEM use the value of the P4 argument as
** the result.
**
-** If the OPFLAG_CLEARCACHE bit is set on P5 and P1 is a pseudo-table cursor,
-** then the cache of the cursor is reset prior to extracting the column.
-** The first OP_Column against a pseudo-table after the value of the content
-** register has changed should have this bit set.
-**
** If the OPFLAG_LENGTHARG and OPFLAG_TYPEOFARG bits are set on P5 then
** the result is guaranteed to only be used as the argument of a length()
** or typeof() function, respectively. The loading of large blobs can be
@@ -86611,15 +86760,27 @@ case OP_Affinity: {
assert( pOp->p2>0 );
assert( zAffinity[pOp->p2]==0 );
pIn1 = &aMem[pOp->p1];
- while( 1 /*edit-by-break*/ ){
+ while( 1 /*exit-by-break*/ ){
assert( pIn1 <= &p->aMem[(p->nMem+1 - p->nCursor)] );
assert( memIsValid(pIn1) );
applyAffinity(pIn1, zAffinity[0], encoding);
if( zAffinity[0]==SQLITE_AFF_REAL && (pIn1->flags & MEM_Int)!=0 ){
- /* When applying REAL affinity, if the result is still MEM_Int,
- ** indicate that REAL is actually desired */
- pIn1->flags |= MEM_IntReal;
- pIn1->flags &= ~MEM_Int;
+ /* When applying REAL affinity, if the result is still an MEM_Int
+ ** that will fit in 6 bytes, then change the type to MEM_IntReal
+ ** so that we keep the high-resolution integer value but know that
+ ** the type really wants to be REAL. */
+ testcase( pIn1->u.i==140737488355328LL );
+ testcase( pIn1->u.i==140737488355327LL );
+ testcase( pIn1->u.i==-140737488355328LL );
+ testcase( pIn1->u.i==-140737488355329LL );
+ if( pIn1->u.i<=140737488355327LL && pIn1->u.i>=-140737488355328LL ){
+ pIn1->flags |= MEM_IntReal;
+ pIn1->flags &= ~MEM_Int;
+ }else{
+ pIn1->u.r = (double)pIn1->u.i;
+ pIn1->flags |= MEM_Real;
+ pIn1->flags &= ~MEM_Int;
+ }
}
REGISTER_TRACE((int)(pIn1-aMem), pIn1);
zAffinity++;
@@ -86726,14 +86887,36 @@ case OP_MakeRecord: {
#endif
/* Loop through the elements that will make up the record to figure
- ** out how much space is required for the new record.
+ ** out how much space is required for the new record. After this loop,
+ ** the Mem.uTemp field of each term should hold the serial-type that will
+ ** be used for that term in the generated record:
+ **
+ ** Mem.uTemp value type
+ ** --------------- ---------------
+ ** 0 NULL
+ ** 1 1-byte signed integer
+ ** 2 2-byte signed integer
+ ** 3 3-byte signed integer
+ ** 4 4-byte signed integer
+ ** 5 6-byte signed integer
+ ** 6 8-byte signed integer
+ ** 7 IEEE float
+ ** 8 Integer constant 0
+ ** 9 Integer constant 1
+ ** 10,11 reserved for expansion
+ ** N>=12 and even BLOB
+ ** N>=13 and odd text
+ **
+ ** The following additional values are computed:
+ ** nHdr Number of bytes needed for the record header
+ ** nData Number of bytes of data space needed for the record
+ ** nZero Zero bytes at the end of the record
*/
pRec = pLast;
do{
assert( memIsValid(pRec) );
- serial_type = sqlite3VdbeSerialType(pRec, file_format, &len);
- if( pRec->flags & MEM_Zero ){
- if( serial_type==0 ){
+ if( pRec->flags & MEM_Null ){
+ if( pRec->flags & MEM_Zero ){
/* Values with MEM_Null and MEM_Zero are created by xColumn virtual
** table methods that never invoke sqlite3_result_xxxxx() while
** computing an unchanging column value in an UPDATE statement.
@@ -86741,19 +86924,83 @@ case OP_MakeRecord: {
** so that they can be passed through to xUpdate and have
** a true sqlite3_value_nochange(). */
assert( pOp->p5==OPFLAG_NOCHNG_MAGIC || CORRUPT_DB );
- serial_type = 10;
- }else if( nData ){
- if( sqlite3VdbeMemExpandBlob(pRec) ) goto no_mem;
+ pRec->uTemp = 10;
+ }else{
+ pRec->uTemp = 0;
+ }
+ nHdr++;
+ }else if( pRec->flags & (MEM_Int|MEM_IntReal) ){
+ /* Figure out whether to use 1, 2, 4, 6 or 8 bytes. */
+ i64 i = pRec->u.i;
+ u64 uu;
+ testcase( pRec->flags & MEM_Int );
+ testcase( pRec->flags & MEM_IntReal );
+ if( i<0 ){
+ uu = ~i;
}else{
- nZero += pRec->u.nZero;
- len -= pRec->u.nZero;
+ uu = i;
+ }
+ nHdr++;
+ testcase( uu==127 ); testcase( uu==128 );
+ testcase( uu==32767 ); testcase( uu==32768 );
+ testcase( uu==8388607 ); testcase( uu==8388608 );
+ testcase( uu==2147483647 ); testcase( uu==2147483648 );
+ testcase( uu==140737488355327LL ); testcase( uu==140737488355328LL );
+ if( uu<=127 ){
+ if( (i&1)==i && file_format>=4 ){
+ pRec->uTemp = 8+(u32)uu;
+ }else{
+ nData++;
+ pRec->uTemp = 1;
+ }
+ }else if( uu<=32767 ){
+ nData += 2;
+ pRec->uTemp = 2;
+ }else if( uu<=8388607 ){
+ nData += 3;
+ pRec->uTemp = 3;
+ }else if( uu<=2147483647 ){
+ nData += 4;
+ pRec->uTemp = 4;
+ }else if( uu<=140737488355327LL ){
+ nData += 6;
+ pRec->uTemp = 5;
+ }else{
+ nData += 8;
+ if( pRec->flags & MEM_IntReal ){
+ /* If the value is IntReal and is going to take up 8 bytes to store
+ ** as an integer, then we might as well make it an 8-byte floating
+ ** point value */
+ pRec->u.r = (double)pRec->u.i;
+ pRec->flags &= ~MEM_IntReal;
+ pRec->flags |= MEM_Real;
+ pRec->uTemp = 7;
+ }else{
+ pRec->uTemp = 6;
+ }
+ }
+ }else if( pRec->flags & MEM_Real ){
+ nHdr++;
+ nData += 8;
+ pRec->uTemp = 7;
+ }else{
+ assert( db->mallocFailed || pRec->flags&(MEM_Str|MEM_Blob) );
+ assert( pRec->n>=0 );
+ len = (u32)pRec->n;
+ serial_type = (len*2) + 12 + ((pRec->flags & MEM_Str)!=0);
+ if( pRec->flags & MEM_Zero ){
+ serial_type += pRec->u.nZero*2;
+ if( nData ){
+ if( sqlite3VdbeMemExpandBlob(pRec) ) goto no_mem;
+ len += pRec->u.nZero;
+ }else{
+ nZero += pRec->u.nZero;
+ }
}
+ nData += len;
+ nHdr += sqlite3VarintLen(serial_type);
+ pRec->uTemp = serial_type;
}
- nData += len;
- testcase( serial_type==127 );
- testcase( serial_type==128 );
- nHdr += serial_type<=127 ? 1 : sqlite3VarintLen(serial_type);
- pRec->uTemp = serial_type;
if( pRec==pData0 ) break;
pRec--;
}while(1);
@@ -87089,7 +87336,7 @@ case OP_AutoCommit: {
rc = SQLITE_ERROR;
goto abort_due_to_error;
}
- break;
+ /*NOTREACHED*/ assert(0);
}
/* Opcode: Transaction P1 P2 P3 P4 P5
@@ -87827,6 +88074,7 @@ case OP_SeekGT: { /* jump, in3, group */
pC->deferredMoveto = 0;
pC->cacheStatus = CACHE_STALE;
if( pC->isTable ){
+ u16 flags3, newType;
/* The BTREE_SEEK_EQ flag is only set on index cursors */
assert( sqlite3BtreeCursorHasHint(pC->uc.pCursor, BTREE_SEEK_EQ)==0
|| CORRUPT_DB );
@@ -87835,18 +88083,21 @@ case OP_SeekGT: { /* jump, in3, group */
** blob, or NULL. But it needs to be an integer before we can do
** the seek, so convert it. */
pIn3 = &aMem[pOp->p3];
- if( (pIn3->flags & (MEM_Int|MEM_Real|MEM_IntReal|MEM_Str))==MEM_Str ){
+ flags3 = pIn3->flags;
+ if( (flags3 & (MEM_Int|MEM_Real|MEM_IntReal|MEM_Str))==MEM_Str ){
applyNumericAffinity(pIn3, 0);
}
- iKey = sqlite3VdbeIntValue(pIn3);
+ iKey = sqlite3VdbeIntValue(pIn3); /* Get the integer key value */
+ newType = pIn3->flags; /* Record the type after applying numeric affinity */
+ pIn3->flags = flags3; /* But convert the type back to its original */
/* If the P3 value could not be converted into an integer without
** loss of information, then special processing is required... */
- if( (pIn3->flags & (MEM_Int|MEM_IntReal))==0 ){
- if( (pIn3->flags & MEM_Real)==0 ){
- if( (pIn3->flags & MEM_Null) || oc>=OP_SeekGE ){
- VdbeBranchTaken(1,2); goto jump_to_p2;
- break;
+ if( (newType & (MEM_Int|MEM_IntReal))==0 ){
+ if( (newType & MEM_Real)==0 ){
+ if( (newType & MEM_Null) || oc>=OP_SeekGE ){
+ VdbeBranchTaken(1,2);
+ goto jump_to_p2;
}else{
rc = sqlite3BtreeLast(pC->uc.pCursor, &res);
if( rc!=SQLITE_OK ) goto abort_due_to_error;
@@ -88231,23 +88482,27 @@ case OP_SeekRowid: { /* jump, in3 */
pIn3 = &aMem[pOp->p3];
testcase( pIn3->flags & MEM_Int );
testcase( pIn3->flags & MEM_IntReal );
+ testcase( pIn3->flags & MEM_Real );
+ testcase( (pIn3->flags & (MEM_Str|MEM_Int))==MEM_Str );
if( (pIn3->flags & (MEM_Int|MEM_IntReal))==0 ){
- /* Make sure pIn3->u.i contains a valid integer representation of
- ** the key value, but do not change the datatype of the register, as
- ** other parts of the perpared statement might be depending on the
- ** current datatype. */
- u16 origFlags = pIn3->flags;
- int isNotInt;
- applyAffinity(pIn3, SQLITE_AFF_NUMERIC, encoding);
- isNotInt = (pIn3->flags & MEM_Int)==0;
- pIn3->flags = origFlags;
- if( isNotInt ) goto jump_to_p2;
+ /* If pIn3->u.i does not contain an integer, compute iKey as the
+ ** integer value of pIn3. Jump to P2 if pIn3 cannot be converted
+ ** into an integer without loss of information. Take care to avoid
+ ** changing the datatype of pIn3, however, as it is used by other
+ ** parts of the prepared statement. */
+ Mem x = pIn3[0];
+ applyAffinity(&x, SQLITE_AFF_NUMERIC, encoding);
+ if( (x.flags & MEM_Int)==0 ) goto jump_to_p2;
+ iKey = x.u.i;
+ goto notExistsWithKey;
}
/* Fall through into OP_NotExists */
case OP_NotExists: /* jump, in3 */
pIn3 = &aMem[pOp->p3];
assert( (pIn3->flags & MEM_Int)!=0 || pOp->opcode==OP_SeekRowid );
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
+ iKey = pIn3->u.i;
+notExistsWithKey:
pC = p->apCsr[pOp->p1];
assert( pC!=0 );
#ifdef SQLITE_DEBUG
@@ -88258,7 +88513,6 @@ case OP_NotExists: /* jump, in3 */
pCrsr = pC->uc.pCursor;
assert( pCrsr!=0 );
res = 0;
- iKey = pIn3->u.i;
rc = sqlite3BtreeMovetoUnpacked(pCrsr, 0, iKey, 0, &res);
assert( rc==SQLITE_OK || res==0 );
pC->movetoTarget = iKey; /* Used by OP_Delete */
@@ -89140,11 +89394,12 @@ case OP_Next: /* jump */
** The Prev opcode is only used after SeekLT, SeekLE, and Last. */
assert( pOp->opcode!=OP_Next
|| pC->seekOp==OP_SeekGT || pC->seekOp==OP_SeekGE
- || pC->seekOp==OP_Rewind || pC->seekOp==OP_Found
- || pC->seekOp==OP_NullRow|| pC->seekOp==OP_SeekRowid);
+ || pC->seekOp==OP_Rewind || pC->seekOp==OP_Found
+ || pC->seekOp==OP_NullRow|| pC->seekOp==OP_SeekRowid
+ || pC->seekOp==OP_IfNoHope);
assert( pOp->opcode!=OP_Prev
|| pC->seekOp==OP_SeekLT || pC->seekOp==OP_SeekLE
- || pC->seekOp==OP_Last
+ || pC->seekOp==OP_Last || pC->seekOp==OP_IfNoHope
|| pC->seekOp==OP_NullRow);
rc = pOp->p4.xAdvance(pC->uc.pCursor, pOp->p3);
@@ -89663,7 +89918,7 @@ case OP_ParseSchema: {
initData.pzErrMsg = &p->zErrMsg;
initData.mInitFlags = 0;
zSql = sqlite3MPrintf(db,
- "SELECT name, rootpage, sql FROM '%q'.%s WHERE %s ORDER BY rowid",
+ "SELECT*FROM\"%w\".%s WHERE %s ORDER BY rowid",
db->aDb[iDb].zDbSName, zMaster, pOp->p4.z);
if( zSql==0 ){
rc = SQLITE_NOMEM_BKPT;
@@ -91870,11 +92125,12 @@ SQLITE_API int sqlite3_blob_close(sqlite3_blob *pBlob){
sqlite3 *db;
if( p ){
+ sqlite3_stmt *pStmt = p->pStmt;
db = p->db;
sqlite3_mutex_enter(db->mutex);
- rc = sqlite3_finalize(p->pStmt);
sqlite3DbFree(db, p);
sqlite3_mutex_leave(db->mutex);
+ rc = sqlite3_finalize(pStmt);
}else{
rc = SQLITE_OK;
}
@@ -92854,7 +93110,8 @@ static int vdbeSorterCompareText(
);
}
}else{
- if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
+ assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) );
+ if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){
res = res * -1;
}
}
@@ -92922,7 +93179,8 @@ static int vdbeSorterCompareInt(
pTask, pbKey2Cached, pKey1, nKey1, pKey2, nKey2
);
}
- }else if( pTask->pSorter->pKeyInfo->aSortOrder[0] ){
+ }else if( pTask->pSorter->pKeyInfo->aSortFlags[0] ){
+ assert( !(pTask->pSorter->pKeyInfo->aSortFlags[0]&KEYINFO_ORDER_BIGNULL) );
res = res * -1;
}
@@ -93037,6 +93295,7 @@ SQLITE_PRIVATE int sqlite3VdbeSorterInit(
if( pKeyInfo->nAllField<13
&& (pKeyInfo->aColl[0]==0 || pKeyInfo->aColl[0]==db->pDfltColl)
+ && (pKeyInfo->aSortFlags[0] & KEYINFO_ORDER_BIGNULL)==0
){
pSorter->typeMask = SORTER_TYPE_INTEGER | SORTER_TYPE_TEXT;
}
@@ -93753,13 +94012,16 @@ static int vdbeSorterFlushPMA(VdbeSorter *pSorter){
rc = vdbeSorterListToPMA(&pSorter->aTask[nWorker], &pSorter->list);
}else{
/* Launch a background thread for this operation */
- u8 *aMem = pTask->list.aMemory;
- void *pCtx = (void*)pTask;
+ u8 *aMem;
+ void *pCtx;
+ assert( pTask!=0 );
assert( pTask->pThread==0 && pTask->bDone==0 );
assert( pTask->list.pList==0 );
assert( pTask->list.aMemory==0 || pSorter->list.aMemory!=0 );
+ aMem = pTask->list.aMemory;
+ pCtx = (void*)pTask;
pSorter->iPrev = (u8)(pTask - pSorter->aTask);
pTask->list = pSorter->list;
pSorter->list.pList = 0;
@@ -94883,14 +95145,9 @@ static int memjrnlRead(
int iChunkOffset;
FileChunk *pChunk;
-#if defined(SQLITE_ENABLE_ATOMIC_WRITE) \
- || defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
if( (iAmt+iOfst)>p->endpoint.iOffset ){
return SQLITE_IOERR_SHORT_READ;
}
-#endif
-
- assert( (iAmt+iOfst)<=p->endpoint.iOffset );
assert( p->readpoint.iOffset==0 || p->readpoint.pChunk!=0 );
if( p->readpoint.iOffset!=iOfst || iOfst==0 ){
sqlite3_int64 iOff = 0;
@@ -95249,9 +95506,22 @@ SQLITE_PRIVATE int sqlite3JournalSize(sqlite3_vfs *pVfs){
static int walkWindowList(Walker *pWalker, Window *pList){
Window *pWin;
for(pWin=pList; pWin; pWin=pWin->pNextWin){
- if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort;
- if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort;
- if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort;
+ int rc;
+ rc = sqlite3WalkExprList(pWalker, pWin->pOrderBy);
+ if( rc ) return WRC_Abort;
+ rc = sqlite3WalkExprList(pWalker, pWin->pPartition);
+ if( rc ) return WRC_Abort;
+ rc = sqlite3WalkExpr(pWalker, pWin->pFilter);
+ if( rc ) return WRC_Abort;
+
+ /* The next two are purely for calls to sqlite3RenameExprUnmap()
+ ** within sqlite3WindowOffsetExpr(). Because of constraints imposed
+ ** by sqlite3WindowOffsetExpr(), they can never fail. The results do
+ ** not matter anyhow. */
+ rc = sqlite3WalkExpr(pWalker, pWin->pStart);
+ if( NEVER(rc) ) return WRC_Abort;
+ rc = sqlite3WalkExpr(pWalker, pWin->pEnd);
+ if( NEVER(rc) ) return WRC_Abort;
}
return WRC_Continue;
}
@@ -95287,18 +95557,22 @@ static SQLITE_NOINLINE int walkExpr(Walker *pWalker, Expr *pExpr){
if( pExpr->pLeft && walkExpr(pWalker, pExpr->pLeft) ) return WRC_Abort;
assert( pExpr->x.pList==0 || pExpr->pRight==0 );
if( pExpr->pRight ){
+ assert( !ExprHasProperty(pExpr, EP_WinFunc) );
pExpr = pExpr->pRight;
continue;
}else if( ExprHasProperty(pExpr, EP_xIsSelect) ){
+ assert( !ExprHasProperty(pExpr, EP_WinFunc) );
if( sqlite3WalkSelect(pWalker, pExpr->x.pSelect) ) return WRC_Abort;
- }else if( pExpr->x.pList ){
- if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort;
- }
+ }else{
+ if( pExpr->x.pList ){
+ if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort;
+ }
#ifndef SQLITE_OMIT_WINDOWFUNC
- if( ExprHasProperty(pExpr, EP_WinFunc) ){
- if( walkWindowList(pWalker, pExpr->y.pWin) ) return WRC_Abort;
- }
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ if( walkWindowList(pWalker, pExpr->y.pWin) ) return WRC_Abort;
+ }
#endif
+ }
}
break;
}
@@ -95340,8 +95614,9 @@ SQLITE_PRIVATE int sqlite3WalkSelectExpr(Walker *pWalker, Select *p){
{
Parse *pParse = pWalker->pParse;
if( pParse && IN_RENAME_OBJECT ){
+ /* The following may return WRC_Abort if there are unresolvable
+ ** symbols (e.g. a table that does not exist) in a window definition. */
int rc = walkWindowList(pWalker, p->pWinDefn);
- assert( rc==WRC_Continue );
return rc;
}
}
@@ -95513,6 +95788,13 @@ static void resolveAlias(
pExpr->u.zToken = sqlite3DbStrDup(db, pExpr->u.zToken);
pExpr->flags |= EP_MemToken;
}
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ if( pExpr->y.pWin!=0 ){
+ pExpr->y.pWin->pOwner = pExpr;
+ }else{
+ assert( db->mallocFailed );
+ }
+ }
sqlite3DbFree(db, pDup);
}
ExprSetProperty(pExpr, EP_Alias);
@@ -95798,7 +96080,7 @@ static int lookupName(
{
#ifndef SQLITE_OMIT_TRIGGER
if( iCol<0 ){
- pExpr->affinity = SQLITE_AFF_INTEGER;
+ pExpr->affExpr = SQLITE_AFF_INTEGER;
}else if( pExpr->iTable==0 ){
testcase( iCol==31 );
testcase( iCol==32 );
@@ -95830,7 +96112,7 @@ static int lookupName(
){
cnt = 1;
pExpr->iColumn = -1;
- pExpr->affinity = SQLITE_AFF_INTEGER;
+ pExpr->affExpr = SQLITE_AFF_INTEGER;
}
/*
@@ -96106,7 +96388,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
pExpr->y.pTab = pItem->pTab;
pExpr->iTable = pItem->iCursor;
pExpr->iColumn = -1;
- pExpr->affinity = SQLITE_AFF_INTEGER;
+ pExpr->affExpr = SQLITE_AFF_INTEGER;
break;
}
#endif /* defined(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)
@@ -96166,7 +96448,9 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
FuncDef *pDef; /* Information about the function */
u8 enc = ENC(pParse->db); /* The database encoding */
int savedAllowFlags = (pNC->ncFlags & (NC_AllowAgg | NC_AllowWin));
-
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0);
+#endif
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
zId = pExpr->u.zToken;
nId = sqlite3Strlen30(zId);
@@ -96238,6 +96522,15 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
** SQL is being compiled using sqlite3NestedParse() */
no_such_func = 1;
pDef = 0;
+ }else
+ if( (pDef->funcFlags & SQLITE_FUNC_DIRECT)!=0
+ && ExprHasProperty(pExpr, EP_Indirect)
+ && !IN_RENAME_OBJECT
+ ){
+ /* Functions tagged with SQLITE_DIRECTONLY may not be used
+ ** inside of triggers and views */
+ sqlite3ErrorMsg(pParse, "%s() prohibited in triggers and views",
+ pDef->zName);
}
}
@@ -96247,18 +96540,18 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
|| (pDef->xValue==0 && pDef->xInverse==0)
|| (pDef->xValue && pDef->xInverse && pDef->xSFunc && pDef->xFinalize)
);
- if( pDef && pDef->xValue==0 && ExprHasProperty(pExpr, EP_WinFunc) ){
+ if( pDef && pDef->xValue==0 && pWin ){
sqlite3ErrorMsg(pParse,
"%.*s() may not be used as a window function", nId, zId
);
pNC->nErr++;
}else if(
(is_agg && (pNC->ncFlags & NC_AllowAgg)==0)
- || (is_agg && (pDef->funcFlags&SQLITE_FUNC_WINDOW) && !pExpr->y.pWin)
- || (is_agg && pExpr->y.pWin && (pNC->ncFlags & NC_AllowWin)==0)
+ || (is_agg && (pDef->funcFlags&SQLITE_FUNC_WINDOW) && !pWin)
+ || (is_agg && pWin && (pNC->ncFlags & NC_AllowWin)==0)
){
const char *zType;
- if( (pDef->funcFlags & SQLITE_FUNC_WINDOW) || pExpr->y.pWin ){
+ if( (pDef->funcFlags & SQLITE_FUNC_WINDOW) || pWin ){
zType = "window";
}else{
zType = "aggregate";
@@ -96286,34 +96579,44 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
nId, zId);
pNC->nErr++;
}
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ else if( is_agg==0 && ExprHasProperty(pExpr, EP_WinFunc) ){
+ sqlite3ErrorMsg(pParse,
+ "FILTER may not be used with non-aggregate %.*s()",
+ nId, zId
+ );
+ pNC->nErr++;
+ }
+#endif
if( is_agg ){
/* Window functions may not be arguments of aggregate functions.
** Or arguments of other window functions. But aggregate functions
** may be arguments for window functions. */
#ifndef SQLITE_OMIT_WINDOWFUNC
- pNC->ncFlags &= ~(NC_AllowWin | (!pExpr->y.pWin ? NC_AllowAgg : 0));
+ pNC->ncFlags &= ~(NC_AllowWin | (!pWin ? NC_AllowAgg : 0));
#else
pNC->ncFlags &= ~NC_AllowAgg;
#endif
}
}
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ else if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ is_agg = 1;
+ }
+#endif
sqlite3WalkExprList(pWalker, pList);
if( is_agg ){
#ifndef SQLITE_OMIT_WINDOWFUNC
- if( pExpr->y.pWin ){
+ if( pWin ){
Select *pSel = pNC->pWinSelect;
+ assert( pWin==pExpr->y.pWin );
if( IN_RENAME_OBJECT==0 ){
- sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
- }
- sqlite3WalkExprList(pWalker, pExpr->y.pWin->pPartition);
- sqlite3WalkExprList(pWalker, pExpr->y.pWin->pOrderBy);
- sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
- if( 0==pSel->pWin
- || 0==sqlite3WindowCompare(pParse, pSel->pWin, pExpr->y.pWin)
- ){
- pExpr->y.pWin->pNextWin = pSel->pWin;
- pSel->pWin = pExpr->y.pWin;
+ sqlite3WindowUpdate(pParse, pSel->pWinDefn, pWin, pDef);
}
+ sqlite3WalkExprList(pWalker, pWin->pPartition);
+ sqlite3WalkExprList(pWalker, pWin->pOrderBy);
+ sqlite3WalkExpr(pWalker, pWin->pFilter);
+ sqlite3WindowLink(pSel, pWin);
pNC->ncFlags |= NC_HasWin;
}else
#endif /* SQLITE_OMIT_WINDOWFUNC */
@@ -96321,12 +96624,17 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
NameContext *pNC2 = pNC;
pExpr->op = TK_AGG_FUNCTION;
pExpr->op2 = 0;
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
+ }
+#endif
while( pNC2 && !sqlite3FunctionUsesThisSrc(pExpr, pNC2->pSrcList) ){
pExpr->op2++;
pNC2 = pNC2->pNext;
}
- assert( pDef!=0 );
- if( pNC2 ){
+ assert( pDef!=0 || IN_RENAME_OBJECT );
+ if( pNC2 && pDef ){
assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
pNC2->ncFlags |= NC_HasAgg | (pDef->funcFlags & SQLITE_FUNC_MINMAX);
@@ -96364,7 +96672,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
}
case TK_IS:
case TK_ISNOT: {
- Expr *pRight = sqlite3ExprSkipCollate(pExpr->pRight);
+ Expr *pRight = sqlite3ExprSkipCollateAndLikely(pExpr->pRight);
assert( !ExprHasProperty(pExpr, EP_Reduced) );
/* Handle special cases of "x IS TRUE", "x IS FALSE", "x IS NOT TRUE",
** and "x IS NOT FALSE". */
@@ -96575,7 +96883,7 @@ static int resolveCompoundOrderBy(
int iCol = -1;
Expr *pE, *pDup;
if( pItem->done ) continue;
- pE = sqlite3ExprSkipCollate(pItem->pExpr);
+ pE = sqlite3ExprSkipCollateAndLikely(pItem->pExpr);
if( sqlite3ExprIsInteger(pE, &iCol) ){
if( iCol<=0 || iCol>pEList->nExpr ){
resolveOutOfRangeError(pParse, "ORDER", i+1, pEList->nExpr);
@@ -96669,7 +96977,7 @@ SQLITE_PRIVATE int sqlite3ResolveOrderGroupBy(
ExprList *pEList;
struct ExprList_item *pItem;
- if( pOrderBy==0 || pParse->db->mallocFailed ) return 0;
+ if( pOrderBy==0 || pParse->db->mallocFailed || IN_RENAME_OBJECT ) return 0;
if( pOrderBy->nExpr>db->aLimit[SQLITE_LIMIT_COLUMN] ){
sqlite3ErrorMsg(pParse, "too many terms in %s BY clause", zType);
return 1;
@@ -96691,17 +96999,13 @@ SQLITE_PRIVATE int sqlite3ResolveOrderGroupBy(
#ifndef SQLITE_OMIT_WINDOWFUNC
/*
-** Walker callback for resolveRemoveWindows().
+** Walker callback for windowRemoveExprFromSelect().
*/
static int resolveRemoveWindowsCb(Walker *pWalker, Expr *pExpr){
+ UNUSED_PARAMETER(pWalker);
if( ExprHasProperty(pExpr, EP_WinFunc) ){
- Window **pp;
- for(pp=&pWalker->u.pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
- if( *pp==pExpr->y.pWin ){
- *pp = (*pp)->pNextWin;
- break;
- }
- }
+ Window *pWin = pExpr->y.pWin;
+ sqlite3WindowUnlinkFromSelect(pWin);
}
return WRC_Continue;
}
@@ -96710,16 +97014,18 @@ static int resolveRemoveWindowsCb(Walker *pWalker, Expr *pExpr){
** Remove any Window objects owned by the expression pExpr from the
** Select.pWin list of Select object pSelect.
*/
-static void resolveRemoveWindows(Select *pSelect, Expr *pExpr){
- Walker sWalker;
- memset(&sWalker, 0, sizeof(Walker));
- sWalker.xExprCallback = resolveRemoveWindowsCb;
- sWalker.u.pSelect = pSelect;
- sqlite3WalkExpr(&sWalker, pExpr);
+static void windowRemoveExprFromSelect(Select *pSelect, Expr *pExpr){
+ if( pSelect->pWin ){
+ Walker sWalker;
+ memset(&sWalker, 0, sizeof(Walker));
+ sWalker.xExprCallback = resolveRemoveWindowsCb;
+ sWalker.u.pSelect = pSelect;
+ sqlite3WalkExpr(&sWalker, pExpr);
+ }
}
#else
-# define resolveRemoveWindows(x,y)
-#endif
+# define windowRemoveExprFromSelect(a, b)
+#endif /* SQLITE_OMIT_WINDOWFUNC */
/*
** pOrderBy is an ORDER BY or GROUP BY clause in SELECT statement pSelect.
@@ -96756,7 +97062,7 @@ static int resolveOrderGroupBy(
pParse = pNC->pParse;
for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
Expr *pE = pItem->pExpr;
- Expr *pE2 = sqlite3ExprSkipCollate(pE);
+ Expr *pE2 = sqlite3ExprSkipCollateAndLikely(pE);
if( zType[0]!='G' ){
iCol = resolveAsName(pParse, pSelect->pEList, pE2);
if( iCol>0 ){
@@ -96790,7 +97096,7 @@ static int resolveOrderGroupBy(
/* Since this expresion is being changed into a reference
** to an identical expression in the result set, remove all Window
** objects belonging to the expression from the Select.pWin list. */
- resolveRemoveWindows(pSelect, pE);
+ windowRemoveExprFromSelect(pSelect, pE);
pItem->u.x.iOrderByCol = j+1;
}
}
@@ -97258,7 +97564,6 @@ SQLITE_PRIVATE char sqlite3TableColumnAffinity(Table *pTab, int iCol){
*/
SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr){
int op;
- if( pExpr->flags & EP_Generic ) return 0;
while( ExprHasProperty(pExpr, EP_Skip) ){
assert( pExpr->op==TK_COLLATE );
pExpr = pExpr->pLeft;
@@ -97285,7 +97590,7 @@ SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr){
pExpr->pLeft->x.pSelect->pEList->a[pExpr->iColumn].pExpr
);
}
- return pExpr->affinity;
+ return pExpr->affExpr;
}
/*
@@ -97320,10 +97625,22 @@ SQLITE_PRIVATE Expr *sqlite3ExprAddCollateString(Parse *pParse, Expr *pExpr, con
}
/*
-** Skip over any TK_COLLATE operators and any unlikely()
-** or likelihood() function at the root of an expression.
+** Skip over any TK_COLLATE operators.
*/
SQLITE_PRIVATE Expr *sqlite3ExprSkipCollate(Expr *pExpr){
+ while( pExpr && ExprHasProperty(pExpr, EP_Skip) ){
+ assert( pExpr->op==TK_COLLATE );
+ pExpr = pExpr->pLeft;
+ }
+ return pExpr;
+}
+
+/*
+** Skip over any TK_COLLATE operators and/or any unlikely()
+** or likelihood() or likely() functions at the root of an
+** expression.
+*/
+SQLITE_PRIVATE Expr *sqlite3ExprSkipCollateAndLikely(Expr *pExpr){
while( pExpr && ExprHasProperty(pExpr, EP_Skip|EP_Unlikely) ){
if( ExprHasProperty(pExpr, EP_Unlikely) ){
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
@@ -97358,7 +97675,6 @@ SQLITE_PRIVATE CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr){
Expr *p = pExpr;
while( p ){
int op = p->op;
- if( p->flags & EP_Generic ) break;
if( op==TK_REGISTER ) op = p->op2;
if( (op==TK_AGG_COLUMN || op==TK_COLUMN || op==TK_TRIGGER)
&& p->y.pTab!=0
@@ -97444,7 +97760,7 @@ SQLITE_PRIVATE int sqlite3ExprCollSeqMatch(Parse *pParse, Expr *pE1, Expr *pE2){
*/
SQLITE_PRIVATE char sqlite3CompareAffinity(Expr *pExpr, char aff2){
char aff1 = sqlite3ExprAffinity(pExpr);
- if( aff1 && aff2 ){
+ if( aff1>SQLITE_AFF_NONE && aff2>SQLITE_AFF_NONE ){
/* Both sides of the comparison are columns. If one has numeric
** affinity, use that. Otherwise use no affinity.
*/
@@ -97453,15 +97769,10 @@ SQLITE_PRIVATE char sqlite3CompareAffinity(Expr *pExpr, char aff2){
}else{
return SQLITE_AFF_BLOB;
}
- }else if( !aff1 && !aff2 ){
- /* Neither side of the comparison is a column. Compare the
- ** results directly.
- */
- return SQLITE_AFF_BLOB;
}else{
/* One side is a column, the other is not. Use the columns affinity. */
- assert( aff1==0 || aff2==0 );
- return (aff1 + aff2);
+ assert( aff1<=SQLITE_AFF_NONE || aff2<=SQLITE_AFF_NONE );
+ return (aff1<=SQLITE_AFF_NONE ? aff2 : aff1) | SQLITE_AFF_NONE;
}
}
@@ -97494,14 +97805,13 @@ static char comparisonAffinity(Expr *pExpr){
*/
SQLITE_PRIVATE int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity){
char aff = comparisonAffinity(pExpr);
- switch( aff ){
- case SQLITE_AFF_BLOB:
- return 1;
- case SQLITE_AFF_TEXT:
- return idx_affinity==SQLITE_AFF_TEXT;
- default:
- return sqlite3IsNumericAffinity(idx_affinity);
+ if( aff<SQLITE_AFF_TEXT ){
+ return 1;
+ }
+ if( aff==SQLITE_AFF_TEXT ){
+ return idx_affinity==SQLITE_AFF_TEXT;
}
+ return sqlite3IsNumericAffinity(idx_affinity);
}
/*
@@ -98115,7 +98425,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){
}else if( ExprAlwaysFalse(pLeft) || ExprAlwaysFalse(pRight) ){
sqlite3ExprUnmapAndDelete(pParse, pLeft);
sqlite3ExprUnmapAndDelete(pParse, pRight);
- return sqlite3ExprAlloc(db, TK_INTEGER, &sqlite3IntTokens[0], 0);
+ return sqlite3Expr(db, TK_INTEGER, "0");
}else{
return sqlite3PExpr(pParse, TK_AND, pLeft, pRight);
}
@@ -98254,15 +98564,18 @@ static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
assert( p->x.pList==0 || p->pRight==0 );
if( p->pLeft && p->op!=TK_SELECT_COLUMN ) sqlite3ExprDeleteNN(db, p->pLeft);
if( p->pRight ){
+ assert( !ExprHasProperty(p, EP_WinFunc) );
sqlite3ExprDeleteNN(db, p->pRight);
}else if( ExprHasProperty(p, EP_xIsSelect) ){
+ assert( !ExprHasProperty(p, EP_WinFunc) );
sqlite3SelectDelete(db, p->x.pSelect);
}else{
sqlite3ExprListDelete(db, p->x.pList);
- }
- if( ExprHasProperty(p, EP_WinFunc) ){
- assert( p->op==TK_FUNCTION );
- sqlite3WindowDelete(db, p->y.pWin);
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ if( ExprHasProperty(p, EP_WinFunc) ){
+ sqlite3WindowDelete(db, p->y.pWin);
+ }
+#endif
}
}
if( ExprHasProperty(p, EP_MemToken) ) sqlite3DbFree(db, p->u.zToken);
@@ -98298,16 +98611,6 @@ static int exprStructSize(Expr *p){
}
/*
-** Copy the complete content of an Expr node, taking care not to read
-** past the end of the structure for a reduced-size version of the source
-** Expr.
-*/
-static void exprNodeCopy(Expr *pDest, Expr *pSrc){
- memset(pDest, 0, sizeof(Expr));
- memcpy(pDest, pSrc, exprStructSize(pSrc));
-}
-
-/*
** The dupedExpr*Size() routines each return the number of bytes required
** to store a copy of an expression or expression tree. They differ in
** how much of the tree is measured.
@@ -98546,10 +98849,13 @@ static With *withDup(sqlite3 *db, With *p){
** objects found there, assembling them onto the linked list at Select->pWin.
*/
static int gatherSelectWindowsCallback(Walker *pWalker, Expr *pExpr){
- if( pExpr->op==TK_FUNCTION && pExpr->y.pWin!=0 ){
- assert( ExprHasProperty(pExpr, EP_WinFunc) );
- pExpr->y.pWin->pNextWin = pWalker->u.pSelect->pWin;
- pWalker->u.pSelect->pWin = pExpr->y.pWin;
+ if( pExpr->op==TK_FUNCTION && ExprHasProperty(pExpr, EP_WinFunc) ){
+ Select *pSelect = pWalker->u.pSelect;
+ Window *pWin = pExpr->y.pWin;
+ assert( pWin );
+ assert( IsWindowFunc(pExpr) );
+ assert( pWin->ppThis==0 );
+ sqlite3WindowLink(pSelect, pWin);
}
return WRC_Continue;
}
@@ -98623,8 +98929,9 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3 *db, ExprList *p, int flags)
}
pItem->zName = sqlite3DbStrDup(db, pOldItem->zName);
pItem->zSpan = sqlite3DbStrDup(db, pOldItem->zSpan);
- pItem->sortOrder = pOldItem->sortOrder;
+ pItem->sortFlags = pOldItem->sortFlags;
pItem->done = 0;
+ pItem->bNulls = pOldItem->bNulls;
pItem->bSpanIsTab = pOldItem->bSpanIsTab;
pItem->bSorterRef = pOldItem->bSorterRef;
pItem->u = pOldItem->u;
@@ -98735,7 +99042,7 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *pDup, int flags){
#ifndef SQLITE_OMIT_WINDOWFUNC
pNew->pWin = 0;
pNew->pWinDefn = sqlite3WindowListDup(db, p->pWinDefn);
- if( p->pWin ) gatherSelectWindows(pNew);
+ if( p->pWin && db->mallocFailed==0 ) gatherSelectWindows(pNew);
#endif
pNew->selId = p->selId;
*pp = pNew;
@@ -98844,6 +99151,10 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListAppendVector(
for(i=0; i<pColumns->nId; i++){
Expr *pSubExpr = sqlite3ExprForVectorField(pParse, pExpr, i);
+ assert( pSubExpr!=0 || db->mallocFailed );
+ assert( pSubExpr==0 || pSubExpr->iTable==0 );
+ if( pSubExpr==0 ) continue;
+ pSubExpr->iTable = pColumns->nId;
pList = sqlite3ExprListAppend(pParse, pList, pSubExpr);
if( pList ){
assert( pList->nExpr==iFirst+i+1 );
@@ -98876,15 +99187,34 @@ vector_append_error:
/*
** Set the sort order for the last element on the given ExprList.
*/
-SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList *p, int iSortOrder){
+SQLITE_PRIVATE void sqlite3ExprListSetSortOrder(ExprList *p, int iSortOrder, int eNulls){
+ struct ExprList_item *pItem;
if( p==0 ) return;
- assert( SQLITE_SO_UNDEFINED<0 && SQLITE_SO_ASC>=0 && SQLITE_SO_DESC>0 );
assert( p->nExpr>0 );
- if( iSortOrder<0 ){
- assert( p->a[p->nExpr-1].sortOrder==SQLITE_SO_ASC );
- return;
+
+ assert( SQLITE_SO_UNDEFINED<0 && SQLITE_SO_ASC==0 && SQLITE_SO_DESC>0 );
+ assert( iSortOrder==SQLITE_SO_UNDEFINED
+ || iSortOrder==SQLITE_SO_ASC
+ || iSortOrder==SQLITE_SO_DESC
+ );
+ assert( eNulls==SQLITE_SO_UNDEFINED
+ || eNulls==SQLITE_SO_ASC
+ || eNulls==SQLITE_SO_DESC
+ );
+
+ pItem = &p->a[p->nExpr-1];
+ assert( pItem->bNulls==0 );
+ if( iSortOrder==SQLITE_SO_UNDEFINED ){
+ iSortOrder = SQLITE_SO_ASC;
+ }
+ pItem->sortFlags = (u8)iSortOrder;
+
+ if( eNulls!=SQLITE_SO_UNDEFINED ){
+ pItem->bNulls = 1;
+ if( iSortOrder!=eNulls ){
+ pItem->sortFlags |= KEYINFO_ORDER_BIGNULL;
+ }
}
- p->a[p->nExpr-1].sortOrder = (u8)iSortOrder;
}
/*
@@ -99383,27 +99713,30 @@ SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr *p){
*/
SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr *p, char aff){
u8 op;
+ int unaryMinus = 0;
if( aff==SQLITE_AFF_BLOB ) return 1;
- while( p->op==TK_UPLUS || p->op==TK_UMINUS ){ p = p->pLeft; }
+ while( p->op==TK_UPLUS || p->op==TK_UMINUS ){
+ if( p->op==TK_UMINUS ) unaryMinus = 1;
+ p = p->pLeft;
+ }
op = p->op;
if( op==TK_REGISTER ) op = p->op2;
switch( op ){
case TK_INTEGER: {
- return aff==SQLITE_AFF_INTEGER || aff==SQLITE_AFF_NUMERIC;
+ return aff>=SQLITE_AFF_NUMERIC;
}
case TK_FLOAT: {
- return aff==SQLITE_AFF_REAL || aff==SQLITE_AFF_NUMERIC;
+ return aff>=SQLITE_AFF_NUMERIC;
}
case TK_STRING: {
- return aff==SQLITE_AFF_TEXT;
+ return !unaryMinus && aff==SQLITE_AFF_TEXT;
}
case TK_BLOB: {
- return 1;
+ return !unaryMinus;
}
case TK_COLUMN: {
assert( p->iTable>=0 ); /* p cannot be part of a CHECK constraint */
- return p->iColumn<0
- && (aff==SQLITE_AFF_INTEGER || aff==SQLITE_AFF_NUMERIC);
+ return aff>=SQLITE_AFF_NUMERIC && p->iColumn<0;
}
default: {
return 0;
@@ -99586,7 +99919,7 @@ static int sqlite3InRhsIsConstant(Expr *pIn){
#ifndef SQLITE_OMIT_SUBQUERY
SQLITE_PRIVATE int sqlite3FindInIndex(
Parse *pParse, /* Parsing context */
- Expr *pX, /* The right-hand side (RHS) of the IN operator */
+ Expr *pX, /* The IN expression */
u32 inFlags, /* IN_INDEX_LOOP, _MEMBERSHIP, and/or _NOOP_OK */
int *prRhsHasNull, /* Register holding NULL status. See notes */
int *aiMap, /* Mapping from Index fields to RHS fields */
@@ -100011,9 +100344,9 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
int i;
ExprList *pList = pExpr->x.pList;
struct ExprList_item *pItem;
- int r1, r2, r3;
+ int r1, r2;
affinity = sqlite3ExprAffinity(pLeft);
- if( !affinity ){
+ if( affinity<=SQLITE_AFF_NONE ){
affinity = SQLITE_AFF_BLOB;
}
if( pKeyInfo ){
@@ -100039,9 +100372,9 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
}
/* Evaluate the expression and insert it into the temp table */
- r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
- sqlite3VdbeAddOp4(v, OP_MakeRecord, r3, 1, r2, &affinity, 1);
- sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r2, r3, 1);
+ sqlite3ExprCode(pParse, pE2, r1);
+ sqlite3VdbeAddOp4(v, OP_MakeRecord, r1, 1, r2, &affinity, 1);
+ sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r2, r1, 1);
}
sqlite3ReleaseTempReg(pParse, r1);
sqlite3ReleaseTempReg(pParse, r2);
@@ -100054,6 +100387,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
/* Subroutine return */
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
+ sqlite3ClearTempRegCache(pParse);
}
}
#endif /* SQLITE_OMIT_SUBQUERY */
@@ -100067,7 +100401,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
**
** The pExpr parameter is the SELECT or EXISTS operator to be coded.
**
-** The register that holds the result. For a multi-column SELECT,
+** Return the register that holds the result. For a multi-column SELECT,
** the result is stored in a contiguous array of registers and the
** return value is the register of the left-most result column.
** Return 0 if an error occurs.
@@ -100145,11 +100479,21 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
sqlite3VdbeAddOp2(v, OP_Integer, 0, dest.iSDParm);
VdbeComment((v, "Init EXISTS result"));
}
- pLimit = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[1], 0);
if( pSel->pLimit ){
- sqlite3ExprDelete(pParse->db, pSel->pLimit->pLeft);
+ /* The subquery already has a limit. If the pre-existing limit is X
+ ** then make the new limit X<>0 so that the new limit is either 1 or 0 */
+ sqlite3 *db = pParse->db;
+ pLimit = sqlite3Expr(db, TK_INTEGER, "0");
+ if( pLimit ){
+ pLimit->affExpr = SQLITE_AFF_NUMERIC;
+ pLimit = sqlite3PExpr(pParse, TK_NE,
+ sqlite3ExprDup(db, pSel->pLimit->pLeft, 0), pLimit);
+ }
+ sqlite3ExprDelete(db, pSel->pLimit->pLeft);
pSel->pLimit->pLeft = pLimit;
}else{
+ /* If there is no pre-existing limit add a limit of 1 */
+ pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1");
pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0);
}
pSel->iLimit = 0;
@@ -100164,6 +100508,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){
/* Subroutine return */
sqlite3VdbeAddOp1(v, OP_Return, pExpr->y.sub.regReturn);
sqlite3VdbeChangeP1(v, pExpr->y.sub.iAddr-1, sqlite3VdbeCurrentAddr(v)-1);
+ sqlite3ClearTempRegCache(pParse);
}
return rReg;
@@ -100311,13 +100656,21 @@ static void sqlite3ExprCodeIN(
int r2, regToFree;
int regCkNull = 0;
int ii;
+ int bLhsReal; /* True if the LHS of the IN has REAL affinity */
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
if( destIfNull!=destIfFalse ){
regCkNull = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp3(v, OP_BitAnd, rLhs, rLhs, regCkNull);
}
+ bLhsReal = sqlite3ExprAffinity(pExpr->pLeft)==SQLITE_AFF_REAL;
for(ii=0; ii<pList->nExpr; ii++){
- r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, &regToFree);
+ if( bLhsReal ){
+ r2 = regToFree = sqlite3GetTempReg(pParse);
+ sqlite3ExprCode(pParse, pList->a[ii].pExpr, r2);
+ sqlite3VdbeAddOp4(v, OP_Affinity, r2, 1, 0, "E", P4_STATIC);
+ }else{
+ r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, &regToFree);
+ }
if( regCkNull && sqlite3ExprCanBeNull(pList->a[ii].pExpr) ){
sqlite3VdbeAddOp3(v, OP_BitAnd, regCkNull, r2, regCkNull);
}
@@ -100602,7 +100955,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int n
** the correct value for the expression.
*/
static void exprToRegister(Expr *pExpr, int iReg){
- Expr *p = sqlite3ExprSkipCollate(pExpr);
+ Expr *p = sqlite3ExprSkipCollateAndLikely(pExpr);
p->op2 = p->op;
p->op = TK_REGISTER;
p->iTable = iReg;
@@ -100703,7 +101056,7 @@ expr_code_doover:
*/
int iReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target);
int aff = sqlite3TableColumnAffinity(pExpr->y.pTab, pExpr->iColumn);
- if( aff!=SQLITE_AFF_BLOB ){
+ if( aff>SQLITE_AFF_BLOB ){
static const char zAff[] = "B\000C\000D\000E";
assert( SQLITE_AFF_BLOB=='A' );
assert( SQLITE_AFF_TEXT=='B' );
@@ -100719,7 +101072,19 @@ expr_code_doover:
if( iTab<0 ){
if( pParse->iSelfTab<0 ){
/* Generating CHECK constraints or inserting into partial index */
- return pExpr->iColumn - pParse->iSelfTab;
+ assert( pExpr->y.pTab!=0 );
+ assert( pExpr->iColumn>=XN_ROWID );
+ assert( pExpr->iColumn<pExpr->y.pTab->nCol );
+ if( pExpr->iColumn>=0
+ && pExpr->y.pTab->aCol[pExpr->iColumn].affinity==SQLITE_AFF_REAL
+ ){
+ sqlite3VdbeAddOp2(v, OP_SCopy, pExpr->iColumn - pParse->iSelfTab,
+ target);
+ sqlite3VdbeAddOp1(v, OP_RealAffinity, target);
+ return target;
+ }else{
+ return pExpr->iColumn - pParse->iSelfTab;
+ }
}else{
/* Coding an expression that is part of an index where column names
** in the index refer to the table to which the index belongs */
@@ -101006,7 +101371,7 @@ expr_code_doover:
assert( nFarg==1 );
aff = sqlite3ExprAffinity(pFarg->a[0].pExpr);
sqlite3VdbeLoadString(v, target,
- aff ? azAff[aff-SQLITE_AFF_BLOB] : "none");
+ (aff<=SQLITE_AFF_NONE) ? "none" : azAff[aff-SQLITE_AFF_BLOB]);
return target;
}
#endif
@@ -101114,8 +101479,8 @@ expr_code_doover:
pExpr->pLeft->iTable = sqlite3CodeSubselect(pParse, pExpr->pLeft);
}
assert( pExpr->iTable==0 || pExpr->pLeft->op==TK_SELECT );
- if( pExpr->iTable
- && pExpr->iTable!=(n = sqlite3ExprVectorSize(pExpr->pLeft))
+ if( pExpr->iTable!=0
+ && pExpr->iTable!=(n = sqlite3ExprVectorSize(pExpr->pLeft))
){
sqlite3ErrorMsg(pParse, "%d columns assigned %d values",
pExpr->iTable, n);
@@ -101218,10 +101583,23 @@ expr_code_doover:
break;
}
+ /* TK_IF_NULL_ROW Expr nodes are inserted ahead of expressions
+ ** that derive from the right-hand table of a LEFT JOIN. The
+ ** Expr.iTable value is the table number for the right-hand table.
+ ** The expression is only evaluated if that table is not currently
+ ** on a LEFT JOIN NULL row.
+ */
case TK_IF_NULL_ROW: {
int addrINR;
+ u8 okConstFactor = pParse->okConstFactor;
addrINR = sqlite3VdbeAddOp1(v, OP_IfNullRow, pExpr->iTable);
+ /* Temporarily disable factoring of constant expressions, since
+ ** even though expressions may appear to be constant, they are not
+ ** really constant because they originate from the right-hand side
+ ** of a LEFT JOIN. */
+ pParse->okConstFactor = 0;
inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target);
+ pParse->okConstFactor = okConstFactor;
sqlite3VdbeJumpHere(v, addrINR);
sqlite3VdbeChangeP3(v, addrINR, inReg);
break;
@@ -101258,6 +101636,8 @@ expr_code_doover:
Expr opCompare; /* The X==Ei expression */
Expr *pX; /* The X expression */
Expr *pTest = 0; /* X==Ei (form A) or just Ei (form B) */
+ Expr *pDel = 0;
+ sqlite3 *db = pParse->db;
assert( !ExprHasProperty(pExpr, EP_xIsSelect) && pExpr->x.pList );
assert(pExpr->x.pList->nExpr > 0);
@@ -101266,13 +101646,17 @@ expr_code_doover:
nExpr = pEList->nExpr;
endLabel = sqlite3VdbeMakeLabel(pParse);
if( (pX = pExpr->pLeft)!=0 ){
- exprNodeCopy(&tempX, pX);
+ pDel = sqlite3ExprDup(db, pX, 0);
+ if( db->mallocFailed ){
+ sqlite3ExprDelete(db, pDel);
+ break;
+ }
testcase( pX->op==TK_COLUMN );
- exprToRegister(&tempX, exprCodeVector(pParse, &tempX, &regFree1));
+ exprToRegister(pDel, exprCodeVector(pParse, pDel, &regFree1));
testcase( regFree1==0 );
memset(&opCompare, 0, sizeof(opCompare));
opCompare.op = TK_EQ;
- opCompare.pLeft = &tempX;
+ opCompare.pLeft = pDel;
pTest = &opCompare;
/* Ticket b351d95f9cd5ef17e9d9dbae18f5ca8611190001:
** The value in regFree1 might get SCopy-ed into the file result.
@@ -101300,32 +101684,33 @@ expr_code_doover:
}else{
sqlite3VdbeAddOp2(v, OP_Null, 0, target);
}
+ sqlite3ExprDelete(db, pDel);
sqlite3VdbeResolveLabel(v, endLabel);
break;
}
#ifndef SQLITE_OMIT_TRIGGER
case TK_RAISE: {
- assert( pExpr->affinity==OE_Rollback
- || pExpr->affinity==OE_Abort
- || pExpr->affinity==OE_Fail
- || pExpr->affinity==OE_Ignore
+ assert( pExpr->affExpr==OE_Rollback
+ || pExpr->affExpr==OE_Abort
+ || pExpr->affExpr==OE_Fail
+ || pExpr->affExpr==OE_Ignore
);
if( !pParse->pTriggerTab ){
sqlite3ErrorMsg(pParse,
"RAISE() may only be used within a trigger-program");
return 0;
}
- if( pExpr->affinity==OE_Abort ){
+ if( pExpr->affExpr==OE_Abort ){
sqlite3MayAbort(pParse);
}
assert( !ExprHasProperty(pExpr, EP_IntValue) );
- if( pExpr->affinity==OE_Ignore ){
+ if( pExpr->affExpr==OE_Ignore ){
sqlite3VdbeAddOp4(
v, OP_Halt, SQLITE_OK, OE_Ignore, 0, pExpr->u.zToken,0);
VdbeCoverage(v);
}else{
sqlite3HaltConstraint(pParse, SQLITE_CONSTRAINT_TRIGGER,
- pExpr->affinity, pExpr->u.zToken, 0, 0);
+ pExpr->affExpr, pExpr->u.zToken, 0, 0);
}
break;
@@ -101390,7 +101775,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeAtInit(
*/
SQLITE_PRIVATE int sqlite3ExprCodeTemp(Parse *pParse, Expr *pExpr, int *pReg){
int r2;
- pExpr = sqlite3ExprSkipCollate(pExpr);
+ pExpr = sqlite3ExprSkipCollateAndLikely(pExpr);
if( ConstFactorOk(pParse)
&& pExpr->op!=TK_REGISTER
&& sqlite3ExprIsConstantNotJoin(pExpr)
@@ -101581,40 +101966,44 @@ static void exprCodeBetween(
void (*xJump)(Parse*,Expr*,int,int), /* Action to take */
int jumpIfNull /* Take the jump if the BETWEEN is NULL */
){
- Expr exprAnd; /* The AND operator in x>=y AND x<=z */
+ Expr exprAnd; /* The AND operator in x>=y AND x<=z */
Expr compLeft; /* The x>=y term */
Expr compRight; /* The x<=z term */
- Expr exprX; /* The x subexpression */
int regFree1 = 0; /* Temporary use register */
+ Expr *pDel = 0;
+ sqlite3 *db = pParse->db;
memset(&compLeft, 0, sizeof(Expr));
memset(&compRight, 0, sizeof(Expr));
memset(&exprAnd, 0, sizeof(Expr));
assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
- exprNodeCopy(&exprX, pExpr->pLeft);
- exprAnd.op = TK_AND;
- exprAnd.pLeft = &compLeft;
- exprAnd.pRight = &compRight;
- compLeft.op = TK_GE;
- compLeft.pLeft = &exprX;
- compLeft.pRight = pExpr->x.pList->a[0].pExpr;
- compRight.op = TK_LE;
- compRight.pLeft = &exprX;
- compRight.pRight = pExpr->x.pList->a[1].pExpr;
- exprToRegister(&exprX, exprCodeVector(pParse, &exprX, &regFree1));
- if( xJump ){
- xJump(pParse, &exprAnd, dest, jumpIfNull);
- }else{
- /* Mark the expression is being from the ON or USING clause of a join
- ** so that the sqlite3ExprCodeTarget() routine will not attempt to move
- ** it into the Parse.pConstExpr list. We should use a new bit for this,
- ** for clarity, but we are out of bits in the Expr.flags field so we
- ** have to reuse the EP_FromJoin bit. Bummer. */
- exprX.flags |= EP_FromJoin;
- sqlite3ExprCodeTarget(pParse, &exprAnd, dest);
+ pDel = sqlite3ExprDup(db, pExpr->pLeft, 0);
+ if( db->mallocFailed==0 ){
+ exprAnd.op = TK_AND;
+ exprAnd.pLeft = &compLeft;
+ exprAnd.pRight = &compRight;
+ compLeft.op = TK_GE;
+ compLeft.pLeft = pDel;
+ compLeft.pRight = pExpr->x.pList->a[0].pExpr;
+ compRight.op = TK_LE;
+ compRight.pLeft = pDel;
+ compRight.pRight = pExpr->x.pList->a[1].pExpr;
+ exprToRegister(pDel, exprCodeVector(pParse, pDel, &regFree1));
+ if( xJump ){
+ xJump(pParse, &exprAnd, dest, jumpIfNull);
+ }else{
+ /* Mark the expression is being from the ON or USING clause of a join
+ ** so that the sqlite3ExprCodeTarget() routine will not attempt to move
+ ** it into the Parse.pConstExpr list. We should use a new bit for this,
+ ** for clarity, but we are out of bits in the Expr.flags field so we
+ ** have to reuse the EP_FromJoin bit. Bummer. */
+ pDel->flags |= EP_FromJoin;
+ sqlite3ExprCodeTarget(pParse, &exprAnd, dest);
+ }
+ sqlite3ReleaseTempReg(pParse, regFree1);
}
- sqlite3ReleaseTempReg(pParse, regFree1);
+ sqlite3ExprDelete(db, pDel);
/* Ensure adequate test coverage */
testcase( xJump==sqlite3ExprIfTrue && jumpIfNull==0 && regFree1==0 );
@@ -102053,20 +102442,17 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa
return 2;
}
if( pA->op!=TK_COLUMN && pA->op!=TK_AGG_COLUMN && pA->u.zToken ){
- if( pA->op==TK_FUNCTION ){
+ if( pA->op==TK_FUNCTION || pA->op==TK_AGG_FUNCTION ){
if( sqlite3StrICmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2;
#ifndef SQLITE_OMIT_WINDOWFUNC
- /* Justification for the assert():
- ** window functions have p->op==TK_FUNCTION but aggregate functions
- ** have p->op==TK_AGG_FUNCTION. So any comparison between an aggregate
- ** function and a window function should have failed before reaching
- ** this point. And, it is not possible to have a window function and
- ** a scalar function with the same name and number of arguments. So
- ** if we reach this point, either A and B both window functions or
- ** neither are a window functions. */
- assert( ExprHasProperty(pA,EP_WinFunc)==ExprHasProperty(pB,EP_WinFunc) );
+ assert( pA->op==pB->op );
+ if( ExprHasProperty(pA,EP_WinFunc)!=ExprHasProperty(pB,EP_WinFunc) ){
+ return 2;
+ }
if( ExprHasProperty(pA,EP_WinFunc) ){
- if( sqlite3WindowCompare(pParse,pA->y.pWin,pB->y.pWin)!=0 ) return 2;
+ if( sqlite3WindowCompare(pParse, pA->y.pWin, pB->y.pWin, 1)!=0 ){
+ return 2;
+ }
}
#endif
}else if( pA->op==TK_NULL ){
@@ -102090,7 +102476,8 @@ SQLITE_PRIVATE int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTa
){
if( pA->iColumn!=pB->iColumn ) return 2;
if( pA->op2!=pB->op2 ) return 2;
- if( pA->iTable!=pB->iTable
+ if( pA->op!=TK_IN
+ && pA->iTable!=pB->iTable
&& (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
}
}
@@ -102120,7 +102507,7 @@ SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList *pA, ExprList *pB, int iTab){
for(i=0; i<pA->nExpr; i++){
Expr *pExprA = pA->a[i].pExpr;
Expr *pExprB = pB->a[i].pExpr;
- if( pA->a[i].sortOrder!=pB->a[i].sortOrder ) return 1;
+ if( pA->a[i].sortFlags!=pB->a[i].sortFlags ) return 1;
if( sqlite3ExprCompare(0, pExprA, pExprB, iTab) ) return 1;
}
return 0;
@@ -102132,42 +102519,47 @@ SQLITE_PRIVATE int sqlite3ExprListCompare(ExprList *pA, ExprList *pB, int iTab){
*/
SQLITE_PRIVATE int sqlite3ExprCompareSkip(Expr *pA, Expr *pB, int iTab){
return sqlite3ExprCompare(0,
- sqlite3ExprSkipCollate(pA),
- sqlite3ExprSkipCollate(pB),
+ sqlite3ExprSkipCollateAndLikely(pA),
+ sqlite3ExprSkipCollateAndLikely(pB),
iTab);
}
/*
** Return non-zero if Expr p can only be true if pNN is not NULL.
+**
+** Or if seenNot is true, return non-zero if Expr p can only be
+** non-NULL if pNN is not NULL
*/
static int exprImpliesNotNull(
Parse *pParse, /* Parsing context */
Expr *p, /* The expression to be checked */
Expr *pNN, /* The expression that is NOT NULL */
int iTab, /* Table being evaluated */
- int seenNot /* True if p is an operand of NOT */
+ int seenNot /* Return true only if p can be any non-NULL value */
){
assert( p );
assert( pNN );
- if( sqlite3ExprCompare(pParse, p, pNN, iTab)==0 ) return 1;
+ if( sqlite3ExprCompare(pParse, p, pNN, iTab)==0 ){
+ return pNN->op!=TK_NULL;
+ }
switch( p->op ){
case TK_IN: {
if( seenNot && ExprHasProperty(p, EP_xIsSelect) ) return 0;
assert( ExprHasProperty(p,EP_xIsSelect)
|| (p->x.pList!=0 && p->x.pList->nExpr>0) );
- return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
case TK_BETWEEN: {
ExprList *pList = p->x.pList;
assert( pList!=0 );
assert( pList->nExpr==2 );
if( seenNot ) return 0;
- if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, seenNot)
- || exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, seenNot)
+ if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, 1)
+ || exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, 1)
){
return 1;
}
- return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
case TK_EQ:
case TK_NE:
@@ -102177,20 +102569,21 @@ static int exprImpliesNotNull(
case TK_GE:
case TK_PLUS:
case TK_MINUS:
- case TK_STAR:
- case TK_REM:
- case TK_BITAND:
case TK_BITOR:
- case TK_SLASH:
case TK_LSHIFT:
case TK_RSHIFT:
- case TK_CONCAT: {
+ case TK_CONCAT:
+ seenNot = 1;
+ /* Fall thru */
+ case TK_STAR:
+ case TK_REM:
+ case TK_BITAND:
+ case TK_SLASH: {
if( exprImpliesNotNull(pParse, p->pRight, pNN, iTab, seenNot) ) return 1;
/* Fall thru into the next case */
}
case TK_SPAN:
case TK_COLLATE:
- case TK_BITNOT:
case TK_UPLUS:
case TK_UMINUS: {
return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
@@ -102198,8 +102591,9 @@ static int exprImpliesNotNull(
case TK_TRUTH: {
if( seenNot ) return 0;
if( p->op2!=TK_IS ) return 0;
- return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot);
+ return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
+ case TK_BITNOT:
case TK_NOT: {
return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1);
}
@@ -102265,7 +102659,6 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune;
switch( pExpr->op ){
case TK_ISNOT:
- case TK_NOT:
case TK_ISNULL:
case TK_NOTNULL:
case TK_IS:
@@ -102273,8 +102666,8 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
case TK_CASE:
case TK_IN:
case TK_FUNCTION:
+ case TK_TRUTH:
testcase( pExpr->op==TK_ISNOT );
- testcase( pExpr->op==TK_NOT );
testcase( pExpr->op==TK_ISNULL );
testcase( pExpr->op==TK_NOTNULL );
testcase( pExpr->op==TK_IS );
@@ -102282,6 +102675,7 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
testcase( pExpr->op==TK_CASE );
testcase( pExpr->op==TK_IN );
testcase( pExpr->op==TK_FUNCTION );
+ testcase( pExpr->op==TK_TRUTH );
return WRC_Prune;
case TK_COLUMN:
if( pWalker->u.iCur==pExpr->iTable ){
@@ -102290,6 +102684,18 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
}
return WRC_Prune;
+ case TK_AND:
+ if( sqlite3ExprImpliesNonNullRow(pExpr->pLeft, pWalker->u.iCur)
+ && sqlite3ExprImpliesNonNullRow(pExpr->pRight, pWalker->u.iCur)
+ ){
+ pWalker->eCode = 1;
+ }
+ return WRC_Prune;
+
+ case TK_BETWEEN:
+ sqlite3WalkExpr(pWalker, pExpr->pLeft);
+ return WRC_Prune;
+
/* Virtual tables are allowed to use constraints like x=NULL. So
** a term of the form x=y does not prove that y is not null if x
** is the column of a virtual table */
@@ -102310,6 +102716,7 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
){
return WRC_Prune;
}
+
default:
return WRC_Continue;
}
@@ -102339,7 +102746,7 @@ static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
*/
SQLITE_PRIVATE int sqlite3ExprImpliesNonNullRow(Expr *p, int iTab){
Walker w;
- p = sqlite3ExprSkipCollate(p);
+ p = sqlite3ExprSkipCollateAndLikely(p);
while( p ){
if( p->op==TK_NOTNULL ){
p = p->pLeft;
@@ -102445,7 +102852,10 @@ static int exprSrcCount(Walker *pWalker, Expr *pExpr){
}
if( i<nSrc ){
p->nThis++;
- }else{
+ }else if( nSrc==0 || pExpr->iTable<pSrc->a[0].iCursor ){
+ /* In a well-formed parse tree (no name resolution errors),
+ ** TK_COLUMN nodes with smaller Expr.iTable values are in an
+ ** outer context. Those are the only ones to count as "other" */
p->nOther++;
}
}
@@ -102462,8 +102872,9 @@ SQLITE_PRIVATE int sqlite3FunctionUsesThisSrc(Expr *pExpr, SrcList *pSrcList){
Walker w;
struct SrcCount cnt;
assert( pExpr->op==TK_AGG_FUNCTION );
+ memset(&w, 0, sizeof(w));
w.xExprCallback = exprSrcCount;
- w.xSelectCallback = 0;
+ w.xSelectCallback = sqlite3SelectWalkNoop;
w.u.pSrcCount = &cnt;
cnt.pSrc = pSrcList;
cnt.nThis = 0;
@@ -102732,6 +103143,11 @@ SQLITE_PRIVATE void sqlite3ReleaseTempRange(Parse *pParse, int iReg, int nReg){
/*
** Mark all temporary registers as being unavailable for reuse.
+**
+** Always invoke this procedure after coding a subroutine or co-routine
+** that might be invoked from other parts of the code, to ensure that
+** the sub/co-routine does not use registers in common with the code that
+** invokes the sub/co-routine.
*/
SQLITE_PRIVATE void sqlite3ClearTempRegCache(Parse *pParse){
pParse->nTempReg = 0;
@@ -102901,8 +103317,8 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
if( SQLITE_OK!=isAlterableTable(pParse, pTab) ){
goto exit_rename_table;
}
- if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){ goto
- exit_rename_table;
+ if( SQLITE_OK!=sqlite3CheckObjectName(pParse,zName,"table",zName) ){
+ goto exit_rename_table;
}
#ifndef SQLITE_OMIT_VIEW
@@ -103200,6 +103616,7 @@ SQLITE_PRIVATE void sqlite3AlterBeginAddColumn(Parse *pParse, SrcList *pSrc){
goto exit_begin_add_column;
}
+ sqlite3MayAbort(pParse);
assert( pTab->addColOffset>0 );
iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
@@ -104463,13 +104880,13 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(void){
** is between 3.6.18 and 3.7.8, inclusive, and unless SQLite is compiled
** with SQLITE_ENABLE_STAT2. The sqlite_stat2 table is deprecated.
** The sqlite_stat2 table is superseded by sqlite_stat3, which is only
-** created and used by SQLite versions 3.7.9 and later and with
+** created and used by SQLite versions 3.7.9 through 3.29.0 when
** SQLITE_ENABLE_STAT3 defined. The functionality of sqlite_stat3
-** is a superset of sqlite_stat2. The sqlite_stat4 is an enhanced
-** version of sqlite_stat3 and is only available when compiled with
-** SQLITE_ENABLE_STAT4 and in SQLite versions 3.8.1 and later. It is
-** not possible to enable both STAT3 and STAT4 at the same time. If they
-** are both enabled, then STAT4 takes precedence.
+** is a superset of sqlite_stat2 and is also now deprecated. The
+** sqlite_stat4 is an enhanced version of sqlite_stat3 and is only
+** available when compiled with SQLITE_ENABLE_STAT4 and in SQLite
+** versions 3.8.1 and later. STAT4 is the only variant that is still
+** supported.
**
** For most applications, sqlite_stat1 provides all the statistics required
** for the query planner to make good choices.
@@ -104580,17 +104997,11 @@ SQLITE_PRIVATE void sqlite3AlterFunctions(void){
#if defined(SQLITE_ENABLE_STAT4)
# define IsStat4 1
-# define IsStat3 0
-#elif defined(SQLITE_ENABLE_STAT3)
-# define IsStat4 0
-# define IsStat3 1
#else
# define IsStat4 0
-# define IsStat3 0
# undef SQLITE_STAT4_SAMPLES
# define SQLITE_STAT4_SAMPLES 1
#endif
-#define IsStat34 (IsStat3+IsStat4) /* 1 for STAT3 or STAT4. 0 otherwise */
/*
** This routine generates code that opens the sqlite_statN tables.
@@ -104619,14 +105030,10 @@ static void openStatTable(
{ "sqlite_stat1", "tbl,idx,stat" },
#if defined(SQLITE_ENABLE_STAT4)
{ "sqlite_stat4", "tbl,idx,neq,nlt,ndlt,sample" },
- { "sqlite_stat3", 0 },
-#elif defined(SQLITE_ENABLE_STAT3)
- { "sqlite_stat3", "tbl,idx,neq,nlt,ndlt,sample" },
- { "sqlite_stat4", 0 },
#else
- { "sqlite_stat3", 0 },
{ "sqlite_stat4", 0 },
#endif
+ { "sqlite_stat3", 0 },
};
int i;
sqlite3 *db = pParse->db;
@@ -104707,7 +105114,7 @@ typedef struct Stat4Sample Stat4Sample;
struct Stat4Sample {
tRowcnt *anEq; /* sqlite_stat4.nEq */
tRowcnt *anDLt; /* sqlite_stat4.nDLt */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
tRowcnt *anLt; /* sqlite_stat4.nLt */
union {
i64 iRowid; /* Rowid in main table of the key */
@@ -104738,7 +105145,7 @@ struct Stat4Accum {
/* Reclaim memory used by a Stat4Sample
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
static void sampleClear(sqlite3 *db, Stat4Sample *p){
assert( db!=0 );
if( p->nRowid ){
@@ -104750,7 +105157,7 @@ static void sampleClear(sqlite3 *db, Stat4Sample *p){
/* Initialize the BLOB value of a ROWID
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
static void sampleSetRowid(sqlite3 *db, Stat4Sample *p, int n, const u8 *pData){
assert( db!=0 );
if( p->nRowid ) sqlite3DbFree(db, p->u.aRowid);
@@ -104766,7 +105173,7 @@ static void sampleSetRowid(sqlite3 *db, Stat4Sample *p, int n, const u8 *pData){
/* Initialize the INTEGER value of a ROWID.
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
static void sampleSetRowidInt64(sqlite3 *db, Stat4Sample *p, i64 iRowid){
assert( db!=0 );
if( p->nRowid ) sqlite3DbFree(db, p->u.aRowid);
@@ -104779,7 +105186,7 @@ static void sampleSetRowidInt64(sqlite3 *db, Stat4Sample *p, i64 iRowid){
/*
** Copy the contents of object (*pFrom) into (*pTo).
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
static void sampleCopy(Stat4Accum *p, Stat4Sample *pTo, Stat4Sample *pFrom){
pTo->isPSample = pFrom->isPSample;
pTo->iCol = pFrom->iCol;
@@ -104800,7 +105207,7 @@ static void sampleCopy(Stat4Accum *p, Stat4Sample *pTo, Stat4Sample *pFrom){
*/
static void stat4Destructor(void *pOld){
Stat4Accum *p = (Stat4Accum*)pOld;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
int i;
for(i=0; i<p->nCol; i++) sampleClear(p->db, p->aBest+i);
for(i=0; i<p->mxSample; i++) sampleClear(p->db, p->a+i);
@@ -104820,7 +105227,7 @@ static void stat4Destructor(void *pOld){
** WITHOUT ROWID table, N is the number of PRIMARY KEY columns, not the
** total number of columns in the table.
**
-** Note 2: C is only used for STAT3 and STAT4.
+** Note 2: C is only used for STAT4.
**
** For indexes on ordinary rowid tables, N==K+1. But for indexes on
** WITHOUT ROWID tables, N=K+P where P is the number of columns in the
@@ -104843,7 +105250,7 @@ static void statInit(
int nColUp; /* nCol rounded up for alignment */
int n; /* Bytes of space to allocate */
sqlite3 *db; /* Database connection */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
int mxSample = SQLITE_STAT4_SAMPLES;
#endif
@@ -104860,7 +105267,7 @@ static void statInit(
n = sizeof(*p)
+ sizeof(tRowcnt)*nColUp /* Stat4Accum.anEq */
+ sizeof(tRowcnt)*nColUp /* Stat4Accum.anDLt */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
+ sizeof(tRowcnt)*nColUp /* Stat4Accum.anLt */
+ sizeof(Stat4Sample)*(nCol+mxSample) /* Stat4Accum.aBest[], a[] */
+ sizeof(tRowcnt)*3*nColUp*(nCol+mxSample)
@@ -104880,7 +105287,7 @@ static void statInit(
p->current.anDLt = (tRowcnt*)&p[1];
p->current.anEq = &p->current.anDLt[nColUp];
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
{
u8 *pSpace; /* Allocated space not yet assigned */
int i; /* Used to iterate through p->aSample[] */
@@ -104915,7 +105322,7 @@ static void statInit(
sqlite3_result_blob(context, p, sizeof(*p), stat4Destructor);
}
static const FuncDef statInitFuncdef = {
- 2+IsStat34, /* nArg */
+ 2+IsStat4, /* nArg */
SQLITE_UTF8, /* funcFlags */
0, /* pUserData */
0, /* pNext */
@@ -104955,7 +105362,7 @@ static int sampleIsBetterPost(
}
#endif
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Return true if pNew is to be preferred over pOld.
**
@@ -104974,15 +105381,11 @@ static int sampleIsBetter(
assert( IsStat4 || (pNew->iCol==0 && pOld->iCol==0) );
if( (nEqNew>nEqOld) ) return 1;
-#ifdef SQLITE_ENABLE_STAT4
if( nEqNew==nEqOld ){
if( pNew->iCol<pOld->iCol ) return 1;
return (pNew->iCol==pOld->iCol && sampleIsBetterPost(pAccum, pNew, pOld));
}
return 0;
-#else
- return (nEqNew==nEqOld && pNew->iHash>pOld->iHash);
-#endif
}
/*
@@ -104995,7 +105398,6 @@ static void sampleInsert(Stat4Accum *p, Stat4Sample *pNew, int nEqZero){
assert( IsStat4 || nEqZero==0 );
-#ifdef SQLITE_ENABLE_STAT4
/* Stat4Accum.nMaxEqZero is set to the maximum number of leading 0
** values in the anEq[] array of any sample in Stat4Accum.a[]. In
** other words, if nMaxEqZero is n, then it is guaranteed that there
@@ -105029,7 +105431,6 @@ static void sampleInsert(Stat4Accum *p, Stat4Sample *pNew, int nEqZero){
goto find_new_min;
}
}
-#endif
/* If necessary, remove sample iMin to make room for the new sample. */
if( p->nSample>=p->mxSample ){
@@ -105050,10 +105451,8 @@ static void sampleInsert(Stat4Accum *p, Stat4Sample *pNew, int nEqZero){
/* The "rows less-than" for the rowid column must be greater than that
** for the last sample in the p->a[] array. Otherwise, the samples would
** be out of order. */
-#ifdef SQLITE_ENABLE_STAT4
assert( p->nSample==0
|| pNew->anLt[p->nCol-1] > p->a[p->nSample-1].anLt[p->nCol-1] );
-#endif
/* Insert the new sample */
pSample = &p->a[p->nSample];
@@ -105063,9 +105462,7 @@ static void sampleInsert(Stat4Accum *p, Stat4Sample *pNew, int nEqZero){
/* Zero the first nEqZero entries in the anEq[] array. */
memset(pSample->anEq, 0, sizeof(tRowcnt)*nEqZero);
-#ifdef SQLITE_ENABLE_STAT4
- find_new_min:
-#endif
+find_new_min:
if( p->nSample>=p->mxSample ){
int iMin = -1;
for(i=0; i<p->mxSample; i++){
@@ -105078,7 +105475,7 @@ static void sampleInsert(Stat4Accum *p, Stat4Sample *pNew, int nEqZero){
p->iMin = iMin;
}
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/*
** Field iChng of the index being scanned has changed. So at this point
@@ -105119,28 +105516,7 @@ static void samplePushPrevious(Stat4Accum *p, int iChng){
}
#endif
-#if defined(SQLITE_ENABLE_STAT3) && !defined(SQLITE_ENABLE_STAT4)
- if( iChng==0 ){
- tRowcnt nLt = p->current.anLt[0];
- tRowcnt nEq = p->current.anEq[0];
-
- /* Check if this is to be a periodic sample. If so, add it. */
- if( (nLt/p->nPSample)!=(nLt+nEq)/p->nPSample ){
- p->current.isPSample = 1;
- sampleInsert(p, &p->current, 0);
- p->current.isPSample = 0;
- }else
-
- /* Or if it is a non-periodic sample. Add it in this case too. */
- if( p->nSample<p->mxSample
- || sampleIsBetter(p, &p->current, &p->a[p->iMin])
- ){
- sampleInsert(p, &p->current, 0);
- }
- }
-#endif
-
-#ifndef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifndef SQLITE_ENABLE_STAT4
UNUSED_PARAMETER( p );
UNUSED_PARAMETER( iChng );
#endif
@@ -105160,7 +105536,7 @@ static void samplePushPrevious(Stat4Accum *p, int iChng){
** index being analyzed. The stat_get() SQL function will later be used to
** extract relevant information for constructing the sqlite_statN tables.
**
-** The R parameter is only used for STAT3 and STAT4
+** The R parameter is only used for STAT4
*/
static void statPush(
sqlite3_context *context,
@@ -105192,14 +105568,14 @@ static void statPush(
}
for(i=iChng; i<p->nCol; i++){
p->current.anDLt[i]++;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
p->current.anLt[i] += p->current.anEq[i];
#endif
p->current.anEq[i] = 1;
}
}
p->nRow++;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( sqlite3_value_type(argv[2])==SQLITE_INTEGER ){
sampleSetRowidInt64(p->db, &p->current, sqlite3_value_int64(argv[2]));
}else{
@@ -105232,7 +105608,7 @@ static void statPush(
#endif
}
static const FuncDef statPushFuncdef = {
- 2+IsStat34, /* nArg */
+ 2+IsStat4, /* nArg */
SQLITE_UTF8, /* funcFlags */
0, /* pUserData */
0, /* pNext */
@@ -105263,7 +105639,7 @@ static const FuncDef statPushFuncdef = {
** parameter will always be a poiner to a Stat4Accum object, never a
** NULL.
**
-** If neither STAT3 nor STAT4 are enabled, then J is always
+** If STAT4 is not enabled, then J is always
** STAT_GET_STAT1 and is hence omitted and this routine becomes
** a one-parameter function, stat_get(P), that always returns the
** stat1 table entry information.
@@ -105274,8 +105650,8 @@ static void statGet(
sqlite3_value **argv
){
Stat4Accum *p = (Stat4Accum*)sqlite3_value_blob(argv[0]);
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
- /* STAT3 and STAT4 have a parameter on this routine. */
+#ifdef SQLITE_ENABLE_STAT4
+ /* STAT4 has a parameter on this routine. */
int eCall = sqlite3_value_int(argv[1]);
assert( argc==2 );
assert( eCall==STAT_GET_STAT1 || eCall==STAT_GET_NEQ
@@ -105330,7 +105706,7 @@ static void statGet(
sqlite3_result_text(context, zRet, -1, sqlite3_free);
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
else if( eCall==STAT_GET_ROWID ){
if( p->iGet<0 ){
samplePushPrevious(p, 0);
@@ -105359,9 +105735,7 @@ static void statGet(
}
}
- if( IsStat3 ){
- sqlite3_result_int64(context, (i64)aCnt[0]);
- }else{
+ {
char *zRet = sqlite3MallocZero(p->nCol * 25);
if( zRet==0 ){
sqlite3_result_error_nomem(context);
@@ -105378,13 +105752,13 @@ static void statGet(
}
}
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
#ifndef SQLITE_DEBUG
UNUSED_PARAMETER( argc );
#endif
}
static const FuncDef statGetFuncdef = {
- 1+IsStat34, /* nArg */
+ 1+IsStat4, /* nArg */
SQLITE_UTF8, /* funcFlags */
0, /* pUserData */
0, /* pNext */
@@ -105397,7 +105771,7 @@ static const FuncDef statGetFuncdef = {
static void callStatGet(Vdbe *v, int regStat4, int iParam, int regOut){
assert( regOut!=regStat4 && regOut!=regStat4+1 );
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
sqlite3VdbeAddOp2(v, OP_Integer, iParam, regStat4+1);
#elif SQLITE_DEBUG
assert( iParam==STAT_GET_STAT1 );
@@ -105406,7 +105780,7 @@ static void callStatGet(Vdbe *v, int regStat4, int iParam, int regOut){
#endif
sqlite3VdbeAddOp4(v, OP_Function0, 0, regStat4, regOut,
(char*)&statGetFuncdef, P4_FUNCDEF);
- sqlite3VdbeChangeP5(v, 1 + IsStat34);
+ sqlite3VdbeChangeP5(v, 1 + IsStat4);
}
/*
@@ -105433,7 +105807,7 @@ static void analyzeOneTable(
int regNewRowid = iMem++; /* Rowid for the inserted record */
int regStat4 = iMem++; /* Register to hold Stat4Accum object */
int regChng = iMem++; /* Index of changed index field */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
int regRowid = iMem++; /* Rowid argument passed to stat_push() */
#endif
int regTemp = iMem++; /* Temporary use register */
@@ -105567,16 +105941,16 @@ static void analyzeOneTable(
** (3) the number of rows in the index,
**
**
- ** The third argument is only used for STAT3 and STAT4
+ ** The third argument is only used for STAT4
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
sqlite3VdbeAddOp2(v, OP_Count, iIdxCur, regStat4+3);
#endif
sqlite3VdbeAddOp2(v, OP_Integer, nCol, regStat4+1);
sqlite3VdbeAddOp2(v, OP_Integer, pIdx->nKeyCol, regStat4+2);
sqlite3VdbeAddOp4(v, OP_Function0, 0, regStat4+1, regStat4,
(char*)&statInitFuncdef, P4_FUNCDEF);
- sqlite3VdbeChangeP5(v, 2+IsStat34);
+ sqlite3VdbeChangeP5(v, 2+IsStat4);
/* Implementation of the following:
**
@@ -105647,12 +106021,12 @@ static void analyzeOneTable(
/*
** chng_addr_N:
- ** regRowid = idx(rowid) // STAT34 only
- ** stat_push(P, regChng, regRowid) // 3rd parameter STAT34 only
+ ** regRowid = idx(rowid) // STAT4 only
+ ** stat_push(P, regChng, regRowid) // 3rd parameter STAT4 only
** Next csr
** if !eof(csr) goto next_row;
*/
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
assert( regRowid==(regStat4+2) );
if( HasRowid(pTab) ){
sqlite3VdbeAddOp2(v, OP_IdxRowid, iIdxCur, regRowid);
@@ -105673,7 +106047,7 @@ static void analyzeOneTable(
assert( regChng==(regStat4+1) );
sqlite3VdbeAddOp4(v, OP_Function0, 1, regStat4, regTemp,
(char*)&statPushFuncdef, P4_FUNCDEF);
- sqlite3VdbeChangeP5(v, 2+IsStat34);
+ sqlite3VdbeChangeP5(v, 2+IsStat4);
sqlite3VdbeAddOp2(v, OP_Next, iIdxCur, addrNextRow); VdbeCoverage(v);
/* Add the entry to the stat1 table. */
@@ -105687,8 +106061,8 @@ static void analyzeOneTable(
#endif
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
- /* Add the entries to the stat3 or stat4 table. */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+ /* Add the entries to the stat4 table. */
+#ifdef SQLITE_ENABLE_STAT4
{
int regEq = regStat1;
int regLt = regStat1+1;
@@ -105711,21 +106085,17 @@ static void analyzeOneTable(
callStatGet(v, regStat4, STAT_GET_NDLT, regDLt);
sqlite3VdbeAddOp4Int(v, seekOp, iTabCur, addrNext, regSampleRowid, 0);
VdbeCoverage(v);
-#ifdef SQLITE_ENABLE_STAT3
- sqlite3ExprCodeLoadIndexColumn(pParse, pIdx, iTabCur, 0, regSample);
-#else
for(i=0; i<nCol; i++){
sqlite3ExprCodeLoadIndexColumn(pParse, pIdx, iTabCur, i, regCol+i);
}
sqlite3VdbeAddOp3(v, OP_MakeRecord, regCol, nCol, regSample);
-#endif
sqlite3VdbeAddOp3(v, OP_MakeRecord, regTabname, 6, regTemp);
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur+1, regNewRowid);
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur+1, regTemp, regNewRowid);
sqlite3VdbeAddOp2(v, OP_Goto, 1, addrNext); /* P1==1 for end-of-loop */
sqlite3VdbeJumpHere(v, addrIsNull);
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/* End of analysis */
sqlite3VdbeJumpHere(v, addrRewind);
@@ -105900,7 +106270,7 @@ static void decodeIntArray(
int i;
tRowcnt v;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( z==0 ) z = "";
#else
assert( z!=0 );
@@ -105911,7 +106281,7 @@ static void decodeIntArray(
v = v*10 + c - '0';
z++;
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( aOut ) aOut[i] = v;
if( aLog ) aLog[i] = sqlite3LogEst(v);
#else
@@ -105922,7 +106292,7 @@ static void decodeIntArray(
#endif
if( *z==' ' ) z++;
}
-#ifndef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifndef SQLITE_ENABLE_STAT4
assert( pIndex!=0 ); {
#else
if( pIndex ){
@@ -105989,7 +106359,7 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
if( pIndex ){
tRowcnt *aiRowEst = 0;
int nCol = pIndex->nKeyCol+1;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/* Index.aiRowEst may already be set here if there are duplicate
** sqlite_stat1 entries for this index. In that case just clobber
** the old data with the new instead of allocating a new array. */
@@ -106025,7 +106395,7 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
** and its contents.
*/
SQLITE_PRIVATE void sqlite3DeleteIndexSamples(sqlite3 *db, Index *pIdx){
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( pIdx->aSample ){
int j;
for(j=0; j<pIdx->nSample; j++){
@@ -106041,10 +106411,10 @@ SQLITE_PRIVATE void sqlite3DeleteIndexSamples(sqlite3 *db, Index *pIdx){
#else
UNUSED_PARAMETER(db);
UNUSED_PARAMETER(pIdx);
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Populate the pIdx->aAvgEq[] array based on the samples currently
** stored in pIdx->aSample[].
@@ -106122,12 +106492,11 @@ static Index *findIndexOrPrimaryKey(
}
/*
-** Load the content from either the sqlite_stat4 or sqlite_stat3 table
+** Load the content from either the sqlite_stat4
** into the relevant Index.aSample[] arrays.
**
** Arguments zSql1 and zSql2 must point to SQL statements that return
-** data equivalent to the following (statements are different for stat3,
-** see the caller of this function for details):
+** data equivalent to the following:
**
** zSql1: SELECT idx,count(*) FROM %Q.sqlite_stat4 GROUP BY idx
** zSql2: SELECT idx,neq,nlt,ndlt,sample FROM %Q.sqlite_stat4
@@ -106136,7 +106505,6 @@ static Index *findIndexOrPrimaryKey(
*/
static int loadStatTbl(
sqlite3 *db, /* Database handle */
- int bStat3, /* Assume single column records only */
const char *zSql1, /* SQL statement 1 (see above) */
const char *zSql2, /* SQL statement 2 (see above) */
const char *zDb /* Database name (e.g. "main") */
@@ -106170,17 +106538,13 @@ static int loadStatTbl(
if( zIndex==0 ) continue;
nSample = sqlite3_column_int(pStmt, 1);
pIdx = findIndexOrPrimaryKey(db, zIndex, zDb);
- assert( pIdx==0 || bStat3 || pIdx->nSample==0 );
- /* Index.nSample is non-zero at this point if data has already been
- ** loaded from the stat4 table. In this case ignore stat3 data. */
- if( pIdx==0 || pIdx->nSample ) continue;
- if( bStat3==0 ){
- assert( !HasRowid(pIdx->pTable) || pIdx->nColumn==pIdx->nKeyCol+1 );
- if( !HasRowid(pIdx->pTable) && IsPrimaryKeyIndex(pIdx) ){
- nIdxCol = pIdx->nKeyCol;
- }else{
- nIdxCol = pIdx->nColumn;
- }
+ assert( pIdx==0 || pIdx->nSample==0 );
+ if( pIdx==0 ) continue;
+ assert( !HasRowid(pIdx->pTable) || pIdx->nColumn==pIdx->nKeyCol+1 );
+ if( !HasRowid(pIdx->pTable) && IsPrimaryKeyIndex(pIdx) ){
+ nIdxCol = pIdx->nKeyCol;
+ }else{
+ nIdxCol = pIdx->nColumn;
}
pIdx->nSampleCol = nIdxCol;
nByte = sizeof(IndexSample) * nSample;
@@ -106222,9 +106586,8 @@ static int loadStatTbl(
pIdx = findIndexOrPrimaryKey(db, zIndex, zDb);
if( pIdx==0 ) continue;
/* This next condition is true if data has already been loaded from
- ** the sqlite_stat4 table. In this case ignore stat3 data. */
+ ** the sqlite_stat4 table. */
nCol = pIdx->nSampleCol;
- if( bStat3 && nCol>1 ) continue;
if( pIdx!=pPrevIdx ){
initAvgEq(pPrevIdx);
pPrevIdx = pIdx;
@@ -106257,7 +106620,7 @@ static int loadStatTbl(
}
/*
-** Load content from the sqlite_stat4 and sqlite_stat3 tables into
+** Load content from the sqlite_stat4 table into
** the Index.aSample[] arrays of all indices.
*/
static int loadStat4(sqlite3 *db, const char *zDb){
@@ -106265,37 +106628,28 @@ static int loadStat4(sqlite3 *db, const char *zDb){
assert( db->lookaside.bDisable );
if( sqlite3FindTable(db, "sqlite_stat4", zDb) ){
- rc = loadStatTbl(db, 0,
+ rc = loadStatTbl(db,
"SELECT idx,count(*) FROM %Q.sqlite_stat4 GROUP BY idx",
"SELECT idx,neq,nlt,ndlt,sample FROM %Q.sqlite_stat4",
zDb
);
}
-
- if( rc==SQLITE_OK && sqlite3FindTable(db, "sqlite_stat3", zDb) ){
- rc = loadStatTbl(db, 1,
- "SELECT idx,count(*) FROM %Q.sqlite_stat3 GROUP BY idx",
- "SELECT idx,neq,nlt,ndlt,sqlite_record(sample) FROM %Q.sqlite_stat3",
- zDb
- );
- }
-
return rc;
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/*
-** Load the content of the sqlite_stat1 and sqlite_stat3/4 tables. The
+** Load the content of the sqlite_stat1 and sqlite_stat4 tables. The
** contents of sqlite_stat1 are used to populate the Index.aiRowEst[]
-** arrays. The contents of sqlite_stat3/4 are used to populate the
+** arrays. The contents of sqlite_stat4 are used to populate the
** Index.aSample[] arrays.
**
** If the sqlite_stat1 table is not present in the database, SQLITE_ERROR
-** is returned. In this case, even if SQLITE_ENABLE_STAT3/4 was defined
-** during compilation and the sqlite_stat3/4 table is present, no data is
+** is returned. In this case, even if SQLITE_ENABLE_STAT4 was defined
+** during compilation and the sqlite_stat4 table is present, no data is
** read from it.
**
-** If SQLITE_ENABLE_STAT3/4 was defined during compilation and the
+** If SQLITE_ENABLE_STAT4 was defined during compilation and the
** sqlite_stat4 table is not present in the database, SQLITE_ERROR is
** returned. However, in this case, data is read from the sqlite_stat1
** table (if it is present) before returning.
@@ -106323,7 +106677,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
for(i=sqliteHashFirst(&pSchema->idxHash); i; i=sqliteHashNext(i)){
Index *pIdx = sqliteHashData(i);
pIdx->hasStat1 = 0;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
sqlite3DeleteIndexSamples(db, pIdx);
pIdx->aSample = 0;
#endif
@@ -106351,7 +106705,7 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
}
/* Load the statistics from the sqlite_stat4 table. */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
if( rc==SQLITE_OK ){
db->lookaside.bDisable++;
rc = loadStat4(db, sInfo.zDatabase);
@@ -106676,6 +107030,7 @@ static void detachFunc(
sqlite3 *db = sqlite3_context_db_handle(context);
int i;
Db *pDb = 0;
+ HashElem *pEntry;
char zErr[128];
UNUSED_PARAMETER(NotUsed);
@@ -106700,6 +107055,18 @@ static void detachFunc(
goto detach_error;
}
+ /* If any TEMP triggers reference the schema being detached, move those
+ ** triggers to reference the TEMP schema itself. */
+ assert( db->aDb[1].pSchema );
+ pEntry = sqliteHashFirst(&db->aDb[1].pSchema->trigHash);
+ while( pEntry ){
+ Trigger *pTrig = (Trigger*)sqliteHashData(pEntry);
+ if( pTrig->pTabSchema==pDb->pSchema ){
+ pTrig->pTabSchema = pTrig->pSchema;
+ }
+ pEntry = sqliteHashNext(pEntry);
+ }
+
sqlite3BtreeClose(pDb->pBt);
pDb->pBt = 0;
pDb->pSchema = 0;
@@ -106937,6 +107304,7 @@ SQLITE_PRIVATE int sqlite3FixExpr(
Expr *pExpr /* The expression to be fixed to one database */
){
while( pExpr ){
+ ExprSetProperty(pExpr, EP_Indirect);
if( pExpr->op==TK_VARIABLE ){
if( pFix->pParse->db->init.busy ){
pExpr->op = TK_NULL;
@@ -107089,7 +107457,7 @@ SQLITE_API int sqlite3_set_authorizer(
sqlite3_mutex_enter(db->mutex);
db->xAuth = (sqlite3_xauth)xAuth;
db->pAuthArg = pArg;
- sqlite3ExpirePreparedStatements(db, 0);
+ if( db->xAuth ) sqlite3ExpirePreparedStatements(db, 1);
sqlite3_mutex_leave(db->mutex);
return SQLITE_OK;
}
@@ -107743,7 +108111,7 @@ SQLITE_PRIVATE void sqlite3FreeIndex(sqlite3 *db, Index *p){
sqlite3ExprListDelete(db, p->aColExpr);
sqlite3DbFree(db, p->zColAff);
if( p->isResized ) sqlite3DbFree(db, (void *)p->azColl);
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
sqlite3_free(p->aiRowEst);
#endif
sqlite3DbFree(db, p);
@@ -108116,13 +108484,40 @@ SQLITE_PRIVATE int sqlite3WritableSchema(sqlite3 *db){
** trigger). All names are legal except those that begin with the string
** "sqlite_" (in upper, lower or mixed case). This portion of the namespace
** is reserved for internal use.
+**
+** When parsing the sqlite_master table, this routine also checks to
+** make sure the "type", "name", and "tbl_name" columns are consistent
+** with the SQL.
*/
-SQLITE_PRIVATE int sqlite3CheckObjectName(Parse *pParse, const char *zName){
- if( !pParse->db->init.busy && pParse->nested==0
- && sqlite3WritableSchema(pParse->db)==0
- && 0==sqlite3StrNICmp(zName, "sqlite_", 7) ){
- sqlite3ErrorMsg(pParse, "object name reserved for internal use: %s", zName);
- return SQLITE_ERROR;
+SQLITE_PRIVATE int sqlite3CheckObjectName(
+ Parse *pParse, /* Parsing context */
+ const char *zName, /* Name of the object to check */
+ const char *zType, /* Type of this object */
+ const char *zTblName /* Parent table name for triggers and indexes */
+){
+ sqlite3 *db = pParse->db;
+ if( sqlite3WritableSchema(db) || db->init.imposterTable ){
+ /* Skip these error checks for writable_schema=ON */
+ return SQLITE_OK;
+ }
+ if( db->init.busy ){
+ if( sqlite3_stricmp(zType, db->init.azInit[0])
+ || sqlite3_stricmp(zName, db->init.azInit[1])
+ || sqlite3_stricmp(zTblName, db->init.azInit[2])
+ ){
+ if( sqlite3Config.bExtraSchemaChecks ){
+ sqlite3ErrorMsg(pParse, ""); /* corruptSchema() will supply the error */
+ return SQLITE_ERROR;
+ }
+ }
+ }else{
+ if( pParse->nested==0
+ && 0==sqlite3StrNICmp(zName, "sqlite_", 7)
+ ){
+ sqlite3ErrorMsg(pParse, "object name reserved for internal use: %s",
+ zName);
+ return SQLITE_ERROR;
+ }
}
return SQLITE_OK;
}
@@ -108203,7 +108598,7 @@ SQLITE_PRIVATE void sqlite3StartTable(
}
pParse->sNameToken = *pName;
if( zName==0 ) return;
- if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
+ if( sqlite3CheckObjectName(pParse, zName, isView?"view":"table", zName) ){
goto begin_table_error;
}
if( db->init.iDb==1 ) isTemp = 1;
@@ -108703,7 +109098,7 @@ SQLITE_PRIVATE void sqlite3AddPrimaryKey(
pTab->keyConf = (u8)onError;
assert( autoInc==0 || autoInc==1 );
pTab->tabFlags |= autoInc*TF_Autoincrement;
- if( pList ) pParse->iPkSortOrder = pList->a[0].sortOrder;
+ if( pList ) pParse->iPkSortOrder = pList->a[0].sortFlags;
}else if( autoInc ){
#ifndef SQLITE_OMIT_AUTOINCREMENT
sqlite3ErrorMsg(pParse, "AUTOINCREMENT is only allowed on an "
@@ -109118,6 +109513,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
Index *pIdx;
Index *pPk;
int nPk;
+ int nExtra;
int i, j;
sqlite3 *db = pParse->db;
Vdbe *v = pParse->pVdbe;
@@ -109153,13 +109549,14 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
if( IN_RENAME_OBJECT ){
sqlite3RenameTokenRemap(pParse, pList->a[0].pExpr, &pTab->iPKey);
}
- pList->a[0].sortOrder = pParse->iPkSortOrder;
+ pList->a[0].sortFlags = pParse->iPkSortOrder;
assert( pParse->pNewTable==pTab );
pTab->iPKey = -1;
sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0,
SQLITE_IDXTYPE_PRIMARYKEY);
if( db->mallocFailed || pParse->nErr ) return;
pPk = sqlite3PrimaryKeyIndex(pTab);
+ assert( pPk->nKeyCol==1 );
}else{
pPk = sqlite3PrimaryKeyIndex(pTab);
assert( pPk!=0 );
@@ -109174,6 +109571,8 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
pPk->nColumn--;
}else{
testcase( hasColumn(pPk->aiColumn, j, pPk->aiColumn[i]) );
+ pPk->azColl[j] = pPk->azColl[i];
+ pPk->aSortOrder[j] = pPk->aSortOrder[i];
pPk->aiColumn[j++] = pPk->aiColumn[i];
}
}
@@ -109182,7 +109581,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
assert( pPk!=0 );
pPk->isCovering = 1;
if( !db->init.imposterTable ) pPk->uniqNotNull = 1;
- nPk = pPk->nKeyCol;
+ nPk = pPk->nColumn = pPk->nKeyCol;
/* Bypass the creation of the PRIMARY KEY btree and the sqlite_master
** table entry. This is only required if currently generating VDBE
@@ -109232,21 +109631,21 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
/* Add all table columns to the PRIMARY KEY index
*/
- if( nPk<pTab->nCol ){
- if( resizeIndexObject(db, pPk, pTab->nCol) ) return;
- for(i=0, j=nPk; i<pTab->nCol; i++){
- if( !hasColumn(pPk->aiColumn, j, i) ){
- assert( j<pPk->nColumn );
- pPk->aiColumn[j] = i;
- pPk->azColl[j] = sqlite3StrBINARY;
- j++;
- }
+ nExtra = 0;
+ for(i=0; i<pTab->nCol; i++){
+ if( !hasColumn(pPk->aiColumn, nPk, i) ) nExtra++;
+ }
+ if( resizeIndexObject(db, pPk, nPk+nExtra) ) return;
+ for(i=0, j=nPk; i<pTab->nCol; i++){
+ if( !hasColumn(pPk->aiColumn, j, i) ){
+ assert( j<pPk->nColumn );
+ pPk->aiColumn[j] = i;
+ pPk->azColl[j] = sqlite3StrBINARY;
+ j++;
}
- assert( pPk->nColumn==j );
- assert( pTab->nCol==j );
- }else{
- pPk->nColumn = pTab->nCol;
}
+ assert( pPk->nColumn==j );
+ assert( pTab->nCol<=j );
recomputeColumnsNotIndexed(pPk);
}
@@ -109443,7 +109842,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
addrTop = sqlite3VdbeCurrentAddr(v) + 1;
sqlite3VdbeAddOp3(v, OP_InitCoroutine, regYield, 0, addrTop);
if( pParse->nErr ) return;
- pSelTab = sqlite3ResultSetOfSelect(pParse, pSelect);
+ pSelTab = sqlite3ResultSetOfSelect(pParse, pSelect, SQLITE_AFF_BLOB);
if( pSelTab==0 ) return;
assert( p->aCol==0 );
p->nCol = pSelTab->nCol;
@@ -109707,10 +110106,10 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
#ifndef SQLITE_OMIT_AUTHORIZATION
xAuth = db->xAuth;
db->xAuth = 0;
- pSelTab = sqlite3ResultSetOfSelect(pParse, pSel);
+ pSelTab = sqlite3ResultSetOfSelect(pParse, pSel, SQLITE_AFF_NONE);
db->xAuth = xAuth;
#else
- pSelTab = sqlite3ResultSetOfSelect(pParse, pSel);
+ pSelTab = sqlite3ResultSetOfSelect(pParse, pSel, SQLITE_AFF_NONE);
#endif
pParse->nTab = n;
if( pTable->pCheck ){
@@ -109726,7 +110125,8 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
&& pParse->nErr==0
&& pTable->nCol==pSel->pEList->nExpr
){
- sqlite3SelectAddColumnTypeAndCollation(pParse, pTable, pSel);
+ sqlite3SelectAddColumnTypeAndCollation(pParse, pTable, pSel,
+ SQLITE_AFF_NONE);
}
}else if( pSelTab ){
/* CREATE VIEW name AS... without an argument list. Construct
@@ -110071,7 +110471,8 @@ SQLITE_PRIVATE void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView,
}
#endif
if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
- && sqlite3StrNICmp(pTab->zName, "sqlite_stat", 11)!=0 ){
+ && sqlite3StrNICmp(pTab->zName+7, "stat", 4)!=0
+ && sqlite3StrNICmp(pTab->zName+7, "parameters", 10)!=0 ){
sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
goto exit_drop_table;
}
@@ -110409,6 +110810,27 @@ SQLITE_PRIVATE Index *sqlite3AllocateIndexObject(
}
/*
+** If expression list pList contains an expression that was parsed with
+** an explicit "NULLS FIRST" or "NULLS LAST" clause, leave an error in
+** pParse and return non-zero. Otherwise, return zero.
+*/
+SQLITE_PRIVATE int sqlite3HasExplicitNulls(Parse *pParse, ExprList *pList){
+ if( pList ){
+ int i;
+ for(i=0; i<pList->nExpr; i++){
+ if( pList->a[i].bNulls ){
+ u8 sf = pList->a[i].sortFlags;
+ sqlite3ErrorMsg(pParse, "unsupported use of NULLS %s",
+ (sf==0 || sf==3) ? "FIRST" : "LAST"
+ );
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+/*
** Create a new index for an SQL table. pName1.pName2 is the name of the index
** and pTblList is the name of the table that is to be indexed. Both will
** be NULL for a primary key or an index that is created to satisfy a
@@ -110459,6 +110881,9 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
goto exit_create_index;
}
+ if( sqlite3HasExplicitNulls(pParse, pList) ){
+ goto exit_create_index;
+ }
/*
** Find the table that is to be indexed. Return early if not found.
@@ -110557,7 +110982,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
zName = sqlite3NameFromToken(db, pName);
if( zName==0 ) goto exit_create_index;
assert( pName->z!=0 );
- if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
+ if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName,"index",pTab->zName) ){
goto exit_create_index;
}
if( !IN_RENAME_OBJECT ){
@@ -110623,7 +111048,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
sqlite3ExprAlloc(db, TK_ID, &prevCol, 0));
if( pList==0 ) goto exit_create_index;
assert( pList->nExpr==1 );
- sqlite3ExprListSetSortOrder(pList, sortOrder);
+ sqlite3ExprListSetSortOrder(pList, sortOrder, SQLITE_SO_UNDEFINED);
}else{
sqlite3ExprListCheckLength(pParse, pList, "index");
if( pParse->nErr ) goto exit_create_index;
@@ -110741,7 +111166,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
goto exit_create_index;
}
pIndex->azColl[i] = zColl;
- requestedSortOrder = pListItem->sortOrder & sortOrderMask;
+ requestedSortOrder = pListItem->sortFlags & sortOrderMask;
pIndex->aSortOrder[i] = (u8)requestedSortOrder;
}
@@ -110916,6 +111341,7 @@ SQLITE_PRIVATE void sqlite3CreateIndex(
/* Gather the complete text of the CREATE INDEX statement into
** the zStmt variable
*/
+ assert( pName!=0 || pStart==0 );
if( pStart ){
int n = (int)(pParse->sLastToken.z - pName->z) + pParse->sLastToken.n;
if( pName->z[n-1]==';' ) n--;
@@ -111958,7 +112384,8 @@ SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoOfIndex(Parse *pParse, Index *pIdx){
const char *zColl = pIdx->azColl[i];
pKey->aColl[i] = zColl==sqlite3StrBINARY ? 0 :
sqlite3LocateCollSeq(pParse, zColl);
- pKey->aSortOrder[i] = pIdx->aSortOrder[i];
+ pKey->aSortFlags[i] = pIdx->aSortOrder[i];
+ assert( 0==(pKey->aSortFlags[i] & KEYINFO_ORDER_BIGNULL) );
}
if( pParse->nErr ){
assert( pParse->rc==SQLITE_ERROR_MISSING_COLLSEQ );
@@ -113714,6 +114141,8 @@ static void instrFunc(
int N = 1;
int isText;
unsigned char firstChar;
+ sqlite3_value *pC1 = 0;
+ sqlite3_value *pC2 = 0;
UNUSED_PARAMETER(argc);
typeHaystack = sqlite3_value_type(argv[0]);
@@ -113726,12 +114155,22 @@ static void instrFunc(
zHaystack = sqlite3_value_blob(argv[0]);
zNeedle = sqlite3_value_blob(argv[1]);
isText = 0;
- }else{
+ }else if( typeHaystack!=SQLITE_BLOB && typeNeedle!=SQLITE_BLOB ){
zHaystack = sqlite3_value_text(argv[0]);
zNeedle = sqlite3_value_text(argv[1]);
isText = 1;
+ }else{
+ pC1 = sqlite3_value_dup(argv[0]);
+ zHaystack = sqlite3_value_text(pC1);
+ if( zHaystack==0 ) goto endInstrOOM;
+ nHaystack = sqlite3_value_bytes(pC1);
+ pC2 = sqlite3_value_dup(argv[1]);
+ zNeedle = sqlite3_value_text(pC2);
+ if( zNeedle==0 ) goto endInstrOOM;
+ nNeedle = sqlite3_value_bytes(pC2);
+ isText = 1;
}
- if( zNeedle==0 || (nHaystack && zHaystack==0) ) return;
+ if( zNeedle==0 || (nHaystack && zHaystack==0) ) goto endInstrOOM;
firstChar = zNeedle[0];
while( nNeedle<=nHaystack
&& (zHaystack[0]!=firstChar || memcmp(zHaystack, zNeedle, nNeedle)!=0)
@@ -113745,6 +114184,13 @@ static void instrFunc(
if( nNeedle>nHaystack ) N = 0;
}
sqlite3_result_int(context, N);
+endInstr:
+ sqlite3_value_free(pC1);
+ sqlite3_value_free(pC2);
+ return;
+endInstrOOM:
+ sqlite3_result_error_nomem(context);
+ goto endInstr;
}
/*
@@ -115497,9 +115943,6 @@ SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(void){
sqlite3AlterFunctions();
#endif
sqlite3WindowFunctions();
-#if defined(SQLITE_ENABLE_STAT3) || defined(SQLITE_ENABLE_STAT4)
- sqlite3AnalyzeFunctions();
-#endif
sqlite3RegisterDateTimeFunctions();
sqlite3InsertBuiltinFuncs(aBuiltinFunc, ArraySize(aBuiltinFunc));
@@ -116002,13 +116445,13 @@ static Expr *exprTableRegister(
if( iCol>=0 && iCol!=pTab->iPKey ){
pCol = &pTab->aCol[iCol];
pExpr->iTable = regBase + iCol + 1;
- pExpr->affinity = pCol->affinity;
+ pExpr->affExpr = pCol->affinity;
zColl = pCol->zColl;
if( zColl==0 ) zColl = db->pDfltColl->zName;
pExpr = sqlite3ExprAddCollateString(pParse, pExpr, zColl);
}else{
pExpr->iTable = regBase;
- pExpr->affinity = SQLITE_AFF_INTEGER;
+ pExpr->affExpr = SQLITE_AFF_INTEGER;
}
}
return pExpr;
@@ -116811,7 +117254,7 @@ static Trigger *fkActionTrigger(
tFrom.n = nFrom;
pRaise = sqlite3Expr(db, TK_RAISE, "FOREIGN KEY constraint failed");
if( pRaise ){
- pRaise->affinity = OE_Abort;
+ pRaise->affExpr = OE_Abort;
}
pSelect = sqlite3SelectNew(pParse,
sqlite3ExprListAppend(pParse, 0, pRaise),
@@ -116856,6 +117299,7 @@ static Trigger *fkActionTrigger(
return 0;
}
assert( pStep!=0 );
+ assert( pTrigger!=0 );
switch( action ){
case OE_Restrict:
@@ -117046,18 +117490,19 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(sqlite3 *db, Index *pIdx){
}
for(n=0; n<pIdx->nColumn; n++){
i16 x = pIdx->aiColumn[n];
+ char aff;
if( x>=0 ){
- pIdx->zColAff[n] = pTab->aCol[x].affinity;
+ aff = pTab->aCol[x].affinity;
}else if( x==XN_ROWID ){
- pIdx->zColAff[n] = SQLITE_AFF_INTEGER;
+ aff = SQLITE_AFF_INTEGER;
}else{
- char aff;
assert( x==XN_EXPR );
assert( pIdx->aColExpr!=0 );
aff = sqlite3ExprAffinity(pIdx->aColExpr->a[n].pExpr);
- if( aff==0 ) aff = SQLITE_AFF_BLOB;
- pIdx->zColAff[n] = aff;
}
+ if( aff<SQLITE_AFF_BLOB ) aff = SQLITE_AFF_BLOB;
+ if( aff>SQLITE_AFF_NUMERIC) aff = SQLITE_AFF_NUMERIC;
+ pIdx->zColAff[n] = aff;
}
pIdx->zColAff[n] = 0;
}
@@ -117097,11 +117542,12 @@ SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
}
for(i=0; i<pTab->nCol; i++){
+ assert( pTab->aCol[i].affinity!=0 );
zColAff[i] = pTab->aCol[i].affinity;
}
do{
zColAff[i--] = 0;
- }while( i>=0 && zColAff[i]==SQLITE_AFF_BLOB );
+ }while( i>=0 && zColAff[i]<=SQLITE_AFF_BLOB );
pTab->zColAff = zColAff;
}
assert( zColAff!=0 );
@@ -117790,6 +118236,9 @@ SQLITE_PRIVATE void sqlite3Insert(
pTab->zName);
goto insert_cleanup;
}
+ if( sqlite3HasExplicitNulls(pParse, pUpsert->pUpsertTarget) ){
+ goto insert_cleanup;
+ }
pTabList->a[0].iCursor = iDataCur;
pUpsert->pUpsertSrc = pTabList;
pUpsert->regData = regData;
@@ -119903,6 +120352,8 @@ struct sqlite3_api_routines {
/* Version 3.28.0 and later */
int (*stmt_isexplain)(sqlite3_stmt*);
int (*value_frombind)(sqlite3_value*);
+ /* Version 3.30.0 and later */
+ int (*drop_modules)(sqlite3*,const char**);
};
/*
@@ -120195,6 +120646,8 @@ typedef int (*sqlite3_loadext_entry)(
/* Version 3.28.0 and later */
#define sqlite3_stmt_isexplain sqlite3_api->isexplain
#define sqlite3_value_frombind sqlite3_api->frombind
+/* Version 3.30.0 and later */
+#define sqlite3_drop_modules sqlite3_api->drop_modules
#endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */
#if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION)
@@ -120660,7 +121113,13 @@ static const sqlite3_api_routines sqlite3Apis = {
#endif
/* Version 3.28.0 and later */
sqlite3_stmt_isexplain,
- sqlite3_value_frombind
+ sqlite3_value_frombind,
+ /* Version 3.30.0 and later */
+#ifndef SQLITE_OMIT_VIRTUALTABLE
+ sqlite3_drop_modules,
+#else
+ 0,
+#endif
};
/*
@@ -121373,7 +121832,7 @@ static const PragmaName aPragmaName[] = {
/* iArg: */ SQLITE_FullFSync },
#endif
#if !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
-#if defined(SQLITE_INTROSPECTION_PRAGMAS)
+#if !defined(SQLITE_OMIT_INTROSPECTION_PRAGMAS)
{/* zName: */ "function_list",
/* ePragTyp: */ PragTyp_FUNCTION_LIST,
/* ePragFlg: */ PragFlg_Result0,
@@ -121497,7 +121956,7 @@ static const PragmaName aPragmaName[] = {
#endif
#if !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
#if !defined(SQLITE_OMIT_VIRTUALTABLE)
-#if defined(SQLITE_INTROSPECTION_PRAGMAS)
+#if !defined(SQLITE_OMIT_INTROSPECTION_PRAGMAS)
{/* zName: */ "module_list",
/* ePragTyp: */ PragTyp_MODULE_LIST,
/* ePragFlg: */ PragFlg_Result0,
@@ -121532,7 +121991,7 @@ static const PragmaName aPragmaName[] = {
/* iArg: */ SQLITE_ParserTrace },
#endif
#endif
-#if defined(SQLITE_INTROSPECTION_PRAGMAS)
+#if !defined(SQLITE_OMIT_INTROSPECTION_PRAGMAS)
{/* zName: */ "pragma_list",
/* ePragTyp: */ PragTyp_PRAGMA_LIST,
/* ePragFlg: */ PragFlg_Result0,
@@ -121730,7 +122189,7 @@ static const PragmaName aPragmaName[] = {
/* iArg: */ SQLITE_WriteSchema|SQLITE_NoSchemaError },
#endif
};
-/* Number of pragmas: 62 on by default, 81 total. */
+/* Number of pragmas: 65 on by default, 81 total. */
/************** End of pragma.h **********************************************/
/************** Continuing where we left off in pragma.c *********************/
@@ -122862,6 +123321,15 @@ SQLITE_PRIVATE void sqlite3Pragma(
Index *pIdx;
Table *pTab;
pIdx = sqlite3FindIndex(db, zRight, zDb);
+ if( pIdx==0 ){
+ /* If there is no index named zRight, check to see if there is a
+ ** WITHOUT ROWID table named zRight, and if there is, show the
+ ** structure of the PRIMARY KEY index for that table. */
+ pTab = sqlite3LocateTable(pParse, LOCATE_NOERR, zRight, zDb);
+ if( pTab && !HasRowid(pTab) ){
+ pIdx = sqlite3PrimaryKeyIndex(pTab);
+ }
+ }
if( pIdx ){
int iIdxDb = sqlite3SchemaToIndex(db, pIdx->pSchema);
int i;
@@ -122941,7 +123409,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
}
break;
-#ifdef SQLITE_INTROSPECTION_PRAGMAS
+#ifndef SQLITE_OMIT_INTROSPECTION_PRAGMAS
case PragTyp_FUNCTION_LIST: {
int i;
HashElem *j;
@@ -124276,9 +124744,11 @@ SQLITE_PRIVATE int sqlite3IndexHasDuplicateRootPage(Index *pIndex){
**
** Each callback contains the following information:
**
-** argv[0] = name of thing being created
-** argv[1] = root page number for table or index. 0 for trigger or view.
-** argv[2] = SQL text for the CREATE statement.
+** argv[0] = type of object: "table", "index", "trigger", or "view".
+** argv[1] = name of thing being created
+** argv[2] = associated table if an index or trigger
+** argv[3] = root page number for table or index. 0 for trigger or view.
+** argv[4] = SQL text for the CREATE statement.
**
*/
SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char **NotUsed){
@@ -124286,21 +124756,21 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
sqlite3 *db = pData->db;
int iDb = pData->iDb;
- assert( argc==3 );
+ assert( argc==5 );
UNUSED_PARAMETER2(NotUsed, argc);
assert( sqlite3_mutex_held(db->mutex) );
DbClearProperty(db, iDb, DB_Empty);
pData->nInitRow++;
if( db->mallocFailed ){
- corruptSchema(pData, argv[0], 0);
+ corruptSchema(pData, argv[1], 0);
return 1;
}
assert( iDb>=0 && iDb<db->nDb );
if( argv==0 ) return 0; /* Might happen if EMPTY_RESULT_CALLBACKS are on */
- if( argv[1]==0 ){
- corruptSchema(pData, argv[0], 0);
- }else if( sqlite3_strnicmp(argv[2],"create ",7)==0 ){
+ if( argv[3]==0 ){
+ corruptSchema(pData, argv[1], 0);
+ }else if( sqlite3_strnicmp(argv[4],"create ",7)==0 ){
/* Call the parser to process a CREATE TABLE, INDEX or VIEW.
** But because db->init.busy is set to 1, no VDBE code is generated
** or executed. All the parser does is build the internal data
@@ -124313,9 +124783,10 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
assert( db->init.busy );
db->init.iDb = iDb;
- db->init.newTnum = sqlite3Atoi(argv[1]);
+ db->init.newTnum = sqlite3Atoi(argv[3]);
db->init.orphanTrigger = 0;
- TESTONLY(rcp = ) sqlite3_prepare(db, argv[2], -1, &pStmt, 0);
+ db->init.azInit = argv;
+ TESTONLY(rcp = ) sqlite3_prepare(db, argv[4], -1, &pStmt, 0);
rc = db->errCode;
assert( (rc&0xFF)==(rcp&0xFF) );
db->init.iDb = saved_iDb;
@@ -124324,17 +124795,17 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
if( db->init.orphanTrigger ){
assert( iDb==1 );
}else{
- pData->rc = rc;
+ if( rc > pData->rc ) pData->rc = rc;
if( rc==SQLITE_NOMEM ){
sqlite3OomFault(db);
}else if( rc!=SQLITE_INTERRUPT && (rc&0xFF)!=SQLITE_LOCKED ){
- corruptSchema(pData, argv[0], sqlite3_errmsg(db));
+ corruptSchema(pData, argv[1], sqlite3_errmsg(db));
}
}
}
sqlite3_finalize(pStmt);
- }else if( argv[0]==0 || (argv[2]!=0 && argv[2][0]!=0) ){
- corruptSchema(pData, argv[0], 0);
+ }else if( argv[1]==0 || (argv[4]!=0 && argv[4][0]!=0) ){
+ corruptSchema(pData, argv[1], 0);
}else{
/* If the SQL column is blank it means this is an index that
** was created to be the PRIMARY KEY or to fulfill a UNIQUE
@@ -124343,13 +124814,13 @@ SQLITE_PRIVATE int sqlite3InitCallback(void *pInit, int argc, char **argv, char
** to do here is record the root page number for that index.
*/
Index *pIndex;
- pIndex = sqlite3FindIndex(db, argv[0], db->aDb[iDb].zDbSName);
+ pIndex = sqlite3FindIndex(db, argv[1], db->aDb[iDb].zDbSName);
if( pIndex==0
- || sqlite3GetInt32(argv[1],&pIndex->tnum)==0
+ || sqlite3GetInt32(argv[3],&pIndex->tnum)==0
|| pIndex->tnum<2
|| sqlite3IndexHasDuplicateRootPage(pIndex)
){
- corruptSchema(pData, argv[0], pIndex?"invalid rootpage":"orphan index");
+ corruptSchema(pData, argv[1], pIndex?"invalid rootpage":"orphan index");
}
}
return 0;
@@ -124370,7 +124841,7 @@ SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFl
int size;
#endif
Db *pDb;
- char const *azArg[4];
+ char const *azArg[6];
int meta[5];
InitData initData;
const char *zMasterName;
@@ -124389,18 +124860,20 @@ SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFl
** table name will be inserted automatically by the parser so we can just
** use the abbreviation "x" here. The parser will also automatically tag
** the schema table as read-only. */
- azArg[0] = zMasterName = SCHEMA_TABLE(iDb);
- azArg[1] = "1";
- azArg[2] = "CREATE TABLE x(type text,name text,tbl_name text,"
+ azArg[0] = "table";
+ azArg[1] = zMasterName = SCHEMA_TABLE(iDb);
+ azArg[2] = azArg[1];
+ azArg[3] = "1";
+ azArg[4] = "CREATE TABLE x(type text,name text,tbl_name text,"
"rootpage int,sql text)";
- azArg[3] = 0;
+ azArg[5] = 0;
initData.db = db;
initData.iDb = iDb;
initData.rc = SQLITE_OK;
initData.pzErrMsg = pzErrMsg;
initData.mInitFlags = mFlags;
initData.nInitRow = 0;
- sqlite3InitCallback(&initData, 3, (char **)azArg, 0);
+ sqlite3InitCallback(&initData, 5, (char **)azArg, 0);
if( initData.rc ){
rc = initData.rc;
goto error_out;
@@ -124526,7 +124999,7 @@ SQLITE_PRIVATE int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg, u32 mFl
{
char *zSql;
zSql = sqlite3MPrintf(db,
- "SELECT name, rootpage, sql FROM \"%w\".%s ORDER BY rowid",
+ "SELECT*FROM\"%w\".%s ORDER BY rowid",
db->aDb[iDb].zDbSName, zMasterName);
#ifndef SQLITE_OMIT_AUTHORIZATION
{
@@ -124847,7 +125320,10 @@ static int sqlite3Prepare(
rc = sParse.rc;
#ifndef SQLITE_OMIT_EXPLAIN
- if( rc==SQLITE_OK && sParse.pVdbe && sParse.explain ){
+ /* Justification for the ALWAYS(): The only way for rc to be SQLITE_OK and
+ ** sParse.pVdbe to be NULL is if the input SQL is an empty string, but in
+ ** that case, sParse.explain will be false. */
+ if( sParse.explain && rc==SQLITE_OK && ALWAYS(sParse.pVdbe) ){
static const char * const azColName[] = {
"addr", "opcode", "p1", "p2", "p3", "p4", "p5", "comment",
"id", "parent", "notused", "detail"
@@ -124872,8 +125348,8 @@ static int sqlite3Prepare(
if( db->init.busy==0 ){
sqlite3VdbeSetSql(sParse.pVdbe, zSql, (int)(sParse.zTail-zSql), prepFlags);
}
- if( sParse.pVdbe && (rc!=SQLITE_OK || db->mallocFailed) ){
- sqlite3VdbeFinalize(sParse.pVdbe);
+ if( rc!=SQLITE_OK || db->mallocFailed ){
+ if( sParse.pVdbe ) sqlite3VdbeFinalize(sParse.pVdbe);
assert(!(*ppStmt));
}else{
*ppStmt = (sqlite3_stmt*)sParse.pVdbe;
@@ -125244,6 +125720,7 @@ static void clearSelect(sqlite3 *db, Select *p, int bFree){
if( OK_IF_ALWAYS_TRUE(p->pWinDefn) ){
sqlite3WindowListDelete(db, p->pWinDefn);
}
+ assert( p->pWin==0 );
#endif
if( OK_IF_ALWAYS_TRUE(p->pWith) ) sqlite3WithDelete(db, p->pWith);
if( bFree ) sqlite3DbFreeNN(db, p);
@@ -125807,7 +126284,7 @@ static void pushOntoSorter(
if( pParse->db->mallocFailed ) return;
pOp->p2 = nKey + nData;
pKI = pOp->p4.pKeyInfo;
- memset(pKI->aSortOrder, 0, pKI->nKeyField); /* Makes OP_Jump testable */
+ memset(pKI->aSortFlags, 0, pKI->nKeyField); /* Makes OP_Jump testable */
sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO);
testcase( pKI->nAllField > pKI->nKeyField+2 );
pOp->p4.pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pSort->pOrderBy,nOBSat,
@@ -126418,7 +126895,7 @@ SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoAlloc(sqlite3 *db, int N, int X){
int nExtra = (N+X)*(sizeof(CollSeq*)+1) - sizeof(CollSeq*);
KeyInfo *p = sqlite3DbMallocRawNN(db, sizeof(KeyInfo) + nExtra);
if( p ){
- p->aSortOrder = (u8*)&p->aColl[N+X];
+ p->aSortFlags = (u8*)&p->aColl[N+X];
p->nKeyField = (u16)N;
p->nAllField = (u16)(N+X);
p->enc = ENC(db);
@@ -126495,7 +126972,7 @@ SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoFromExprList(
assert( sqlite3KeyInfoIsWriteable(pInfo) );
for(i=iStart, pItem=pList->a+iStart; i<nExpr; i++, pItem++){
pInfo->aColl[i-iStart] = sqlite3ExprNNCollSeq(pParse, pItem->pExpr);
- pInfo->aSortOrder[i-iStart] = pItem->sortOrder;
+ pInfo->aSortFlags[i-iStart] = pItem->sortFlags;
}
}
return pInfo;
@@ -126787,8 +127264,6 @@ static const char *columnTypeImpl(
assert( pExpr!=0 );
assert( pNC->pSrcList!=0 );
- assert( pExpr->op!=TK_AGG_COLUMN ); /* This routine runes before aggregates
- ** are processed */
switch( pExpr->op ){
case TK_COLUMN: {
/* The expression is a column. Locate the table the column is being
@@ -127105,12 +127580,11 @@ SQLITE_PRIVATE int sqlite3ColumnsFromExprList(
if( (zName = pEList->a[i].zName)!=0 ){
/* If the column contains an "AS <name>" phrase, use <name> as the name */
}else{
- Expr *pColExpr = sqlite3ExprSkipCollate(pEList->a[i].pExpr);
+ Expr *pColExpr = sqlite3ExprSkipCollateAndLikely(pEList->a[i].pExpr);
while( pColExpr->op==TK_DOT ){
pColExpr = pColExpr->pRight;
assert( pColExpr!=0 );
}
- assert( pColExpr->op!=TK_AGG_COLUMN );
if( pColExpr->op==TK_COLUMN ){
/* For columns use the column name name */
int iCol = pColExpr->iColumn;
@@ -127178,7 +127652,8 @@ SQLITE_PRIVATE int sqlite3ColumnsFromExprList(
SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(
Parse *pParse, /* Parsing contexts */
Table *pTab, /* Add column type information to this table */
- Select *pSelect /* SELECT used to determine types and collations */
+ Select *pSelect, /* SELECT used to determine types and collations */
+ char aff /* Default affinity for columns */
){
sqlite3 *db = pParse->db;
NameContext sNC;
@@ -127211,7 +127686,7 @@ SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(
pCol->colFlags |= COLFLAG_HASTYPE;
}
}
- if( pCol->affinity==0 ) pCol->affinity = SQLITE_AFF_BLOB;
+ if( pCol->affinity<=SQLITE_AFF_NONE ) pCol->affinity = aff;
pColl = sqlite3ExprCollSeq(pParse, p);
if( pColl && pCol->zColl==0 ){
pCol->zColl = sqlite3DbStrDup(db, pColl->zName);
@@ -127224,7 +127699,7 @@ SQLITE_PRIVATE void sqlite3SelectAddColumnTypeAndCollation(
** Given a SELECT statement, generate a Table structure that describes
** the result set of that SELECT.
*/
-SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect){
+SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect, char aff){
Table *pTab;
sqlite3 *db = pParse->db;
u64 savedFlags;
@@ -127244,7 +127719,7 @@ SQLITE_PRIVATE Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect){
pTab->zName = 0;
pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
sqlite3ColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
- sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSelect);
+ sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSelect, aff);
pTab->iPKey = -1;
if( db->mallocFailed ){
sqlite3DeleteTable(db, pTab);
@@ -127398,7 +127873,7 @@ static KeyInfo *multiSelectOrderByKeyInfo(Parse *pParse, Select *p, int nExtra){
}
assert( sqlite3KeyInfoIsWriteable(pRet) );
pRet->aColl[i] = pColl;
- pRet->aSortOrder[i] = pOrderBy->a[i].sortOrder;
+ pRet->aSortFlags[i] = pOrderBy->a[i].sortFlags;
}
}
@@ -128109,11 +128584,14 @@ static int generateOutputSubroutine(
/* If this is a scalar select that is part of an expression, then
** store the results in the appropriate memory cell and break out
- ** of the scan loop.
+ ** of the scan loop. Note that the select might return multiple columns
+ ** if it is the RHS of a row-value IN operator.
*/
case SRT_Mem: {
- assert( pIn->nSdst==1 || pParse->nErr>0 ); testcase( pIn->nSdst!=1 );
- sqlite3ExprCodeMove(pParse, pIn->iSdst, pDest->iSDParm, 1);
+ if( pParse->nErr==0 ){
+ testcase( pIn->nSdst>1 );
+ sqlite3ExprCodeMove(pParse, pIn->iSdst, pDest->iSDParm, pIn->nSdst);
+ }
/* The LIMIT clause will jump out of the loop for us */
break;
}
@@ -128370,7 +128848,7 @@ static int multiSelectOrderBy(
assert( sqlite3KeyInfoIsWriteable(pKeyDup) );
for(i=0; i<nExpr; i++){
pKeyDup->aColl[i] = multiSelectCollSeq(pParse, p, i);
- pKeyDup->aSortOrder[i] = 0;
+ pKeyDup->aSortFlags[i] = 0;
}
}
}
@@ -128620,6 +129098,18 @@ static Expr *substExpr(
}
sqlite3ExprDelete(db, pExpr);
pExpr = pNew;
+
+ /* Ensure that the expression now has an implicit collation sequence,
+ ** just as it did when it was a column of a view or sub-query. */
+ if( pExpr ){
+ if( pExpr->op!=TK_COLUMN && pExpr->op!=TK_COLLATE ){
+ CollSeq *pColl = sqlite3ExprCollSeq(pSubst->pParse, pExpr);
+ pExpr = sqlite3ExprAddCollateString(pSubst->pParse, pExpr,
+ (pColl ? pColl->zName : "BINARY")
+ );
+ }
+ ExprClearProperty(pExpr, EP_Collate);
+ }
}
}
}else{
@@ -128633,6 +129123,14 @@ static Expr *substExpr(
}else{
substExprList(pSubst, pExpr->x.pList);
}
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ Window *pWin = pExpr->y.pWin;
+ pWin->pFilter = substExpr(pSubst, pWin->pFilter);
+ substExprList(pSubst, pWin->pPartition);
+ substExprList(pSubst, pWin->pOrderBy);
+ }
+#endif
}
return pExpr;
}
@@ -129093,6 +129591,7 @@ static int flattenSubquery(
for(pParent=p; pParent; pParent=pParent->pPrior, pSub=pSub->pPrior){
int nSubSrc;
u8 jointype = 0;
+ assert( pSub!=0 );
pSubSrc = pSub->pSrc; /* FROM clause of subquery */
nSubSrc = pSubSrc->nSrc; /* Number of terms in subquery FROM clause */
pSrc = pParent->pSrc; /* FROM clause of the outer query */
@@ -129543,24 +130042,27 @@ static u8 minMaxQuery(sqlite3 *db, Expr *pFunc, ExprList **ppMinMax){
ExprList *pEList = pFunc->x.pList; /* Arguments to agg function */
const char *zFunc; /* Name of aggregate function pFunc */
ExprList *pOrderBy;
- u8 sortOrder;
+ u8 sortFlags;
assert( *ppMinMax==0 );
assert( pFunc->op==TK_AGG_FUNCTION );
- if( pEList==0 || pEList->nExpr!=1 ) return eRet;
+ assert( !IsWindowFunc(pFunc) );
+ if( pEList==0 || pEList->nExpr!=1 || ExprHasProperty(pFunc, EP_WinFunc) ){
+ return eRet;
+ }
zFunc = pFunc->u.zToken;
if( sqlite3StrICmp(zFunc, "min")==0 ){
eRet = WHERE_ORDERBY_MIN;
- sortOrder = SQLITE_SO_ASC;
+ sortFlags = KEYINFO_ORDER_BIGNULL;
}else if( sqlite3StrICmp(zFunc, "max")==0 ){
eRet = WHERE_ORDERBY_MAX;
- sortOrder = SQLITE_SO_DESC;
+ sortFlags = KEYINFO_ORDER_DESC;
}else{
return eRet;
}
*ppMinMax = pOrderBy = sqlite3ExprListDup(db, pEList, 0);
assert( pOrderBy!=0 || db->mallocFailed );
- if( pOrderBy ) pOrderBy->a[0].sortOrder = sortOrder;
+ if( pOrderBy ) pOrderBy->a[0].sortFlags = sortFlags;
return eRet;
}
@@ -129594,7 +130096,7 @@ static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
if( pExpr->op!=TK_AGG_FUNCTION ) return 0;
if( NEVER(pAggInfo->nFunc==0) ) return 0;
if( (pAggInfo->aFunc[0].pFunc->funcFlags&SQLITE_FUNC_COUNT)==0 ) return 0;
- if( pExpr->flags&EP_Distinct ) return 0;
+ if( ExprHasProperty(pExpr, EP_Distinct|EP_WinFunc) ) return 0;
return pTab;
}
@@ -130041,6 +130543,10 @@ static int selectExpander(Walker *pWalker, Select *p){
u8 eCodeOrig = pWalker->eCode;
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
assert( pFrom->pSelect==0 );
+ if( pTab->pSelect && (db->flags & SQLITE_EnableView)==0 ){
+ sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited",
+ pTab->zName);
+ }
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
nCol = pTab->nCol;
pTab->nCol = -1;
@@ -130334,7 +130840,8 @@ static void selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){
Select *pSel = pFrom->pSelect;
if( pSel ){
while( pSel->pPrior ) pSel = pSel->pPrior;
- sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSel);
+ sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSel,
+ SQLITE_AFF_NONE);
}
}
}
@@ -130474,6 +130981,25 @@ static void updateAccumulator(Parse *pParse, int regAcc, AggInfo *pAggInfo){
int regAgg;
ExprList *pList = pF->pExpr->x.pList;
assert( !ExprHasProperty(pF->pExpr, EP_xIsSelect) );
+ assert( !IsWindowFunc(pF->pExpr) );
+ if( ExprHasProperty(pF->pExpr, EP_WinFunc) ){
+ Expr *pFilter = pF->pExpr->y.pWin->pFilter;
+ if( pAggInfo->nAccumulator
+ && (pF->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL)
+ ){
+ if( regHit==0 ) regHit = ++pParse->nMem;
+ /* If this is the first row of the group (regAcc==0), clear the
+ ** "magnet" register regHit so that the accumulator registers
+ ** are populated if the FILTER clause jumps over the the
+ ** invocation of min() or max() altogether. Or, if this is not
+ ** the first row (regAcc==1), set the magnet register so that the
+ ** accumulators are not populated unless the min()/max() is invoked and
+ ** indicates that they should be. */
+ sqlite3VdbeAddOp2(v, OP_Copy, regAcc, regHit);
+ }
+ addrNext = sqlite3VdbeMakeLabel(pParse);
+ sqlite3ExprIfFalse(pParse, pFilter, addrNext, SQLITE_JUMPIFNULL);
+ }
if( pList ){
nArg = pList->nExpr;
regAgg = sqlite3GetTempRange(pParse, nArg);
@@ -130483,7 +131009,9 @@ static void updateAccumulator(Parse *pParse, int regAcc, AggInfo *pAggInfo){
regAgg = 0;
}
if( pF->iDistinct>=0 ){
- addrNext = sqlite3VdbeMakeLabel(pParse);
+ if( addrNext==0 ){
+ addrNext = sqlite3VdbeMakeLabel(pParse);
+ }
testcase( nArg==0 ); /* Error condition */
testcase( nArg>1 ); /* Also an error */
codeDistinct(pParse, pF->iDistinct, addrNext, 1, regAgg);
@@ -130519,6 +131047,7 @@ static void updateAccumulator(Parse *pParse, int regAcc, AggInfo *pAggInfo){
for(i=0, pC=pAggInfo->aCol; i<pAggInfo->nAccumulator; i++, pC++){
sqlite3ExprCode(pParse, pC->pExpr, pC->iMem);
}
+
pAggInfo->directMode = 0;
if( addrHitTest ){
sqlite3VdbeJumpHere(v, addrHitTest);
@@ -130564,7 +131093,7 @@ static int havingToWhereExprCb(Walker *pWalker, Expr *pExpr){
Select *pS = pWalker->u.pSelect;
if( sqlite3ExprIsConstantOrGroupBy(pWalker->pParse, pExpr, pS->pGroupBy) ){
sqlite3 *db = pWalker->pParse->db;
- Expr *pNew = sqlite3ExprAlloc(db, TK_INTEGER, &sqlite3IntTokens[1], 0);
+ Expr *pNew = sqlite3Expr(db, TK_INTEGER, "1");
if( pNew ){
Expr *pWhere = pS->pWhere;
SWAP(Expr, *pNew, *pExpr);
@@ -130986,7 +131515,7 @@ SQLITE_PRIVATE int sqlite3Select(
** assume the column name is non-NULL and segfault. The use of an empty
** string for the fake column name seems safer.
*/
- if( pItem->colUsed==0 ){
+ if( pItem->colUsed==0 && pItem->zName!=0 ){
sqlite3AuthCheck(pParse, SQLITE_READ, pItem->zName, "", pItem->zDatabase);
}
@@ -131000,8 +131529,15 @@ SQLITE_PRIVATE int sqlite3Select(
** technically harmless for it to be generated multiple times. The
** following assert() will detect if something changes to cause
** the same subquery to be coded multiple times, as a signal to the
- ** developers to try to optimize the situation. */
- assert( pItem->addrFillSub==0 );
+ ** developers to try to optimize the situation.
+ **
+ ** Update 2019-07-24:
+ ** See ticket https://sqlite.org/src/tktview/c52b09c7f38903b1311cec40.
+ ** The dbsqlfuzz fuzzer found a case where the same subquery gets
+ ** coded twice. So this assert() now becomes a testcase(). It should
+ ** be very rare, though.
+ */
+ testcase( pItem->addrFillSub!=0 );
/* Increment Parse.nHeight by the height of the largest expression
** tree referred to by this, the parent select. The child select
@@ -131075,7 +131611,7 @@ SQLITE_PRIVATE int sqlite3Select(
int retAddr;
struct SrcList_item *pPrior;
- assert( pItem->addrFillSub==0 );
+ testcase( pItem->addrFillSub==0 ); /* Ticket c52b09c7f38903b1311 */
pItem->regReturn = ++pParse->nMem;
topAddr = sqlite3VdbeAddOp2(v, OP_Integer, 0, pItem->regReturn);
pItem->addrFillSub = topAddr+1;
@@ -131315,23 +131851,35 @@ SQLITE_PRIVATE int sqlite3Select(
}
assert( 66==sqlite3LogEst(100) );
if( p->nSelectRow>66 ) p->nSelectRow = 66;
+
+ /* If there is both a GROUP BY and an ORDER BY clause and they are
+ ** identical, then it may be possible to disable the ORDER BY clause
+ ** on the grounds that the GROUP BY will cause elements to come out
+ ** in the correct order. It also may not - the GROUP BY might use a
+ ** database index that causes rows to be grouped together as required
+ ** but not actually sorted. Either way, record the fact that the
+ ** ORDER BY and GROUP BY clauses are the same by setting the orderByGrp
+ ** variable. */
+ if( sSort.pOrderBy && pGroupBy->nExpr==sSort.pOrderBy->nExpr ){
+ int ii;
+ /* The GROUP BY processing doesn't care whether rows are delivered in
+ ** ASC or DESC order - only that each group is returned contiguously.
+ ** So set the ASC/DESC flags in the GROUP BY to match those in the
+ ** ORDER BY to maximize the chances of rows being delivered in an
+ ** order that makes the ORDER BY redundant. */
+ for(ii=0; ii<pGroupBy->nExpr; ii++){
+ u8 sortFlags = sSort.pOrderBy->a[ii].sortFlags & KEYINFO_ORDER_DESC;
+ pGroupBy->a[ii].sortFlags = sortFlags;
+ }
+ if( sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0 ){
+ orderByGrp = 1;
+ }
+ }
}else{
assert( 0==sqlite3LogEst(1) );
p->nSelectRow = 0;
}
- /* If there is both a GROUP BY and an ORDER BY clause and they are
- ** identical, then it may be possible to disable the ORDER BY clause
- ** on the grounds that the GROUP BY will cause elements to come out
- ** in the correct order. It also may not - the GROUP BY might use a
- ** database index that causes rows to be grouped together as required
- ** but not actually sorted. Either way, record the fact that the
- ** ORDER BY and GROUP BY clauses are the same by setting the orderByGrp
- ** variable. */
- if( sqlite3ExprListCompare(pGroupBy, sSort.pOrderBy, -1)==0 ){
- orderByGrp = 1;
- }
-
/* Create a label to jump to when we want to abort the query */
addrEnd = sqlite3VdbeMakeLabel(pParse);
@@ -131366,9 +131914,16 @@ SQLITE_PRIVATE int sqlite3Select(
minMaxFlag = WHERE_ORDERBY_NORMAL;
}
for(i=0; i<sAggInfo.nFunc; i++){
- assert( !ExprHasProperty(sAggInfo.aFunc[i].pExpr, EP_xIsSelect) );
+ Expr *pExpr = sAggInfo.aFunc[i].pExpr;
+ assert( !ExprHasProperty(pExpr, EP_xIsSelect) );
sNC.ncFlags |= NC_InAggFunc;
- sqlite3ExprAnalyzeAggList(&sNC, sAggInfo.aFunc[i].pExpr->x.pList);
+ sqlite3ExprAnalyzeAggList(&sNC, pExpr->x.pList);
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ assert( !IsWindowFunc(pExpr) );
+ if( ExprHasProperty(pExpr, EP_WinFunc) ){
+ sqlite3ExprAnalyzeAggregates(&sNC, pExpr->y.pWin->pFilter);
+ }
+#endif
sNC.ncFlags &= ~NC_InAggFunc;
}
sAggInfo.mxReg = pParse->nMem;
@@ -131680,13 +132235,18 @@ SQLITE_PRIVATE int sqlite3Select(
{
int regAcc = 0; /* "populate accumulators" flag */
- /* If there are accumulator registers but no min() or max() functions,
- ** allocate register regAcc. Register regAcc will contain 0 the first
- ** time the inner loop runs, and 1 thereafter. The code generated
- ** by updateAccumulator() only updates the accumulator registers if
- ** regAcc contains 0. */
+ /* If there are accumulator registers but no min() or max() functions
+ ** without FILTER clauses, allocate register regAcc. Register regAcc
+ ** will contain 0 the first time the inner loop runs, and 1 thereafter.
+ ** The code generated by updateAccumulator() uses this to ensure
+ ** that the accumulator registers are (a) updated only once if
+ ** there are no min() or max functions or (b) always updated for the
+ ** first row visited by the aggregate, so that they are updated at
+ ** least once even if the FILTER clause means the min() or max()
+ ** function visits zero rows. */
if( sAggInfo.nAccumulator ){
for(i=0; i<sAggInfo.nFunc; i++){
+ if( ExprHasProperty(sAggInfo.aFunc[i].pExpr, EP_WinFunc) ) continue;
if( sAggInfo.aFunc[i].pFunc->funcFlags&SQLITE_FUNC_NEEDCOLL ) break;
}
if( i==sAggInfo.nFunc ){
@@ -132157,7 +132717,11 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
/* Check that the trigger name is not reserved and that no trigger of the
** specified name exists */
zName = sqlite3NameFromToken(db, pName);
- if( !zName || SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
+ if( zName==0 ){
+ assert( db->mallocFailed );
+ goto trigger_cleanup;
+ }
+ if( sqlite3CheckObjectName(pParse, zName, "trigger", pTab->zName) ){
goto trigger_cleanup;
}
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
@@ -132320,6 +132884,7 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
Trigger *pLink = pTrig;
Hash *pHash = &db->aDb[iDb].pSchema->trigHash;
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
+ assert( pLink!=0 );
pTrig = sqlite3HashInsert(pHash, zName, pTrig);
if( pTrig ){
sqlite3OomFault(db);
@@ -132438,6 +133003,9 @@ SQLITE_PRIVATE TriggerStep *sqlite3TriggerInsertStep(
pTriggerStep->pIdList = pColumn;
pTriggerStep->pUpsert = pUpsert;
pTriggerStep->orconf = orconf;
+ if( pUpsert ){
+ sqlite3HasExplicitNulls(pParse, pUpsert->pUpsertTarget);
+ }
}else{
testcase( pColumn );
sqlite3IdListDelete(db, pColumn);
@@ -132593,10 +133161,9 @@ SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
iDb = sqlite3SchemaToIndex(pParse->db, pTrigger->pSchema);
assert( iDb>=0 && iDb<db->nDb );
pTable = tableOfTrigger(pTrigger);
- assert( pTable );
- assert( pTable->pSchema==pTrigger->pSchema || iDb==1 );
+ assert( (pTable && pTable->pSchema==pTrigger->pSchema) || iDb==1 );
#ifndef SQLITE_OMIT_AUTHORIZATION
- {
+ if( pTable ){
int code = SQLITE_DROP_TRIGGER;
const char *zDb = db->aDb[iDb].zDbSName;
const char *zTab = SCHEMA_TABLE(iDb);
@@ -132610,7 +133177,6 @@ SQLITE_PRIVATE void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
/* Generate code to destroy the database record of the trigger.
*/
- assert( pTable!=0 );
if( (v = sqlite3GetVdbe(pParse))!=0 ){
sqlite3NestedParse(pParse,
"DELETE FROM %Q.%s WHERE name=%Q AND type='trigger'",
@@ -132634,9 +133200,11 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTrigger(sqlite3 *db, int iDb, const ch
if( ALWAYS(pTrigger) ){
if( pTrigger->pSchema==pTrigger->pTabSchema ){
Table *pTab = tableOfTrigger(pTrigger);
- Trigger **pp;
- for(pp=&pTab->pTrigger; *pp!=pTrigger; pp=&((*pp)->pNext));
- *pp = (*pp)->pNext;
+ if( pTab ){
+ Trigger **pp;
+ for(pp=&pTab->pTrigger; *pp!=pTrigger; pp=&((*pp)->pNext));
+ *pp = (*pp)->pNext;
+ }
}
sqlite3DeleteTrigger(db, pTrigger);
db->mDbFlags |= DBFLAG_SchemaChange;
@@ -133884,28 +134452,30 @@ SQLITE_PRIVATE void sqlite3Update(
}
if( !isView ){
- int addr1 = 0; /* Address of jump instruction */
-
/* Do constraint checks. */
assert( regOldRowid>0 );
sqlite3GenerateConstraintChecks(pParse, pTab, aRegIdx, iDataCur, iIdxCur,
regNewRowid, regOldRowid, chngKey, onError, labelContinue, &bReplace,
aXRef, 0);
- /* Do FK constraint checks. */
- if( hasFK ){
- sqlite3FkCheck(pParse, pTab, regOldRowid, 0, aXRef, chngKey);
- }
-
- /* Delete the index entries associated with the current record. */
+ /* If REPLACE conflict handling may have been used, or if the PK of the
+ ** row is changing, then the GenerateConstraintChecks() above may have
+ ** moved cursor iDataCur. Reseek it. */
if( bReplace || chngKey ){
if( pPk ){
- addr1 = sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, 0, regKey, nKey);
+ sqlite3VdbeAddOp4Int(v, OP_NotFound,iDataCur,labelContinue,regKey,nKey);
}else{
- addr1 = sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, 0, regOldRowid);
+ sqlite3VdbeAddOp3(v, OP_NotExists, iDataCur, labelContinue,regOldRowid);
}
VdbeCoverageNeverTaken(v);
}
+
+ /* Do FK constraint checks. */
+ if( hasFK ){
+ sqlite3FkCheck(pParse, pTab, regOldRowid, 0, aXRef, chngKey);
+ }
+
+ /* Delete the index entries associated with the current record. */
sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, aRegIdx, -1);
/* If changing the rowid value, or if there are foreign key constraints
@@ -133935,9 +134505,6 @@ SQLITE_PRIVATE void sqlite3Update(
sqlite3VdbeAddOp2(v, OP_Delete, iDataCur, 0);
}
#endif
- if( bReplace || chngKey ){
- sqlite3VdbeJumpHere(v, addr1);
- }
if( hasFK ){
sqlite3FkCheck(pParse, pTab, 0, regNewRowid, aXRef, chngKey);
@@ -134376,6 +134943,7 @@ SQLITE_PRIVATE void sqlite3UpsertDoUpdate(
sqlite3 *db = pParse->db;
SrcList *pSrc; /* FROM clause for the UPDATE */
int iDataCur;
+ int i;
assert( v!=0 );
assert( pUpsert!=0 );
@@ -134392,7 +134960,6 @@ SQLITE_PRIVATE void sqlite3UpsertDoUpdate(
Index *pPk = sqlite3PrimaryKeyIndex(pTab);
int nPk = pPk->nKeyCol;
int iPk = pParse->nMem+1;
- int i;
pParse->nMem += nPk;
for(i=0; i<nPk; i++){
int k;
@@ -134413,6 +134980,12 @@ SQLITE_PRIVATE void sqlite3UpsertDoUpdate(
/* pUpsert does not own pUpsertSrc - the outer INSERT statement does. So
** we have to make a copy before passing it down into sqlite3Update() */
pSrc = sqlite3SrcListDup(db, pUpsert->pUpsertSrc, 0);
+ /* excluded.* columns of type REAL need to be converted to a hard real */
+ for(i=0; i<pTab->nCol; i++){
+ if( pTab->aCol[i].affinity==SQLITE_AFF_REAL ){
+ sqlite3VdbeAddOp1(v, OP_RealAffinity, pUpsert->regData+i);
+ }
+ }
sqlite3Update(pParse, pSrc, pUpsert->pUpsertSet,
pUpsert->pUpsertWhere, OE_Abort, 0, 0, pUpsert);
pUpsert->pUpsertSet = 0; /* Will have been deleted by sqlite3Update() */
@@ -134876,6 +135449,9 @@ struct VtabCtx {
** Construct and install a Module object for a virtual table. When this
** routine is called, it is guaranteed that all appropriate locks are held
** and the module is not already part of the connection.
+**
+** If there already exists a module with zName, replace it with the new one.
+** If pModule==0, then delete the module zName if it exists.
*/
SQLITE_PRIVATE Module *sqlite3VtabCreateModule(
sqlite3 *db, /* Database in which module is registered */
@@ -134885,25 +135461,36 @@ SQLITE_PRIVATE Module *sqlite3VtabCreateModule(
void (*xDestroy)(void *) /* Module destructor function */
){
Module *pMod;
- int nName = sqlite3Strlen30(zName);
- pMod = (Module *)sqlite3Malloc(sizeof(Module) + nName + 1);
- if( pMod==0 ){
- sqlite3OomFault(db);
+ Module *pDel;
+ char *zCopy;
+ if( pModule==0 ){
+ zCopy = (char*)zName;
+ pMod = 0;
}else{
- Module *pDel;
- char *zCopy = (char *)(&pMod[1]);
+ int nName = sqlite3Strlen30(zName);
+ pMod = (Module *)sqlite3Malloc(sizeof(Module) + nName + 1);
+ if( pMod==0 ){
+ sqlite3OomFault(db);
+ return 0;
+ }
+ zCopy = (char *)(&pMod[1]);
memcpy(zCopy, zName, nName+1);
pMod->zName = zCopy;
pMod->pModule = pModule;
pMod->pAux = pAux;
pMod->xDestroy = xDestroy;
pMod->pEpoTab = 0;
- pDel = (Module *)sqlite3HashInsert(&db->aModule,zCopy,(void*)pMod);
- assert( pDel==0 || pDel==pMod );
- if( pDel ){
+ pMod->nRefModule = 1;
+ }
+ pDel = (Module *)sqlite3HashInsert(&db->aModule,zCopy,(void*)pMod);
+ if( pDel ){
+ if( pDel==pMod ){
sqlite3OomFault(db);
sqlite3DbFree(db, pDel);
pMod = 0;
+ }else{
+ sqlite3VtabEponymousTableClear(db, pDel);
+ sqlite3VtabModuleUnref(db, pDel);
}
}
return pMod;
@@ -134924,11 +135511,7 @@ static int createModule(
int rc = SQLITE_OK;
sqlite3_mutex_enter(db->mutex);
- if( sqlite3HashFind(&db->aModule, zName) ){
- rc = SQLITE_MISUSE_BKPT;
- }else{
- (void)sqlite3VtabCreateModule(db, zName, pModule, pAux, xDestroy);
- }
+ (void)sqlite3VtabCreateModule(db, zName, pModule, pAux, xDestroy);
rc = sqlite3ApiExit(db, rc);
if( rc!=SQLITE_OK && xDestroy ) xDestroy(pAux);
sqlite3_mutex_leave(db->mutex);
@@ -134968,6 +135551,44 @@ SQLITE_API int sqlite3_create_module_v2(
}
/*
+** External API to drop all virtual-table modules, except those named
+** on the azNames list.
+*/
+SQLITE_API int sqlite3_drop_modules(sqlite3 *db, const char** azNames){
+ HashElem *pThis, *pNext;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
+ for(pThis=sqliteHashFirst(&db->aModule); pThis; pThis=pNext){
+ Module *pMod = (Module*)sqliteHashData(pThis);
+ pNext = sqliteHashNext(pThis);
+ if( azNames ){
+ int ii;
+ for(ii=0; azNames[ii]!=0 && strcmp(azNames[ii],pMod->zName)!=0; ii++){}
+ if( azNames[ii]!=0 ) continue;
+ }
+ createModule(db, pMod->zName, 0, 0, 0);
+ }
+ return SQLITE_OK;
+}
+
+/*
+** Decrement the reference count on a Module object. Destroy the
+** module when the reference count reaches zero.
+*/
+SQLITE_PRIVATE void sqlite3VtabModuleUnref(sqlite3 *db, Module *pMod){
+ assert( pMod->nRefModule>0 );
+ pMod->nRefModule--;
+ if( pMod->nRefModule==0 ){
+ if( pMod->xDestroy ){
+ pMod->xDestroy(pMod->pAux);
+ }
+ assert( pMod->pEpoTab==0 );
+ sqlite3DbFree(db, pMod);
+ }
+}
+
+/*
** Lock the virtual table so that it cannot be disconnected.
** Locks nest. Every lock should have a corresponding unlock.
** If an unlock is omitted, resources leaks will occur.
@@ -135006,6 +135627,7 @@ SQLITE_PRIVATE void sqlite3VtabUnlock(VTable *pVTab){
pVTab->nRef--;
if( pVTab->nRef==0 ){
sqlite3_vtab *p = pVTab->pVtab;
+ sqlite3VtabModuleUnref(pVTab->db, pVTab->pMod);
if( p ){
p->pModule->xDisconnect(p);
}
@@ -135410,6 +136032,7 @@ static int vtabCallConstructor(
** the sqlite3_vtab object if successful. */
memset(pVTable->pVtab, 0, sizeof(pVTable->pVtab[0]));
pVTable->pVtab->pModule = pMod->pModule;
+ pMod->nRefModule++;
pVTable->nRef = 1;
if( sCtx.bDeclared==0 ){
const char *zFormat = "vtable constructor did not declare schema: %s";
@@ -136194,13 +136817,15 @@ struct WhereLevel {
int addrCont; /* Jump here to continue with the next loop cycle */
int addrFirst; /* First instruction of interior of the loop */
int addrBody; /* Beginning of the body of this loop */
+ int regBignull; /* big-null flag reg. True if a NULL-scan is needed */
+ int addrBignull; /* Jump here for next part of big-null scan */
#ifndef SQLITE_LIKE_DOESNT_MATCH_BLOBS
u32 iLikeRepCntr; /* LIKE range processing counter register (times 2) */
int addrLikeRep; /* LIKE range processing address */
#endif
u8 iFrom; /* Which entry in the FROM clause */
u8 op, p3, p5; /* Opcode, P3 & P5 of the opcode that ends the loop */
- int p1, p2; /* Operands of the opcode used to ends the loop */
+ int p1, p2; /* Operands of the opcode used to end the loop */
union { /* Information that depends on pWLoop->wsFlags */
struct {
int nIn; /* Number of entries in aInLoop[] */
@@ -136251,7 +136876,7 @@ struct WhereLoop {
u16 nEq; /* Number of equality constraints */
u16 nBtm; /* Size of BTM vector */
u16 nTop; /* Size of TOP vector */
- u16 nIdxCol; /* Index column used for ORDER BY */
+ u16 nDistinctCol; /* Index columns used to sort for DISTINCT */
Index *pIndex; /* Index used, or NULL */
} btree;
struct { /* Information for virtual tables */
@@ -136402,16 +137027,17 @@ struct WhereTerm {
#define TERM_ORINFO 0x10 /* Need to free the WhereTerm.u.pOrInfo object */
#define TERM_ANDINFO 0x20 /* Need to free the WhereTerm.u.pAndInfo obj */
#define TERM_OR_OK 0x40 /* Used during OR-clause processing */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
# define TERM_VNULL 0x80 /* Manufactured x>NULL or x<=NULL term */
#else
-# define TERM_VNULL 0x00 /* Disabled if not using stat3 */
+# define TERM_VNULL 0x00 /* Disabled if not using stat4 */
#endif
#define TERM_LIKEOPT 0x100 /* Virtual terms from the LIKE optimization */
#define TERM_LIKECOND 0x200 /* Conditionally this LIKE operator term */
#define TERM_LIKE 0x400 /* The original LIKE operator */
#define TERM_IS 0x800 /* Term.pExpr is an IS operator */
#define TERM_VARSELECT 0x1000 /* Term.pExpr contains a correlated sub-query */
+#define TERM_NOPARTIDX 0x2000 /* Not for use to enable a partial index */
/*
** An instance of the WhereScan object is used as an iterator for locating
@@ -136522,7 +137148,7 @@ struct WhereLoopBuilder {
ExprList *pOrderBy; /* ORDER BY clause */
WhereLoop *pNew; /* Template WhereLoop */
WhereOrSet *pOrSet; /* Record best loops here, if not NULL */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
UnpackedRecord *pRec; /* Probe for stat4 (if required) */
int nRecValid; /* Number of valid fields currently in pRec */
#endif
@@ -136709,6 +137335,7 @@ SQLITE_PRIVATE void sqlite3WhereTabFuncArgs(Parse*, struct SrcList_item*, WhereC
#define WHERE_UNQ_WANTED 0x00010000 /* WHERE_ONEROW would have been helpful*/
#define WHERE_PARTIALIDX 0x00020000 /* The automatic index is partial */
#define WHERE_IN_EARLYOUT 0x00040000 /* Perhaps quit IN loops early */
+#define WHERE_BIGNULL_SORT 0x00080000 /* Column nEq of index is BIGNULL */
#endif /* !defined(SQLITE_WHEREINT_H) */
@@ -137013,9 +137640,9 @@ static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
** Code an OP_Affinity opcode to apply the column affinity string zAff
** to the n registers starting at base.
**
-** As an optimization, SQLITE_AFF_BLOB entries (which are no-ops) at the
-** beginning and end of zAff are ignored. If all entries in zAff are
-** SQLITE_AFF_BLOB, then no code gets generated.
+** As an optimization, SQLITE_AFF_BLOB and SQLITE_AFF_NONE entries (which
+** are no-ops) at the beginning and end of zAff are ignored. If all entries
+** in zAff are SQLITE_AFF_BLOB or SQLITE_AFF_NONE, then no code gets generated.
**
** This routine makes its own copy of zAff so that the caller is free
** to modify zAff after this routine returns.
@@ -137028,15 +137655,16 @@ static void codeApplyAffinity(Parse *pParse, int base, int n, char *zAff){
}
assert( v!=0 );
- /* Adjust base and n to skip over SQLITE_AFF_BLOB entries at the beginning
- ** and end of the affinity string.
+ /* Adjust base and n to skip over SQLITE_AFF_BLOB and SQLITE_AFF_NONE
+ ** entries at the beginning and end of the affinity string.
*/
- while( n>0 && zAff[0]==SQLITE_AFF_BLOB ){
+ assert( SQLITE_AFF_NONE<SQLITE_AFF_BLOB );
+ while( n>0 && zAff[0]<=SQLITE_AFF_BLOB ){
n--;
base++;
zAff++;
}
- while( n>1 && zAff[n-1]==SQLITE_AFF_BLOB ){
+ while( n>1 && zAff[n-1]<=SQLITE_AFF_BLOB ){
n--;
}
@@ -137811,6 +138439,7 @@ typedef struct IdxExprTrans {
static int whereIndexExprTransNode(Walker *p, Expr *pExpr){
IdxExprTrans *pX = p->u.pIdxTrans;
if( sqlite3ExprCompare(0, pExpr, pX->pIdxExpr, pX->iTabCur)==0 ){
+ pExpr->affExpr = sqlite3ExprAffinity(pExpr);
pExpr->op = TK_COLUMN;
pExpr->iTable = pX->iIdxCur;
pExpr->iColumn = pX->iIdxCol;
@@ -138243,32 +138872,12 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
u8 bSeekPastNull = 0; /* True to seek past initial nulls */
u8 bStopAtNull = 0; /* Add condition to terminate at NULLs */
int omitTable; /* True if we use the index only */
-
+ int regBignull = 0; /* big-null flag register */
pIdx = pLoop->u.btree.pIndex;
iIdxCur = pLevel->iIdxCur;
assert( nEq>=pLoop->nSkip );
- /* If this loop satisfies a sort order (pOrderBy) request that
- ** was passed to this function to implement a "SELECT min(x) ..."
- ** query, then the caller will only allow the loop to run for
- ** a single iteration. This means that the first row returned
- ** should not have a NULL value stored in 'x'. If column 'x' is
- ** the first one after the nEq equality constraints in the index,
- ** this requires some special handling.
- */
- assert( pWInfo->pOrderBy==0
- || pWInfo->pOrderBy->nExpr==1
- || (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)==0 );
- if( (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)!=0
- && pWInfo->nOBSat>0
- && (pIdx->nKeyCol>nEq)
- ){
- assert( pLoop->nSkip==0 );
- bSeekPastNull = 1;
- nExtraReg = 1;
- }
-
/* Find any inequality constraint terms for the start and end
** of the range.
*/
@@ -138309,6 +138918,25 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
}
assert( pRangeEnd==0 || (pRangeEnd->wtFlags & TERM_VNULL)==0 );
+ /* If the WHERE_BIGNULL_SORT flag is set, then index column nEq uses
+ ** a non-default "big-null" sort (either ASC NULLS LAST or DESC NULLS
+ ** FIRST). In both cases separate ordered scans are made of those
+ ** index entries for which the column is null and for those for which
+ ** it is not. For an ASC sort, the non-NULL entries are scanned first.
+ ** For DESC, NULL entries are scanned first.
+ */
+ if( (pLoop->wsFlags & (WHERE_TOP_LIMIT|WHERE_BTM_LIMIT))==0
+ && (pLoop->wsFlags & WHERE_BIGNULL_SORT)!=0
+ ){
+ assert( bSeekPastNull==0 && nExtraReg==0 && nBtm==0 && nTop==0 );
+ assert( pRangeEnd==0 && pRangeStart==0 );
+ assert( pLoop->nSkip==0 );
+ nExtraReg = 1;
+ bSeekPastNull = 1;
+ pLevel->regBignull = regBignull = ++pParse->nMem;
+ pLevel->addrBignull = sqlite3VdbeMakeLabel(pParse);
+ }
+
/* If we are doing a reverse order scan on an ascending index, or
** a forward order scan on a descending index, interchange the
** start and end terms (pRangeStart and pRangeEnd).
@@ -138331,7 +138959,7 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
if( zStartAff && nTop ){
zEndAff = sqlite3DbStrDup(db, &zStartAff[nEq]);
}
- addrNxt = pLevel->addrNxt;
+ addrNxt = (regBignull ? pLevel->addrBignull : pLevel->addrNxt);
testcase( pRangeStart && (pRangeStart->eOperator & WO_LE)!=0 );
testcase( pRangeStart && (pRangeStart->eOperator & WO_GE)!=0 );
@@ -138365,10 +138993,14 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
}
bSeekPastNull = 0;
}else if( bSeekPastNull ){
+ startEq = 0;
sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
+ start_constraints = 1;
nConstraint++;
- startEq = 0;
+ }else if( regBignull ){
+ sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
start_constraints = 1;
+ nConstraint++;
}
codeApplyAffinity(pParse, regBase, nConstraint - bSeekPastNull, zStartAff);
if( pLoop->nSkip>0 && nConstraint==pLoop->nSkip ){
@@ -138379,6 +139011,11 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){
sqlite3VdbeAddOp1(v, OP_SeekHit, iIdxCur);
}
+ if( regBignull ){
+ sqlite3VdbeAddOp2(v, OP_Integer, 1, regBignull);
+ VdbeComment((v, "NULL-scan pass ctr"));
+ }
+
op = aStartOp[(start_constraints<<2) + (startEq<<1) + bRev];
assert( op!=0 );
sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint);
@@ -138389,6 +139026,23 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
VdbeCoverageIf(v, op==OP_SeekGE); testcase( op==OP_SeekGE );
VdbeCoverageIf(v, op==OP_SeekLE); testcase( op==OP_SeekLE );
VdbeCoverageIf(v, op==OP_SeekLT); testcase( op==OP_SeekLT );
+
+ assert( bSeekPastNull==0 || bStopAtNull==0 );
+ if( regBignull ){
+ assert( bSeekPastNull==1 || bStopAtNull==1 );
+ assert( bSeekPastNull==!bStopAtNull );
+ assert( bStopAtNull==startEq );
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+2);
+ op = aStartOp[(nConstraint>1)*4 + 2 + bRev];
+ sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase,
+ nConstraint-startEq);
+ VdbeCoverage(v);
+ VdbeCoverageIf(v, op==OP_Rewind); testcase( op==OP_Rewind );
+ VdbeCoverageIf(v, op==OP_Last); testcase( op==OP_Last );
+ VdbeCoverageIf(v, op==OP_SeekGE); testcase( op==OP_SeekGE );
+ VdbeCoverageIf(v, op==OP_SeekLE); testcase( op==OP_SeekLE );
+ assert( op==OP_Rewind || op==OP_Last || op==OP_SeekGE || op==OP_SeekLE);
+ }
}
/* Load the value for the inequality constraint at the end of the
@@ -138420,8 +139074,10 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
endEq = 1;
}
}else if( bStopAtNull ){
- sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
- endEq = 0;
+ if( regBignull==0 ){
+ sqlite3VdbeAddOp2(v, OP_Null, 0, regBase+nEq);
+ endEq = 0;
+ }
nConstraint++;
}
sqlite3DbFree(db, zStartAff);
@@ -138432,6 +139088,12 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
/* Check if the index cursor is past the end of the range. */
if( nConstraint ){
+ if( regBignull ){
+ /* Except, skip the end-of-range check while doing the NULL-scan */
+ sqlite3VdbeAddOp2(v, OP_IfNot, regBignull, sqlite3VdbeCurrentAddr(v)+3);
+ VdbeComment((v, "If NULL-scan 2nd pass"));
+ VdbeCoverage(v);
+ }
op = aEndOp[bRev*2 + endEq];
sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase, nConstraint);
testcase( op==OP_IdxGT ); VdbeCoverageIf(v, op==OP_IdxGT );
@@ -138439,6 +139101,23 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
testcase( op==OP_IdxLT ); VdbeCoverageIf(v, op==OP_IdxLT );
testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE );
}
+ if( regBignull ){
+ /* During a NULL-scan, check to see if we have reached the end of
+ ** the NULLs */
+ assert( bSeekPastNull==!bStopAtNull );
+ assert( bSeekPastNull+bStopAtNull==1 );
+ assert( nConstraint+bSeekPastNull>0 );
+ sqlite3VdbeAddOp2(v, OP_If, regBignull, sqlite3VdbeCurrentAddr(v)+2);
+ VdbeComment((v, "If NULL-scan 1st pass"));
+ VdbeCoverage(v);
+ op = aEndOp[bRev*2 + bSeekPastNull];
+ sqlite3VdbeAddOp4Int(v, op, iIdxCur, addrNxt, regBase,
+ nConstraint+bSeekPastNull);
+ testcase( op==OP_IdxGT ); VdbeCoverageIf(v, op==OP_IdxGT );
+ testcase( op==OP_IdxGE ); VdbeCoverageIf(v, op==OP_IdxGE );
+ testcase( op==OP_IdxLT ); VdbeCoverageIf(v, op==OP_IdxLT );
+ testcase( op==OP_IdxLE ); VdbeCoverageIf(v, op==OP_IdxLE );
+ }
if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){
sqlite3VdbeAddOp2(v, OP_SeekHit, iIdxCur, 1);
@@ -139065,7 +139744,7 @@ static int whereClauseInsert(WhereClause *pWC, Expr *p, u16 wtFlags){
}else{
pTerm->truthProb = 1;
}
- pTerm->pExpr = sqlite3ExprSkipCollate(p);
+ pTerm->pExpr = sqlite3ExprSkipCollateAndLikely(p);
pTerm->wtFlags = wtFlags;
pTerm->pWC = pWC;
pTerm->iParent = -1;
@@ -139098,10 +139777,16 @@ static int allowedOp(int op){
** the left hand side of a comparison overrides any collation sequence
** attached to the right. For the same reason the EP_Collate flag
** is not commuted.
+**
+** The return value is extra flags that are added to the WhereTerm object
+** after it is commuted. The only extra flag ever added is TERM_NOPARTIDX
+** which prevents the term from being used to enable a partial index if
+** COLLATE changes have been made.
*/
-static void exprCommute(Parse *pParse, Expr *pExpr){
+static u16 exprCommute(Parse *pParse, Expr *pExpr){
u16 expRight = (pExpr->pRight->flags & EP_Collate);
u16 expLeft = (pExpr->pLeft->flags & EP_Collate);
+ u16 wtFlags = 0;
assert( allowedOp(pExpr->op) && pExpr->op!=TK_IN );
if( expRight==expLeft ){
/* Either X and Y both have COLLATE operator or neither do */
@@ -139109,11 +139794,13 @@ static void exprCommute(Parse *pParse, Expr *pExpr){
/* Both X and Y have COLLATE operators. Make sure X is always
** used by clearing the EP_Collate flag from Y. */
pExpr->pRight->flags &= ~EP_Collate;
+ wtFlags |= TERM_NOPARTIDX;
}else if( sqlite3ExprCollSeq(pParse, pExpr->pLeft)!=0 ){
/* Neither X nor Y have COLLATE operators, but X has a non-default
** collating sequence. So add the EP_Collate marker on X to cause
** it to be searched first. */
pExpr->pLeft->flags |= EP_Collate;
+ wtFlags |= TERM_NOPARTIDX;
}
}
SWAP(Expr*,pExpr->pRight,pExpr->pLeft);
@@ -139125,6 +139812,7 @@ static void exprCommute(Parse *pParse, Expr *pExpr){
assert( pExpr->op>=TK_GT && pExpr->op<=TK_GE );
pExpr->op = ((pExpr->op-TK_GT)^2)+TK_GT;
}
+ return wtFlags;
}
/*
@@ -139256,6 +139944,7 @@ static int isLikeOrGlob(
** 2019-05-02 https://sqlite.org/src/info/b043a54c3de54b28
** 2019-06-10 https://sqlite.org/src/info/fd76310a5e843e07
** 2019-06-14 https://sqlite.org/src/info/ce8717f0885af975
+ ** 2019-09-03 https://sqlite.org/src/info/0f0428096f17252a
*/
if( pLeft->op!=TK_COLUMN
|| sqlite3ExprAffinity(pLeft)!=SQLITE_AFF_TEXT
@@ -139265,9 +139954,13 @@ static int isLikeOrGlob(
double rDummy;
isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
if( isNum<=0 ){
- zNew[iTo-1]++;
- isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
- zNew[iTo-1]--;
+ if( iTo==1 && zNew[0]=='-' ){
+ isNum = +1;
+ }else{
+ zNew[iTo-1]++;
+ isNum = sqlite3AtoF(zNew, &rDummy, iTo, SQLITE_UTF8);
+ zNew[iTo-1]--;
+ }
}
if( isNum>0 ){
sqlite3ExprDelete(db, pPrefix);
@@ -140121,7 +140814,7 @@ static void exprAnalyze(
pDup = pExpr;
pNew = pTerm;
}
- exprCommute(pParse, pDup);
+ pNew->wtFlags |= exprCommute(pParse, pDup);
pNew->leftCursor = aiCurCol[0];
pNew->u.leftColumn = aiCurCol[1];
testcase( (prereqLeft | extraRight) != prereqLeft );
@@ -140362,8 +141055,8 @@ static void exprAnalyze(
}
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
- /* When sqlite_stat3 histogram data is available an operator of the
+#ifdef SQLITE_ENABLE_STAT4
+ /* When sqlite_stat4 histogram data is available an operator of the
** form "x IS NOT NULL" can sometimes be evaluated more efficiently
** as "x>NULL" if x is not an INTEGER PRIMARY KEY. So construct a
** virtual term of that form.
@@ -140374,7 +141067,7 @@ static void exprAnalyze(
&& pExpr->pLeft->op==TK_COLUMN
&& pExpr->pLeft->iColumn>=0
&& !ExprHasProperty(pExpr, EP_FromJoin)
- && OptimizationEnabled(db, SQLITE_Stat34)
+ && OptimizationEnabled(db, SQLITE_Stat4)
){
Expr *pNewExpr;
Expr *pLeft = pExpr->pLeft;
@@ -140399,7 +141092,7 @@ static void exprAnalyze(
pNewTerm->prereqAll = pTerm->prereqAll;
}
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/* Prevent ON clause terms of a LEFT JOIN from being used to drive
** an index for tables to the left of the join.
@@ -140432,7 +141125,7 @@ static void exprAnalyze(
** all terms of the WHERE clause.
*/
SQLITE_PRIVATE void sqlite3WhereSplit(WhereClause *pWC, Expr *pExpr, u8 op){
- Expr *pE2 = sqlite3ExprSkipCollate(pExpr);
+ Expr *pE2 = sqlite3ExprSkipCollateAndLikely(pExpr);
pWC->op = op;
if( pE2==0 ) return;
if( pE2->op!=op ){
@@ -140847,7 +141540,8 @@ static WhereTerm *whereScanNext(WhereScan *pScan){
){
if( (pTerm->eOperator & WO_EQUIV)!=0
&& pScan->nEquiv<ArraySize(pScan->aiCur)
- && (pX = sqlite3ExprSkipCollate(pTerm->pExpr->pRight))->op==TK_COLUMN
+ && (pX = sqlite3ExprSkipCollateAndLikely(pTerm->pExpr->pRight))->op
+ ==TK_COLUMN
){
int j;
for(j=0; j<pScan->nEquiv; j++){
@@ -141043,7 +141737,7 @@ static int findIndexCol(
const char *zColl = pIdx->azColl[iCol];
for(i=0; i<pList->nExpr; i++){
- Expr *p = sqlite3ExprSkipCollate(pList->a[i].pExpr);
+ Expr *p = sqlite3ExprSkipCollateAndLikely(pList->a[i].pExpr);
if( p->op==TK_COLUMN
&& p->iColumn==pIdx->aiColumn[iCol]
&& p->iTable==iBase
@@ -141107,7 +141801,7 @@ static int isDistinctRedundant(
** current SELECT is a correlated sub-query.
*/
for(i=0; i<pDistinct->nExpr; i++){
- Expr *p = sqlite3ExprSkipCollate(pDistinct->a[i].pExpr);
+ Expr *p = sqlite3ExprSkipCollateAndLikely(pDistinct->a[i].pExpr);
if( p->op==TK_COLUMN && p->iTable==iBase && p->iColumn<0 ) return 1;
}
@@ -141527,6 +142221,7 @@ static sqlite3_index_info *allocateIndexInfo(
for(i=0; i<n; i++){
Expr *pExpr = pOrderBy->a[i].pExpr;
if( pExpr->op!=TK_COLUMN || pExpr->iTable!=pSrc->iCursor ) break;
+ if( pOrderBy->a[i].sortFlags & KEYINFO_ORDER_BIGNULL ) break;
}
if( i==n){
nOrderBy = n;
@@ -141625,7 +142320,7 @@ static sqlite3_index_info *allocateIndexInfo(
for(i=0; i<nOrderBy; i++){
Expr *pExpr = pOrderBy->a[i].pExpr;
pIdxOrderBy[i].iColumn = pExpr->iColumn;
- pIdxOrderBy[i].desc = pOrderBy->a[i].sortOrder;
+ pIdxOrderBy[i].desc = pOrderBy->a[i].sortFlags & KEYINFO_ORDER_DESC;
}
*pmNoOmit = mNoOmit;
@@ -141671,7 +142366,7 @@ static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
}
#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Estimate the location of a particular key among all keys in an
** index. Store the results in aStat as follows:
@@ -141864,7 +142559,7 @@ static int whereKeyStats(
pRec->nField = nField;
return i;
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/*
** If it is not NULL, pTerm is a term that provides an upper or lower
@@ -141890,7 +142585,7 @@ static LogEst whereRangeAdjust(WhereTerm *pTerm, LogEst nNew){
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Return the affinity for a single column of an index.
*/
@@ -141899,12 +142594,13 @@ SQLITE_PRIVATE char sqlite3IndexColumnAffinity(sqlite3 *db, Index *pIdx, int iCo
if( !pIdx->zColAff ){
if( sqlite3IndexAffinityStr(db, pIdx)==0 ) return SQLITE_AFF_BLOB;
}
+ assert( pIdx->zColAff[iCol]!=0 );
return pIdx->zColAff[iCol];
}
#endif
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** This function is called to estimate the number of rows visited by a
** range-scan on a skip-scan index. For example:
@@ -142010,7 +142706,7 @@ static int whereRangeSkipScanEst(
return rc;
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
/*
** This function is used to estimate the number of rows that will be visited
@@ -142063,12 +142759,12 @@ static int whereRangeScanEst(
int nOut = pLoop->nOut;
LogEst nNew;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
Index *p = pLoop->u.btree.pIndex;
int nEq = pLoop->u.btree.nEq;
- if( p->nSample>0 && nEq<p->nSampleCol
- && OptimizationEnabled(pParse->db, SQLITE_Stat34)
+ if( p->nSample>0 && ALWAYS(nEq<p->nSampleCol)
+ && OptimizationEnabled(pParse->db, SQLITE_Stat4)
){
if( nEq==pBuilder->nRecValid ){
UnpackedRecord *pRec = pBuilder->pRec;
@@ -142166,7 +142862,7 @@ static int whereRangeScanEst(
/* TUNING: If both iUpper and iLower are derived from the same
** sample, then assume they are 4x more selective. This brings
** the estimated selectivity more in line with what it would be
- ** if estimated without the use of STAT3/4 tables. */
+ ** if estimated without the use of STAT4 tables. */
if( iLwrIdx==iUprIdx ) nNew -= 20; assert( 20==sqlite3LogEst(4) );
}else{
nNew = 10; assert( 10==sqlite3LogEst(2) );
@@ -142215,12 +142911,12 @@ static int whereRangeScanEst(
return rc;
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Estimate the number of rows that will be returned based on
** an equality constraint x=VALUE and where that VALUE occurs in
** the histogram data. This only works when x is the left-most
-** column of an index and sqlite_stat3 histogram data is available
+** column of an index and sqlite_stat4 histogram data is available
** for that index. When pExpr==NULL that means the constraint is
** "x IS NULL" instead of "x=VALUE".
**
@@ -142278,9 +142974,9 @@ static int whereEqualScanEst(
return rc;
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
/*
** Estimate the number of rows that will be returned based on
** an IN constraint where the right-hand side of the IN operator
@@ -142327,7 +143023,7 @@ static int whereInScanEst(
assert( pBuilder->nRecValid==nRecValid );
return rc;
}
-#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
+#endif /* SQLITE_ENABLE_STAT4 */
#ifdef WHERETRACE_ENABLED
@@ -142859,11 +143555,12 @@ static void whereLoopOutputAdjust(
){
WhereTerm *pTerm, *pX;
Bitmask notAllowed = ~(pLoop->prereq|pLoop->maskSelf);
- int i, j, k;
+ int i, j;
LogEst iReduce = 0; /* pLoop->nOut should not exceed nRow-iReduce */
assert( (pLoop->wsFlags & WHERE_AUTO_INDEX)==0 );
for(i=pWC->nTerm, pTerm=pWC->a; i>0; i--, pTerm++){
+ assert( pTerm!=0 );
if( (pTerm->wtFlags & TERM_VIRTUAL)!=0 ) break;
if( (pTerm->prereqAll & pLoop->maskSelf)==0 ) continue;
if( (pTerm->prereqAll & notAllowed)!=0 ) continue;
@@ -142884,6 +143581,7 @@ static void whereLoopOutputAdjust(
pLoop->nOut--;
if( pTerm->eOperator&(WO_EQ|WO_IS) ){
Expr *pRight = pTerm->pExpr->pRight;
+ int k = 0;
testcase( pTerm->pExpr->op==TK_IS );
if( sqlite3ExprIsInteger(pRight, &k) && k>=(-1) && k<=1 ){
k = 10;
@@ -143047,7 +143745,7 @@ static int whereLoopAddBtreeIndex(
LogEst rCostIdx;
LogEst nOutUnadjusted; /* nOut before IN() and WHERE adjustments */
int nIn = 0;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
int nRecValid = pBuilder->nRecValid;
#endif
if( (eOp==WO_ISNULL || (pTerm->wtFlags&TERM_VNULL)!=0)
@@ -143108,8 +143806,6 @@ static int whereLoopAddBtreeIndex(
}else if( ALWAYS(pExpr->x.pList && pExpr->x.pList->nExpr) ){
/* "x IN (value, value, ...)" */
nIn = sqlite3LogEst(pExpr->x.pList->nExpr);
- assert( nIn>0 ); /* RHS always has 2 or more terms... The parser
- ** changes "x IN (?)" into "x=?". */
}
if( pProbe->hasStat1 ){
LogEst M, logK, safetyMargin;
@@ -143205,7 +143901,7 @@ static int whereLoopAddBtreeIndex(
** the value of pNew->nOut to account for pTerm (but not nIn/nInMul). */
assert( pNew->nOut==saved_nOut );
if( pNew->wsFlags & WHERE_COLUMN_RANGE ){
- /* Adjust nOut using stat3/stat4 data. Or, if there is no stat3/stat4
+ /* Adjust nOut using stat4 data. Or, if there is no stat4
** data, using some other estimate. */
whereRangeScanEst(pParse, pBuilder, pBtm, pTop, pNew);
}else{
@@ -143219,13 +143915,13 @@ static int whereLoopAddBtreeIndex(
pNew->nOut += pTerm->truthProb;
pNew->nOut -= nIn;
}else{
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
tRowcnt nOut = 0;
if( nInMul==0
&& pProbe->nSample
&& pNew->u.btree.nEq<=pProbe->nSampleCol
&& ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
- && OptimizationEnabled(db, SQLITE_Stat34)
+ && OptimizationEnabled(db, SQLITE_Stat4)
){
Expr *pExpr = pTerm->pExpr;
if( (eOp & (WO_EQ|WO_ISNULL|WO_IS))!=0 ){
@@ -143288,7 +143984,7 @@ static int whereLoopAddBtreeIndex(
whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nInMul+nIn);
}
pNew->nOut = saved_nOut;
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
pBuilder->nRecValid = nRecValid;
#endif
}
@@ -143361,7 +144057,7 @@ static int indexMightHelpWithOrderBy(
if( pIndex->bUnordered ) return 0;
if( (pOB = pBuilder->pWInfo->pOrderBy)==0 ) return 0;
for(ii=0; ii<pOB->nExpr; ii++){
- Expr *pExpr = sqlite3ExprSkipCollate(pOB->a[ii].pExpr);
+ Expr *pExpr = sqlite3ExprSkipCollateAndLikely(pOB->a[ii].pExpr);
if( pExpr->op==TK_COLUMN && pExpr->iTable==iCursor ){
if( pExpr->iColumn<0 ) return 1;
for(jj=0; jj<pIndex->nKeyCol; jj++){
@@ -143392,7 +144088,9 @@ static int whereUsablePartialIndex(int iTab, WhereClause *pWC, Expr *pWhere){
}
if( pParse->db->flags & SQLITE_EnableQPSG ) pParse = 0;
for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){
- Expr *pExpr = pTerm->pExpr;
+ Expr *pExpr;
+ if( pTerm->wtFlags & TERM_NOPARTIDX ) continue;
+ pExpr = pTerm->pExpr;
if( (!ExprHasProperty(pExpr, EP_FromJoin) || pExpr->iRightJoinTable==iTab)
&& sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab)
){
@@ -143661,7 +144359,7 @@ static int whereLoopAddBtree(
** plan */
pTab->tabFlags |= TF_StatsUsed;
}
-#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+#ifdef SQLITE_ENABLE_STAT4
sqlite3Stat4ProbeFree(pBuilder->pRec);
pBuilder->nRecValid = 0;
pBuilder->pRec = 0;
@@ -144289,8 +144987,8 @@ static i8 wherePathSatisfiesOrderBy(
if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
if( pLoop->u.vtab.isOrdered ) obSat = obDone;
break;
- }else{
- pLoop->u.btree.nIdxCol = 0;
+ }else if( wctrlFlags & WHERE_DISTINCTBY ){
+ pLoop->u.btree.nDistinctCol = 0;
}
iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor;
@@ -144301,7 +144999,7 @@ static i8 wherePathSatisfiesOrderBy(
*/
for(i=0; i<nOrderBy; i++){
if( MASKBIT(i) & obSat ) continue;
- pOBExpr = sqlite3ExprSkipCollate(pOrderBy->a[i].pExpr);
+ pOBExpr = sqlite3ExprSkipCollateAndLikely(pOrderBy->a[i].pExpr);
if( pOBExpr->op!=TK_COLUMN ) continue;
if( pOBExpr->iTable!=iCur ) continue;
pTerm = sqlite3WhereFindTerm(&pWInfo->sWC, iCur, pOBExpr->iColumn,
@@ -144338,7 +145036,8 @@ static i8 wherePathSatisfiesOrderBy(
assert( nColumn==nKeyCol+1 || !HasRowid(pIndex->pTable) );
assert( pIndex->aiColumn[nColumn-1]==XN_ROWID
|| !HasRowid(pIndex->pTable));
- isOrderDistinct = IsUniqueIndex(pIndex);
+ isOrderDistinct = IsUniqueIndex(pIndex)
+ && (pLoop->wsFlags & WHERE_SKIPSCAN)==0;
}
/* Loop through all columns of the index and deal with the ones
@@ -144356,15 +145055,21 @@ static i8 wherePathSatisfiesOrderBy(
u16 eOp = pLoop->aLTerm[j]->eOperator;
/* Skip over == and IS and ISNULL terms. (Also skip IN terms when
- ** doing WHERE_ORDERBY_LIMIT processing).
+ ** doing WHERE_ORDERBY_LIMIT processing). Except, IS and ISNULL
+ ** terms imply that the index is not UNIQUE NOT NULL in which case
+ ** the loop need to be marked as not order-distinct because it can
+ ** have repeated NULL rows.
**
** If the current term is a column of an ((?,?) IN (SELECT...))
** expression for which the SELECT returns more than one column,
** check that it is the only column used by this loop. Otherwise,
** if it is one of two or more, none of the columns can be
- ** considered to match an ORDER BY term. */
+ ** considered to match an ORDER BY term.
+ */
if( (eOp & eqOpMask)!=0 ){
- if( eOp & WO_ISNULL ){
+ if( eOp & (WO_ISNULL|WO_IS) ){
+ testcase( eOp & WO_ISNULL );
+ testcase( eOp & WO_IS );
testcase( isOrderDistinct );
isOrderDistinct = 0;
}
@@ -144390,7 +145095,7 @@ static i8 wherePathSatisfiesOrderBy(
*/
if( pIndex ){
iColumn = pIndex->aiColumn[j];
- revIdx = pIndex->aSortOrder[j];
+ revIdx = pIndex->aSortOrder[j] & KEYINFO_ORDER_DESC;
if( iColumn==pIndex->pTable->iPKey ) iColumn = XN_ROWID;
}else{
iColumn = XN_ROWID;
@@ -144414,7 +145119,7 @@ static i8 wherePathSatisfiesOrderBy(
isMatch = 0;
for(i=0; bOnce && i<nOrderBy; i++){
if( MASKBIT(i) & obSat ) continue;
- pOBExpr = sqlite3ExprSkipCollate(pOrderBy->a[i].pExpr);
+ pOBExpr = sqlite3ExprSkipCollateAndLikely(pOrderBy->a[i].pExpr);
testcase( wctrlFlags & WHERE_GROUPBY );
testcase( wctrlFlags & WHERE_DISTINCTBY );
if( (wctrlFlags & (WHERE_GROUPBY|WHERE_DISTINCTBY))==0 ) bOnce = 0;
@@ -144432,7 +145137,9 @@ static i8 wherePathSatisfiesOrderBy(
pColl = sqlite3ExprNNCollSeq(pWInfo->pParse, pOrderBy->a[i].pExpr);
if( sqlite3StrICmp(pColl->zName, pIndex->azColl[j])!=0 ) continue;
}
- pLoop->u.btree.nIdxCol = j+1;
+ if( wctrlFlags & WHERE_DISTINCTBY ){
+ pLoop->u.btree.nDistinctCol = j+1;
+ }
isMatch = 1;
break;
}
@@ -144440,13 +145147,22 @@ static i8 wherePathSatisfiesOrderBy(
/* Make sure the sort order is compatible in an ORDER BY clause.
** Sort order is irrelevant for a GROUP BY clause. */
if( revSet ){
- if( (rev ^ revIdx)!=pOrderBy->a[i].sortOrder ) isMatch = 0;
+ if( (rev ^ revIdx)!=(pOrderBy->a[i].sortFlags&KEYINFO_ORDER_DESC) ){
+ isMatch = 0;
+ }
}else{
- rev = revIdx ^ pOrderBy->a[i].sortOrder;
+ rev = revIdx ^ (pOrderBy->a[i].sortFlags & KEYINFO_ORDER_DESC);
if( rev ) *pRevMask |= MASKBIT(iLoop);
revSet = 1;
}
}
+ if( isMatch && (pOrderBy->a[i].sortFlags & KEYINFO_ORDER_BIGNULL) ){
+ if( j==pLoop->u.btree.nEq ){
+ pLoop->wsFlags |= WHERE_BIGNULL_SORT;
+ }else{
+ isMatch = 0;
+ }
+ }
if( isMatch ){
if( iColumn==XN_ROWID ){
testcase( distinctColumns==0 );
@@ -145360,6 +146076,16 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
sqlite3DebugPrintf(", limit: %d", iAuxArg);
}
sqlite3DebugPrintf(")\n");
+ if( sqlite3WhereTrace & 0x100 ){
+ Select sSelect;
+ memset(&sSelect, 0, sizeof(sSelect));
+ sSelect.selFlags = SF_WhereBegin;
+ sSelect.pSrc = pTabList;
+ sSelect.pWhere = pWhere;
+ sSelect.pOrderBy = pOrderBy;
+ sSelect.pEList = pResultSet;
+ sqlite3TreeViewSelect(0, &sSelect, 0);
+ }
}
if( sqlite3WhereTrace & 0x100 ){ /* Display all terms of the WHERE clause */
sqlite3WhereClausePrint(sWLB.pWC);
@@ -145636,6 +146362,7 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
sqlite3VdbeSetP4KeyInfo(pParse, pIx);
if( (pLoop->wsFlags & WHERE_CONSTRAINT)!=0
&& (pLoop->wsFlags & (WHERE_COLUMN_RANGE|WHERE_SKIPSCAN))==0
+ && (pLoop->wsFlags & WHERE_BIGNULL_SORT)==0
&& (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)==0
&& pWInfo->eDistinct!=WHERE_DISTINCT_ORDERED
){
@@ -145753,7 +146480,7 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
&& i==pWInfo->nLevel-1 /* Ticket [ef9318757b152e3] 2017-10-21 */
&& (pLoop->wsFlags & WHERE_INDEXED)!=0
&& (pIdx = pLoop->u.btree.pIndex)->hasStat1
- && (n = pLoop->u.btree.nIdxCol)>0
+ && (n = pLoop->u.btree.nDistinctCol)>0
&& pIdx->aiRowLogEst[n]>=36
){
int r1 = pParse->nMem+1;
@@ -145777,6 +146504,11 @@ SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){
VdbeCoverageIf(v, pLevel->op==OP_Next);
VdbeCoverageIf(v, pLevel->op==OP_Prev);
VdbeCoverageIf(v, pLevel->op==OP_VNext);
+ if( pLevel->regBignull ){
+ sqlite3VdbeResolveLabel(v, pLevel->addrBignull);
+ sqlite3VdbeAddOp2(v, OP_DecrJumpZero, pLevel->regBignull, pLevel->p2-1);
+ VdbeCoverage(v);
+ }
#ifndef SQLITE_DISABLE_SKIPAHEAD_DISTINCT
if( addrSeek ) sqlite3VdbeJumpHere(v, addrSeek);
#endif
@@ -146716,6 +147448,8 @@ struct WindowRewrite {
static int selectWindowRewriteExprCb(Walker *pWalker, Expr *pExpr){
struct WindowRewrite *p = pWalker->u.pRewrite;
Parse *pParse = pWalker->pParse;
+ assert( p!=0 );
+ assert( p->pWin!=0 );
/* If this function is being called from within a scalar sub-select
** that used by the SELECT statement being processed, only process
@@ -146815,6 +147549,7 @@ static void selectWindowRewriteEList(
Walker sWalker;
WindowRewrite sRewrite;
+ assert( pWin!=0 );
memset(&sWalker, 0, sizeof(Walker));
memset(&sRewrite, 0, sizeof(WindowRewrite));
@@ -146853,7 +147588,7 @@ static ExprList *exprListAppendList(
pDup->flags &= ~(EP_IntValue|EP_IsTrue|EP_IsFalse);
}
pList = sqlite3ExprListAppend(pParse, pList, pDup);
- if( pList ) pList->a[nInit+i].sortOrder = pAppend->a[i].sortOrder;
+ if( pList ) pList->a[nInit+i].sortFlags = pAppend->a[i].sortFlags;
}
}
return pList;
@@ -146899,11 +147634,14 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
** redundant, remove the ORDER BY from the parent SELECT. */
pSort = sqlite3ExprListDup(db, pMWin->pPartition, 0);
pSort = exprListAppendList(pParse, pSort, pMWin->pOrderBy, 1);
- if( pSort && p->pOrderBy ){
+ if( pSort && p->pOrderBy && p->pOrderBy->nExpr<=pSort->nExpr ){
+ int nSave = pSort->nExpr;
+ pSort->nExpr = p->pOrderBy->nExpr;
if( sqlite3ExprListCompare(pSort, p->pOrderBy, -1)==0 ){
sqlite3ExprListDelete(db, p->pOrderBy);
p->pOrderBy = 0;
}
+ pSort->nExpr = nSave;
}
/* Assign a cursor number for the ephemeral table used to buffer rows.
@@ -146927,8 +147665,15 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
** window function - one for the accumulator, another for interim
** results. */
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
- pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
- pSublist = exprListAppendList(pParse, pSublist, pWin->pOwner->x.pList, 0);
+ ExprList *pArgs = pWin->pOwner->x.pList;
+ if( pWin->pFunc->funcFlags & SQLITE_FUNC_SUBTYPE ){
+ selectWindowRewriteEList(pParse, pMWin, pSrc, pArgs, pTab, &pSublist);
+ pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
+ pWin->bExprArgs = 1;
+ }else{
+ pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
+ pSublist = exprListAppendList(pParse, pSublist, pArgs, 0);
+ }
if( pWin->pFilter ){
Expr *pFilter = sqlite3ExprDup(db, pWin->pFilter, 0);
pSublist = sqlite3ExprListAppend(pParse, pSublist, pFilter);
@@ -146946,7 +147691,7 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
*/
if( pSublist==0 ){
pSublist = sqlite3ExprListAppend(pParse, 0,
- sqlite3ExprAlloc(db, TK_INTEGER, &sqlite3IntTokens[0], 0)
+ sqlite3Expr(db, TK_INTEGER, "0")
);
}
@@ -146959,7 +147704,7 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
p->pSrc->a[0].pSelect = pSub;
sqlite3SrcListAssignCursors(pParse, p->pSrc);
pSub->selFlags |= SF_Expanded;
- pTab2 = sqlite3ResultSetOfSelect(pParse, pSub);
+ pTab2 = sqlite3ResultSetOfSelect(pParse, pSub, SQLITE_AFF_NONE);
if( pTab2==0 ){
rc = SQLITE_NOMEM;
}else{
@@ -146983,10 +147728,23 @@ SQLITE_PRIVATE int sqlite3WindowRewrite(Parse *pParse, Select *p){
}
/*
+** Unlink the Window object from the Select to which it is attached,
+** if it is attached.
+*/
+SQLITE_PRIVATE void sqlite3WindowUnlinkFromSelect(Window *p){
+ if( p->ppThis ){
+ *p->ppThis = p->pNextWin;
+ if( p->pNextWin ) p->pNextWin->ppThis = p->ppThis;
+ p->ppThis = 0;
+ }
+}
+
+/*
** Free the Window object passed as the second argument.
*/
SQLITE_PRIVATE void sqlite3WindowDelete(sqlite3 *db, Window *p){
if( p ){
+ sqlite3WindowUnlinkFromSelect(p);
sqlite3ExprDelete(db, p->pFilter);
sqlite3ExprListDelete(db, p->pPartition);
sqlite3ExprListDelete(db, p->pOrderBy);
@@ -147164,17 +147922,14 @@ SQLITE_PRIVATE void sqlite3WindowChain(Parse *pParse, Window *pWin, Window *pLis
SQLITE_PRIVATE void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){
if( p ){
assert( p->op==TK_FUNCTION );
- /* This routine is only called for the parser. If pWin was not
- ** allocated due to an OOM, then the parser would fail before ever
- ** invoking this routine */
- if( ALWAYS(pWin) ){
- p->y.pWin = pWin;
- ExprSetProperty(p, EP_WinFunc);
- pWin->pOwner = p;
- if( p->flags & EP_Distinct ){
- sqlite3ErrorMsg(pParse,
- "DISTINCT is not supported for window functions");
- }
+ assert( pWin );
+ p->y.pWin = pWin;
+ ExprSetProperty(p, EP_WinFunc);
+ pWin->pOwner = p;
+ if( (p->flags & EP_Distinct) && pWin->eFrmType!=TK_FILTER ){
+ sqlite3ErrorMsg(pParse,
+ "DISTINCT is not supported for window functions"
+ );
}
}else{
sqlite3WindowDelete(pParse->db, pWin);
@@ -147182,10 +147937,29 @@ SQLITE_PRIVATE void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){
}
/*
+** Possibly link window pWin into the list at pSel->pWin (window functions
+** to be processed as part of SELECT statement pSel). The window is linked
+** in if either (a) there are no other windows already linked to this
+** SELECT, or (b) the windows already linked use a compatible window frame.
+*/
+SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin){
+ if( 0==pSel->pWin
+ || 0==sqlite3WindowCompare(0, pSel->pWin, pWin, 0)
+ ){
+ pWin->pNextWin = pSel->pWin;
+ if( pSel->pWin ){
+ pSel->pWin->ppThis = &pWin->pNextWin;
+ }
+ pSel->pWin = pWin;
+ pWin->ppThis = &pSel->pWin;
+ }
+}
+
+/*
** Return 0 if the two window objects are identical, or non-zero otherwise.
** Identical window objects can be processed in a single scan.
*/
-SQLITE_PRIVATE int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2){
+SQLITE_PRIVATE int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2, int bFilter){
if( p1->eFrmType!=p2->eFrmType ) return 1;
if( p1->eStart!=p2->eStart ) return 1;
if( p1->eEnd!=p2->eEnd ) return 1;
@@ -147194,6 +147968,9 @@ SQLITE_PRIVATE int sqlite3WindowCompare(Parse *pParse, Window *p1, Window *p2){
if( sqlite3ExprCompare(pParse, p1->pEnd, p2->pEnd, -1) ) return 1;
if( sqlite3ExprListCompare(p1->pPartition, p2->pPartition, -1) ) return 1;
if( sqlite3ExprListCompare(p1->pOrderBy, p2->pOrderBy, -1) ) return 1;
+ if( bFilter ){
+ if( sqlite3ExprCompare(pParse, p1->pFilter, p2->pFilter, -1) ) return 1;
+ }
return 0;
}
@@ -147245,8 +148022,8 @@ SQLITE_PRIVATE void sqlite3WindowCodeInit(Parse *pParse, Window *pMWin){
pWin->regApp = pParse->nMem+1;
pParse->nMem += 3;
if( pKeyInfo && pWin->pFunc->zName[1]=='i' ){
- assert( pKeyInfo->aSortOrder[0]==0 );
- pKeyInfo->aSortOrder[0] = 1;
+ assert( pKeyInfo->aSortFlags[0]==0 );
+ pKeyInfo->aSortFlags[0] = KEYINFO_ORDER_DESC;
}
sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pWin->csrApp, 2);
sqlite3VdbeAppendP4(v, pKeyInfo, P4_KEYINFO);
@@ -147331,6 +148108,108 @@ static int windowArgCount(Window *pWin){
return (pList ? pList->nExpr : 0);
}
+typedef struct WindowCodeArg WindowCodeArg;
+typedef struct WindowCsrAndReg WindowCsrAndReg;
+
+/*
+** See comments above struct WindowCodeArg.
+*/
+struct WindowCsrAndReg {
+ int csr; /* Cursor number */
+ int reg; /* First in array of peer values */
+};
+
+/*
+** A single instance of this structure is allocated on the stack by
+** sqlite3WindowCodeStep() and a pointer to it passed to the various helper
+** routines. This is to reduce the number of arguments required by each
+** helper function.
+**
+** regArg:
+** Each window function requires an accumulator register (just as an
+** ordinary aggregate function does). This variable is set to the first
+** in an array of accumulator registers - one for each window function
+** in the WindowCodeArg.pMWin list.
+**
+** eDelete:
+** The window functions implementation sometimes caches the input rows
+** that it processes in a temporary table. If it is not zero, this
+** variable indicates when rows may be removed from the temp table (in
+** order to reduce memory requirements - it would always be safe just
+** to leave them there). Possible values for eDelete are:
+**
+** WINDOW_RETURN_ROW:
+** An input row can be discarded after it is returned to the caller.
+**
+** WINDOW_AGGINVERSE:
+** An input row can be discarded after the window functions xInverse()
+** callbacks have been invoked in it.
+**
+** WINDOW_AGGSTEP:
+** An input row can be discarded after the window functions xStep()
+** callbacks have been invoked in it.
+**
+** start,current,end
+** Consider a window-frame similar to the following:
+**
+** (ORDER BY a, b GROUPS BETWEEN 2 PRECEDING AND 2 FOLLOWING)
+**
+** The windows functions implmentation caches the input rows in a temp
+** table, sorted by "a, b" (it actually populates the cache lazily, and
+** aggressively removes rows once they are no longer required, but that's
+** a mere detail). It keeps three cursors open on the temp table. One
+** (current) that points to the next row to return to the query engine
+** once its window function values have been calculated. Another (end)
+** points to the next row to call the xStep() method of each window function
+** on (so that it is 2 groups ahead of current). And a third (start) that
+** points to the next row to call the xInverse() method of each window
+** function on.
+**
+** Each cursor (start, current and end) consists of a VDBE cursor
+** (WindowCsrAndReg.csr) and an array of registers (starting at
+** WindowCodeArg.reg) that always contains a copy of the peer values
+** read from the corresponding cursor.
+**
+** Depending on the window-frame in question, all three cursors may not
+** be required. In this case both WindowCodeArg.csr and reg are set to
+** 0.
+*/
+struct WindowCodeArg {
+ Parse *pParse; /* Parse context */
+ Window *pMWin; /* First in list of functions being processed */
+ Vdbe *pVdbe; /* VDBE object */
+ int addrGosub; /* OP_Gosub to this address to return one row */
+ int regGosub; /* Register used with OP_Gosub(addrGosub) */
+ int regArg; /* First in array of accumulator registers */
+ int eDelete; /* See above */
+
+ WindowCsrAndReg start;
+ WindowCsrAndReg current;
+ WindowCsrAndReg end;
+};
+
+/*
+** Generate VM code to read the window frames peer values from cursor csr into
+** an array of registers starting at reg.
+*/
+static void windowReadPeerValues(
+ WindowCodeArg *p,
+ int csr,
+ int reg
+){
+ Window *pMWin = p->pMWin;
+ ExprList *pOrderBy = pMWin->pOrderBy;
+ if( pOrderBy ){
+ Vdbe *v = sqlite3GetVdbe(p->pParse);
+ ExprList *pPart = pMWin->pPartition;
+ int iColOff = pMWin->nBufferCol + (pPart ? pPart->nExpr : 0);
+ int i;
+ for(i=0; i<pOrderBy->nExpr; i++){
+ sqlite3VdbeAddOp3(v, OP_Column, csr, iColOff+i, reg+i);
+ }
+ }
+}
+
/*
** Generate VM code to invoke either xStep() (if bInverse is 0) or
** xInverse (if bInverse is non-zero) for each window function in the
@@ -147351,20 +148230,27 @@ static int windowArgCount(Window *pWin){
** number of rows in the current partition.
*/
static void windowAggStep(
- Parse *pParse,
+ WindowCodeArg *p,
Window *pMWin, /* Linked list of window functions */
int csr, /* Read arguments from this cursor */
int bInverse, /* True to invoke xInverse instead of xStep */
int reg /* Array of registers */
){
+ Parse *pParse = p->pParse;
Vdbe *v = sqlite3GetVdbe(pParse);
Window *pWin;
for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
FuncDef *pFunc = pWin->pFunc;
int regArg;
- int nArg = windowArgCount(pWin);
+ int nArg = pWin->bExprArgs ? 0 : windowArgCount(pWin);
int i;
+ assert( bInverse==0 || pWin->eStart!=TK_UNBOUNDED );
+
+ /* All OVER clauses in the same window function aggregate step must
+ ** be the same. */
+ assert( pWin==pMWin || sqlite3WindowCompare(pParse,pWin,pMWin,0)==0 );
+
for(i=0; i<nArg; i++){
if( i!=1 || pFunc->zName!=nth_valueName ){
sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+i, reg+i);
@@ -147402,14 +148288,30 @@ static void windowAggStep(
int addrIf = 0;
if( pWin->pFilter ){
int regTmp;
- assert( nArg==0 || nArg==pWin->pOwner->x.pList->nExpr );
- assert( nArg || pWin->pOwner->x.pList==0 );
+ assert( pWin->bExprArgs || !nArg ||nArg==pWin->pOwner->x.pList->nExpr );
+ assert( pWin->bExprArgs || nArg ||pWin->pOwner->x.pList==0 );
regTmp = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp);
addrIf = sqlite3VdbeAddOp3(v, OP_IfNot, regTmp, 0, 1);
VdbeCoverage(v);
sqlite3ReleaseTempReg(pParse, regTmp);
}
+
+ if( pWin->bExprArgs ){
+ int iStart = sqlite3VdbeCurrentAddr(v);
+ VdbeOp *pOp, *pEnd;
+
+ nArg = pWin->pOwner->x.pList->nExpr;
+ regArg = sqlite3GetTempRange(pParse, nArg);
+ sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0);
+
+ pEnd = sqlite3VdbeGetOp(v, -1);
+ for(pOp=sqlite3VdbeGetOp(v, iStart); pOp<=pEnd; pOp++){
+ if( pOp->opcode==OP_Column && pOp->p1==pWin->iEphCsr ){
+ pOp->p1 = csr;
+ }
+ }
+ }
if( pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
CollSeq *pColl;
assert( nArg>0 );
@@ -147420,32 +148322,14 @@ static void windowAggStep(
bInverse, regArg, pWin->regAccum);
sqlite3VdbeAppendP4(v, pFunc, P4_FUNCDEF);
sqlite3VdbeChangeP5(v, (u8)nArg);
+ if( pWin->bExprArgs ){
+ sqlite3ReleaseTempRange(pParse, regArg, nArg);
+ }
if( addrIf ) sqlite3VdbeJumpHere(v, addrIf);
}
}
}
-typedef struct WindowCodeArg WindowCodeArg;
-typedef struct WindowCsrAndReg WindowCsrAndReg;
-struct WindowCsrAndReg {
- int csr;
- int reg;
-};
-
-struct WindowCodeArg {
- Parse *pParse;
- Window *pMWin;
- Vdbe *pVdbe;
- int regGosub;
- int addrGosub;
- int regArg;
- int eDelete;
-
- WindowCsrAndReg start;
- WindowCsrAndReg current;
- WindowCsrAndReg end;
-};
-
/*
** Values that may be passed as the second argument to windowCodeOp().
*/
@@ -147454,28 +148338,6 @@ struct WindowCodeArg {
#define WINDOW_AGGSTEP 3
/*
-** Generate VM code to read the window frames peer values from cursor csr into
-** an array of registers starting at reg.
-*/
-static void windowReadPeerValues(
- WindowCodeArg *p,
- int csr,
- int reg
-){
- Window *pMWin = p->pMWin;
- ExprList *pOrderBy = pMWin->pOrderBy;
- if( pOrderBy ){
- Vdbe *v = sqlite3GetVdbe(p->pParse);
- ExprList *pPart = pMWin->pPartition;
- int iColOff = pMWin->nBufferCol + (pPart ? pPart->nExpr : 0);
- int i;
- for(i=0; i<pOrderBy->nExpr; i++){
- sqlite3VdbeAddOp3(v, OP_Column, csr, iColOff+i, reg+i);
- }
- }
-}
-
-/*
** Generate VM code to invoke either xValue() (bFin==0) or xFinalize()
** (bFin==1) for each window function in the linked list starting at
** pMWin. Or, for built-in window-functions that do not use the standard
@@ -147535,8 +148397,12 @@ static void windowFullScan(WindowCodeArg *p){
int lblNext;
int lblBrk;
int addrNext;
- int csr = pMWin->csrApp;
+ int csr;
+
+ VdbeModuleComment((v, "windowFullScan begin"));
+ assert( pMWin!=0 );
+ csr = pMWin->csrApp;
nPeer = (pMWin->pOrderBy ? pMWin->pOrderBy->nExpr : 0);
lblNext = sqlite3VdbeMakeLabel(pParse);
@@ -147591,7 +148457,7 @@ static void windowFullScan(WindowCodeArg *p){
if( addrEq ) sqlite3VdbeJumpHere(v, addrEq);
}
- windowAggStep(pParse, pMWin, csr, 0, p->regArg);
+ windowAggStep(p, pMWin, csr, 0, p->regArg);
sqlite3VdbeResolveLabel(v, lblNext);
sqlite3VdbeAddOp2(v, OP_Next, csr, addrNext);
@@ -147606,6 +148472,7 @@ static void windowFullScan(WindowCodeArg *p){
}
windowAggFinal(p, 1);
+ VdbeModuleComment((v, "windowFullScan end"));
}
/*
@@ -147780,34 +148647,46 @@ static void windowIfNewPeer(
/*
** This function is called as part of generating VM programs for RANGE
** offset PRECEDING/FOLLOWING frame boundaries. Assuming "ASC" order for
-** the ORDER BY term in the window, it generates code equivalent to:
+** the ORDER BY term in the window, and that argument op is OP_Ge, it generates
+** code equivalent to:
**
** if( csr1.peerVal + regVal >= csr2.peerVal ) goto lbl;
**
-** A special type of arithmetic is used such that if csr.peerVal is not
-** a numeric type (real or integer), then the result of the addition is
-** a copy of csr1.peerVal.
+** The value of parameter op may also be OP_Gt or OP_Le. In these cases the
+** operator in the above pseudo-code is replaced with ">" or "<=", respectively.
+**
+** If the sort-order for the ORDER BY term in the window is DESC, then the
+** comparison is reversed. Instead of adding regVal to csr1.peerVal, it is
+** subtracted. And the comparison operator is inverted to - ">=" becomes "<=",
+** ">" becomes "<", and so on. So, with DESC sort order, if the argument op
+** is OP_Ge, the generated code is equivalent to:
+**
+** if( csr1.peerVal - regVal <= csr2.peerVal ) goto lbl;
+**
+** A special type of arithmetic is used such that if csr1.peerVal is not
+** a numeric type (real or integer), then the result of the addition addition
+** or subtraction is a a copy of csr1.peerVal.
*/
static void windowCodeRangeTest(
WindowCodeArg *p,
- int op, /* OP_Ge or OP_Gt */
- int csr1,
- int regVal,
- int csr2,
- int lbl
+ int op, /* OP_Ge, OP_Gt, or OP_Le */
+ int csr1, /* Cursor number for cursor 1 */
+ int regVal, /* Register containing non-negative number */
+ int csr2, /* Cursor number for cursor 2 */
+ int lbl /* Jump destination if condition is true */
){
Parse *pParse = p->pParse;
Vdbe *v = sqlite3GetVdbe(pParse);
- int reg1 = sqlite3GetTempReg(pParse);
- int reg2 = sqlite3GetTempReg(pParse);
- int arith = OP_Add;
- int addrGe;
-
- int regString = ++pParse->nMem;
+ ExprList *pOrderBy = p->pMWin->pOrderBy; /* ORDER BY clause for window */
+ int reg1 = sqlite3GetTempReg(pParse); /* Reg. for csr1.peerVal+regVal */
+ int reg2 = sqlite3GetTempReg(pParse); /* Reg. for csr2.peerVal */
+ int regString = ++pParse->nMem; /* Reg. for constant value '' */
+ int arith = OP_Add; /* OP_Add or OP_Subtract */
+ int addrGe; /* Jump destination */
assert( op==OP_Ge || op==OP_Gt || op==OP_Le );
- assert( p->pMWin->pOrderBy && p->pMWin->pOrderBy->nExpr==1 );
- if( p->pMWin->pOrderBy->a[0].sortOrder ){
+ assert( pOrderBy && pOrderBy->nExpr==1 );
+ if( pOrderBy->a[0].sortFlags & KEYINFO_ORDER_DESC ){
switch( op ){
case OP_Ge: op = OP_Le; break;
case OP_Gt: op = OP_Lt; break;
@@ -147816,27 +148695,95 @@ static void windowCodeRangeTest(
arith = OP_Subtract;
}
+ /* Read the peer-value from each cursor into a register */
windowReadPeerValues(p, csr1, reg1);
windowReadPeerValues(p, csr2, reg2);
- /* Check if the peer value for csr1 value is a text or blob by comparing
- ** it to the smallest possible string - ''. If it is, jump over the
- ** OP_Add or OP_Subtract operation and proceed directly to the comparison. */
+ VdbeModuleComment((v, "CodeRangeTest: if( R%d %s R%d %s R%d ) goto lbl",
+ reg1, (arith==OP_Add ? "+" : "-"), regVal,
+ ((op==OP_Ge) ? ">=" : (op==OP_Le) ? "<=" : (op==OP_Gt) ? ">" : "<"), reg2
+ ));
+
+ /* Register reg1 currently contains csr1.peerVal (the peer-value from csr1).
+ ** This block adds (or subtracts for DESC) the numeric value in regVal
+ ** from it. Or, if reg1 is not numeric (it is a NULL, a text value or a blob),
+ ** then leave reg1 as it is. In pseudo-code, this is implemented as:
+ **
+ ** if( reg1>='' ) goto addrGe;
+ ** reg1 = reg1 +/- regVal
+ ** addrGe:
+ **
+ ** Since all strings and blobs are greater-than-or-equal-to an empty string,
+ ** the add/subtract is skipped for these, as required. If reg1 is a NULL,
+ ** then the arithmetic is performed, but since adding or subtracting from
+ ** NULL is always NULL anyway, this case is handled as required too. */
sqlite3VdbeAddOp4(v, OP_String8, 0, regString, 0, "", P4_STATIC);
addrGe = sqlite3VdbeAddOp3(v, OP_Ge, regString, 0, reg1);
VdbeCoverage(v);
sqlite3VdbeAddOp3(v, arith, regVal, reg1, reg1);
sqlite3VdbeJumpHere(v, addrGe);
+
+ /* If the BIGNULL flag is set for the ORDER BY, then it is required to
+ ** consider NULL values to be larger than all other values, instead of
+ ** the usual smaller. The VDBE opcodes OP_Ge and so on do not handle this
+ ** (and adding that capability causes a performance regression), so
+ ** instead if the BIGNULL flag is set then cases where either reg1 or
+ ** reg2 are NULL are handled separately in the following block. The code
+ ** generated is equivalent to:
+ **
+ ** if( reg1 IS NULL ){
+ ** if( op==OP_Ge ) goto lbl;
+ ** if( op==OP_Gt && reg2 IS NOT NULL ) goto lbl;
+ ** if( op==OP_Le && reg2 IS NULL ) goto lbl;
+ ** }else if( reg2 IS NULL ){
+ ** if( op==OP_Le ) goto lbl;
+ ** }
+ **
+ ** Additionally, if either reg1 or reg2 are NULL but the jump to lbl is
+ ** not taken, control jumps over the comparison operator coded below this
+ ** block. */
+ if( pOrderBy->a[0].sortFlags & KEYINFO_ORDER_BIGNULL ){
+ /* This block runs if reg1 contains a NULL. */
+ int addr = sqlite3VdbeAddOp1(v, OP_NotNull, reg1); VdbeCoverage(v);
+ switch( op ){
+ case OP_Ge:
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, lbl);
+ break;
+ case OP_Gt:
+ sqlite3VdbeAddOp2(v, OP_NotNull, reg2, lbl);
+ VdbeCoverage(v);
+ break;
+ case OP_Le:
+ sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl);
+ VdbeCoverage(v);
+ break;
+ default: assert( op==OP_Lt ); /* no-op */ break;
+ }
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3VdbeCurrentAddr(v)+3);
+
+ /* This block runs if reg1 is not NULL, but reg2 is. */
+ sqlite3VdbeJumpHere(v, addr);
+ sqlite3VdbeAddOp2(v, OP_IsNull, reg2, lbl); VdbeCoverage(v);
+ if( op==OP_Gt || op==OP_Ge ){
+ sqlite3VdbeChangeP2(v, -1, sqlite3VdbeCurrentAddr(v)+1);
+ }
+ }
+
+ /* Compare registers reg2 and reg1, taking the jump if required. Note that
+ ** control skips over this test if the BIGNULL flag is set and either
+ ** reg1 or reg2 contain a NULL value. */
sqlite3VdbeAddOp3(v, op, reg2, lbl, reg1); VdbeCoverage(v);
sqlite3VdbeChangeP5(v, SQLITE_NULLEQ);
+
assert( op==OP_Ge || op==OP_Gt || op==OP_Lt || op==OP_Le );
testcase(op==OP_Ge); VdbeCoverageIf(v, op==OP_Ge);
testcase(op==OP_Lt); VdbeCoverageIf(v, op==OP_Lt);
testcase(op==OP_Le); VdbeCoverageIf(v, op==OP_Le);
testcase(op==OP_Gt); VdbeCoverageIf(v, op==OP_Gt);
-
sqlite3ReleaseTempReg(pParse, reg1);
sqlite3ReleaseTempReg(pParse, reg2);
+
+ VdbeModuleComment((v, "CodeRangeTest: end"));
}
/*
@@ -147856,9 +148803,7 @@ static int windowCodeOp(
Window *pMWin = p->pMWin;
int ret = 0;
Vdbe *v = p->pVdbe;
- int addrIf = 0;
int addrContinue = 0;
- int addrGoto = 0;
int bPeer = (pMWin->eFrmType!=TK_ROWS);
int lblDone = sqlite3VdbeMakeLabel(pParse);
@@ -147891,7 +148836,7 @@ static int windowCodeOp(
);
}
}else{
- addrIf = sqlite3VdbeAddOp3(v, OP_IfPos, regCountdown, 0, 1);
+ sqlite3VdbeAddOp3(v, OP_IfPos, regCountdown, lblDone, 1);
VdbeCoverage(v);
}
}
@@ -147900,6 +148845,25 @@ static int windowCodeOp(
windowAggFinal(p, 0);
}
addrContinue = sqlite3VdbeCurrentAddr(v);
+
+ /* If this is a (RANGE BETWEEN a FOLLOWING AND b FOLLOWING) or
+ ** (RANGE BETWEEN b PRECEDING AND a PRECEDING) frame, ensure the
+ ** start cursor does not advance past the end cursor within the
+ ** temporary table. It otherwise might, if (a>b). */
+ if( pMWin->eStart==pMWin->eEnd && regCountdown
+ && pMWin->eFrmType==TK_RANGE && op==WINDOW_AGGINVERSE
+ ){
+ int regRowid1 = sqlite3GetTempReg(pParse);
+ int regRowid2 = sqlite3GetTempReg(pParse);
+ sqlite3VdbeAddOp2(v, OP_Rowid, p->start.csr, regRowid1);
+ sqlite3VdbeAddOp2(v, OP_Rowid, p->end.csr, regRowid2);
+ sqlite3VdbeAddOp3(v, OP_Ge, regRowid2, lblDone, regRowid1);
+ VdbeCoverage(v);
+ sqlite3ReleaseTempReg(pParse, regRowid1);
+ sqlite3ReleaseTempReg(pParse, regRowid2);
+ assert( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_FOLLOWING );
+ }
+
switch( op ){
case WINDOW_RETURN_ROW:
csr = p->current.csr;
@@ -147914,7 +148878,7 @@ static int windowCodeOp(
assert( pMWin->regEndRowid );
sqlite3VdbeAddOp2(v, OP_AddImm, pMWin->regStartRowid, 1);
}else{
- windowAggStep(pParse, pMWin, csr, 1, p->regArg);
+ windowAggStep(p, pMWin, csr, 1, p->regArg);
}
break;
@@ -147926,7 +148890,7 @@ static int windowCodeOp(
assert( pMWin->regEndRowid );
sqlite3VdbeAddOp2(v, OP_AddImm, pMWin->regEndRowid, 1);
}else{
- windowAggStep(pParse, pMWin, csr, 0, p->regArg);
+ windowAggStep(p, pMWin, csr, 0, p->regArg);
}
break;
}
@@ -147944,7 +148908,7 @@ static int windowCodeOp(
sqlite3VdbeAddOp2(v, OP_Next, csr, sqlite3VdbeCurrentAddr(v)+1+bPeer);
VdbeCoverage(v);
if( bPeer ){
- addrGoto = sqlite3VdbeAddOp0(v, OP_Goto);
+ sqlite3VdbeAddOp2(v, OP_Goto, 0, lblDone);
}
}
@@ -147960,8 +148924,6 @@ static int windowCodeOp(
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrNextRange);
}
sqlite3VdbeResolveLabel(v, lblDone);
- if( addrGoto ) sqlite3VdbeJumpHere(v, addrGoto);
- if( addrIf ) sqlite3VdbeJumpHere(v, addrIf);
return ret;
}
@@ -147977,6 +148939,7 @@ SQLITE_PRIVATE Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){
pNew = sqlite3DbMallocZero(db, sizeof(Window));
if( pNew ){
pNew->zName = sqlite3DbStrDup(db, p->zName);
+ pNew->zBase = sqlite3DbStrDup(db, p->zBase);
pNew->pFilter = sqlite3ExprDup(db, p->pFilter, 0);
pNew->pFunc = p->pFunc;
pNew->pPartition = sqlite3ExprListDup(db, p->pPartition, 0);
@@ -147985,9 +148948,11 @@ SQLITE_PRIVATE Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){
pNew->eEnd = p->eEnd;
pNew->eStart = p->eStart;
pNew->eExclude = p->eExclude;
+ pNew->regResult = p->regResult;
pNew->pStart = sqlite3ExprDup(db, p->pStart, 0);
pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0);
pNew->pOwner = pOwner;
+ pNew->bImplicitFrame = p->bImplicitFrame;
}
}
return pNew;
@@ -148311,7 +149276,7 @@ static int windowExprGtZero(Parse *pParse, Expr *pExpr){
** regEnd = <expr2>
** regStart = <expr1>
** }else{
-** if( (csrEnd.key + regEnd) <= csrCurrent.key ){
+** while( (csrEnd.key + regEnd) <= csrCurrent.key ){
** AGGSTEP
** }
** while( (csrStart.key + regStart) < csrCurrent.key ){
@@ -148384,8 +149349,6 @@ SQLITE_PRIVATE void sqlite3WindowCodeStep(
int addrGosubFlush = 0; /* Address of OP_Gosub to flush: */
int addrInteger = 0; /* Address of OP_Integer */
int addrEmpty; /* Address of OP_Rewind in flush: */
- int regStart = 0; /* Value of <expr> PRECEDING */
- int regEnd = 0; /* Value of <expr> FOLLOWING */
int regNew; /* Array of registers holding new input row */
int regRecord; /* regNew array in record form */
int regRowid; /* Rowid for regRecord in eph table */
@@ -148394,6 +149357,8 @@ SQLITE_PRIVATE void sqlite3WindowCodeStep(
int regFlushPart = 0; /* Register for "Gosub flush_partition" */
WindowCodeArg s; /* Context object for sub-routines */
int lblWhereEnd; /* Label just before sqlite3WhereEnd() code */
+ int regStart = 0; /* Value of <expr> PRECEDING */
+ int regEnd = 0; /* Value of <expr> FOLLOWING */
assert( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_CURRENT
|| pMWin->eStart==TK_FOLLOWING || pMWin->eStart==TK_UNBOUNDED
@@ -148524,14 +149489,14 @@ SQLITE_PRIVATE void sqlite3WindowCodeStep(
if( regStart ){
sqlite3ExprCode(pParse, pMWin->pStart, regStart);
- windowCheckValue(pParse, regStart, 0 + (pMWin->eFrmType==TK_RANGE ? 3 : 0));
+ windowCheckValue(pParse, regStart, 0 + (pMWin->eFrmType==TK_RANGE?3:0));
}
if( regEnd ){
sqlite3ExprCode(pParse, pMWin->pEnd, regEnd);
- windowCheckValue(pParse, regEnd, 1 + (pMWin->eFrmType==TK_RANGE ? 3 : 0));
+ windowCheckValue(pParse, regEnd, 1 + (pMWin->eFrmType==TK_RANGE?3:0));
}
- if( pMWin->eStart==pMWin->eEnd && regStart ){
+ if( pMWin->eFrmType!=TK_RANGE && pMWin->eStart==pMWin->eEnd && regStart ){
int op = ((pMWin->eStart==TK_FOLLOWING) ? OP_Ge : OP_Le);
int addrGe = sqlite3VdbeAddOp3(v, op, regStart, 0, regEnd);
VdbeCoverageNeverNullIf(v, op==OP_Ge); /* NeverNull because bound <expr> */
@@ -148791,6 +149756,7 @@ static void disableLookaside(Parse *pParse){
** SQLITE_LIMIT_COMPOUND_SELECT.
*/
static void parserDoubleLinkSelect(Parse *pParse, Select *p){
+ assert( p!=0 );
if( p->pPrior ){
Select *pNext = 0, *pLoop;
int mxSelect, cnt = 0;
@@ -148817,7 +149783,7 @@ static void disableLookaside(Parse *pParse){
if( p ){
/* memset(p, 0, sizeof(Expr)); */
p->op = (u8)op;
- p->affinity = 0;
+ p->affExpr = 0;
p->flags = EP_Leaf;
p->iAgg = -1;
p->pLeft = p->pRight = 0;
@@ -148944,28 +149910,28 @@ static void disableLookaside(Parse *pParse){
#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned short int
-#define YYNOCODE 302
+#define YYNOCODE 307
#define YYACTIONTYPE unsigned short int
-#define YYWILDCARD 95
+#define YYWILDCARD 98
#define sqlite3ParserTOKENTYPE Token
typedef union {
int yyinit;
sqlite3ParserTOKENTYPE yy0;
- TriggerStep* yy11;
- IdList* yy76;
- ExprList* yy94;
- Upsert* yy95;
- int yy100;
- Expr* yy102;
- struct {int value; int mask;} yy199;
- u8 yy218;
- With* yy243;
- struct TrigEvent yy298;
- Window* yy379;
- struct FrameBound yy389;
- Select* yy391;
- SrcList* yy407;
- const char* yy528;
+ const char* yy8;
+ Select* yy25;
+ int yy32;
+ Expr* yy46;
+ struct FrameBound yy57;
+ u8 yy118;
+ ExprList* yy138;
+ Upsert* yy288;
+ With* yy297;
+ IdList* yy406;
+ Window* yy455;
+ struct {int value; int mask;} yy495;
+ TriggerStep* yy527;
+ struct TrigEvent yy572;
+ SrcList* yy609;
} YYMINORTYPE;
#ifndef YYSTACKDEPTH
#define YYSTACKDEPTH 100
@@ -148981,17 +149947,17 @@ typedef union {
#define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse;
#define sqlite3ParserCTX_STORE yypParser->pParse=pParse;
#define YYFALLBACK 1
-#define YYNSTATE 540
-#define YYNRULE 376
-#define YYNTOKEN 176
-#define YY_MAX_SHIFT 539
-#define YY_MIN_SHIFTREDUCE 783
-#define YY_MAX_SHIFTREDUCE 1158
-#define YY_ERROR_ACTION 1159
-#define YY_ACCEPT_ACTION 1160
-#define YY_NO_ACTION 1161
-#define YY_MIN_REDUCE 1162
-#define YY_MAX_REDUCE 1537
+#define YYNSTATE 543
+#define YYNRULE 381
+#define YYNTOKEN 179
+#define YY_MAX_SHIFT 542
+#define YY_MIN_SHIFTREDUCE 790
+#define YY_MAX_SHIFTREDUCE 1170
+#define YY_ERROR_ACTION 1171
+#define YY_ACCEPT_ACTION 1172
+#define YY_NO_ACTION 1173
+#define YY_MIN_REDUCE 1174
+#define YY_MAX_REDUCE 1554
/************* End control #defines *******************************************/
#define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])))
@@ -149058,601 +150024,573 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (2142)
+#define YY_ACTTAB_COUNT (1913)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 112, 109, 209, 112, 109, 209, 1160, 1, 1, 539,
- /* 10 */ 2, 1164, 490, 1193, 1293, 534, 289, 1196, 134, 383,
- /* 20 */ 1485, 1428, 1164, 1229, 1208, 1242, 1195, 289, 491, 134,
- /* 30 */ 373, 915, 1229, 443, 16, 16, 1242, 70, 70, 916,
- /* 40 */ 242, 1292, 296, 119, 120, 110, 1136, 1136, 981, 984,
- /* 50 */ 974, 974, 117, 117, 118, 118, 118, 118, 264, 264,
- /* 60 */ 190, 264, 264, 264, 264, 112, 109, 209, 362, 264,
- /* 70 */ 264, 531, 376, 497, 531, 1134, 531, 1501, 239, 206,
- /* 80 */ 338, 9, 531, 242, 219, 1203, 118, 118, 118, 118,
- /* 90 */ 111, 439, 112, 109, 209, 219, 116, 116, 116, 116,
- /* 100 */ 115, 115, 114, 114, 114, 113, 414, 115, 115, 114,
- /* 110 */ 114, 114, 113, 414, 418, 12, 383, 400, 1134, 114,
- /* 120 */ 114, 114, 113, 414, 1115, 418, 1134, 1392, 116, 116,
- /* 130 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 961,
- /* 140 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
- /* 150 */ 117, 118, 118, 118, 118, 952, 534, 414, 941, 951,
- /* 160 */ 1481, 539, 2, 1164, 1505, 534, 160, 175, 289, 1134,
- /* 170 */ 134, 434, 312, 297, 1115, 1116, 1117, 1242, 70, 70,
- /* 180 */ 1089, 338, 1089, 118, 118, 118, 118, 42, 42, 448,
- /* 190 */ 951, 951, 953, 116, 116, 116, 116, 115, 115, 114,
- /* 200 */ 114, 114, 113, 414, 1115, 311, 264, 264, 82, 441,
- /* 210 */ 264, 264, 190, 383, 284, 12, 288, 525, 407, 531,
- /* 220 */ 96, 159, 458, 531, 371, 116, 116, 116, 116, 115,
- /* 230 */ 115, 114, 114, 114, 113, 414, 219, 119, 120, 110,
- /* 240 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
- /* 250 */ 118, 118, 511, 1477, 1115, 1116, 1117, 113, 414, 534,
- /* 260 */ 528, 528, 528, 121, 534, 1427, 418, 116, 116, 116,
- /* 270 */ 116, 115, 115, 114, 114, 114, 113, 414, 1464, 351,
- /* 280 */ 270, 42, 42, 383, 187, 1115, 70, 70, 533, 433,
- /* 290 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
- /* 300 */ 414, 534, 1339, 405, 159, 411, 410, 119, 120, 110,
- /* 310 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
- /* 320 */ 118, 118, 285, 42, 42, 349, 411, 410, 514, 479,
- /* 330 */ 1458, 79, 1084, 6, 1140, 1115, 1116, 1117, 480, 1142,
- /* 340 */ 501, 1115, 1084, 123, 238, 1084, 136, 1141, 1234, 1234,
- /* 350 */ 1143, 383, 1143, 1115, 167, 426, 80, 447, 512, 1451,
- /* 360 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
- /* 370 */ 414, 1143, 1466, 1143, 350, 119, 120, 110, 1136, 1136,
- /* 380 */ 981, 984, 974, 974, 117, 117, 118, 118, 118, 118,
- /* 390 */ 402, 1115, 1116, 1117, 500, 534, 250, 267, 336, 474,
- /* 400 */ 331, 473, 236, 1115, 1116, 1117, 231, 1115, 329, 471,
- /* 410 */ 468, 467, 509, 1458, 1464, 505, 6, 70, 70, 466,
- /* 420 */ 181, 380, 379, 534, 971, 971, 982, 985, 116, 116,
- /* 430 */ 116, 116, 115, 115, 114, 114, 114, 113, 414, 1115,
- /* 440 */ 412, 412, 412, 496, 1115, 69, 69, 235, 383, 288,
- /* 450 */ 525, 273, 326, 516, 337, 458, 1084, 1115, 1116, 1117,
- /* 460 */ 1232, 1232, 492, 160, 508, 441, 1084, 1067, 1531, 1084,
- /* 470 */ 207, 1531, 119, 120, 110, 1136, 1136, 981, 984, 974,
- /* 480 */ 974, 117, 117, 118, 118, 118, 118, 881, 534, 1115,
- /* 490 */ 1116, 1117, 975, 534, 1115, 1116, 1117, 534, 421, 534,
- /* 500 */ 141, 534, 176, 356, 517, 1119, 32, 511, 482, 388,
- /* 510 */ 70, 70, 818, 288, 525, 70, 70, 441, 499, 50,
- /* 520 */ 50, 70, 70, 70, 70, 116, 116, 116, 116, 115,
- /* 530 */ 115, 114, 114, 114, 113, 414, 274, 264, 264, 1115,
- /* 540 */ 1065, 264, 264, 1115, 355, 383, 409, 961, 1439, 822,
- /* 550 */ 531, 516, 190, 419, 531, 483, 1119, 516, 337, 516,
- /* 560 */ 518, 1115, 818, 952, 382, 458, 515, 951, 481, 119,
- /* 570 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
- /* 580 */ 118, 118, 118, 118, 1338, 278, 1045, 278, 275, 1115,
- /* 590 */ 1116, 1117, 259, 1115, 1116, 1117, 534, 5, 951, 951,
- /* 600 */ 953, 1046, 231, 3, 143, 471, 468, 467, 1391, 463,
- /* 610 */ 1115, 1115, 1116, 1117, 1452, 466, 1047, 836, 70, 70,
- /* 620 */ 480, 534, 116, 116, 116, 116, 115, 115, 114, 114,
- /* 630 */ 114, 113, 414, 95, 1115, 287, 235, 856, 902, 420,
- /* 640 */ 1115, 534, 383, 13, 13, 381, 815, 857, 472, 112,
- /* 650 */ 109, 209, 1115, 337, 413, 309, 837, 394, 1436, 534,
- /* 660 */ 1115, 1116, 1117, 54, 54, 291, 119, 120, 110, 1136,
- /* 670 */ 1136, 981, 984, 974, 974, 117, 117, 118, 118, 118,
- /* 680 */ 118, 13, 13, 1084, 1115, 1116, 1117, 901, 264, 264,
- /* 690 */ 1115, 1116, 1117, 1084, 292, 399, 1084, 800, 388, 140,
- /* 700 */ 295, 531, 1115, 1116, 1117, 403, 447, 532, 534, 870,
- /* 710 */ 870, 534, 1240, 534, 329, 534, 1185, 389, 534, 116,
- /* 720 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 414,
- /* 730 */ 13, 13, 1024, 13, 13, 13, 13, 13, 13, 383,
- /* 740 */ 13, 13, 424, 1100, 401, 264, 264, 277, 160, 184,
- /* 750 */ 1182, 185, 1533, 369, 513, 484, 432, 487, 531, 424,
- /* 760 */ 423, 1397, 941, 119, 120, 110, 1136, 1136, 981, 984,
- /* 770 */ 974, 974, 117, 117, 118, 118, 118, 118, 1397, 1399,
- /* 780 */ 425, 519, 392, 264, 264, 1029, 1029, 455, 264, 264,
- /* 790 */ 264, 264, 1004, 304, 261, 1278, 531, 900, 288, 525,
- /* 800 */ 310, 531, 493, 531, 1067, 1532, 458, 387, 1532, 311,
- /* 810 */ 429, 299, 534, 107, 264, 264, 116, 116, 116, 116,
- /* 820 */ 115, 115, 114, 114, 114, 113, 414, 531, 424, 1384,
- /* 830 */ 507, 258, 258, 1246, 55, 55, 383, 1277, 265, 265,
- /* 840 */ 962, 324, 434, 312, 531, 531, 506, 1397, 1026, 1241,
- /* 850 */ 298, 531, 1026, 445, 301, 1095, 303, 534, 368, 1156,
- /* 860 */ 119, 120, 110, 1136, 1136, 981, 984, 974, 974, 117,
- /* 870 */ 117, 118, 118, 118, 118, 1045, 534, 1065, 534, 15,
- /* 880 */ 15, 1084, 208, 1324, 453, 452, 534, 1324, 534, 449,
- /* 890 */ 1046, 1084, 494, 458, 1084, 234, 233, 232, 44, 44,
- /* 900 */ 56, 56, 319, 1095, 322, 1047, 534, 900, 57, 57,
- /* 910 */ 58, 58, 534, 116, 116, 116, 116, 115, 115, 114,
- /* 920 */ 114, 114, 113, 414, 534, 514, 522, 534, 59, 59,
- /* 930 */ 302, 1157, 534, 383, 60, 60, 1237, 946, 788, 789,
- /* 940 */ 790, 1459, 1456, 446, 6, 6, 61, 61, 1212, 45,
- /* 950 */ 45, 534, 396, 383, 46, 46, 397, 119, 120, 110,
- /* 960 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
- /* 970 */ 118, 118, 428, 48, 48, 534, 392, 119, 120, 110,
- /* 980 */ 1136, 1136, 981, 984, 974, 974, 117, 117, 118, 118,
- /* 990 */ 118, 118, 1324, 368, 1066, 447, 825, 49, 49, 534,
- /* 1000 */ 458, 357, 534, 353, 534, 138, 534, 337, 1478, 478,
- /* 1010 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
- /* 1020 */ 414, 62, 62, 392, 63, 63, 64, 64, 14, 14,
- /* 1030 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
- /* 1040 */ 414, 534, 810, 317, 271, 534, 1457, 825, 534, 6,
- /* 1050 */ 534, 1324, 534, 142, 534, 1442, 534, 212, 534, 1324,
- /* 1060 */ 534, 398, 305, 65, 65, 534, 1157, 125, 125, 476,
- /* 1070 */ 66, 66, 51, 51, 67, 67, 68, 68, 52, 52,
- /* 1080 */ 147, 147, 148, 148, 534, 98, 534, 75, 75, 276,
- /* 1090 */ 534, 272, 534, 810, 534, 876, 534, 527, 389, 534,
- /* 1100 */ 875, 534, 1151, 202, 534, 383, 53, 53, 71, 71,
- /* 1110 */ 288, 525, 126, 126, 72, 72, 127, 127, 128, 128,
- /* 1120 */ 454, 124, 124, 146, 146, 383, 145, 145, 408, 119,
- /* 1130 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
- /* 1140 */ 118, 118, 118, 118, 534, 900, 534, 95, 534, 119,
- /* 1150 */ 120, 110, 1136, 1136, 981, 984, 974, 974, 117, 117,
- /* 1160 */ 118, 118, 118, 118, 390, 161, 132, 132, 131, 131,
- /* 1170 */ 129, 129, 534, 915, 534, 1455, 534, 1454, 6, 1416,
- /* 1180 */ 6, 916, 116, 116, 116, 116, 115, 115, 114, 114,
- /* 1190 */ 114, 113, 414, 1415, 130, 130, 74, 74, 76, 76,
- /* 1200 */ 534, 30, 116, 116, 116, 116, 115, 115, 114, 114,
- /* 1210 */ 114, 113, 414, 534, 263, 206, 534, 1133, 1504, 93,
- /* 1220 */ 876, 845, 73, 73, 102, 875, 100, 139, 17, 38,
- /* 1230 */ 208, 1062, 31, 450, 370, 43, 43, 101, 47, 47,
- /* 1240 */ 827, 216, 436, 308, 943, 440, 95, 241, 241, 442,
- /* 1250 */ 313, 464, 241, 95, 237, 900, 327, 383, 266, 95,
- /* 1260 */ 835, 834, 193, 335, 938, 314, 1011, 435, 842, 843,
- /* 1270 */ 955, 1007, 909, 334, 237, 241, 873, 383, 1023, 107,
- /* 1280 */ 1023, 119, 120, 110, 1136, 1136, 981, 984, 974, 974,
- /* 1290 */ 117, 117, 118, 118, 118, 118, 1022, 808, 1022, 1274,
- /* 1300 */ 137, 119, 108, 110, 1136, 1136, 981, 984, 974, 974,
- /* 1310 */ 117, 117, 118, 118, 118, 118, 874, 1011, 318, 107,
- /* 1320 */ 321, 955, 323, 325, 1225, 1211, 197, 1210, 1209, 330,
- /* 1330 */ 339, 1265, 340, 283, 116, 116, 116, 116, 115, 115,
- /* 1340 */ 114, 114, 114, 113, 414, 1286, 1323, 1261, 1471, 1272,
- /* 1350 */ 520, 218, 521, 1329, 116, 116, 116, 116, 115, 115,
- /* 1360 */ 114, 114, 114, 113, 414, 1192, 1184, 1173, 1172, 1174,
- /* 1370 */ 1494, 1488, 459, 256, 383, 1258, 342, 199, 367, 344,
- /* 1380 */ 211, 195, 307, 444, 11, 346, 469, 333, 1308, 1316,
- /* 1390 */ 375, 427, 203, 360, 383, 1388, 188, 1387, 189, 120,
- /* 1400 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
- /* 1410 */ 118, 118, 118, 1208, 1151, 300, 348, 1491, 245, 1148,
- /* 1420 */ 110, 1136, 1136, 981, 984, 974, 974, 117, 117, 118,
- /* 1430 */ 118, 118, 118, 198, 1435, 1433, 524, 78, 391, 163,
- /* 1440 */ 82, 1393, 438, 173, 81, 105, 526, 1313, 4, 35,
- /* 1450 */ 157, 116, 116, 116, 116, 115, 115, 114, 114, 114,
- /* 1460 */ 113, 414, 529, 165, 93, 430, 1305, 168, 169, 431,
- /* 1470 */ 462, 116, 116, 116, 116, 115, 115, 114, 114, 114,
- /* 1480 */ 113, 414, 170, 171, 221, 415, 372, 437, 1319, 177,
- /* 1490 */ 374, 36, 451, 225, 1382, 87, 457, 523, 257, 1404,
- /* 1500 */ 316, 105, 526, 227, 4, 182, 460, 160, 320, 228,
- /* 1510 */ 377, 1175, 475, 229, 1228, 404, 1227, 1226, 529, 827,
- /* 1520 */ 961, 1219, 378, 1200, 1199, 406, 103, 103, 1218, 332,
- /* 1530 */ 8, 281, 1198, 104, 1503, 415, 536, 535, 486, 282,
- /* 1540 */ 951, 415, 489, 495, 92, 244, 1269, 341, 243, 122,
- /* 1550 */ 1270, 343, 514, 523, 1268, 1462, 10, 288, 525, 345,
- /* 1560 */ 1461, 354, 99, 352, 503, 94, 1267, 347, 1251, 502,
- /* 1570 */ 498, 951, 951, 953, 954, 27, 961, 1250, 194, 358,
- /* 1580 */ 251, 359, 103, 103, 1181, 34, 537, 1110, 252, 104,
- /* 1590 */ 254, 415, 536, 535, 255, 1368, 951, 1420, 286, 538,
- /* 1600 */ 1170, 1165, 1421, 135, 1419, 1418, 149, 150, 279, 784,
- /* 1610 */ 416, 196, 151, 290, 210, 200, 77, 385, 269, 386,
- /* 1620 */ 133, 162, 935, 1021, 201, 1019, 153, 951, 951, 953,
- /* 1630 */ 954, 27, 1480, 1104, 417, 164, 217, 268, 859, 166,
- /* 1640 */ 306, 1035, 366, 366, 365, 253, 363, 220, 172, 797,
- /* 1650 */ 939, 155, 105, 526, 393, 4, 395, 174, 156, 83,
- /* 1660 */ 1038, 84, 213, 85, 294, 222, 86, 223, 1034, 529,
- /* 1670 */ 144, 18, 293, 224, 315, 456, 241, 1027, 1145, 178,
- /* 1680 */ 226, 179, 37, 799, 334, 461, 230, 465, 470, 838,
- /* 1690 */ 180, 88, 415, 19, 280, 328, 20, 89, 90, 158,
- /* 1700 */ 191, 477, 215, 1097, 523, 204, 192, 987, 91, 1070,
- /* 1710 */ 152, 39, 485, 154, 1071, 503, 40, 488, 205, 260,
- /* 1720 */ 504, 262, 105, 526, 214, 4, 908, 961, 183, 240,
- /* 1730 */ 903, 107, 1086, 103, 103, 21, 22, 1088, 23, 529,
- /* 1740 */ 104, 24, 415, 536, 535, 1090, 1093, 951, 1094, 25,
- /* 1750 */ 1074, 33, 7, 26, 510, 1002, 247, 186, 384, 95,
- /* 1760 */ 988, 986, 415, 288, 525, 990, 1044, 246, 1043, 991,
- /* 1770 */ 28, 41, 530, 956, 523, 809, 106, 29, 951, 951,
- /* 1780 */ 953, 954, 27, 869, 361, 503, 422, 248, 364, 1105,
- /* 1790 */ 502, 249, 1161, 1496, 1495, 1161, 1161, 961, 1161, 1161,
- /* 1800 */ 1161, 1161, 1161, 103, 103, 1161, 1161, 1161, 1161, 1161,
- /* 1810 */ 104, 1161, 415, 536, 535, 1104, 417, 951, 1161, 268,
- /* 1820 */ 1161, 1161, 1161, 1161, 366, 366, 365, 253, 363, 1161,
- /* 1830 */ 1161, 797, 1161, 1161, 1161, 1161, 105, 526, 1161, 4,
- /* 1840 */ 1161, 1161, 1161, 1161, 213, 1161, 294, 1161, 951, 951,
- /* 1850 */ 953, 954, 27, 529, 293, 1161, 1161, 1161, 1161, 1161,
- /* 1860 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
- /* 1870 */ 1161, 1161, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
- /* 1880 */ 1161, 1161, 1161, 1161, 215, 1161, 1161, 1161, 523, 1161,
- /* 1890 */ 1161, 1161, 152, 1161, 1161, 154, 105, 526, 1161, 4,
- /* 1900 */ 1161, 1161, 1161, 1161, 1161, 1161, 214, 1161, 1161, 1161,
- /* 1910 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 880,
- /* 1920 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
- /* 1930 */ 1161, 951, 1161, 1161, 1161, 1161, 415, 1161, 1161, 1161,
- /* 1940 */ 384, 1161, 1161, 1161, 1161, 288, 525, 1161, 523, 1161,
- /* 1950 */ 1161, 1161, 1161, 1161, 1161, 1161, 97, 526, 1161, 4,
- /* 1960 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 422, 1161,
- /* 1970 */ 1161, 961, 1161, 529, 1161, 1161, 1161, 103, 103, 1161,
- /* 1980 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
- /* 1990 */ 1161, 951, 268, 1161, 1161, 1161, 415, 366, 366, 365,
- /* 2000 */ 253, 363, 1161, 1161, 797, 1161, 1161, 1161, 523, 1161,
- /* 2010 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 213, 1161, 294,
- /* 2020 */ 1161, 1161, 951, 951, 953, 954, 27, 293, 1161, 1161,
- /* 2030 */ 1161, 961, 1161, 1161, 1161, 1161, 1161, 103, 103, 1161,
- /* 2040 */ 1161, 1161, 1161, 1161, 104, 1161, 415, 536, 535, 1161,
- /* 2050 */ 1161, 951, 1161, 1161, 1161, 1161, 1161, 215, 1161, 1161,
- /* 2060 */ 1161, 1161, 1161, 1161, 1161, 152, 1161, 1161, 154, 1161,
- /* 2070 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 214,
- /* 2080 */ 1161, 1161, 951, 951, 953, 954, 27, 1161, 1161, 1161,
- /* 2090 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
- /* 2100 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
- /* 2110 */ 1161, 1161, 1161, 384, 1161, 1161, 1161, 1161, 288, 525,
- /* 2120 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
- /* 2130 */ 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
- /* 2140 */ 1161, 422,
+ /* 0 */ 537, 339, 537, 1241, 1220, 537, 12, 537, 112, 109,
+ /* 10 */ 209, 537, 1241, 537, 1205, 462, 112, 109, 209, 386,
+ /* 20 */ 338, 462, 42, 42, 42, 42, 445, 42, 42, 70,
+ /* 30 */ 70, 922, 1208, 70, 70, 70, 70, 1443, 403, 923,
+ /* 40 */ 531, 531, 531, 119, 120, 110, 1148, 1148, 991, 994,
+ /* 50 */ 984, 984, 117, 117, 118, 118, 118, 118, 425, 386,
+ /* 60 */ 1498, 542, 2, 1176, 1442, 519, 141, 1518, 289, 519,
+ /* 70 */ 134, 519, 95, 259, 495, 1215, 189, 1254, 518, 494,
+ /* 80 */ 484, 437, 296, 119, 120, 110, 1148, 1148, 991, 994,
+ /* 90 */ 984, 984, 117, 117, 118, 118, 118, 118, 270, 116,
+ /* 100 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 418,
+ /* 110 */ 264, 264, 264, 264, 423, 1479, 352, 1481, 123, 351,
+ /* 120 */ 1479, 508, 1094, 534, 1034, 534, 1099, 386, 1099, 239,
+ /* 130 */ 206, 112, 109, 209, 96, 1094, 376, 219, 1094, 116,
+ /* 140 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 418,
+ /* 150 */ 480, 119, 120, 110, 1148, 1148, 991, 994, 984, 984,
+ /* 160 */ 117, 117, 118, 118, 118, 118, 353, 422, 1407, 264,
+ /* 170 */ 264, 114, 114, 114, 113, 418, 883, 121, 416, 416,
+ /* 180 */ 416, 882, 534, 116, 116, 116, 116, 115, 115, 114,
+ /* 190 */ 114, 114, 113, 418, 212, 415, 414, 386, 443, 383,
+ /* 200 */ 382, 118, 118, 118, 118, 111, 177, 116, 116, 116,
+ /* 210 */ 116, 115, 115, 114, 114, 114, 113, 418, 112, 109,
+ /* 220 */ 209, 119, 120, 110, 1148, 1148, 991, 994, 984, 984,
+ /* 230 */ 117, 117, 118, 118, 118, 118, 386, 438, 312, 1163,
+ /* 240 */ 1155, 80, 1155, 1127, 514, 79, 116, 116, 116, 116,
+ /* 250 */ 115, 115, 114, 114, 114, 113, 418, 514, 428, 418,
+ /* 260 */ 119, 120, 110, 1148, 1148, 991, 994, 984, 984, 117,
+ /* 270 */ 117, 118, 118, 118, 118, 428, 427, 116, 116, 116,
+ /* 280 */ 116, 115, 115, 114, 114, 114, 113, 418, 115, 115,
+ /* 290 */ 114, 114, 114, 113, 418, 1127, 1127, 1128, 1129, 1094,
+ /* 300 */ 258, 258, 192, 386, 408, 371, 1168, 326, 118, 118,
+ /* 310 */ 118, 118, 1094, 534, 374, 1094, 116, 116, 116, 116,
+ /* 320 */ 115, 115, 114, 114, 114, 113, 418, 119, 120, 110,
+ /* 330 */ 1148, 1148, 991, 994, 984, 984, 117, 117, 118, 118,
+ /* 340 */ 118, 118, 386, 354, 445, 428, 829, 238, 1127, 1128,
+ /* 350 */ 1129, 515, 1466, 116, 116, 116, 116, 115, 115, 114,
+ /* 360 */ 114, 114, 113, 418, 1127, 1467, 119, 120, 110, 1148,
+ /* 370 */ 1148, 991, 994, 984, 984, 117, 117, 118, 118, 118,
+ /* 380 */ 118, 1169, 82, 116, 116, 116, 116, 115, 115, 114,
+ /* 390 */ 114, 114, 113, 418, 405, 112, 109, 209, 161, 445,
+ /* 400 */ 250, 267, 336, 478, 331, 477, 236, 951, 1127, 386,
+ /* 410 */ 888, 1521, 329, 822, 852, 162, 274, 1127, 1128, 1129,
+ /* 420 */ 338, 169, 116, 116, 116, 116, 115, 115, 114, 114,
+ /* 430 */ 114, 113, 418, 119, 120, 110, 1148, 1148, 991, 994,
+ /* 440 */ 984, 984, 117, 117, 118, 118, 118, 118, 386, 438,
+ /* 450 */ 312, 1502, 1112, 1176, 161, 288, 528, 311, 289, 883,
+ /* 460 */ 134, 1127, 1128, 1129, 882, 537, 143, 1254, 288, 528,
+ /* 470 */ 297, 275, 119, 120, 110, 1148, 1148, 991, 994, 984,
+ /* 480 */ 984, 117, 117, 118, 118, 118, 118, 70, 70, 116,
+ /* 490 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 418,
+ /* 500 */ 264, 264, 12, 264, 264, 395, 1127, 483, 1473, 1094,
+ /* 510 */ 204, 482, 6, 534, 1258, 386, 534, 1474, 825, 972,
+ /* 520 */ 504, 6, 1094, 500, 95, 1094, 534, 219, 116, 116,
+ /* 530 */ 116, 116, 115, 115, 114, 114, 114, 113, 418, 119,
+ /* 540 */ 120, 110, 1148, 1148, 991, 994, 984, 984, 117, 117,
+ /* 550 */ 118, 118, 118, 118, 386, 1339, 971, 422, 956, 1127,
+ /* 560 */ 1128, 1129, 231, 512, 1473, 475, 472, 471, 6, 113,
+ /* 570 */ 418, 825, 962, 298, 503, 470, 961, 452, 119, 120,
+ /* 580 */ 110, 1148, 1148, 991, 994, 984, 984, 117, 117, 118,
+ /* 590 */ 118, 118, 118, 395, 537, 116, 116, 116, 116, 115,
+ /* 600 */ 115, 114, 114, 114, 113, 418, 202, 961, 961, 963,
+ /* 610 */ 231, 971, 1127, 475, 472, 471, 13, 13, 951, 1127,
+ /* 620 */ 834, 386, 1207, 470, 399, 183, 447, 962, 462, 162,
+ /* 630 */ 397, 961, 1246, 1246, 116, 116, 116, 116, 115, 115,
+ /* 640 */ 114, 114, 114, 113, 418, 119, 120, 110, 1148, 1148,
+ /* 650 */ 991, 994, 984, 984, 117, 117, 118, 118, 118, 118,
+ /* 660 */ 386, 271, 961, 961, 963, 1127, 1128, 1129, 311, 433,
+ /* 670 */ 299, 1406, 1127, 1128, 1129, 178, 1471, 138, 162, 32,
+ /* 680 */ 6, 1127, 288, 528, 119, 120, 110, 1148, 1148, 991,
+ /* 690 */ 994, 984, 984, 117, 117, 118, 118, 118, 118, 909,
+ /* 700 */ 390, 116, 116, 116, 116, 115, 115, 114, 114, 114,
+ /* 710 */ 113, 418, 1127, 429, 817, 537, 1127, 265, 265, 981,
+ /* 720 */ 981, 992, 995, 324, 1055, 93, 520, 5, 338, 537,
+ /* 730 */ 534, 288, 528, 1522, 1127, 1128, 1129, 70, 70, 1056,
+ /* 740 */ 116, 116, 116, 116, 115, 115, 114, 114, 114, 113,
+ /* 750 */ 418, 70, 70, 1495, 1057, 537, 98, 1244, 1244, 264,
+ /* 760 */ 264, 908, 371, 1076, 1127, 1127, 1128, 1129, 817, 1127,
+ /* 770 */ 1128, 1129, 534, 519, 140, 863, 386, 13, 13, 456,
+ /* 780 */ 192, 193, 521, 453, 319, 864, 322, 284, 365, 430,
+ /* 790 */ 985, 402, 379, 1077, 1548, 101, 386, 1548, 3, 395,
+ /* 800 */ 119, 120, 110, 1148, 1148, 991, 994, 984, 984, 117,
+ /* 810 */ 117, 118, 118, 118, 118, 386, 451, 1127, 1128, 1129,
+ /* 820 */ 119, 120, 110, 1148, 1148, 991, 994, 984, 984, 117,
+ /* 830 */ 117, 118, 118, 118, 118, 1127, 1354, 1412, 1169, 119,
+ /* 840 */ 108, 110, 1148, 1148, 991, 994, 984, 984, 117, 117,
+ /* 850 */ 118, 118, 118, 118, 1412, 1414, 116, 116, 116, 116,
+ /* 860 */ 115, 115, 114, 114, 114, 113, 418, 272, 535, 1075,
+ /* 870 */ 877, 877, 337, 1492, 309, 462, 116, 116, 116, 116,
+ /* 880 */ 115, 115, 114, 114, 114, 113, 418, 537, 1127, 1128,
+ /* 890 */ 1129, 537, 360, 537, 356, 116, 116, 116, 116, 115,
+ /* 900 */ 115, 114, 114, 114, 113, 418, 386, 264, 264, 13,
+ /* 910 */ 13, 273, 1127, 13, 13, 13, 13, 304, 1253, 386,
+ /* 920 */ 534, 1077, 1549, 404, 1412, 1549, 496, 277, 451, 186,
+ /* 930 */ 1252, 120, 110, 1148, 1148, 991, 994, 984, 984, 117,
+ /* 940 */ 117, 118, 118, 118, 118, 110, 1148, 1148, 991, 994,
+ /* 950 */ 984, 984, 117, 117, 118, 118, 118, 118, 105, 529,
+ /* 960 */ 537, 4, 1339, 264, 264, 1127, 1128, 1129, 1039, 1039,
+ /* 970 */ 459, 795, 796, 797, 536, 532, 534, 242, 301, 807,
+ /* 980 */ 303, 462, 69, 69, 451, 1353, 116, 116, 116, 116,
+ /* 990 */ 115, 115, 114, 114, 114, 113, 418, 1075, 419, 116,
+ /* 1000 */ 116, 116, 116, 115, 115, 114, 114, 114, 113, 418,
+ /* 1010 */ 526, 537, 1146, 192, 350, 105, 529, 537, 4, 497,
+ /* 1020 */ 162, 337, 1492, 310, 1249, 385, 1550, 372, 9, 462,
+ /* 1030 */ 242, 400, 532, 13, 13, 499, 971, 843, 436, 70,
+ /* 1040 */ 70, 359, 103, 103, 8, 339, 278, 187, 278, 104,
+ /* 1050 */ 1127, 419, 539, 538, 1339, 419, 961, 302, 1339, 1172,
+ /* 1060 */ 1, 1, 542, 2, 1176, 1146, 1146, 526, 476, 289,
+ /* 1070 */ 30, 134, 317, 288, 528, 285, 844, 1014, 1254, 276,
+ /* 1080 */ 1472, 506, 410, 1194, 6, 207, 505, 961, 961, 963,
+ /* 1090 */ 964, 27, 449, 971, 415, 414, 234, 233, 232, 103,
+ /* 1100 */ 103, 31, 1152, 1127, 1128, 1129, 104, 1154, 419, 539,
+ /* 1110 */ 538, 264, 264, 961, 1399, 1153, 264, 264, 1470, 1146,
+ /* 1120 */ 537, 216, 6, 401, 534, 1197, 392, 458, 406, 534,
+ /* 1130 */ 537, 485, 358, 537, 261, 537, 1339, 907, 219, 1155,
+ /* 1140 */ 467, 1155, 50, 50, 961, 961, 963, 964, 27, 1497,
+ /* 1150 */ 1116, 421, 70, 70, 268, 70, 70, 13, 13, 369,
+ /* 1160 */ 369, 368, 253, 366, 264, 264, 804, 235, 422, 105,
+ /* 1170 */ 529, 516, 4, 287, 487, 510, 493, 534, 486, 213,
+ /* 1180 */ 1055, 294, 490, 384, 1127, 450, 532, 338, 413, 293,
+ /* 1190 */ 522, 417, 335, 1036, 509, 1056, 107, 1036, 16, 16,
+ /* 1200 */ 1469, 1094, 334, 1105, 6, 411, 1145, 264, 264, 419,
+ /* 1210 */ 1057, 102, 511, 100, 1094, 264, 264, 1094, 922, 215,
+ /* 1220 */ 534, 526, 907, 264, 264, 208, 923, 154, 534, 457,
+ /* 1230 */ 156, 525, 391, 142, 218, 506, 534, 1127, 1128, 1129,
+ /* 1240 */ 507, 139, 1131, 38, 214, 530, 392, 971, 329, 1454,
+ /* 1250 */ 907, 1105, 537, 103, 103, 105, 529, 537, 4, 537,
+ /* 1260 */ 104, 424, 419, 539, 538, 537, 502, 961, 517, 537,
+ /* 1270 */ 1072, 537, 532, 373, 54, 54, 288, 528, 387, 55,
+ /* 1280 */ 55, 15, 15, 288, 528, 17, 136, 44, 44, 1451,
+ /* 1290 */ 537, 56, 56, 57, 57, 419, 1131, 291, 961, 961,
+ /* 1300 */ 963, 964, 27, 393, 163, 537, 426, 526, 263, 206,
+ /* 1310 */ 208, 517, 58, 58, 235, 440, 842, 841, 197, 105,
+ /* 1320 */ 529, 506, 4, 1033, 439, 1033, 505, 59, 59, 308,
+ /* 1330 */ 849, 850, 95, 971, 537, 907, 532, 948, 832, 103,
+ /* 1340 */ 103, 105, 529, 537, 4, 1021, 104, 537, 419, 539,
+ /* 1350 */ 538, 1116, 421, 961, 537, 268, 60, 60, 532, 419,
+ /* 1360 */ 369, 369, 368, 253, 366, 61, 61, 804, 965, 45,
+ /* 1370 */ 45, 526, 537, 1032, 1277, 1032, 46, 46, 537, 391,
+ /* 1380 */ 213, 419, 294, 266, 961, 961, 963, 964, 27, 292,
+ /* 1390 */ 293, 295, 832, 526, 48, 48, 1290, 971, 1289, 1021,
+ /* 1400 */ 49, 49, 432, 103, 103, 887, 953, 537, 1457, 241,
+ /* 1410 */ 104, 305, 419, 539, 538, 925, 926, 961, 444, 971,
+ /* 1420 */ 215, 241, 965, 1224, 537, 103, 103, 1431, 154, 62,
+ /* 1430 */ 62, 156, 104, 1430, 419, 539, 538, 97, 529, 961,
+ /* 1440 */ 4, 537, 454, 537, 314, 214, 63, 63, 961, 961,
+ /* 1450 */ 963, 964, 27, 537, 532, 446, 1286, 318, 241, 537,
+ /* 1460 */ 321, 323, 325, 64, 64, 14, 14, 1237, 537, 1223,
+ /* 1470 */ 961, 961, 963, 964, 27, 65, 65, 419, 537, 387,
+ /* 1480 */ 537, 125, 125, 537, 288, 528, 537, 1486, 537, 526,
+ /* 1490 */ 66, 66, 313, 524, 537, 95, 468, 1221, 1511, 237,
+ /* 1500 */ 51, 51, 67, 67, 330, 68, 68, 426, 52, 52,
+ /* 1510 */ 149, 149, 1222, 340, 341, 971, 150, 150, 1298, 463,
+ /* 1520 */ 327, 103, 103, 95, 537, 1338, 1273, 537, 104, 537,
+ /* 1530 */ 419, 539, 538, 1284, 537, 961, 268, 283, 523, 1344,
+ /* 1540 */ 1204, 369, 369, 368, 253, 366, 75, 75, 804, 53,
+ /* 1550 */ 53, 71, 71, 537, 1196, 537, 126, 126, 537, 1017,
+ /* 1560 */ 537, 213, 237, 294, 537, 1185, 961, 961, 963, 964,
+ /* 1570 */ 27, 293, 537, 1184, 537, 72, 72, 127, 127, 1186,
+ /* 1580 */ 128, 128, 124, 124, 1505, 537, 148, 148, 537, 256,
+ /* 1590 */ 195, 537, 1270, 537, 147, 147, 132, 132, 537, 11,
+ /* 1600 */ 537, 215, 537, 199, 343, 345, 347, 131, 131, 154,
+ /* 1610 */ 129, 129, 156, 130, 130, 74, 74, 537, 370, 1323,
+ /* 1620 */ 76, 76, 73, 73, 43, 43, 214, 431, 211, 1331,
+ /* 1630 */ 300, 916, 880, 815, 241, 107, 137, 307, 881, 47,
+ /* 1640 */ 47, 107, 473, 378, 203, 448, 333, 1403, 1220, 1402,
+ /* 1650 */ 349, 190, 527, 191, 363, 198, 1508, 1163, 245, 165,
+ /* 1660 */ 387, 1450, 1448, 1160, 78, 288, 528, 1408, 81, 394,
+ /* 1670 */ 82, 442, 175, 159, 167, 93, 1328, 35, 1320, 434,
+ /* 1680 */ 170, 171, 172, 173, 435, 466, 221, 375, 426, 377,
+ /* 1690 */ 1334, 179, 455, 441, 1397, 225, 87, 36, 461, 1419,
+ /* 1700 */ 316, 257, 227, 184, 320, 464, 228, 479, 1187, 229,
+ /* 1710 */ 380, 1240, 1239, 407, 1238, 1212, 834, 332, 1231, 381,
+ /* 1720 */ 409, 1211, 204, 1210, 1491, 498, 1520, 1281, 92, 281,
+ /* 1730 */ 1230, 489, 282, 492, 342, 243, 1282, 344, 244, 1280,
+ /* 1740 */ 346, 412, 1279, 1477, 348, 122, 1476, 517, 10, 357,
+ /* 1750 */ 286, 1305, 1304, 99, 1383, 94, 501, 251, 1193, 34,
+ /* 1760 */ 1263, 355, 540, 194, 1262, 361, 362, 1122, 252, 254,
+ /* 1770 */ 255, 388, 541, 1182, 1177, 151, 1435, 389, 1436, 1434,
+ /* 1780 */ 1433, 791, 152, 135, 279, 200, 201, 420, 196, 77,
+ /* 1790 */ 153, 290, 269, 210, 1031, 133, 1029, 945, 166, 155,
+ /* 1800 */ 217, 168, 866, 306, 220, 1045, 174, 949, 157, 396,
+ /* 1810 */ 83, 398, 176, 84, 85, 164, 86, 158, 1048, 222,
+ /* 1820 */ 223, 1044, 144, 18, 224, 315, 1037, 180, 241, 460,
+ /* 1830 */ 1157, 226, 181, 37, 806, 465, 334, 230, 328, 469,
+ /* 1840 */ 182, 88, 474, 19, 20, 160, 89, 280, 145, 90,
+ /* 1850 */ 481, 845, 1110, 146, 997, 205, 1080, 39, 91, 40,
+ /* 1860 */ 488, 1081, 915, 491, 260, 262, 185, 910, 240, 107,
+ /* 1870 */ 1100, 1096, 1098, 1104, 21, 1084, 33, 513, 247, 22,
+ /* 1880 */ 23, 24, 1103, 25, 188, 95, 1012, 998, 996, 26,
+ /* 1890 */ 1000, 1054, 7, 1053, 1001, 246, 28, 41, 533, 966,
+ /* 1900 */ 816, 106, 29, 367, 248, 249, 1513, 1512, 364, 1117,
+ /* 1910 */ 1173, 1173, 876,
};
static const YYCODETYPE yy_lookahead[] = {
- /* 0 */ 260, 261, 262, 260, 261, 262, 176, 177, 178, 179,
- /* 10 */ 180, 181, 184, 206, 209, 184, 186, 206, 188, 19,
- /* 20 */ 179, 281, 181, 213, 214, 195, 206, 186, 195, 188,
- /* 30 */ 195, 31, 222, 184, 206, 207, 195, 206, 207, 39,
- /* 40 */ 24, 209, 184, 43, 44, 45, 46, 47, 48, 49,
- /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 228, 229,
- /* 60 */ 184, 228, 229, 228, 229, 260, 261, 262, 192, 228,
- /* 70 */ 229, 241, 196, 242, 241, 59, 241, 205, 245, 246,
- /* 80 */ 184, 22, 241, 24, 254, 213, 54, 55, 56, 57,
- /* 90 */ 58, 256, 260, 261, 262, 254, 96, 97, 98, 99,
- /* 100 */ 100, 101, 102, 103, 104, 105, 106, 100, 101, 102,
- /* 110 */ 103, 104, 105, 106, 284, 203, 19, 221, 59, 102,
- /* 120 */ 103, 104, 105, 106, 59, 284, 110, 269, 96, 97,
- /* 130 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 94,
- /* 140 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 150 */ 53, 54, 55, 56, 57, 110, 184, 106, 73, 114,
- /* 160 */ 178, 179, 180, 181, 219, 184, 81, 22, 186, 110,
- /* 170 */ 188, 121, 122, 195, 109, 110, 111, 195, 206, 207,
- /* 180 */ 83, 184, 85, 54, 55, 56, 57, 206, 207, 277,
- /* 190 */ 145, 146, 147, 96, 97, 98, 99, 100, 101, 102,
- /* 200 */ 103, 104, 105, 106, 59, 120, 228, 229, 143, 184,
- /* 210 */ 228, 229, 184, 19, 242, 203, 131, 132, 221, 241,
- /* 220 */ 26, 184, 184, 241, 196, 96, 97, 98, 99, 100,
- /* 230 */ 101, 102, 103, 104, 105, 106, 254, 43, 44, 45,
- /* 240 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 250 */ 56, 57, 184, 184, 109, 110, 111, 105, 106, 184,
- /* 260 */ 200, 201, 202, 69, 184, 227, 284, 96, 97, 98,
- /* 270 */ 99, 100, 101, 102, 103, 104, 105, 106, 297, 298,
- /* 280 */ 255, 206, 207, 19, 272, 59, 206, 207, 184, 277,
- /* 290 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- /* 300 */ 106, 184, 259, 19, 184, 100, 101, 43, 44, 45,
- /* 310 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 320 */ 56, 57, 242, 206, 207, 184, 100, 101, 138, 292,
- /* 330 */ 293, 67, 76, 296, 108, 109, 110, 111, 295, 113,
- /* 340 */ 84, 59, 86, 22, 26, 89, 156, 121, 224, 225,
- /* 350 */ 145, 19, 147, 59, 72, 256, 24, 184, 290, 291,
- /* 360 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- /* 370 */ 106, 145, 297, 147, 299, 43, 44, 45, 46, 47,
- /* 380 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- /* 390 */ 106, 109, 110, 111, 138, 184, 112, 113, 114, 115,
- /* 400 */ 116, 117, 118, 109, 110, 111, 112, 59, 124, 115,
- /* 410 */ 116, 117, 292, 293, 297, 298, 296, 206, 207, 125,
- /* 420 */ 72, 100, 101, 184, 46, 47, 48, 49, 96, 97,
- /* 430 */ 98, 99, 100, 101, 102, 103, 104, 105, 106, 59,
- /* 440 */ 200, 201, 202, 184, 59, 206, 207, 46, 19, 131,
- /* 450 */ 132, 278, 23, 242, 184, 184, 76, 109, 110, 111,
- /* 460 */ 224, 225, 251, 81, 84, 184, 86, 22, 23, 89,
- /* 470 */ 184, 26, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 480 */ 51, 52, 53, 54, 55, 56, 57, 102, 184, 109,
- /* 490 */ 110, 111, 114, 184, 109, 110, 111, 184, 227, 184,
- /* 500 */ 230, 184, 22, 264, 195, 59, 22, 184, 195, 108,
- /* 510 */ 206, 207, 59, 131, 132, 206, 207, 184, 138, 206,
- /* 520 */ 207, 206, 207, 206, 207, 96, 97, 98, 99, 100,
- /* 530 */ 101, 102, 103, 104, 105, 106, 255, 228, 229, 59,
- /* 540 */ 95, 228, 229, 59, 184, 19, 242, 94, 184, 23,
- /* 550 */ 241, 242, 184, 282, 241, 242, 110, 242, 184, 242,
- /* 560 */ 251, 59, 109, 110, 196, 184, 251, 114, 251, 43,
- /* 570 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 580 */ 54, 55, 56, 57, 259, 217, 12, 219, 255, 109,
- /* 590 */ 110, 111, 203, 109, 110, 111, 184, 22, 145, 146,
- /* 600 */ 147, 27, 112, 22, 230, 115, 116, 117, 227, 19,
- /* 610 */ 59, 109, 110, 111, 291, 125, 42, 35, 206, 207,
- /* 620 */ 295, 184, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 630 */ 104, 105, 106, 26, 59, 233, 46, 63, 136, 184,
- /* 640 */ 59, 184, 19, 206, 207, 243, 23, 73, 66, 260,
- /* 650 */ 261, 262, 59, 184, 242, 195, 74, 220, 184, 184,
- /* 660 */ 109, 110, 111, 206, 207, 184, 43, 44, 45, 46,
- /* 670 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- /* 680 */ 57, 206, 207, 76, 109, 110, 111, 136, 228, 229,
- /* 690 */ 109, 110, 111, 86, 184, 220, 89, 21, 108, 230,
- /* 700 */ 184, 241, 109, 110, 111, 123, 184, 127, 184, 129,
- /* 710 */ 130, 184, 195, 184, 124, 184, 198, 199, 184, 96,
- /* 720 */ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- /* 730 */ 206, 207, 11, 206, 207, 206, 207, 206, 207, 19,
- /* 740 */ 206, 207, 184, 23, 220, 228, 229, 220, 81, 220,
- /* 750 */ 195, 220, 287, 288, 220, 195, 80, 195, 241, 201,
- /* 760 */ 202, 184, 73, 43, 44, 45, 46, 47, 48, 49,
- /* 770 */ 50, 51, 52, 53, 54, 55, 56, 57, 201, 202,
- /* 780 */ 113, 195, 184, 228, 229, 120, 121, 122, 228, 229,
- /* 790 */ 228, 229, 116, 16, 23, 184, 241, 26, 131, 132,
- /* 800 */ 278, 241, 19, 241, 22, 23, 184, 189, 26, 120,
- /* 810 */ 121, 122, 184, 26, 228, 229, 96, 97, 98, 99,
- /* 820 */ 100, 101, 102, 103, 104, 105, 106, 241, 270, 153,
- /* 830 */ 66, 228, 229, 229, 206, 207, 19, 184, 228, 229,
- /* 840 */ 23, 16, 121, 122, 241, 241, 82, 270, 29, 227,
- /* 850 */ 252, 241, 33, 19, 77, 91, 79, 184, 22, 23,
- /* 860 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 870 */ 53, 54, 55, 56, 57, 12, 184, 95, 184, 206,
- /* 880 */ 207, 76, 111, 184, 65, 267, 184, 184, 184, 271,
- /* 890 */ 27, 86, 109, 184, 89, 120, 121, 122, 206, 207,
- /* 900 */ 206, 207, 77, 139, 79, 42, 184, 136, 206, 207,
- /* 910 */ 206, 207, 184, 96, 97, 98, 99, 100, 101, 102,
- /* 920 */ 103, 104, 105, 106, 184, 138, 63, 184, 206, 207,
- /* 930 */ 153, 95, 184, 19, 206, 207, 227, 23, 7, 8,
- /* 940 */ 9, 293, 293, 109, 296, 296, 206, 207, 215, 206,
- /* 950 */ 207, 184, 253, 19, 206, 207, 253, 43, 44, 45,
- /* 960 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 970 */ 56, 57, 184, 206, 207, 184, 184, 43, 44, 45,
- /* 980 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- /* 990 */ 56, 57, 184, 22, 23, 184, 59, 206, 207, 184,
- /* 1000 */ 184, 238, 184, 240, 184, 22, 184, 184, 157, 158,
- /* 1010 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- /* 1020 */ 106, 206, 207, 184, 206, 207, 206, 207, 206, 207,
- /* 1030 */ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- /* 1040 */ 106, 184, 59, 227, 252, 184, 293, 110, 184, 296,
- /* 1050 */ 184, 184, 184, 230, 184, 184, 184, 15, 184, 184,
- /* 1060 */ 184, 253, 184, 206, 207, 184, 95, 206, 207, 102,
- /* 1070 */ 206, 207, 206, 207, 206, 207, 206, 207, 206, 207,
- /* 1080 */ 206, 207, 206, 207, 184, 151, 184, 206, 207, 278,
- /* 1090 */ 184, 252, 184, 110, 184, 128, 184, 198, 199, 184,
- /* 1100 */ 133, 184, 60, 26, 184, 19, 206, 207, 206, 207,
- /* 1110 */ 131, 132, 206, 207, 206, 207, 206, 207, 206, 207,
- /* 1120 */ 253, 206, 207, 206, 207, 19, 206, 207, 253, 43,
- /* 1130 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 1140 */ 54, 55, 56, 57, 184, 26, 184, 26, 184, 43,
- /* 1150 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 1160 */ 54, 55, 56, 57, 285, 286, 206, 207, 206, 207,
- /* 1170 */ 206, 207, 184, 31, 184, 293, 184, 293, 296, 184,
- /* 1180 */ 296, 39, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 1190 */ 104, 105, 106, 184, 206, 207, 206, 207, 206, 207,
- /* 1200 */ 184, 22, 96, 97, 98, 99, 100, 101, 102, 103,
- /* 1210 */ 104, 105, 106, 184, 245, 246, 184, 26, 23, 142,
- /* 1220 */ 128, 26, 206, 207, 150, 133, 152, 22, 22, 24,
- /* 1230 */ 111, 23, 53, 184, 26, 206, 207, 151, 206, 207,
- /* 1240 */ 119, 24, 122, 23, 23, 23, 26, 26, 26, 23,
- /* 1250 */ 23, 23, 26, 26, 26, 136, 23, 19, 22, 26,
- /* 1260 */ 113, 114, 24, 114, 144, 184, 59, 61, 7, 8,
- /* 1270 */ 59, 23, 23, 124, 26, 26, 23, 19, 145, 26,
- /* 1280 */ 147, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- /* 1290 */ 52, 53, 54, 55, 56, 57, 145, 23, 147, 184,
- /* 1300 */ 26, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- /* 1310 */ 52, 53, 54, 55, 56, 57, 23, 110, 184, 26,
- /* 1320 */ 184, 110, 184, 184, 184, 215, 135, 215, 184, 184,
- /* 1330 */ 184, 247, 184, 244, 96, 97, 98, 99, 100, 101,
- /* 1340 */ 102, 103, 104, 105, 106, 184, 184, 184, 301, 184,
- /* 1350 */ 184, 134, 225, 184, 96, 97, 98, 99, 100, 101,
- /* 1360 */ 102, 103, 104, 105, 106, 184, 184, 184, 184, 184,
- /* 1370 */ 134, 184, 274, 273, 19, 244, 244, 204, 182, 244,
- /* 1380 */ 283, 231, 279, 279, 232, 244, 210, 209, 235, 235,
- /* 1390 */ 235, 248, 218, 234, 19, 209, 238, 209, 238, 44,
- /* 1400 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 1410 */ 55, 56, 57, 214, 60, 248, 248, 187, 134, 38,
- /* 1420 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- /* 1430 */ 55, 56, 57, 232, 191, 191, 266, 280, 191, 283,
- /* 1440 */ 143, 269, 108, 22, 280, 19, 20, 258, 22, 257,
- /* 1450 */ 43, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1460 */ 105, 106, 36, 223, 142, 18, 235, 226, 226, 191,
- /* 1470 */ 18, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- /* 1480 */ 105, 106, 226, 226, 190, 59, 235, 235, 223, 223,
- /* 1490 */ 258, 257, 191, 190, 235, 150, 62, 71, 191, 276,
- /* 1500 */ 275, 19, 20, 190, 22, 22, 211, 81, 191, 190,
- /* 1510 */ 211, 191, 108, 190, 208, 64, 208, 208, 36, 119,
- /* 1520 */ 94, 216, 211, 208, 210, 106, 100, 101, 216, 208,
- /* 1530 */ 48, 268, 208, 107, 208, 109, 110, 111, 211, 268,
- /* 1540 */ 114, 59, 211, 137, 108, 88, 250, 249, 191, 141,
- /* 1550 */ 250, 249, 138, 71, 250, 300, 22, 131, 132, 249,
- /* 1560 */ 300, 191, 150, 238, 82, 140, 250, 249, 239, 87,
- /* 1570 */ 139, 145, 146, 147, 148, 149, 94, 239, 237, 236,
- /* 1580 */ 25, 235, 100, 101, 194, 26, 193, 13, 185, 107,
- /* 1590 */ 185, 109, 110, 111, 6, 263, 114, 203, 265, 183,
- /* 1600 */ 183, 183, 203, 212, 203, 203, 197, 197, 212, 4,
- /* 1610 */ 3, 22, 197, 155, 15, 204, 203, 289, 93, 289,
- /* 1620 */ 16, 286, 132, 23, 204, 23, 123, 145, 146, 147,
- /* 1630 */ 148, 149, 0, 1, 2, 143, 24, 5, 20, 135,
- /* 1640 */ 16, 1, 10, 11, 12, 13, 14, 137, 135, 17,
- /* 1650 */ 144, 123, 19, 20, 61, 22, 37, 143, 123, 53,
- /* 1660 */ 109, 53, 30, 53, 32, 34, 53, 134, 1, 36,
- /* 1670 */ 5, 22, 40, 108, 153, 41, 26, 68, 75, 68,
- /* 1680 */ 134, 108, 24, 20, 124, 19, 118, 67, 67, 28,
- /* 1690 */ 22, 22, 59, 22, 67, 23, 22, 22, 142, 37,
- /* 1700 */ 23, 22, 70, 23, 71, 157, 23, 23, 26, 23,
- /* 1710 */ 78, 22, 24, 81, 23, 82, 22, 24, 134, 23,
- /* 1720 */ 87, 23, 19, 20, 92, 22, 109, 94, 22, 34,
- /* 1730 */ 136, 26, 85, 100, 101, 34, 34, 83, 34, 36,
- /* 1740 */ 107, 34, 109, 110, 111, 75, 90, 114, 75, 34,
- /* 1750 */ 23, 22, 44, 34, 24, 23, 22, 26, 126, 26,
- /* 1760 */ 23, 23, 59, 131, 132, 23, 23, 26, 23, 11,
- /* 1770 */ 22, 22, 26, 23, 71, 23, 22, 22, 145, 146,
- /* 1780 */ 147, 148, 149, 128, 23, 82, 154, 134, 15, 1,
- /* 1790 */ 87, 134, 302, 134, 134, 302, 302, 94, 302, 302,
- /* 1800 */ 302, 302, 302, 100, 101, 302, 302, 302, 302, 302,
- /* 1810 */ 107, 302, 109, 110, 111, 1, 2, 114, 302, 5,
- /* 1820 */ 302, 302, 302, 302, 10, 11, 12, 13, 14, 302,
- /* 1830 */ 302, 17, 302, 302, 302, 302, 19, 20, 302, 22,
- /* 1840 */ 302, 302, 302, 302, 30, 302, 32, 302, 145, 146,
- /* 1850 */ 147, 148, 149, 36, 40, 302, 302, 302, 302, 302,
- /* 1860 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 1870 */ 302, 302, 302, 302, 302, 302, 59, 302, 302, 302,
- /* 1880 */ 302, 302, 302, 302, 70, 302, 302, 302, 71, 302,
- /* 1890 */ 302, 302, 78, 302, 302, 81, 19, 20, 302, 22,
- /* 1900 */ 302, 302, 302, 302, 302, 302, 92, 302, 302, 302,
- /* 1910 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 102,
- /* 1920 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
- /* 1930 */ 302, 114, 302, 302, 302, 302, 59, 302, 302, 302,
- /* 1940 */ 126, 302, 302, 302, 302, 131, 132, 302, 71, 302,
- /* 1950 */ 302, 302, 302, 302, 302, 302, 19, 20, 302, 22,
- /* 1960 */ 302, 302, 145, 146, 147, 148, 149, 302, 154, 302,
- /* 1970 */ 302, 94, 302, 36, 302, 302, 302, 100, 101, 302,
- /* 1980 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
- /* 1990 */ 302, 114, 5, 302, 302, 302, 59, 10, 11, 12,
- /* 2000 */ 13, 14, 302, 302, 17, 302, 302, 302, 71, 302,
- /* 2010 */ 302, 302, 302, 302, 302, 302, 302, 30, 302, 32,
- /* 2020 */ 302, 302, 145, 146, 147, 148, 149, 40, 302, 302,
- /* 2030 */ 302, 94, 302, 302, 302, 302, 302, 100, 101, 302,
- /* 2040 */ 302, 302, 302, 302, 107, 302, 109, 110, 111, 302,
- /* 2050 */ 302, 114, 302, 302, 302, 302, 302, 70, 302, 302,
- /* 2060 */ 302, 302, 302, 302, 302, 78, 302, 302, 81, 302,
- /* 2070 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 92,
- /* 2080 */ 302, 302, 145, 146, 147, 148, 149, 302, 302, 302,
- /* 2090 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2100 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2110 */ 302, 302, 302, 126, 302, 302, 302, 302, 131, 132,
- /* 2120 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2130 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2140 */ 302, 154, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2150 */ 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
- /* 2160 */ 302, 302, 302, 302, 302, 302, 302, 302, 302,
+ /* 0 */ 187, 187, 187, 216, 217, 187, 206, 187, 264, 265,
+ /* 10 */ 266, 187, 225, 187, 209, 187, 264, 265, 266, 19,
+ /* 20 */ 187, 187, 209, 210, 209, 210, 187, 209, 210, 209,
+ /* 30 */ 210, 31, 209, 209, 210, 209, 210, 285, 224, 39,
+ /* 40 */ 203, 204, 205, 43, 44, 45, 46, 47, 48, 49,
+ /* 50 */ 50, 51, 52, 53, 54, 55, 56, 57, 230, 19,
+ /* 60 */ 181, 182, 183, 184, 230, 245, 233, 208, 189, 245,
+ /* 70 */ 191, 245, 26, 206, 254, 216, 276, 198, 254, 198,
+ /* 80 */ 254, 281, 187, 43, 44, 45, 46, 47, 48, 49,
+ /* 90 */ 50, 51, 52, 53, 54, 55, 56, 57, 259, 99,
+ /* 100 */ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 110 */ 231, 232, 231, 232, 286, 302, 303, 302, 22, 304,
+ /* 120 */ 302, 303, 76, 244, 11, 244, 86, 19, 88, 248,
+ /* 130 */ 249, 264, 265, 266, 26, 89, 198, 258, 92, 99,
+ /* 140 */ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 150 */ 105, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ /* 160 */ 52, 53, 54, 55, 56, 57, 212, 288, 273, 231,
+ /* 170 */ 232, 105, 106, 107, 108, 109, 131, 69, 203, 204,
+ /* 180 */ 205, 136, 244, 99, 100, 101, 102, 103, 104, 105,
+ /* 190 */ 106, 107, 108, 109, 15, 103, 104, 19, 260, 103,
+ /* 200 */ 104, 54, 55, 56, 57, 58, 22, 99, 100, 101,
+ /* 210 */ 102, 103, 104, 105, 106, 107, 108, 109, 264, 265,
+ /* 220 */ 266, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ /* 230 */ 52, 53, 54, 55, 56, 57, 19, 124, 125, 60,
+ /* 240 */ 148, 24, 150, 59, 187, 67, 99, 100, 101, 102,
+ /* 250 */ 103, 104, 105, 106, 107, 108, 109, 187, 187, 109,
+ /* 260 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 270 */ 53, 54, 55, 56, 57, 204, 205, 99, 100, 101,
+ /* 280 */ 102, 103, 104, 105, 106, 107, 108, 109, 103, 104,
+ /* 290 */ 105, 106, 107, 108, 109, 59, 112, 113, 114, 76,
+ /* 300 */ 231, 232, 187, 19, 19, 22, 23, 23, 54, 55,
+ /* 310 */ 56, 57, 89, 244, 199, 92, 99, 100, 101, 102,
+ /* 320 */ 103, 104, 105, 106, 107, 108, 109, 43, 44, 45,
+ /* 330 */ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ /* 340 */ 56, 57, 19, 212, 187, 274, 23, 26, 112, 113,
+ /* 350 */ 114, 294, 295, 99, 100, 101, 102, 103, 104, 105,
+ /* 360 */ 106, 107, 108, 109, 59, 295, 43, 44, 45, 46,
+ /* 370 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ /* 380 */ 57, 98, 146, 99, 100, 101, 102, 103, 104, 105,
+ /* 390 */ 106, 107, 108, 109, 109, 264, 265, 266, 187, 187,
+ /* 400 */ 115, 116, 117, 118, 119, 120, 121, 73, 59, 19,
+ /* 410 */ 105, 23, 127, 23, 26, 81, 259, 112, 113, 114,
+ /* 420 */ 187, 72, 99, 100, 101, 102, 103, 104, 105, 106,
+ /* 430 */ 107, 108, 109, 43, 44, 45, 46, 47, 48, 49,
+ /* 440 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 124,
+ /* 450 */ 125, 182, 23, 184, 187, 134, 135, 123, 189, 131,
+ /* 460 */ 191, 112, 113, 114, 136, 187, 233, 198, 134, 135,
+ /* 470 */ 198, 259, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 480 */ 51, 52, 53, 54, 55, 56, 57, 209, 210, 99,
+ /* 490 */ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 500 */ 231, 232, 206, 231, 232, 187, 59, 296, 297, 76,
+ /* 510 */ 160, 161, 301, 244, 232, 19, 244, 297, 59, 23,
+ /* 520 */ 87, 301, 89, 245, 26, 92, 244, 258, 99, 100,
+ /* 530 */ 101, 102, 103, 104, 105, 106, 107, 108, 109, 43,
+ /* 540 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ /* 550 */ 54, 55, 56, 57, 19, 187, 97, 288, 23, 112,
+ /* 560 */ 113, 114, 115, 296, 297, 118, 119, 120, 301, 108,
+ /* 570 */ 109, 112, 113, 255, 141, 128, 117, 281, 43, 44,
+ /* 580 */ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 590 */ 55, 56, 57, 187, 187, 99, 100, 101, 102, 103,
+ /* 600 */ 104, 105, 106, 107, 108, 109, 26, 148, 149, 150,
+ /* 610 */ 115, 97, 59, 118, 119, 120, 209, 210, 73, 59,
+ /* 620 */ 122, 19, 209, 128, 256, 72, 187, 113, 187, 81,
+ /* 630 */ 223, 117, 227, 228, 99, 100, 101, 102, 103, 104,
+ /* 640 */ 105, 106, 107, 108, 109, 43, 44, 45, 46, 47,
+ /* 650 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ /* 660 */ 19, 255, 148, 149, 150, 112, 113, 114, 123, 124,
+ /* 670 */ 125, 230, 112, 113, 114, 22, 297, 22, 81, 22,
+ /* 680 */ 301, 59, 134, 135, 43, 44, 45, 46, 47, 48,
+ /* 690 */ 49, 50, 51, 52, 53, 54, 55, 56, 57, 139,
+ /* 700 */ 192, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ /* 710 */ 108, 109, 59, 116, 59, 187, 59, 231, 232, 46,
+ /* 720 */ 47, 48, 49, 16, 12, 145, 198, 22, 187, 187,
+ /* 730 */ 244, 134, 135, 222, 112, 113, 114, 209, 210, 27,
+ /* 740 */ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ /* 750 */ 109, 209, 210, 187, 42, 187, 154, 227, 228, 231,
+ /* 760 */ 232, 139, 22, 23, 59, 112, 113, 114, 113, 112,
+ /* 770 */ 113, 114, 244, 245, 233, 63, 19, 209, 210, 271,
+ /* 780 */ 187, 24, 254, 275, 77, 73, 79, 245, 195, 260,
+ /* 790 */ 117, 223, 199, 22, 23, 154, 19, 26, 22, 187,
+ /* 800 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 810 */ 53, 54, 55, 56, 57, 19, 187, 112, 113, 114,
+ /* 820 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 830 */ 53, 54, 55, 56, 57, 59, 263, 187, 98, 43,
+ /* 840 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ /* 850 */ 54, 55, 56, 57, 204, 205, 99, 100, 101, 102,
+ /* 860 */ 103, 104, 105, 106, 107, 108, 109, 255, 130, 98,
+ /* 870 */ 132, 133, 299, 300, 198, 187, 99, 100, 101, 102,
+ /* 880 */ 103, 104, 105, 106, 107, 108, 109, 187, 112, 113,
+ /* 890 */ 114, 187, 241, 187, 243, 99, 100, 101, 102, 103,
+ /* 900 */ 104, 105, 106, 107, 108, 109, 19, 231, 232, 209,
+ /* 910 */ 210, 282, 59, 209, 210, 209, 210, 16, 230, 19,
+ /* 920 */ 244, 22, 23, 223, 274, 26, 19, 223, 187, 223,
+ /* 930 */ 198, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 940 */ 53, 54, 55, 56, 57, 45, 46, 47, 48, 49,
+ /* 950 */ 50, 51, 52, 53, 54, 55, 56, 57, 19, 20,
+ /* 960 */ 187, 22, 187, 231, 232, 112, 113, 114, 123, 124,
+ /* 970 */ 125, 7, 8, 9, 187, 36, 244, 24, 77, 21,
+ /* 980 */ 79, 187, 209, 210, 187, 263, 99, 100, 101, 102,
+ /* 990 */ 103, 104, 105, 106, 107, 108, 109, 98, 59, 99,
+ /* 1000 */ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ /* 1010 */ 71, 187, 59, 187, 187, 19, 20, 187, 22, 112,
+ /* 1020 */ 81, 299, 300, 282, 230, 199, 291, 292, 22, 187,
+ /* 1030 */ 24, 256, 36, 209, 210, 187, 97, 35, 80, 209,
+ /* 1040 */ 210, 268, 103, 104, 48, 187, 220, 223, 222, 110,
+ /* 1050 */ 59, 112, 113, 114, 187, 59, 117, 156, 187, 179,
+ /* 1060 */ 180, 181, 182, 183, 184, 59, 113, 71, 66, 189,
+ /* 1070 */ 22, 191, 230, 134, 135, 245, 74, 119, 198, 282,
+ /* 1080 */ 297, 85, 224, 198, 301, 187, 90, 148, 149, 150,
+ /* 1090 */ 151, 152, 19, 97, 103, 104, 123, 124, 125, 103,
+ /* 1100 */ 104, 53, 111, 112, 113, 114, 110, 116, 112, 113,
+ /* 1110 */ 114, 231, 232, 117, 156, 124, 231, 232, 297, 113,
+ /* 1120 */ 187, 24, 301, 256, 244, 201, 202, 256, 126, 244,
+ /* 1130 */ 187, 198, 187, 187, 23, 187, 187, 26, 258, 148,
+ /* 1140 */ 19, 150, 209, 210, 148, 149, 150, 151, 152, 0,
+ /* 1150 */ 1, 2, 209, 210, 5, 209, 210, 209, 210, 10,
+ /* 1160 */ 11, 12, 13, 14, 231, 232, 17, 46, 288, 19,
+ /* 1170 */ 20, 223, 22, 236, 198, 66, 187, 244, 245, 30,
+ /* 1180 */ 12, 32, 198, 246, 59, 112, 36, 187, 245, 40,
+ /* 1190 */ 198, 245, 117, 29, 85, 27, 26, 33, 209, 210,
+ /* 1200 */ 297, 76, 127, 94, 301, 256, 26, 231, 232, 59,
+ /* 1210 */ 42, 153, 87, 155, 89, 231, 232, 92, 31, 70,
+ /* 1220 */ 244, 71, 26, 231, 232, 114, 39, 78, 244, 65,
+ /* 1230 */ 81, 63, 111, 233, 137, 85, 244, 112, 113, 114,
+ /* 1240 */ 90, 22, 59, 24, 95, 201, 202, 97, 127, 187,
+ /* 1250 */ 139, 142, 187, 103, 104, 19, 20, 187, 22, 187,
+ /* 1260 */ 110, 187, 112, 113, 114, 187, 141, 117, 141, 187,
+ /* 1270 */ 23, 187, 36, 26, 209, 210, 134, 135, 129, 209,
+ /* 1280 */ 210, 209, 210, 134, 135, 22, 159, 209, 210, 187,
+ /* 1290 */ 187, 209, 210, 209, 210, 59, 113, 187, 148, 149,
+ /* 1300 */ 150, 151, 152, 289, 290, 187, 157, 71, 248, 249,
+ /* 1310 */ 114, 141, 209, 210, 46, 125, 116, 117, 138, 19,
+ /* 1320 */ 20, 85, 22, 148, 61, 150, 90, 209, 210, 23,
+ /* 1330 */ 7, 8, 26, 97, 187, 139, 36, 147, 59, 103,
+ /* 1340 */ 104, 19, 20, 187, 22, 59, 110, 187, 112, 113,
+ /* 1350 */ 114, 1, 2, 117, 187, 5, 209, 210, 36, 59,
+ /* 1360 */ 10, 11, 12, 13, 14, 209, 210, 17, 59, 209,
+ /* 1370 */ 210, 71, 187, 148, 250, 150, 209, 210, 187, 111,
+ /* 1380 */ 30, 59, 32, 22, 148, 149, 150, 151, 152, 187,
+ /* 1390 */ 40, 187, 113, 71, 209, 210, 187, 97, 187, 113,
+ /* 1400 */ 209, 210, 187, 103, 104, 105, 23, 187, 187, 26,
+ /* 1410 */ 110, 187, 112, 113, 114, 83, 84, 117, 23, 97,
+ /* 1420 */ 70, 26, 113, 218, 187, 103, 104, 187, 78, 209,
+ /* 1430 */ 210, 81, 110, 187, 112, 113, 114, 19, 20, 117,
+ /* 1440 */ 22, 187, 187, 187, 187, 95, 209, 210, 148, 149,
+ /* 1450 */ 150, 151, 152, 187, 36, 23, 187, 187, 26, 187,
+ /* 1460 */ 187, 187, 187, 209, 210, 209, 210, 187, 187, 218,
+ /* 1470 */ 148, 149, 150, 151, 152, 209, 210, 59, 187, 129,
+ /* 1480 */ 187, 209, 210, 187, 134, 135, 187, 306, 187, 71,
+ /* 1490 */ 209, 210, 23, 228, 187, 26, 23, 187, 137, 26,
+ /* 1500 */ 209, 210, 209, 210, 187, 209, 210, 157, 209, 210,
+ /* 1510 */ 209, 210, 218, 187, 187, 97, 209, 210, 187, 278,
+ /* 1520 */ 23, 103, 104, 26, 187, 187, 187, 187, 110, 187,
+ /* 1530 */ 112, 113, 114, 187, 187, 117, 5, 247, 187, 187,
+ /* 1540 */ 187, 10, 11, 12, 13, 14, 209, 210, 17, 209,
+ /* 1550 */ 210, 209, 210, 187, 187, 187, 209, 210, 187, 23,
+ /* 1560 */ 187, 30, 26, 32, 187, 187, 148, 149, 150, 151,
+ /* 1570 */ 152, 40, 187, 187, 187, 209, 210, 209, 210, 187,
+ /* 1580 */ 209, 210, 209, 210, 187, 187, 209, 210, 187, 277,
+ /* 1590 */ 234, 187, 247, 187, 209, 210, 209, 210, 187, 235,
+ /* 1600 */ 187, 70, 187, 207, 247, 247, 247, 209, 210, 78,
+ /* 1610 */ 209, 210, 81, 209, 210, 209, 210, 187, 185, 238,
+ /* 1620 */ 209, 210, 209, 210, 209, 210, 95, 251, 287, 238,
+ /* 1630 */ 251, 23, 23, 23, 26, 26, 26, 283, 23, 209,
+ /* 1640 */ 210, 26, 213, 238, 221, 283, 212, 212, 217, 212,
+ /* 1650 */ 251, 241, 270, 241, 237, 235, 190, 60, 137, 287,
+ /* 1660 */ 129, 194, 194, 38, 284, 134, 135, 273, 284, 194,
+ /* 1670 */ 146, 111, 22, 43, 226, 145, 262, 261, 238, 18,
+ /* 1680 */ 229, 229, 229, 229, 194, 18, 193, 238, 157, 262,
+ /* 1690 */ 226, 226, 194, 238, 238, 193, 153, 261, 62, 280,
+ /* 1700 */ 279, 194, 193, 22, 194, 214, 193, 111, 194, 193,
+ /* 1710 */ 214, 211, 211, 64, 211, 211, 122, 211, 219, 214,
+ /* 1720 */ 109, 213, 160, 211, 300, 140, 211, 253, 111, 272,
+ /* 1730 */ 219, 214, 272, 214, 252, 194, 253, 252, 91, 253,
+ /* 1740 */ 252, 82, 253, 305, 252, 144, 305, 141, 22, 194,
+ /* 1750 */ 269, 257, 257, 153, 267, 143, 142, 25, 197, 26,
+ /* 1760 */ 242, 241, 196, 240, 242, 239, 238, 13, 188, 188,
+ /* 1770 */ 6, 293, 186, 186, 186, 200, 206, 293, 206, 206,
+ /* 1780 */ 206, 4, 200, 215, 215, 207, 207, 3, 22, 206,
+ /* 1790 */ 200, 158, 96, 15, 23, 16, 23, 135, 146, 126,
+ /* 1800 */ 24, 138, 20, 16, 140, 1, 138, 147, 126, 61,
+ /* 1810 */ 53, 37, 146, 53, 53, 290, 53, 126, 112, 34,
+ /* 1820 */ 137, 1, 5, 22, 111, 156, 68, 68, 26, 41,
+ /* 1830 */ 75, 137, 111, 24, 20, 19, 127, 121, 23, 67,
+ /* 1840 */ 22, 22, 67, 22, 22, 37, 22, 67, 23, 145,
+ /* 1850 */ 22, 28, 23, 23, 23, 137, 23, 22, 26, 22,
+ /* 1860 */ 24, 23, 112, 24, 23, 23, 22, 139, 34, 26,
+ /* 1870 */ 75, 88, 86, 75, 34, 23, 22, 24, 22, 34,
+ /* 1880 */ 34, 34, 93, 34, 26, 26, 23, 23, 23, 34,
+ /* 1890 */ 23, 23, 44, 23, 11, 26, 22, 22, 26, 23,
+ /* 1900 */ 23, 22, 22, 15, 137, 137, 137, 137, 23, 1,
+ /* 1910 */ 307, 307, 131, 307, 307, 307, 307, 307, 307, 307,
+ /* 1920 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1930 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1940 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1950 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1960 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1970 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1980 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 1990 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2000 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2010 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2020 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2030 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2040 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2050 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2060 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2070 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2080 */ 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
+ /* 2090 */ 307, 307,
};
-#define YY_SHIFT_COUNT (539)
+#define YY_SHIFT_COUNT (542)
#define YY_SHIFT_MIN (0)
-#define YY_SHIFT_MAX (1987)
+#define YY_SHIFT_MAX (1908)
static const unsigned short int yy_shift_ofst[] = {
- /* 0 */ 1814, 1632, 1987, 1426, 1426, 382, 1482, 1633, 1703, 1877,
- /* 10 */ 1877, 1877, 85, 0, 0, 264, 1106, 1877, 1877, 1877,
- /* 20 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
- /* 30 */ 226, 226, 380, 380, 294, 667, 382, 382, 382, 382,
- /* 40 */ 382, 382, 97, 194, 332, 429, 526, 623, 720, 817,
- /* 50 */ 914, 934, 1086, 1238, 1106, 1106, 1106, 1106, 1106, 1106,
- /* 60 */ 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
- /* 70 */ 1106, 1106, 1258, 1106, 1355, 1375, 1375, 1817, 1877, 1877,
- /* 80 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
- /* 90 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
- /* 100 */ 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
- /* 110 */ 1937, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
- /* 120 */ 1877, 1877, 1877, 1877, 32, 129, 129, 129, 129, 129,
- /* 130 */ 171, 7, 17, 593, 676, 590, 593, 205, 205, 593,
- /* 140 */ 318, 318, 318, 318, 50, 152, 51, 2142, 2142, 284,
- /* 150 */ 284, 284, 65, 145, 282, 145, 145, 574, 574, 256,
- /* 160 */ 348, 445, 782, 593, 593, 593, 593, 593, 593, 593,
- /* 170 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
- /* 180 */ 593, 593, 593, 593, 607, 607, 593, 721, 805, 805,
- /* 190 */ 446, 851, 851, 446, 190, 979, 2142, 2142, 2142, 453,
- /* 200 */ 45, 45, 480, 490, 484, 385, 575, 502, 551, 581,
- /* 210 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 689,
- /* 220 */ 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
- /* 230 */ 593, 593, 582, 582, 582, 593, 593, 593, 593, 771,
- /* 240 */ 593, 593, 593, 59, 764, 593, 593, 863, 593, 593,
- /* 250 */ 593, 593, 593, 593, 593, 593, 665, 819, 580, 16,
- /* 260 */ 16, 16, 16, 1119, 580, 580, 967, 321, 931, 1042,
- /* 270 */ 1077, 783, 783, 834, 1077, 1077, 834, 1121, 1195, 401,
- /* 280 */ 1142, 1142, 1142, 783, 787, 787, 1074, 1191, 1092, 1205,
- /* 290 */ 1354, 1284, 1284, 1381, 1381, 1284, 1297, 1334, 1421, 1407,
- /* 300 */ 1322, 1447, 1447, 1447, 1447, 1284, 1452, 1322, 1322, 1334,
- /* 310 */ 1421, 1407, 1407, 1322, 1284, 1452, 1345, 1434, 1284, 1452,
- /* 320 */ 1483, 1284, 1452, 1284, 1452, 1483, 1404, 1404, 1404, 1451,
- /* 330 */ 1483, 1404, 1400, 1404, 1451, 1404, 1404, 1483, 1419, 1419,
- /* 340 */ 1483, 1406, 1436, 1406, 1436, 1406, 1436, 1406, 1436, 1284,
- /* 350 */ 1457, 1457, 1408, 1414, 1534, 1284, 1412, 1408, 1425, 1431,
- /* 360 */ 1322, 1555, 1559, 1574, 1574, 1588, 1588, 1588, 2142, 2142,
- /* 370 */ 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142, 2142,
- /* 380 */ 2142, 2142, 2142, 378, 777, 836, 971, 825, 775, 983,
- /* 390 */ 1208, 1179, 1217, 1120, 1220, 1206, 1221, 1222, 1226, 1227,
- /* 400 */ 1228, 1233, 937, 1147, 1261, 1149, 1207, 1248, 1249, 1253,
- /* 410 */ 1133, 1151, 1274, 1293, 1211, 1236, 1605, 1607, 1589, 1458,
- /* 420 */ 1599, 1525, 1604, 1600, 1602, 1490, 1492, 1503, 1612, 1504,
- /* 430 */ 1618, 1510, 1624, 1640, 1513, 1506, 1528, 1593, 1619, 1514,
- /* 440 */ 1606, 1608, 1610, 1613, 1535, 1551, 1631, 1533, 1667, 1665,
- /* 450 */ 1649, 1565, 1521, 1609, 1650, 1611, 1603, 1634, 1546, 1573,
- /* 460 */ 1658, 1663, 1666, 1560, 1568, 1668, 1620, 1669, 1671, 1672,
- /* 470 */ 1674, 1621, 1661, 1675, 1627, 1662, 1677, 1556, 1679, 1680,
- /* 480 */ 1548, 1683, 1684, 1682, 1686, 1689, 1688, 1691, 1694, 1693,
- /* 490 */ 1584, 1696, 1698, 1617, 1695, 1706, 1594, 1705, 1701, 1702,
- /* 500 */ 1704, 1707, 1647, 1670, 1654, 1708, 1673, 1656, 1715, 1727,
- /* 510 */ 1729, 1730, 1731, 1733, 1719, 1732, 1705, 1737, 1738, 1742,
- /* 520 */ 1743, 1741, 1745, 1734, 1758, 1748, 1749, 1750, 1752, 1754,
- /* 530 */ 1755, 1746, 1655, 1653, 1657, 1659, 1660, 1761, 1773, 1788,
+ /* 0 */ 1350, 1149, 1531, 939, 939, 548, 996, 1150, 1236, 1322,
+ /* 10 */ 1322, 1322, 334, 0, 0, 178, 777, 1322, 1322, 1322,
+ /* 20 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ /* 30 */ 991, 991, 1125, 1125, 447, 597, 548, 548, 548, 548,
+ /* 40 */ 548, 548, 40, 108, 217, 284, 323, 390, 429, 496,
+ /* 50 */ 535, 602, 641, 757, 777, 777, 777, 777, 777, 777,
+ /* 60 */ 777, 777, 777, 777, 777, 777, 777, 777, 777, 777,
+ /* 70 */ 777, 777, 796, 777, 887, 900, 900, 1300, 1322, 1322,
+ /* 80 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ /* 90 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ /* 100 */ 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ /* 110 */ 1418, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+ /* 120 */ 1322, 1322, 1322, 1322, 147, 254, 254, 254, 254, 254,
+ /* 130 */ 84, 185, 66, 853, 958, 1121, 853, 92, 92, 853,
+ /* 140 */ 321, 321, 321, 321, 325, 350, 350, 461, 150, 1913,
+ /* 150 */ 1913, 285, 285, 285, 236, 184, 349, 184, 184, 712,
+ /* 160 */ 712, 433, 553, 771, 899, 853, 853, 853, 853, 853,
+ /* 170 */ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ /* 180 */ 853, 853, 853, 853, 853, 853, 46, 46, 853, 113,
+ /* 190 */ 223, 223, 1183, 1183, 1127, 1142, 1913, 1913, 1913, 459,
+ /* 200 */ 514, 514, 653, 495, 657, 305, 705, 560, 622, 776,
+ /* 210 */ 853, 853, 853, 853, 853, 853, 853, 853, 853, 545,
+ /* 220 */ 853, 853, 853, 853, 853, 853, 853, 853, 853, 853,
+ /* 230 */ 853, 853, 1002, 1002, 1002, 853, 853, 853, 853, 1111,
+ /* 240 */ 853, 853, 853, 1006, 1109, 853, 853, 1168, 853, 853,
+ /* 250 */ 853, 853, 853, 853, 853, 853, 845, 1164, 738, 953,
+ /* 260 */ 953, 953, 953, 1196, 738, 738, 45, 96, 964, 179,
+ /* 270 */ 580, 907, 907, 1073, 580, 580, 1073, 498, 388, 1268,
+ /* 280 */ 1187, 1187, 1187, 907, 1170, 1170, 1058, 1180, 328, 1219,
+ /* 290 */ 1597, 1521, 1521, 1625, 1625, 1521, 1524, 1560, 1650, 1630,
+ /* 300 */ 1530, 1661, 1661, 1661, 1661, 1521, 1667, 1530, 1530, 1560,
+ /* 310 */ 1650, 1630, 1630, 1530, 1521, 1667, 1543, 1636, 1521, 1667,
+ /* 320 */ 1681, 1521, 1667, 1521, 1667, 1681, 1596, 1596, 1596, 1649,
+ /* 330 */ 1681, 1596, 1594, 1596, 1649, 1596, 1596, 1562, 1681, 1611,
+ /* 340 */ 1611, 1681, 1585, 1617, 1585, 1617, 1585, 1617, 1585, 1617,
+ /* 350 */ 1521, 1647, 1647, 1659, 1659, 1601, 1606, 1726, 1521, 1600,
+ /* 360 */ 1601, 1612, 1614, 1530, 1732, 1733, 1754, 1754, 1764, 1764,
+ /* 370 */ 1764, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913, 1913,
+ /* 380 */ 1913, 1913, 1913, 1913, 1913, 1913, 673, 901, 283, 740,
+ /* 390 */ 707, 973, 655, 1247, 1048, 1097, 1190, 1306, 1263, 1383,
+ /* 400 */ 1395, 1432, 1469, 1473, 1497, 1279, 1200, 1323, 1075, 1286,
+ /* 410 */ 1536, 1608, 1332, 1609, 1175, 1225, 1610, 1615, 1309, 1361,
+ /* 420 */ 1777, 1784, 1766, 1633, 1778, 1696, 1779, 1771, 1773, 1662,
+ /* 430 */ 1652, 1673, 1776, 1663, 1782, 1664, 1787, 1804, 1668, 1660,
+ /* 440 */ 1682, 1748, 1774, 1666, 1757, 1760, 1761, 1763, 1691, 1706,
+ /* 450 */ 1785, 1683, 1820, 1817, 1801, 1713, 1669, 1758, 1802, 1759,
+ /* 460 */ 1755, 1788, 1694, 1721, 1809, 1814, 1816, 1709, 1716, 1818,
+ /* 470 */ 1772, 1819, 1821, 1815, 1822, 1775, 1823, 1824, 1780, 1808,
+ /* 480 */ 1825, 1704, 1828, 1829, 1830, 1831, 1832, 1833, 1835, 1836,
+ /* 490 */ 1838, 1837, 1839, 1718, 1841, 1842, 1750, 1834, 1844, 1728,
+ /* 500 */ 1843, 1840, 1845, 1846, 1847, 1783, 1795, 1786, 1848, 1798,
+ /* 510 */ 1789, 1849, 1852, 1854, 1853, 1858, 1859, 1855, 1863, 1843,
+ /* 520 */ 1864, 1865, 1867, 1868, 1869, 1870, 1856, 1883, 1874, 1875,
+ /* 530 */ 1876, 1877, 1879, 1880, 1872, 1781, 1767, 1768, 1769, 1770,
+ /* 540 */ 1885, 1888, 1908,
};
-#define YY_REDUCE_COUNT (382)
-#define YY_REDUCE_MIN (-260)
-#define YY_REDUCE_MAX (1420)
+#define YY_REDUCE_COUNT (385)
+#define YY_REDUCE_MIN (-256)
+#define YY_REDUCE_MAX (1590)
static const short yy_reduce_ofst[] = {
- /* 0 */ -170, -18, -159, 309, 313, -167, -19, 75, 117, 211,
- /* 10 */ 315, 317, -165, -195, -168, -260, 389, 437, 475, 524,
- /* 20 */ 527, -169, 529, 531, -28, 80, 534, 239, 304, 412,
- /* 30 */ 558, 577, 37, 120, 368, -22, 460, 517, 555, 560,
- /* 40 */ 562, 586, -257, -257, -257, -257, -257, -257, -257, -257,
- /* 50 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
- /* 60 */ -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
- /* 70 */ -257, -257, -257, -257, -257, -257, -257, -172, 457, 628,
- /* 80 */ 673, 692, 694, 702, 704, 722, 728, 740, 743, 748,
- /* 90 */ 767, 791, 815, 818, 820, 822, 857, 861, 864, 866,
- /* 100 */ 868, 870, 872, 874, 876, 881, 900, 902, 906, 908,
- /* 110 */ 910, 912, 915, 917, 920, 960, 962, 964, 988, 990,
- /* 120 */ 992, 1016, 1029, 1032, -257, -257, -257, -257, -257, -257,
- /* 130 */ -257, -257, -257, 271, 618, -190, 68, 60, 240, -124,
- /* 140 */ 603, 610, 603, 610, 12, -257, -257, -257, -257, -128,
- /* 150 */ -128, -128, -142, 25, 270, 281, 333, 124, 236, 648,
- /* 160 */ 374, 465, 465, 28, 598, 792, 839, 469, 38, 381,
- /* 170 */ 622, 709, 173, 699, 522, 703, 808, 811, 867, 816,
- /* 180 */ -104, 823, -3, 875, 649, 753, 323, -88, 882, 884,
- /* 190 */ 518, 43, 325, 899, 763, 604, 879, 969, 402, -193,
- /* 200 */ -189, -180, -151, -55, 69, 104, 141, 259, 286, 360,
- /* 210 */ 364, 455, 474, 481, 510, 516, 611, 653, 788, 99,
- /* 220 */ 871, 878, 995, 1009, 1049, 1081, 1115, 1134, 1136, 1138,
- /* 230 */ 1139, 1140, 733, 1110, 1112, 1144, 1145, 1146, 1148, 1084,
- /* 240 */ 1161, 1162, 1163, 1089, 1047, 1165, 1166, 1127, 1169, 104,
- /* 250 */ 1181, 1182, 1183, 1184, 1185, 1187, 1098, 1100, 1150, 1131,
- /* 260 */ 1132, 1135, 1141, 1084, 1150, 1150, 1152, 1173, 1196, 1097,
- /* 270 */ 1153, 1143, 1167, 1103, 1154, 1155, 1104, 1176, 1174, 1199,
- /* 280 */ 1178, 1186, 1188, 1168, 1158, 1160, 1170, 1159, 1201, 1230,
- /* 290 */ 1156, 1243, 1244, 1157, 1164, 1247, 1172, 1189, 1192, 1240,
- /* 300 */ 1231, 1241, 1242, 1256, 1257, 1278, 1294, 1251, 1252, 1232,
- /* 310 */ 1234, 1265, 1266, 1259, 1301, 1303, 1223, 1225, 1307, 1313,
- /* 320 */ 1295, 1317, 1319, 1320, 1323, 1299, 1306, 1308, 1309, 1305,
- /* 330 */ 1311, 1315, 1314, 1321, 1312, 1324, 1326, 1327, 1263, 1271,
- /* 340 */ 1331, 1296, 1298, 1300, 1302, 1304, 1310, 1316, 1318, 1357,
- /* 350 */ 1255, 1260, 1329, 1325, 1332, 1370, 1333, 1338, 1341, 1343,
- /* 360 */ 1346, 1390, 1393, 1403, 1405, 1416, 1417, 1418, 1328, 1330,
- /* 370 */ 1335, 1409, 1394, 1399, 1401, 1402, 1410, 1391, 1396, 1411,
- /* 380 */ 1420, 1413, 1415,
+ /* 0 */ 880, -121, 269, 528, 933, -119, -187, -185, -182, -180,
+ /* 10 */ -176, -174, -62, -46, 131, -248, -133, 407, 568, 700,
+ /* 20 */ 704, 278, 706, 824, 542, 830, 948, 773, 943, 946,
+ /* 30 */ 71, 650, 211, 267, 826, 272, 676, 732, 885, 976,
+ /* 40 */ 984, 992, -256, -256, -256, -256, -256, -256, -256, -256,
+ /* 50 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /* 60 */ -256, -256, -256, -256, -256, -256, -256, -256, -256, -256,
+ /* 70 */ -256, -256, -256, -256, -256, -256, -256, 989, 1065, 1070,
+ /* 80 */ 1072, 1078, 1082, 1084, 1103, 1118, 1147, 1156, 1160, 1167,
+ /* 90 */ 1185, 1191, 1220, 1237, 1254, 1256, 1266, 1272, 1281, 1291,
+ /* 100 */ 1293, 1296, 1299, 1301, 1307, 1337, 1340, 1342, 1347, 1366,
+ /* 110 */ 1368, 1371, 1373, 1377, 1385, 1387, 1398, 1401, 1404, 1406,
+ /* 120 */ 1411, 1413, 1415, 1430, -256, -256, -256, -256, -256, -256,
+ /* 130 */ -256, -256, -256, -172, 508, -213, 57, -163, -25, 593,
+ /* 140 */ 69, 486, 69, 486, -200, 573, 722, -256, -256, -256,
+ /* 150 */ -256, -141, -141, -141, -105, -161, -167, 157, 212, 405,
+ /* 160 */ 530, 220, 233, 735, 735, 115, 318, 406, 612, 541,
+ /* 170 */ -166, 441, 688, 794, 629, 368, 741, 775, 867, 797,
+ /* 180 */ 871, 842, -186, 1000, 858, 949, 379, 783, 70, 296,
+ /* 190 */ 821, 903, 924, 1044, 651, 282, 1014, 1060, 937, -195,
+ /* 200 */ -177, 413, 439, 511, 566, 787, 827, 848, 898, 945,
+ /* 210 */ 1062, 1074, 1102, 1110, 1202, 1204, 1209, 1211, 1215, 529,
+ /* 220 */ 1221, 1224, 1240, 1246, 1255, 1257, 1269, 1270, 1273, 1274,
+ /* 230 */ 1275, 1280, 1205, 1251, 1294, 1310, 1317, 1326, 1327, 1124,
+ /* 240 */ 1331, 1338, 1339, 1290, 1181, 1346, 1351, 1265, 1352, 787,
+ /* 250 */ 1353, 1367, 1378, 1386, 1392, 1397, 1241, 1312, 1356, 1345,
+ /* 260 */ 1357, 1358, 1359, 1124, 1356, 1356, 1364, 1396, 1433, 1341,
+ /* 270 */ 1381, 1376, 1379, 1354, 1391, 1405, 1362, 1429, 1423, 1431,
+ /* 280 */ 1434, 1435, 1437, 1399, 1410, 1412, 1382, 1417, 1420, 1466,
+ /* 290 */ 1372, 1467, 1468, 1380, 1384, 1475, 1394, 1414, 1416, 1448,
+ /* 300 */ 1440, 1451, 1452, 1453, 1454, 1490, 1493, 1449, 1455, 1427,
+ /* 310 */ 1436, 1464, 1465, 1456, 1498, 1502, 1419, 1421, 1507, 1509,
+ /* 320 */ 1491, 1510, 1513, 1514, 1516, 1496, 1500, 1501, 1503, 1499,
+ /* 330 */ 1505, 1504, 1508, 1506, 1511, 1512, 1515, 1424, 1517, 1457,
+ /* 340 */ 1460, 1519, 1474, 1482, 1483, 1485, 1486, 1488, 1489, 1492,
+ /* 350 */ 1541, 1438, 1441, 1494, 1495, 1518, 1520, 1487, 1555, 1481,
+ /* 360 */ 1522, 1523, 1526, 1528, 1561, 1566, 1580, 1581, 1586, 1587,
+ /* 370 */ 1588, 1478, 1484, 1525, 1575, 1570, 1572, 1573, 1574, 1582,
+ /* 380 */ 1568, 1569, 1578, 1579, 1583, 1590,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 1537, 1537, 1537, 1377, 1159, 1266, 1159, 1159, 1159, 1377,
- /* 10 */ 1377, 1377, 1159, 1296, 1296, 1430, 1190, 1159, 1159, 1159,
- /* 20 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1376, 1159, 1159,
- /* 30 */ 1159, 1159, 1460, 1460, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 40 */ 1159, 1159, 1159, 1302, 1159, 1159, 1159, 1159, 1159, 1378,
- /* 50 */ 1379, 1159, 1159, 1159, 1429, 1431, 1394, 1312, 1311, 1310,
- /* 60 */ 1309, 1412, 1283, 1307, 1300, 1304, 1372, 1373, 1371, 1375,
- /* 70 */ 1379, 1378, 1159, 1303, 1343, 1357, 1342, 1159, 1159, 1159,
- /* 80 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 90 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 100 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 110 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 120 */ 1159, 1159, 1159, 1159, 1351, 1356, 1362, 1355, 1352, 1345,
- /* 130 */ 1344, 1346, 1347, 1159, 1180, 1230, 1159, 1159, 1159, 1159,
- /* 140 */ 1448, 1447, 1159, 1159, 1190, 1348, 1349, 1359, 1358, 1437,
- /* 150 */ 1493, 1492, 1395, 1159, 1159, 1159, 1159, 1159, 1159, 1460,
- /* 160 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 170 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 180 */ 1159, 1159, 1159, 1159, 1460, 1460, 1159, 1190, 1460, 1460,
- /* 190 */ 1186, 1337, 1336, 1186, 1290, 1159, 1443, 1266, 1257, 1159,
- /* 200 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 210 */ 1159, 1159, 1159, 1434, 1432, 1159, 1159, 1159, 1159, 1159,
- /* 220 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 230 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 240 */ 1159, 1159, 1159, 1262, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 250 */ 1159, 1159, 1159, 1159, 1159, 1487, 1159, 1407, 1244, 1262,
- /* 260 */ 1262, 1262, 1262, 1264, 1245, 1243, 1256, 1191, 1166, 1529,
- /* 270 */ 1306, 1285, 1285, 1526, 1306, 1306, 1526, 1205, 1507, 1202,
- /* 280 */ 1296, 1296, 1296, 1285, 1290, 1290, 1374, 1263, 1256, 1159,
- /* 290 */ 1529, 1271, 1271, 1528, 1528, 1271, 1395, 1315, 1321, 1233,
- /* 300 */ 1306, 1239, 1239, 1239, 1239, 1271, 1177, 1306, 1306, 1315,
- /* 310 */ 1321, 1233, 1233, 1306, 1271, 1177, 1411, 1523, 1271, 1177,
- /* 320 */ 1385, 1271, 1177, 1271, 1177, 1385, 1231, 1231, 1231, 1220,
- /* 330 */ 1385, 1231, 1205, 1231, 1220, 1231, 1231, 1385, 1389, 1389,
- /* 340 */ 1385, 1289, 1284, 1289, 1284, 1289, 1284, 1289, 1284, 1271,
- /* 350 */ 1470, 1470, 1301, 1290, 1380, 1271, 1159, 1301, 1299, 1297,
- /* 360 */ 1306, 1183, 1223, 1490, 1490, 1486, 1486, 1486, 1534, 1534,
- /* 370 */ 1443, 1502, 1190, 1190, 1190, 1190, 1502, 1207, 1207, 1191,
- /* 380 */ 1191, 1190, 1502, 1159, 1159, 1159, 1159, 1159, 1159, 1497,
- /* 390 */ 1159, 1396, 1275, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 400 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 410 */ 1159, 1159, 1159, 1159, 1159, 1326, 1159, 1162, 1440, 1159,
- /* 420 */ 1159, 1438, 1159, 1159, 1159, 1159, 1159, 1159, 1276, 1159,
- /* 430 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 440 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1525, 1159, 1159,
- /* 450 */ 1159, 1159, 1159, 1159, 1410, 1409, 1159, 1159, 1273, 1159,
- /* 460 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 470 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 480 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 490 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1298, 1159, 1159,
- /* 500 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 510 */ 1159, 1159, 1475, 1291, 1159, 1159, 1516, 1159, 1159, 1159,
- /* 520 */ 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
- /* 530 */ 1159, 1511, 1247, 1328, 1159, 1327, 1331, 1159, 1171, 1159,
+ /* 0 */ 1554, 1554, 1554, 1392, 1171, 1278, 1171, 1171, 1171, 1392,
+ /* 10 */ 1392, 1392, 1171, 1308, 1308, 1445, 1202, 1171, 1171, 1171,
+ /* 20 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1391, 1171, 1171,
+ /* 30 */ 1171, 1171, 1475, 1475, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 40 */ 1171, 1171, 1171, 1317, 1171, 1171, 1171, 1171, 1171, 1393,
+ /* 50 */ 1394, 1171, 1171, 1171, 1444, 1446, 1409, 1327, 1326, 1325,
+ /* 60 */ 1324, 1427, 1295, 1322, 1315, 1319, 1387, 1388, 1386, 1390,
+ /* 70 */ 1394, 1393, 1171, 1318, 1358, 1372, 1357, 1171, 1171, 1171,
+ /* 80 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 90 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 100 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 110 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 120 */ 1171, 1171, 1171, 1171, 1366, 1371, 1377, 1370, 1367, 1360,
+ /* 130 */ 1359, 1361, 1362, 1171, 1192, 1242, 1171, 1171, 1171, 1171,
+ /* 140 */ 1463, 1462, 1171, 1171, 1202, 1352, 1351, 1363, 1364, 1374,
+ /* 150 */ 1373, 1452, 1510, 1509, 1410, 1171, 1171, 1171, 1171, 1171,
+ /* 160 */ 1171, 1475, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 170 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 180 */ 1171, 1171, 1171, 1171, 1171, 1171, 1475, 1475, 1171, 1202,
+ /* 190 */ 1475, 1475, 1198, 1198, 1302, 1171, 1458, 1278, 1269, 1171,
+ /* 200 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 210 */ 1171, 1171, 1171, 1449, 1447, 1171, 1171, 1171, 1171, 1171,
+ /* 220 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 230 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 240 */ 1171, 1171, 1171, 1274, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 250 */ 1171, 1171, 1171, 1171, 1171, 1504, 1171, 1422, 1256, 1274,
+ /* 260 */ 1274, 1274, 1274, 1276, 1257, 1255, 1268, 1203, 1178, 1546,
+ /* 270 */ 1321, 1297, 1297, 1543, 1321, 1321, 1543, 1217, 1524, 1214,
+ /* 280 */ 1308, 1308, 1308, 1297, 1302, 1302, 1389, 1275, 1268, 1171,
+ /* 290 */ 1546, 1283, 1283, 1545, 1545, 1283, 1410, 1330, 1336, 1245,
+ /* 300 */ 1321, 1251, 1251, 1251, 1251, 1283, 1189, 1321, 1321, 1330,
+ /* 310 */ 1336, 1245, 1245, 1321, 1283, 1189, 1426, 1540, 1283, 1189,
+ /* 320 */ 1400, 1283, 1189, 1283, 1189, 1400, 1243, 1243, 1243, 1232,
+ /* 330 */ 1400, 1243, 1217, 1243, 1232, 1243, 1243, 1493, 1400, 1404,
+ /* 340 */ 1404, 1400, 1301, 1296, 1301, 1296, 1301, 1296, 1301, 1296,
+ /* 350 */ 1283, 1485, 1485, 1311, 1311, 1316, 1302, 1395, 1283, 1171,
+ /* 360 */ 1316, 1314, 1312, 1321, 1195, 1235, 1507, 1507, 1503, 1503,
+ /* 370 */ 1503, 1551, 1551, 1458, 1519, 1202, 1202, 1202, 1202, 1519,
+ /* 380 */ 1219, 1219, 1203, 1203, 1202, 1519, 1171, 1171, 1171, 1171,
+ /* 390 */ 1171, 1171, 1514, 1171, 1411, 1287, 1171, 1171, 1171, 1171,
+ /* 400 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 410 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1341,
+ /* 420 */ 1171, 1174, 1455, 1171, 1171, 1453, 1171, 1171, 1171, 1171,
+ /* 430 */ 1171, 1171, 1288, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 440 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 450 */ 1171, 1542, 1171, 1171, 1171, 1171, 1171, 1171, 1425, 1424,
+ /* 460 */ 1171, 1171, 1285, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 470 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 480 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 490 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 500 */ 1313, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 510 */ 1171, 1171, 1171, 1171, 1171, 1490, 1303, 1171, 1171, 1533,
+ /* 520 */ 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
+ /* 530 */ 1171, 1171, 1171, 1171, 1528, 1259, 1343, 1171, 1342, 1346,
+ /* 540 */ 1171, 1183, 1171,
};
/********** End of lemon-generated parsing tables *****************************/
@@ -149754,6 +150692,9 @@ static const YYCODETYPE yyFallback[] = {
59, /* VIEW => ID */
59, /* VIRTUAL => ID */
59, /* WITH => ID */
+ 59, /* NULLS => ID */
+ 59, /* FIRST => ID */
+ 59, /* LAST => ID */
59, /* CURRENT => ID */
59, /* FOLLOWING => ID */
59, /* PARTITION => ID */
@@ -149767,6 +150708,87 @@ static const YYCODETYPE yyFallback[] = {
59, /* REINDEX => ID */
59, /* RENAME => ID */
59, /* CTIME_KW => ID */
+ 0, /* ANY => nothing */
+ 0, /* BITAND => nothing */
+ 0, /* BITOR => nothing */
+ 0, /* LSHIFT => nothing */
+ 0, /* RSHIFT => nothing */
+ 0, /* PLUS => nothing */
+ 0, /* MINUS => nothing */
+ 0, /* STAR => nothing */
+ 0, /* SLASH => nothing */
+ 0, /* REM => nothing */
+ 0, /* CONCAT => nothing */
+ 0, /* COLLATE => nothing */
+ 0, /* BITNOT => nothing */
+ 0, /* ON => nothing */
+ 0, /* INDEXED => nothing */
+ 0, /* STRING => nothing */
+ 0, /* JOIN_KW => nothing */
+ 0, /* CONSTRAINT => nothing */
+ 0, /* DEFAULT => nothing */
+ 0, /* NULL => nothing */
+ 0, /* PRIMARY => nothing */
+ 0, /* UNIQUE => nothing */
+ 0, /* CHECK => nothing */
+ 0, /* REFERENCES => nothing */
+ 0, /* AUTOINCR => nothing */
+ 0, /* INSERT => nothing */
+ 0, /* DELETE => nothing */
+ 0, /* UPDATE => nothing */
+ 0, /* SET => nothing */
+ 0, /* DEFERRABLE => nothing */
+ 0, /* FOREIGN => nothing */
+ 0, /* DROP => nothing */
+ 0, /* UNION => nothing */
+ 0, /* ALL => nothing */
+ 0, /* EXCEPT => nothing */
+ 0, /* INTERSECT => nothing */
+ 0, /* SELECT => nothing */
+ 0, /* VALUES => nothing */
+ 0, /* DISTINCT => nothing */
+ 0, /* DOT => nothing */
+ 0, /* FROM => nothing */
+ 0, /* JOIN => nothing */
+ 0, /* USING => nothing */
+ 0, /* ORDER => nothing */
+ 0, /* GROUP => nothing */
+ 0, /* HAVING => nothing */
+ 0, /* LIMIT => nothing */
+ 0, /* WHERE => nothing */
+ 0, /* INTO => nothing */
+ 0, /* NOTHING => nothing */
+ 0, /* FLOAT => nothing */
+ 0, /* BLOB => nothing */
+ 0, /* INTEGER => nothing */
+ 0, /* VARIABLE => nothing */
+ 0, /* CASE => nothing */
+ 0, /* WHEN => nothing */
+ 0, /* THEN => nothing */
+ 0, /* ELSE => nothing */
+ 0, /* INDEX => nothing */
+ 0, /* ALTER => nothing */
+ 0, /* ADD => nothing */
+ 0, /* WINDOW => nothing */
+ 0, /* OVER => nothing */
+ 0, /* FILTER => nothing */
+ 0, /* COLUMN => nothing */
+ 0, /* AGG_FUNCTION => nothing */
+ 0, /* AGG_COLUMN => nothing */
+ 0, /* TRUEFALSE => nothing */
+ 0, /* ISNOT => nothing */
+ 0, /* FUNCTION => nothing */
+ 0, /* UMINUS => nothing */
+ 0, /* UPLUS => nothing */
+ 0, /* TRUTH => nothing */
+ 0, /* REGISTER => nothing */
+ 0, /* VECTOR => nothing */
+ 0, /* SELECT_COLUMN => nothing */
+ 0, /* IF_NULL_ROW => nothing */
+ 0, /* ASTERISK => nothing */
+ 0, /* SPAN => nothing */
+ 0, /* SPACE => nothing */
+ 0, /* ILLEGAL => nothing */
};
#endif /* YYFALLBACK */
@@ -149936,226 +150958,231 @@ static const char *const yyTokenName[] = {
/* 79 */ "VIEW",
/* 80 */ "VIRTUAL",
/* 81 */ "WITH",
- /* 82 */ "CURRENT",
- /* 83 */ "FOLLOWING",
- /* 84 */ "PARTITION",
- /* 85 */ "PRECEDING",
- /* 86 */ "RANGE",
- /* 87 */ "UNBOUNDED",
- /* 88 */ "EXCLUDE",
- /* 89 */ "GROUPS",
- /* 90 */ "OTHERS",
- /* 91 */ "TIES",
- /* 92 */ "REINDEX",
- /* 93 */ "RENAME",
- /* 94 */ "CTIME_KW",
- /* 95 */ "ANY",
- /* 96 */ "BITAND",
- /* 97 */ "BITOR",
- /* 98 */ "LSHIFT",
- /* 99 */ "RSHIFT",
- /* 100 */ "PLUS",
- /* 101 */ "MINUS",
- /* 102 */ "STAR",
- /* 103 */ "SLASH",
- /* 104 */ "REM",
- /* 105 */ "CONCAT",
- /* 106 */ "COLLATE",
- /* 107 */ "BITNOT",
- /* 108 */ "ON",
- /* 109 */ "INDEXED",
- /* 110 */ "STRING",
- /* 111 */ "JOIN_KW",
- /* 112 */ "CONSTRAINT",
- /* 113 */ "DEFAULT",
- /* 114 */ "NULL",
- /* 115 */ "PRIMARY",
- /* 116 */ "UNIQUE",
- /* 117 */ "CHECK",
- /* 118 */ "REFERENCES",
- /* 119 */ "AUTOINCR",
- /* 120 */ "INSERT",
- /* 121 */ "DELETE",
- /* 122 */ "UPDATE",
- /* 123 */ "SET",
- /* 124 */ "DEFERRABLE",
- /* 125 */ "FOREIGN",
- /* 126 */ "DROP",
- /* 127 */ "UNION",
- /* 128 */ "ALL",
- /* 129 */ "EXCEPT",
- /* 130 */ "INTERSECT",
- /* 131 */ "SELECT",
- /* 132 */ "VALUES",
- /* 133 */ "DISTINCT",
- /* 134 */ "DOT",
- /* 135 */ "FROM",
- /* 136 */ "JOIN",
- /* 137 */ "USING",
- /* 138 */ "ORDER",
- /* 139 */ "GROUP",
- /* 140 */ "HAVING",
- /* 141 */ "LIMIT",
- /* 142 */ "WHERE",
- /* 143 */ "INTO",
- /* 144 */ "NOTHING",
- /* 145 */ "FLOAT",
- /* 146 */ "BLOB",
- /* 147 */ "INTEGER",
- /* 148 */ "VARIABLE",
- /* 149 */ "CASE",
- /* 150 */ "WHEN",
- /* 151 */ "THEN",
- /* 152 */ "ELSE",
- /* 153 */ "INDEX",
- /* 154 */ "ALTER",
- /* 155 */ "ADD",
- /* 156 */ "WINDOW",
- /* 157 */ "OVER",
- /* 158 */ "FILTER",
- /* 159 */ "TRUEFALSE",
- /* 160 */ "ISNOT",
- /* 161 */ "FUNCTION",
+ /* 82 */ "NULLS",
+ /* 83 */ "FIRST",
+ /* 84 */ "LAST",
+ /* 85 */ "CURRENT",
+ /* 86 */ "FOLLOWING",
+ /* 87 */ "PARTITION",
+ /* 88 */ "PRECEDING",
+ /* 89 */ "RANGE",
+ /* 90 */ "UNBOUNDED",
+ /* 91 */ "EXCLUDE",
+ /* 92 */ "GROUPS",
+ /* 93 */ "OTHERS",
+ /* 94 */ "TIES",
+ /* 95 */ "REINDEX",
+ /* 96 */ "RENAME",
+ /* 97 */ "CTIME_KW",
+ /* 98 */ "ANY",
+ /* 99 */ "BITAND",
+ /* 100 */ "BITOR",
+ /* 101 */ "LSHIFT",
+ /* 102 */ "RSHIFT",
+ /* 103 */ "PLUS",
+ /* 104 */ "MINUS",
+ /* 105 */ "STAR",
+ /* 106 */ "SLASH",
+ /* 107 */ "REM",
+ /* 108 */ "CONCAT",
+ /* 109 */ "COLLATE",
+ /* 110 */ "BITNOT",
+ /* 111 */ "ON",
+ /* 112 */ "INDEXED",
+ /* 113 */ "STRING",
+ /* 114 */ "JOIN_KW",
+ /* 115 */ "CONSTRAINT",
+ /* 116 */ "DEFAULT",
+ /* 117 */ "NULL",
+ /* 118 */ "PRIMARY",
+ /* 119 */ "UNIQUE",
+ /* 120 */ "CHECK",
+ /* 121 */ "REFERENCES",
+ /* 122 */ "AUTOINCR",
+ /* 123 */ "INSERT",
+ /* 124 */ "DELETE",
+ /* 125 */ "UPDATE",
+ /* 126 */ "SET",
+ /* 127 */ "DEFERRABLE",
+ /* 128 */ "FOREIGN",
+ /* 129 */ "DROP",
+ /* 130 */ "UNION",
+ /* 131 */ "ALL",
+ /* 132 */ "EXCEPT",
+ /* 133 */ "INTERSECT",
+ /* 134 */ "SELECT",
+ /* 135 */ "VALUES",
+ /* 136 */ "DISTINCT",
+ /* 137 */ "DOT",
+ /* 138 */ "FROM",
+ /* 139 */ "JOIN",
+ /* 140 */ "USING",
+ /* 141 */ "ORDER",
+ /* 142 */ "GROUP",
+ /* 143 */ "HAVING",
+ /* 144 */ "LIMIT",
+ /* 145 */ "WHERE",
+ /* 146 */ "INTO",
+ /* 147 */ "NOTHING",
+ /* 148 */ "FLOAT",
+ /* 149 */ "BLOB",
+ /* 150 */ "INTEGER",
+ /* 151 */ "VARIABLE",
+ /* 152 */ "CASE",
+ /* 153 */ "WHEN",
+ /* 154 */ "THEN",
+ /* 155 */ "ELSE",
+ /* 156 */ "INDEX",
+ /* 157 */ "ALTER",
+ /* 158 */ "ADD",
+ /* 159 */ "WINDOW",
+ /* 160 */ "OVER",
+ /* 161 */ "FILTER",
/* 162 */ "COLUMN",
/* 163 */ "AGG_FUNCTION",
/* 164 */ "AGG_COLUMN",
- /* 165 */ "UMINUS",
- /* 166 */ "UPLUS",
- /* 167 */ "TRUTH",
- /* 168 */ "REGISTER",
- /* 169 */ "VECTOR",
- /* 170 */ "SELECT_COLUMN",
- /* 171 */ "IF_NULL_ROW",
- /* 172 */ "ASTERISK",
- /* 173 */ "SPAN",
- /* 174 */ "SPACE",
- /* 175 */ "ILLEGAL",
- /* 176 */ "input",
- /* 177 */ "cmdlist",
- /* 178 */ "ecmd",
- /* 179 */ "cmdx",
- /* 180 */ "explain",
- /* 181 */ "cmd",
- /* 182 */ "transtype",
- /* 183 */ "trans_opt",
- /* 184 */ "nm",
- /* 185 */ "savepoint_opt",
- /* 186 */ "create_table",
- /* 187 */ "create_table_args",
- /* 188 */ "createkw",
- /* 189 */ "temp",
- /* 190 */ "ifnotexists",
- /* 191 */ "dbnm",
- /* 192 */ "columnlist",
- /* 193 */ "conslist_opt",
- /* 194 */ "table_options",
- /* 195 */ "select",
- /* 196 */ "columnname",
- /* 197 */ "carglist",
- /* 198 */ "typetoken",
- /* 199 */ "typename",
- /* 200 */ "signed",
- /* 201 */ "plus_num",
- /* 202 */ "minus_num",
- /* 203 */ "scanpt",
- /* 204 */ "scantok",
- /* 205 */ "ccons",
- /* 206 */ "term",
- /* 207 */ "expr",
- /* 208 */ "onconf",
- /* 209 */ "sortorder",
- /* 210 */ "autoinc",
- /* 211 */ "eidlist_opt",
- /* 212 */ "refargs",
- /* 213 */ "defer_subclause",
- /* 214 */ "refarg",
- /* 215 */ "refact",
- /* 216 */ "init_deferred_pred_opt",
- /* 217 */ "conslist",
- /* 218 */ "tconscomma",
- /* 219 */ "tcons",
- /* 220 */ "sortlist",
- /* 221 */ "eidlist",
- /* 222 */ "defer_subclause_opt",
- /* 223 */ "orconf",
- /* 224 */ "resolvetype",
- /* 225 */ "raisetype",
- /* 226 */ "ifexists",
- /* 227 */ "fullname",
- /* 228 */ "selectnowith",
- /* 229 */ "oneselect",
- /* 230 */ "wqlist",
- /* 231 */ "multiselect_op",
- /* 232 */ "distinct",
- /* 233 */ "selcollist",
- /* 234 */ "from",
- /* 235 */ "where_opt",
- /* 236 */ "groupby_opt",
- /* 237 */ "having_opt",
- /* 238 */ "orderby_opt",
- /* 239 */ "limit_opt",
- /* 240 */ "window_clause",
- /* 241 */ "values",
- /* 242 */ "nexprlist",
- /* 243 */ "sclp",
- /* 244 */ "as",
- /* 245 */ "seltablist",
- /* 246 */ "stl_prefix",
- /* 247 */ "joinop",
- /* 248 */ "indexed_opt",
- /* 249 */ "on_opt",
- /* 250 */ "using_opt",
- /* 251 */ "exprlist",
- /* 252 */ "xfullname",
- /* 253 */ "idlist",
- /* 254 */ "with",
- /* 255 */ "setlist",
- /* 256 */ "insert_cmd",
- /* 257 */ "idlist_opt",
- /* 258 */ "upsert",
- /* 259 */ "over_clause",
- /* 260 */ "likeop",
- /* 261 */ "between_op",
- /* 262 */ "in_op",
- /* 263 */ "paren_exprlist",
- /* 264 */ "case_operand",
- /* 265 */ "case_exprlist",
- /* 266 */ "case_else",
- /* 267 */ "uniqueflag",
- /* 268 */ "collate",
- /* 269 */ "vinto",
- /* 270 */ "nmnum",
- /* 271 */ "trigger_decl",
- /* 272 */ "trigger_cmd_list",
- /* 273 */ "trigger_time",
- /* 274 */ "trigger_event",
- /* 275 */ "foreach_clause",
- /* 276 */ "when_clause",
- /* 277 */ "trigger_cmd",
- /* 278 */ "trnm",
- /* 279 */ "tridxby",
- /* 280 */ "database_kw_opt",
- /* 281 */ "key_opt",
- /* 282 */ "add_column_fullname",
- /* 283 */ "kwcolumn_opt",
- /* 284 */ "create_vtab",
- /* 285 */ "vtabarglist",
- /* 286 */ "vtabarg",
- /* 287 */ "vtabargtoken",
- /* 288 */ "lp",
- /* 289 */ "anylist",
- /* 290 */ "windowdefn_list",
- /* 291 */ "windowdefn",
- /* 292 */ "window",
- /* 293 */ "frame_opt",
- /* 294 */ "part_opt",
- /* 295 */ "filter_opt",
- /* 296 */ "range_or_rows",
- /* 297 */ "frame_bound",
- /* 298 */ "frame_bound_s",
- /* 299 */ "frame_bound_e",
- /* 300 */ "frame_exclude_opt",
- /* 301 */ "frame_exclude",
+ /* 165 */ "TRUEFALSE",
+ /* 166 */ "ISNOT",
+ /* 167 */ "FUNCTION",
+ /* 168 */ "UMINUS",
+ /* 169 */ "UPLUS",
+ /* 170 */ "TRUTH",
+ /* 171 */ "REGISTER",
+ /* 172 */ "VECTOR",
+ /* 173 */ "SELECT_COLUMN",
+ /* 174 */ "IF_NULL_ROW",
+ /* 175 */ "ASTERISK",
+ /* 176 */ "SPAN",
+ /* 177 */ "SPACE",
+ /* 178 */ "ILLEGAL",
+ /* 179 */ "input",
+ /* 180 */ "cmdlist",
+ /* 181 */ "ecmd",
+ /* 182 */ "cmdx",
+ /* 183 */ "explain",
+ /* 184 */ "cmd",
+ /* 185 */ "transtype",
+ /* 186 */ "trans_opt",
+ /* 187 */ "nm",
+ /* 188 */ "savepoint_opt",
+ /* 189 */ "create_table",
+ /* 190 */ "create_table_args",
+ /* 191 */ "createkw",
+ /* 192 */ "temp",
+ /* 193 */ "ifnotexists",
+ /* 194 */ "dbnm",
+ /* 195 */ "columnlist",
+ /* 196 */ "conslist_opt",
+ /* 197 */ "table_options",
+ /* 198 */ "select",
+ /* 199 */ "columnname",
+ /* 200 */ "carglist",
+ /* 201 */ "typetoken",
+ /* 202 */ "typename",
+ /* 203 */ "signed",
+ /* 204 */ "plus_num",
+ /* 205 */ "minus_num",
+ /* 206 */ "scanpt",
+ /* 207 */ "scantok",
+ /* 208 */ "ccons",
+ /* 209 */ "term",
+ /* 210 */ "expr",
+ /* 211 */ "onconf",
+ /* 212 */ "sortorder",
+ /* 213 */ "autoinc",
+ /* 214 */ "eidlist_opt",
+ /* 215 */ "refargs",
+ /* 216 */ "defer_subclause",
+ /* 217 */ "refarg",
+ /* 218 */ "refact",
+ /* 219 */ "init_deferred_pred_opt",
+ /* 220 */ "conslist",
+ /* 221 */ "tconscomma",
+ /* 222 */ "tcons",
+ /* 223 */ "sortlist",
+ /* 224 */ "eidlist",
+ /* 225 */ "defer_subclause_opt",
+ /* 226 */ "orconf",
+ /* 227 */ "resolvetype",
+ /* 228 */ "raisetype",
+ /* 229 */ "ifexists",
+ /* 230 */ "fullname",
+ /* 231 */ "selectnowith",
+ /* 232 */ "oneselect",
+ /* 233 */ "wqlist",
+ /* 234 */ "multiselect_op",
+ /* 235 */ "distinct",
+ /* 236 */ "selcollist",
+ /* 237 */ "from",
+ /* 238 */ "where_opt",
+ /* 239 */ "groupby_opt",
+ /* 240 */ "having_opt",
+ /* 241 */ "orderby_opt",
+ /* 242 */ "limit_opt",
+ /* 243 */ "window_clause",
+ /* 244 */ "values",
+ /* 245 */ "nexprlist",
+ /* 246 */ "sclp",
+ /* 247 */ "as",
+ /* 248 */ "seltablist",
+ /* 249 */ "stl_prefix",
+ /* 250 */ "joinop",
+ /* 251 */ "indexed_opt",
+ /* 252 */ "on_opt",
+ /* 253 */ "using_opt",
+ /* 254 */ "exprlist",
+ /* 255 */ "xfullname",
+ /* 256 */ "idlist",
+ /* 257 */ "nulls",
+ /* 258 */ "with",
+ /* 259 */ "setlist",
+ /* 260 */ "insert_cmd",
+ /* 261 */ "idlist_opt",
+ /* 262 */ "upsert",
+ /* 263 */ "filter_over",
+ /* 264 */ "likeop",
+ /* 265 */ "between_op",
+ /* 266 */ "in_op",
+ /* 267 */ "paren_exprlist",
+ /* 268 */ "case_operand",
+ /* 269 */ "case_exprlist",
+ /* 270 */ "case_else",
+ /* 271 */ "uniqueflag",
+ /* 272 */ "collate",
+ /* 273 */ "vinto",
+ /* 274 */ "nmnum",
+ /* 275 */ "trigger_decl",
+ /* 276 */ "trigger_cmd_list",
+ /* 277 */ "trigger_time",
+ /* 278 */ "trigger_event",
+ /* 279 */ "foreach_clause",
+ /* 280 */ "when_clause",
+ /* 281 */ "trigger_cmd",
+ /* 282 */ "trnm",
+ /* 283 */ "tridxby",
+ /* 284 */ "database_kw_opt",
+ /* 285 */ "key_opt",
+ /* 286 */ "add_column_fullname",
+ /* 287 */ "kwcolumn_opt",
+ /* 288 */ "create_vtab",
+ /* 289 */ "vtabarglist",
+ /* 290 */ "vtabarg",
+ /* 291 */ "vtabargtoken",
+ /* 292 */ "lp",
+ /* 293 */ "anylist",
+ /* 294 */ "windowdefn_list",
+ /* 295 */ "windowdefn",
+ /* 296 */ "window",
+ /* 297 */ "frame_opt",
+ /* 298 */ "part_opt",
+ /* 299 */ "filter_clause",
+ /* 300 */ "over_clause",
+ /* 301 */ "range_or_rows",
+ /* 302 */ "frame_bound",
+ /* 303 */ "frame_bound_s",
+ /* 304 */ "frame_bound_e",
+ /* 305 */ "frame_exclude_opt",
+ /* 306 */ "frame_exclude",
};
#endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */
@@ -150293,252 +151320,257 @@ static const char *const yyRuleName[] = {
/* 127 */ "using_opt ::=",
/* 128 */ "orderby_opt ::=",
/* 129 */ "orderby_opt ::= ORDER BY sortlist",
- /* 130 */ "sortlist ::= sortlist COMMA expr sortorder",
- /* 131 */ "sortlist ::= expr sortorder",
+ /* 130 */ "sortlist ::= sortlist COMMA expr sortorder nulls",
+ /* 131 */ "sortlist ::= expr sortorder nulls",
/* 132 */ "sortorder ::= ASC",
/* 133 */ "sortorder ::= DESC",
/* 134 */ "sortorder ::=",
- /* 135 */ "groupby_opt ::=",
- /* 136 */ "groupby_opt ::= GROUP BY nexprlist",
- /* 137 */ "having_opt ::=",
- /* 138 */ "having_opt ::= HAVING expr",
- /* 139 */ "limit_opt ::=",
- /* 140 */ "limit_opt ::= LIMIT expr",
- /* 141 */ "limit_opt ::= LIMIT expr OFFSET expr",
- /* 142 */ "limit_opt ::= LIMIT expr COMMA expr",
- /* 143 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
- /* 144 */ "where_opt ::=",
- /* 145 */ "where_opt ::= WHERE expr",
- /* 146 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
- /* 147 */ "setlist ::= setlist COMMA nm EQ expr",
- /* 148 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
- /* 149 */ "setlist ::= nm EQ expr",
- /* 150 */ "setlist ::= LP idlist RP EQ expr",
- /* 151 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
- /* 152 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
- /* 153 */ "upsert ::=",
- /* 154 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
- /* 155 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
- /* 156 */ "upsert ::= ON CONFLICT DO NOTHING",
- /* 157 */ "insert_cmd ::= INSERT orconf",
- /* 158 */ "insert_cmd ::= REPLACE",
- /* 159 */ "idlist_opt ::=",
- /* 160 */ "idlist_opt ::= LP idlist RP",
- /* 161 */ "idlist ::= idlist COMMA nm",
- /* 162 */ "idlist ::= nm",
- /* 163 */ "expr ::= LP expr RP",
- /* 164 */ "expr ::= ID|INDEXED",
- /* 165 */ "expr ::= JOIN_KW",
- /* 166 */ "expr ::= nm DOT nm",
- /* 167 */ "expr ::= nm DOT nm DOT nm",
- /* 168 */ "term ::= NULL|FLOAT|BLOB",
- /* 169 */ "term ::= STRING",
- /* 170 */ "term ::= INTEGER",
- /* 171 */ "expr ::= VARIABLE",
- /* 172 */ "expr ::= expr COLLATE ID|STRING",
- /* 173 */ "expr ::= CAST LP expr AS typetoken RP",
- /* 174 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
- /* 175 */ "expr ::= ID|INDEXED LP STAR RP",
- /* 176 */ "expr ::= ID|INDEXED LP distinct exprlist RP over_clause",
- /* 177 */ "expr ::= ID|INDEXED LP STAR RP over_clause",
- /* 178 */ "term ::= CTIME_KW",
- /* 179 */ "expr ::= LP nexprlist COMMA expr RP",
- /* 180 */ "expr ::= expr AND expr",
- /* 181 */ "expr ::= expr OR expr",
- /* 182 */ "expr ::= expr LT|GT|GE|LE expr",
- /* 183 */ "expr ::= expr EQ|NE expr",
- /* 184 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
- /* 185 */ "expr ::= expr PLUS|MINUS expr",
- /* 186 */ "expr ::= expr STAR|SLASH|REM expr",
- /* 187 */ "expr ::= expr CONCAT expr",
- /* 188 */ "likeop ::= NOT LIKE_KW|MATCH",
- /* 189 */ "expr ::= expr likeop expr",
- /* 190 */ "expr ::= expr likeop expr ESCAPE expr",
- /* 191 */ "expr ::= expr ISNULL|NOTNULL",
- /* 192 */ "expr ::= expr NOT NULL",
- /* 193 */ "expr ::= expr IS expr",
- /* 194 */ "expr ::= expr IS NOT expr",
- /* 195 */ "expr ::= NOT expr",
- /* 196 */ "expr ::= BITNOT expr",
- /* 197 */ "expr ::= PLUS|MINUS expr",
- /* 198 */ "between_op ::= BETWEEN",
- /* 199 */ "between_op ::= NOT BETWEEN",
- /* 200 */ "expr ::= expr between_op expr AND expr",
- /* 201 */ "in_op ::= IN",
- /* 202 */ "in_op ::= NOT IN",
- /* 203 */ "expr ::= expr in_op LP exprlist RP",
- /* 204 */ "expr ::= LP select RP",
- /* 205 */ "expr ::= expr in_op LP select RP",
- /* 206 */ "expr ::= expr in_op nm dbnm paren_exprlist",
- /* 207 */ "expr ::= EXISTS LP select RP",
- /* 208 */ "expr ::= CASE case_operand case_exprlist case_else END",
- /* 209 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
- /* 210 */ "case_exprlist ::= WHEN expr THEN expr",
- /* 211 */ "case_else ::= ELSE expr",
- /* 212 */ "case_else ::=",
- /* 213 */ "case_operand ::= expr",
- /* 214 */ "case_operand ::=",
- /* 215 */ "exprlist ::=",
- /* 216 */ "nexprlist ::= nexprlist COMMA expr",
- /* 217 */ "nexprlist ::= expr",
- /* 218 */ "paren_exprlist ::=",
- /* 219 */ "paren_exprlist ::= LP exprlist RP",
- /* 220 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
- /* 221 */ "uniqueflag ::= UNIQUE",
- /* 222 */ "uniqueflag ::=",
- /* 223 */ "eidlist_opt ::=",
- /* 224 */ "eidlist_opt ::= LP eidlist RP",
- /* 225 */ "eidlist ::= eidlist COMMA nm collate sortorder",
- /* 226 */ "eidlist ::= nm collate sortorder",
- /* 227 */ "collate ::=",
- /* 228 */ "collate ::= COLLATE ID|STRING",
- /* 229 */ "cmd ::= DROP INDEX ifexists fullname",
- /* 230 */ "cmd ::= VACUUM vinto",
- /* 231 */ "cmd ::= VACUUM nm vinto",
- /* 232 */ "vinto ::= INTO expr",
- /* 233 */ "vinto ::=",
- /* 234 */ "cmd ::= PRAGMA nm dbnm",
- /* 235 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
- /* 236 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
- /* 237 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
- /* 238 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
- /* 239 */ "plus_num ::= PLUS INTEGER|FLOAT",
- /* 240 */ "minus_num ::= MINUS INTEGER|FLOAT",
- /* 241 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
- /* 242 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
- /* 243 */ "trigger_time ::= BEFORE|AFTER",
- /* 244 */ "trigger_time ::= INSTEAD OF",
- /* 245 */ "trigger_time ::=",
- /* 246 */ "trigger_event ::= DELETE|INSERT",
- /* 247 */ "trigger_event ::= UPDATE",
- /* 248 */ "trigger_event ::= UPDATE OF idlist",
- /* 249 */ "when_clause ::=",
- /* 250 */ "when_clause ::= WHEN expr",
- /* 251 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
- /* 252 */ "trigger_cmd_list ::= trigger_cmd SEMI",
- /* 253 */ "trnm ::= nm DOT nm",
- /* 254 */ "tridxby ::= INDEXED BY nm",
- /* 255 */ "tridxby ::= NOT INDEXED",
- /* 256 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
- /* 257 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
- /* 258 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
- /* 259 */ "trigger_cmd ::= scanpt select scanpt",
- /* 260 */ "expr ::= RAISE LP IGNORE RP",
- /* 261 */ "expr ::= RAISE LP raisetype COMMA nm RP",
- /* 262 */ "raisetype ::= ROLLBACK",
- /* 263 */ "raisetype ::= ABORT",
- /* 264 */ "raisetype ::= FAIL",
- /* 265 */ "cmd ::= DROP TRIGGER ifexists fullname",
- /* 266 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
- /* 267 */ "cmd ::= DETACH database_kw_opt expr",
- /* 268 */ "key_opt ::=",
- /* 269 */ "key_opt ::= KEY expr",
- /* 270 */ "cmd ::= REINDEX",
- /* 271 */ "cmd ::= REINDEX nm dbnm",
- /* 272 */ "cmd ::= ANALYZE",
- /* 273 */ "cmd ::= ANALYZE nm dbnm",
- /* 274 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
- /* 275 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
- /* 276 */ "add_column_fullname ::= fullname",
- /* 277 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
- /* 278 */ "cmd ::= create_vtab",
- /* 279 */ "cmd ::= create_vtab LP vtabarglist RP",
- /* 280 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
- /* 281 */ "vtabarg ::=",
- /* 282 */ "vtabargtoken ::= ANY",
- /* 283 */ "vtabargtoken ::= lp anylist RP",
- /* 284 */ "lp ::= LP",
- /* 285 */ "with ::= WITH wqlist",
- /* 286 */ "with ::= WITH RECURSIVE wqlist",
- /* 287 */ "wqlist ::= nm eidlist_opt AS LP select RP",
- /* 288 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
- /* 289 */ "windowdefn_list ::= windowdefn",
- /* 290 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
- /* 291 */ "windowdefn ::= nm AS LP window RP",
- /* 292 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
- /* 293 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
- /* 294 */ "window ::= ORDER BY sortlist frame_opt",
- /* 295 */ "window ::= nm ORDER BY sortlist frame_opt",
- /* 296 */ "window ::= frame_opt",
- /* 297 */ "window ::= nm frame_opt",
- /* 298 */ "frame_opt ::=",
- /* 299 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
- /* 300 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
- /* 301 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
- /* 302 */ "frame_bound_s ::= frame_bound",
- /* 303 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
- /* 304 */ "frame_bound_e ::= frame_bound",
- /* 305 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
- /* 306 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
- /* 307 */ "frame_bound ::= CURRENT ROW",
- /* 308 */ "frame_exclude_opt ::=",
- /* 309 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
- /* 310 */ "frame_exclude ::= NO OTHERS",
- /* 311 */ "frame_exclude ::= CURRENT ROW",
- /* 312 */ "frame_exclude ::= GROUP|TIES",
- /* 313 */ "window_clause ::= WINDOW windowdefn_list",
- /* 314 */ "over_clause ::= filter_opt OVER LP window RP",
- /* 315 */ "over_clause ::= filter_opt OVER nm",
- /* 316 */ "filter_opt ::=",
- /* 317 */ "filter_opt ::= FILTER LP WHERE expr RP",
- /* 318 */ "input ::= cmdlist",
- /* 319 */ "cmdlist ::= cmdlist ecmd",
- /* 320 */ "cmdlist ::= ecmd",
- /* 321 */ "ecmd ::= SEMI",
- /* 322 */ "ecmd ::= cmdx SEMI",
- /* 323 */ "ecmd ::= explain cmdx",
- /* 324 */ "trans_opt ::=",
- /* 325 */ "trans_opt ::= TRANSACTION",
- /* 326 */ "trans_opt ::= TRANSACTION nm",
- /* 327 */ "savepoint_opt ::= SAVEPOINT",
- /* 328 */ "savepoint_opt ::=",
- /* 329 */ "cmd ::= create_table create_table_args",
- /* 330 */ "columnlist ::= columnlist COMMA columnname carglist",
- /* 331 */ "columnlist ::= columnname carglist",
- /* 332 */ "nm ::= ID|INDEXED",
- /* 333 */ "nm ::= STRING",
- /* 334 */ "nm ::= JOIN_KW",
- /* 335 */ "typetoken ::= typename",
- /* 336 */ "typename ::= ID|STRING",
- /* 337 */ "signed ::= plus_num",
- /* 338 */ "signed ::= minus_num",
- /* 339 */ "carglist ::= carglist ccons",
- /* 340 */ "carglist ::=",
- /* 341 */ "ccons ::= NULL onconf",
- /* 342 */ "conslist_opt ::= COMMA conslist",
- /* 343 */ "conslist ::= conslist tconscomma tcons",
- /* 344 */ "conslist ::= tcons",
- /* 345 */ "tconscomma ::=",
- /* 346 */ "defer_subclause_opt ::= defer_subclause",
- /* 347 */ "resolvetype ::= raisetype",
- /* 348 */ "selectnowith ::= oneselect",
- /* 349 */ "oneselect ::= values",
- /* 350 */ "sclp ::= selcollist COMMA",
- /* 351 */ "as ::= ID|STRING",
- /* 352 */ "expr ::= term",
- /* 353 */ "likeop ::= LIKE_KW|MATCH",
- /* 354 */ "exprlist ::= nexprlist",
- /* 355 */ "nmnum ::= plus_num",
- /* 356 */ "nmnum ::= nm",
- /* 357 */ "nmnum ::= ON",
- /* 358 */ "nmnum ::= DELETE",
- /* 359 */ "nmnum ::= DEFAULT",
- /* 360 */ "plus_num ::= INTEGER|FLOAT",
- /* 361 */ "foreach_clause ::=",
- /* 362 */ "foreach_clause ::= FOR EACH ROW",
- /* 363 */ "trnm ::= nm",
- /* 364 */ "tridxby ::=",
- /* 365 */ "database_kw_opt ::= DATABASE",
- /* 366 */ "database_kw_opt ::=",
- /* 367 */ "kwcolumn_opt ::=",
- /* 368 */ "kwcolumn_opt ::= COLUMNKW",
- /* 369 */ "vtabarglist ::= vtabarg",
- /* 370 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
- /* 371 */ "vtabarg ::= vtabarg vtabargtoken",
- /* 372 */ "anylist ::=",
- /* 373 */ "anylist ::= anylist LP anylist RP",
- /* 374 */ "anylist ::= anylist ANY",
- /* 375 */ "with ::=",
+ /* 135 */ "nulls ::= NULLS FIRST",
+ /* 136 */ "nulls ::= NULLS LAST",
+ /* 137 */ "nulls ::=",
+ /* 138 */ "groupby_opt ::=",
+ /* 139 */ "groupby_opt ::= GROUP BY nexprlist",
+ /* 140 */ "having_opt ::=",
+ /* 141 */ "having_opt ::= HAVING expr",
+ /* 142 */ "limit_opt ::=",
+ /* 143 */ "limit_opt ::= LIMIT expr",
+ /* 144 */ "limit_opt ::= LIMIT expr OFFSET expr",
+ /* 145 */ "limit_opt ::= LIMIT expr COMMA expr",
+ /* 146 */ "cmd ::= with DELETE FROM xfullname indexed_opt where_opt",
+ /* 147 */ "where_opt ::=",
+ /* 148 */ "where_opt ::= WHERE expr",
+ /* 149 */ "cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt",
+ /* 150 */ "setlist ::= setlist COMMA nm EQ expr",
+ /* 151 */ "setlist ::= setlist COMMA LP idlist RP EQ expr",
+ /* 152 */ "setlist ::= nm EQ expr",
+ /* 153 */ "setlist ::= LP idlist RP EQ expr",
+ /* 154 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
+ /* 155 */ "cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES",
+ /* 156 */ "upsert ::=",
+ /* 157 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt",
+ /* 158 */ "upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING",
+ /* 159 */ "upsert ::= ON CONFLICT DO NOTHING",
+ /* 160 */ "insert_cmd ::= INSERT orconf",
+ /* 161 */ "insert_cmd ::= REPLACE",
+ /* 162 */ "idlist_opt ::=",
+ /* 163 */ "idlist_opt ::= LP idlist RP",
+ /* 164 */ "idlist ::= idlist COMMA nm",
+ /* 165 */ "idlist ::= nm",
+ /* 166 */ "expr ::= LP expr RP",
+ /* 167 */ "expr ::= ID|INDEXED",
+ /* 168 */ "expr ::= JOIN_KW",
+ /* 169 */ "expr ::= nm DOT nm",
+ /* 170 */ "expr ::= nm DOT nm DOT nm",
+ /* 171 */ "term ::= NULL|FLOAT|BLOB",
+ /* 172 */ "term ::= STRING",
+ /* 173 */ "term ::= INTEGER",
+ /* 174 */ "expr ::= VARIABLE",
+ /* 175 */ "expr ::= expr COLLATE ID|STRING",
+ /* 176 */ "expr ::= CAST LP expr AS typetoken RP",
+ /* 177 */ "expr ::= ID|INDEXED LP distinct exprlist RP",
+ /* 178 */ "expr ::= ID|INDEXED LP STAR RP",
+ /* 179 */ "expr ::= ID|INDEXED LP distinct exprlist RP filter_over",
+ /* 180 */ "expr ::= ID|INDEXED LP STAR RP filter_over",
+ /* 181 */ "term ::= CTIME_KW",
+ /* 182 */ "expr ::= LP nexprlist COMMA expr RP",
+ /* 183 */ "expr ::= expr AND expr",
+ /* 184 */ "expr ::= expr OR expr",
+ /* 185 */ "expr ::= expr LT|GT|GE|LE expr",
+ /* 186 */ "expr ::= expr EQ|NE expr",
+ /* 187 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
+ /* 188 */ "expr ::= expr PLUS|MINUS expr",
+ /* 189 */ "expr ::= expr STAR|SLASH|REM expr",
+ /* 190 */ "expr ::= expr CONCAT expr",
+ /* 191 */ "likeop ::= NOT LIKE_KW|MATCH",
+ /* 192 */ "expr ::= expr likeop expr",
+ /* 193 */ "expr ::= expr likeop expr ESCAPE expr",
+ /* 194 */ "expr ::= expr ISNULL|NOTNULL",
+ /* 195 */ "expr ::= expr NOT NULL",
+ /* 196 */ "expr ::= expr IS expr",
+ /* 197 */ "expr ::= expr IS NOT expr",
+ /* 198 */ "expr ::= NOT expr",
+ /* 199 */ "expr ::= BITNOT expr",
+ /* 200 */ "expr ::= PLUS|MINUS expr",
+ /* 201 */ "between_op ::= BETWEEN",
+ /* 202 */ "between_op ::= NOT BETWEEN",
+ /* 203 */ "expr ::= expr between_op expr AND expr",
+ /* 204 */ "in_op ::= IN",
+ /* 205 */ "in_op ::= NOT IN",
+ /* 206 */ "expr ::= expr in_op LP exprlist RP",
+ /* 207 */ "expr ::= LP select RP",
+ /* 208 */ "expr ::= expr in_op LP select RP",
+ /* 209 */ "expr ::= expr in_op nm dbnm paren_exprlist",
+ /* 210 */ "expr ::= EXISTS LP select RP",
+ /* 211 */ "expr ::= CASE case_operand case_exprlist case_else END",
+ /* 212 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
+ /* 213 */ "case_exprlist ::= WHEN expr THEN expr",
+ /* 214 */ "case_else ::= ELSE expr",
+ /* 215 */ "case_else ::=",
+ /* 216 */ "case_operand ::= expr",
+ /* 217 */ "case_operand ::=",
+ /* 218 */ "exprlist ::=",
+ /* 219 */ "nexprlist ::= nexprlist COMMA expr",
+ /* 220 */ "nexprlist ::= expr",
+ /* 221 */ "paren_exprlist ::=",
+ /* 222 */ "paren_exprlist ::= LP exprlist RP",
+ /* 223 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt",
+ /* 224 */ "uniqueflag ::= UNIQUE",
+ /* 225 */ "uniqueflag ::=",
+ /* 226 */ "eidlist_opt ::=",
+ /* 227 */ "eidlist_opt ::= LP eidlist RP",
+ /* 228 */ "eidlist ::= eidlist COMMA nm collate sortorder",
+ /* 229 */ "eidlist ::= nm collate sortorder",
+ /* 230 */ "collate ::=",
+ /* 231 */ "collate ::= COLLATE ID|STRING",
+ /* 232 */ "cmd ::= DROP INDEX ifexists fullname",
+ /* 233 */ "cmd ::= VACUUM vinto",
+ /* 234 */ "cmd ::= VACUUM nm vinto",
+ /* 235 */ "vinto ::= INTO expr",
+ /* 236 */ "vinto ::=",
+ /* 237 */ "cmd ::= PRAGMA nm dbnm",
+ /* 238 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
+ /* 239 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
+ /* 240 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
+ /* 241 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP",
+ /* 242 */ "plus_num ::= PLUS INTEGER|FLOAT",
+ /* 243 */ "minus_num ::= MINUS INTEGER|FLOAT",
+ /* 244 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END",
+ /* 245 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
+ /* 246 */ "trigger_time ::= BEFORE|AFTER",
+ /* 247 */ "trigger_time ::= INSTEAD OF",
+ /* 248 */ "trigger_time ::=",
+ /* 249 */ "trigger_event ::= DELETE|INSERT",
+ /* 250 */ "trigger_event ::= UPDATE",
+ /* 251 */ "trigger_event ::= UPDATE OF idlist",
+ /* 252 */ "when_clause ::=",
+ /* 253 */ "when_clause ::= WHEN expr",
+ /* 254 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
+ /* 255 */ "trigger_cmd_list ::= trigger_cmd SEMI",
+ /* 256 */ "trnm ::= nm DOT nm",
+ /* 257 */ "tridxby ::= INDEXED BY nm",
+ /* 258 */ "tridxby ::= NOT INDEXED",
+ /* 259 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt",
+ /* 260 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt",
+ /* 261 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt",
+ /* 262 */ "trigger_cmd ::= scanpt select scanpt",
+ /* 263 */ "expr ::= RAISE LP IGNORE RP",
+ /* 264 */ "expr ::= RAISE LP raisetype COMMA nm RP",
+ /* 265 */ "raisetype ::= ROLLBACK",
+ /* 266 */ "raisetype ::= ABORT",
+ /* 267 */ "raisetype ::= FAIL",
+ /* 268 */ "cmd ::= DROP TRIGGER ifexists fullname",
+ /* 269 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
+ /* 270 */ "cmd ::= DETACH database_kw_opt expr",
+ /* 271 */ "key_opt ::=",
+ /* 272 */ "key_opt ::= KEY expr",
+ /* 273 */ "cmd ::= REINDEX",
+ /* 274 */ "cmd ::= REINDEX nm dbnm",
+ /* 275 */ "cmd ::= ANALYZE",
+ /* 276 */ "cmd ::= ANALYZE nm dbnm",
+ /* 277 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
+ /* 278 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist",
+ /* 279 */ "add_column_fullname ::= fullname",
+ /* 280 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
+ /* 281 */ "cmd ::= create_vtab",
+ /* 282 */ "cmd ::= create_vtab LP vtabarglist RP",
+ /* 283 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm",
+ /* 284 */ "vtabarg ::=",
+ /* 285 */ "vtabargtoken ::= ANY",
+ /* 286 */ "vtabargtoken ::= lp anylist RP",
+ /* 287 */ "lp ::= LP",
+ /* 288 */ "with ::= WITH wqlist",
+ /* 289 */ "with ::= WITH RECURSIVE wqlist",
+ /* 290 */ "wqlist ::= nm eidlist_opt AS LP select RP",
+ /* 291 */ "wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP",
+ /* 292 */ "windowdefn_list ::= windowdefn",
+ /* 293 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn",
+ /* 294 */ "windowdefn ::= nm AS LP window RP",
+ /* 295 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 296 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
+ /* 297 */ "window ::= ORDER BY sortlist frame_opt",
+ /* 298 */ "window ::= nm ORDER BY sortlist frame_opt",
+ /* 299 */ "window ::= frame_opt",
+ /* 300 */ "window ::= nm frame_opt",
+ /* 301 */ "frame_opt ::=",
+ /* 302 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
+ /* 303 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
+ /* 304 */ "range_or_rows ::= RANGE|ROWS|GROUPS",
+ /* 305 */ "frame_bound_s ::= frame_bound",
+ /* 306 */ "frame_bound_s ::= UNBOUNDED PRECEDING",
+ /* 307 */ "frame_bound_e ::= frame_bound",
+ /* 308 */ "frame_bound_e ::= UNBOUNDED FOLLOWING",
+ /* 309 */ "frame_bound ::= expr PRECEDING|FOLLOWING",
+ /* 310 */ "frame_bound ::= CURRENT ROW",
+ /* 311 */ "frame_exclude_opt ::=",
+ /* 312 */ "frame_exclude_opt ::= EXCLUDE frame_exclude",
+ /* 313 */ "frame_exclude ::= NO OTHERS",
+ /* 314 */ "frame_exclude ::= CURRENT ROW",
+ /* 315 */ "frame_exclude ::= GROUP|TIES",
+ /* 316 */ "window_clause ::= WINDOW windowdefn_list",
+ /* 317 */ "filter_over ::= filter_clause over_clause",
+ /* 318 */ "filter_over ::= over_clause",
+ /* 319 */ "filter_over ::= filter_clause",
+ /* 320 */ "over_clause ::= OVER LP window RP",
+ /* 321 */ "over_clause ::= OVER nm",
+ /* 322 */ "filter_clause ::= FILTER LP WHERE expr RP",
+ /* 323 */ "input ::= cmdlist",
+ /* 324 */ "cmdlist ::= cmdlist ecmd",
+ /* 325 */ "cmdlist ::= ecmd",
+ /* 326 */ "ecmd ::= SEMI",
+ /* 327 */ "ecmd ::= cmdx SEMI",
+ /* 328 */ "ecmd ::= explain cmdx",
+ /* 329 */ "trans_opt ::=",
+ /* 330 */ "trans_opt ::= TRANSACTION",
+ /* 331 */ "trans_opt ::= TRANSACTION nm",
+ /* 332 */ "savepoint_opt ::= SAVEPOINT",
+ /* 333 */ "savepoint_opt ::=",
+ /* 334 */ "cmd ::= create_table create_table_args",
+ /* 335 */ "columnlist ::= columnlist COMMA columnname carglist",
+ /* 336 */ "columnlist ::= columnname carglist",
+ /* 337 */ "nm ::= ID|INDEXED",
+ /* 338 */ "nm ::= STRING",
+ /* 339 */ "nm ::= JOIN_KW",
+ /* 340 */ "typetoken ::= typename",
+ /* 341 */ "typename ::= ID|STRING",
+ /* 342 */ "signed ::= plus_num",
+ /* 343 */ "signed ::= minus_num",
+ /* 344 */ "carglist ::= carglist ccons",
+ /* 345 */ "carglist ::=",
+ /* 346 */ "ccons ::= NULL onconf",
+ /* 347 */ "conslist_opt ::= COMMA conslist",
+ /* 348 */ "conslist ::= conslist tconscomma tcons",
+ /* 349 */ "conslist ::= tcons",
+ /* 350 */ "tconscomma ::=",
+ /* 351 */ "defer_subclause_opt ::= defer_subclause",
+ /* 352 */ "resolvetype ::= raisetype",
+ /* 353 */ "selectnowith ::= oneselect",
+ /* 354 */ "oneselect ::= values",
+ /* 355 */ "sclp ::= selcollist COMMA",
+ /* 356 */ "as ::= ID|STRING",
+ /* 357 */ "expr ::= term",
+ /* 358 */ "likeop ::= LIKE_KW|MATCH",
+ /* 359 */ "exprlist ::= nexprlist",
+ /* 360 */ "nmnum ::= plus_num",
+ /* 361 */ "nmnum ::= nm",
+ /* 362 */ "nmnum ::= ON",
+ /* 363 */ "nmnum ::= DELETE",
+ /* 364 */ "nmnum ::= DEFAULT",
+ /* 365 */ "plus_num ::= INTEGER|FLOAT",
+ /* 366 */ "foreach_clause ::=",
+ /* 367 */ "foreach_clause ::= FOR EACH ROW",
+ /* 368 */ "trnm ::= nm",
+ /* 369 */ "tridxby ::=",
+ /* 370 */ "database_kw_opt ::= DATABASE",
+ /* 371 */ "database_kw_opt ::=",
+ /* 372 */ "kwcolumn_opt ::=",
+ /* 373 */ "kwcolumn_opt ::= COLUMNKW",
+ /* 374 */ "vtabarglist ::= vtabarg",
+ /* 375 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
+ /* 376 */ "vtabarg ::= vtabarg vtabargtoken",
+ /* 377 */ "anylist ::=",
+ /* 378 */ "anylist ::= anylist LP anylist RP",
+ /* 379 */ "anylist ::= anylist ANY",
+ /* 380 */ "with ::=",
};
#endif /* NDEBUG */
@@ -150664,97 +151696,98 @@ static void yy_destructor(
** inside the C code.
*/
/********* Begin destructor definitions ***************************************/
- case 195: /* select */
- case 228: /* selectnowith */
- case 229: /* oneselect */
- case 241: /* values */
+ case 198: /* select */
+ case 231: /* selectnowith */
+ case 232: /* oneselect */
+ case 244: /* values */
{
-sqlite3SelectDelete(pParse->db, (yypminor->yy391));
+sqlite3SelectDelete(pParse->db, (yypminor->yy25));
}
break;
- case 206: /* term */
- case 207: /* expr */
- case 235: /* where_opt */
- case 237: /* having_opt */
- case 249: /* on_opt */
- case 264: /* case_operand */
- case 266: /* case_else */
- case 269: /* vinto */
- case 276: /* when_clause */
- case 281: /* key_opt */
- case 295: /* filter_opt */
+ case 209: /* term */
+ case 210: /* expr */
+ case 238: /* where_opt */
+ case 240: /* having_opt */
+ case 252: /* on_opt */
+ case 268: /* case_operand */
+ case 270: /* case_else */
+ case 273: /* vinto */
+ case 280: /* when_clause */
+ case 285: /* key_opt */
+ case 299: /* filter_clause */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy102));
+sqlite3ExprDelete(pParse->db, (yypminor->yy46));
}
break;
- case 211: /* eidlist_opt */
- case 220: /* sortlist */
- case 221: /* eidlist */
- case 233: /* selcollist */
- case 236: /* groupby_opt */
- case 238: /* orderby_opt */
- case 242: /* nexprlist */
- case 243: /* sclp */
- case 251: /* exprlist */
- case 255: /* setlist */
- case 263: /* paren_exprlist */
- case 265: /* case_exprlist */
- case 294: /* part_opt */
+ case 214: /* eidlist_opt */
+ case 223: /* sortlist */
+ case 224: /* eidlist */
+ case 236: /* selcollist */
+ case 239: /* groupby_opt */
+ case 241: /* orderby_opt */
+ case 245: /* nexprlist */
+ case 246: /* sclp */
+ case 254: /* exprlist */
+ case 259: /* setlist */
+ case 267: /* paren_exprlist */
+ case 269: /* case_exprlist */
+ case 298: /* part_opt */
{
-sqlite3ExprListDelete(pParse->db, (yypminor->yy94));
+sqlite3ExprListDelete(pParse->db, (yypminor->yy138));
}
break;
- case 227: /* fullname */
- case 234: /* from */
- case 245: /* seltablist */
- case 246: /* stl_prefix */
- case 252: /* xfullname */
+ case 230: /* fullname */
+ case 237: /* from */
+ case 248: /* seltablist */
+ case 249: /* stl_prefix */
+ case 255: /* xfullname */
{
-sqlite3SrcListDelete(pParse->db, (yypminor->yy407));
+sqlite3SrcListDelete(pParse->db, (yypminor->yy609));
}
break;
- case 230: /* wqlist */
+ case 233: /* wqlist */
{
-sqlite3WithDelete(pParse->db, (yypminor->yy243));
+sqlite3WithDelete(pParse->db, (yypminor->yy297));
}
break;
- case 240: /* window_clause */
- case 290: /* windowdefn_list */
+ case 243: /* window_clause */
+ case 294: /* windowdefn_list */
{
-sqlite3WindowListDelete(pParse->db, (yypminor->yy379));
+sqlite3WindowListDelete(pParse->db, (yypminor->yy455));
}
break;
- case 250: /* using_opt */
- case 253: /* idlist */
- case 257: /* idlist_opt */
+ case 253: /* using_opt */
+ case 256: /* idlist */
+ case 261: /* idlist_opt */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy76));
+sqlite3IdListDelete(pParse->db, (yypminor->yy406));
}
break;
- case 259: /* over_clause */
- case 291: /* windowdefn */
- case 292: /* window */
- case 293: /* frame_opt */
+ case 263: /* filter_over */
+ case 295: /* windowdefn */
+ case 296: /* window */
+ case 297: /* frame_opt */
+ case 300: /* over_clause */
{
-sqlite3WindowDelete(pParse->db, (yypminor->yy379));
+sqlite3WindowDelete(pParse->db, (yypminor->yy455));
}
break;
- case 272: /* trigger_cmd_list */
- case 277: /* trigger_cmd */
+ case 276: /* trigger_cmd_list */
+ case 281: /* trigger_cmd */
{
-sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy11));
+sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy527));
}
break;
- case 274: /* trigger_event */
+ case 278: /* trigger_event */
{
-sqlite3IdListDelete(pParse->db, (yypminor->yy298).b);
+sqlite3IdListDelete(pParse->db, (yypminor->yy572).b);
}
break;
- case 297: /* frame_bound */
- case 298: /* frame_bound_s */
- case 299: /* frame_bound_e */
+ case 302: /* frame_bound */
+ case 303: /* frame_bound_s */
+ case 304: /* frame_bound_e */
{
-sqlite3ExprDelete(pParse->db, (yypminor->yy389).pExpr);
+sqlite3ExprDelete(pParse->db, (yypminor->yy57).pExpr);
}
break;
/********* End destructor definitions *****************************************/
@@ -150880,15 +151913,18 @@ static YYACTIONTYPE yy_find_shift_action(
do{
i = yy_shift_ofst[stateno];
assert( i>=0 );
- /* assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD ); */
+ assert( i<=YY_ACTTAB_COUNT );
+ assert( i+YYNTOKEN<=(int)YY_NLOOKAHEAD );
assert( iLookAhead!=YYNOCODE );
assert( iLookAhead < YYNTOKEN );
i += iLookAhead;
- if( i>=YY_NLOOKAHEAD || yy_lookahead[i]!=iLookAhead ){
+ assert( i<(int)YY_NLOOKAHEAD );
+ if( yy_lookahead[i]!=iLookAhead ){
#ifdef YYFALLBACK
YYCODETYPE iFallback; /* Fallback token */
- if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
- && (iFallback = yyFallback[iLookAhead])!=0 ){
+ assert( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) );
+ iFallback = yyFallback[iLookAhead];
+ if( iFallback!=0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
@@ -150903,16 +151939,8 @@ static YYACTIONTYPE yy_find_shift_action(
#ifdef YYWILDCARD
{
int j = i - iLookAhead + YYWILDCARD;
- if(
-#if YY_SHIFT_MIN+YYWILDCARD<0
- j>=0 &&
-#endif
-#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
- j<YY_ACTTAB_COUNT &&
-#endif
- j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) &&
- yy_lookahead[j]==YYWILDCARD && iLookAhead>0
- ){
+ assert( j<(int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0])) );
+ if( yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
@@ -150926,6 +151954,7 @@ static YYACTIONTYPE yy_find_shift_action(
#endif /* YYWILDCARD */
return yy_default[stateno];
}else{
+ assert( i>=0 && i<sizeof(yy_action)/sizeof(yy_action[0]) );
return yy_action[i];
}
}while(1);
@@ -151049,382 +152078,387 @@ static void yy_shift(
/* For rule J, yyRuleInfoLhs[J] contains the symbol on the left-hand side
** of that rule */
static const YYCODETYPE yyRuleInfoLhs[] = {
- 180, /* (0) explain ::= EXPLAIN */
- 180, /* (1) explain ::= EXPLAIN QUERY PLAN */
- 179, /* (2) cmdx ::= cmd */
- 181, /* (3) cmd ::= BEGIN transtype trans_opt */
- 182, /* (4) transtype ::= */
- 182, /* (5) transtype ::= DEFERRED */
- 182, /* (6) transtype ::= IMMEDIATE */
- 182, /* (7) transtype ::= EXCLUSIVE */
- 181, /* (8) cmd ::= COMMIT|END trans_opt */
- 181, /* (9) cmd ::= ROLLBACK trans_opt */
- 181, /* (10) cmd ::= SAVEPOINT nm */
- 181, /* (11) cmd ::= RELEASE savepoint_opt nm */
- 181, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
- 186, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
- 188, /* (14) createkw ::= CREATE */
- 190, /* (15) ifnotexists ::= */
- 190, /* (16) ifnotexists ::= IF NOT EXISTS */
- 189, /* (17) temp ::= TEMP */
- 189, /* (18) temp ::= */
- 187, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
- 187, /* (20) create_table_args ::= AS select */
- 194, /* (21) table_options ::= */
- 194, /* (22) table_options ::= WITHOUT nm */
- 196, /* (23) columnname ::= nm typetoken */
- 198, /* (24) typetoken ::= */
- 198, /* (25) typetoken ::= typename LP signed RP */
- 198, /* (26) typetoken ::= typename LP signed COMMA signed RP */
- 199, /* (27) typename ::= typename ID|STRING */
- 203, /* (28) scanpt ::= */
- 204, /* (29) scantok ::= */
- 205, /* (30) ccons ::= CONSTRAINT nm */
- 205, /* (31) ccons ::= DEFAULT scantok term */
- 205, /* (32) ccons ::= DEFAULT LP expr RP */
- 205, /* (33) ccons ::= DEFAULT PLUS scantok term */
- 205, /* (34) ccons ::= DEFAULT MINUS scantok term */
- 205, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
- 205, /* (36) ccons ::= NOT NULL onconf */
- 205, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
- 205, /* (38) ccons ::= UNIQUE onconf */
- 205, /* (39) ccons ::= CHECK LP expr RP */
- 205, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
- 205, /* (41) ccons ::= defer_subclause */
- 205, /* (42) ccons ::= COLLATE ID|STRING */
- 210, /* (43) autoinc ::= */
- 210, /* (44) autoinc ::= AUTOINCR */
- 212, /* (45) refargs ::= */
- 212, /* (46) refargs ::= refargs refarg */
- 214, /* (47) refarg ::= MATCH nm */
- 214, /* (48) refarg ::= ON INSERT refact */
- 214, /* (49) refarg ::= ON DELETE refact */
- 214, /* (50) refarg ::= ON UPDATE refact */
- 215, /* (51) refact ::= SET NULL */
- 215, /* (52) refact ::= SET DEFAULT */
- 215, /* (53) refact ::= CASCADE */
- 215, /* (54) refact ::= RESTRICT */
- 215, /* (55) refact ::= NO ACTION */
- 213, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
- 213, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
- 216, /* (58) init_deferred_pred_opt ::= */
- 216, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
- 216, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
- 193, /* (61) conslist_opt ::= */
- 218, /* (62) tconscomma ::= COMMA */
- 219, /* (63) tcons ::= CONSTRAINT nm */
- 219, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
- 219, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
- 219, /* (66) tcons ::= CHECK LP expr RP onconf */
- 219, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
- 222, /* (68) defer_subclause_opt ::= */
- 208, /* (69) onconf ::= */
- 208, /* (70) onconf ::= ON CONFLICT resolvetype */
- 223, /* (71) orconf ::= */
- 223, /* (72) orconf ::= OR resolvetype */
- 224, /* (73) resolvetype ::= IGNORE */
- 224, /* (74) resolvetype ::= REPLACE */
- 181, /* (75) cmd ::= DROP TABLE ifexists fullname */
- 226, /* (76) ifexists ::= IF EXISTS */
- 226, /* (77) ifexists ::= */
- 181, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
- 181, /* (79) cmd ::= DROP VIEW ifexists fullname */
- 181, /* (80) cmd ::= select */
- 195, /* (81) select ::= WITH wqlist selectnowith */
- 195, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
- 195, /* (83) select ::= selectnowith */
- 228, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
- 231, /* (85) multiselect_op ::= UNION */
- 231, /* (86) multiselect_op ::= UNION ALL */
- 231, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
- 229, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
- 229, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
- 241, /* (90) values ::= VALUES LP nexprlist RP */
- 241, /* (91) values ::= values COMMA LP nexprlist RP */
- 232, /* (92) distinct ::= DISTINCT */
- 232, /* (93) distinct ::= ALL */
- 232, /* (94) distinct ::= */
- 243, /* (95) sclp ::= */
- 233, /* (96) selcollist ::= sclp scanpt expr scanpt as */
- 233, /* (97) selcollist ::= sclp scanpt STAR */
- 233, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
- 244, /* (99) as ::= AS nm */
- 244, /* (100) as ::= */
- 234, /* (101) from ::= */
- 234, /* (102) from ::= FROM seltablist */
- 246, /* (103) stl_prefix ::= seltablist joinop */
- 246, /* (104) stl_prefix ::= */
- 245, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
- 245, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
- 245, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
- 245, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
- 191, /* (109) dbnm ::= */
- 191, /* (110) dbnm ::= DOT nm */
- 227, /* (111) fullname ::= nm */
- 227, /* (112) fullname ::= nm DOT nm */
- 252, /* (113) xfullname ::= nm */
- 252, /* (114) xfullname ::= nm DOT nm */
- 252, /* (115) xfullname ::= nm DOT nm AS nm */
- 252, /* (116) xfullname ::= nm AS nm */
- 247, /* (117) joinop ::= COMMA|JOIN */
- 247, /* (118) joinop ::= JOIN_KW JOIN */
- 247, /* (119) joinop ::= JOIN_KW nm JOIN */
- 247, /* (120) joinop ::= JOIN_KW nm nm JOIN */
- 249, /* (121) on_opt ::= ON expr */
- 249, /* (122) on_opt ::= */
- 248, /* (123) indexed_opt ::= */
- 248, /* (124) indexed_opt ::= INDEXED BY nm */
- 248, /* (125) indexed_opt ::= NOT INDEXED */
- 250, /* (126) using_opt ::= USING LP idlist RP */
- 250, /* (127) using_opt ::= */
- 238, /* (128) orderby_opt ::= */
- 238, /* (129) orderby_opt ::= ORDER BY sortlist */
- 220, /* (130) sortlist ::= sortlist COMMA expr sortorder */
- 220, /* (131) sortlist ::= expr sortorder */
- 209, /* (132) sortorder ::= ASC */
- 209, /* (133) sortorder ::= DESC */
- 209, /* (134) sortorder ::= */
- 236, /* (135) groupby_opt ::= */
- 236, /* (136) groupby_opt ::= GROUP BY nexprlist */
- 237, /* (137) having_opt ::= */
- 237, /* (138) having_opt ::= HAVING expr */
- 239, /* (139) limit_opt ::= */
- 239, /* (140) limit_opt ::= LIMIT expr */
- 239, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
- 239, /* (142) limit_opt ::= LIMIT expr COMMA expr */
- 181, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
- 235, /* (144) where_opt ::= */
- 235, /* (145) where_opt ::= WHERE expr */
- 181, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
- 255, /* (147) setlist ::= setlist COMMA nm EQ expr */
- 255, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
- 255, /* (149) setlist ::= nm EQ expr */
- 255, /* (150) setlist ::= LP idlist RP EQ expr */
- 181, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
- 181, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
- 258, /* (153) upsert ::= */
- 258, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
- 258, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
- 258, /* (156) upsert ::= ON CONFLICT DO NOTHING */
- 256, /* (157) insert_cmd ::= INSERT orconf */
- 256, /* (158) insert_cmd ::= REPLACE */
- 257, /* (159) idlist_opt ::= */
- 257, /* (160) idlist_opt ::= LP idlist RP */
- 253, /* (161) idlist ::= idlist COMMA nm */
- 253, /* (162) idlist ::= nm */
- 207, /* (163) expr ::= LP expr RP */
- 207, /* (164) expr ::= ID|INDEXED */
- 207, /* (165) expr ::= JOIN_KW */
- 207, /* (166) expr ::= nm DOT nm */
- 207, /* (167) expr ::= nm DOT nm DOT nm */
- 206, /* (168) term ::= NULL|FLOAT|BLOB */
- 206, /* (169) term ::= STRING */
- 206, /* (170) term ::= INTEGER */
- 207, /* (171) expr ::= VARIABLE */
- 207, /* (172) expr ::= expr COLLATE ID|STRING */
- 207, /* (173) expr ::= CAST LP expr AS typetoken RP */
- 207, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
- 207, /* (175) expr ::= ID|INDEXED LP STAR RP */
- 207, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
- 207, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
- 206, /* (178) term ::= CTIME_KW */
- 207, /* (179) expr ::= LP nexprlist COMMA expr RP */
- 207, /* (180) expr ::= expr AND expr */
- 207, /* (181) expr ::= expr OR expr */
- 207, /* (182) expr ::= expr LT|GT|GE|LE expr */
- 207, /* (183) expr ::= expr EQ|NE expr */
- 207, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
- 207, /* (185) expr ::= expr PLUS|MINUS expr */
- 207, /* (186) expr ::= expr STAR|SLASH|REM expr */
- 207, /* (187) expr ::= expr CONCAT expr */
- 260, /* (188) likeop ::= NOT LIKE_KW|MATCH */
- 207, /* (189) expr ::= expr likeop expr */
- 207, /* (190) expr ::= expr likeop expr ESCAPE expr */
- 207, /* (191) expr ::= expr ISNULL|NOTNULL */
- 207, /* (192) expr ::= expr NOT NULL */
- 207, /* (193) expr ::= expr IS expr */
- 207, /* (194) expr ::= expr IS NOT expr */
- 207, /* (195) expr ::= NOT expr */
- 207, /* (196) expr ::= BITNOT expr */
- 207, /* (197) expr ::= PLUS|MINUS expr */
- 261, /* (198) between_op ::= BETWEEN */
- 261, /* (199) between_op ::= NOT BETWEEN */
- 207, /* (200) expr ::= expr between_op expr AND expr */
- 262, /* (201) in_op ::= IN */
- 262, /* (202) in_op ::= NOT IN */
- 207, /* (203) expr ::= expr in_op LP exprlist RP */
- 207, /* (204) expr ::= LP select RP */
- 207, /* (205) expr ::= expr in_op LP select RP */
- 207, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
- 207, /* (207) expr ::= EXISTS LP select RP */
- 207, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
- 265, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
- 265, /* (210) case_exprlist ::= WHEN expr THEN expr */
- 266, /* (211) case_else ::= ELSE expr */
- 266, /* (212) case_else ::= */
- 264, /* (213) case_operand ::= expr */
- 264, /* (214) case_operand ::= */
- 251, /* (215) exprlist ::= */
- 242, /* (216) nexprlist ::= nexprlist COMMA expr */
- 242, /* (217) nexprlist ::= expr */
- 263, /* (218) paren_exprlist ::= */
- 263, /* (219) paren_exprlist ::= LP exprlist RP */
- 181, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
- 267, /* (221) uniqueflag ::= UNIQUE */
- 267, /* (222) uniqueflag ::= */
- 211, /* (223) eidlist_opt ::= */
- 211, /* (224) eidlist_opt ::= LP eidlist RP */
- 221, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
- 221, /* (226) eidlist ::= nm collate sortorder */
- 268, /* (227) collate ::= */
- 268, /* (228) collate ::= COLLATE ID|STRING */
- 181, /* (229) cmd ::= DROP INDEX ifexists fullname */
- 181, /* (230) cmd ::= VACUUM vinto */
- 181, /* (231) cmd ::= VACUUM nm vinto */
- 269, /* (232) vinto ::= INTO expr */
- 269, /* (233) vinto ::= */
- 181, /* (234) cmd ::= PRAGMA nm dbnm */
- 181, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
- 181, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
- 181, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
- 181, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
- 201, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
- 202, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
- 181, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
- 271, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
- 273, /* (243) trigger_time ::= BEFORE|AFTER */
- 273, /* (244) trigger_time ::= INSTEAD OF */
- 273, /* (245) trigger_time ::= */
- 274, /* (246) trigger_event ::= DELETE|INSERT */
- 274, /* (247) trigger_event ::= UPDATE */
- 274, /* (248) trigger_event ::= UPDATE OF idlist */
- 276, /* (249) when_clause ::= */
- 276, /* (250) when_clause ::= WHEN expr */
- 272, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
- 272, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
- 278, /* (253) trnm ::= nm DOT nm */
- 279, /* (254) tridxby ::= INDEXED BY nm */
- 279, /* (255) tridxby ::= NOT INDEXED */
- 277, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
- 277, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
- 277, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
- 277, /* (259) trigger_cmd ::= scanpt select scanpt */
- 207, /* (260) expr ::= RAISE LP IGNORE RP */
- 207, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
- 225, /* (262) raisetype ::= ROLLBACK */
- 225, /* (263) raisetype ::= ABORT */
- 225, /* (264) raisetype ::= FAIL */
- 181, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
- 181, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
- 181, /* (267) cmd ::= DETACH database_kw_opt expr */
- 281, /* (268) key_opt ::= */
- 281, /* (269) key_opt ::= KEY expr */
- 181, /* (270) cmd ::= REINDEX */
- 181, /* (271) cmd ::= REINDEX nm dbnm */
- 181, /* (272) cmd ::= ANALYZE */
- 181, /* (273) cmd ::= ANALYZE nm dbnm */
- 181, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
- 181, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
- 282, /* (276) add_column_fullname ::= fullname */
- 181, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
- 181, /* (278) cmd ::= create_vtab */
- 181, /* (279) cmd ::= create_vtab LP vtabarglist RP */
- 284, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
- 286, /* (281) vtabarg ::= */
- 287, /* (282) vtabargtoken ::= ANY */
- 287, /* (283) vtabargtoken ::= lp anylist RP */
- 288, /* (284) lp ::= LP */
- 254, /* (285) with ::= WITH wqlist */
- 254, /* (286) with ::= WITH RECURSIVE wqlist */
- 230, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
- 230, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
- 290, /* (289) windowdefn_list ::= windowdefn */
- 290, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
- 291, /* (291) windowdefn ::= nm AS LP window RP */
- 292, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
- 292, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
- 292, /* (294) window ::= ORDER BY sortlist frame_opt */
- 292, /* (295) window ::= nm ORDER BY sortlist frame_opt */
- 292, /* (296) window ::= frame_opt */
- 292, /* (297) window ::= nm frame_opt */
- 293, /* (298) frame_opt ::= */
- 293, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
- 293, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
- 296, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
- 298, /* (302) frame_bound_s ::= frame_bound */
- 298, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
- 299, /* (304) frame_bound_e ::= frame_bound */
- 299, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
- 297, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
- 297, /* (307) frame_bound ::= CURRENT ROW */
- 300, /* (308) frame_exclude_opt ::= */
- 300, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
- 301, /* (310) frame_exclude ::= NO OTHERS */
- 301, /* (311) frame_exclude ::= CURRENT ROW */
- 301, /* (312) frame_exclude ::= GROUP|TIES */
- 240, /* (313) window_clause ::= WINDOW windowdefn_list */
- 259, /* (314) over_clause ::= filter_opt OVER LP window RP */
- 259, /* (315) over_clause ::= filter_opt OVER nm */
- 295, /* (316) filter_opt ::= */
- 295, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
- 176, /* (318) input ::= cmdlist */
- 177, /* (319) cmdlist ::= cmdlist ecmd */
- 177, /* (320) cmdlist ::= ecmd */
- 178, /* (321) ecmd ::= SEMI */
- 178, /* (322) ecmd ::= cmdx SEMI */
- 178, /* (323) ecmd ::= explain cmdx */
- 183, /* (324) trans_opt ::= */
- 183, /* (325) trans_opt ::= TRANSACTION */
- 183, /* (326) trans_opt ::= TRANSACTION nm */
- 185, /* (327) savepoint_opt ::= SAVEPOINT */
- 185, /* (328) savepoint_opt ::= */
- 181, /* (329) cmd ::= create_table create_table_args */
- 192, /* (330) columnlist ::= columnlist COMMA columnname carglist */
- 192, /* (331) columnlist ::= columnname carglist */
- 184, /* (332) nm ::= ID|INDEXED */
- 184, /* (333) nm ::= STRING */
- 184, /* (334) nm ::= JOIN_KW */
- 198, /* (335) typetoken ::= typename */
- 199, /* (336) typename ::= ID|STRING */
- 200, /* (337) signed ::= plus_num */
- 200, /* (338) signed ::= minus_num */
- 197, /* (339) carglist ::= carglist ccons */
- 197, /* (340) carglist ::= */
- 205, /* (341) ccons ::= NULL onconf */
- 193, /* (342) conslist_opt ::= COMMA conslist */
- 217, /* (343) conslist ::= conslist tconscomma tcons */
- 217, /* (344) conslist ::= tcons */
- 218, /* (345) tconscomma ::= */
- 222, /* (346) defer_subclause_opt ::= defer_subclause */
- 224, /* (347) resolvetype ::= raisetype */
- 228, /* (348) selectnowith ::= oneselect */
- 229, /* (349) oneselect ::= values */
- 243, /* (350) sclp ::= selcollist COMMA */
- 244, /* (351) as ::= ID|STRING */
- 207, /* (352) expr ::= term */
- 260, /* (353) likeop ::= LIKE_KW|MATCH */
- 251, /* (354) exprlist ::= nexprlist */
- 270, /* (355) nmnum ::= plus_num */
- 270, /* (356) nmnum ::= nm */
- 270, /* (357) nmnum ::= ON */
- 270, /* (358) nmnum ::= DELETE */
- 270, /* (359) nmnum ::= DEFAULT */
- 201, /* (360) plus_num ::= INTEGER|FLOAT */
- 275, /* (361) foreach_clause ::= */
- 275, /* (362) foreach_clause ::= FOR EACH ROW */
- 278, /* (363) trnm ::= nm */
- 279, /* (364) tridxby ::= */
- 280, /* (365) database_kw_opt ::= DATABASE */
- 280, /* (366) database_kw_opt ::= */
- 283, /* (367) kwcolumn_opt ::= */
- 283, /* (368) kwcolumn_opt ::= COLUMNKW */
- 285, /* (369) vtabarglist ::= vtabarg */
- 285, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
- 286, /* (371) vtabarg ::= vtabarg vtabargtoken */
- 289, /* (372) anylist ::= */
- 289, /* (373) anylist ::= anylist LP anylist RP */
- 289, /* (374) anylist ::= anylist ANY */
- 254, /* (375) with ::= */
+ 183, /* (0) explain ::= EXPLAIN */
+ 183, /* (1) explain ::= EXPLAIN QUERY PLAN */
+ 182, /* (2) cmdx ::= cmd */
+ 184, /* (3) cmd ::= BEGIN transtype trans_opt */
+ 185, /* (4) transtype ::= */
+ 185, /* (5) transtype ::= DEFERRED */
+ 185, /* (6) transtype ::= IMMEDIATE */
+ 185, /* (7) transtype ::= EXCLUSIVE */
+ 184, /* (8) cmd ::= COMMIT|END trans_opt */
+ 184, /* (9) cmd ::= ROLLBACK trans_opt */
+ 184, /* (10) cmd ::= SAVEPOINT nm */
+ 184, /* (11) cmd ::= RELEASE savepoint_opt nm */
+ 184, /* (12) cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */
+ 189, /* (13) create_table ::= createkw temp TABLE ifnotexists nm dbnm */
+ 191, /* (14) createkw ::= CREATE */
+ 193, /* (15) ifnotexists ::= */
+ 193, /* (16) ifnotexists ::= IF NOT EXISTS */
+ 192, /* (17) temp ::= TEMP */
+ 192, /* (18) temp ::= */
+ 190, /* (19) create_table_args ::= LP columnlist conslist_opt RP table_options */
+ 190, /* (20) create_table_args ::= AS select */
+ 197, /* (21) table_options ::= */
+ 197, /* (22) table_options ::= WITHOUT nm */
+ 199, /* (23) columnname ::= nm typetoken */
+ 201, /* (24) typetoken ::= */
+ 201, /* (25) typetoken ::= typename LP signed RP */
+ 201, /* (26) typetoken ::= typename LP signed COMMA signed RP */
+ 202, /* (27) typename ::= typename ID|STRING */
+ 206, /* (28) scanpt ::= */
+ 207, /* (29) scantok ::= */
+ 208, /* (30) ccons ::= CONSTRAINT nm */
+ 208, /* (31) ccons ::= DEFAULT scantok term */
+ 208, /* (32) ccons ::= DEFAULT LP expr RP */
+ 208, /* (33) ccons ::= DEFAULT PLUS scantok term */
+ 208, /* (34) ccons ::= DEFAULT MINUS scantok term */
+ 208, /* (35) ccons ::= DEFAULT scantok ID|INDEXED */
+ 208, /* (36) ccons ::= NOT NULL onconf */
+ 208, /* (37) ccons ::= PRIMARY KEY sortorder onconf autoinc */
+ 208, /* (38) ccons ::= UNIQUE onconf */
+ 208, /* (39) ccons ::= CHECK LP expr RP */
+ 208, /* (40) ccons ::= REFERENCES nm eidlist_opt refargs */
+ 208, /* (41) ccons ::= defer_subclause */
+ 208, /* (42) ccons ::= COLLATE ID|STRING */
+ 213, /* (43) autoinc ::= */
+ 213, /* (44) autoinc ::= AUTOINCR */
+ 215, /* (45) refargs ::= */
+ 215, /* (46) refargs ::= refargs refarg */
+ 217, /* (47) refarg ::= MATCH nm */
+ 217, /* (48) refarg ::= ON INSERT refact */
+ 217, /* (49) refarg ::= ON DELETE refact */
+ 217, /* (50) refarg ::= ON UPDATE refact */
+ 218, /* (51) refact ::= SET NULL */
+ 218, /* (52) refact ::= SET DEFAULT */
+ 218, /* (53) refact ::= CASCADE */
+ 218, /* (54) refact ::= RESTRICT */
+ 218, /* (55) refact ::= NO ACTION */
+ 216, /* (56) defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
+ 216, /* (57) defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
+ 219, /* (58) init_deferred_pred_opt ::= */
+ 219, /* (59) init_deferred_pred_opt ::= INITIALLY DEFERRED */
+ 219, /* (60) init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
+ 196, /* (61) conslist_opt ::= */
+ 221, /* (62) tconscomma ::= COMMA */
+ 222, /* (63) tcons ::= CONSTRAINT nm */
+ 222, /* (64) tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
+ 222, /* (65) tcons ::= UNIQUE LP sortlist RP onconf */
+ 222, /* (66) tcons ::= CHECK LP expr RP onconf */
+ 222, /* (67) tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
+ 225, /* (68) defer_subclause_opt ::= */
+ 211, /* (69) onconf ::= */
+ 211, /* (70) onconf ::= ON CONFLICT resolvetype */
+ 226, /* (71) orconf ::= */
+ 226, /* (72) orconf ::= OR resolvetype */
+ 227, /* (73) resolvetype ::= IGNORE */
+ 227, /* (74) resolvetype ::= REPLACE */
+ 184, /* (75) cmd ::= DROP TABLE ifexists fullname */
+ 229, /* (76) ifexists ::= IF EXISTS */
+ 229, /* (77) ifexists ::= */
+ 184, /* (78) cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
+ 184, /* (79) cmd ::= DROP VIEW ifexists fullname */
+ 184, /* (80) cmd ::= select */
+ 198, /* (81) select ::= WITH wqlist selectnowith */
+ 198, /* (82) select ::= WITH RECURSIVE wqlist selectnowith */
+ 198, /* (83) select ::= selectnowith */
+ 231, /* (84) selectnowith ::= selectnowith multiselect_op oneselect */
+ 234, /* (85) multiselect_op ::= UNION */
+ 234, /* (86) multiselect_op ::= UNION ALL */
+ 234, /* (87) multiselect_op ::= EXCEPT|INTERSECT */
+ 232, /* (88) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
+ 232, /* (89) oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
+ 244, /* (90) values ::= VALUES LP nexprlist RP */
+ 244, /* (91) values ::= values COMMA LP nexprlist RP */
+ 235, /* (92) distinct ::= DISTINCT */
+ 235, /* (93) distinct ::= ALL */
+ 235, /* (94) distinct ::= */
+ 246, /* (95) sclp ::= */
+ 236, /* (96) selcollist ::= sclp scanpt expr scanpt as */
+ 236, /* (97) selcollist ::= sclp scanpt STAR */
+ 236, /* (98) selcollist ::= sclp scanpt nm DOT STAR */
+ 247, /* (99) as ::= AS nm */
+ 247, /* (100) as ::= */
+ 237, /* (101) from ::= */
+ 237, /* (102) from ::= FROM seltablist */
+ 249, /* (103) stl_prefix ::= seltablist joinop */
+ 249, /* (104) stl_prefix ::= */
+ 248, /* (105) seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
+ 248, /* (106) seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
+ 248, /* (107) seltablist ::= stl_prefix LP select RP as on_opt using_opt */
+ 248, /* (108) seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
+ 194, /* (109) dbnm ::= */
+ 194, /* (110) dbnm ::= DOT nm */
+ 230, /* (111) fullname ::= nm */
+ 230, /* (112) fullname ::= nm DOT nm */
+ 255, /* (113) xfullname ::= nm */
+ 255, /* (114) xfullname ::= nm DOT nm */
+ 255, /* (115) xfullname ::= nm DOT nm AS nm */
+ 255, /* (116) xfullname ::= nm AS nm */
+ 250, /* (117) joinop ::= COMMA|JOIN */
+ 250, /* (118) joinop ::= JOIN_KW JOIN */
+ 250, /* (119) joinop ::= JOIN_KW nm JOIN */
+ 250, /* (120) joinop ::= JOIN_KW nm nm JOIN */
+ 252, /* (121) on_opt ::= ON expr */
+ 252, /* (122) on_opt ::= */
+ 251, /* (123) indexed_opt ::= */
+ 251, /* (124) indexed_opt ::= INDEXED BY nm */
+ 251, /* (125) indexed_opt ::= NOT INDEXED */
+ 253, /* (126) using_opt ::= USING LP idlist RP */
+ 253, /* (127) using_opt ::= */
+ 241, /* (128) orderby_opt ::= */
+ 241, /* (129) orderby_opt ::= ORDER BY sortlist */
+ 223, /* (130) sortlist ::= sortlist COMMA expr sortorder nulls */
+ 223, /* (131) sortlist ::= expr sortorder nulls */
+ 212, /* (132) sortorder ::= ASC */
+ 212, /* (133) sortorder ::= DESC */
+ 212, /* (134) sortorder ::= */
+ 257, /* (135) nulls ::= NULLS FIRST */
+ 257, /* (136) nulls ::= NULLS LAST */
+ 257, /* (137) nulls ::= */
+ 239, /* (138) groupby_opt ::= */
+ 239, /* (139) groupby_opt ::= GROUP BY nexprlist */
+ 240, /* (140) having_opt ::= */
+ 240, /* (141) having_opt ::= HAVING expr */
+ 242, /* (142) limit_opt ::= */
+ 242, /* (143) limit_opt ::= LIMIT expr */
+ 242, /* (144) limit_opt ::= LIMIT expr OFFSET expr */
+ 242, /* (145) limit_opt ::= LIMIT expr COMMA expr */
+ 184, /* (146) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
+ 238, /* (147) where_opt ::= */
+ 238, /* (148) where_opt ::= WHERE expr */
+ 184, /* (149) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
+ 259, /* (150) setlist ::= setlist COMMA nm EQ expr */
+ 259, /* (151) setlist ::= setlist COMMA LP idlist RP EQ expr */
+ 259, /* (152) setlist ::= nm EQ expr */
+ 259, /* (153) setlist ::= LP idlist RP EQ expr */
+ 184, /* (154) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ 184, /* (155) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
+ 262, /* (156) upsert ::= */
+ 262, /* (157) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
+ 262, /* (158) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
+ 262, /* (159) upsert ::= ON CONFLICT DO NOTHING */
+ 260, /* (160) insert_cmd ::= INSERT orconf */
+ 260, /* (161) insert_cmd ::= REPLACE */
+ 261, /* (162) idlist_opt ::= */
+ 261, /* (163) idlist_opt ::= LP idlist RP */
+ 256, /* (164) idlist ::= idlist COMMA nm */
+ 256, /* (165) idlist ::= nm */
+ 210, /* (166) expr ::= LP expr RP */
+ 210, /* (167) expr ::= ID|INDEXED */
+ 210, /* (168) expr ::= JOIN_KW */
+ 210, /* (169) expr ::= nm DOT nm */
+ 210, /* (170) expr ::= nm DOT nm DOT nm */
+ 209, /* (171) term ::= NULL|FLOAT|BLOB */
+ 209, /* (172) term ::= STRING */
+ 209, /* (173) term ::= INTEGER */
+ 210, /* (174) expr ::= VARIABLE */
+ 210, /* (175) expr ::= expr COLLATE ID|STRING */
+ 210, /* (176) expr ::= CAST LP expr AS typetoken RP */
+ 210, /* (177) expr ::= ID|INDEXED LP distinct exprlist RP */
+ 210, /* (178) expr ::= ID|INDEXED LP STAR RP */
+ 210, /* (179) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
+ 210, /* (180) expr ::= ID|INDEXED LP STAR RP filter_over */
+ 209, /* (181) term ::= CTIME_KW */
+ 210, /* (182) expr ::= LP nexprlist COMMA expr RP */
+ 210, /* (183) expr ::= expr AND expr */
+ 210, /* (184) expr ::= expr OR expr */
+ 210, /* (185) expr ::= expr LT|GT|GE|LE expr */
+ 210, /* (186) expr ::= expr EQ|NE expr */
+ 210, /* (187) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
+ 210, /* (188) expr ::= expr PLUS|MINUS expr */
+ 210, /* (189) expr ::= expr STAR|SLASH|REM expr */
+ 210, /* (190) expr ::= expr CONCAT expr */
+ 264, /* (191) likeop ::= NOT LIKE_KW|MATCH */
+ 210, /* (192) expr ::= expr likeop expr */
+ 210, /* (193) expr ::= expr likeop expr ESCAPE expr */
+ 210, /* (194) expr ::= expr ISNULL|NOTNULL */
+ 210, /* (195) expr ::= expr NOT NULL */
+ 210, /* (196) expr ::= expr IS expr */
+ 210, /* (197) expr ::= expr IS NOT expr */
+ 210, /* (198) expr ::= NOT expr */
+ 210, /* (199) expr ::= BITNOT expr */
+ 210, /* (200) expr ::= PLUS|MINUS expr */
+ 265, /* (201) between_op ::= BETWEEN */
+ 265, /* (202) between_op ::= NOT BETWEEN */
+ 210, /* (203) expr ::= expr between_op expr AND expr */
+ 266, /* (204) in_op ::= IN */
+ 266, /* (205) in_op ::= NOT IN */
+ 210, /* (206) expr ::= expr in_op LP exprlist RP */
+ 210, /* (207) expr ::= LP select RP */
+ 210, /* (208) expr ::= expr in_op LP select RP */
+ 210, /* (209) expr ::= expr in_op nm dbnm paren_exprlist */
+ 210, /* (210) expr ::= EXISTS LP select RP */
+ 210, /* (211) expr ::= CASE case_operand case_exprlist case_else END */
+ 269, /* (212) case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ 269, /* (213) case_exprlist ::= WHEN expr THEN expr */
+ 270, /* (214) case_else ::= ELSE expr */
+ 270, /* (215) case_else ::= */
+ 268, /* (216) case_operand ::= expr */
+ 268, /* (217) case_operand ::= */
+ 254, /* (218) exprlist ::= */
+ 245, /* (219) nexprlist ::= nexprlist COMMA expr */
+ 245, /* (220) nexprlist ::= expr */
+ 267, /* (221) paren_exprlist ::= */
+ 267, /* (222) paren_exprlist ::= LP exprlist RP */
+ 184, /* (223) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ 271, /* (224) uniqueflag ::= UNIQUE */
+ 271, /* (225) uniqueflag ::= */
+ 214, /* (226) eidlist_opt ::= */
+ 214, /* (227) eidlist_opt ::= LP eidlist RP */
+ 224, /* (228) eidlist ::= eidlist COMMA nm collate sortorder */
+ 224, /* (229) eidlist ::= nm collate sortorder */
+ 272, /* (230) collate ::= */
+ 272, /* (231) collate ::= COLLATE ID|STRING */
+ 184, /* (232) cmd ::= DROP INDEX ifexists fullname */
+ 184, /* (233) cmd ::= VACUUM vinto */
+ 184, /* (234) cmd ::= VACUUM nm vinto */
+ 273, /* (235) vinto ::= INTO expr */
+ 273, /* (236) vinto ::= */
+ 184, /* (237) cmd ::= PRAGMA nm dbnm */
+ 184, /* (238) cmd ::= PRAGMA nm dbnm EQ nmnum */
+ 184, /* (239) cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ 184, /* (240) cmd ::= PRAGMA nm dbnm EQ minus_num */
+ 184, /* (241) cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ 204, /* (242) plus_num ::= PLUS INTEGER|FLOAT */
+ 205, /* (243) minus_num ::= MINUS INTEGER|FLOAT */
+ 184, /* (244) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ 275, /* (245) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ 277, /* (246) trigger_time ::= BEFORE|AFTER */
+ 277, /* (247) trigger_time ::= INSTEAD OF */
+ 277, /* (248) trigger_time ::= */
+ 278, /* (249) trigger_event ::= DELETE|INSERT */
+ 278, /* (250) trigger_event ::= UPDATE */
+ 278, /* (251) trigger_event ::= UPDATE OF idlist */
+ 280, /* (252) when_clause ::= */
+ 280, /* (253) when_clause ::= WHEN expr */
+ 276, /* (254) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ 276, /* (255) trigger_cmd_list ::= trigger_cmd SEMI */
+ 282, /* (256) trnm ::= nm DOT nm */
+ 283, /* (257) tridxby ::= INDEXED BY nm */
+ 283, /* (258) tridxby ::= NOT INDEXED */
+ 281, /* (259) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
+ 281, /* (260) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ 281, /* (261) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+ 281, /* (262) trigger_cmd ::= scanpt select scanpt */
+ 210, /* (263) expr ::= RAISE LP IGNORE RP */
+ 210, /* (264) expr ::= RAISE LP raisetype COMMA nm RP */
+ 228, /* (265) raisetype ::= ROLLBACK */
+ 228, /* (266) raisetype ::= ABORT */
+ 228, /* (267) raisetype ::= FAIL */
+ 184, /* (268) cmd ::= DROP TRIGGER ifexists fullname */
+ 184, /* (269) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ 184, /* (270) cmd ::= DETACH database_kw_opt expr */
+ 285, /* (271) key_opt ::= */
+ 285, /* (272) key_opt ::= KEY expr */
+ 184, /* (273) cmd ::= REINDEX */
+ 184, /* (274) cmd ::= REINDEX nm dbnm */
+ 184, /* (275) cmd ::= ANALYZE */
+ 184, /* (276) cmd ::= ANALYZE nm dbnm */
+ 184, /* (277) cmd ::= ALTER TABLE fullname RENAME TO nm */
+ 184, /* (278) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ 286, /* (279) add_column_fullname ::= fullname */
+ 184, /* (280) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ 184, /* (281) cmd ::= create_vtab */
+ 184, /* (282) cmd ::= create_vtab LP vtabarglist RP */
+ 288, /* (283) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ 290, /* (284) vtabarg ::= */
+ 291, /* (285) vtabargtoken ::= ANY */
+ 291, /* (286) vtabargtoken ::= lp anylist RP */
+ 292, /* (287) lp ::= LP */
+ 258, /* (288) with ::= WITH wqlist */
+ 258, /* (289) with ::= WITH RECURSIVE wqlist */
+ 233, /* (290) wqlist ::= nm eidlist_opt AS LP select RP */
+ 233, /* (291) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
+ 294, /* (292) windowdefn_list ::= windowdefn */
+ 294, /* (293) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ 295, /* (294) windowdefn ::= nm AS LP window RP */
+ 296, /* (295) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ 296, /* (296) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ 296, /* (297) window ::= ORDER BY sortlist frame_opt */
+ 296, /* (298) window ::= nm ORDER BY sortlist frame_opt */
+ 296, /* (299) window ::= frame_opt */
+ 296, /* (300) window ::= nm frame_opt */
+ 297, /* (301) frame_opt ::= */
+ 297, /* (302) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ 297, /* (303) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ 301, /* (304) range_or_rows ::= RANGE|ROWS|GROUPS */
+ 303, /* (305) frame_bound_s ::= frame_bound */
+ 303, /* (306) frame_bound_s ::= UNBOUNDED PRECEDING */
+ 304, /* (307) frame_bound_e ::= frame_bound */
+ 304, /* (308) frame_bound_e ::= UNBOUNDED FOLLOWING */
+ 302, /* (309) frame_bound ::= expr PRECEDING|FOLLOWING */
+ 302, /* (310) frame_bound ::= CURRENT ROW */
+ 305, /* (311) frame_exclude_opt ::= */
+ 305, /* (312) frame_exclude_opt ::= EXCLUDE frame_exclude */
+ 306, /* (313) frame_exclude ::= NO OTHERS */
+ 306, /* (314) frame_exclude ::= CURRENT ROW */
+ 306, /* (315) frame_exclude ::= GROUP|TIES */
+ 243, /* (316) window_clause ::= WINDOW windowdefn_list */
+ 263, /* (317) filter_over ::= filter_clause over_clause */
+ 263, /* (318) filter_over ::= over_clause */
+ 263, /* (319) filter_over ::= filter_clause */
+ 300, /* (320) over_clause ::= OVER LP window RP */
+ 300, /* (321) over_clause ::= OVER nm */
+ 299, /* (322) filter_clause ::= FILTER LP WHERE expr RP */
+ 179, /* (323) input ::= cmdlist */
+ 180, /* (324) cmdlist ::= cmdlist ecmd */
+ 180, /* (325) cmdlist ::= ecmd */
+ 181, /* (326) ecmd ::= SEMI */
+ 181, /* (327) ecmd ::= cmdx SEMI */
+ 181, /* (328) ecmd ::= explain cmdx */
+ 186, /* (329) trans_opt ::= */
+ 186, /* (330) trans_opt ::= TRANSACTION */
+ 186, /* (331) trans_opt ::= TRANSACTION nm */
+ 188, /* (332) savepoint_opt ::= SAVEPOINT */
+ 188, /* (333) savepoint_opt ::= */
+ 184, /* (334) cmd ::= create_table create_table_args */
+ 195, /* (335) columnlist ::= columnlist COMMA columnname carglist */
+ 195, /* (336) columnlist ::= columnname carglist */
+ 187, /* (337) nm ::= ID|INDEXED */
+ 187, /* (338) nm ::= STRING */
+ 187, /* (339) nm ::= JOIN_KW */
+ 201, /* (340) typetoken ::= typename */
+ 202, /* (341) typename ::= ID|STRING */
+ 203, /* (342) signed ::= plus_num */
+ 203, /* (343) signed ::= minus_num */
+ 200, /* (344) carglist ::= carglist ccons */
+ 200, /* (345) carglist ::= */
+ 208, /* (346) ccons ::= NULL onconf */
+ 196, /* (347) conslist_opt ::= COMMA conslist */
+ 220, /* (348) conslist ::= conslist tconscomma tcons */
+ 220, /* (349) conslist ::= tcons */
+ 221, /* (350) tconscomma ::= */
+ 225, /* (351) defer_subclause_opt ::= defer_subclause */
+ 227, /* (352) resolvetype ::= raisetype */
+ 231, /* (353) selectnowith ::= oneselect */
+ 232, /* (354) oneselect ::= values */
+ 246, /* (355) sclp ::= selcollist COMMA */
+ 247, /* (356) as ::= ID|STRING */
+ 210, /* (357) expr ::= term */
+ 264, /* (358) likeop ::= LIKE_KW|MATCH */
+ 254, /* (359) exprlist ::= nexprlist */
+ 274, /* (360) nmnum ::= plus_num */
+ 274, /* (361) nmnum ::= nm */
+ 274, /* (362) nmnum ::= ON */
+ 274, /* (363) nmnum ::= DELETE */
+ 274, /* (364) nmnum ::= DEFAULT */
+ 204, /* (365) plus_num ::= INTEGER|FLOAT */
+ 279, /* (366) foreach_clause ::= */
+ 279, /* (367) foreach_clause ::= FOR EACH ROW */
+ 282, /* (368) trnm ::= nm */
+ 283, /* (369) tridxby ::= */
+ 284, /* (370) database_kw_opt ::= DATABASE */
+ 284, /* (371) database_kw_opt ::= */
+ 287, /* (372) kwcolumn_opt ::= */
+ 287, /* (373) kwcolumn_opt ::= COLUMNKW */
+ 289, /* (374) vtabarglist ::= vtabarg */
+ 289, /* (375) vtabarglist ::= vtabarglist COMMA vtabarg */
+ 290, /* (376) vtabarg ::= vtabarg vtabargtoken */
+ 293, /* (377) anylist ::= */
+ 293, /* (378) anylist ::= anylist LP anylist RP */
+ 293, /* (379) anylist ::= anylist ANY */
+ 258, /* (380) with ::= */
};
/* For rule J, yyRuleInfoNRhs[J] contains the negative of the number
@@ -151560,252 +152594,257 @@ static const signed char yyRuleInfoNRhs[] = {
0, /* (127) using_opt ::= */
0, /* (128) orderby_opt ::= */
-3, /* (129) orderby_opt ::= ORDER BY sortlist */
- -4, /* (130) sortlist ::= sortlist COMMA expr sortorder */
- -2, /* (131) sortlist ::= expr sortorder */
+ -5, /* (130) sortlist ::= sortlist COMMA expr sortorder nulls */
+ -3, /* (131) sortlist ::= expr sortorder nulls */
-1, /* (132) sortorder ::= ASC */
-1, /* (133) sortorder ::= DESC */
0, /* (134) sortorder ::= */
- 0, /* (135) groupby_opt ::= */
- -3, /* (136) groupby_opt ::= GROUP BY nexprlist */
- 0, /* (137) having_opt ::= */
- -2, /* (138) having_opt ::= HAVING expr */
- 0, /* (139) limit_opt ::= */
- -2, /* (140) limit_opt ::= LIMIT expr */
- -4, /* (141) limit_opt ::= LIMIT expr OFFSET expr */
- -4, /* (142) limit_opt ::= LIMIT expr COMMA expr */
- -6, /* (143) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
- 0, /* (144) where_opt ::= */
- -2, /* (145) where_opt ::= WHERE expr */
- -8, /* (146) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
- -5, /* (147) setlist ::= setlist COMMA nm EQ expr */
- -7, /* (148) setlist ::= setlist COMMA LP idlist RP EQ expr */
- -3, /* (149) setlist ::= nm EQ expr */
- -5, /* (150) setlist ::= LP idlist RP EQ expr */
- -7, /* (151) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
- -7, /* (152) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
- 0, /* (153) upsert ::= */
- -11, /* (154) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
- -8, /* (155) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
- -4, /* (156) upsert ::= ON CONFLICT DO NOTHING */
- -2, /* (157) insert_cmd ::= INSERT orconf */
- -1, /* (158) insert_cmd ::= REPLACE */
- 0, /* (159) idlist_opt ::= */
- -3, /* (160) idlist_opt ::= LP idlist RP */
- -3, /* (161) idlist ::= idlist COMMA nm */
- -1, /* (162) idlist ::= nm */
- -3, /* (163) expr ::= LP expr RP */
- -1, /* (164) expr ::= ID|INDEXED */
- -1, /* (165) expr ::= JOIN_KW */
- -3, /* (166) expr ::= nm DOT nm */
- -5, /* (167) expr ::= nm DOT nm DOT nm */
- -1, /* (168) term ::= NULL|FLOAT|BLOB */
- -1, /* (169) term ::= STRING */
- -1, /* (170) term ::= INTEGER */
- -1, /* (171) expr ::= VARIABLE */
- -3, /* (172) expr ::= expr COLLATE ID|STRING */
- -6, /* (173) expr ::= CAST LP expr AS typetoken RP */
- -5, /* (174) expr ::= ID|INDEXED LP distinct exprlist RP */
- -4, /* (175) expr ::= ID|INDEXED LP STAR RP */
- -6, /* (176) expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
- -5, /* (177) expr ::= ID|INDEXED LP STAR RP over_clause */
- -1, /* (178) term ::= CTIME_KW */
- -5, /* (179) expr ::= LP nexprlist COMMA expr RP */
- -3, /* (180) expr ::= expr AND expr */
- -3, /* (181) expr ::= expr OR expr */
- -3, /* (182) expr ::= expr LT|GT|GE|LE expr */
- -3, /* (183) expr ::= expr EQ|NE expr */
- -3, /* (184) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
- -3, /* (185) expr ::= expr PLUS|MINUS expr */
- -3, /* (186) expr ::= expr STAR|SLASH|REM expr */
- -3, /* (187) expr ::= expr CONCAT expr */
- -2, /* (188) likeop ::= NOT LIKE_KW|MATCH */
- -3, /* (189) expr ::= expr likeop expr */
- -5, /* (190) expr ::= expr likeop expr ESCAPE expr */
- -2, /* (191) expr ::= expr ISNULL|NOTNULL */
- -3, /* (192) expr ::= expr NOT NULL */
- -3, /* (193) expr ::= expr IS expr */
- -4, /* (194) expr ::= expr IS NOT expr */
- -2, /* (195) expr ::= NOT expr */
- -2, /* (196) expr ::= BITNOT expr */
- -2, /* (197) expr ::= PLUS|MINUS expr */
- -1, /* (198) between_op ::= BETWEEN */
- -2, /* (199) between_op ::= NOT BETWEEN */
- -5, /* (200) expr ::= expr between_op expr AND expr */
- -1, /* (201) in_op ::= IN */
- -2, /* (202) in_op ::= NOT IN */
- -5, /* (203) expr ::= expr in_op LP exprlist RP */
- -3, /* (204) expr ::= LP select RP */
- -5, /* (205) expr ::= expr in_op LP select RP */
- -5, /* (206) expr ::= expr in_op nm dbnm paren_exprlist */
- -4, /* (207) expr ::= EXISTS LP select RP */
- -5, /* (208) expr ::= CASE case_operand case_exprlist case_else END */
- -5, /* (209) case_exprlist ::= case_exprlist WHEN expr THEN expr */
- -4, /* (210) case_exprlist ::= WHEN expr THEN expr */
- -2, /* (211) case_else ::= ELSE expr */
- 0, /* (212) case_else ::= */
- -1, /* (213) case_operand ::= expr */
- 0, /* (214) case_operand ::= */
- 0, /* (215) exprlist ::= */
- -3, /* (216) nexprlist ::= nexprlist COMMA expr */
- -1, /* (217) nexprlist ::= expr */
- 0, /* (218) paren_exprlist ::= */
- -3, /* (219) paren_exprlist ::= LP exprlist RP */
- -12, /* (220) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
- -1, /* (221) uniqueflag ::= UNIQUE */
- 0, /* (222) uniqueflag ::= */
- 0, /* (223) eidlist_opt ::= */
- -3, /* (224) eidlist_opt ::= LP eidlist RP */
- -5, /* (225) eidlist ::= eidlist COMMA nm collate sortorder */
- -3, /* (226) eidlist ::= nm collate sortorder */
- 0, /* (227) collate ::= */
- -2, /* (228) collate ::= COLLATE ID|STRING */
- -4, /* (229) cmd ::= DROP INDEX ifexists fullname */
- -2, /* (230) cmd ::= VACUUM vinto */
- -3, /* (231) cmd ::= VACUUM nm vinto */
- -2, /* (232) vinto ::= INTO expr */
- 0, /* (233) vinto ::= */
- -3, /* (234) cmd ::= PRAGMA nm dbnm */
- -5, /* (235) cmd ::= PRAGMA nm dbnm EQ nmnum */
- -6, /* (236) cmd ::= PRAGMA nm dbnm LP nmnum RP */
- -5, /* (237) cmd ::= PRAGMA nm dbnm EQ minus_num */
- -6, /* (238) cmd ::= PRAGMA nm dbnm LP minus_num RP */
- -2, /* (239) plus_num ::= PLUS INTEGER|FLOAT */
- -2, /* (240) minus_num ::= MINUS INTEGER|FLOAT */
- -5, /* (241) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
- -11, /* (242) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
- -1, /* (243) trigger_time ::= BEFORE|AFTER */
- -2, /* (244) trigger_time ::= INSTEAD OF */
- 0, /* (245) trigger_time ::= */
- -1, /* (246) trigger_event ::= DELETE|INSERT */
- -1, /* (247) trigger_event ::= UPDATE */
- -3, /* (248) trigger_event ::= UPDATE OF idlist */
- 0, /* (249) when_clause ::= */
- -2, /* (250) when_clause ::= WHEN expr */
- -3, /* (251) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
- -2, /* (252) trigger_cmd_list ::= trigger_cmd SEMI */
- -3, /* (253) trnm ::= nm DOT nm */
- -3, /* (254) tridxby ::= INDEXED BY nm */
- -2, /* (255) tridxby ::= NOT INDEXED */
- -8, /* (256) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
- -8, /* (257) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
- -6, /* (258) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
- -3, /* (259) trigger_cmd ::= scanpt select scanpt */
- -4, /* (260) expr ::= RAISE LP IGNORE RP */
- -6, /* (261) expr ::= RAISE LP raisetype COMMA nm RP */
- -1, /* (262) raisetype ::= ROLLBACK */
- -1, /* (263) raisetype ::= ABORT */
- -1, /* (264) raisetype ::= FAIL */
- -4, /* (265) cmd ::= DROP TRIGGER ifexists fullname */
- -6, /* (266) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
- -3, /* (267) cmd ::= DETACH database_kw_opt expr */
- 0, /* (268) key_opt ::= */
- -2, /* (269) key_opt ::= KEY expr */
- -1, /* (270) cmd ::= REINDEX */
- -3, /* (271) cmd ::= REINDEX nm dbnm */
- -1, /* (272) cmd ::= ANALYZE */
- -3, /* (273) cmd ::= ANALYZE nm dbnm */
- -6, /* (274) cmd ::= ALTER TABLE fullname RENAME TO nm */
- -7, /* (275) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
- -1, /* (276) add_column_fullname ::= fullname */
- -8, /* (277) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
- -1, /* (278) cmd ::= create_vtab */
- -4, /* (279) cmd ::= create_vtab LP vtabarglist RP */
- -8, /* (280) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
- 0, /* (281) vtabarg ::= */
- -1, /* (282) vtabargtoken ::= ANY */
- -3, /* (283) vtabargtoken ::= lp anylist RP */
- -1, /* (284) lp ::= LP */
- -2, /* (285) with ::= WITH wqlist */
- -3, /* (286) with ::= WITH RECURSIVE wqlist */
- -6, /* (287) wqlist ::= nm eidlist_opt AS LP select RP */
- -8, /* (288) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
- -1, /* (289) windowdefn_list ::= windowdefn */
- -3, /* (290) windowdefn_list ::= windowdefn_list COMMA windowdefn */
- -5, /* (291) windowdefn ::= nm AS LP window RP */
- -5, /* (292) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
- -6, /* (293) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
- -4, /* (294) window ::= ORDER BY sortlist frame_opt */
- -5, /* (295) window ::= nm ORDER BY sortlist frame_opt */
- -1, /* (296) window ::= frame_opt */
- -2, /* (297) window ::= nm frame_opt */
- 0, /* (298) frame_opt ::= */
- -3, /* (299) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
- -6, /* (300) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
- -1, /* (301) range_or_rows ::= RANGE|ROWS|GROUPS */
- -1, /* (302) frame_bound_s ::= frame_bound */
- -2, /* (303) frame_bound_s ::= UNBOUNDED PRECEDING */
- -1, /* (304) frame_bound_e ::= frame_bound */
- -2, /* (305) frame_bound_e ::= UNBOUNDED FOLLOWING */
- -2, /* (306) frame_bound ::= expr PRECEDING|FOLLOWING */
- -2, /* (307) frame_bound ::= CURRENT ROW */
- 0, /* (308) frame_exclude_opt ::= */
- -2, /* (309) frame_exclude_opt ::= EXCLUDE frame_exclude */
- -2, /* (310) frame_exclude ::= NO OTHERS */
- -2, /* (311) frame_exclude ::= CURRENT ROW */
- -1, /* (312) frame_exclude ::= GROUP|TIES */
- -2, /* (313) window_clause ::= WINDOW windowdefn_list */
- -5, /* (314) over_clause ::= filter_opt OVER LP window RP */
- -3, /* (315) over_clause ::= filter_opt OVER nm */
- 0, /* (316) filter_opt ::= */
- -5, /* (317) filter_opt ::= FILTER LP WHERE expr RP */
- -1, /* (318) input ::= cmdlist */
- -2, /* (319) cmdlist ::= cmdlist ecmd */
- -1, /* (320) cmdlist ::= ecmd */
- -1, /* (321) ecmd ::= SEMI */
- -2, /* (322) ecmd ::= cmdx SEMI */
- -2, /* (323) ecmd ::= explain cmdx */
- 0, /* (324) trans_opt ::= */
- -1, /* (325) trans_opt ::= TRANSACTION */
- -2, /* (326) trans_opt ::= TRANSACTION nm */
- -1, /* (327) savepoint_opt ::= SAVEPOINT */
- 0, /* (328) savepoint_opt ::= */
- -2, /* (329) cmd ::= create_table create_table_args */
- -4, /* (330) columnlist ::= columnlist COMMA columnname carglist */
- -2, /* (331) columnlist ::= columnname carglist */
- -1, /* (332) nm ::= ID|INDEXED */
- -1, /* (333) nm ::= STRING */
- -1, /* (334) nm ::= JOIN_KW */
- -1, /* (335) typetoken ::= typename */
- -1, /* (336) typename ::= ID|STRING */
- -1, /* (337) signed ::= plus_num */
- -1, /* (338) signed ::= minus_num */
- -2, /* (339) carglist ::= carglist ccons */
- 0, /* (340) carglist ::= */
- -2, /* (341) ccons ::= NULL onconf */
- -2, /* (342) conslist_opt ::= COMMA conslist */
- -3, /* (343) conslist ::= conslist tconscomma tcons */
- -1, /* (344) conslist ::= tcons */
- 0, /* (345) tconscomma ::= */
- -1, /* (346) defer_subclause_opt ::= defer_subclause */
- -1, /* (347) resolvetype ::= raisetype */
- -1, /* (348) selectnowith ::= oneselect */
- -1, /* (349) oneselect ::= values */
- -2, /* (350) sclp ::= selcollist COMMA */
- -1, /* (351) as ::= ID|STRING */
- -1, /* (352) expr ::= term */
- -1, /* (353) likeop ::= LIKE_KW|MATCH */
- -1, /* (354) exprlist ::= nexprlist */
- -1, /* (355) nmnum ::= plus_num */
- -1, /* (356) nmnum ::= nm */
- -1, /* (357) nmnum ::= ON */
- -1, /* (358) nmnum ::= DELETE */
- -1, /* (359) nmnum ::= DEFAULT */
- -1, /* (360) plus_num ::= INTEGER|FLOAT */
- 0, /* (361) foreach_clause ::= */
- -3, /* (362) foreach_clause ::= FOR EACH ROW */
- -1, /* (363) trnm ::= nm */
- 0, /* (364) tridxby ::= */
- -1, /* (365) database_kw_opt ::= DATABASE */
- 0, /* (366) database_kw_opt ::= */
- 0, /* (367) kwcolumn_opt ::= */
- -1, /* (368) kwcolumn_opt ::= COLUMNKW */
- -1, /* (369) vtabarglist ::= vtabarg */
- -3, /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */
- -2, /* (371) vtabarg ::= vtabarg vtabargtoken */
- 0, /* (372) anylist ::= */
- -4, /* (373) anylist ::= anylist LP anylist RP */
- -2, /* (374) anylist ::= anylist ANY */
- 0, /* (375) with ::= */
+ -2, /* (135) nulls ::= NULLS FIRST */
+ -2, /* (136) nulls ::= NULLS LAST */
+ 0, /* (137) nulls ::= */
+ 0, /* (138) groupby_opt ::= */
+ -3, /* (139) groupby_opt ::= GROUP BY nexprlist */
+ 0, /* (140) having_opt ::= */
+ -2, /* (141) having_opt ::= HAVING expr */
+ 0, /* (142) limit_opt ::= */
+ -2, /* (143) limit_opt ::= LIMIT expr */
+ -4, /* (144) limit_opt ::= LIMIT expr OFFSET expr */
+ -4, /* (145) limit_opt ::= LIMIT expr COMMA expr */
+ -6, /* (146) cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
+ 0, /* (147) where_opt ::= */
+ -2, /* (148) where_opt ::= WHERE expr */
+ -8, /* (149) cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
+ -5, /* (150) setlist ::= setlist COMMA nm EQ expr */
+ -7, /* (151) setlist ::= setlist COMMA LP idlist RP EQ expr */
+ -3, /* (152) setlist ::= nm EQ expr */
+ -5, /* (153) setlist ::= LP idlist RP EQ expr */
+ -7, /* (154) cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ -7, /* (155) cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
+ 0, /* (156) upsert ::= */
+ -11, /* (157) upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
+ -8, /* (158) upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
+ -4, /* (159) upsert ::= ON CONFLICT DO NOTHING */
+ -2, /* (160) insert_cmd ::= INSERT orconf */
+ -1, /* (161) insert_cmd ::= REPLACE */
+ 0, /* (162) idlist_opt ::= */
+ -3, /* (163) idlist_opt ::= LP idlist RP */
+ -3, /* (164) idlist ::= idlist COMMA nm */
+ -1, /* (165) idlist ::= nm */
+ -3, /* (166) expr ::= LP expr RP */
+ -1, /* (167) expr ::= ID|INDEXED */
+ -1, /* (168) expr ::= JOIN_KW */
+ -3, /* (169) expr ::= nm DOT nm */
+ -5, /* (170) expr ::= nm DOT nm DOT nm */
+ -1, /* (171) term ::= NULL|FLOAT|BLOB */
+ -1, /* (172) term ::= STRING */
+ -1, /* (173) term ::= INTEGER */
+ -1, /* (174) expr ::= VARIABLE */
+ -3, /* (175) expr ::= expr COLLATE ID|STRING */
+ -6, /* (176) expr ::= CAST LP expr AS typetoken RP */
+ -5, /* (177) expr ::= ID|INDEXED LP distinct exprlist RP */
+ -4, /* (178) expr ::= ID|INDEXED LP STAR RP */
+ -6, /* (179) expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
+ -5, /* (180) expr ::= ID|INDEXED LP STAR RP filter_over */
+ -1, /* (181) term ::= CTIME_KW */
+ -5, /* (182) expr ::= LP nexprlist COMMA expr RP */
+ -3, /* (183) expr ::= expr AND expr */
+ -3, /* (184) expr ::= expr OR expr */
+ -3, /* (185) expr ::= expr LT|GT|GE|LE expr */
+ -3, /* (186) expr ::= expr EQ|NE expr */
+ -3, /* (187) expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */
+ -3, /* (188) expr ::= expr PLUS|MINUS expr */
+ -3, /* (189) expr ::= expr STAR|SLASH|REM expr */
+ -3, /* (190) expr ::= expr CONCAT expr */
+ -2, /* (191) likeop ::= NOT LIKE_KW|MATCH */
+ -3, /* (192) expr ::= expr likeop expr */
+ -5, /* (193) expr ::= expr likeop expr ESCAPE expr */
+ -2, /* (194) expr ::= expr ISNULL|NOTNULL */
+ -3, /* (195) expr ::= expr NOT NULL */
+ -3, /* (196) expr ::= expr IS expr */
+ -4, /* (197) expr ::= expr IS NOT expr */
+ -2, /* (198) expr ::= NOT expr */
+ -2, /* (199) expr ::= BITNOT expr */
+ -2, /* (200) expr ::= PLUS|MINUS expr */
+ -1, /* (201) between_op ::= BETWEEN */
+ -2, /* (202) between_op ::= NOT BETWEEN */
+ -5, /* (203) expr ::= expr between_op expr AND expr */
+ -1, /* (204) in_op ::= IN */
+ -2, /* (205) in_op ::= NOT IN */
+ -5, /* (206) expr ::= expr in_op LP exprlist RP */
+ -3, /* (207) expr ::= LP select RP */
+ -5, /* (208) expr ::= expr in_op LP select RP */
+ -5, /* (209) expr ::= expr in_op nm dbnm paren_exprlist */
+ -4, /* (210) expr ::= EXISTS LP select RP */
+ -5, /* (211) expr ::= CASE case_operand case_exprlist case_else END */
+ -5, /* (212) case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ -4, /* (213) case_exprlist ::= WHEN expr THEN expr */
+ -2, /* (214) case_else ::= ELSE expr */
+ 0, /* (215) case_else ::= */
+ -1, /* (216) case_operand ::= expr */
+ 0, /* (217) case_operand ::= */
+ 0, /* (218) exprlist ::= */
+ -3, /* (219) nexprlist ::= nexprlist COMMA expr */
+ -1, /* (220) nexprlist ::= expr */
+ 0, /* (221) paren_exprlist ::= */
+ -3, /* (222) paren_exprlist ::= LP exprlist RP */
+ -12, /* (223) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ -1, /* (224) uniqueflag ::= UNIQUE */
+ 0, /* (225) uniqueflag ::= */
+ 0, /* (226) eidlist_opt ::= */
+ -3, /* (227) eidlist_opt ::= LP eidlist RP */
+ -5, /* (228) eidlist ::= eidlist COMMA nm collate sortorder */
+ -3, /* (229) eidlist ::= nm collate sortorder */
+ 0, /* (230) collate ::= */
+ -2, /* (231) collate ::= COLLATE ID|STRING */
+ -4, /* (232) cmd ::= DROP INDEX ifexists fullname */
+ -2, /* (233) cmd ::= VACUUM vinto */
+ -3, /* (234) cmd ::= VACUUM nm vinto */
+ -2, /* (235) vinto ::= INTO expr */
+ 0, /* (236) vinto ::= */
+ -3, /* (237) cmd ::= PRAGMA nm dbnm */
+ -5, /* (238) cmd ::= PRAGMA nm dbnm EQ nmnum */
+ -6, /* (239) cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ -5, /* (240) cmd ::= PRAGMA nm dbnm EQ minus_num */
+ -6, /* (241) cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ -2, /* (242) plus_num ::= PLUS INTEGER|FLOAT */
+ -2, /* (243) minus_num ::= MINUS INTEGER|FLOAT */
+ -5, /* (244) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ -11, /* (245) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ -1, /* (246) trigger_time ::= BEFORE|AFTER */
+ -2, /* (247) trigger_time ::= INSTEAD OF */
+ 0, /* (248) trigger_time ::= */
+ -1, /* (249) trigger_event ::= DELETE|INSERT */
+ -1, /* (250) trigger_event ::= UPDATE */
+ -3, /* (251) trigger_event ::= UPDATE OF idlist */
+ 0, /* (252) when_clause ::= */
+ -2, /* (253) when_clause ::= WHEN expr */
+ -3, /* (254) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ -2, /* (255) trigger_cmd_list ::= trigger_cmd SEMI */
+ -3, /* (256) trnm ::= nm DOT nm */
+ -3, /* (257) tridxby ::= INDEXED BY nm */
+ -2, /* (258) tridxby ::= NOT INDEXED */
+ -8, /* (259) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
+ -8, /* (260) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ -6, /* (261) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+ -3, /* (262) trigger_cmd ::= scanpt select scanpt */
+ -4, /* (263) expr ::= RAISE LP IGNORE RP */
+ -6, /* (264) expr ::= RAISE LP raisetype COMMA nm RP */
+ -1, /* (265) raisetype ::= ROLLBACK */
+ -1, /* (266) raisetype ::= ABORT */
+ -1, /* (267) raisetype ::= FAIL */
+ -4, /* (268) cmd ::= DROP TRIGGER ifexists fullname */
+ -6, /* (269) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ -3, /* (270) cmd ::= DETACH database_kw_opt expr */
+ 0, /* (271) key_opt ::= */
+ -2, /* (272) key_opt ::= KEY expr */
+ -1, /* (273) cmd ::= REINDEX */
+ -3, /* (274) cmd ::= REINDEX nm dbnm */
+ -1, /* (275) cmd ::= ANALYZE */
+ -3, /* (276) cmd ::= ANALYZE nm dbnm */
+ -6, /* (277) cmd ::= ALTER TABLE fullname RENAME TO nm */
+ -7, /* (278) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ -1, /* (279) add_column_fullname ::= fullname */
+ -8, /* (280) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ -1, /* (281) cmd ::= create_vtab */
+ -4, /* (282) cmd ::= create_vtab LP vtabarglist RP */
+ -8, /* (283) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ 0, /* (284) vtabarg ::= */
+ -1, /* (285) vtabargtoken ::= ANY */
+ -3, /* (286) vtabargtoken ::= lp anylist RP */
+ -1, /* (287) lp ::= LP */
+ -2, /* (288) with ::= WITH wqlist */
+ -3, /* (289) with ::= WITH RECURSIVE wqlist */
+ -6, /* (290) wqlist ::= nm eidlist_opt AS LP select RP */
+ -8, /* (291) wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
+ -1, /* (292) windowdefn_list ::= windowdefn */
+ -3, /* (293) windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ -5, /* (294) windowdefn ::= nm AS LP window RP */
+ -5, /* (295) window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ -6, /* (296) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ -4, /* (297) window ::= ORDER BY sortlist frame_opt */
+ -5, /* (298) window ::= nm ORDER BY sortlist frame_opt */
+ -1, /* (299) window ::= frame_opt */
+ -2, /* (300) window ::= nm frame_opt */
+ 0, /* (301) frame_opt ::= */
+ -3, /* (302) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ -6, /* (303) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ -1, /* (304) range_or_rows ::= RANGE|ROWS|GROUPS */
+ -1, /* (305) frame_bound_s ::= frame_bound */
+ -2, /* (306) frame_bound_s ::= UNBOUNDED PRECEDING */
+ -1, /* (307) frame_bound_e ::= frame_bound */
+ -2, /* (308) frame_bound_e ::= UNBOUNDED FOLLOWING */
+ -2, /* (309) frame_bound ::= expr PRECEDING|FOLLOWING */
+ -2, /* (310) frame_bound ::= CURRENT ROW */
+ 0, /* (311) frame_exclude_opt ::= */
+ -2, /* (312) frame_exclude_opt ::= EXCLUDE frame_exclude */
+ -2, /* (313) frame_exclude ::= NO OTHERS */
+ -2, /* (314) frame_exclude ::= CURRENT ROW */
+ -1, /* (315) frame_exclude ::= GROUP|TIES */
+ -2, /* (316) window_clause ::= WINDOW windowdefn_list */
+ -2, /* (317) filter_over ::= filter_clause over_clause */
+ -1, /* (318) filter_over ::= over_clause */
+ -1, /* (319) filter_over ::= filter_clause */
+ -4, /* (320) over_clause ::= OVER LP window RP */
+ -2, /* (321) over_clause ::= OVER nm */
+ -5, /* (322) filter_clause ::= FILTER LP WHERE expr RP */
+ -1, /* (323) input ::= cmdlist */
+ -2, /* (324) cmdlist ::= cmdlist ecmd */
+ -1, /* (325) cmdlist ::= ecmd */
+ -1, /* (326) ecmd ::= SEMI */
+ -2, /* (327) ecmd ::= cmdx SEMI */
+ -2, /* (328) ecmd ::= explain cmdx */
+ 0, /* (329) trans_opt ::= */
+ -1, /* (330) trans_opt ::= TRANSACTION */
+ -2, /* (331) trans_opt ::= TRANSACTION nm */
+ -1, /* (332) savepoint_opt ::= SAVEPOINT */
+ 0, /* (333) savepoint_opt ::= */
+ -2, /* (334) cmd ::= create_table create_table_args */
+ -4, /* (335) columnlist ::= columnlist COMMA columnname carglist */
+ -2, /* (336) columnlist ::= columnname carglist */
+ -1, /* (337) nm ::= ID|INDEXED */
+ -1, /* (338) nm ::= STRING */
+ -1, /* (339) nm ::= JOIN_KW */
+ -1, /* (340) typetoken ::= typename */
+ -1, /* (341) typename ::= ID|STRING */
+ -1, /* (342) signed ::= plus_num */
+ -1, /* (343) signed ::= minus_num */
+ -2, /* (344) carglist ::= carglist ccons */
+ 0, /* (345) carglist ::= */
+ -2, /* (346) ccons ::= NULL onconf */
+ -2, /* (347) conslist_opt ::= COMMA conslist */
+ -3, /* (348) conslist ::= conslist tconscomma tcons */
+ -1, /* (349) conslist ::= tcons */
+ 0, /* (350) tconscomma ::= */
+ -1, /* (351) defer_subclause_opt ::= defer_subclause */
+ -1, /* (352) resolvetype ::= raisetype */
+ -1, /* (353) selectnowith ::= oneselect */
+ -1, /* (354) oneselect ::= values */
+ -2, /* (355) sclp ::= selcollist COMMA */
+ -1, /* (356) as ::= ID|STRING */
+ -1, /* (357) expr ::= term */
+ -1, /* (358) likeop ::= LIKE_KW|MATCH */
+ -1, /* (359) exprlist ::= nexprlist */
+ -1, /* (360) nmnum ::= plus_num */
+ -1, /* (361) nmnum ::= nm */
+ -1, /* (362) nmnum ::= ON */
+ -1, /* (363) nmnum ::= DELETE */
+ -1, /* (364) nmnum ::= DEFAULT */
+ -1, /* (365) plus_num ::= INTEGER|FLOAT */
+ 0, /* (366) foreach_clause ::= */
+ -3, /* (367) foreach_clause ::= FOR EACH ROW */
+ -1, /* (368) trnm ::= nm */
+ 0, /* (369) tridxby ::= */
+ -1, /* (370) database_kw_opt ::= DATABASE */
+ 0, /* (371) database_kw_opt ::= */
+ 0, /* (372) kwcolumn_opt ::= */
+ -1, /* (373) kwcolumn_opt ::= COLUMNKW */
+ -1, /* (374) vtabarglist ::= vtabarg */
+ -3, /* (375) vtabarglist ::= vtabarglist COMMA vtabarg */
+ -2, /* (376) vtabarg ::= vtabarg vtabargtoken */
+ 0, /* (377) anylist ::= */
+ -4, /* (378) anylist ::= anylist LP anylist RP */
+ -2, /* (379) anylist ::= anylist ANY */
+ 0, /* (380) with ::= */
};
static void yy_accept(yyParser*); /* Forward Declaration */
@@ -151902,16 +152941,16 @@ static YYACTIONTYPE yy_reduce(
{ sqlite3FinishCoding(pParse); }
break;
case 3: /* cmd ::= BEGIN transtype trans_opt */
-{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy100);}
+{sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy32);}
break;
case 4: /* transtype ::= */
-{yymsp[1].minor.yy100 = TK_DEFERRED;}
+{yymsp[1].minor.yy32 = TK_DEFERRED;}
break;
case 5: /* transtype ::= DEFERRED */
case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6);
case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7);
- case 301: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==301);
-{yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/}
+ case 304: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==304);
+{yymsp[0].minor.yy32 = yymsp[0].major; /*A-overwrites-X*/}
break;
case 8: /* cmd ::= COMMIT|END trans_opt */
case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9);
@@ -151934,7 +152973,7 @@ static YYACTIONTYPE yy_reduce(
break;
case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */
{
- sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy100,0,0,yymsp[-2].minor.yy100);
+ sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy32,0,0,yymsp[-2].minor.yy32);
}
break;
case 14: /* createkw ::= CREATE */
@@ -151948,33 +152987,33 @@ static YYACTIONTYPE yy_reduce(
case 68: /* defer_subclause_opt ::= */ yytestcase(yyruleno==68);
case 77: /* ifexists ::= */ yytestcase(yyruleno==77);
case 94: /* distinct ::= */ yytestcase(yyruleno==94);
- case 227: /* collate ::= */ yytestcase(yyruleno==227);
-{yymsp[1].minor.yy100 = 0;}
+ case 230: /* collate ::= */ yytestcase(yyruleno==230);
+{yymsp[1].minor.yy32 = 0;}
break;
case 16: /* ifnotexists ::= IF NOT EXISTS */
-{yymsp[-2].minor.yy100 = 1;}
+{yymsp[-2].minor.yy32 = 1;}
break;
case 17: /* temp ::= TEMP */
case 44: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==44);
-{yymsp[0].minor.yy100 = 1;}
+{yymsp[0].minor.yy32 = 1;}
break;
case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_options */
{
- sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy100,0);
+ sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy32,0);
}
break;
case 20: /* create_table_args ::= AS select */
{
- sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy391);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
+ sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy25);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy25);
}
break;
case 22: /* table_options ::= WITHOUT nm */
{
if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){
- yymsp[-1].minor.yy100 = TF_WithoutRowid | TF_NoVisibleRowid;
+ yymsp[-1].minor.yy32 = TF_WithoutRowid | TF_NoVisibleRowid;
}else{
- yymsp[-1].minor.yy100 = 0;
+ yymsp[-1].minor.yy32 = 0;
sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z);
}
}
@@ -152003,7 +153042,7 @@ static YYACTIONTYPE yy_reduce(
case 28: /* scanpt ::= */
{
assert( yyLookahead!=YYNOCODE );
- yymsp[1].minor.yy528 = yyLookaheadToken.z;
+ yymsp[1].minor.yy8 = yyLookaheadToken.z;
}
break;
case 29: /* scantok ::= */
@@ -152017,17 +153056,17 @@ static YYACTIONTYPE yy_reduce(
{pParse->constraintName = yymsp[0].minor.yy0;}
break;
case 31: /* ccons ::= DEFAULT scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy46,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
break;
case 32: /* ccons ::= DEFAULT LP expr RP */
-{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy102,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
+{sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy46,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);}
break;
case 33: /* ccons ::= DEFAULT PLUS scantok term */
-{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy102,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
+{sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy46,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);}
break;
case 34: /* ccons ::= DEFAULT MINUS scantok term */
{
- Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy102, 0);
+ Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy46, 0);
sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);
}
break;
@@ -152042,170 +153081,170 @@ static YYACTIONTYPE yy_reduce(
}
break;
case 36: /* ccons ::= NOT NULL onconf */
-{sqlite3AddNotNull(pParse, yymsp[0].minor.yy100);}
+{sqlite3AddNotNull(pParse, yymsp[0].minor.yy32);}
break;
case 37: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */
-{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy100,yymsp[0].minor.yy100,yymsp[-2].minor.yy100);}
+{sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy32,yymsp[0].minor.yy32,yymsp[-2].minor.yy32);}
break;
case 38: /* ccons ::= UNIQUE onconf */
-{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy100,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy32,0,0,0,0,
SQLITE_IDXTYPE_UNIQUE);}
break;
case 39: /* ccons ::= CHECK LP expr RP */
-{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy102);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy46);}
break;
case 40: /* ccons ::= REFERENCES nm eidlist_opt refargs */
-{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy94,yymsp[0].minor.yy100);}
+{sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy138,yymsp[0].minor.yy32);}
break;
case 41: /* ccons ::= defer_subclause */
-{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy100);}
+{sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy32);}
break;
case 42: /* ccons ::= COLLATE ID|STRING */
{sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);}
break;
case 45: /* refargs ::= */
-{ yymsp[1].minor.yy100 = OE_None*0x0101; /* EV: R-19803-45884 */}
+{ yymsp[1].minor.yy32 = OE_None*0x0101; /* EV: R-19803-45884 */}
break;
case 46: /* refargs ::= refargs refarg */
-{ yymsp[-1].minor.yy100 = (yymsp[-1].minor.yy100 & ~yymsp[0].minor.yy199.mask) | yymsp[0].minor.yy199.value; }
+{ yymsp[-1].minor.yy32 = (yymsp[-1].minor.yy32 & ~yymsp[0].minor.yy495.mask) | yymsp[0].minor.yy495.value; }
break;
case 47: /* refarg ::= MATCH nm */
-{ yymsp[-1].minor.yy199.value = 0; yymsp[-1].minor.yy199.mask = 0x000000; }
+{ yymsp[-1].minor.yy495.value = 0; yymsp[-1].minor.yy495.mask = 0x000000; }
break;
case 48: /* refarg ::= ON INSERT refact */
-{ yymsp[-2].minor.yy199.value = 0; yymsp[-2].minor.yy199.mask = 0x000000; }
+{ yymsp[-2].minor.yy495.value = 0; yymsp[-2].minor.yy495.mask = 0x000000; }
break;
case 49: /* refarg ::= ON DELETE refact */
-{ yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100; yymsp[-2].minor.yy199.mask = 0x0000ff; }
+{ yymsp[-2].minor.yy495.value = yymsp[0].minor.yy32; yymsp[-2].minor.yy495.mask = 0x0000ff; }
break;
case 50: /* refarg ::= ON UPDATE refact */
-{ yymsp[-2].minor.yy199.value = yymsp[0].minor.yy100<<8; yymsp[-2].minor.yy199.mask = 0x00ff00; }
+{ yymsp[-2].minor.yy495.value = yymsp[0].minor.yy32<<8; yymsp[-2].minor.yy495.mask = 0x00ff00; }
break;
case 51: /* refact ::= SET NULL */
-{ yymsp[-1].minor.yy100 = OE_SetNull; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy32 = OE_SetNull; /* EV: R-33326-45252 */}
break;
case 52: /* refact ::= SET DEFAULT */
-{ yymsp[-1].minor.yy100 = OE_SetDflt; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy32 = OE_SetDflt; /* EV: R-33326-45252 */}
break;
case 53: /* refact ::= CASCADE */
-{ yymsp[0].minor.yy100 = OE_Cascade; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy32 = OE_Cascade; /* EV: R-33326-45252 */}
break;
case 54: /* refact ::= RESTRICT */
-{ yymsp[0].minor.yy100 = OE_Restrict; /* EV: R-33326-45252 */}
+{ yymsp[0].minor.yy32 = OE_Restrict; /* EV: R-33326-45252 */}
break;
case 55: /* refact ::= NO ACTION */
-{ yymsp[-1].minor.yy100 = OE_None; /* EV: R-33326-45252 */}
+{ yymsp[-1].minor.yy32 = OE_None; /* EV: R-33326-45252 */}
break;
case 56: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */
-{yymsp[-2].minor.yy100 = 0;}
+{yymsp[-2].minor.yy32 = 0;}
break;
case 57: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */
case 72: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==72);
- case 157: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==157);
-{yymsp[-1].minor.yy100 = yymsp[0].minor.yy100;}
+ case 160: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==160);
+{yymsp[-1].minor.yy32 = yymsp[0].minor.yy32;}
break;
case 59: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */
case 76: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==76);
- case 199: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==199);
- case 202: /* in_op ::= NOT IN */ yytestcase(yyruleno==202);
- case 228: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==228);
-{yymsp[-1].minor.yy100 = 1;}
+ case 202: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==202);
+ case 205: /* in_op ::= NOT IN */ yytestcase(yyruleno==205);
+ case 231: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==231);
+{yymsp[-1].minor.yy32 = 1;}
break;
case 60: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */
-{yymsp[-1].minor.yy100 = 0;}
+{yymsp[-1].minor.yy32 = 0;}
break;
case 62: /* tconscomma ::= COMMA */
{pParse->constraintName.n = 0;}
break;
case 64: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */
-{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy94,yymsp[0].minor.yy100,yymsp[-2].minor.yy100,0);}
+{sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy138,yymsp[0].minor.yy32,yymsp[-2].minor.yy32,0);}
break;
case 65: /* tcons ::= UNIQUE LP sortlist RP onconf */
-{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy94,yymsp[0].minor.yy100,0,0,0,0,
+{sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy138,yymsp[0].minor.yy32,0,0,0,0,
SQLITE_IDXTYPE_UNIQUE);}
break;
case 66: /* tcons ::= CHECK LP expr RP onconf */
-{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy102);}
+{sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy46);}
break;
case 67: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */
{
- sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy94, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy100);
- sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy100);
+ sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy138, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy138, yymsp[-1].minor.yy32);
+ sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy32);
}
break;
case 69: /* onconf ::= */
case 71: /* orconf ::= */ yytestcase(yyruleno==71);
-{yymsp[1].minor.yy100 = OE_Default;}
+{yymsp[1].minor.yy32 = OE_Default;}
break;
case 70: /* onconf ::= ON CONFLICT resolvetype */
-{yymsp[-2].minor.yy100 = yymsp[0].minor.yy100;}
+{yymsp[-2].minor.yy32 = yymsp[0].minor.yy32;}
break;
case 73: /* resolvetype ::= IGNORE */
-{yymsp[0].minor.yy100 = OE_Ignore;}
+{yymsp[0].minor.yy32 = OE_Ignore;}
break;
case 74: /* resolvetype ::= REPLACE */
- case 158: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==158);
-{yymsp[0].minor.yy100 = OE_Replace;}
+ case 161: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==161);
+{yymsp[0].minor.yy32 = OE_Replace;}
break;
case 75: /* cmd ::= DROP TABLE ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy407, 0, yymsp[-1].minor.yy100);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy609, 0, yymsp[-1].minor.yy32);
}
break;
case 78: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */
{
- sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy94, yymsp[0].minor.yy391, yymsp[-7].minor.yy100, yymsp[-5].minor.yy100);
+ sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy138, yymsp[0].minor.yy25, yymsp[-7].minor.yy32, yymsp[-5].minor.yy32);
}
break;
case 79: /* cmd ::= DROP VIEW ifexists fullname */
{
- sqlite3DropTable(pParse, yymsp[0].minor.yy407, 1, yymsp[-1].minor.yy100);
+ sqlite3DropTable(pParse, yymsp[0].minor.yy609, 1, yymsp[-1].minor.yy32);
}
break;
case 80: /* cmd ::= select */
{
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
- sqlite3Select(pParse, yymsp[0].minor.yy391, &dest);
- sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy391);
+ sqlite3Select(pParse, yymsp[0].minor.yy25, &dest);
+ sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy25);
}
break;
case 81: /* select ::= WITH wqlist selectnowith */
{
- Select *p = yymsp[0].minor.yy391;
+ Select *p = yymsp[0].minor.yy25;
if( p ){
- p->pWith = yymsp[-1].minor.yy243;
+ p->pWith = yymsp[-1].minor.yy297;
parserDoubleLinkSelect(pParse, p);
}else{
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy297);
}
- yymsp[-2].minor.yy391 = p;
+ yymsp[-2].minor.yy25 = p;
}
break;
case 82: /* select ::= WITH RECURSIVE wqlist selectnowith */
{
- Select *p = yymsp[0].minor.yy391;
+ Select *p = yymsp[0].minor.yy25;
if( p ){
- p->pWith = yymsp[-1].minor.yy243;
+ p->pWith = yymsp[-1].minor.yy297;
parserDoubleLinkSelect(pParse, p);
}else{
- sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy243);
+ sqlite3WithDelete(pParse->db, yymsp[-1].minor.yy297);
}
- yymsp[-3].minor.yy391 = p;
+ yymsp[-3].minor.yy25 = p;
}
break;
case 83: /* select ::= selectnowith */
{
- Select *p = yymsp[0].minor.yy391;
+ Select *p = yymsp[0].minor.yy25;
if( p ){
parserDoubleLinkSelect(pParse, p);
}
- yymsp[0].minor.yy391 = p; /*A-overwrites-X*/
+ yymsp[0].minor.yy25 = p; /*A-overwrites-X*/
}
break;
case 84: /* selectnowith ::= selectnowith multiselect_op oneselect */
{
- Select *pRhs = yymsp[0].minor.yy391;
- Select *pLhs = yymsp[-2].minor.yy391;
+ Select *pRhs = yymsp[0].minor.yy25;
+ Select *pLhs = yymsp[-2].minor.yy25;
if( pRhs && pRhs->pPrior ){
SrcList *pFrom;
Token x;
@@ -152215,83 +153254,83 @@ static YYACTIONTYPE yy_reduce(
pRhs = sqlite3SelectNew(pParse,0,pFrom,0,0,0,0,0,0);
}
if( pRhs ){
- pRhs->op = (u8)yymsp[-1].minor.yy100;
+ pRhs->op = (u8)yymsp[-1].minor.yy32;
pRhs->pPrior = pLhs;
if( ALWAYS(pLhs) ) pLhs->selFlags &= ~SF_MultiValue;
pRhs->selFlags &= ~SF_MultiValue;
- if( yymsp[-1].minor.yy100!=TK_ALL ) pParse->hasCompound = 1;
+ if( yymsp[-1].minor.yy32!=TK_ALL ) pParse->hasCompound = 1;
}else{
sqlite3SelectDelete(pParse->db, pLhs);
}
- yymsp[-2].minor.yy391 = pRhs;
+ yymsp[-2].minor.yy25 = pRhs;
}
break;
case 85: /* multiselect_op ::= UNION */
case 87: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==87);
-{yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-OP*/}
+{yymsp[0].minor.yy32 = yymsp[0].major; /*A-overwrites-OP*/}
break;
case 86: /* multiselect_op ::= UNION ALL */
-{yymsp[-1].minor.yy100 = TK_ALL;}
+{yymsp[-1].minor.yy32 = TK_ALL;}
break;
case 88: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
{
- yymsp[-8].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy94,yymsp[-5].minor.yy407,yymsp[-4].minor.yy102,yymsp[-3].minor.yy94,yymsp[-2].minor.yy102,yymsp[-1].minor.yy94,yymsp[-7].minor.yy100,yymsp[0].minor.yy102);
+ yymsp[-8].minor.yy25 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy138,yymsp[-5].minor.yy609,yymsp[-4].minor.yy46,yymsp[-3].minor.yy138,yymsp[-2].minor.yy46,yymsp[-1].minor.yy138,yymsp[-7].minor.yy32,yymsp[0].minor.yy46);
}
break;
case 89: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */
{
- yymsp[-9].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy94,yymsp[-6].minor.yy407,yymsp[-5].minor.yy102,yymsp[-4].minor.yy94,yymsp[-3].minor.yy102,yymsp[-1].minor.yy94,yymsp[-8].minor.yy100,yymsp[0].minor.yy102);
- if( yymsp[-9].minor.yy391 ){
- yymsp[-9].minor.yy391->pWinDefn = yymsp[-2].minor.yy379;
+ yymsp[-9].minor.yy25 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy138,yymsp[-6].minor.yy609,yymsp[-5].minor.yy46,yymsp[-4].minor.yy138,yymsp[-3].minor.yy46,yymsp[-1].minor.yy138,yymsp[-8].minor.yy32,yymsp[0].minor.yy46);
+ if( yymsp[-9].minor.yy25 ){
+ yymsp[-9].minor.yy25->pWinDefn = yymsp[-2].minor.yy455;
}else{
- sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy379);
+ sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy455);
}
}
break;
case 90: /* values ::= VALUES LP nexprlist RP */
{
- yymsp[-3].minor.yy391 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values,0);
+ yymsp[-3].minor.yy25 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy138,0,0,0,0,0,SF_Values,0);
}
break;
case 91: /* values ::= values COMMA LP nexprlist RP */
{
- Select *pRight, *pLeft = yymsp[-4].minor.yy391;
- pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy94,0,0,0,0,0,SF_Values|SF_MultiValue,0);
+ Select *pRight, *pLeft = yymsp[-4].minor.yy25;
+ pRight = sqlite3SelectNew(pParse,yymsp[-1].minor.yy138,0,0,0,0,0,SF_Values|SF_MultiValue,0);
if( ALWAYS(pLeft) ) pLeft->selFlags &= ~SF_MultiValue;
if( pRight ){
pRight->op = TK_ALL;
pRight->pPrior = pLeft;
- yymsp[-4].minor.yy391 = pRight;
+ yymsp[-4].minor.yy25 = pRight;
}else{
- yymsp[-4].minor.yy391 = pLeft;
+ yymsp[-4].minor.yy25 = pLeft;
}
}
break;
case 92: /* distinct ::= DISTINCT */
-{yymsp[0].minor.yy100 = SF_Distinct;}
+{yymsp[0].minor.yy32 = SF_Distinct;}
break;
case 93: /* distinct ::= ALL */
-{yymsp[0].minor.yy100 = SF_All;}
+{yymsp[0].minor.yy32 = SF_All;}
break;
case 95: /* sclp ::= */
case 128: /* orderby_opt ::= */ yytestcase(yyruleno==128);
- case 135: /* groupby_opt ::= */ yytestcase(yyruleno==135);
- case 215: /* exprlist ::= */ yytestcase(yyruleno==215);
- case 218: /* paren_exprlist ::= */ yytestcase(yyruleno==218);
- case 223: /* eidlist_opt ::= */ yytestcase(yyruleno==223);
-{yymsp[1].minor.yy94 = 0;}
+ case 138: /* groupby_opt ::= */ yytestcase(yyruleno==138);
+ case 218: /* exprlist ::= */ yytestcase(yyruleno==218);
+ case 221: /* paren_exprlist ::= */ yytestcase(yyruleno==221);
+ case 226: /* eidlist_opt ::= */ yytestcase(yyruleno==226);
+{yymsp[1].minor.yy138 = 0;}
break;
case 96: /* selcollist ::= sclp scanpt expr scanpt as */
{
- yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
- if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[0].minor.yy0, 1);
- sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy94,yymsp[-3].minor.yy528,yymsp[-1].minor.yy528);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy138, yymsp[-2].minor.yy46);
+ if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy138, &yymsp[0].minor.yy0, 1);
+ sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy138,yymsp[-3].minor.yy8,yymsp[-1].minor.yy8);
}
break;
case 97: /* selcollist ::= sclp scanpt STAR */
{
Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0);
- yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy94, p);
+ yymsp[-2].minor.yy138 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy138, p);
}
break;
case 98: /* selcollist ::= sclp scanpt nm DOT STAR */
@@ -152299,58 +153338,58 @@ static YYACTIONTYPE yy_reduce(
Expr *pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0);
Expr *pLeft = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
Expr *pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight);
- yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, pDot);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy138, pDot);
}
break;
case 99: /* as ::= AS nm */
case 110: /* dbnm ::= DOT nm */ yytestcase(yyruleno==110);
- case 239: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==239);
- case 240: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==240);
+ case 242: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==242);
+ case 243: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==243);
{yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;}
break;
case 101: /* from ::= */
-{yymsp[1].minor.yy407 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy407));}
+{yymsp[1].minor.yy609 = sqlite3DbMallocZero(pParse->db, sizeof(*yymsp[1].minor.yy609));}
break;
case 102: /* from ::= FROM seltablist */
{
- yymsp[-1].minor.yy407 = yymsp[0].minor.yy407;
- sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy407);
+ yymsp[-1].minor.yy609 = yymsp[0].minor.yy609;
+ sqlite3SrcListShiftJoinType(yymsp[-1].minor.yy609);
}
break;
case 103: /* stl_prefix ::= seltablist joinop */
{
- if( ALWAYS(yymsp[-1].minor.yy407 && yymsp[-1].minor.yy407->nSrc>0) ) yymsp[-1].minor.yy407->a[yymsp[-1].minor.yy407->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy100;
+ if( ALWAYS(yymsp[-1].minor.yy609 && yymsp[-1].minor.yy609->nSrc>0) ) yymsp[-1].minor.yy609->a[yymsp[-1].minor.yy609->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy32;
}
break;
case 104: /* stl_prefix ::= */
-{yymsp[1].minor.yy407 = 0;}
+{yymsp[1].minor.yy609 = 0;}
break;
case 105: /* seltablist ::= stl_prefix nm dbnm as indexed_opt on_opt using_opt */
{
- yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
- sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy407, &yymsp[-2].minor.yy0);
+ yymsp[-6].minor.yy609 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy609,&yymsp[-5].minor.yy0,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy406);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-6].minor.yy609, &yymsp[-2].minor.yy0);
}
break;
case 106: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_opt using_opt */
{
- yymsp[-8].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy407,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
- sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy407, yymsp[-4].minor.yy94);
+ yymsp[-8].minor.yy609 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-8].minor.yy609,&yymsp[-7].minor.yy0,&yymsp[-6].minor.yy0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy406);
+ sqlite3SrcListFuncArgs(pParse, yymsp[-8].minor.yy609, yymsp[-4].minor.yy138);
}
break;
case 107: /* seltablist ::= stl_prefix LP select RP as on_opt using_opt */
{
- yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy391,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
+ yymsp[-6].minor.yy609 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy609,0,0,&yymsp[-2].minor.yy0,yymsp[-4].minor.yy25,yymsp[-1].minor.yy46,yymsp[0].minor.yy406);
}
break;
case 108: /* seltablist ::= stl_prefix LP seltablist RP as on_opt using_opt */
{
- if( yymsp[-6].minor.yy407==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy102==0 && yymsp[0].minor.yy76==0 ){
- yymsp[-6].minor.yy407 = yymsp[-4].minor.yy407;
- }else if( yymsp[-4].minor.yy407->nSrc==1 ){
- yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
- if( yymsp[-6].minor.yy407 ){
- struct SrcList_item *pNew = &yymsp[-6].minor.yy407->a[yymsp[-6].minor.yy407->nSrc-1];
- struct SrcList_item *pOld = yymsp[-4].minor.yy407->a;
+ if( yymsp[-6].minor.yy609==0 && yymsp[-2].minor.yy0.n==0 && yymsp[-1].minor.yy46==0 && yymsp[0].minor.yy406==0 ){
+ yymsp[-6].minor.yy609 = yymsp[-4].minor.yy609;
+ }else if( yymsp[-4].minor.yy609->nSrc==1 ){
+ yymsp[-6].minor.yy609 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy609,0,0,&yymsp[-2].minor.yy0,0,yymsp[-1].minor.yy46,yymsp[0].minor.yy406);
+ if( yymsp[-6].minor.yy609 ){
+ struct SrcList_item *pNew = &yymsp[-6].minor.yy609->a[yymsp[-6].minor.yy609->nSrc-1];
+ struct SrcList_item *pOld = yymsp[-4].minor.yy609->a;
pNew->zName = pOld->zName;
pNew->zDatabase = pOld->zDatabase;
pNew->pSelect = pOld->pSelect;
@@ -152363,12 +153402,12 @@ static YYACTIONTYPE yy_reduce(
pOld->zName = pOld->zDatabase = 0;
pOld->pSelect = 0;
}
- sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy407);
+ sqlite3SrcListDelete(pParse->db, yymsp[-4].minor.yy609);
}else{
Select *pSubquery;
- sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy407);
- pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy407,0,0,0,0,SF_NestedFrom,0);
- yymsp[-6].minor.yy407 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy407,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy102,yymsp[0].minor.yy76);
+ sqlite3SrcListShiftJoinType(yymsp[-4].minor.yy609);
+ pSubquery = sqlite3SelectNew(pParse,0,yymsp[-4].minor.yy609,0,0,0,0,SF_NestedFrom,0);
+ yymsp[-6].minor.yy609 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-6].minor.yy609,0,0,&yymsp[-2].minor.yy0,pSubquery,yymsp[-1].minor.yy46,yymsp[0].minor.yy406);
}
}
break;
@@ -152378,63 +153417,63 @@ static YYACTIONTYPE yy_reduce(
break;
case 111: /* fullname ::= nm */
{
- yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
- if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
+ yylhsminor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0);
+ if( IN_RENAME_OBJECT && yylhsminor.yy609 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy609->a[0].zName, &yymsp[0].minor.yy0);
}
- yymsp[0].minor.yy407 = yylhsminor.yy407;
+ yymsp[0].minor.yy609 = yylhsminor.yy609;
break;
case 112: /* fullname ::= nm DOT nm */
{
- yylhsminor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
- if( IN_RENAME_OBJECT && yylhsminor.yy407 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy407->a[0].zName, &yymsp[0].minor.yy0);
+ yylhsminor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
+ if( IN_RENAME_OBJECT && yylhsminor.yy609 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy609->a[0].zName, &yymsp[0].minor.yy0);
}
- yymsp[-2].minor.yy407 = yylhsminor.yy407;
+ yymsp[-2].minor.yy609 = yylhsminor.yy609;
break;
case 113: /* xfullname ::= nm */
-{yymsp[0].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
+{yymsp[0].minor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/}
break;
case 114: /* xfullname ::= nm DOT nm */
-{yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
+{yymsp[-2].minor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
case 115: /* xfullname ::= nm DOT nm AS nm */
{
- yymsp[-4].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
- if( yymsp[-4].minor.yy407 ) yymsp[-4].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+ yymsp[-4].minor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/
+ if( yymsp[-4].minor.yy609 ) yymsp[-4].minor.yy609->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
}
break;
case 116: /* xfullname ::= nm AS nm */
{
- yymsp[-2].minor.yy407 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
- if( yymsp[-2].minor.yy407 ) yymsp[-2].minor.yy407->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
+ yymsp[-2].minor.yy609 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/
+ if( yymsp[-2].minor.yy609 ) yymsp[-2].minor.yy609->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0);
}
break;
case 117: /* joinop ::= COMMA|JOIN */
-{ yymsp[0].minor.yy100 = JT_INNER; }
+{ yymsp[0].minor.yy32 = JT_INNER; }
break;
case 118: /* joinop ::= JOIN_KW JOIN */
-{yymsp[-1].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
+{yymsp[-1].minor.yy32 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/}
break;
case 119: /* joinop ::= JOIN_KW nm JOIN */
-{yymsp[-2].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
+{yymsp[-2].minor.yy32 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/}
break;
case 120: /* joinop ::= JOIN_KW nm nm JOIN */
-{yymsp[-3].minor.yy100 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
+{yymsp[-3].minor.yy32 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/}
break;
case 121: /* on_opt ::= ON expr */
- case 138: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==138);
- case 145: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==145);
- case 211: /* case_else ::= ELSE expr */ yytestcase(yyruleno==211);
- case 232: /* vinto ::= INTO expr */ yytestcase(yyruleno==232);
-{yymsp[-1].minor.yy102 = yymsp[0].minor.yy102;}
+ case 141: /* having_opt ::= HAVING expr */ yytestcase(yyruleno==141);
+ case 148: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==148);
+ case 214: /* case_else ::= ELSE expr */ yytestcase(yyruleno==214);
+ case 235: /* vinto ::= INTO expr */ yytestcase(yyruleno==235);
+{yymsp[-1].minor.yy46 = yymsp[0].minor.yy46;}
break;
case 122: /* on_opt ::= */
- case 137: /* having_opt ::= */ yytestcase(yyruleno==137);
- case 139: /* limit_opt ::= */ yytestcase(yyruleno==139);
- case 144: /* where_opt ::= */ yytestcase(yyruleno==144);
- case 212: /* case_else ::= */ yytestcase(yyruleno==212);
- case 214: /* case_operand ::= */ yytestcase(yyruleno==214);
- case 233: /* vinto ::= */ yytestcase(yyruleno==233);
-{yymsp[1].minor.yy102 = 0;}
+ case 140: /* having_opt ::= */ yytestcase(yyruleno==140);
+ case 142: /* limit_opt ::= */ yytestcase(yyruleno==142);
+ case 147: /* where_opt ::= */ yytestcase(yyruleno==147);
+ case 215: /* case_else ::= */ yytestcase(yyruleno==215);
+ case 217: /* case_operand ::= */ yytestcase(yyruleno==217);
+ case 236: /* vinto ::= */ yytestcase(yyruleno==236);
+{yymsp[1].minor.yy46 = 0;}
break;
case 124: /* indexed_opt ::= INDEXED BY nm */
{yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;}
@@ -152443,121 +153482,128 @@ static YYACTIONTYPE yy_reduce(
{yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;}
break;
case 126: /* using_opt ::= USING LP idlist RP */
-{yymsp[-3].minor.yy76 = yymsp[-1].minor.yy76;}
+{yymsp[-3].minor.yy406 = yymsp[-1].minor.yy406;}
break;
case 127: /* using_opt ::= */
- case 159: /* idlist_opt ::= */ yytestcase(yyruleno==159);
-{yymsp[1].minor.yy76 = 0;}
+ case 162: /* idlist_opt ::= */ yytestcase(yyruleno==162);
+{yymsp[1].minor.yy406 = 0;}
break;
case 129: /* orderby_opt ::= ORDER BY sortlist */
- case 136: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==136);
-{yymsp[-2].minor.yy94 = yymsp[0].minor.yy94;}
+ case 139: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==139);
+{yymsp[-2].minor.yy138 = yymsp[0].minor.yy138;}
break;
- case 130: /* sortlist ::= sortlist COMMA expr sortorder */
+ case 130: /* sortlist ::= sortlist COMMA expr sortorder nulls */
{
- yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94,yymsp[-1].minor.yy102);
- sqlite3ExprListSetSortOrder(yymsp[-3].minor.yy94,yymsp[0].minor.yy100);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy138,yymsp[-2].minor.yy46);
+ sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy138,yymsp[-1].minor.yy32,yymsp[0].minor.yy32);
}
break;
- case 131: /* sortlist ::= expr sortorder */
+ case 131: /* sortlist ::= expr sortorder nulls */
{
- yymsp[-1].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[-1].minor.yy102); /*A-overwrites-Y*/
- sqlite3ExprListSetSortOrder(yymsp[-1].minor.yy94,yymsp[0].minor.yy100);
+ yymsp[-2].minor.yy138 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy46); /*A-overwrites-Y*/
+ sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy138,yymsp[-1].minor.yy32,yymsp[0].minor.yy32);
}
break;
case 132: /* sortorder ::= ASC */
-{yymsp[0].minor.yy100 = SQLITE_SO_ASC;}
+{yymsp[0].minor.yy32 = SQLITE_SO_ASC;}
break;
case 133: /* sortorder ::= DESC */
-{yymsp[0].minor.yy100 = SQLITE_SO_DESC;}
+{yymsp[0].minor.yy32 = SQLITE_SO_DESC;}
break;
case 134: /* sortorder ::= */
-{yymsp[1].minor.yy100 = SQLITE_SO_UNDEFINED;}
+ case 137: /* nulls ::= */ yytestcase(yyruleno==137);
+{yymsp[1].minor.yy32 = SQLITE_SO_UNDEFINED;}
+ break;
+ case 135: /* nulls ::= NULLS FIRST */
+{yymsp[-1].minor.yy32 = SQLITE_SO_ASC;}
break;
- case 140: /* limit_opt ::= LIMIT expr */
-{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,0);}
+ case 136: /* nulls ::= NULLS LAST */
+{yymsp[-1].minor.yy32 = SQLITE_SO_DESC;}
break;
- case 141: /* limit_opt ::= LIMIT expr OFFSET expr */
-{yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
+ case 143: /* limit_opt ::= LIMIT expr */
+{yymsp[-1].minor.yy46 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy46,0);}
break;
- case 142: /* limit_opt ::= LIMIT expr COMMA expr */
-{yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy102,yymsp[-2].minor.yy102);}
+ case 144: /* limit_opt ::= LIMIT expr OFFSET expr */
+{yymsp[-3].minor.yy46 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy46,yymsp[0].minor.yy46);}
break;
- case 143: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
+ case 145: /* limit_opt ::= LIMIT expr COMMA expr */
+{yymsp[-3].minor.yy46 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy46,yymsp[-2].minor.yy46);}
+ break;
+ case 146: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt */
{
- sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy407, &yymsp[-1].minor.yy0);
- sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy407,yymsp[0].minor.yy102,0,0);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy609, &yymsp[-1].minor.yy0);
+ sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy609,yymsp[0].minor.yy46,0,0);
}
break;
- case 146: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
+ case 149: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist where_opt */
{
- sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy407, &yymsp[-3].minor.yy0);
- sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy94,"set list");
- sqlite3Update(pParse,yymsp[-4].minor.yy407,yymsp[-1].minor.yy94,yymsp[0].minor.yy102,yymsp[-5].minor.yy100,0,0,0);
+ sqlite3SrcListIndexedBy(pParse, yymsp[-4].minor.yy609, &yymsp[-3].minor.yy0);
+ sqlite3ExprListCheckLength(pParse,yymsp[-1].minor.yy138,"set list");
+ sqlite3Update(pParse,yymsp[-4].minor.yy609,yymsp[-1].minor.yy138,yymsp[0].minor.yy46,yymsp[-5].minor.yy32,0,0,0);
}
break;
- case 147: /* setlist ::= setlist COMMA nm EQ expr */
+ case 150: /* setlist ::= setlist COMMA nm EQ expr */
{
- yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
- sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, 1);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy138, yymsp[0].minor.yy46);
+ sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy138, &yymsp[-2].minor.yy0, 1);
}
break;
- case 148: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
+ case 151: /* setlist ::= setlist COMMA LP idlist RP EQ expr */
{
- yymsp[-6].minor.yy94 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy94, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
+ yymsp[-6].minor.yy138 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy138, yymsp[-3].minor.yy406, yymsp[0].minor.yy46);
}
break;
- case 149: /* setlist ::= nm EQ expr */
+ case 152: /* setlist ::= nm EQ expr */
{
- yylhsminor.yy94 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy102);
- sqlite3ExprListSetName(pParse, yylhsminor.yy94, &yymsp[-2].minor.yy0, 1);
+ yylhsminor.yy138 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy46);
+ sqlite3ExprListSetName(pParse, yylhsminor.yy138, &yymsp[-2].minor.yy0, 1);
}
- yymsp[-2].minor.yy94 = yylhsminor.yy94;
+ yymsp[-2].minor.yy138 = yylhsminor.yy138;
break;
- case 150: /* setlist ::= LP idlist RP EQ expr */
+ case 153: /* setlist ::= LP idlist RP EQ expr */
{
- yymsp[-4].minor.yy94 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy76, yymsp[0].minor.yy102);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy406, yymsp[0].minor.yy46);
}
break;
- case 151: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
+ case 154: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */
{
- sqlite3Insert(pParse, yymsp[-3].minor.yy407, yymsp[-1].minor.yy391, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, yymsp[0].minor.yy95);
+ sqlite3Insert(pParse, yymsp[-3].minor.yy609, yymsp[-1].minor.yy25, yymsp[-2].minor.yy406, yymsp[-5].minor.yy32, yymsp[0].minor.yy288);
}
break;
- case 152: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
+ case 155: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES */
{
- sqlite3Insert(pParse, yymsp[-3].minor.yy407, 0, yymsp[-2].minor.yy76, yymsp[-5].minor.yy100, 0);
+ sqlite3Insert(pParse, yymsp[-3].minor.yy609, 0, yymsp[-2].minor.yy406, yymsp[-5].minor.yy32, 0);
}
break;
- case 153: /* upsert ::= */
-{ yymsp[1].minor.yy95 = 0; }
+ case 156: /* upsert ::= */
+{ yymsp[1].minor.yy288 = 0; }
break;
- case 154: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
-{ yymsp[-10].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy94,yymsp[-5].minor.yy102,yymsp[-1].minor.yy94,yymsp[0].minor.yy102);}
+ case 157: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt */
+{ yymsp[-10].minor.yy288 = sqlite3UpsertNew(pParse->db,yymsp[-7].minor.yy138,yymsp[-5].minor.yy46,yymsp[-1].minor.yy138,yymsp[0].minor.yy46);}
break;
- case 155: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
-{ yymsp[-7].minor.yy95 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy94,yymsp[-2].minor.yy102,0,0); }
+ case 158: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING */
+{ yymsp[-7].minor.yy288 = sqlite3UpsertNew(pParse->db,yymsp[-4].minor.yy138,yymsp[-2].minor.yy46,0,0); }
break;
- case 156: /* upsert ::= ON CONFLICT DO NOTHING */
-{ yymsp[-3].minor.yy95 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
+ case 159: /* upsert ::= ON CONFLICT DO NOTHING */
+{ yymsp[-3].minor.yy288 = sqlite3UpsertNew(pParse->db,0,0,0,0); }
break;
- case 160: /* idlist_opt ::= LP idlist RP */
-{yymsp[-2].minor.yy76 = yymsp[-1].minor.yy76;}
+ case 163: /* idlist_opt ::= LP idlist RP */
+{yymsp[-2].minor.yy406 = yymsp[-1].minor.yy406;}
break;
- case 161: /* idlist ::= idlist COMMA nm */
-{yymsp[-2].minor.yy76 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy76,&yymsp[0].minor.yy0);}
+ case 164: /* idlist ::= idlist COMMA nm */
+{yymsp[-2].minor.yy406 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy406,&yymsp[0].minor.yy0);}
break;
- case 162: /* idlist ::= nm */
-{yymsp[0].minor.yy76 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
+ case 165: /* idlist ::= nm */
+{yymsp[0].minor.yy406 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/}
break;
- case 163: /* expr ::= LP expr RP */
-{yymsp[-2].minor.yy102 = yymsp[-1].minor.yy102;}
+ case 166: /* expr ::= LP expr RP */
+{yymsp[-2].minor.yy46 = yymsp[-1].minor.yy46;}
break;
- case 164: /* expr ::= ID|INDEXED */
- case 165: /* expr ::= JOIN_KW */ yytestcase(yyruleno==165);
-{yymsp[0].minor.yy102=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+ case 167: /* expr ::= ID|INDEXED */
+ case 168: /* expr ::= JOIN_KW */ yytestcase(yyruleno==168);
+{yymsp[0].minor.yy46=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
- case 166: /* expr ::= nm DOT nm */
+ case 169: /* expr ::= nm DOT nm */
{
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[0].minor.yy0, 1);
@@ -152565,11 +153611,11 @@ static YYACTIONTYPE yy_reduce(
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[0].minor.yy0);
sqlite3RenameTokenMap(pParse, (void*)temp1, &yymsp[-2].minor.yy0);
}
- yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
+ yylhsminor.yy46 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2);
}
- yymsp[-2].minor.yy102 = yylhsminor.yy102;
+ yymsp[-2].minor.yy46 = yylhsminor.yy46;
break;
- case 167: /* expr ::= nm DOT nm DOT nm */
+ case 170: /* expr ::= nm DOT nm DOT nm */
{
Expr *temp1 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-4].minor.yy0, 1);
Expr *temp2 = sqlite3ExprAlloc(pParse->db, TK_ID, &yymsp[-2].minor.yy0, 1);
@@ -152579,26 +153625,26 @@ static YYACTIONTYPE yy_reduce(
sqlite3RenameTokenMap(pParse, (void*)temp3, &yymsp[0].minor.yy0);
sqlite3RenameTokenMap(pParse, (void*)temp2, &yymsp[-2].minor.yy0);
}
- yylhsminor.yy102 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
+ yylhsminor.yy46 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4);
}
- yymsp[-4].minor.yy102 = yylhsminor.yy102;
+ yymsp[-4].minor.yy46 = yylhsminor.yy46;
break;
- case 168: /* term ::= NULL|FLOAT|BLOB */
- case 169: /* term ::= STRING */ yytestcase(yyruleno==169);
-{yymsp[0].minor.yy102=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
+ case 171: /* term ::= NULL|FLOAT|BLOB */
+ case 172: /* term ::= STRING */ yytestcase(yyruleno==172);
+{yymsp[0].minor.yy46=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/}
break;
- case 170: /* term ::= INTEGER */
+ case 173: /* term ::= INTEGER */
{
- yylhsminor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
+ yylhsminor.yy46 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1);
}
- yymsp[0].minor.yy102 = yylhsminor.yy102;
+ yymsp[0].minor.yy46 = yylhsminor.yy46;
break;
- case 171: /* expr ::= VARIABLE */
+ case 174: /* expr ::= VARIABLE */
{
if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){
u32 n = yymsp[0].minor.yy0.n;
- yymsp[0].minor.yy102 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
- sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy102, n);
+ yymsp[0].minor.yy46 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0);
+ sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy46, n);
}else{
/* When doing a nested parse, one can include terms in an expression
** that look like this: #1 #2 ... These terms refer to registers
@@ -152607,156 +153653,156 @@ static YYACTIONTYPE yy_reduce(
assert( t.n>=2 );
if( pParse->nested==0 ){
sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &t);
- yymsp[0].minor.yy102 = 0;
+ yymsp[0].minor.yy46 = 0;
}else{
- yymsp[0].minor.yy102 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
- if( yymsp[0].minor.yy102 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy102->iTable);
+ yymsp[0].minor.yy46 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0);
+ if( yymsp[0].minor.yy46 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy46->iTable);
}
}
}
break;
- case 172: /* expr ::= expr COLLATE ID|STRING */
+ case 175: /* expr ::= expr COLLATE ID|STRING */
{
- yymsp[-2].minor.yy102 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy102, &yymsp[0].minor.yy0, 1);
+ yymsp[-2].minor.yy46 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy46, &yymsp[0].minor.yy0, 1);
}
break;
- case 173: /* expr ::= CAST LP expr AS typetoken RP */
+ case 176: /* expr ::= CAST LP expr AS typetoken RP */
{
- yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
- sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy102, yymsp[-3].minor.yy102, 0);
+ yymsp[-5].minor.yy46 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1);
+ sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy46, yymsp[-3].minor.yy46, 0);
}
break;
- case 174: /* expr ::= ID|INDEXED LP distinct exprlist RP */
+ case 177: /* expr ::= ID|INDEXED LP distinct exprlist RP */
{
- yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy100);
+ yylhsminor.yy46 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy138, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy32);
}
- yymsp[-4].minor.yy102 = yylhsminor.yy102;
+ yymsp[-4].minor.yy46 = yylhsminor.yy46;
break;
- case 175: /* expr ::= ID|INDEXED LP STAR RP */
+ case 178: /* expr ::= ID|INDEXED LP STAR RP */
{
- yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
+ yylhsminor.yy46 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0);
}
- yymsp[-3].minor.yy102 = yylhsminor.yy102;
+ yymsp[-3].minor.yy46 = yylhsminor.yy46;
break;
- case 176: /* expr ::= ID|INDEXED LP distinct exprlist RP over_clause */
+ case 179: /* expr ::= ID|INDEXED LP distinct exprlist RP filter_over */
{
- yylhsminor.yy102 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy94, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy100);
- sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
+ yylhsminor.yy46 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy138, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy32);
+ sqlite3WindowAttach(pParse, yylhsminor.yy46, yymsp[0].minor.yy455);
}
- yymsp[-5].minor.yy102 = yylhsminor.yy102;
+ yymsp[-5].minor.yy46 = yylhsminor.yy46;
break;
- case 177: /* expr ::= ID|INDEXED LP STAR RP over_clause */
+ case 180: /* expr ::= ID|INDEXED LP STAR RP filter_over */
{
- yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
- sqlite3WindowAttach(pParse, yylhsminor.yy102, yymsp[0].minor.yy379);
+ yylhsminor.yy46 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0);
+ sqlite3WindowAttach(pParse, yylhsminor.yy46, yymsp[0].minor.yy455);
}
- yymsp[-4].minor.yy102 = yylhsminor.yy102;
+ yymsp[-4].minor.yy46 = yylhsminor.yy46;
break;
- case 178: /* term ::= CTIME_KW */
+ case 181: /* term ::= CTIME_KW */
{
- yylhsminor.yy102 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
+ yylhsminor.yy46 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0);
}
- yymsp[0].minor.yy102 = yylhsminor.yy102;
+ yymsp[0].minor.yy46 = yylhsminor.yy46;
break;
- case 179: /* expr ::= LP nexprlist COMMA expr RP */
+ case 182: /* expr ::= LP nexprlist COMMA expr RP */
{
- ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy94, yymsp[-1].minor.yy102);
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
- if( yymsp[-4].minor.yy102 ){
- yymsp[-4].minor.yy102->x.pList = pList;
+ ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy138, yymsp[-1].minor.yy46);
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0);
+ if( yymsp[-4].minor.yy46 ){
+ yymsp[-4].minor.yy46->x.pList = pList;
}else{
sqlite3ExprListDelete(pParse->db, pList);
}
}
break;
- case 180: /* expr ::= expr AND expr */
-{yymsp[-2].minor.yy102=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
+ case 183: /* expr ::= expr AND expr */
+{yymsp[-2].minor.yy46=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy46,yymsp[0].minor.yy46);}
break;
- case 181: /* expr ::= expr OR expr */
- case 182: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==182);
- case 183: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==183);
- case 184: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==184);
- case 185: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==185);
- case 186: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==186);
- case 187: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==187);
-{yymsp[-2].minor.yy102=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);}
+ case 184: /* expr ::= expr OR expr */
+ case 185: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==185);
+ case 186: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==186);
+ case 187: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==187);
+ case 188: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==188);
+ case 189: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==189);
+ case 190: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==190);
+{yymsp[-2].minor.yy46=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy46,yymsp[0].minor.yy46);}
break;
- case 188: /* likeop ::= NOT LIKE_KW|MATCH */
+ case 191: /* likeop ::= NOT LIKE_KW|MATCH */
{yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/}
break;
- case 189: /* expr ::= expr likeop expr */
+ case 192: /* expr ::= expr likeop expr */
{
ExprList *pList;
int bNot = yymsp[-1].minor.yy0.n & 0x80000000;
yymsp[-1].minor.yy0.n &= 0x7fffffff;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy102);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy102);
- yymsp[-2].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
- if( bNot ) yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy102, 0);
- if( yymsp[-2].minor.yy102 ) yymsp[-2].minor.yy102->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy46);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy46);
+ yymsp[-2].minor.yy46 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0);
+ if( bNot ) yymsp[-2].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy46, 0);
+ if( yymsp[-2].minor.yy46 ) yymsp[-2].minor.yy46->flags |= EP_InfixFunc;
}
break;
- case 190: /* expr ::= expr likeop expr ESCAPE expr */
+ case 193: /* expr ::= expr likeop expr ESCAPE expr */
{
ExprList *pList;
int bNot = yymsp[-3].minor.yy0.n & 0x80000000;
yymsp[-3].minor.yy0.n &= 0x7fffffff;
- pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy102);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
- yymsp[-4].minor.yy102 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
- if( bNot ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
- if( yymsp[-4].minor.yy102 ) yymsp[-4].minor.yy102->flags |= EP_InfixFunc;
+ pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy46);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[-4].minor.yy46);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy46);
+ yymsp[-4].minor.yy46 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0);
+ if( bNot ) yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy46, 0);
+ if( yymsp[-4].minor.yy46 ) yymsp[-4].minor.yy46->flags |= EP_InfixFunc;
}
break;
- case 191: /* expr ::= expr ISNULL|NOTNULL */
-{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy102,0);}
+ case 194: /* expr ::= expr ISNULL|NOTNULL */
+{yymsp[-1].minor.yy46 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy46,0);}
break;
- case 192: /* expr ::= expr NOT NULL */
-{yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy102,0);}
+ case 195: /* expr ::= expr NOT NULL */
+{yymsp[-2].minor.yy46 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy46,0);}
break;
- case 193: /* expr ::= expr IS expr */
+ case 196: /* expr ::= expr IS expr */
{
- yymsp[-2].minor.yy102 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy102,yymsp[0].minor.yy102);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-2].minor.yy102, TK_ISNULL);
+ yymsp[-2].minor.yy46 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy46,yymsp[0].minor.yy46);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy46, yymsp[-2].minor.yy46, TK_ISNULL);
}
break;
- case 194: /* expr ::= expr IS NOT expr */
+ case 197: /* expr ::= expr IS NOT expr */
{
- yymsp[-3].minor.yy102 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy102,yymsp[0].minor.yy102);
- binaryToUnaryIfNull(pParse, yymsp[0].minor.yy102, yymsp[-3].minor.yy102, TK_NOTNULL);
+ yymsp[-3].minor.yy46 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy46,yymsp[0].minor.yy46);
+ binaryToUnaryIfNull(pParse, yymsp[0].minor.yy46, yymsp[-3].minor.yy46, TK_NOTNULL);
}
break;
- case 195: /* expr ::= NOT expr */
- case 196: /* expr ::= BITNOT expr */ yytestcase(yyruleno==196);
-{yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy102, 0);/*A-overwrites-B*/}
+ case 198: /* expr ::= NOT expr */
+ case 199: /* expr ::= BITNOT expr */ yytestcase(yyruleno==199);
+{yymsp[-1].minor.yy46 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy46, 0);/*A-overwrites-B*/}
break;
- case 197: /* expr ::= PLUS|MINUS expr */
+ case 200: /* expr ::= PLUS|MINUS expr */
{
- yymsp[-1].minor.yy102 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy102, 0);
+ yymsp[-1].minor.yy46 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy46, 0);
/*A-overwrites-B*/
}
break;
- case 198: /* between_op ::= BETWEEN */
- case 201: /* in_op ::= IN */ yytestcase(yyruleno==201);
-{yymsp[0].minor.yy100 = 0;}
+ case 201: /* between_op ::= BETWEEN */
+ case 204: /* in_op ::= IN */ yytestcase(yyruleno==204);
+{yymsp[0].minor.yy32 = 0;}
break;
- case 200: /* expr ::= expr between_op expr AND expr */
+ case 203: /* expr ::= expr between_op expr AND expr */
{
- ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
- pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy102);
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy102, 0);
- if( yymsp[-4].minor.yy102 ){
- yymsp[-4].minor.yy102->x.pList = pList;
+ ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy46);
+ pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy46);
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy46, 0);
+ if( yymsp[-4].minor.yy46 ){
+ yymsp[-4].minor.yy46->x.pList = pList;
}else{
sqlite3ExprListDelete(pParse->db, pList);
}
- if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
+ if( yymsp[-3].minor.yy32 ) yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy46, 0);
}
break;
- case 203: /* expr ::= expr in_op LP exprlist RP */
+ case 206: /* expr ::= expr in_op LP exprlist RP */
{
- if( yymsp[-1].minor.yy94==0 ){
+ if( yymsp[-1].minor.yy138==0 ){
/* Expressions of the form
**
** expr1 IN ()
@@ -152765,218 +153811,190 @@ static YYACTIONTYPE yy_reduce(
** simplify to constants 0 (false) and 1 (true), respectively,
** regardless of the value of expr1.
*/
- sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy102);
- yymsp[-4].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[yymsp[-3].minor.yy100],1);
- }else if( yymsp[-1].minor.yy94->nExpr==1 ){
- /* Expressions of the form:
- **
- ** expr1 IN (?1)
- ** expr1 NOT IN (?2)
- **
- ** with exactly one value on the RHS can be simplified to something
- ** like this:
- **
- ** expr1 == ?1
- ** expr1 <> ?2
- **
- ** But, the RHS of the == or <> is marked with the EP_Generic flag
- ** so that it may not contribute to the computation of comparison
- ** affinity or the collating sequence to use for comparison. Otherwise,
- ** the semantics would be subtly different from IN or NOT IN.
- */
- Expr *pRHS = yymsp[-1].minor.yy94->a[0].pExpr;
- yymsp[-1].minor.yy94->a[0].pExpr = 0;
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
- /* pRHS cannot be NULL because a malloc error would have been detected
- ** before now and control would have never reached this point */
- if( ALWAYS(pRHS) ){
- pRHS->flags &= ~EP_Collate;
- pRHS->flags |= EP_Generic;
- }
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, yymsp[-3].minor.yy100 ? TK_NE : TK_EQ, yymsp[-4].minor.yy102, pRHS);
- }else{
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
- if( yymsp[-4].minor.yy102 ){
- yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy94;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
+ sqlite3ExprUnmapAndDelete(pParse, yymsp[-4].minor.yy46);
+ yymsp[-4].minor.yy46 = sqlite3Expr(pParse->db, TK_INTEGER, yymsp[-3].minor.yy32 ? "1" : "0");
+ }else{
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy46, 0);
+ if( yymsp[-4].minor.yy46 ){
+ yymsp[-4].minor.yy46->x.pList = yymsp[-1].minor.yy138;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy46);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy94);
+ sqlite3ExprListDelete(pParse->db, yymsp[-1].minor.yy138);
}
- if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
+ if( yymsp[-3].minor.yy32 ) yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy46, 0);
}
}
break;
- case 204: /* expr ::= LP select RP */
+ case 207: /* expr ::= LP select RP */
{
- yymsp[-2].minor.yy102 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy102, yymsp[-1].minor.yy391);
+ yymsp[-2].minor.yy46 = sqlite3PExpr(pParse, TK_SELECT, 0, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy46, yymsp[-1].minor.yy25);
}
break;
- case 205: /* expr ::= expr in_op LP select RP */
+ case 208: /* expr ::= expr in_op LP select RP */
{
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, yymsp[-1].minor.yy391);
- if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy46, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy46, yymsp[-1].minor.yy25);
+ if( yymsp[-3].minor.yy32 ) yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy46, 0);
}
break;
- case 206: /* expr ::= expr in_op nm dbnm paren_exprlist */
+ case 209: /* expr ::= expr in_op nm dbnm paren_exprlist */
{
SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);
Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0);
- if( yymsp[0].minor.yy94 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy94);
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy102, 0);
- sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy102, pSelect);
- if( yymsp[-3].minor.yy100 ) yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy102, 0);
+ if( yymsp[0].minor.yy138 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy138);
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy46, 0);
+ sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy46, pSelect);
+ if( yymsp[-3].minor.yy32 ) yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy46, 0);
}
break;
- case 207: /* expr ::= EXISTS LP select RP */
+ case 210: /* expr ::= EXISTS LP select RP */
{
Expr *p;
- p = yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
- sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy391);
+ p = yymsp[-3].minor.yy46 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0);
+ sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy25);
}
break;
- case 208: /* expr ::= CASE case_operand case_exprlist case_else END */
+ case 211: /* expr ::= CASE case_operand case_exprlist case_else END */
{
- yymsp[-4].minor.yy102 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy102, 0);
- if( yymsp[-4].minor.yy102 ){
- yymsp[-4].minor.yy102->x.pList = yymsp[-1].minor.yy102 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[-1].minor.yy102) : yymsp[-2].minor.yy94;
- sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy102);
+ yymsp[-4].minor.yy46 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy46, 0);
+ if( yymsp[-4].minor.yy46 ){
+ yymsp[-4].minor.yy46->x.pList = yymsp[-1].minor.yy46 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy138,yymsp[-1].minor.yy46) : yymsp[-2].minor.yy138;
+ sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy46);
}else{
- sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy94);
- sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy102);
+ sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy138);
+ sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy46);
}
}
break;
- case 209: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
+ case 212: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */
{
- yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[-2].minor.yy102);
- yymsp[-4].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy94, yymsp[0].minor.yy102);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy138, yymsp[-2].minor.yy46);
+ yymsp[-4].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy138, yymsp[0].minor.yy46);
}
break;
- case 210: /* case_exprlist ::= WHEN expr THEN expr */
+ case 213: /* case_exprlist ::= WHEN expr THEN expr */
{
- yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy102);
- yymsp[-3].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy94, yymsp[0].minor.yy102);
+ yymsp[-3].minor.yy138 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy46);
+ yymsp[-3].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy138, yymsp[0].minor.yy46);
}
break;
- case 213: /* case_operand ::= expr */
-{yymsp[0].minor.yy102 = yymsp[0].minor.yy102; /*A-overwrites-X*/}
+ case 216: /* case_operand ::= expr */
+{yymsp[0].minor.yy46 = yymsp[0].minor.yy46; /*A-overwrites-X*/}
break;
- case 216: /* nexprlist ::= nexprlist COMMA expr */
-{yymsp[-2].minor.yy94 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy94,yymsp[0].minor.yy102);}
+ case 219: /* nexprlist ::= nexprlist COMMA expr */
+{yymsp[-2].minor.yy138 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy138,yymsp[0].minor.yy46);}
break;
- case 217: /* nexprlist ::= expr */
-{yymsp[0].minor.yy94 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy102); /*A-overwrites-Y*/}
+ case 220: /* nexprlist ::= expr */
+{yymsp[0].minor.yy138 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy46); /*A-overwrites-Y*/}
break;
- case 219: /* paren_exprlist ::= LP exprlist RP */
- case 224: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==224);
-{yymsp[-2].minor.yy94 = yymsp[-1].minor.yy94;}
+ case 222: /* paren_exprlist ::= LP exprlist RP */
+ case 227: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==227);
+{yymsp[-2].minor.yy138 = yymsp[-1].minor.yy138;}
break;
- case 220: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
+ case 223: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */
{
sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0,
- sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy94, yymsp[-10].minor.yy100,
- &yymsp[-11].minor.yy0, yymsp[0].minor.yy102, SQLITE_SO_ASC, yymsp[-8].minor.yy100, SQLITE_IDXTYPE_APPDEF);
+ sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy138, yymsp[-10].minor.yy32,
+ &yymsp[-11].minor.yy0, yymsp[0].minor.yy46, SQLITE_SO_ASC, yymsp[-8].minor.yy32, SQLITE_IDXTYPE_APPDEF);
if( IN_RENAME_OBJECT && pParse->pNewIndex ){
sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0);
}
}
break;
- case 221: /* uniqueflag ::= UNIQUE */
- case 263: /* raisetype ::= ABORT */ yytestcase(yyruleno==263);
-{yymsp[0].minor.yy100 = OE_Abort;}
+ case 224: /* uniqueflag ::= UNIQUE */
+ case 266: /* raisetype ::= ABORT */ yytestcase(yyruleno==266);
+{yymsp[0].minor.yy32 = OE_Abort;}
break;
- case 222: /* uniqueflag ::= */
-{yymsp[1].minor.yy100 = OE_None;}
+ case 225: /* uniqueflag ::= */
+{yymsp[1].minor.yy32 = OE_None;}
break;
- case 225: /* eidlist ::= eidlist COMMA nm collate sortorder */
+ case 228: /* eidlist ::= eidlist COMMA nm collate sortorder */
{
- yymsp[-4].minor.yy94 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy94, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100);
+ yymsp[-4].minor.yy138 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy138, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy32, yymsp[0].minor.yy32);
}
break;
- case 226: /* eidlist ::= nm collate sortorder */
+ case 229: /* eidlist ::= nm collate sortorder */
{
- yymsp[-2].minor.yy94 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy100, yymsp[0].minor.yy100); /*A-overwrites-Y*/
+ yymsp[-2].minor.yy138 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy32, yymsp[0].minor.yy32); /*A-overwrites-Y*/
}
break;
- case 229: /* cmd ::= DROP INDEX ifexists fullname */
-{sqlite3DropIndex(pParse, yymsp[0].minor.yy407, yymsp[-1].minor.yy100);}
+ case 232: /* cmd ::= DROP INDEX ifexists fullname */
+{sqlite3DropIndex(pParse, yymsp[0].minor.yy609, yymsp[-1].minor.yy32);}
break;
- case 230: /* cmd ::= VACUUM vinto */
-{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy102);}
+ case 233: /* cmd ::= VACUUM vinto */
+{sqlite3Vacuum(pParse,0,yymsp[0].minor.yy46);}
break;
- case 231: /* cmd ::= VACUUM nm vinto */
-{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy102);}
+ case 234: /* cmd ::= VACUUM nm vinto */
+{sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy46);}
break;
- case 234: /* cmd ::= PRAGMA nm dbnm */
+ case 237: /* cmd ::= PRAGMA nm dbnm */
{sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);}
break;
- case 235: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
+ case 238: /* cmd ::= PRAGMA nm dbnm EQ nmnum */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);}
break;
- case 236: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
+ case 239: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);}
break;
- case 237: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
+ case 240: /* cmd ::= PRAGMA nm dbnm EQ minus_num */
{sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);}
break;
- case 238: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
+ case 241: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */
{sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);}
break;
- case 241: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
+ case 244: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */
{
Token all;
all.z = yymsp[-3].minor.yy0.z;
all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n;
- sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy11, &all);
+ sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy527, &all);
}
break;
- case 242: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
+ case 245: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */
{
- sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy100, yymsp[-4].minor.yy298.a, yymsp[-4].minor.yy298.b, yymsp[-2].minor.yy407, yymsp[0].minor.yy102, yymsp[-10].minor.yy100, yymsp[-8].minor.yy100);
+ sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy32, yymsp[-4].minor.yy572.a, yymsp[-4].minor.yy572.b, yymsp[-2].minor.yy609, yymsp[0].minor.yy46, yymsp[-10].minor.yy32, yymsp[-8].minor.yy32);
yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/
}
break;
- case 243: /* trigger_time ::= BEFORE|AFTER */
-{ yymsp[0].minor.yy100 = yymsp[0].major; /*A-overwrites-X*/ }
+ case 246: /* trigger_time ::= BEFORE|AFTER */
+{ yymsp[0].minor.yy32 = yymsp[0].major; /*A-overwrites-X*/ }
break;
- case 244: /* trigger_time ::= INSTEAD OF */
-{ yymsp[-1].minor.yy100 = TK_INSTEAD;}
+ case 247: /* trigger_time ::= INSTEAD OF */
+{ yymsp[-1].minor.yy32 = TK_INSTEAD;}
break;
- case 245: /* trigger_time ::= */
-{ yymsp[1].minor.yy100 = TK_BEFORE; }
+ case 248: /* trigger_time ::= */
+{ yymsp[1].minor.yy32 = TK_BEFORE; }
break;
- case 246: /* trigger_event ::= DELETE|INSERT */
- case 247: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==247);
-{yymsp[0].minor.yy298.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy298.b = 0;}
+ case 249: /* trigger_event ::= DELETE|INSERT */
+ case 250: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==250);
+{yymsp[0].minor.yy572.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy572.b = 0;}
break;
- case 248: /* trigger_event ::= UPDATE OF idlist */
-{yymsp[-2].minor.yy298.a = TK_UPDATE; yymsp[-2].minor.yy298.b = yymsp[0].minor.yy76;}
+ case 251: /* trigger_event ::= UPDATE OF idlist */
+{yymsp[-2].minor.yy572.a = TK_UPDATE; yymsp[-2].minor.yy572.b = yymsp[0].minor.yy406;}
break;
- case 249: /* when_clause ::= */
- case 268: /* key_opt ::= */ yytestcase(yyruleno==268);
- case 316: /* filter_opt ::= */ yytestcase(yyruleno==316);
-{ yymsp[1].minor.yy102 = 0; }
+ case 252: /* when_clause ::= */
+ case 271: /* key_opt ::= */ yytestcase(yyruleno==271);
+{ yymsp[1].minor.yy46 = 0; }
break;
- case 250: /* when_clause ::= WHEN expr */
- case 269: /* key_opt ::= KEY expr */ yytestcase(yyruleno==269);
-{ yymsp[-1].minor.yy102 = yymsp[0].minor.yy102; }
+ case 253: /* when_clause ::= WHEN expr */
+ case 272: /* key_opt ::= KEY expr */ yytestcase(yyruleno==272);
+{ yymsp[-1].minor.yy46 = yymsp[0].minor.yy46; }
break;
- case 251: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
+ case 254: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */
{
- assert( yymsp[-2].minor.yy11!=0 );
- yymsp[-2].minor.yy11->pLast->pNext = yymsp[-1].minor.yy11;
- yymsp[-2].minor.yy11->pLast = yymsp[-1].minor.yy11;
+ assert( yymsp[-2].minor.yy527!=0 );
+ yymsp[-2].minor.yy527->pLast->pNext = yymsp[-1].minor.yy527;
+ yymsp[-2].minor.yy527->pLast = yymsp[-1].minor.yy527;
}
break;
- case 252: /* trigger_cmd_list ::= trigger_cmd SEMI */
+ case 255: /* trigger_cmd_list ::= trigger_cmd SEMI */
{
- assert( yymsp[-1].minor.yy11!=0 );
- yymsp[-1].minor.yy11->pLast = yymsp[-1].minor.yy11;
+ assert( yymsp[-1].minor.yy527!=0 );
+ yymsp[-1].minor.yy527->pLast = yymsp[-1].minor.yy527;
}
break;
- case 253: /* trnm ::= nm DOT nm */
+ case 256: /* trnm ::= nm DOT nm */
{
yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;
sqlite3ErrorMsg(pParse,
@@ -152984,328 +154002,342 @@ static YYACTIONTYPE yy_reduce(
"statements within triggers");
}
break;
- case 254: /* tridxby ::= INDEXED BY nm */
+ case 257: /* tridxby ::= INDEXED BY nm */
{
sqlite3ErrorMsg(pParse,
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 255: /* tridxby ::= NOT INDEXED */
+ case 258: /* tridxby ::= NOT INDEXED */
{
sqlite3ErrorMsg(pParse,
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements "
"within triggers");
}
break;
- case 256: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
-{yylhsminor.yy11 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy94, yymsp[-1].minor.yy102, yymsp[-6].minor.yy100, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy528);}
- yymsp[-7].minor.yy11 = yylhsminor.yy11;
+ case 259: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist where_opt scanpt */
+{yylhsminor.yy527 = sqlite3TriggerUpdateStep(pParse, &yymsp[-5].minor.yy0, yymsp[-2].minor.yy138, yymsp[-1].minor.yy46, yymsp[-6].minor.yy32, yymsp[-7].minor.yy0.z, yymsp[0].minor.yy8);}
+ yymsp[-7].minor.yy527 = yylhsminor.yy527;
break;
- case 257: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
+ case 260: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */
{
- yylhsminor.yy11 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy76,yymsp[-2].minor.yy391,yymsp[-6].minor.yy100,yymsp[-1].minor.yy95,yymsp[-7].minor.yy528,yymsp[0].minor.yy528);/*yylhsminor.yy11-overwrites-yymsp[-6].minor.yy100*/
+ yylhsminor.yy527 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy406,yymsp[-2].minor.yy25,yymsp[-6].minor.yy32,yymsp[-1].minor.yy288,yymsp[-7].minor.yy8,yymsp[0].minor.yy8);/*yylhsminor.yy527-overwrites-yymsp[-6].minor.yy32*/
}
- yymsp[-7].minor.yy11 = yylhsminor.yy11;
+ yymsp[-7].minor.yy527 = yylhsminor.yy527;
break;
- case 258: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
-{yylhsminor.yy11 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy102, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy528);}
- yymsp[-5].minor.yy11 = yylhsminor.yy11;
+ case 261: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */
+{yylhsminor.yy527 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy46, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy8);}
+ yymsp[-5].minor.yy527 = yylhsminor.yy527;
break;
- case 259: /* trigger_cmd ::= scanpt select scanpt */
-{yylhsminor.yy11 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy391, yymsp[-2].minor.yy528, yymsp[0].minor.yy528); /*yylhsminor.yy11-overwrites-yymsp[-1].minor.yy391*/}
- yymsp[-2].minor.yy11 = yylhsminor.yy11;
+ case 262: /* trigger_cmd ::= scanpt select scanpt */
+{yylhsminor.yy527 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy25, yymsp[-2].minor.yy8, yymsp[0].minor.yy8); /*yylhsminor.yy527-overwrites-yymsp[-1].minor.yy25*/}
+ yymsp[-2].minor.yy527 = yylhsminor.yy527;
break;
- case 260: /* expr ::= RAISE LP IGNORE RP */
+ case 263: /* expr ::= RAISE LP IGNORE RP */
{
- yymsp[-3].minor.yy102 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
- if( yymsp[-3].minor.yy102 ){
- yymsp[-3].minor.yy102->affinity = OE_Ignore;
+ yymsp[-3].minor.yy46 = sqlite3PExpr(pParse, TK_RAISE, 0, 0);
+ if( yymsp[-3].minor.yy46 ){
+ yymsp[-3].minor.yy46->affExpr = OE_Ignore;
}
}
break;
- case 261: /* expr ::= RAISE LP raisetype COMMA nm RP */
+ case 264: /* expr ::= RAISE LP raisetype COMMA nm RP */
{
- yymsp[-5].minor.yy102 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
- if( yymsp[-5].minor.yy102 ) {
- yymsp[-5].minor.yy102->affinity = (char)yymsp[-3].minor.yy100;
+ yymsp[-5].minor.yy46 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1);
+ if( yymsp[-5].minor.yy46 ) {
+ yymsp[-5].minor.yy46->affExpr = (char)yymsp[-3].minor.yy32;
}
}
break;
- case 262: /* raisetype ::= ROLLBACK */
-{yymsp[0].minor.yy100 = OE_Rollback;}
+ case 265: /* raisetype ::= ROLLBACK */
+{yymsp[0].minor.yy32 = OE_Rollback;}
break;
- case 264: /* raisetype ::= FAIL */
-{yymsp[0].minor.yy100 = OE_Fail;}
+ case 267: /* raisetype ::= FAIL */
+{yymsp[0].minor.yy32 = OE_Fail;}
break;
- case 265: /* cmd ::= DROP TRIGGER ifexists fullname */
+ case 268: /* cmd ::= DROP TRIGGER ifexists fullname */
{
- sqlite3DropTrigger(pParse,yymsp[0].minor.yy407,yymsp[-1].minor.yy100);
+ sqlite3DropTrigger(pParse,yymsp[0].minor.yy609,yymsp[-1].minor.yy32);
}
break;
- case 266: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
+ case 269: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */
{
- sqlite3Attach(pParse, yymsp[-3].minor.yy102, yymsp[-1].minor.yy102, yymsp[0].minor.yy102);
+ sqlite3Attach(pParse, yymsp[-3].minor.yy46, yymsp[-1].minor.yy46, yymsp[0].minor.yy46);
}
break;
- case 267: /* cmd ::= DETACH database_kw_opt expr */
+ case 270: /* cmd ::= DETACH database_kw_opt expr */
{
- sqlite3Detach(pParse, yymsp[0].minor.yy102);
+ sqlite3Detach(pParse, yymsp[0].minor.yy46);
}
break;
- case 270: /* cmd ::= REINDEX */
+ case 273: /* cmd ::= REINDEX */
{sqlite3Reindex(pParse, 0, 0);}
break;
- case 271: /* cmd ::= REINDEX nm dbnm */
+ case 274: /* cmd ::= REINDEX nm dbnm */
{sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 272: /* cmd ::= ANALYZE */
+ case 275: /* cmd ::= ANALYZE */
{sqlite3Analyze(pParse, 0, 0);}
break;
- case 273: /* cmd ::= ANALYZE nm dbnm */
+ case 276: /* cmd ::= ANALYZE nm dbnm */
{sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);}
break;
- case 274: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
+ case 277: /* cmd ::= ALTER TABLE fullname RENAME TO nm */
{
- sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy407,&yymsp[0].minor.yy0);
+ sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy609,&yymsp[0].minor.yy0);
}
break;
- case 275: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
+ case 278: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */
{
yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n;
sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0);
}
break;
- case 276: /* add_column_fullname ::= fullname */
+ case 279: /* add_column_fullname ::= fullname */
{
disableLookaside(pParse);
- sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy407);
+ sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy609);
}
break;
- case 277: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
+ case 280: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */
{
- sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy407, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
+ sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy609, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0);
}
break;
- case 278: /* cmd ::= create_vtab */
+ case 281: /* cmd ::= create_vtab */
{sqlite3VtabFinishParse(pParse,0);}
break;
- case 279: /* cmd ::= create_vtab LP vtabarglist RP */
+ case 282: /* cmd ::= create_vtab LP vtabarglist RP */
{sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);}
break;
- case 280: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
+ case 283: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */
{
- sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy100);
+ sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy32);
}
break;
- case 281: /* vtabarg ::= */
+ case 284: /* vtabarg ::= */
{sqlite3VtabArgInit(pParse);}
break;
- case 282: /* vtabargtoken ::= ANY */
- case 283: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==283);
- case 284: /* lp ::= LP */ yytestcase(yyruleno==284);
+ case 285: /* vtabargtoken ::= ANY */
+ case 286: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==286);
+ case 287: /* lp ::= LP */ yytestcase(yyruleno==287);
{sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);}
break;
- case 285: /* with ::= WITH wqlist */
- case 286: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==286);
-{ sqlite3WithPush(pParse, yymsp[0].minor.yy243, 1); }
+ case 288: /* with ::= WITH wqlist */
+ case 289: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==289);
+{ sqlite3WithPush(pParse, yymsp[0].minor.yy297, 1); }
break;
- case 287: /* wqlist ::= nm eidlist_opt AS LP select RP */
+ case 290: /* wqlist ::= nm eidlist_opt AS LP select RP */
{
- yymsp[-5].minor.yy243 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391); /*A-overwrites-X*/
+ yymsp[-5].minor.yy297 = sqlite3WithAdd(pParse, 0, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy138, yymsp[-1].minor.yy25); /*A-overwrites-X*/
}
break;
- case 288: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
+ case 291: /* wqlist ::= wqlist COMMA nm eidlist_opt AS LP select RP */
{
- yymsp[-7].minor.yy243 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy243, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy94, yymsp[-1].minor.yy391);
+ yymsp[-7].minor.yy297 = sqlite3WithAdd(pParse, yymsp[-7].minor.yy297, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy138, yymsp[-1].minor.yy25);
}
break;
- case 289: /* windowdefn_list ::= windowdefn */
-{ yylhsminor.yy379 = yymsp[0].minor.yy379; }
- yymsp[0].minor.yy379 = yylhsminor.yy379;
+ case 292: /* windowdefn_list ::= windowdefn */
+{ yylhsminor.yy455 = yymsp[0].minor.yy455; }
+ yymsp[0].minor.yy455 = yylhsminor.yy455;
break;
- case 290: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
+ case 293: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */
{
- assert( yymsp[0].minor.yy379!=0 );
- sqlite3WindowChain(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy379);
- yymsp[0].minor.yy379->pNextWin = yymsp[-2].minor.yy379;
- yylhsminor.yy379 = yymsp[0].minor.yy379;
+ assert( yymsp[0].minor.yy455!=0 );
+ sqlite3WindowChain(pParse, yymsp[0].minor.yy455, yymsp[-2].minor.yy455);
+ yymsp[0].minor.yy455->pNextWin = yymsp[-2].minor.yy455;
+ yylhsminor.yy455 = yymsp[0].minor.yy455;
}
- yymsp[-2].minor.yy379 = yylhsminor.yy379;
+ yymsp[-2].minor.yy455 = yylhsminor.yy455;
break;
- case 291: /* windowdefn ::= nm AS LP window RP */
+ case 294: /* windowdefn ::= nm AS LP window RP */
{
- if( ALWAYS(yymsp[-1].minor.yy379) ){
- yymsp[-1].minor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
+ if( ALWAYS(yymsp[-1].minor.yy455) ){
+ yymsp[-1].minor.yy455->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n);
}
- yylhsminor.yy379 = yymsp[-1].minor.yy379;
+ yylhsminor.yy455 = yymsp[-1].minor.yy455;
}
- yymsp[-4].minor.yy379 = yylhsminor.yy379;
+ yymsp[-4].minor.yy455 = yylhsminor.yy455;
break;
- case 292: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
+ case 295: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */
{
- yymsp[-4].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, 0);
+ yymsp[-4].minor.yy455 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy455, yymsp[-2].minor.yy138, yymsp[-1].minor.yy138, 0);
}
break;
- case 293: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
+ case 296: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */
{
- yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, yymsp[-2].minor.yy94, yymsp[-1].minor.yy94, &yymsp[-5].minor.yy0);
+ yylhsminor.yy455 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy455, yymsp[-2].minor.yy138, yymsp[-1].minor.yy138, &yymsp[-5].minor.yy0);
}
- yymsp[-5].minor.yy379 = yylhsminor.yy379;
+ yymsp[-5].minor.yy455 = yylhsminor.yy455;
break;
- case 294: /* window ::= ORDER BY sortlist frame_opt */
+ case 297: /* window ::= ORDER BY sortlist frame_opt */
{
- yymsp[-3].minor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, 0);
+ yymsp[-3].minor.yy455 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy455, 0, yymsp[-1].minor.yy138, 0);
}
break;
- case 295: /* window ::= nm ORDER BY sortlist frame_opt */
+ case 298: /* window ::= nm ORDER BY sortlist frame_opt */
{
- yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, yymsp[-1].minor.yy94, &yymsp[-4].minor.yy0);
+ yylhsminor.yy455 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy455, 0, yymsp[-1].minor.yy138, &yymsp[-4].minor.yy0);
}
- yymsp[-4].minor.yy379 = yylhsminor.yy379;
+ yymsp[-4].minor.yy455 = yylhsminor.yy455;
break;
- case 296: /* window ::= frame_opt */
+ case 299: /* window ::= frame_opt */
+ case 318: /* filter_over ::= over_clause */ yytestcase(yyruleno==318);
{
- yylhsminor.yy379 = yymsp[0].minor.yy379;
+ yylhsminor.yy455 = yymsp[0].minor.yy455;
}
- yymsp[0].minor.yy379 = yylhsminor.yy379;
+ yymsp[0].minor.yy455 = yylhsminor.yy455;
break;
- case 297: /* window ::= nm frame_opt */
+ case 300: /* window ::= nm frame_opt */
{
- yylhsminor.yy379 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy379, 0, 0, &yymsp[-1].minor.yy0);
+ yylhsminor.yy455 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy455, 0, 0, &yymsp[-1].minor.yy0);
}
- yymsp[-1].minor.yy379 = yylhsminor.yy379;
+ yymsp[-1].minor.yy455 = yylhsminor.yy455;
break;
- case 298: /* frame_opt ::= */
+ case 301: /* frame_opt ::= */
{
- yymsp[1].minor.yy379 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
+ yymsp[1].minor.yy455 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0);
}
break;
- case 299: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
+ case 302: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */
{
- yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy100, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy218);
+ yylhsminor.yy455 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy32, yymsp[-1].minor.yy57.eType, yymsp[-1].minor.yy57.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy118);
}
- yymsp[-2].minor.yy379 = yylhsminor.yy379;
+ yymsp[-2].minor.yy455 = yylhsminor.yy455;
break;
- case 300: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
+ case 303: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */
{
- yylhsminor.yy379 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy100, yymsp[-3].minor.yy389.eType, yymsp[-3].minor.yy389.pExpr, yymsp[-1].minor.yy389.eType, yymsp[-1].minor.yy389.pExpr, yymsp[0].minor.yy218);
+ yylhsminor.yy455 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy32, yymsp[-3].minor.yy57.eType, yymsp[-3].minor.yy57.pExpr, yymsp[-1].minor.yy57.eType, yymsp[-1].minor.yy57.pExpr, yymsp[0].minor.yy118);
}
- yymsp[-5].minor.yy379 = yylhsminor.yy379;
+ yymsp[-5].minor.yy455 = yylhsminor.yy455;
break;
- case 302: /* frame_bound_s ::= frame_bound */
- case 304: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==304);
-{yylhsminor.yy389 = yymsp[0].minor.yy389;}
- yymsp[0].minor.yy389 = yylhsminor.yy389;
+ case 305: /* frame_bound_s ::= frame_bound */
+ case 307: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==307);
+{yylhsminor.yy57 = yymsp[0].minor.yy57;}
+ yymsp[0].minor.yy57 = yylhsminor.yy57;
break;
- case 303: /* frame_bound_s ::= UNBOUNDED PRECEDING */
- case 305: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==305);
- case 307: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==307);
-{yylhsminor.yy389.eType = yymsp[-1].major; yylhsminor.yy389.pExpr = 0;}
- yymsp[-1].minor.yy389 = yylhsminor.yy389;
+ case 306: /* frame_bound_s ::= UNBOUNDED PRECEDING */
+ case 308: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==308);
+ case 310: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==310);
+{yylhsminor.yy57.eType = yymsp[-1].major; yylhsminor.yy57.pExpr = 0;}
+ yymsp[-1].minor.yy57 = yylhsminor.yy57;
break;
- case 306: /* frame_bound ::= expr PRECEDING|FOLLOWING */
-{yylhsminor.yy389.eType = yymsp[0].major; yylhsminor.yy389.pExpr = yymsp[-1].minor.yy102;}
- yymsp[-1].minor.yy389 = yylhsminor.yy389;
+ case 309: /* frame_bound ::= expr PRECEDING|FOLLOWING */
+{yylhsminor.yy57.eType = yymsp[0].major; yylhsminor.yy57.pExpr = yymsp[-1].minor.yy46;}
+ yymsp[-1].minor.yy57 = yylhsminor.yy57;
break;
- case 308: /* frame_exclude_opt ::= */
-{yymsp[1].minor.yy218 = 0;}
+ case 311: /* frame_exclude_opt ::= */
+{yymsp[1].minor.yy118 = 0;}
break;
- case 309: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
-{yymsp[-1].minor.yy218 = yymsp[0].minor.yy218;}
+ case 312: /* frame_exclude_opt ::= EXCLUDE frame_exclude */
+{yymsp[-1].minor.yy118 = yymsp[0].minor.yy118;}
break;
- case 310: /* frame_exclude ::= NO OTHERS */
- case 311: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==311);
-{yymsp[-1].minor.yy218 = yymsp[-1].major; /*A-overwrites-X*/}
+ case 313: /* frame_exclude ::= NO OTHERS */
+ case 314: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==314);
+{yymsp[-1].minor.yy118 = yymsp[-1].major; /*A-overwrites-X*/}
break;
- case 312: /* frame_exclude ::= GROUP|TIES */
-{yymsp[0].minor.yy218 = yymsp[0].major; /*A-overwrites-X*/}
+ case 315: /* frame_exclude ::= GROUP|TIES */
+{yymsp[0].minor.yy118 = yymsp[0].major; /*A-overwrites-X*/}
break;
- case 313: /* window_clause ::= WINDOW windowdefn_list */
-{ yymsp[-1].minor.yy379 = yymsp[0].minor.yy379; }
+ case 316: /* window_clause ::= WINDOW windowdefn_list */
+{ yymsp[-1].minor.yy455 = yymsp[0].minor.yy455; }
break;
- case 314: /* over_clause ::= filter_opt OVER LP window RP */
+ case 317: /* filter_over ::= filter_clause over_clause */
{
- yylhsminor.yy379 = yymsp[-1].minor.yy379;
- assert( yylhsminor.yy379!=0 );
- yylhsminor.yy379->pFilter = yymsp[-4].minor.yy102;
+ yymsp[0].minor.yy455->pFilter = yymsp[-1].minor.yy46;
+ yylhsminor.yy455 = yymsp[0].minor.yy455;
}
- yymsp[-4].minor.yy379 = yylhsminor.yy379;
+ yymsp[-1].minor.yy455 = yylhsminor.yy455;
break;
- case 315: /* over_clause ::= filter_opt OVER nm */
+ case 319: /* filter_over ::= filter_clause */
{
- yylhsminor.yy379 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
- if( yylhsminor.yy379 ){
- yylhsminor.yy379->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
- yylhsminor.yy379->pFilter = yymsp[-2].minor.yy102;
+ yylhsminor.yy455 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+ if( yylhsminor.yy455 ){
+ yylhsminor.yy455->eFrmType = TK_FILTER;
+ yylhsminor.yy455->pFilter = yymsp[0].minor.yy46;
}else{
- sqlite3ExprDelete(pParse->db, yymsp[-2].minor.yy102);
+ sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy46);
}
}
- yymsp[-2].minor.yy379 = yylhsminor.yy379;
+ yymsp[0].minor.yy455 = yylhsminor.yy455;
break;
- case 317: /* filter_opt ::= FILTER LP WHERE expr RP */
-{ yymsp[-4].minor.yy102 = yymsp[-1].minor.yy102; }
+ case 320: /* over_clause ::= OVER LP window RP */
+{
+ yymsp[-3].minor.yy455 = yymsp[-1].minor.yy455;
+ assert( yymsp[-3].minor.yy455!=0 );
+}
+ break;
+ case 321: /* over_clause ::= OVER nm */
+{
+ yymsp[-1].minor.yy455 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
+ if( yymsp[-1].minor.yy455 ){
+ yymsp[-1].minor.yy455->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n);
+ }
+}
+ break;
+ case 322: /* filter_clause ::= FILTER LP WHERE expr RP */
+{ yymsp[-4].minor.yy46 = yymsp[-1].minor.yy46; }
break;
default:
- /* (318) input ::= cmdlist */ yytestcase(yyruleno==318);
- /* (319) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==319);
- /* (320) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=320);
- /* (321) ecmd ::= SEMI */ yytestcase(yyruleno==321);
- /* (322) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==322);
- /* (323) ecmd ::= explain cmdx */ yytestcase(yyruleno==323);
- /* (324) trans_opt ::= */ yytestcase(yyruleno==324);
- /* (325) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==325);
- /* (326) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==326);
- /* (327) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==327);
- /* (328) savepoint_opt ::= */ yytestcase(yyruleno==328);
- /* (329) cmd ::= create_table create_table_args */ yytestcase(yyruleno==329);
- /* (330) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==330);
- /* (331) columnlist ::= columnname carglist */ yytestcase(yyruleno==331);
- /* (332) nm ::= ID|INDEXED */ yytestcase(yyruleno==332);
- /* (333) nm ::= STRING */ yytestcase(yyruleno==333);
- /* (334) nm ::= JOIN_KW */ yytestcase(yyruleno==334);
- /* (335) typetoken ::= typename */ yytestcase(yyruleno==335);
- /* (336) typename ::= ID|STRING */ yytestcase(yyruleno==336);
- /* (337) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=337);
- /* (338) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=338);
- /* (339) carglist ::= carglist ccons */ yytestcase(yyruleno==339);
- /* (340) carglist ::= */ yytestcase(yyruleno==340);
- /* (341) ccons ::= NULL onconf */ yytestcase(yyruleno==341);
- /* (342) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==342);
- /* (343) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==343);
- /* (344) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=344);
- /* (345) tconscomma ::= */ yytestcase(yyruleno==345);
- /* (346) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=346);
- /* (347) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=347);
- /* (348) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=348);
- /* (349) oneselect ::= values */ yytestcase(yyruleno==349);
- /* (350) sclp ::= selcollist COMMA */ yytestcase(yyruleno==350);
- /* (351) as ::= ID|STRING */ yytestcase(yyruleno==351);
- /* (352) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=352);
- /* (353) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==353);
- /* (354) exprlist ::= nexprlist */ yytestcase(yyruleno==354);
- /* (355) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=355);
- /* (356) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=356);
- /* (357) nmnum ::= ON */ yytestcase(yyruleno==357);
- /* (358) nmnum ::= DELETE */ yytestcase(yyruleno==358);
- /* (359) nmnum ::= DEFAULT */ yytestcase(yyruleno==359);
- /* (360) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==360);
- /* (361) foreach_clause ::= */ yytestcase(yyruleno==361);
- /* (362) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==362);
- /* (363) trnm ::= nm */ yytestcase(yyruleno==363);
- /* (364) tridxby ::= */ yytestcase(yyruleno==364);
- /* (365) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==365);
- /* (366) database_kw_opt ::= */ yytestcase(yyruleno==366);
- /* (367) kwcolumn_opt ::= */ yytestcase(yyruleno==367);
- /* (368) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==368);
- /* (369) vtabarglist ::= vtabarg */ yytestcase(yyruleno==369);
- /* (370) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==370);
- /* (371) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==371);
- /* (372) anylist ::= */ yytestcase(yyruleno==372);
- /* (373) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==373);
- /* (374) anylist ::= anylist ANY */ yytestcase(yyruleno==374);
- /* (375) with ::= */ yytestcase(yyruleno==375);
+ /* (323) input ::= cmdlist */ yytestcase(yyruleno==323);
+ /* (324) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==324);
+ /* (325) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=325);
+ /* (326) ecmd ::= SEMI */ yytestcase(yyruleno==326);
+ /* (327) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==327);
+ /* (328) ecmd ::= explain cmdx */ yytestcase(yyruleno==328);
+ /* (329) trans_opt ::= */ yytestcase(yyruleno==329);
+ /* (330) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==330);
+ /* (331) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==331);
+ /* (332) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==332);
+ /* (333) savepoint_opt ::= */ yytestcase(yyruleno==333);
+ /* (334) cmd ::= create_table create_table_args */ yytestcase(yyruleno==334);
+ /* (335) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==335);
+ /* (336) columnlist ::= columnname carglist */ yytestcase(yyruleno==336);
+ /* (337) nm ::= ID|INDEXED */ yytestcase(yyruleno==337);
+ /* (338) nm ::= STRING */ yytestcase(yyruleno==338);
+ /* (339) nm ::= JOIN_KW */ yytestcase(yyruleno==339);
+ /* (340) typetoken ::= typename */ yytestcase(yyruleno==340);
+ /* (341) typename ::= ID|STRING */ yytestcase(yyruleno==341);
+ /* (342) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=342);
+ /* (343) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=343);
+ /* (344) carglist ::= carglist ccons */ yytestcase(yyruleno==344);
+ /* (345) carglist ::= */ yytestcase(yyruleno==345);
+ /* (346) ccons ::= NULL onconf */ yytestcase(yyruleno==346);
+ /* (347) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==347);
+ /* (348) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==348);
+ /* (349) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=349);
+ /* (350) tconscomma ::= */ yytestcase(yyruleno==350);
+ /* (351) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=351);
+ /* (352) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=352);
+ /* (353) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=353);
+ /* (354) oneselect ::= values */ yytestcase(yyruleno==354);
+ /* (355) sclp ::= selcollist COMMA */ yytestcase(yyruleno==355);
+ /* (356) as ::= ID|STRING */ yytestcase(yyruleno==356);
+ /* (357) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=357);
+ /* (358) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==358);
+ /* (359) exprlist ::= nexprlist */ yytestcase(yyruleno==359);
+ /* (360) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360);
+ /* (361) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=361);
+ /* (362) nmnum ::= ON */ yytestcase(yyruleno==362);
+ /* (363) nmnum ::= DELETE */ yytestcase(yyruleno==363);
+ /* (364) nmnum ::= DEFAULT */ yytestcase(yyruleno==364);
+ /* (365) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==365);
+ /* (366) foreach_clause ::= */ yytestcase(yyruleno==366);
+ /* (367) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==367);
+ /* (368) trnm ::= nm */ yytestcase(yyruleno==368);
+ /* (369) tridxby ::= */ yytestcase(yyruleno==369);
+ /* (370) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==370);
+ /* (371) database_kw_opt ::= */ yytestcase(yyruleno==371);
+ /* (372) kwcolumn_opt ::= */ yytestcase(yyruleno==372);
+ /* (373) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==373);
+ /* (374) vtabarglist ::= vtabarg */ yytestcase(yyruleno==374);
+ /* (375) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==375);
+ /* (376) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==376);
+ /* (377) anylist ::= */ yytestcase(yyruleno==377);
+ /* (378) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==378);
+ /* (379) anylist ::= anylist ANY */ yytestcase(yyruleno==379);
+ /* (380) with ::= */ yytestcase(yyruleno==380);
break;
/********** End reduce actions ************************************************/
};
@@ -153597,9 +154629,8 @@ SQLITE_PRIVATE void sqlite3Parser(
*/
SQLITE_PRIVATE int sqlite3ParserFallback(int iToken){
#ifdef YYFALLBACK
- if( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) ){
- return yyFallback[iToken];
- }
+ assert( iToken<(int)(sizeof(yyFallback)/sizeof(yyFallback[0])) );
+ return yyFallback[iToken];
#else
(void)iToken;
#endif
@@ -153768,144 +154799,146 @@ const unsigned char ebcdicToAscii[] = {
** is substantially reduced. This is important for embedded applications
** on platforms with limited memory.
*/
-/* Hash score: 214 */
-/* zKWText[] encodes 950 bytes of keyword text in 629 bytes */
+/* Hash score: 221 */
+/* zKWText[] encodes 967 bytes of keyword text in 638 bytes */
/* REINDEXEDESCAPEACHECKEYBEFOREIGNOREGEXPLAINSTEADDATABASELECT */
-/* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYCONSTRAINTERSECTIES */
-/* AVEPOINTOFFSETRANSACTIONATURALTERAISEXCEPTRIGGEREFERENCES */
-/* UNIQUERYWITHOUTERELEASEXCLUSIVEXISTSATTACHAVINGLOBEGINNERANGE */
-/* BETWEENOTHINGROUPSCASCADETACHCASECOLLATECREATECURRENT_DATE */
-/* IMMEDIATEJOINSERTLIKEMATCHPLANALYZEPRAGMABORTUPDATEVALUES */
-/* VIRTUALIMITWHENOTNULLWHERECURSIVEAFTERENAMEANDEFAULT */
+/* ABLEFTHENDEFERRABLELSEXCLUDELETEMPORARYISNULLSAVEPOINTERSECT */
+/* IESNOTNULLIKEXCEPTRANSACTIONATURALTERAISEXCLUSIVEXISTS */
+/* CONSTRAINTOFFSETRIGGEREFERENCESUNIQUERYWITHOUTERELEASEATTACH */
+/* AVINGLOBEGINNERANGEBETWEENOTHINGROUPSCASCADETACHCASECOLLATE */
+/* CREATECURRENT_DATEIMMEDIATEJOINSERTMATCHPLANALYZEPRAGMABORT */
+/* UPDATEVALUESVIRTUALASTWHENWHERECURSIVEAFTERENAMEANDEFAULT */
/* AUTOINCREMENTCASTCOLUMNCOMMITCONFLICTCROSSCURRENT_TIMESTAMP */
-/* ARTITIONDEFERREDISTINCTDROPRECEDINGFAILFILTEREPLACEFOLLOWING */
-/* FROMFULLIFISNULLORDERESTRICTOTHERSOVERIGHTROLLBACKROWS */
+/* ARTITIONDEFERREDISTINCTDROPRECEDINGFAILIMITFILTEREPLACEFIRST */
+/* FOLLOWINGFROMFULLIFORDERESTRICTOTHERSOVERIGHTROLLBACKROWS */
/* UNBOUNDEDUNIONUSINGVACUUMVIEWINDOWBYINITIALLYPRIMARY */
-static const char zKWText[628] = {
+static const char zKWText[637] = {
'R','E','I','N','D','E','X','E','D','E','S','C','A','P','E','A','C','H',
'E','C','K','E','Y','B','E','F','O','R','E','I','G','N','O','R','E','G',
'E','X','P','L','A','I','N','S','T','E','A','D','D','A','T','A','B','A',
'S','E','L','E','C','T','A','B','L','E','F','T','H','E','N','D','E','F',
'E','R','R','A','B','L','E','L','S','E','X','C','L','U','D','E','L','E',
- 'T','E','M','P','O','R','A','R','Y','C','O','N','S','T','R','A','I','N',
- 'T','E','R','S','E','C','T','I','E','S','A','V','E','P','O','I','N','T',
- 'O','F','F','S','E','T','R','A','N','S','A','C','T','I','O','N','A','T',
- 'U','R','A','L','T','E','R','A','I','S','E','X','C','E','P','T','R','I',
- 'G','G','E','R','E','F','E','R','E','N','C','E','S','U','N','I','Q','U',
- 'E','R','Y','W','I','T','H','O','U','T','E','R','E','L','E','A','S','E',
- 'X','C','L','U','S','I','V','E','X','I','S','T','S','A','T','T','A','C',
- 'H','A','V','I','N','G','L','O','B','E','G','I','N','N','E','R','A','N',
- 'G','E','B','E','T','W','E','E','N','O','T','H','I','N','G','R','O','U',
- 'P','S','C','A','S','C','A','D','E','T','A','C','H','C','A','S','E','C',
- 'O','L','L','A','T','E','C','R','E','A','T','E','C','U','R','R','E','N',
- 'T','_','D','A','T','E','I','M','M','E','D','I','A','T','E','J','O','I',
- 'N','S','E','R','T','L','I','K','E','M','A','T','C','H','P','L','A','N',
- 'A','L','Y','Z','E','P','R','A','G','M','A','B','O','R','T','U','P','D',
- 'A','T','E','V','A','L','U','E','S','V','I','R','T','U','A','L','I','M',
- 'I','T','W','H','E','N','O','T','N','U','L','L','W','H','E','R','E','C',
- 'U','R','S','I','V','E','A','F','T','E','R','E','N','A','M','E','A','N',
- 'D','E','F','A','U','L','T','A','U','T','O','I','N','C','R','E','M','E',
- 'N','T','C','A','S','T','C','O','L','U','M','N','C','O','M','M','I','T',
- 'C','O','N','F','L','I','C','T','C','R','O','S','S','C','U','R','R','E',
- 'N','T','_','T','I','M','E','S','T','A','M','P','A','R','T','I','T','I',
- 'O','N','D','E','F','E','R','R','E','D','I','S','T','I','N','C','T','D',
- 'R','O','P','R','E','C','E','D','I','N','G','F','A','I','L','F','I','L',
- 'T','E','R','E','P','L','A','C','E','F','O','L','L','O','W','I','N','G',
- 'F','R','O','M','F','U','L','L','I','F','I','S','N','U','L','L','O','R',
- 'D','E','R','E','S','T','R','I','C','T','O','T','H','E','R','S','O','V',
- 'E','R','I','G','H','T','R','O','L','L','B','A','C','K','R','O','W','S',
- 'U','N','B','O','U','N','D','E','D','U','N','I','O','N','U','S','I','N',
- 'G','V','A','C','U','U','M','V','I','E','W','I','N','D','O','W','B','Y',
- 'I','N','I','T','I','A','L','L','Y','P','R','I','M','A','R','Y',
+ 'T','E','M','P','O','R','A','R','Y','I','S','N','U','L','L','S','A','V',
+ 'E','P','O','I','N','T','E','R','S','E','C','T','I','E','S','N','O','T',
+ 'N','U','L','L','I','K','E','X','C','E','P','T','R','A','N','S','A','C',
+ 'T','I','O','N','A','T','U','R','A','L','T','E','R','A','I','S','E','X',
+ 'C','L','U','S','I','V','E','X','I','S','T','S','C','O','N','S','T','R',
+ 'A','I','N','T','O','F','F','S','E','T','R','I','G','G','E','R','E','F',
+ 'E','R','E','N','C','E','S','U','N','I','Q','U','E','R','Y','W','I','T',
+ 'H','O','U','T','E','R','E','L','E','A','S','E','A','T','T','A','C','H',
+ 'A','V','I','N','G','L','O','B','E','G','I','N','N','E','R','A','N','G',
+ 'E','B','E','T','W','E','E','N','O','T','H','I','N','G','R','O','U','P',
+ 'S','C','A','S','C','A','D','E','T','A','C','H','C','A','S','E','C','O',
+ 'L','L','A','T','E','C','R','E','A','T','E','C','U','R','R','E','N','T',
+ '_','D','A','T','E','I','M','M','E','D','I','A','T','E','J','O','I','N',
+ 'S','E','R','T','M','A','T','C','H','P','L','A','N','A','L','Y','Z','E',
+ 'P','R','A','G','M','A','B','O','R','T','U','P','D','A','T','E','V','A',
+ 'L','U','E','S','V','I','R','T','U','A','L','A','S','T','W','H','E','N',
+ 'W','H','E','R','E','C','U','R','S','I','V','E','A','F','T','E','R','E',
+ 'N','A','M','E','A','N','D','E','F','A','U','L','T','A','U','T','O','I',
+ 'N','C','R','E','M','E','N','T','C','A','S','T','C','O','L','U','M','N',
+ 'C','O','M','M','I','T','C','O','N','F','L','I','C','T','C','R','O','S',
+ 'S','C','U','R','R','E','N','T','_','T','I','M','E','S','T','A','M','P',
+ 'A','R','T','I','T','I','O','N','D','E','F','E','R','R','E','D','I','S',
+ 'T','I','N','C','T','D','R','O','P','R','E','C','E','D','I','N','G','F',
+ 'A','I','L','I','M','I','T','F','I','L','T','E','R','E','P','L','A','C',
+ 'E','F','I','R','S','T','F','O','L','L','O','W','I','N','G','F','R','O',
+ 'M','F','U','L','L','I','F','O','R','D','E','R','E','S','T','R','I','C',
+ 'T','O','T','H','E','R','S','O','V','E','R','I','G','H','T','R','O','L',
+ 'L','B','A','C','K','R','O','W','S','U','N','B','O','U','N','D','E','D',
+ 'U','N','I','O','N','U','S','I','N','G','V','A','C','U','U','M','V','I',
+ 'E','W','I','N','D','O','W','B','Y','I','N','I','T','I','A','L','L','Y',
+ 'P','R','I','M','A','R','Y',
};
/* aKWHash[i] is the hash value for the i-th keyword */
static const unsigned char aKWHash[127] = {
- 75, 111, 127, 73, 108, 29, 0, 0, 83, 0, 77, 63, 0,
- 37, 33, 78, 15, 0, 126, 86, 57, 120, 128, 19, 0, 0,
- 133, 0, 131, 123, 0, 22, 98, 0, 9, 0, 0, 117, 71,
- 0, 69, 6, 0, 49, 95, 140, 0, 129, 106, 0, 0, 54,
- 0, 109, 24, 0, 17, 0, 134, 56, 23, 26, 5, 58, 135,
- 101, 0, 0, 139, 112, 62, 138, 59, 115, 65, 0, 96, 0,
- 105, 45, 0, 104, 0, 0, 0, 100, 97, 102, 107, 119, 14,
- 31, 118, 0, 81, 0, 136, 116, 137, 61, 124, 132, 80, 121,
- 88, 30, 85, 0, 0, 99, 35, 125, 122, 0, 130, 0, 0,
- 41, 0, 91, 89, 90, 0, 20, 87, 113, 82,
+ 82, 113, 130, 80, 110, 29, 0, 0, 89, 0, 83, 70, 0,
+ 53, 35, 84, 15, 0, 129, 92, 64, 124, 131, 19, 0, 0,
+ 136, 0, 134, 126, 0, 22, 100, 0, 9, 0, 0, 121, 78,
+ 0, 76, 6, 0, 58, 97, 143, 0, 132, 108, 0, 0, 48,
+ 0, 111, 24, 0, 17, 0, 137, 63, 23, 26, 5, 65, 138,
+ 103, 120, 0, 142, 114, 69, 141, 66, 118, 72, 0, 98, 0,
+ 107, 41, 0, 106, 0, 0, 0, 102, 99, 104, 109, 123, 14,
+ 50, 122, 0, 87, 0, 139, 119, 140, 68, 127, 135, 86, 81,
+ 37, 91, 117, 0, 0, 101, 51, 128, 125, 0, 133, 0, 0,
+ 44, 0, 93, 67, 39, 0, 20, 45, 115, 88,
};
/* aKWNext[] forms the hash collision chain. If aKWHash[i]==0
** then the i-th keyword has no more hash collisions. Otherwise,
** the next keyword with the same hash is aKWHash[i]-1. */
-static const unsigned char aKWNext[140] = {
+static const unsigned char aKWNext[143] = {
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, 0, 0, 21, 0, 0, 12, 0, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 51, 28, 0, 0, 38, 0, 0, 0, 44, 0, 0, 0, 3,
- 0, 0, 67, 1, 66, 0, 0, 0, 36, 0, 47, 0, 0,
- 0, 0, 0, 48, 50, 76, 0, 0, 42, 0, 60, 0, 0,
- 0, 43, 0, 16, 55, 10, 0, 0, 0, 0, 0, 0, 0,
- 11, 72, 93, 0, 0, 8, 0, 110, 0, 103, 40, 53, 70,
- 0, 114, 0, 74, 52, 0, 0, 92, 39, 46, 0, 68, 32,
- 84, 0, 34, 27, 25, 18, 94, 0, 64, 79,
+ 0, 0, 0, 21, 0, 0, 0, 0, 12, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 36, 0, 0, 28, 0, 0, 0, 31,
+ 0, 0, 0, 40, 0, 0, 0, 0, 0, 60, 0, 54, 0,
+ 0, 38, 47, 0, 0, 0, 3, 0, 0, 74, 1, 73, 0,
+ 0, 0, 52, 0, 0, 0, 0, 0, 0, 57, 59, 56, 30,
+ 0, 0, 0, 46, 0, 16, 49, 10, 0, 0, 0, 0, 0,
+ 0, 0, 11, 79, 95, 0, 0, 8, 0, 112, 0, 105, 0,
+ 43, 62, 0, 77, 0, 116, 0, 61, 0, 0, 94, 42, 55,
+ 0, 75, 34, 90, 32, 33, 27, 25, 18, 96, 0, 71, 85,
};
/* aKWLen[i] is the length (in bytes) of the i-th keyword */
-static const unsigned char aKWLen[140] = {
+static const unsigned char aKWLen[143] = {
7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6,
7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 7,
- 6, 9, 4, 2, 10, 9, 4, 9, 4, 6, 2, 3, 11,
- 6, 2, 7, 5, 5, 6, 7, 10, 6, 5, 7, 4, 5,
- 7, 9, 6, 6, 6, 4, 5, 5, 5, 7, 7, 6, 5,
- 7, 3, 6, 4, 7, 6, 12, 9, 4, 6, 4, 5, 4,
- 7, 6, 5, 6, 6, 7, 5, 4, 7, 3, 2, 4, 5,
- 9, 5, 6, 3, 7, 13, 2, 2, 4, 6, 6, 8, 5,
- 17, 12, 7, 9, 8, 8, 2, 4, 9, 4, 6, 7, 9,
- 4, 4, 2, 6, 5, 8, 6, 4, 5, 8, 4, 3, 9,
- 5, 5, 6, 4, 6, 2, 2, 9, 3, 7,
+ 6, 9, 4, 2, 6, 5, 9, 9, 4, 7, 3, 2, 4,
+ 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 10, 4, 6,
+ 2, 3, 7, 10, 6, 5, 7, 4, 5, 7, 6, 6, 4,
+ 5, 5, 5, 7, 7, 6, 5, 7, 3, 6, 4, 7, 6,
+ 12, 9, 4, 6, 5, 4, 7, 6, 5, 6, 6, 7, 4,
+ 4, 5, 9, 5, 6, 3, 7, 13, 2, 2, 4, 6, 6,
+ 8, 5, 17, 12, 7, 9, 8, 8, 2, 4, 9, 4, 5,
+ 6, 7, 5, 9, 4, 4, 2, 5, 8, 6, 4, 5, 8,
+ 4, 3, 9, 5, 5, 6, 4, 6, 2, 2, 9, 3, 7,
};
/* aKWOffset[i] is the index into zKWText[] of the start of
** the text for the i-th keyword. */
-static const unsigned short int aKWOffset[140] = {
+static const unsigned short int aKWOffset[143] = {
0, 2, 2, 8, 9, 14, 16, 20, 23, 25, 25, 29, 33,
36, 41, 46, 48, 53, 54, 59, 62, 65, 67, 69, 78, 81,
- 86, 90, 90, 94, 99, 106, 114, 117, 123, 126, 126, 129, 131,
- 136, 140, 141, 146, 150, 154, 159, 165, 175, 178, 183, 183, 187,
- 191, 197, 205, 211, 216, 221, 224, 227, 231, 236, 242, 248, 248,
- 254, 255, 259, 265, 269, 276, 282, 294, 303, 305, 311, 315, 320,
- 322, 329, 334, 339, 345, 351, 357, 362, 365, 365, 365, 368, 372,
- 375, 384, 388, 394, 396, 403, 405, 407, 416, 420, 426, 432, 440,
- 445, 445, 445, 461, 470, 477, 478, 485, 488, 497, 501, 506, 513,
- 522, 526, 530, 532, 538, 542, 550, 556, 559, 564, 572, 572, 576,
- 585, 590, 595, 601, 604, 607, 610, 612, 617, 621,
+ 86, 90, 90, 94, 99, 101, 105, 111, 119, 123, 123, 123, 126,
+ 129, 132, 137, 142, 146, 147, 152, 156, 160, 168, 174, 181, 184,
+ 184, 187, 189, 195, 205, 208, 213, 213, 217, 221, 228, 233, 238,
+ 241, 244, 248, 253, 259, 265, 265, 271, 272, 276, 282, 286, 293,
+ 299, 311, 320, 322, 328, 333, 335, 342, 347, 352, 358, 364, 370,
+ 374, 378, 381, 390, 394, 400, 402, 409, 411, 413, 422, 426, 432,
+ 438, 446, 451, 451, 451, 467, 476, 483, 484, 491, 494, 503, 506,
+ 511, 516, 523, 528, 537, 541, 545, 547, 551, 559, 565, 568, 573,
+ 581, 581, 585, 594, 599, 604, 610, 613, 616, 619, 621, 626, 630,
};
/* aKWCode[i] is the parser symbol code for the i-th keyword */
-static const unsigned char aKWCode[140] = {
+static const unsigned char aKWCode[143] = {
TK_REINDEX, TK_INDEXED, TK_INDEX, TK_DESC, TK_ESCAPE,
TK_EACH, TK_CHECK, TK_KEY, TK_BEFORE, TK_FOREIGN,
TK_FOR, TK_IGNORE, TK_LIKE_KW, TK_EXPLAIN, TK_INSTEAD,
TK_ADD, TK_DATABASE, TK_AS, TK_SELECT, TK_TABLE,
TK_JOIN_KW, TK_THEN, TK_END, TK_DEFERRABLE, TK_ELSE,
TK_EXCLUDE, TK_DELETE, TK_TEMP, TK_TEMP, TK_OR,
- TK_CONSTRAINT, TK_INTERSECT, TK_TIES, TK_SAVEPOINT, TK_INTO,
- TK_OFFSET, TK_OF, TK_SET, TK_TRANSACTION,TK_ACTION,
- TK_ON, TK_JOIN_KW, TK_ALTER, TK_RAISE, TK_EXCEPT,
- TK_TRIGGER, TK_REFERENCES, TK_UNIQUE, TK_QUERY, TK_WITHOUT,
- TK_WITH, TK_JOIN_KW, TK_RELEASE, TK_EXCLUSIVE, TK_EXISTS,
- TK_ATTACH, TK_HAVING, TK_LIKE_KW, TK_BEGIN, TK_JOIN_KW,
- TK_RANGE, TK_BETWEEN, TK_NOTHING, TK_GROUPS, TK_GROUP,
- TK_CASCADE, TK_ASC, TK_DETACH, TK_CASE, TK_COLLATE,
- TK_CREATE, TK_CTIME_KW, TK_IMMEDIATE, TK_JOIN, TK_INSERT,
- TK_LIKE_KW, TK_MATCH, TK_PLAN, TK_ANALYZE, TK_PRAGMA,
- TK_ABORT, TK_UPDATE, TK_VALUES, TK_VIRTUAL, TK_LIMIT,
- TK_WHEN, TK_NOTNULL, TK_NOT, TK_NO, TK_NULL,
- TK_WHERE, TK_RECURSIVE, TK_AFTER, TK_RENAME, TK_AND,
- TK_DEFAULT, TK_AUTOINCR, TK_TO, TK_IN, TK_CAST,
- TK_COLUMNKW, TK_COMMIT, TK_CONFLICT, TK_JOIN_KW, TK_CTIME_KW,
- TK_CTIME_KW, TK_CURRENT, TK_PARTITION, TK_DEFERRED, TK_DISTINCT,
- TK_IS, TK_DROP, TK_PRECEDING, TK_FAIL, TK_FILTER,
- TK_REPLACE, TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_IF,
- TK_ISNULL, TK_ORDER, TK_RESTRICT, TK_OTHERS, TK_OVER,
- TK_JOIN_KW, TK_ROLLBACK, TK_ROWS, TK_ROW, TK_UNBOUNDED,
- TK_UNION, TK_USING, TK_VACUUM, TK_VIEW, TK_WINDOW,
- TK_DO, TK_BY, TK_INITIALLY, TK_ALL, TK_PRIMARY,
+ TK_ISNULL, TK_NULLS, TK_SAVEPOINT, TK_INTERSECT, TK_TIES,
+ TK_NOTNULL, TK_NOT, TK_NO, TK_NULL, TK_LIKE_KW,
+ TK_EXCEPT, TK_TRANSACTION,TK_ACTION, TK_ON, TK_JOIN_KW,
+ TK_ALTER, TK_RAISE, TK_EXCLUSIVE, TK_EXISTS, TK_CONSTRAINT,
+ TK_INTO, TK_OFFSET, TK_OF, TK_SET, TK_TRIGGER,
+ TK_REFERENCES, TK_UNIQUE, TK_QUERY, TK_WITHOUT, TK_WITH,
+ TK_JOIN_KW, TK_RELEASE, TK_ATTACH, TK_HAVING, TK_LIKE_KW,
+ TK_BEGIN, TK_JOIN_KW, TK_RANGE, TK_BETWEEN, TK_NOTHING,
+ TK_GROUPS, TK_GROUP, TK_CASCADE, TK_ASC, TK_DETACH,
+ TK_CASE, TK_COLLATE, TK_CREATE, TK_CTIME_KW, TK_IMMEDIATE,
+ TK_JOIN, TK_INSERT, TK_MATCH, TK_PLAN, TK_ANALYZE,
+ TK_PRAGMA, TK_ABORT, TK_UPDATE, TK_VALUES, TK_VIRTUAL,
+ TK_LAST, TK_WHEN, TK_WHERE, TK_RECURSIVE, TK_AFTER,
+ TK_RENAME, TK_AND, TK_DEFAULT, TK_AUTOINCR, TK_TO,
+ TK_IN, TK_CAST, TK_COLUMNKW, TK_COMMIT, TK_CONFLICT,
+ TK_JOIN_KW, TK_CTIME_KW, TK_CTIME_KW, TK_CURRENT, TK_PARTITION,
+ TK_DEFERRED, TK_DISTINCT, TK_IS, TK_DROP, TK_PRECEDING,
+ TK_FAIL, TK_LIMIT, TK_FILTER, TK_REPLACE, TK_FIRST,
+ TK_FOLLOWING, TK_FROM, TK_JOIN_KW, TK_IF, TK_ORDER,
+ TK_RESTRICT, TK_OTHERS, TK_OVER, TK_JOIN_KW, TK_ROLLBACK,
+ TK_ROWS, TK_ROW, TK_UNBOUNDED, TK_UNION, TK_USING,
+ TK_VACUUM, TK_VIEW, TK_WINDOW, TK_DO, TK_BY,
+ TK_INITIALLY, TK_ALL, TK_PRIMARY,
};
/* Check to see if z[0..n-1] is a keyword. If it is, write the
** parser symbol code for that keyword into *pType. Always
@@ -153956,116 +154989,119 @@ static int keywordCode(const char *z, int n, int *pType){
testcase( i==27 ); /* TEMPORARY */
testcase( i==28 ); /* TEMP */
testcase( i==29 ); /* OR */
- testcase( i==30 ); /* CONSTRAINT */
- testcase( i==31 ); /* INTERSECT */
- testcase( i==32 ); /* TIES */
- testcase( i==33 ); /* SAVEPOINT */
- testcase( i==34 ); /* INTO */
- testcase( i==35 ); /* OFFSET */
- testcase( i==36 ); /* OF */
- testcase( i==37 ); /* SET */
- testcase( i==38 ); /* TRANSACTION */
- testcase( i==39 ); /* ACTION */
- testcase( i==40 ); /* ON */
- testcase( i==41 ); /* NATURAL */
- testcase( i==42 ); /* ALTER */
- testcase( i==43 ); /* RAISE */
- testcase( i==44 ); /* EXCEPT */
- testcase( i==45 ); /* TRIGGER */
- testcase( i==46 ); /* REFERENCES */
- testcase( i==47 ); /* UNIQUE */
- testcase( i==48 ); /* QUERY */
- testcase( i==49 ); /* WITHOUT */
- testcase( i==50 ); /* WITH */
- testcase( i==51 ); /* OUTER */
- testcase( i==52 ); /* RELEASE */
- testcase( i==53 ); /* EXCLUSIVE */
- testcase( i==54 ); /* EXISTS */
- testcase( i==55 ); /* ATTACH */
- testcase( i==56 ); /* HAVING */
- testcase( i==57 ); /* GLOB */
- testcase( i==58 ); /* BEGIN */
- testcase( i==59 ); /* INNER */
- testcase( i==60 ); /* RANGE */
- testcase( i==61 ); /* BETWEEN */
- testcase( i==62 ); /* NOTHING */
- testcase( i==63 ); /* GROUPS */
- testcase( i==64 ); /* GROUP */
- testcase( i==65 ); /* CASCADE */
- testcase( i==66 ); /* ASC */
- testcase( i==67 ); /* DETACH */
- testcase( i==68 ); /* CASE */
- testcase( i==69 ); /* COLLATE */
- testcase( i==70 ); /* CREATE */
- testcase( i==71 ); /* CURRENT_DATE */
- testcase( i==72 ); /* IMMEDIATE */
- testcase( i==73 ); /* JOIN */
- testcase( i==74 ); /* INSERT */
- testcase( i==75 ); /* LIKE */
- testcase( i==76 ); /* MATCH */
- testcase( i==77 ); /* PLAN */
- testcase( i==78 ); /* ANALYZE */
- testcase( i==79 ); /* PRAGMA */
- testcase( i==80 ); /* ABORT */
- testcase( i==81 ); /* UPDATE */
- testcase( i==82 ); /* VALUES */
- testcase( i==83 ); /* VIRTUAL */
- testcase( i==84 ); /* LIMIT */
- testcase( i==85 ); /* WHEN */
- testcase( i==86 ); /* NOTNULL */
- testcase( i==87 ); /* NOT */
- testcase( i==88 ); /* NO */
- testcase( i==89 ); /* NULL */
- testcase( i==90 ); /* WHERE */
- testcase( i==91 ); /* RECURSIVE */
- testcase( i==92 ); /* AFTER */
- testcase( i==93 ); /* RENAME */
- testcase( i==94 ); /* AND */
- testcase( i==95 ); /* DEFAULT */
- testcase( i==96 ); /* AUTOINCREMENT */
- testcase( i==97 ); /* TO */
- testcase( i==98 ); /* IN */
- testcase( i==99 ); /* CAST */
- testcase( i==100 ); /* COLUMN */
- testcase( i==101 ); /* COMMIT */
- testcase( i==102 ); /* CONFLICT */
- testcase( i==103 ); /* CROSS */
- testcase( i==104 ); /* CURRENT_TIMESTAMP */
- testcase( i==105 ); /* CURRENT_TIME */
- testcase( i==106 ); /* CURRENT */
- testcase( i==107 ); /* PARTITION */
- testcase( i==108 ); /* DEFERRED */
- testcase( i==109 ); /* DISTINCT */
- testcase( i==110 ); /* IS */
- testcase( i==111 ); /* DROP */
- testcase( i==112 ); /* PRECEDING */
- testcase( i==113 ); /* FAIL */
- testcase( i==114 ); /* FILTER */
- testcase( i==115 ); /* REPLACE */
- testcase( i==116 ); /* FOLLOWING */
- testcase( i==117 ); /* FROM */
- testcase( i==118 ); /* FULL */
- testcase( i==119 ); /* IF */
- testcase( i==120 ); /* ISNULL */
- testcase( i==121 ); /* ORDER */
- testcase( i==122 ); /* RESTRICT */
- testcase( i==123 ); /* OTHERS */
- testcase( i==124 ); /* OVER */
- testcase( i==125 ); /* RIGHT */
- testcase( i==126 ); /* ROLLBACK */
- testcase( i==127 ); /* ROWS */
- testcase( i==128 ); /* ROW */
- testcase( i==129 ); /* UNBOUNDED */
- testcase( i==130 ); /* UNION */
- testcase( i==131 ); /* USING */
- testcase( i==132 ); /* VACUUM */
- testcase( i==133 ); /* VIEW */
- testcase( i==134 ); /* WINDOW */
- testcase( i==135 ); /* DO */
- testcase( i==136 ); /* BY */
- testcase( i==137 ); /* INITIALLY */
- testcase( i==138 ); /* ALL */
- testcase( i==139 ); /* PRIMARY */
+ testcase( i==30 ); /* ISNULL */
+ testcase( i==31 ); /* NULLS */
+ testcase( i==32 ); /* SAVEPOINT */
+ testcase( i==33 ); /* INTERSECT */
+ testcase( i==34 ); /* TIES */
+ testcase( i==35 ); /* NOTNULL */
+ testcase( i==36 ); /* NOT */
+ testcase( i==37 ); /* NO */
+ testcase( i==38 ); /* NULL */
+ testcase( i==39 ); /* LIKE */
+ testcase( i==40 ); /* EXCEPT */
+ testcase( i==41 ); /* TRANSACTION */
+ testcase( i==42 ); /* ACTION */
+ testcase( i==43 ); /* ON */
+ testcase( i==44 ); /* NATURAL */
+ testcase( i==45 ); /* ALTER */
+ testcase( i==46 ); /* RAISE */
+ testcase( i==47 ); /* EXCLUSIVE */
+ testcase( i==48 ); /* EXISTS */
+ testcase( i==49 ); /* CONSTRAINT */
+ testcase( i==50 ); /* INTO */
+ testcase( i==51 ); /* OFFSET */
+ testcase( i==52 ); /* OF */
+ testcase( i==53 ); /* SET */
+ testcase( i==54 ); /* TRIGGER */
+ testcase( i==55 ); /* REFERENCES */
+ testcase( i==56 ); /* UNIQUE */
+ testcase( i==57 ); /* QUERY */
+ testcase( i==58 ); /* WITHOUT */
+ testcase( i==59 ); /* WITH */
+ testcase( i==60 ); /* OUTER */
+ testcase( i==61 ); /* RELEASE */
+ testcase( i==62 ); /* ATTACH */
+ testcase( i==63 ); /* HAVING */
+ testcase( i==64 ); /* GLOB */
+ testcase( i==65 ); /* BEGIN */
+ testcase( i==66 ); /* INNER */
+ testcase( i==67 ); /* RANGE */
+ testcase( i==68 ); /* BETWEEN */
+ testcase( i==69 ); /* NOTHING */
+ testcase( i==70 ); /* GROUPS */
+ testcase( i==71 ); /* GROUP */
+ testcase( i==72 ); /* CASCADE */
+ testcase( i==73 ); /* ASC */
+ testcase( i==74 ); /* DETACH */
+ testcase( i==75 ); /* CASE */
+ testcase( i==76 ); /* COLLATE */
+ testcase( i==77 ); /* CREATE */
+ testcase( i==78 ); /* CURRENT_DATE */
+ testcase( i==79 ); /* IMMEDIATE */
+ testcase( i==80 ); /* JOIN */
+ testcase( i==81 ); /* INSERT */
+ testcase( i==82 ); /* MATCH */
+ testcase( i==83 ); /* PLAN */
+ testcase( i==84 ); /* ANALYZE */
+ testcase( i==85 ); /* PRAGMA */
+ testcase( i==86 ); /* ABORT */
+ testcase( i==87 ); /* UPDATE */
+ testcase( i==88 ); /* VALUES */
+ testcase( i==89 ); /* VIRTUAL */
+ testcase( i==90 ); /* LAST */
+ testcase( i==91 ); /* WHEN */
+ testcase( i==92 ); /* WHERE */
+ testcase( i==93 ); /* RECURSIVE */
+ testcase( i==94 ); /* AFTER */
+ testcase( i==95 ); /* RENAME */
+ testcase( i==96 ); /* AND */
+ testcase( i==97 ); /* DEFAULT */
+ testcase( i==98 ); /* AUTOINCREMENT */
+ testcase( i==99 ); /* TO */
+ testcase( i==100 ); /* IN */
+ testcase( i==101 ); /* CAST */
+ testcase( i==102 ); /* COLUMN */
+ testcase( i==103 ); /* COMMIT */
+ testcase( i==104 ); /* CONFLICT */
+ testcase( i==105 ); /* CROSS */
+ testcase( i==106 ); /* CURRENT_TIMESTAMP */
+ testcase( i==107 ); /* CURRENT_TIME */
+ testcase( i==108 ); /* CURRENT */
+ testcase( i==109 ); /* PARTITION */
+ testcase( i==110 ); /* DEFERRED */
+ testcase( i==111 ); /* DISTINCT */
+ testcase( i==112 ); /* IS */
+ testcase( i==113 ); /* DROP */
+ testcase( i==114 ); /* PRECEDING */
+ testcase( i==115 ); /* FAIL */
+ testcase( i==116 ); /* LIMIT */
+ testcase( i==117 ); /* FILTER */
+ testcase( i==118 ); /* REPLACE */
+ testcase( i==119 ); /* FIRST */
+ testcase( i==120 ); /* FOLLOWING */
+ testcase( i==121 ); /* FROM */
+ testcase( i==122 ); /* FULL */
+ testcase( i==123 ); /* IF */
+ testcase( i==124 ); /* ORDER */
+ testcase( i==125 ); /* RESTRICT */
+ testcase( i==126 ); /* OTHERS */
+ testcase( i==127 ); /* OVER */
+ testcase( i==128 ); /* RIGHT */
+ testcase( i==129 ); /* ROLLBACK */
+ testcase( i==130 ); /* ROWS */
+ testcase( i==131 ); /* ROW */
+ testcase( i==132 ); /* UNBOUNDED */
+ testcase( i==133 ); /* UNION */
+ testcase( i==134 ); /* USING */
+ testcase( i==135 ); /* VACUUM */
+ testcase( i==136 ); /* VIEW */
+ testcase( i==137 ); /* WINDOW */
+ testcase( i==138 ); /* DO */
+ testcase( i==139 ); /* BY */
+ testcase( i==140 ); /* INITIALLY */
+ testcase( i==141 ); /* ALL */
+ testcase( i==142 ); /* PRIMARY */
*pType = aKWCode[i];
break;
}
@@ -154077,7 +155113,7 @@ SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
keywordCode((char*)z, n, &id);
return id;
}
-#define SQLITE_N_KEYWORD 140
+#define SQLITE_N_KEYWORD 143
SQLITE_API int sqlite3_keyword_name(int i,const char **pzName,int *pnName){
if( i<0 || i>=SQLITE_N_KEYWORD ) return SQLITE_ERROR;
*pzName = zKWText + aKWOffset[i];
@@ -156038,6 +157074,7 @@ SQLITE_API int sqlite3_db_config(sqlite3 *db, int op, ...){
} aFlagOp[] = {
{ SQLITE_DBCONFIG_ENABLE_FKEY, SQLITE_ForeignKeys },
{ SQLITE_DBCONFIG_ENABLE_TRIGGER, SQLITE_EnableTrigger },
+ { SQLITE_DBCONFIG_ENABLE_VIEW, SQLITE_EnableView },
{ SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, SQLITE_Fts3Tokenizer },
{ SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, SQLITE_LoadExtension },
{ SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE, SQLITE_NoCkptOnClose },
@@ -156437,11 +157474,8 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
#ifndef SQLITE_OMIT_VIRTUALTABLE
for(i=sqliteHashFirst(&db->aModule); i; i=sqliteHashNext(i)){
Module *pMod = (Module *)sqliteHashData(i);
- if( pMod->xDestroy ){
- pMod->xDestroy(pMod->pAux);
- }
sqlite3VtabEponymousTableClear(db, pMod);
- sqlite3DbFree(db, pMod);
+ sqlite3VtabModuleUnref(db, pMod);
}
sqlite3HashClear(&db->aModule);
#endif
@@ -156922,7 +157956,8 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
}
assert( SQLITE_FUNC_CONSTANT==SQLITE_DETERMINISTIC );
- extraFlags = enc & SQLITE_DETERMINISTIC;
+ assert( SQLITE_FUNC_DIRECT==SQLITE_DIRECTONLY );
+ extraFlags = enc & (SQLITE_DETERMINISTIC|SQLITE_DIRECTONLY|SQLITE_SUBTYPE);
enc &= (SQLITE_FUNC_ENCMASK|SQLITE_ANY);
#ifndef SQLITE_OMIT_UTF16
@@ -156985,6 +158020,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
p->u.pDestructor = pDestructor;
p->funcFlags = (p->funcFlags & SQLITE_FUNC_ENCMASK) | extraFlags;
testcase( p->funcFlags & SQLITE_DETERMINISTIC );
+ testcase( p->funcFlags & SQLITE_DIRECTONLY );
p->xSFunc = xSFunc ? xSFunc : xStep;
p->xFinalize = xFinal;
p->xValue = xValue;
@@ -158277,6 +159313,7 @@ static int openDatabase(
db->nMaxSorterMmap = 0x7FFFFFFF;
db->flags |= SQLITE_ShortColNames
| SQLITE_EnableTrigger
+ | SQLITE_EnableView
| SQLITE_CacheSpill
/* The SQLITE_DQS compile-time option determines the default settings
@@ -159026,12 +160063,33 @@ SQLITE_API int sqlite3_test_control(int op, ...){
break;
}
- /*
- ** Reset the PRNG back to its uninitialized state. The next call
- ** to sqlite3_randomness() will reseed the PRNG using a single call
- ** to the xRandomness method of the default VFS.
+ /* sqlite3_test_control(SQLITE_TESTCTRL_PRNG_SEED, int x, sqlite3 *db);
+ **
+ ** Control the seed for the pseudo-random number generator (PRNG) that
+ ** is built into SQLite. Cases:
+ **
+ ** x!=0 && db!=0 Seed the PRNG to the current value of the
+ ** schema cookie in the main database for db, or
+ ** x if the schema cookie is zero. This case
+ ** is convenient to use with database fuzzers
+ ** as it allows the fuzzer some control over the
+ ** the PRNG seed.
+ **
+ ** x!=0 && db==0 Seed the PRNG to the value of x.
+ **
+ ** x==0 && db==0 Revert to default behavior of using the
+ ** xRandomness method on the primary VFS.
+ **
+ ** This test-control also resets the PRNG so that the new seed will
+ ** be used for the next call to sqlite3_randomness().
*/
- case SQLITE_TESTCTRL_PRNG_RESET: {
+ case SQLITE_TESTCTRL_PRNG_SEED: {
+ int x = va_arg(ap, int);
+ int y;
+ sqlite3 *db = va_arg(ap, sqlite3*);
+ assert( db==0 || db->aDb[0].pSchema!=0 );
+ if( db && (y = db->aDb[0].pSchema->schema_cookie)!=0 ){ x = y; }
+ sqlite3Config.iPrngSeed = x;
sqlite3_randomness(0,0);
break;
}
@@ -159244,6 +160302,17 @@ SQLITE_API int sqlite3_test_control(int op, ...){
break;
}
+ /* sqlite3_test_control(SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, int);
+ **
+ ** Set or clear a flag that causes SQLite to verify that type, name,
+ ** and tbl_name fields of the sqlite_master table. This is normally
+ ** on, but it is sometimes useful to turn it off for testing.
+ */
+ case SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS: {
+ sqlite3GlobalConfig.bExtraSchemaChecks = va_arg(ap, int);
+ break;
+ }
+
/* Set the threshold at which OP_Once counters reset back to zero.
** By default this is 0x7ffffffe (over 2 billion), but that value is
** too big to test in a reasonable amount of time, so this control is
@@ -161190,6 +162259,18 @@ SQLITE_PRIVATE int sqlite3FtsUnicodeIsdiacritic(int);
SQLITE_EXTENSION_INIT1
#endif
+/*
+** The following are copied from sqliteInt.h.
+**
+** Constants for the largest and smallest possible 64-bit signed integers.
+** These macros are designed to work correctly on both 32-bit and 64-bit
+** compilers.
+*/
+#ifndef SQLITE_AMALGAMATION
+# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
+# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
+#endif
+
static int fts3EvalNext(Fts3Cursor *pCsr);
static int fts3EvalStart(Fts3Cursor *pCsr);
static int fts3TermSegReaderCursor(
@@ -162968,10 +164049,11 @@ static void fts3ColumnlistCopy(char **pp, char **ppPoslist){
}
/*
-** Value used to signify the end of an position-list. This is safe because
-** it is not possible to have a document with 2^31 terms.
+** Value used to signify the end of an position-list. This must be
+** as large or larger than any value that might appear on the
+** position-list, even a position list that has been corrupted.
*/
-#define POSITION_LIST_END 0x7fffffff
+#define POSITION_LIST_END LARGEST_INT64
/*
** This function is used to help parse position-lists. When this function is
@@ -163047,14 +164129,14 @@ static int fts3PoslistMerge(
fts3GetVarint32(&p1[1], &iCol1);
if( iCol1==0 ) return FTS_CORRUPT_VTAB;
}
- else if( *p1==POS_END ) iCol1 = POSITION_LIST_END;
+ else if( *p1==POS_END ) iCol1 = 0x7fffffff;
else iCol1 = 0;
if( *p2==POS_COLUMN ){
fts3GetVarint32(&p2[1], &iCol2);
if( iCol2==0 ) return FTS_CORRUPT_VTAB;
}
- else if( *p2==POS_END ) iCol2 = POSITION_LIST_END;
+ else if( *p2==POS_END ) iCol2 = 0x7fffffff;
else iCol2 = 0;
if( iCol1==iCol2 ){
@@ -163356,7 +164438,8 @@ static void fts3PutDeltaVarint3(
iWrite = *piPrev - iVal;
}
assert( *pbFirst || *piPrev==0 );
- assert( *pbFirst==0 || iWrite>0 );
+ assert_fts3_nc( *pbFirst==0 || iWrite>0 );
+ assert( *pbFirst==0 || iWrite>=0 );
*pp += sqlite3Fts3PutVarint(*pp, iWrite);
*piPrev = iVal;
*pbFirst = 1;
@@ -163462,6 +164545,8 @@ static int fts3DoclistOrMerge(
fts3PoslistCopy(&p, &p2);
fts3GetDeltaVarint3(&p2, pEnd2, bDescDoclist, &i2);
}
+
+ assert( (p-aOut)<=((p1?(p1-a1):n1)+(p2?(p2-a2):n2)+FTS3_VARINT_MAX-1) );
}
if( rc!=SQLITE_OK ){
@@ -164062,18 +165147,6 @@ static int fts3NextMethod(sqlite3_vtab_cursor *pCursor){
}
/*
-** The following are copied from sqliteInt.h.
-**
-** Constants for the largest and smallest possible 64-bit signed integers.
-** These macros are designed to work correctly on both 32-bit and 64-bit
-** compilers.
-*/
-#ifndef SQLITE_AMALGAMATION
-# define LARGEST_INT64 (0xffffffff|(((sqlite3_int64)0x7fffffff)<<32))
-# define SMALLEST_INT64 (((sqlite3_int64)-1) - LARGEST_INT64)
-#endif
-
-/*
** If the numeric type of argument pVal is "integer", then return it
** converted to a 64-bit signed integer. Otherwise, return a copy of
** the second parameter, iDefault.
@@ -174802,14 +175875,14 @@ static int nodeReaderInit(NodeReader *p, const char *aNode, int nNode){
p->nNode = nNode;
/* Figure out if this is a leaf or an internal node. */
- if( p->aNode[0] ){
+ if( aNode && aNode[0] ){
/* An internal node. */
p->iOff = 1 + sqlite3Fts3GetVarint(&p->aNode[1], &p->iChild);
}else{
p->iOff = 1;
}
- return nodeReaderNext(p);
+ return aNode ? nodeReaderNext(p) : SQLITE_OK;
}
/*
@@ -174946,6 +176019,7 @@ static int fts3AppendToNode(
nPrefix = fts3PrefixCompress(pPrev->a, pPrev->n, zTerm, nTerm);
nSuffix = nTerm - nPrefix;
+ if( nSuffix<=0 ) return FTS_CORRUPT_VTAB;
memcpy(pPrev->a, zTerm, nTerm);
pPrev->n = nTerm;
@@ -175300,8 +176374,8 @@ static int fts3IncrmergeLoad(
NodeReader reader;
pNode = &pWriter->aNodeWriter[i];
- rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
- if( reader.aNode ){
+ if( pNode->block.a){
+ rc = nodeReaderInit(&reader, pNode->block.a, pNode->block.n);
while( reader.aNode && rc==SQLITE_OK ) rc = nodeReaderNext(&reader);
blobGrowBuffer(&pNode->key, reader.term.n, &rc);
if( rc==SQLITE_OK ){
@@ -177166,10 +178240,10 @@ static void fts3SnippetDetails(
while( iCsr<(iStart+pIter->nSnippet) && iCsr>=iStart ){
int j;
- u64 mPhrase = (u64)1 << i;
+ u64 mPhrase = (u64)1 << (i%64);
u64 mPos = (u64)1 << (iCsr - iStart);
assert( iCsr>=iStart && (iCsr - iStart)<=64 );
- assert( i>=0 && i<=64 );
+ assert( i>=0 );
if( (mCover|mCovered)&mPhrase ){
iScore++;
}else{
@@ -180330,6 +181404,7 @@ static JsonNode *jsonLookupStep(
const char *zKey;
JsonNode *pRoot = &pParse->aNode[iRoot];
if( zPath[0]==0 ) return pRoot;
+ if( pRoot->jnFlags & JNODE_REPLACE ) return 0;
if( zPath[0]=='.' ){
if( pRoot->eType!=JSON_OBJECT ) return 0;
zPath++;
@@ -181066,7 +182141,7 @@ static void jsonArrayStep(
if( pStr->zBuf==0 ){
jsonInit(pStr, ctx);
jsonAppendChar(pStr, '[');
- }else{
+ }else if( pStr->nUsed>1 ){
jsonAppendChar(pStr, ',');
pStr->pCtx = ctx;
}
@@ -181114,9 +182189,11 @@ static void jsonGroupInverse(
int argc,
sqlite3_value **argv
){
- int i;
+ unsigned int i;
int inStr = 0;
+ int nNest = 0;
char *z;
+ char c;
JsonString *pStr;
UNUSED_PARAM(argc);
UNUSED_PARAM(argv);
@@ -181127,12 +182204,18 @@ static void jsonGroupInverse(
if( NEVER(!pStr) ) return;
#endif
z = pStr->zBuf;
- for(i=1; z[i]!=',' || inStr; i++){
- assert( i<pStr->nUsed );
- if( z[i]=='"' ){
+ for(i=1; (c = z[i])!=',' || inStr || nNest; i++){
+ if( i>=pStr->nUsed ){
+ pStr->nUsed = 1;
+ return;
+ }
+ if( c=='"' ){
inStr = !inStr;
- }else if( z[i]=='\\' ){
+ }else if( c=='\\' ){
i++;
+ }else if( !inStr ){
+ if( c=='{' || c=='[' ) nNest++;
+ if( c=='}' || c==']' ) nNest--;
}
}
pStr->nUsed -= i;
@@ -181162,7 +182245,7 @@ static void jsonObjectStep(
if( pStr->zBuf==0 ){
jsonInit(pStr, ctx);
jsonAppendChar(pStr, '{');
- }else{
+ }else if( pStr->nUsed>1 ){
jsonAppendChar(pStr, ',');
pStr->pCtx = ctx;
}
@@ -181750,14 +182833,14 @@ SQLITE_PRIVATE int sqlite3Json1Init(sqlite3 *db){
#endif
for(i=0; i<sizeof(aFunc)/sizeof(aFunc[0]) && rc==SQLITE_OK; i++){
rc = sqlite3_create_function(db, aFunc[i].zName, aFunc[i].nArg,
- SQLITE_UTF8 | SQLITE_DETERMINISTIC,
+ SQLITE_UTF8 | SQLITE_DETERMINISTIC,
(void*)&aFunc[i].flag,
aFunc[i].xFunc, 0, 0);
}
#ifndef SQLITE_OMIT_WINDOWFUNC
for(i=0; i<sizeof(aAgg)/sizeof(aAgg[0]) && rc==SQLITE_OK; i++){
rc = sqlite3_create_window_function(db, aAgg[i].zName, aAgg[i].nArg,
- SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0,
+ SQLITE_SUBTYPE | SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0,
aAgg[i].xStep, aAgg[i].xFinal,
aAgg[i].xValue, jsonGroupInverse, 0);
}
@@ -182460,7 +183543,6 @@ static int nodeAcquire(
** increase its reference count and return it.
*/
if( (pNode = nodeHashLookup(pRtree, iNode))!=0 ){
- assert( !pParent || !pNode->pParent || pNode->pParent==pParent );
if( pParent && !pNode->pParent ){
if( nodeInParentChain(pNode, pParent) ){
RTREE_IS_CORRUPT(pRtree);
@@ -182468,6 +183550,9 @@ static int nodeAcquire(
}
pParent->nRef++;
pNode->pParent = pParent;
+ }else if( pParent && pNode->pParent && pParent!=pNode->pParent ){
+ RTREE_IS_CORRUPT(pRtree);
+ return SQLITE_CORRUPT_VTAB;
}
pNode->nRef++;
*ppNode = pNode;
@@ -183355,13 +184440,14 @@ static int rtreeStepToLeaf(RtreeCursor *pCur){
eInt = pRtree->eCoordType==RTREE_COORD_INT32;
while( (p = rtreeSearchPointFirst(pCur))!=0 && p->iLevel>0 ){
+ u8 *pCellData;
pNode = rtreeNodeOfFirstSearchPoint(pCur, &rc);
if( rc ) return rc;
nCell = NCELL(pNode);
assert( nCell<200 );
+ pCellData = pNode->zData + (4+pRtree->nBytesPerCell*p->iCell);
while( p->iCell<nCell ){
sqlite3_rtree_dbl rScore = (sqlite3_rtree_dbl)-1;
- u8 *pCellData = pNode->zData + (4+pRtree->nBytesPerCell*p->iCell);
eWithin = FULLY_WITHIN;
for(ii=0; ii<nConstraint; ii++){
RtreeConstraint *pConstraint = pCur->aConstraint + ii;
@@ -183374,13 +184460,23 @@ static int rtreeStepToLeaf(RtreeCursor *pCur){
}else{
rtreeNonleafConstraint(pConstraint, eInt, pCellData, &eWithin);
}
- if( eWithin==NOT_WITHIN ) break;
+ if( eWithin==NOT_WITHIN ){
+ p->iCell++;
+ pCellData += pRtree->nBytesPerCell;
+ break;
+ }
}
- p->iCell++;
if( eWithin==NOT_WITHIN ) continue;
+ p->iCell++;
x.iLevel = p->iLevel - 1;
if( x.iLevel ){
x.id = readInt64(pCellData);
+ for(ii=0; ii<pCur->nPoint; ii++){
+ if( pCur->aPoint[ii].id==x.id ){
+ RTREE_IS_CORRUPT(pRtree);
+ return SQLITE_CORRUPT_VTAB;
+ }
+ }
x.iCell = 0;
}else{
x.id = p->id;
@@ -189688,6 +190784,7 @@ SQLITE_API void sqlite3rbu_destroy_vfs(const char *zName);
typedef struct RbuFrame RbuFrame;
typedef struct RbuObjIter RbuObjIter;
typedef struct RbuState RbuState;
+typedef struct RbuSpan RbuSpan;
typedef struct rbu_vfs rbu_vfs;
typedef struct rbu_file rbu_file;
typedef struct RbuUpdateStmt RbuUpdateStmt;
@@ -189732,6 +190829,11 @@ struct RbuUpdateStmt {
RbuUpdateStmt *pNext;
};
+struct RbuSpan {
+ const char *zSpan;
+ int nSpan;
+};
+
/*
** An iterator of this type is used to iterate through all objects in
** the target database that require updating. For each such table, the
@@ -189781,6 +190883,9 @@ struct RbuObjIter {
sqlite3_stmt *pInsert; /* Statement for INSERT operations */
sqlite3_stmt *pDelete; /* Statement for DELETE ops */
sqlite3_stmt *pTmpInsert; /* Insert into rbu_tmp_$zDataTbl */
+ int nIdxCol;
+ RbuSpan *aIdxCol;
+ char *zIdxSql;
/* Last UPDATE used (for PK b-tree updates only), or NULL. */
RbuUpdateStmt *pRbuUpdate;
@@ -190315,6 +191420,8 @@ static void rbuObjIterClearStatements(RbuObjIter *pIter){
sqlite3_free(pUp);
pUp = pTmp;
}
+ sqlite3_free(pIter->aIdxCol);
+ sqlite3_free(pIter->zIdxSql);
pIter->pSelect = 0;
pIter->pInsert = 0;
@@ -190322,6 +191429,9 @@ static void rbuObjIterClearStatements(RbuObjIter *pIter){
pIter->pRbuUpdate = 0;
pIter->pTmpInsert = 0;
pIter->nCol = 0;
+ pIter->nIdxCol = 0;
+ pIter->aIdxCol = 0;
+ pIter->zIdxSql = 0;
}
/*
@@ -190436,8 +191546,8 @@ static void rbuTargetNameFunc(
zIn = (const char*)sqlite3_value_text(argv[0]);
if( zIn ){
if( rbuIsVacuum(p) ){
- assert( argc==2 );
- if( 0==sqlite3_value_int(argv[1]) ){
+ assert( argc==2 || argc==1 );
+ if( argc==1 || 0==sqlite3_value_int(argv[1]) ){
sqlite3_result_text(pCtx, zIn, -1, SQLITE_STATIC);
}
}else{
@@ -190595,14 +191705,15 @@ static void rbuAllocateIterArrays(sqlite3rbu *p, RbuObjIter *pIter, int nCol){
static char *rbuStrndup(const char *zStr, int *pRc){
char *zRet = 0;
- assert( *pRc==SQLITE_OK );
- if( zStr ){
- size_t nCopy = strlen(zStr) + 1;
- zRet = (char*)sqlite3_malloc64(nCopy);
- if( zRet ){
- memcpy(zRet, zStr, nCopy);
- }else{
- *pRc = SQLITE_NOMEM;
+ if( *pRc==SQLITE_OK ){
+ if( zStr ){
+ size_t nCopy = strlen(zStr) + 1;
+ zRet = (char*)sqlite3_malloc64(nCopy);
+ if( zRet ){
+ memcpy(zRet, zStr, nCopy);
+ }else{
+ *pRc = SQLITE_NOMEM;
+ }
}
}
@@ -190774,6 +191885,9 @@ static void rbuObjIterCacheIndexedCols(sqlite3rbu *p, RbuObjIter *pIter){
while( p->rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pXInfo) ){
int iCid = sqlite3_column_int(pXInfo, 1);
if( iCid>=0 ) pIter->abIndexed[iCid] = 1;
+ if( iCid==-2 ){
+ memset(pIter->abIndexed, 0x01, sizeof(u8)*pIter->nTblCol);
+ }
}
rbuFinalize(p, pXInfo);
bIndex = 1;
@@ -191185,29 +192299,37 @@ static char *rbuObjIterGetIndexCols(
int iCid = sqlite3_column_int(pXInfo, 1);
int bDesc = sqlite3_column_int(pXInfo, 3);
const char *zCollate = (const char*)sqlite3_column_text(pXInfo, 4);
- const char *zCol;
+ const char *zCol = 0;
const char *zType;
- if( iCid<0 ){
- /* An integer primary key. If the table has an explicit IPK, use
- ** its name. Otherwise, use "rbu_rowid". */
- if( pIter->eType==RBU_PK_IPK ){
- int i;
- for(i=0; pIter->abTblPk[i]==0; i++);
- assert( i<pIter->nTblCol );
- zCol = pIter->azTblCol[i];
- }else if( rbuIsVacuum(p) ){
- zCol = "_rowid_";
+ if( iCid==-2 ){
+ int iSeq = sqlite3_column_int(pXInfo, 0);
+ zRet = sqlite3_mprintf("%z%s(%.*s) COLLATE %Q", zRet, zCom,
+ pIter->aIdxCol[iSeq].nSpan, pIter->aIdxCol[iSeq].zSpan, zCollate
+ );
+ zType = "";
+ }else {
+ if( iCid<0 ){
+ /* An integer primary key. If the table has an explicit IPK, use
+ ** its name. Otherwise, use "rbu_rowid". */
+ if( pIter->eType==RBU_PK_IPK ){
+ int i;
+ for(i=0; pIter->abTblPk[i]==0; i++);
+ assert( i<pIter->nTblCol );
+ zCol = pIter->azTblCol[i];
+ }else if( rbuIsVacuum(p) ){
+ zCol = "_rowid_";
+ }else{
+ zCol = "rbu_rowid";
+ }
+ zType = "INTEGER";
}else{
- zCol = "rbu_rowid";
+ zCol = pIter->azTblCol[iCid];
+ zType = pIter->azTblType[iCid];
}
- zType = "INTEGER";
- }else{
- zCol = pIter->azTblCol[iCid];
- zType = pIter->azTblType[iCid];
+ zRet = sqlite3_mprintf("%z%s\"%w\" COLLATE %Q", zRet, zCom,zCol,zCollate);
}
- zRet = sqlite3_mprintf("%z%s\"%w\" COLLATE %Q", zRet, zCom, zCol, zCollate);
if( pIter->bUnique==0 || sqlite3_column_int(pXInfo, 5) ){
const char *zOrder = (bDesc ? " DESC" : "");
zImpPK = sqlite3_mprintf("%z%s\"rbu_imp_%d%w\"%s",
@@ -191687,6 +192809,8 @@ static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){
int rc = p->rc;
char *zRet = 0;
+ assert( pIter->zIdxSql==0 && pIter->nIdxCol==0 && pIter->aIdxCol==0 );
+
if( rc==SQLITE_OK ){
rc = prepareAndCollectError(p->dbMain, &pStmt, &p->zErrmsg,
"SELECT trim(sql) FROM sqlite_master WHERE type='index' AND name=?"
@@ -191696,21 +192820,50 @@ static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){
int rc2;
rc = sqlite3_bind_text(pStmt, 1, pIter->zIdx, -1, SQLITE_STATIC);
if( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(pStmt) ){
- const char *zSql = (const char*)sqlite3_column_text(pStmt, 0);
+ char *zSql = (char*)sqlite3_column_text(pStmt, 0);
+ if( zSql ){
+ pIter->zIdxSql = zSql = rbuStrndup(zSql, &rc);
+ }
if( zSql ){
int nParen = 0; /* Number of open parenthesis */
int i;
+ int iIdxCol = 0;
+ int nIdxAlloc = 0;
for(i=0; zSql[i]; i++){
char c = zSql[i];
+
+ /* If necessary, grow the pIter->aIdxCol[] array */
+ if( iIdxCol==nIdxAlloc ){
+ RbuSpan *aIdxCol = (RbuSpan*)sqlite3_realloc(
+ pIter->aIdxCol, (nIdxAlloc+16)*sizeof(RbuSpan)
+ );
+ if( aIdxCol==0 ){
+ rc = SQLITE_NOMEM;
+ break;
+ }
+ pIter->aIdxCol = aIdxCol;
+ nIdxAlloc += 16;
+ }
+
if( c=='(' ){
+ if( nParen==0 ){
+ assert( iIdxCol==0 );
+ pIter->aIdxCol[0].zSpan = &zSql[i+1];
+ }
nParen++;
}
else if( c==')' ){
nParen--;
if( nParen==0 ){
+ int nSpan = &zSql[i] - pIter->aIdxCol[iIdxCol].zSpan;
+ pIter->aIdxCol[iIdxCol++].nSpan = nSpan;
i++;
break;
}
+ }else if( c==',' && nParen==1 ){
+ int nSpan = &zSql[i] - pIter->aIdxCol[iIdxCol].zSpan;
+ pIter->aIdxCol[iIdxCol++].nSpan = nSpan;
+ pIter->aIdxCol[iIdxCol].zSpan = &zSql[i+1];
}else if( c=='"' || c=='\'' || c=='`' ){
for(i++; 1; i++){
if( zSql[i]==c ){
@@ -191722,11 +192875,19 @@ static char *rbuObjIterGetIndexWhere(sqlite3rbu *p, RbuObjIter *pIter){
for(i++; 1; i++){
if( zSql[i]==']' ) break;
}
+ }else if( c=='-' && zSql[i+1]=='-' ){
+ for(i=i+2; zSql[i] && zSql[i]!='\n'; i++);
+ if( zSql[i]=='\0' ) break;
+ }else if( c=='/' && zSql[i+1]=='*' ){
+ for(i=i+2; zSql[i] && (zSql[i]!='*' || zSql[i+1]!='/'); i++);
+ if( zSql[i]=='\0' ) break;
+ i++;
}
}
if( zSql[i] ){
zRet = rbuStrndup(&zSql[i], &rc);
}
+ pIter->nIdxCol = iIdxCol;
}
}
@@ -191771,11 +192932,11 @@ static int rbuObjIterPrepareAll(
int nBind = 0;
assert( pIter->eType!=RBU_PK_VTAB );
+ zPart = rbuObjIterGetIndexWhere(p, pIter);
zCollist = rbuObjIterGetIndexCols(
p, pIter, &zImposterCols, &zImposterPK, &zWhere, &nBind
);
zBind = rbuObjIterGetBindlist(p, nBind);
- zPart = rbuObjIterGetIndexWhere(p, pIter);
/* Create the imposter table used to write to this index. */
sqlite3_test_control(SQLITE_TESTCTRL_IMPOSTER, p->dbMain, "main", 0, 1);
@@ -193301,10 +194462,11 @@ static void rbuIndexCntFunc(
sqlite3_stmt *pStmt = 0;
char *zErrmsg = 0;
int rc;
+ sqlite3 *db = (rbuIsVacuum(p) ? p->dbRbu : p->dbMain);
assert( nVal==1 );
- rc = prepareFreeAndCollectError(p->dbMain, &pStmt, &zErrmsg,
+ rc = prepareFreeAndCollectError(db, &pStmt, &zErrmsg,
sqlite3_mprintf("SELECT count(*) FROM sqlite_master "
"WHERE type='index' AND tbl_name = %Q", sqlite3_value_text(apVal[0]))
);
@@ -193319,7 +194481,7 @@ static void rbuIndexCntFunc(
if( rc==SQLITE_OK ){
sqlite3_result_int(pCtx, nIndex);
}else{
- sqlite3_result_error(pCtx, sqlite3_errmsg(p->dbMain), -1);
+ sqlite3_result_error(pCtx, sqlite3_errmsg(db), -1);
}
}
@@ -197762,7 +198924,7 @@ static int sessionBufferGrow(SessionBuffer *p, size_t nByte, int *pRc){
i64 nNew = p->nAlloc ? p->nAlloc : 128;
do {
nNew = nNew*2;
- }while( (nNew-p->nBuf)<nByte );
+ }while( (size_t)(nNew-p->nBuf)<nByte );
aNew = (u8 *)sqlite3_realloc64(p->aBuf, nNew);
if( 0==aNew ){
@@ -202163,6 +203325,7 @@ struct Fts5Config {
char *zContentExprlist;
Fts5Tokenizer *pTok;
fts5_tokenizer *pTokApi;
+ int bLock; /* True when table is preparing statement */
/* Values loaded from the %_config table */
int iCookie; /* Incremented when %_config is modified */
@@ -202679,6 +203842,7 @@ static int sqlite3Fts5ExprEof(Fts5Expr*);
static i64 sqlite3Fts5ExprRowid(Fts5Expr*);
static void sqlite3Fts5ExprFree(Fts5Expr*);
+static int sqlite3Fts5ExprAnd(Fts5Expr **pp1, Fts5Expr *p2);
/* Called during startup to register a UDF with SQLite */
static int sqlite3Fts5ExprInit(Fts5Global*, sqlite3*);
@@ -203530,15 +204694,18 @@ static fts5YYACTIONTYPE fts5yy_find_shift_action(
do{
i = fts5yy_shift_ofst[stateno];
assert( i>=0 );
- /* assert( i+fts5YYNFTS5TOKEN<=(int)fts5YY_NLOOKAHEAD ); */
+ assert( i<=fts5YY_ACTTAB_COUNT );
+ assert( i+fts5YYNFTS5TOKEN<=(int)fts5YY_NLOOKAHEAD );
assert( iLookAhead!=fts5YYNOCODE );
assert( iLookAhead < fts5YYNFTS5TOKEN );
i += iLookAhead;
- if( i>=fts5YY_NLOOKAHEAD || fts5yy_lookahead[i]!=iLookAhead ){
+ assert( i<(int)fts5YY_NLOOKAHEAD );
+ if( fts5yy_lookahead[i]!=iLookAhead ){
#ifdef fts5YYFALLBACK
fts5YYCODETYPE iFallback; /* Fallback token */
- if( iLookAhead<sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0])
- && (iFallback = fts5yyFallback[iLookAhead])!=0 ){
+ assert( iLookAhead<sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0]) );
+ iFallback = fts5yyFallback[iLookAhead];
+ if( iFallback!=0 ){
#ifndef NDEBUG
if( fts5yyTraceFILE ){
fprintf(fts5yyTraceFILE, "%sFALLBACK %s => %s\n",
@@ -203553,16 +204720,8 @@ static fts5YYACTIONTYPE fts5yy_find_shift_action(
#ifdef fts5YYWILDCARD
{
int j = i - iLookAhead + fts5YYWILDCARD;
- if(
-#if fts5YY_SHIFT_MIN+fts5YYWILDCARD<0
- j>=0 &&
-#endif
-#if fts5YY_SHIFT_MAX+fts5YYWILDCARD>=fts5YY_ACTTAB_COUNT
- j<fts5YY_ACTTAB_COUNT &&
-#endif
- j<(int)(sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0])) &&
- fts5yy_lookahead[j]==fts5YYWILDCARD && iLookAhead>0
- ){
+ assert( j<(int)(sizeof(fts5yy_lookahead)/sizeof(fts5yy_lookahead[0])) );
+ if( fts5yy_lookahead[j]==fts5YYWILDCARD && iLookAhead>0 ){
#ifndef NDEBUG
if( fts5yyTraceFILE ){
fprintf(fts5yyTraceFILE, "%sWILDCARD %s => %s\n",
@@ -203576,6 +204735,7 @@ static fts5YYACTIONTYPE fts5yy_find_shift_action(
#endif /* fts5YYWILDCARD */
return fts5yy_default[stateno];
}else{
+ assert( i>=0 && i<sizeof(fts5yy_action)/sizeof(fts5yy_action[0]) );
return fts5yy_action[i];
}
}while(1);
@@ -204276,9 +205436,8 @@ static void sqlite3Fts5Parser(
*/
static int sqlite3Fts5ParserFallback(int iToken){
#ifdef fts5YYFALLBACK
- if( iToken<(int)(sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0])) ){
- return fts5yyFallback[iToken];
- }
+ assert( iToken<(int)(sizeof(fts5yyFallback)/sizeof(fts5yyFallback[0])) );
+ return fts5yyFallback[iToken];
#else
(void)iToken;
#endif
@@ -206091,7 +207250,7 @@ static int sqlite3Fts5ConfigDeclareVtab(Fts5Config *pConfig){
rc = sqlite3_declare_vtab(pConfig->db, zSql);
sqlite3_free(zSql);
}
-
+
return rc;
}
@@ -206679,6 +207838,42 @@ static void sqlite3Fts5ExprFree(Fts5Expr *p){
}
}
+static int sqlite3Fts5ExprAnd(Fts5Expr **pp1, Fts5Expr *p2){
+ Fts5Parse sParse;
+ memset(&sParse, 0, sizeof(sParse));
+
+ if( *pp1 ){
+ Fts5Expr *p1 = *pp1;
+ int nPhrase = p1->nPhrase + p2->nPhrase;
+
+ p1->pRoot = sqlite3Fts5ParseNode(&sParse, FTS5_AND, p1->pRoot, p2->pRoot,0);
+ p2->pRoot = 0;
+
+ if( sParse.rc==SQLITE_OK ){
+ Fts5ExprPhrase **ap = (Fts5ExprPhrase**)sqlite3_realloc(
+ p1->apExprPhrase, nPhrase * sizeof(Fts5ExprPhrase*)
+ );
+ if( ap==0 ){
+ sParse.rc = SQLITE_NOMEM;
+ }else{
+ int i;
+ memmove(&ap[p2->nPhrase], ap, p1->nPhrase*sizeof(Fts5ExprPhrase*));
+ for(i=0; i<p2->nPhrase; i++){
+ ap[i] = p2->apExprPhrase[i];
+ }
+ p1->nPhrase = nPhrase;
+ p1->apExprPhrase = ap;
+ }
+ }
+ sqlite3_free(p2->apExprPhrase);
+ sqlite3_free(p2);
+ }else{
+ *pp1 = p2;
+ }
+
+ return sParse.rc;
+}
+
/*
** Argument pTerm must be a synonym iterator. Return the current rowid
** that it points to.
@@ -210475,6 +211670,7 @@ static Fts5Data *fts5DataRead(Fts5Index *p, i64 iRowid){
}else{
/* TODO1: Fix this */
pRet->p[nByte] = 0x00;
+ pRet->p[nByte+1] = 0x00;
pRet->szLeaf = fts5GetU16(&pRet->p[2]);
}
}
@@ -210497,7 +211693,7 @@ static void fts5DataRelease(Fts5Data *pData){
static Fts5Data *fts5LeafRead(Fts5Index *p, i64 iRowid){
Fts5Data *pRet = fts5DataRead(p, iRowid);
if( pRet ){
- if( pRet->szLeaf>pRet->nn ){
+ if( pRet->nn<4 || pRet->szLeaf>pRet->nn ){
p->rc = FTS5_CORRUPT;
fts5DataRelease(pRet);
pRet = 0;
@@ -214781,9 +215977,12 @@ static void fts5MergePrefixLists(
Fts5PoslistWriter writer;
memset(&writer, 0, sizeof(writer));
+ /* See the earlier comment in this function for an explanation of why
+ ** corrupt input position lists might cause the output to consume
+ ** at most 20 bytes of unexpected space. */
fts5MergeAppendDocid(&out, iLastRowid, i2.iRowid);
fts5BufferZero(&tmp);
- sqlite3Fts5BufferSize(&p->rc, &tmp, i1.nPoslist + i2.nPoslist);
+ sqlite3Fts5BufferSize(&p->rc, &tmp, i1.nPoslist + i2.nPoslist + 10 + 10);
if( p->rc ) break;
sqlite3Fts5PoslistNext64(a1, i1.nPoslist, &iOff1, &iPos1);
@@ -214831,6 +216030,12 @@ static void fts5MergePrefixLists(
}
/* WRITEPOSLISTSIZE */
+ assert_nc( tmp.n<=i1.nPoslist+i2.nPoslist );
+ assert( tmp.n<=i1.nPoslist+i2.nPoslist+10+10 );
+ if( tmp.n>i1.nPoslist+i2.nPoslist ){
+ if( p->rc==SQLITE_OK ) p->rc = FTS5_CORRUPT;
+ break;
+ }
fts5BufferSafeAppendVarint(&out, tmp.n * 2);
fts5BufferSafeAppendBlob(&out, tmp.p, tmp.n);
fts5DoclistIterNext(&i1);
@@ -216832,17 +218037,39 @@ static void fts5SetUniqueFlag(sqlite3_index_info *pIdxInfo){
** Implementation of the xBestIndex method for FTS5 tables. Within the
** WHERE constraint, it searches for the following:
**
-** 1. A MATCH constraint against the special column.
+** 1. A MATCH constraint against the table column.
** 2. A MATCH constraint against the "rank" column.
-** 3. An == constraint against the rowid column.
-** 4. A < or <= constraint against the rowid column.
-** 5. A > or >= constraint against the rowid column.
+** 3. A MATCH constraint against some other column.
+** 4. An == constraint against the rowid column.
+** 5. A < or <= constraint against the rowid column.
+** 6. A > or >= constraint against the rowid column.
**
-** Within the ORDER BY, either:
+** Within the ORDER BY, the following are supported:
**
** 5. ORDER BY rank [ASC|DESC]
** 6. ORDER BY rowid [ASC|DESC]
**
+** Information for the xFilter call is passed via both the idxNum and
+** idxStr variables. Specifically, idxNum is a bitmask of the following
+** flags used to encode the ORDER BY clause:
+**
+** FTS5_BI_ORDER_RANK
+** FTS5_BI_ORDER_ROWID
+** FTS5_BI_ORDER_DESC
+**
+** idxStr is used to encode data from the WHERE clause. For each argument
+** passed to the xFilter method, the following is appended to idxStr:
+**
+** Match against table column: "m"
+** Match against rank column: "r"
+** Match against other column: "<column-number>"
+** Equality constraint against the rowid: "="
+** A < or <= against the rowid: "<"
+** A > or >= against the rowid: ">"
+**
+** This function ensures that there is at most one "r" or "=". And that if
+** there exists an "=" then there is no "<" or ">".
+**
** Costs are assigned as follows:
**
** a) If an unusable MATCH operator is present in the WHERE clause, the
@@ -216870,32 +218097,18 @@ static int fts5BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
Fts5Config *pConfig = pTab->pConfig;
const int nCol = pConfig->nCol;
int idxFlags = 0; /* Parameter passed through to xFilter() */
- int bHasMatch;
- int iNext;
int i;
- struct Constraint {
- int op; /* Mask against sqlite3_index_constraint.op */
- int fts5op; /* FTS5 mask for idxFlags */
- int iCol; /* 0==rowid, 1==tbl, 2==rank */
- int omit; /* True to omit this if found */
- int iConsIndex; /* Index in pInfo->aConstraint[] */
- } aConstraint[] = {
- {SQLITE_INDEX_CONSTRAINT_MATCH|SQLITE_INDEX_CONSTRAINT_EQ,
- FTS5_BI_MATCH, 1, 1, -1},
- {SQLITE_INDEX_CONSTRAINT_MATCH|SQLITE_INDEX_CONSTRAINT_EQ,
- FTS5_BI_RANK, 2, 1, -1},
- {SQLITE_INDEX_CONSTRAINT_EQ, FTS5_BI_ROWID_EQ, 0, 0, -1},
- {SQLITE_INDEX_CONSTRAINT_LT|SQLITE_INDEX_CONSTRAINT_LE,
- FTS5_BI_ROWID_LE, 0, 0, -1},
- {SQLITE_INDEX_CONSTRAINT_GT|SQLITE_INDEX_CONSTRAINT_GE,
- FTS5_BI_ROWID_GE, 0, 0, -1},
- };
+ char *idxStr;
+ int iIdxStr = 0;
+ int iCons = 0;
+
+ int bSeenEq = 0;
+ int bSeenGt = 0;
+ int bSeenLt = 0;
+ int bSeenMatch = 0;
+ int bSeenRank = 0;
- int aColMap[3];
- aColMap[0] = -1;
- aColMap[1] = nCol;
- aColMap[2] = nCol+1;
assert( SQLITE_INDEX_CONSTRAINT_EQ<SQLITE_INDEX_CONSTRAINT_MATCH );
assert( SQLITE_INDEX_CONSTRAINT_GT<SQLITE_INDEX_CONSTRAINT_MATCH );
@@ -216903,40 +218116,85 @@ static int fts5BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
assert( SQLITE_INDEX_CONSTRAINT_GE<SQLITE_INDEX_CONSTRAINT_MATCH );
assert( SQLITE_INDEX_CONSTRAINT_LE<SQLITE_INDEX_CONSTRAINT_MATCH );
- /* Set idxFlags flags for all WHERE clause terms that will be used. */
+ if( pConfig->bLock ){
+ pTab->base.zErrMsg = sqlite3_mprintf(
+ "recursively defined fts5 content table"
+ );
+ return SQLITE_ERROR;
+ }
+
+ idxStr = (char*)sqlite3_malloc(pInfo->nConstraint * 6 + 1);
+ if( idxStr==0 ) return SQLITE_NOMEM;
+ pInfo->idxStr = idxStr;
+ pInfo->needToFreeIdxStr = 1;
+
for(i=0; i<pInfo->nConstraint; i++){
struct sqlite3_index_constraint *p = &pInfo->aConstraint[i];
int iCol = p->iColumn;
-
- if( (p->op==SQLITE_INDEX_CONSTRAINT_MATCH && iCol>=0 && iCol<=nCol)
- || (p->op==SQLITE_INDEX_CONSTRAINT_EQ && iCol==nCol)
+ if( p->op==SQLITE_INDEX_CONSTRAINT_MATCH
+ || (p->op==SQLITE_INDEX_CONSTRAINT_EQ && iCol>=nCol)
){
/* A MATCH operator or equivalent */
- if( p->usable ){
- idxFlags = (idxFlags & 0xFFFF) | FTS5_BI_MATCH | (iCol << 16);
- aConstraint[0].iConsIndex = i;
- }else{
+ if( p->usable==0 || iCol<0 ){
/* As there exists an unusable MATCH constraint this is an
** unusable plan. Set a prohibitively high cost. */
pInfo->estimatedCost = 1e50;
+ assert( iIdxStr < pInfo->nConstraint*6 + 1 );
+ idxStr[iIdxStr] = 0;
return SQLITE_OK;
+ }else{
+ if( iCol==nCol+1 ){
+ if( bSeenRank ) continue;
+ idxStr[iIdxStr++] = 'r';
+ bSeenRank = 1;
+ }else{
+ bSeenMatch = 1;
+ idxStr[iIdxStr++] = 'm';
+ if( iCol<nCol ){
+ sqlite3_snprintf(6, &idxStr[iIdxStr], "%d", iCol);
+ idxStr += strlen(&idxStr[iIdxStr]);
+ assert( idxStr[iIdxStr]=='\0' );
+ }
+ }
+ pInfo->aConstraintUsage[i].argvIndex = ++iCons;
+ pInfo->aConstraintUsage[i].omit = 1;
}
- }else if( p->op<=SQLITE_INDEX_CONSTRAINT_MATCH ){
- int j;
- for(j=1; j<ArraySize(aConstraint); j++){
- struct Constraint *pC = &aConstraint[j];
- if( iCol==aColMap[pC->iCol] && (p->op & pC->op) && p->usable ){
- pC->iConsIndex = i;
- idxFlags |= pC->fts5op;
+ }
+ else if( p->usable && bSeenEq==0
+ && p->op==SQLITE_INDEX_CONSTRAINT_EQ && iCol<0
+ ){
+ idxStr[iIdxStr++] = '=';
+ bSeenEq = 1;
+ pInfo->aConstraintUsage[i].argvIndex = ++iCons;
+ }
+ }
+
+ if( bSeenEq==0 ){
+ for(i=0; i<pInfo->nConstraint; i++){
+ struct sqlite3_index_constraint *p = &pInfo->aConstraint[i];
+ if( p->iColumn<0 && p->usable ){
+ int op = p->op;
+ if( op==SQLITE_INDEX_CONSTRAINT_LT || op==SQLITE_INDEX_CONSTRAINT_LE ){
+ if( bSeenLt ) continue;
+ idxStr[iIdxStr++] = '<';
+ pInfo->aConstraintUsage[i].argvIndex = ++iCons;
+ bSeenLt = 1;
+ }else
+ if( op==SQLITE_INDEX_CONSTRAINT_GT || op==SQLITE_INDEX_CONSTRAINT_GE ){
+ if( bSeenGt ) continue;
+ idxStr[iIdxStr++] = '>';
+ pInfo->aConstraintUsage[i].argvIndex = ++iCons;
+ bSeenGt = 1;
}
}
}
}
+ idxStr[iIdxStr] = '\0';
/* Set idxFlags flags for the ORDER BY clause */
if( pInfo->nOrderBy==1 ){
int iSort = pInfo->aOrderBy[0].iColumn;
- if( iSort==(pConfig->nCol+1) && BitFlagTest(idxFlags, FTS5_BI_MATCH) ){
+ if( iSort==(pConfig->nCol+1) && bSeenMatch ){
idxFlags |= FTS5_BI_ORDER_RANK;
}else if( iSort==-1 ){
idxFlags |= FTS5_BI_ORDER_ROWID;
@@ -216950,26 +218208,15 @@ static int fts5BestIndexMethod(sqlite3_vtab *pVTab, sqlite3_index_info *pInfo){
}
/* Calculate the estimated cost based on the flags set in idxFlags. */
- bHasMatch = BitFlagTest(idxFlags, FTS5_BI_MATCH);
- if( BitFlagTest(idxFlags, FTS5_BI_ROWID_EQ) ){
- pInfo->estimatedCost = bHasMatch ? 100.0 : 10.0;
- if( bHasMatch==0 ) fts5SetUniqueFlag(pInfo);
- }else if( BitFlagAllTest(idxFlags, FTS5_BI_ROWID_LE|FTS5_BI_ROWID_GE) ){
- pInfo->estimatedCost = bHasMatch ? 500.0 : 250000.0;
- }else if( BitFlagTest(idxFlags, FTS5_BI_ROWID_LE|FTS5_BI_ROWID_GE) ){
- pInfo->estimatedCost = bHasMatch ? 750.0 : 750000.0;
+ if( bSeenEq ){
+ pInfo->estimatedCost = bSeenMatch ? 100.0 : 10.0;
+ if( bSeenMatch==0 ) fts5SetUniqueFlag(pInfo);
+ }else if( bSeenLt && bSeenGt ){
+ pInfo->estimatedCost = bSeenMatch ? 500.0 : 250000.0;
+ }else if( bSeenLt || bSeenGt ){
+ pInfo->estimatedCost = bSeenMatch ? 750.0 : 750000.0;
}else{
- pInfo->estimatedCost = bHasMatch ? 1000.0 : 1000000.0;
- }
-
- /* Assign argvIndex values to each constraint in use. */
- iNext = 1;
- for(i=0; i<ArraySize(aConstraint); i++){
- struct Constraint *pC = &aConstraint[i];
- if( pC->iConsIndex>=0 ){
- pInfo->aConstraintUsage[pC->iConsIndex].argvIndex = iNext++;
- pInfo->aConstraintUsage[pC->iConsIndex].omit = (unsigned char)pC->omit;
- }
+ pInfo->estimatedCost = bSeenMatch ? 1000.0 : 1000000.0;
}
pInfo->idxNum = idxFlags;
@@ -217292,7 +218539,7 @@ static int fts5CursorFirstSorted(
**
** If SQLite a built-in statement cache, this wouldn't be a problem. */
rc = fts5PrepareStatement(&pSorter->pStmt, pConfig,
- "SELECT rowid, rank FROM %Q.%Q ORDER BY %s(%s%s%s) %s",
+ "SELECT rowid, rank FROM %Q.%Q ORDER BY %s(\"%w\"%s%s) %s",
pConfig->zDb, pConfig->zName, zRank, pConfig->zName,
(zRankArgs ? ", " : ""),
(zRankArgs ? zRankArgs : ""),
@@ -217348,10 +218595,10 @@ static int fts5SpecialMatch(
assert( pTab->p.base.zErrMsg==0 );
pCsr->ePlan = FTS5_PLAN_SPECIAL;
- if( 0==sqlite3_strnicmp("reads", z, n) ){
+ if( n==5 && 0==sqlite3_strnicmp("reads", z, n) ){
pCsr->iSpecial = sqlite3Fts5IndexReads(pTab->p.pIndex);
}
- else if( 0==sqlite3_strnicmp("id", z, n) ){
+ else if( n==2 && 0==sqlite3_strnicmp("id", z, n) ){
pCsr->iSpecial = pCsr->iCsrId;
}
else{
@@ -217492,7 +218739,7 @@ static i64 fts5GetRowidLimit(sqlite3_value *pVal, i64 iDefault){
static int fts5FilterMethod(
sqlite3_vtab_cursor *pCursor, /* The cursor used for this query */
int idxNum, /* Strategy index */
- const char *zUnused, /* Unused */
+ const char *idxStr, /* Unused */
int nVal, /* Number of elements in apVal */
sqlite3_value **apVal /* Arguments for the indexing scheme */
){
@@ -217500,19 +218747,17 @@ static int fts5FilterMethod(
Fts5Config *pConfig = pTab->p.pConfig;
Fts5Cursor *pCsr = (Fts5Cursor*)pCursor;
int rc = SQLITE_OK; /* Error code */
- int iVal = 0; /* Counter for apVal[] */
int bDesc; /* True if ORDER BY [rank|rowid] DESC */
int bOrderByRank; /* True if ORDER BY rank */
- sqlite3_value *pMatch = 0; /* <tbl> MATCH ? expression (or NULL) */
sqlite3_value *pRank = 0; /* rank MATCH ? expression (or NULL) */
sqlite3_value *pRowidEq = 0; /* rowid = ? expression (or NULL) */
sqlite3_value *pRowidLe = 0; /* rowid <= ? expression (or NULL) */
sqlite3_value *pRowidGe = 0; /* rowid >= ? expression (or NULL) */
int iCol; /* Column on LHS of MATCH operator */
char **pzErrmsg = pConfig->pzErrmsg;
-
- UNUSED_PARAM(zUnused);
- UNUSED_PARAM(nVal);
+ int i;
+ int iIdxStr = 0;
+ Fts5Expr *pExpr = 0;
if( pCsr->ePlan ){
fts5FreeCursorComponents(pCsr);
@@ -217525,23 +218770,60 @@ static int fts5FilterMethod(
assert( pCsr->pRank==0 );
assert( pCsr->zRank==0 );
assert( pCsr->zRankArgs==0 );
+ assert( pTab->pSortCsr==0 || nVal==0 );
assert( pzErrmsg==0 || pzErrmsg==&pTab->p.base.zErrMsg );
pConfig->pzErrmsg = &pTab->p.base.zErrMsg;
- /* Decode the arguments passed through to this function.
- **
- ** Note: The following set of if(...) statements must be in the same
- ** order as the corresponding entries in the struct at the top of
- ** fts5BestIndexMethod(). */
- if( BitFlagTest(idxNum, FTS5_BI_MATCH) ) pMatch = apVal[iVal++];
- if( BitFlagTest(idxNum, FTS5_BI_RANK) ) pRank = apVal[iVal++];
- if( BitFlagTest(idxNum, FTS5_BI_ROWID_EQ) ) pRowidEq = apVal[iVal++];
- if( BitFlagTest(idxNum, FTS5_BI_ROWID_LE) ) pRowidLe = apVal[iVal++];
- if( BitFlagTest(idxNum, FTS5_BI_ROWID_GE) ) pRowidGe = apVal[iVal++];
- iCol = (idxNum>>16);
- assert( iCol>=0 && iCol<=pConfig->nCol );
- assert( iVal==nVal );
+ /* Decode the arguments passed through to this function. */
+ for(i=0; i<nVal; i++){
+ switch( idxStr[iIdxStr++] ){
+ case 'r':
+ pRank = apVal[i];
+ break;
+ case 'm': {
+ const char *zText = (const char*)sqlite3_value_text(apVal[i]);
+ if( zText==0 ) zText = "";
+
+ if( idxStr[iIdxStr]>='0' && idxStr[iIdxStr]<='9' ){
+ iCol = 0;
+ do{
+ iCol = iCol*10 + (idxStr[iIdxStr]-'0');
+ iIdxStr++;
+ }while( idxStr[iIdxStr]>='0' && idxStr[iIdxStr]<='9' );
+ }else{
+ iCol = pConfig->nCol;
+ }
+
+ if( zText[0]=='*' ){
+ /* The user has issued a query of the form "MATCH '*...'". This
+ ** indicates that the MATCH expression is not a full text query,
+ ** but a request for an internal parameter. */
+ rc = fts5SpecialMatch(pTab, pCsr, &zText[1]);
+ goto filter_out;
+ }else{
+ char **pzErr = &pTab->p.base.zErrMsg;
+ rc = sqlite3Fts5ExprNew(pConfig, iCol, zText, &pExpr, pzErr);
+ if( rc==SQLITE_OK ){
+ rc = sqlite3Fts5ExprAnd(&pCsr->pExpr, pExpr);
+ pExpr = 0;
+ }
+ if( rc!=SQLITE_OK ) goto filter_out;
+ }
+
+ break;
+ }
+ case '=':
+ pRowidEq = apVal[i];
+ break;
+ case '<':
+ pRowidLe = apVal[i];
+ break;
+ default: assert( idxStr[iIdxStr-1]=='>' );
+ pRowidGe = apVal[i];
+ break;
+ }
+ }
bOrderByRank = ((idxNum & FTS5_BI_ORDER_RANK) ? 1 : 0);
pCsr->bDesc = bDesc = ((idxNum & FTS5_BI_ORDER_DESC) ? 1 : 0);
@@ -217568,7 +218850,7 @@ static int fts5FilterMethod(
** (pCursor) is used to execute the query issued by function
** fts5CursorFirstSorted() above. */
assert( pRowidEq==0 && pRowidLe==0 && pRowidGe==0 && pRank==0 );
- assert( nVal==0 && pMatch==0 && bOrderByRank==0 && bDesc==0 );
+ assert( nVal==0 && bOrderByRank==0 && bDesc==0 );
assert( pCsr->iLastRowid==LARGEST_INT64 );
assert( pCsr->iFirstRowid==SMALLEST_INT64 );
if( pTab->pSortCsr->bDesc ){
@@ -217581,29 +218863,15 @@ static int fts5FilterMethod(
pCsr->ePlan = FTS5_PLAN_SOURCE;
pCsr->pExpr = pTab->pSortCsr->pExpr;
rc = fts5CursorFirst(pTab, pCsr, bDesc);
- }else if( pMatch ){
- const char *zExpr = (const char*)sqlite3_value_text(apVal[0]);
- if( zExpr==0 ) zExpr = "";
-
+ }else if( pCsr->pExpr ){
rc = fts5CursorParseRank(pConfig, pCsr, pRank);
if( rc==SQLITE_OK ){
- if( zExpr[0]=='*' ){
- /* The user has issued a query of the form "MATCH '*...'". This
- ** indicates that the MATCH expression is not a full text query,
- ** but a request for an internal parameter. */
- rc = fts5SpecialMatch(pTab, pCsr, &zExpr[1]);
+ if( bOrderByRank ){
+ pCsr->ePlan = FTS5_PLAN_SORTED_MATCH;
+ rc = fts5CursorFirstSorted(pTab, pCsr, bDesc);
}else{
- char **pzErr = &pTab->p.base.zErrMsg;
- rc = sqlite3Fts5ExprNew(pConfig, iCol, zExpr, &pCsr->pExpr, pzErr);
- if( rc==SQLITE_OK ){
- if( bOrderByRank ){
- pCsr->ePlan = FTS5_PLAN_SORTED_MATCH;
- rc = fts5CursorFirstSorted(pTab, pCsr, bDesc);
- }else{
- pCsr->ePlan = FTS5_PLAN_MATCH;
- rc = fts5CursorFirst(pTab, pCsr, bDesc);
- }
- }
+ pCsr->ePlan = FTS5_PLAN_MATCH;
+ rc = fts5CursorFirst(pTab, pCsr, bDesc);
}
}
}else if( pConfig->zContent==0 ){
@@ -217620,7 +218888,7 @@ static int fts5FilterMethod(
);
if( rc==SQLITE_OK ){
if( pCsr->ePlan==FTS5_PLAN_ROWID ){
- sqlite3_bind_value(pCsr->pStmt, 1, apVal[0]);
+ sqlite3_bind_value(pCsr->pStmt, 1, pRowidEq);
}else{
sqlite3_bind_int64(pCsr->pStmt, 1, pCsr->iFirstRowid);
sqlite3_bind_int64(pCsr->pStmt, 2, pCsr->iLastRowid);
@@ -217629,6 +218897,8 @@ static int fts5FilterMethod(
}
}
+ filter_out:
+ sqlite3Fts5ExprFree(pExpr);
pConfig->pzErrmsg = pzErrmsg;
return rc;
}
@@ -218599,7 +219869,7 @@ static void fts5ApiCallback(
iCsrId = sqlite3_value_int64(argv[0]);
pCsr = fts5CursorFromCsrid(pAux->pGlobal, iCsrId);
- if( pCsr==0 ){
+ if( pCsr==0 || pCsr->ePlan==0 ){
char *zErr = sqlite3_mprintf("no such cursor: %lld", iCsrId);
sqlite3_result_error(context, zErr, -1);
sqlite3_free(zErr);
@@ -219015,7 +220285,7 @@ static void fts5SourceIdFunc(
){
assert( nArg==0 );
UNUSED_PARAM2(nArg, apUnused);
- sqlite3_result_text(pCtx, "fts5: 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6", -1, SQLITE_TRANSIENT);
+ sqlite3_result_text(pCtx, "fts5: 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b", -1, SQLITE_TRANSIENT);
}
/*
@@ -219287,7 +220557,9 @@ static int fts5StorageGetStmt(
}else{
int f = SQLITE_PREPARE_PERSISTENT;
if( eStmt>FTS5_STMT_LOOKUP ) f |= SQLITE_PREPARE_NO_VTAB;
+ p->pConfig->bLock++;
rc = sqlite3_prepare_v3(pC->db, zSql, -1, f, &p->aStmt[eStmt], 0);
+ p->pConfig->bLock--;
sqlite3_free(zSql);
if( rc!=SQLITE_OK && pzErrMsg ){
*pzErrMsg = sqlite3_mprintf("%s", sqlite3_errmsg(pC->db));
@@ -223781,9 +225053,9 @@ SQLITE_API int sqlite3_stmt_init(
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
/************** End of stmt.c ************************************************/
-#if __LINE__!=223781
+#if __LINE__!=225056
#undef SQLITE_SOURCE_ID
-#define SQLITE_SOURCE_ID "2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88alt2"
+#define SQLITE_SOURCE_ID "2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3dfalt2"
#endif
/* Return the source-id for this library */
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
diff --git a/src/3rdparty/sqlite/sqlite3.h b/src/3rdparty/sqlite/sqlite3.h
index a4bab0ad6b..37bfac5289 100644
--- a/src/3rdparty/sqlite/sqlite3.h
+++ b/src/3rdparty/sqlite/sqlite3.h
@@ -123,9 +123,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.29.0"
-#define SQLITE_VERSION_NUMBER 3029000
-#define SQLITE_SOURCE_ID "2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6"
+#define SQLITE_VERSION "3.30.1"
+#define SQLITE_VERSION_NUMBER 3030001
+#define SQLITE_SOURCE_ID "2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -2093,6 +2093,17 @@ struct sqlite3_mem_methods {
** following this call. The second parameter may be a NULL pointer, in
** which case the trigger setting is not reported back. </dd>
**
+** [[SQLITE_DBCONFIG_ENABLE_VIEW]]
+** <dt>SQLITE_DBCONFIG_ENABLE_VIEW</dt>
+** <dd> ^This option is used to enable or disable [CREATE VIEW | views].
+** There should be two additional arguments.
+** The first argument is an integer which is 0 to disable views,
+** positive to enable views or negative to leave the setting unchanged.
+** The second parameter is a pointer to an integer into which
+** is written 0 or 1 to indicate whether views are disabled or enabled
+** following this call. The second parameter may be a NULL pointer, in
+** which case the view setting is not reported back. </dd>
+**
** [[SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER]]
** <dt>SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER</dt>
** <dd> ^This option is used to enable or disable the
@@ -2265,7 +2276,8 @@ struct sqlite3_mem_methods {
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE 1012 /* int int* */
#define SQLITE_DBCONFIG_DQS_DML 1013 /* int int* */
#define SQLITE_DBCONFIG_DQS_DDL 1014 /* int int* */
-#define SQLITE_DBCONFIG_MAX 1014 /* Largest DBCONFIG */
+#define SQLITE_DBCONFIG_ENABLE_VIEW 1015 /* int int* */
+#define SQLITE_DBCONFIG_MAX 1015 /* Largest DBCONFIG */
/*
** CAPI3REF: Enable Or Disable Extended Result Codes
@@ -3814,7 +3826,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
** ^The specific value of WHERE-clause [parameter] might influence the
** choice of query plan if the parameter is the left-hand side of a [LIKE]
** or [GLOB] operator or if the parameter is compared to an indexed column
-** and the [SQLITE_ENABLE_STAT3] compile-time option is enabled.
+** and the [SQLITE_ENABLE_STAT4] compile-time option is enabled.
** </li>
** </ol>
**
@@ -4849,6 +4861,12 @@ SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
** perform additional optimizations on deterministic functions, so use
** of the [SQLITE_DETERMINISTIC] flag is recommended where possible.
**
+** ^The fourth parameter may also optionally include the [SQLITE_DIRECTONLY]
+** flag, which if present prevents the function from being invoked from
+** within VIEWs or TRIGGERs. For security reasons, the [SQLITE_DIRECTONLY]
+** flag is recommended for any application-defined SQL function that has
+** side-effects.
+**
** ^(The fifth parameter is an arbitrary pointer. The implementation of the
** function can gain access to this pointer using [sqlite3_user_data()].)^
**
@@ -4965,8 +4983,30 @@ SQLITE_API int sqlite3_create_window_function(
** [SQLITE_UTF8 | preferred text encoding] as the fourth argument
** to [sqlite3_create_function()], [sqlite3_create_function16()], or
** [sqlite3_create_function_v2()].
+**
+** The SQLITE_DETERMINISTIC flag means that the new function will always
+** maps the same inputs into the same output. The abs() function is
+** deterministic, for example, but randomblob() is not.
+**
+** The SQLITE_DIRECTONLY flag means that the function may only be invoked
+** from top-level SQL, and cannot be used in VIEWs or TRIGGERs. This is
+** a security feature which is recommended for all
+** [application-defined SQL functions] that have side-effects. This flag
+** prevents an attacker from adding triggers and views to a schema then
+** tricking a high-privilege application into causing unintended side-effects
+** while performing ordinary queries.
+**
+** The SQLITE_SUBTYPE flag indicates to SQLite that a function may call
+** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
+** Specifying this flag makes no difference for scalar or aggregate user
+** functions. However, if it is not specified for a user-defined window
+** function, then any sub-types belonging to arguments passed to the window
+** function may be discarded before the window function is called (i.e.
+** sqlite3_value_subtype() will always return 0).
*/
-#define SQLITE_DETERMINISTIC 0x800
+#define SQLITE_DETERMINISTIC 0x000000800
+#define SQLITE_DIRECTONLY 0x000080000
+#define SQLITE_SUBTYPE 0x000100000
/*
** CAPI3REF: Deprecated Functions
@@ -6612,6 +6652,12 @@ struct sqlite3_index_info {
** ^The sqlite3_create_module()
** interface is equivalent to sqlite3_create_module_v2() with a NULL
** destructor.
+**
+** ^If the third parameter (the pointer to the sqlite3_module object) is
+** NULL then no new module is create and any existing modules with the
+** same name are dropped.
+**
+** See also: [sqlite3_drop_modules()]
*/
SQLITE_API int sqlite3_create_module(
sqlite3 *db, /* SQLite connection to register module with */
@@ -6628,6 +6674,23 @@ SQLITE_API int sqlite3_create_module_v2(
);
/*
+** CAPI3REF: Remove Unnecessary Virtual Table Implementations
+** METHOD: sqlite3
+**
+** ^The sqlite3_drop_modules(D,L) interface removes all virtual
+** table modules from database connection D except those named on list L.
+** The L parameter must be either NULL or a pointer to an array of pointers
+** to strings where the array is terminated by a single NULL pointer.
+** ^If the L parameter is NULL, then all virtual table modules are removed.
+**
+** See also: [sqlite3_create_module()]
+*/
+SQLITE_API int sqlite3_drop_modules(
+ sqlite3 *db, /* Remove modules from this connection */
+ const char **azKeep /* Except, do not remove the ones named here */
+);
+
+/*
** CAPI3REF: Virtual Table Instance Object
** KEYWORDS: sqlite3_vtab
**
@@ -7335,7 +7398,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_FIRST 5
#define SQLITE_TESTCTRL_PRNG_SAVE 5
#define SQLITE_TESTCTRL_PRNG_RESTORE 6
-#define SQLITE_TESTCTRL_PRNG_RESET 7
+#define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
#define SQLITE_TESTCTRL_BITVEC_TEST 8
#define SQLITE_TESTCTRL_FAULT_INSTALL 9
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
@@ -7358,7 +7421,9 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_IMPOSTER 25
#define SQLITE_TESTCTRL_PARSER_COVERAGE 26
#define SQLITE_TESTCTRL_RESULT_INTREAL 27
-#define SQLITE_TESTCTRL_LAST 27 /* Largest TESTCTRL */
+#define SQLITE_TESTCTRL_PRNG_SEED 28
+#define SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS 29
+#define SQLITE_TESTCTRL_LAST 29 /* Largest TESTCTRL */
/*
** CAPI3REF: SQL Keyword Checking
diff --git a/src/corelib/Qt5AndroidSupport.cmake b/src/corelib/Qt5AndroidSupport.cmake
new file mode 100644
index 0000000000..5f24fb0e8c
--- /dev/null
+++ b/src/corelib/Qt5AndroidSupport.cmake
@@ -0,0 +1,197 @@
+if (NOT ${PROJECT_NAME}-MultiAbiBuild)
+
+ set(ANDROID_ABIS armeabi-v7a arm64-v8a x86 x86_64)
+
+ # Match Android's sysroots
+ set(ANDROID_SYSROOT_armeabi-v7a arm-linux-androideabi)
+ set(ANDROID_SYSROOT_arm64-v8a aarch64-linux-android)
+ set(ANDROID_SYSROOT_x86 i686-linux-android)
+ set(ANDROID_SYSROOT_x86_64 x86_64-linux-android)
+
+ foreach(abi IN LISTS ANDROID_ABIS)
+ set(abi_initial_value OFF)
+ if (abi STREQUAL ${ANDROID_ABI})
+ set(abi_initial_value ON)
+ endif()
+ find_library(Qt5Core_${abi}_Probe Qt5Core_${abi})
+ if (Qt5Core_${abi}_Probe)
+ option(ANDROID_BUILD_ABI_${abi} "Enable the build for Android ${abi}" ${abi_initial_value})
+ endif()
+ endforeach()
+
+ # Make sure to delete the "android-build" directory, which contains all the
+ # build artefacts, and also the androiddeployqt/gradle artefacts
+ set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ APPEND PROPERTY ADDITIONAL_CLEAN_FILES ${CMAKE_BINARY_DIR}/android-build)
+
+ if (CMAKE_VERSION VERSION_LESS 3.15)
+ message(STATUS "-----------------------------------------------------------------------------------------------------------")
+ message(STATUS "CMake version 3.15 is required to clean the <build_dir>/android-build when issuing the \"clean\" target.\n\n"
+ "For this CMake version please use the \"clean-android-build\" support target additionally to the \"clean\" target.")
+ message(STATUS "-----------------------------------------------------------------------------------------------------------")
+
+ add_custom_target(clean-android-build
+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/android-build
+ VERBATIM)
+ endif()
+
+ # Write the android_<project_name>_deployment_settings.json file
+ file(WRITE ${CMAKE_BINARY_DIR}/android_deployment_settings.json.in
+[=[{
+ "_description": "This file is created by CMake to be read by androiddeployqt and should not be modified by hand.",
+ "application-binary": "@QT_ANDROID_APPLICATION_BINARY@",
+ "architectures": {
+@QT_ANDROID_ARCHITECTURES@
+ },
+ @QT_ANDROID_DEPLOYMENT_DEPENDENCIES@
+ @QT_ANDROID_EXTRA_PLUGINS@
+ @QT_ANDROID_PACKAGE_SOURCE_DIR@
+ @QT_ANDROID_VERSION_CODE@
+ @QT_ANDROID_VERSION_NAME@
+ @QT_ANDROID_EXTRA_LIBS@
+ @QT_QML_IMPORT_PATH@
+ "ndk": "@ANDROID_NDK@",
+ "ndk-host": "@ANDROID_HOST_TAG@",
+ "qml-root-path": "@CMAKE_CURRENT_SOURCE_DIR@",
+ "qt": "@QT_DIR@",
+ "sdk": "@ANDROID_SDK@",
+ "stdcpp-path": "@ANDROID_TOOLCHAIN_ROOT@/sysroot/usr/lib/",
+ "tool-prefix": "llvm",
+ "toolchain-prefix": "llvm",
+ "useLLVM": true
+}]=])
+
+ if (NOT QT_ANDROID_APPLICATION_BINARY)
+ set(QT_ANDROID_APPLICATION_BINARY ${PROJECT_NAME})
+ endif()
+
+ if(NOT ANDROID_SDK)
+ get_filename_component(ANDROID_SDK ${ANDROID_NDK}/../ ABSOLUTE)
+ endif()
+
+ find_program(ANDROID_DEPLOY_QT androiddeployqt)
+ get_filename_component(QT_DIR ${ANDROID_DEPLOY_QT}/../../ ABSOLUTE)
+
+ unset(QT_ANDROID_ARCHITECTURES)
+ foreach(abi IN LISTS ANDROID_ABIS)
+ if (ANDROID_BUILD_ABI_${abi})
+ list(APPEND QT_ANDROID_ARCHITECTURES " \"${abi}\" : \"${ANDROID_SYSROOT_${abi}}\"")
+ endif()
+ endforeach()
+ string(REPLACE ";" ",\n" QT_ANDROID_ARCHITECTURES "${QT_ANDROID_ARCHITECTURES}")
+
+ macro(generate_json_variable_list var_list json_key)
+ if (${var_list})
+ set(QT_${var_list} "\"${json_key}\": \"")
+ string(REPLACE ";" "," joined_var_list "${${var_list}}")
+ string(APPEND QT_${var_list} "${joined_var_list}\",")
+ endif()
+ endmacro()
+
+ macro(generate_json_variable var json_key)
+ if (${var})
+ set(QT_${var} "\"${json_key}\": \"${${var}}\",")
+ endif()
+ endmacro()
+
+ generate_json_variable_list(ANDROID_DEPLOYMENT_DEPENDENCIES "deployment-dependencies")
+ generate_json_variable_list(ANDROID_EXTRA_PLUGINS "android-extra-plugins")
+ generate_json_variable(ANDROID_PACKAGE_SOURCE_DIR "android-package-source-directory")
+ generate_json_variable(ANDROID_VERSION_CODE "android-version-code")
+ generate_json_variable(ANDROID_VERSION_NAME "android-version-name")
+ generate_json_variable_list(ANDROID_EXTRA_LIBS "android-extra-libs")
+ generate_json_variable_list(QML_IMPORT_PATH "qml-import-paths")
+
+ configure_file(
+ "${CMAKE_BINARY_DIR}/android_deployment_settings.json.in"
+ "${CMAKE_BINARY_DIR}/android_deployment_settings.json" @ONLY)
+
+ # Create "apk" and "aab" targets
+ if (DEFINED ENV{JAVA_HOME})
+ set(JAVA_HOME $ENV{JAVA_HOME} CACHE INTERNAL "Saved JAVA_HOME variable")
+ endif()
+ if (JAVA_HOME)
+ set(android_deploy_qt_jdk "--jdk ${JAVA_HOME}")
+ endif()
+
+ if (ANDROID_SDK_PLATFORM)
+ set(android_deploy_qt_platform "--android-platform ${ANDROID_SDK_PLATFORM}")
+ endif()
+
+ add_custom_target(apk
+ COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
+ --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
+ --output "${CMAKE_BINARY_DIR}/android-build"
+ --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
+ ${android_deploy_qt_platform}
+ ${android_deploy_qt_jdk}
+ VERBATIM)
+
+ add_custom_target(aab
+ COMMAND ${CMAKE_COMMAND} -E env JAVA_HOME=${JAVA_HOME} ${ANDROID_DEPLOY_QT}
+ --input "${CMAKE_BINARY_DIR}/android_deployment_settings.json"
+ --output "${CMAKE_BINARY_DIR}/android-build"
+ --apk "${CMAKE_BINARY_DIR}/android-build/${PROJECT_NAME}.apk"
+ --aab
+ ${android_deploy_qt_platform}
+ ${android_deploy_qt_jdk}
+ VERBATIM)
+
+ include(ExternalProject)
+ macro (setup_library library_name android_abi)
+ # Use Qt Creator's 4.12 settings file if present
+ unset(QTC_SETTINGS_PARAMETER)
+ if (EXISTS ${CMAKE_BINARY_DIR}/qtcsettings.cmake)
+ set(QTC_SETTINGS_PARAMETER -C ${CMAKE_BINARY_DIR}/qtcsettings.cmake)
+ endif()
+
+ # Build all the given ABI as an external project
+ ExternalProject_Add(${library_name}-builder
+ SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}"
+ PREFIX MultiAbi
+ BUILD_ALWAYS YES
+ DOWNLOAD_COMMAND ""
+ INSTALL_COMMAND ""
+ UPDATE_COMMAND ""
+ PATCH_COMMAND ""
+ CMAKE_ARGS
+ ${QTC_SETTINGS_PARAMETER}
+ -D ANDROID_ABI=${android_abi}
+ -D CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}
+ -D CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
+ -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -D ANDROID_PLATFORM=${ANDROID_PLATFORM}
+ -D ANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}
+ -D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
+ -D CMAKE_FIND_ROOT_PATH_MODE_PROGRAM=${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM}
+ -D CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY}
+ -D CMAKE_FIND_ROOT_PATH_MODE_INCLUDE=${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}
+ -D CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}
+ -D CMAKE_SHARED_LIBRARY_SUFFIX_CXX=_${android_abi}.so
+ -D CMAKE_SHARED_MODULE_SUFFIX_CXX=_${android_abi}.so
+ -D CMAKE_SHARED_LIBRARY_SUFFIX_C=_${android_abi}.so
+ -D CMAKE_SHARED_MODULE_SUFFIX_C=_${android_abi}.so
+ -D CMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}/android-build/libs/${android_abi}
+ -D ${PROJECT_NAME}-MultiAbiBuild=ON
+ )
+ endmacro()
+
+ foreach(abi IN LISTS ANDROID_ABIS)
+ if (NOT abi STREQUAL ${ANDROID_ABI})
+ if (ANDROID_BUILD_ABI_${abi})
+ setup_library(${PROJECT_NAME}-${abi} ${abi} ${CMAKE_PREFIX_PATH})
+ endif()
+ else()
+ # For the default abi just use the regular cmake run, to have
+ # nice IDE integration and so on
+ set(CMAKE_SHARED_MODULE_SUFFIX_CXX "_${ANDROID_ABI}.so")
+ set(CMAKE_SHARED_LIBRARY_SUFFIX_CXX "_${ANDROID_ABI}.so")
+ set(CMAKE_SHARED_MODULE_SUFFIX_C "_${ANDROID_ABI}.so")
+ set(CMAKE_SHARED_LIBRARY_SUFFIX_C "_${ANDROID_ABI}.so")
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/android-build/libs/${ANDROID_ABI})
+ endif()
+ endforeach()
+else()
+ # unset the variable, just not to issue an unused variable warning
+ unset(${PROJECT_NAME}-MultiAbiBuild)
+endif()
diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in
index 6c6dcf39cd..21bf788c89 100644
--- a/src/corelib/Qt6CoreConfigExtras.cmake.in
+++ b/src/corelib/Qt6CoreConfigExtras.cmake.in
@@ -34,6 +34,8 @@ if (NOT QT_NO_CREATE_TARGETS)
set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)
endif()
+set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT")
+
# install layout information, following what qmake -query provides
get_filename_component(QT@PROJECT_VERSION_MAJOR@_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/../@QT_INVERSE_CONFIG_INSTALL_DIR@ ABSOLUTE)
set(QT@PROJECT_VERSION_MAJOR@_INSTALL_ARCHDATA ${QT@PROJECT_VERSION_MAJOR@_INSTALL_PREFIX}/@INSTALL_ARCHDATADIR@)
diff --git a/src/corelib/Qt6ModuleLocation.cmake.in b/src/corelib/Qt6ModuleLocation.cmake.in
index 5065ada56e..cf70f6bc0e 100644
--- a/src/corelib/Qt6ModuleLocation.cmake.in
+++ b/src/corelib/Qt6ModuleLocation.cmake.in
@@ -4,7 +4,7 @@ get_filename_component(_qt5_root_dir \"${CMAKE_CURRENT_LIST_DIR}/../../../..\" A
file(GLOB qtmodules ${_qt5_root_dir} "${_qt5_root_dir}/*")
foreach(qtmodule ${qtmodules})
if(IS_DIRECTORY ${qtmodule})
- list(APPEND _qt5_module_paths ${qtmodule})
+ list(APPEND _qt5_module_paths "${qtmodule}" "${qtmodule}/lib/cmake")
endif()
endforeach()
!!ELSE
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 29be83331f..33bf3d759c 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -821,6 +821,12 @@
],
"output": [ "publicFeature", "feature" ]
},
+ "shortcut": {
+ "label": "QShortcut",
+ "purpose": "Provides keyboard accelerators and shortcuts.",
+ "section": "Kernel",
+ "output": [ "publicFeature", "feature" ]
+ },
"systemsemaphore": {
"label": "QSystemSemaphore",
"purpose": "Provides a general counting system semaphore.",
@@ -1091,6 +1097,12 @@
Note that this is required for plugin loading. Qt GUI needs QPA plugins for basic operation.",
"section": "Utilities",
"output": [ "publicFeature" ]
+ },
+ "binaryjson": {
+ "label": "Binary JSON (deprecated)",
+ "purpose": "Provides support for the deprecated binary JSON format.",
+ "section": "Utilities",
+ "output": [ "publicFeature" ]
}
},
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 452d2db0fd..eca888385b 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -1,6 +1,6 @@
TARGET = QtCore
QT =
-CONFIG += exceptions
+CONFIG += exceptions metatypes install_metatypes
MODULE = core # not corelib, as per project file
MODULE_CONFIG = moc resources
@@ -99,6 +99,12 @@ cmake_umbrella_config_module_location_for_install.output = $$DESTDIR/cmake/insta
cmake_umbrella_config_version_file.input = $$PWD/../../mkspecs/features/data/cmake/Qt5ConfigVersion.cmake.in
cmake_umbrella_config_version_file.output = $$DESTDIR/cmake/Qt5/Qt5ConfigVersion.cmake
+android {
+ cmake_android_support.input = $$PWD/Qt5AndroidSupport.cmake
+ cmake_android_support.output = $$DESTDIR/cmake/Qt5Core/Qt5AndroidSupport.cmake
+ cmake_android_support.CONFIG = verbatim
+}
+
load(cmake_functions)
defineTest(pathIsAbsolute) {
@@ -144,6 +150,11 @@ QMAKE_SUBSTITUTES += \
cmake_extras_mkspec_dir \
cmake_extras_mkspec_dir_for_install
+android {
+ QMAKE_SUBSTITUTES += cmake_android_support
+ ctest_qt5_module_files.files += $$cmake_android_support.output
+}
+
ctest_qt5_module_files.files += $$ctest_macros_file.output $$cmake_extras_mkspec_dir_for_install.output
ctest_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5Core
diff --git a/src/corelib/doc/snippets/code/doc_src_containers.cpp b/src/corelib/doc/snippets/code/doc_src_containers.cpp
index 443f6b688c..84935580c9 100644
--- a/src/corelib/doc/snippets/code/doc_src_containers.cpp
+++ b/src/corelib/doc/snippets/code/doc_src_containers.cpp
@@ -312,3 +312,11 @@ int j = *i; // Undefined behavior!
but with QVector this is likely to crash.
*/
//! [24]
+
+//! [25]
+QVector<int> vector{1, 2, 3, 4, 4, 5};
+QSet<int> set(vector.begin(), vector.end());
+/*
+ Will generate a QSet containing 1, 2, 4, 5.
+*/
+//! [25]
diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
index 11ab50687d..b1dc392140 100644
--- a/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp
@@ -372,16 +372,13 @@ a = str.toFloat(&ok); // a == 0, ok == false
//! [39]
QByteArray text("Qt is great!");
text.toBase64(); // returns "UXQgaXMgZ3JlYXQh"
-//! [39]
-//! [39bis]
QByteArray text("<p>Hello?</p>");
text.toBase64(QByteArray::Base64Encoding | QByteArray::OmitTrailingEquals); // returns "PHA+SGVsbG8/PC9wPg"
text.toBase64(QByteArray::Base64Encoding); // returns "PHA+SGVsbG8/PC9wPg=="
text.toBase64(QByteArray::Base64UrlEncoding); // returns "PHA-SGVsbG8_PC9wPg=="
text.toBase64(QByteArray::Base64UrlEncoding | QByteArray::OmitTrailingEquals); // returns "PHA-SGVsbG8_PC9wPg"
-//! [39bis]
-
+//! [39]
//! [40]
QByteArray ba;
@@ -422,13 +419,10 @@ QDataStream in(&data, QIODevice::ReadOnly);
//! [44]
QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh");
text.data(); // returns "Qt is great!"
-//! [44]
-//! [44bis]
QByteArray::fromBase64("PHA+SGVsbG8/PC9wPg==", QByteArray::Base64Encoding); // returns "<p>Hello?</p>"
QByteArray::fromBase64("PHA-SGVsbG8_PC9wPg==", QByteArray::Base64UrlEncoding); // returns "<p>Hello?</p>"
-//! [44bis]
-
+//! [44]
//! [45]
QByteArray text = QByteArray::fromHex("517420697320677265617421");
diff --git a/src/corelib/doc/snippets/qstring/main.cpp b/src/corelib/doc/snippets/qstring/main.cpp
index ac7fc7d078..f797890e5d 100644
--- a/src/corelib/doc/snippets/qstring/main.cpp
+++ b/src/corelib/doc/snippets/qstring/main.cpp
@@ -433,14 +433,12 @@ void Widget::firstIndexOfFunction()
//! [93]
QString str = "the minimum";
str.indexOf(QRegularExpression("m[aeiou]"), 0); // returns 4
- //! [93]
- //! [99]
QString str = "the minimum";
QRegularExpressionMatch match;
str.indexOf(QRegularExpression("m[aeiou]"), 0, &match); // returns 4
// match.captured() == mi
- //! [99]
+ //! [93]
}
void Widget::insertFunction()
@@ -490,14 +488,12 @@ void Widget::lastIndexOfFunction()
//! [94]
QString str = "the minimum";
str.lastIndexOf(QRegularExpression("m[aeiou]")); // returns 8
- //! [94]
- //! [100]
QString str = "the minimum";
QRegularExpressionMatch match;
str.lastIndexOf(QRegularExpression("m[aeiou]"), -1, &match); // returns 8
// match.captured() == mu
- //! [100]
+ //! [94]
}
void Widget::leftFunction()
diff --git a/src/corelib/doc/src/containers.qdoc b/src/corelib/doc/src/containers.qdoc
index 919533f651..8373ad4b4e 100644
--- a/src/corelib/doc/src/containers.qdoc
+++ b/src/corelib/doc/src/containers.qdoc
@@ -66,14 +66,18 @@
Qt also offers a \l{foreach} keyword that make it very
easy to iterate over all the items stored in a container.
+ \note Since Qt 5.14, range constructors are available for most of the
+ container classes. QMultiMap is a notable exception. Their use is
+ encouraged in place of the various from/to methods. For example:
+
+ \snippet code/doc_src_containers.cpp 25
+
\section1 The Container Classes
- Qt provides the following sequential containers: QList,
- QLinkedList, QVector, QStack, and QQueue. For most
- applications, QList is the best type to use. Although it is
- implemented as an array-list, it provides very fast prepends and
- appends. If you really need a linked-list, use QLinkedList; if you
- want your items to occupy consecutive memory locations, use QVector.
+ Qt provides the following sequential containers: QVector,
+ QLinkedList, QStack, and QQueue. For most
+ applications, QVector is the best type to use. It provides very fast
+ appends. If you really need a linked-list, use QLinkedList.
QStack and QQueue are convenience classes that provide LIFO and
FIFO semantics.
@@ -89,30 +93,19 @@
\table
\header \li Class \li Summary
- \row \li \l{QList}<T>
- \li This is by far the most commonly used container class. It
- stores a list of values of a given type (T) that can be accessed
- by index. Internally, the QList is implemented using an array,
- ensuring that index-based access is very fast.
-
- Items can be added at either end of the list using
- QList::append() and QList::prepend(), or they can be inserted in
- the middle using QList::insert(). More than any other container
- class, QList is highly optimized to expand to as little code as
- possible in the executable. QStringList inherits from
- QList<QString>.
-
\row \li \l{QLinkedList}<T>
- \li This is similar to QList, except that it uses
- iterators rather than integer indexes to access items. It also
- provides better performance than QList when inserting in the
+ \li This class implements a doubly linked list. It
+ provides better performance than QVector when inserting in the
middle of a huge list, and it has nicer iterator semantics.
(Iterators pointing to an item in a QLinkedList remain valid as
- long as the item exists, whereas iterators to a QList can become
+ long as the item exists, whereas iterators to a QVector can become
invalid after any insertion or removal.)
\row \li \l{QVector}<T>
- \li This stores an array of values of a given type at adjacent
+ \li This is by far the most commonly used container class. It
+ stores a list of values of a given type (T) that can be accessed
+ by index. Internally, it stores an array of values of a
+ given type at adjacent
positions in memory. Inserting at the front or in the middle of
a vector can be quite slow, because it can lead to large numbers
of items having to be moved by one position in memory.
@@ -125,9 +118,9 @@
and \l{QStack::top()}{top()}.
\row \li \l{QQueue}<T>
- \li This is a convenience subclass of QList that provides
+ \li This is a convenience subclass of QVector that provides
"first in, first out" (FIFO) semantics. It adds the following
- functions to those already present in QList:
+ functions to those already present in QQVector:
\l{QQueue::enqueue()}{enqueue()},
\l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}.
@@ -158,8 +151,8 @@
\endtable
Containers can be nested. For example, it is perfectly possible
- to use a QMap<QString, QList<int>>, where the key type is
- QString and the value type QList<int>.
+ to use a QMap<QString, QVector<int>>, where the key type is
+ QString and the value type QVector<int>.
The containers are defined in individual header files with the
same name as the container (e.g., \c <QLinkedList>). For
@@ -178,10 +171,10 @@
double, pointer types, and Qt data types such as QString, QDate,
and QTime, but it doesn't cover QObject or any QObject subclass
(QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a
- QList<QWidget>, the compiler will complain that QWidget's copy
+ QVector<QWidget>, the compiler will complain that QWidget's copy
constructor and assignment operators are disabled. If you want to
store these kinds of objects in a container, store them as
- pointers, for example as QList<QWidget *>.
+ pointers, for example as QVector<QWidget *>.
Here's an example custom data type that meets the requirement of
an assignable data type:
@@ -254,11 +247,10 @@
\table
\header \li Containers \li Read-only iterator
\li Read-write iterator
- \row \li QList<T>, QQueue<T> \li QListIterator<T>
\li QMutableListIterator<T>
\row \li QLinkedList<T> \li QLinkedListIterator<T>
\li QMutableLinkedListIterator<T>
- \row \li QVector<T>, QStack<T> \li QVectorIterator<T>
+ \row \li QVector<T>, QStack<T>, QQueue<T> \li QVectorIterator<T>
\li QMutableVectorIterator<T>
\row \li QSet<T> \li QSetIterator<T>
\li QMutableSetIterator<T>
@@ -268,9 +260,9 @@
\li QMutableHashIterator<Key, T>
\endtable
- In this discussion, we will concentrate on QList and QMap. The
+ In this discussion, we will concentrate on QVector and QMap. The
iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
+ the same interface as QVector's iterators; similarly, the iterator
types for QHash have the same interface as QMap's iterators.
Unlike STL-style iterators (covered \l{STL-style
@@ -285,59 +277,59 @@
\image javaiterators1.png
Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and printing them to the console:
+ QVector<QString> in order and printing them to the console:
\snippet code/doc_src_containers.cpp 1
- It works as follows: The QList to iterate over is passed to the
- QListIterator constructor. At that point, the iterator is located
+ It works as follows: The QVector to iterate over is passed to the
+ QVectorIterator constructor. At that point, the iterator is located
just in front of the first item in the list (before item "A").
- Then we call \l{QListIterator::hasNext()}{hasNext()} to
+ Then we call \l{QVectorIterator::hasNext()}{hasNext()} to
check whether there is an item after the iterator. If there is, we
- call \l{QListIterator::next()}{next()} to jump over that
+ call \l{QVectorIterator::next()}{next()} to jump over that
item. The next() function returns the item that it jumps over. For
- a QList<QString>, that item is of type QString.
+ a QVector<QString>, that item is of type QString.
- Here's how to iterate backward in a QList:
+ Here's how to iterate backward in a QVector:
\snippet code/doc_src_containers.cpp 2
The code is symmetric with iterating forward, except that we
- start by calling \l{QListIterator::toBack()}{toBack()}
+ start by calling \l{QVectorIterator::toBack()}{toBack()}
to move the iterator after the last item in the list.
The diagram below illustrates the effect of calling
- \l{QListIterator::next()}{next()} and
- \l{QListIterator::previous()}{previous()} on an iterator:
+ \l{QVectorIterator::next()}{next()} and
+ \l{QVectorIterator::previous()}{previous()} on an iterator:
\image javaiterators2.png
- The following table summarizes the QListIterator API:
+ The following table summarizes the QVectorIterator API:
\table
\header \li Function \li Behavior
- \row \li \l{QListIterator::toFront()}{toFront()}
+ \row \li \l{QVectorIterator::toFront()}{toFront()}
\li Moves the iterator to the front of the list (before the first item)
- \row \li \l{QListIterator::toBack()}{toBack()}
+ \row \li \l{QVectorIterator::toBack()}{toBack()}
\li Moves the iterator to the back of the list (after the last item)
- \row \li \l{QListIterator::hasNext()}{hasNext()}
+ \row \li \l{QVectorIterator::hasNext()}{hasNext()}
\li Returns \c true if the iterator isn't at the back of the list
- \row \li \l{QListIterator::next()}{next()}
+ \row \li \l{QVectorIterator::next()}{next()}
\li Returns the next item and advances the iterator by one position
- \row \li \l{QListIterator::peekNext()}{peekNext()}
+ \row \li \l{QVectorIterator::peekNext()}{peekNext()}
\li Returns the next item without moving the iterator
- \row \li \l{QListIterator::hasPrevious()}{hasPrevious()}
+ \row \li \l{QVectorIterator::hasPrevious()}{hasPrevious()}
\li Returns \c true if the iterator isn't at the front of the list
- \row \li \l{QListIterator::previous()}{previous()}
+ \row \li \l{QVectorIterator::previous()}{previous()}
\li Returns the previous item and moves the iterator back by one position
- \row \li \l{QListIterator::peekPrevious()}{peekPrevious()}
+ \row \li \l{QVectorIterator::peekPrevious()}{peekPrevious()}
\li Returns the previous item without moving the iterator
\endtable
- QListIterator provides no functions to insert or remove items
+ QVectorIterator provides no functions to insert or remove items
from the list as we iterate. To accomplish this, you must use
QMutableListIterator. Here's an example where we remove all
- odd numbers from a QList<int> using QMutableListIterator:
+ odd numbers from a QVector<int> using QMutableListIterator:
\snippet code/doc_src_containers.cpp 3
@@ -371,11 +363,11 @@
\snippet code/doc_src_containers.cpp 6
As mentioned above, QLinkedList's, QVector's, and QSet's iterator
- classes have exactly the same API as QList's. We will now turn to
+ classes have exactly the same API as QVector's. We will now turn to
QMapIterator, which is somewhat different because it iterates on
(key, value) pairs.
- Like QListIterator, QMapIterator provides
+ Like QVectorIterator, QMapIterator provides
\l{QMapIterator::toFront()}{toFront()},
\l{QMapIterator::toBack()}{toBack()},
\l{QMapIterator::hasNext()}{hasNext()},
@@ -423,11 +415,9 @@
\table
\header \li Containers \li Read-only iterator
\li Read-write iterator
- \row \li QList<T>, QQueue<T> \li QList<T>::const_iterator
- \li QList<T>::iterator
\row \li QLinkedList<T> \li QLinkedList<T>::const_iterator
\li QLinkedList<T>::iterator
- \row \li QVector<T>, QStack<T> \li QVector<T>::const_iterator
+ \row \li QVector<T>, QStack<T>, QQueue<T> \li QVector<T>::const_iterator
\li QVector<T>::iterator
\row \li QSet<T> \li QSet<T>::const_iterator
\li QSet<T>::iterator
@@ -446,24 +436,24 @@
and the \l{QVector::iterator}{const_iterator} type is
just a typedef for \c{const T *}.
- In this discussion, we will concentrate on QList and QMap. The
+ In this discussion, we will concentrate on QVector and QMap. The
iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
+ the same interface as QVector's iterators; similarly, the iterator
types for QHash have the same interface as QMap's iterators.
Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and converting them to lowercase:
+ QVector<QString> in order and converting them to lowercase:
\snippet code/doc_src_containers.cpp 10
Unlike \l{Java-style iterators}, STL-style iterators point
- directly at items. The \l{QList::begin()}{begin()} function of a container returns an
+ directly at items. The \l{QVector::begin()}{begin()} function of a container returns an
iterator that points to the first item in the container. The
- \l{QList::end()}{end()} function of a container returns an iterator to the
+ \l{QVector::end()}{end()} function of a container returns an iterator to the
imaginary item one position past the last item in the container.
- \l {QList::end()}{end()} marks an invalid position; it must never be dereferenced.
+ \l {QVector::end()}{end()} marks an invalid position; it must never be dereferenced.
It is typically used in a loop's break condition. If the list is
- empty, \l{QList::begin}{begin()} equals \l{QList::end()}{end()}, so we never execute the loop.
+ empty, \l{QVector::begin}{begin()} equals \l{QVector::end()}{end()}, so we never execute the loop.
The diagram below shows the valid iterator positions as red
arrows for a vector containing four items:
@@ -480,8 +470,8 @@
compilers also allow us to write \c{i->toLower()}, but some
don't.
- For read-only access, you can use const_iterator, \l{QList::constBegin}{constBegin()},
- and \l{QList::constEnd()}{constEnd()}. For example:
+ For read-only access, you can use const_iterator, \l{QVector::constBegin}{constBegin()},
+ and \l{QVector::constEnd()}{constEnd()}. For example:
\snippet code/doc_src_containers.cpp 12
@@ -519,7 +509,7 @@
Thanks to \l{implicit sharing}, it is very inexpensive for a
function to return a container per value. The Qt API contains
- dozens of functions that return a QList or QStringList per value
+ dozens of functions that return a QVector or QStringList per value
(e.g., QSplitter::sizes()). If you want to iterate over these
using an STL iterator, you should always take a copy of the
container and iterate over the copy. For example:
@@ -689,7 +679,6 @@
\table
\header \li \li Index lookup \li Insertion \li Prepending \li Appending
\row \li QLinkedList<T> \li O(\e n) \li O(1) \li O(1) \li O(1)
- \row \li QList<T> \li O(1) \li O(n) \li Amort. O(1) \li Amort. O(1)
\row \li QVector<T> \li O(1) \li O(n) \li O(n) \li Amort. O(1)
\endtable
@@ -720,11 +709,8 @@
\section1 Growth Strategies
QVector<T>, QString, and QByteArray store their items
- contiguously in memory; QList<T> maintains an array of pointers
- to the items it stores to provide fast index-based access (unless
- T is a pointer type or a basic type of the size of a pointer, in
- which case the value itself is stored in the array); QHash<Key,
- T> keeps a hash table whose size is proportional to the number
+ contiguously in memory; QHash<Key, T> keeps a
+ hash table whose size is proportional to the number
of items in the hash. To avoid reallocating the data every single
time an item is added at the end of the container, these classes
typically allocate more memory than necessary.
@@ -758,7 +744,7 @@
on the first and last pages actually needs to be copied.
\endlist
- QByteArray and QList<T> use more or less the same algorithm as
+ QByteArray uses more or less the same algorithm as
QString.
QVector<T> also uses that algorithm for data types that can be
diff --git a/src/corelib/doc/src/datastreamformat.qdoc b/src/corelib/doc/src/datastreamformat.qdoc
index d6b60f10ce..def9021350 100644
--- a/src/corelib/doc/src/datastreamformat.qdoc
+++ b/src/corelib/doc/src/datastreamformat.qdoc
@@ -67,7 +67,6 @@
\li QImage
\li QKeySequence
\li QLinkedList<T>
- \li QList<T>
\li QMap<Key, T>
\li QMargins
\li QMatrix4x4
diff --git a/src/corelib/doc/src/includes/containers-range-constructor.qdocinc b/src/corelib/doc/src/includes/containers-range-constructor.qdocinc
new file mode 100644
index 0000000000..afb7e46b86
--- /dev/null
+++ b/src/corelib/doc/src/includes/containers-range-constructor.qdocinc
@@ -0,0 +1,2 @@
+ \note Since Qt 5.14, range constructors are available for Qt's generic
+ \l{container classes} and should be used in place of this method.
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index e47f284a42..ad3d2be69b 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -91,8 +91,6 @@
# define Q_OUTOFLINE_TEMPLATE inline
# define Q_COMPILER_MANGLES_RETURN_TYPE
# define Q_FUNC_INFO __FUNCSIG__
-# define Q_ALIGNOF(type) __alignof(type)
-# define Q_DECL_ALIGN(n) __declspec(align(n))
# define Q_ASSUME_IMPL(expr) __assume(expr)
# define Q_UNREACHABLE_IMPL() __assume(0)
# define Q_NORETURN __declspec(noreturn)
@@ -222,10 +220,8 @@
# endif
# define Q_FUNC_INFO __PRETTY_FUNCTION__
-# define Q_ALIGNOF(type) __alignof__(type)
# define Q_TYPEOF(expr) __typeof__(expr)
# define Q_DECL_DEPRECATED __attribute__ ((__deprecated__))
-# define Q_DECL_ALIGN(n) __attribute__((__aligned__(n)))
# define Q_DECL_UNUSED __attribute__((__unused__))
# define Q_LIKELY(expr) __builtin_expect(!!(expr), true)
# define Q_UNLIKELY(expr) __builtin_expect(!!(expr), false)
@@ -272,9 +268,7 @@
# if __xlC__ < 0x400
# error "Compiler not supported"
# elif __xlC__ >= 0x0600
-# define Q_ALIGNOF(type) __alignof__(type)
# define Q_TYPEOF(expr) __typeof__(expr)
-# define Q_DECL_ALIGN(n) __attribute__((__aligned__(n)))
# define Q_PACKED __attribute__((__packed__))
# endif
@@ -352,7 +346,6 @@
# define Q_PACKED __attribute__ ((__packed__))
# define Q_FUNC_INFO __PRETTY_FUNCTION__
# define Q_TYPEOF(expr) __typeof__(expr)
-# define Q_ALIGNOF(type) __alignof__(type)
# define Q_UNREACHABLE_IMPL()
# if defined(__cplusplus)
# define Q_COMPILER_AUTO_TYPE
@@ -450,9 +443,7 @@
# define QT_NO_TEMPLATE_TEMPLATE_PARAMETERS
/* see http://developers.sun.com/sunstudio/support/Ccompare.html */
# if __SUNPRO_CC >= 0x590
-# define Q_ALIGNOF(type) __alignof__(type)
# define Q_TYPEOF(expr) __typeof__(expr)
-# define Q_DECL_ALIGN(n) __attribute__((__aligned__(n)))
# endif
# if __SUNPRO_CC >= 0x550
# define Q_DECL_EXPORT __global
@@ -489,9 +480,6 @@
# define Q_DECL_EXPORT __declspec(dllexport)
# define Q_DECL_IMPORT __declspec(dllimport)
# endif
-# if __HP_aCC-0 >= 061200
-# define Q_DECL_ALIGN(n) __attribute__((aligned(n)))
-# endif
# if __HP_aCC-0 >= 062000
# define Q_DECL_EXPORT __attribute__((visibility("default")))
# define Q_DECL_HIDDEN __attribute__((visibility("hidden")))
@@ -1128,14 +1116,12 @@
#endif
#define Q_DECL_NOTHROW Q_DECL_NOEXCEPT
-#if defined(Q_COMPILER_ALIGNOF)
-# undef Q_ALIGNOF
-# define Q_ALIGNOF(x) alignof(x)
+#ifndef Q_ALIGNOF
+# define Q_ALIGNOF(x) alignof(x)
#endif
-#if defined(Q_COMPILER_ALIGNAS)
-# undef Q_DECL_ALIGN
-# define Q_DECL_ALIGN(n) alignas(n)
+#ifndef Q_DECL_ALIGN
+# define Q_DECL_ALIGN(n) alignas(n)
#endif
#if QT_HAS_CPP_ATTRIBUTE(nodiscard) && !defined(Q_CC_CLANG) // P0188R1
diff --git a/src/corelib/global/qconfig-bootstrapped.h b/src/corelib/global/qconfig-bootstrapped.h
index e9383ca68b..c58dc56c42 100644
--- a/src/corelib/global/qconfig-bootstrapped.h
+++ b/src/corelib/global/qconfig-bootstrapped.h
@@ -74,6 +74,7 @@
#else
# define QT_FEATURE_alloca_malloc_h -1
#endif
+#define QT_FEATURE_binaryjson -1
#define QT_FEATURE_cborstream -1
#define QT_CRYPTOGRAPHICHASH_ONLY_SHA1
#define QT_FEATURE_cxx11_random (QT_HAS_INCLUDE(<random>) ? 1 : -1)
@@ -110,6 +111,7 @@
# define QT_FEATURE_renameat2 -1
#endif
#define QT_FEATURE_sharedmemory -1
+#define QT_FEATURE_shortcut -1
#define QT_FEATURE_signaling_nan -1
#define QT_FEATURE_slog2 -1
#ifdef __GLIBC_PREREQ
diff --git a/src/corelib/global/qendian.cpp b/src/corelib/global/qendian.cpp
index 7fd6e13d3b..c56a7ffbf7 100644
--- a/src/corelib/global/qendian.cpp
+++ b/src/corelib/global/qendian.cpp
@@ -765,7 +765,7 @@ QT_BEGIN_NAMESPACE
#if defined(__SSSE3__)
using ShuffleMask = uchar[16];
-Q_DECL_ALIGN(16) static const ShuffleMask shuffleMasks[3] = {
+alignas(16) static const ShuffleMask shuffleMasks[3] = {
// 16-bit
{1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14},
// 32-bit
diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
index 615f523888..5cd9d3160b 100644
--- a/src/corelib/global/qendian.h
+++ b/src/corelib/global/qendian.h
@@ -327,9 +327,9 @@ public:
return pre;
}
- static constexpr QSpecialInteger max()
+ static Q_DECL_CONSTEXPR QSpecialInteger max()
{ return QSpecialInteger(std::numeric_limits<T>::max()); }
- static constexpr QSpecialInteger min()
+ static Q_DECL_CONSTEXPR QSpecialInteger min()
{ return QSpecialInteger(std::numeric_limits<T>::min()); }
};
@@ -373,8 +373,8 @@ public:
QLEInteger &operator ++(int);
QLEInteger &operator --(int);
- static constexpr QLEInteger max();
- static constexpr QLEInteger min();
+ static Q_DECL_CONSTEXPR QLEInteger max();
+ static Q_DECL_CONSTEXPR QLEInteger min();
};
template<typename T>
@@ -400,8 +400,8 @@ public:
QBEInteger &operator ++(int);
QBEInteger &operator --(int);
- static constexpr QBEInteger max();
- static constexpr QBEInteger min();
+ static Q_DECL_CONSTEXPR QBEInteger max();
+ static Q_DECL_CONSTEXPR QBEInteger min();
};
#else
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index a06e9ab6c6..799d953c8d 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -114,8 +114,8 @@ extern "C" {
// without full system POSIX.
# pragma weak shm_area_password
# pragma weak shm_area_name
- char *shm_area_password = "dummy";
- char *shm_area_name = "dummy";
+ char shm_area_password[] = "dummy";
+ char shm_area_name[] = "dummy";
}
#endif
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 7db7dba9b5..4dc63cae5e 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -86,15 +86,9 @@
#define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1)
#define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(QT_FEATURE_##feature == 1, "Required feature " #feature " for file " __FILE__ " not available.")
-#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
-// ### Qt6: FIXME and get rid of unsharable containers
-//# define QT_NO_UNSHARABLE_CONTAINERS
-# define QT6_VIRTUAL virtual
-# define QT6_NOT_VIRTUAL
-#else
-# define QT6_VIRTUAL
-# define QT6_NOT_VIRTUAL virtual
-#endif
+// ### Clean those up, once all code is adjusted
+#define QT6_VIRTUAL virtual
+#define QT6_NOT_VIRTUAL
/* These two macros makes it possible to turn the builtin line expander into a
* string literal. */
@@ -499,53 +493,6 @@ Q_CORE_EXPORT Q_DECL_CONST_FUNCTION const char *qVersion(void) Q_DECL_NOEXCEPT;
# define Q_DESTRUCTOR_FUNCTION(AFUNC) Q_DESTRUCTOR_FUNCTION0(AFUNC)
#endif
-namespace QtPrivate {
- template <class T>
- struct AlignOfHelper
- {
- char c;
- T type;
-
- AlignOfHelper();
- ~AlignOfHelper();
- };
-
- template <class T>
- struct AlignOf_Default
- {
- enum { Value = sizeof(AlignOfHelper<T>) - sizeof(T) };
- };
-
- template <class T> struct AlignOf : AlignOf_Default<T> { };
- template <class T> struct AlignOf<T &> : AlignOf<T> {};
- template <class T> struct AlignOf<T &&> : AlignOf<T> {};
- template <size_t N, class T> struct AlignOf<T[N]> : AlignOf<T> {};
-
-#if defined(Q_PROCESSOR_X86_32) && !defined(Q_OS_WIN)
- template <class T> struct AlignOf_WorkaroundForI386Abi { enum { Value = sizeof(T) }; };
-
- // x86 ABI weirdness
- // Alignment of naked type is 8, but inside struct has alignment 4.
- template <> struct AlignOf<double> : AlignOf_WorkaroundForI386Abi<double> {};
- template <> struct AlignOf<qint64> : AlignOf_WorkaroundForI386Abi<qint64> {};
- template <> struct AlignOf<quint64> : AlignOf_WorkaroundForI386Abi<quint64> {};
-#ifdef Q_CC_CLANG
- // GCC and Clang seem to disagree wrt to alignment of arrays
- template <size_t N> struct AlignOf<double[N]> : AlignOf_Default<double> {};
- template <size_t N> struct AlignOf<qint64[N]> : AlignOf_Default<qint64> {};
- template <size_t N> struct AlignOf<quint64[N]> : AlignOf_Default<quint64> {};
-#endif
-#endif
-} // namespace QtPrivate
-
-#define QT_EMULATED_ALIGNOF(T) \
- (size_t(QT_PREPEND_NAMESPACE(QtPrivate)::AlignOf<T>::Value))
-
-#ifndef Q_ALIGNOF
-#define Q_ALIGNOF(T) QT_EMULATED_ALIGNOF(T)
-#endif
-
-
/*
quintptr and qptrdiff is guaranteed to be the same size as a pointer, i.e.
diff --git a/src/corelib/global/qnumeric_p.h b/src/corelib/global/qnumeric_p.h
index 86e7997680..c006296b3d 100644
--- a/src/corelib/global/qnumeric_p.h
+++ b/src/corelib/global/qnumeric_p.h
@@ -202,7 +202,7 @@ namespace {
This function works for v containing infinities, but not NaN. It's the
caller's responsibility to exclude that possibility before calling it.
*/
-template <typename T> static inline bool convertDoubleTo(double v, T *value)
+template <typename T> static inline bool convertDoubleTo(double v, T *value, bool allow_precision_upgrade = true)
{
Q_STATIC_ASSERT(std::numeric_limits<T>::is_integer);
@@ -227,6 +227,10 @@ template <typename T> static inline bool convertDoubleTo(double v, T *value)
supremum = -2.0 * std::numeric_limits<ST>::min(); // -2 * (-2^63) = 2^64, exact (for T = quint64)
v = fabs(v);
}
+ if (std::is_integral<T>::value && sizeof(T) > 4 && !allow_precision_upgrade) {
+ if (v > double(Q_INT64_C(1)<<53) || v < double(-((Q_INT64_C(1)<<53) + 1)))
+ return false;
+ }
*value = std::numeric_limits<T>::max();
if (v >= supremum)
diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
index 3cbd40b772..563e5eb7ed 100644
--- a/src/corelib/global/qrandom.cpp
+++ b/src/corelib/global/qrandom.cpp
@@ -355,7 +355,7 @@ struct QRandomGenerator::SystemAndGlobalGenerators
// the state in case another thread tries to lock the mutex. It's not
// a common scenario, but since sizeof(QRandomGenerator) >= 2560, the
// overhead is actually acceptable.
- // 2) We use both Q_DECL_ALIGN and std::aligned_storage<..., 64> because
+ // 2) We use both alignas and std::aligned_storage<..., 64> because
// some implementations of std::aligned_storage can't align to more
// than a primitive type's alignment.
// 3) We don't store the entire system QRandomGenerator, only the space
@@ -364,7 +364,7 @@ struct QRandomGenerator::SystemAndGlobalGenerators
QBasicMutex globalPRNGMutex;
struct ShortenedSystem { uint type; } system_;
SystemGenerator sys;
- Q_DECL_ALIGN(64) std::aligned_storage<sizeof(QRandomGenerator64), 64>::type global_;
+ alignas(64) std::aligned_storage<sizeof(QRandomGenerator64), 64>::type global_;
#ifdef Q_COMPILER_CONSTEXPR
constexpr SystemAndGlobalGenerators()
diff --git a/src/corelib/global/qrandom.h b/src/corelib/global/qrandom.h
index 445b520c76..e1494ab523 100644
--- a/src/corelib/global/qrandom.h
+++ b/src/corelib/global/qrandom.h
@@ -196,7 +196,7 @@ private:
RandomEngine &engine() { return twister; }
const RandomEngine &engine() const { return twister; }
#else
- std::aligned_storage<sizeof(RandomEngine), Q_ALIGNOF(RandomEngine)>::type buffer;
+ std::aligned_storage<sizeof(RandomEngine), alignof(RandomEngine)>::type buffer;
RandomEngine &engine() { return reinterpret_cast<RandomEngine &>(buffer); }
const RandomEngine &engine() const { return reinterpret_cast<const RandomEngine &>(buffer); }
#endif
diff --git a/src/corelib/global/qtypeinfo.h b/src/corelib/global/qtypeinfo.h
index 30be47296e..34cf1de4f5 100644
--- a/src/corelib/global/qtypeinfo.h
+++ b/src/corelib/global/qtypeinfo.h
@@ -209,7 +209,6 @@ public: \
}; \
}
-Q_DECLARE_MOVABLE_CONTAINER(QList);
Q_DECLARE_MOVABLE_CONTAINER(QVector);
Q_DECLARE_MOVABLE_CONTAINER(QQueue);
Q_DECLARE_MOVABLE_CONTAINER(QStack);
diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h
index 421c5d933b..2314b36bda 100644
--- a/src/corelib/io/qdebug.h
+++ b/src/corelib/io/qdebug.h
@@ -234,12 +234,6 @@ inline QDebug printSequentialContainer(QDebug debug, const char *which, const Se
} // namespace QtPrivate
-template <class T>
-inline QDebug operator<<(QDebug debug, const QList<T> &list)
-{
- return QtPrivate::printSequentialContainer(debug, "" /*for historical reasons*/, list);
-}
-
template <typename T>
inline QDebug operator<<(QDebug debug, const QVector<T> &vec)
{
diff --git a/src/corelib/io/qfilesystemengine_p.h b/src/corelib/io/qfilesystemengine_p.h
index e44837747c..ecfdc03743 100644
--- a/src/corelib/io/qfilesystemengine_p.h
+++ b/src/corelib/io/qfilesystemengine_p.h
@@ -58,6 +58,36 @@
QT_BEGIN_NAMESPACE
+#define Q_RETURN_ON_INVALID_FILENAME(message, result) \
+ { \
+ QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning(message); \
+ errno = EINVAL; \
+ return (result); \
+ }
+
+inline bool qIsFilenameBroken(const QByteArray &name)
+{
+ return name.contains('\0');
+}
+
+inline bool qIsFilenameBroken(const QString &name)
+{
+ return name.contains(QLatin1Char('\0'));
+}
+
+inline bool qIsFilenameBroken(const QFileSystemEntry &entry)
+{
+ return qIsFilenameBroken(entry.nativeFilePath());
+}
+
+#define Q_CHECK_FILE_NAME(name, result) \
+ do { \
+ if (Q_UNLIKELY((name).isEmpty())) \
+ Q_RETURN_ON_INVALID_FILENAME("Empty filename passed to function", (result)); \
+ if (Q_UNLIKELY(qIsFilenameBroken(name))) \
+ Q_RETURN_ON_INVALID_FILENAME("Broken filename passed to function", (result)); \
+ } while (false)
+
class QFileSystemEngine
{
public:
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index 74865fe31f..c3abec8989 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -118,13 +118,6 @@ enum {
#endif
};
-#define emptyFileEntryWarning() emptyFileEntryWarning_(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC)
-static void emptyFileEntryWarning_(const char *file, int line, const char *function)
-{
- QMessageLogger(file, line, function).warning("Empty filename passed to function");
- errno = EINVAL;
-}
-
#if defined(Q_OS_DARWIN)
static inline bool hasResourcePropertyFlag(const QFileSystemMetaData &data,
const QFileSystemEntry &entry,
@@ -625,8 +618,7 @@ void QFileSystemMetaData::fillFromDirEnt(const QT_DIRENT &entry)
//static
QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data)
{
- if (Q_UNLIKELY(link.isEmpty()))
- return emptyFileEntryWarning(), link;
+ Q_CHECK_FILE_NAME(link, link);
QByteArray s = qt_readlink(link.nativeFilePath().constData());
if (s.length() > 0) {
@@ -685,10 +677,7 @@ QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
//static
QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, QFileSystemMetaData &data)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), entry;
- if (entry.isRoot())
- return entry;
+ Q_CHECK_FILE_NAME(entry, entry);
#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_HAIKU) && _POSIX_VERSION < 200809L
// realpath(X,0) is not supported
@@ -738,8 +727,8 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry,
//static
QFileSystemEntry QFileSystemEngine::absoluteName(const QFileSystemEntry &entry)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), entry;
+ Q_CHECK_FILE_NAME(entry, entry);
+
if (entry.isAbsolute() && entry.isClean())
return entry;
@@ -773,8 +762,7 @@ QFileSystemEntry QFileSystemEngine::absoluteName(const QFileSystemEntry &entry)
//static
QByteArray QFileSystemEngine::id(const QFileSystemEntry &entry)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), QByteArray();
+ Q_CHECK_FILE_NAME(entry, QByteArray());
QT_STATBUF statResult;
if (QT_STAT(entry.nativeFilePath().constData(), &statResult)) {
@@ -887,8 +875,7 @@ QString QFileSystemEngine::bundleName(const QFileSystemEntry &entry)
bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemMetaData &data,
QFileSystemMetaData::MetaDataFlags what)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(entry, false);
#if defined(Q_OS_DARWIN)
if (what & QFileSystemMetaData::BundleType) {
@@ -1157,8 +1144,7 @@ static bool createDirectoryWithParents(const QByteArray &nativeName, bool should
bool QFileSystemEngine::createDirectory(const QFileSystemEntry &entry, bool createParents)
{
QString dirName = entry.filePath();
- if (Q_UNLIKELY(dirName.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(dirName, false);
// Darwin doesn't support trailing /'s, so remove for everyone
while (dirName.size() > 1 && dirName.endsWith(QLatin1Char('/')))
@@ -1177,8 +1163,7 @@ bool QFileSystemEngine::createDirectory(const QFileSystemEntry &entry, bool crea
//static
bool QFileSystemEngine::removeDirectory(const QFileSystemEntry &entry, bool removeEmptyParents)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(entry, false);
if (removeEmptyParents) {
QString dirName = QDir::cleanPath(entry.filePath());
@@ -1203,8 +1188,9 @@ bool QFileSystemEngine::removeDirectory(const QFileSystemEntry &entry, bool remo
//static
bool QFileSystemEngine::createLink(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
{
- if (Q_UNLIKELY(source.isEmpty() || target.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(source, false);
+ Q_CHECK_FILE_NAME(target, false);
+
if (::symlink(source.nativeFilePath().constData(), target.nativeFilePath().constData()) == 0)
return true;
error = QSystemError(errno, QSystemError::StandardLibraryError);
@@ -1233,8 +1219,9 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
{
QFileSystemEntry::NativePath srcPath = source.nativeFilePath();
QFileSystemEntry::NativePath tgtPath = target.nativeFilePath();
- if (Q_UNLIKELY(srcPath.isEmpty() || tgtPath.isEmpty()))
- return emptyFileEntryWarning(), false;
+
+ Q_CHECK_FILE_NAME(srcPath, false);
+ Q_CHECK_FILE_NAME(tgtPath, false);
#if defined(RENAME_NOREPLACE) && QT_CONFIG(renameat2)
if (renameat2(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_NOREPLACE) == 0)
@@ -1302,8 +1289,9 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
//static
bool QFileSystemEngine::renameOverwriteFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
{
- if (Q_UNLIKELY(source.isEmpty() || target.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(source, false);
+ Q_CHECK_FILE_NAME(target, false);
+
if (::rename(source.nativeFilePath().constData(), target.nativeFilePath().constData()) == 0)
return true;
error = QSystemError(errno, QSystemError::StandardLibraryError);
@@ -1313,8 +1301,7 @@ bool QFileSystemEngine::renameOverwriteFile(const QFileSystemEntry &source, cons
//static
bool QFileSystemEngine::removeFile(const QFileSystemEntry &entry, QSystemError &error)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(entry, false);
if (unlink(entry.nativeFilePath().constData()) == 0)
return true;
error = QSystemError(errno, QSystemError::StandardLibraryError);
@@ -1349,8 +1336,7 @@ static mode_t toMode_t(QFile::Permissions permissions)
//static
bool QFileSystemEngine::setPermissions(const QFileSystemEntry &entry, QFile::Permissions permissions, QSystemError &error, QFileSystemMetaData *data)
{
- if (Q_UNLIKELY(entry.isEmpty()))
- return emptyFileEntryWarning(), false;
+ Q_CHECK_FILE_NAME(entry, false);
mode_t mode = toMode_t(permissions);
bool success = ::chmod(entry.nativeFilePath().constData(), mode) == 0;
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index 279918b812..0579872f8d 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -461,7 +461,9 @@ void QFileSystemEngine::clearWinStatData(QFileSystemMetaData &data)
QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
QFileSystemMetaData &data)
{
- if (data.missingFlags(QFileSystemMetaData::LinkType))
+ Q_CHECK_FILE_NAME(link, link);
+
+ if (data.missingFlags(QFileSystemMetaData::LinkType))
QFileSystemEngine::fillMetaData(link, data, QFileSystemMetaData::LinkType);
QString target;
@@ -480,6 +482,8 @@ QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
//static
QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, QFileSystemMetaData &data)
{
+ Q_CHECK_FILE_NAME(entry, entry);
+
if (data.missingFlags(QFileSystemMetaData::ExistsAttribute))
QFileSystemEngine::fillMetaData(entry, data, QFileSystemMetaData::ExistsAttribute);
@@ -492,6 +496,8 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry,
//static
QString QFileSystemEngine::nativeAbsoluteFilePath(const QString &path)
{
+ Q_CHECK_FILE_NAME(path, QString());
+
// can be //server or //server/share
QString absPath;
QVarLengthArray<wchar_t, MAX_PATH> buf(qMax(MAX_PATH, path.size() + 1));
@@ -527,6 +533,8 @@ QString QFileSystemEngine::nativeAbsoluteFilePath(const QString &path)
//static
QFileSystemEntry QFileSystemEngine::absoluteName(const QFileSystemEntry &entry)
{
+ Q_CHECK_FILE_NAME(entry, entry);
+
QString ret;
if (!entry.isRelative()) {
@@ -609,6 +617,8 @@ QByteArray fileIdWin8(HANDLE handle)
//static
QByteArray QFileSystemEngine::id(const QFileSystemEntry &entry)
{
+ Q_CHECK_FILE_NAME(entry, QByteArray());
+
QByteArray result;
#ifndef Q_OS_WINRT
@@ -999,6 +1009,7 @@ static bool isDirPath(const QString &dirPath, bool *existed);
bool QFileSystemEngine::fillMetaData(const QFileSystemEntry &entry, QFileSystemMetaData &data,
QFileSystemMetaData::MetaDataFlags what)
{
+ Q_CHECK_FILE_NAME(entry, false);
what |= QFileSystemMetaData::WinLnkType | QFileSystemMetaData::WinStatFlags;
data.entryFlags &= ~what;
@@ -1112,71 +1123,70 @@ static bool isDirPath(const QString &dirPath, bool *existed)
return fileAttrib & FILE_ATTRIBUTE_DIRECTORY;
}
+// NOTE: if \a shouldMkdirFirst is false, we assume the caller did try to mkdir
+// before calling this function.
+static bool createDirectoryWithParents(const QString &nativeName, bool shouldMkdirFirst = true)
+{
+ const auto isUNCRoot = [](const QString &nativeName) {
+ return nativeName.startsWith(QLatin1String("\\\\")) && nativeName.count(QDir::separator()) <= 3;
+ };
+ const auto isDriveName = [](const QString &nativeName) {
+ return nativeName.size() == 2 && nativeName.at(1) == QLatin1Char(':');
+ };
+ const auto isDir = [](const QString &nativeName) {
+ bool exists = false;
+ return isDirPath(nativeName, &exists) && exists;
+ };
+ // Do not try to mkdir a UNC root path or a drive letter.
+ if (isUNCRoot(nativeName) || isDriveName(nativeName))
+ return false;
+
+ if (shouldMkdirFirst) {
+ if (mkDir(nativeName))
+ return true;
+ }
+
+ const int backSlash = nativeName.lastIndexOf(QDir::separator());
+ if (backSlash < 1)
+ return false;
+
+ const QString parentNativeName = nativeName.left(backSlash);
+ if (!createDirectoryWithParents(parentNativeName))
+ return false;
+
+ // try again
+ if (mkDir(nativeName))
+ return true;
+ return isDir(nativeName);
+}
+
//static
bool QFileSystemEngine::createDirectory(const QFileSystemEntry &entry, bool createParents)
{
QString dirName = entry.filePath();
- if (createParents) {
- dirName = QDir::toNativeSeparators(QDir::cleanPath(dirName));
- // We spefically search for / so \ would break it..
- int oldslash = -1;
- if (dirName.startsWith(QLatin1String("\\\\"))) {
- // Don't try to create the root path of a UNC path;
- // CreateDirectory() will just return ERROR_INVALID_NAME.
- for (int i = 0; i < dirName.size(); ++i) {
- if (dirName.at(i) != QDir::separator()) {
- oldslash = i;
- break;
- }
- }
- if (oldslash != -1)
- oldslash = dirName.indexOf(QDir::separator(), oldslash);
- } else if (dirName.size() > 2
- && dirName.at(1) == QLatin1Char(':')) {
- // Don't try to call mkdir with just a drive letter
- oldslash = 2;
- }
- for (int slash=0; slash != -1; oldslash = slash) {
- slash = dirName.indexOf(QDir::separator(), oldslash+1);
- if (slash == -1) {
- if (oldslash == dirName.length())
- break;
- slash = dirName.length();
- }
- if (slash) {
- DWORD lastError;
- QString chunk = dirName.left(slash);
- if (!mkDir(chunk, &lastError)) {
- if (lastError == ERROR_ALREADY_EXISTS || lastError == ERROR_ACCESS_DENIED) {
- bool existed = false;
- if (isDirPath(chunk, &existed) && existed)
- continue;
-#ifdef Q_OS_WINRT
- static QThreadStorage<QString> dataLocation;
- if (!dataLocation.hasLocalData())
- dataLocation.setLocalData(QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::DataLocation)));
- static QThreadStorage<QString> tempLocation;
- if (!tempLocation.hasLocalData())
- tempLocation.setLocalData(QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::TempLocation)));
- // We try to create something outside the sandbox, which is forbidden
- // However we could still try to pass into the sandbox
- if (dataLocation.localData().startsWith(chunk) || tempLocation.localData().startsWith(chunk))
- continue;
-#endif
- }
- return false;
- }
- }
- }
+ Q_CHECK_FILE_NAME(dirName, false);
+
+ dirName = QDir::toNativeSeparators(QDir::cleanPath(dirName));
+
+ // try to mkdir this directory
+ DWORD lastError;
+ if (mkDir(dirName, &lastError))
return true;
- }
- return mkDir(entry.filePath());
+ // mkpath should return true, if the directory already exists, mkdir false.
+ if (!createParents)
+ return false;
+ if (lastError == ERROR_ALREADY_EXISTS)
+ return isDirPath(dirName, nullptr);
+
+ return createDirectoryWithParents(dirName, false);
}
//static
bool QFileSystemEngine::removeDirectory(const QFileSystemEntry &entry, bool removeEmptyParents)
{
QString dirName = entry.filePath();
+ Q_CHECK_FILE_NAME(dirName, false);
+
if (removeEmptyParents) {
dirName = QDir::toNativeSeparators(QDir::cleanPath(dirName));
for (int oldslash = 0, slash=dirName.length(); slash > 0; oldslash = slash) {
@@ -1381,6 +1391,9 @@ bool QFileSystemEngine::copyFile(const QFileSystemEntry &source, const QFileSyst
//static
bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
{
+ Q_CHECK_FILE_NAME(source, false);
+ Q_CHECK_FILE_NAME(target, false);
+
#ifndef Q_OS_WINRT
bool ret = ::MoveFile((wchar_t*)source.nativeFilePath().utf16(),
(wchar_t*)target.nativeFilePath().utf16()) != 0;
@@ -1396,6 +1409,9 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
//static
bool QFileSystemEngine::renameOverwriteFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
{
+ Q_CHECK_FILE_NAME(source, false);
+ Q_CHECK_FILE_NAME(target, false);
+
bool ret = ::MoveFileEx(reinterpret_cast<const wchar_t *>(source.nativeFilePath().utf16()),
reinterpret_cast<const wchar_t *>(target.nativeFilePath().utf16()),
MOVEFILE_REPLACE_EXISTING) != 0;
@@ -1407,6 +1423,8 @@ bool QFileSystemEngine::renameOverwriteFile(const QFileSystemEntry &source, cons
//static
bool QFileSystemEngine::removeFile(const QFileSystemEntry &entry, QSystemError &error)
{
+ Q_CHECK_FILE_NAME(entry, false);
+
bool ret = ::DeleteFile((wchar_t*)entry.nativeFilePath().utf16()) != 0;
if(!ret)
error = QSystemError(::GetLastError(), QSystemError::NativeError);
@@ -1417,6 +1435,8 @@ bool QFileSystemEngine::removeFile(const QFileSystemEntry &entry, QSystemError &
bool QFileSystemEngine::setPermissions(const QFileSystemEntry &entry, QFile::Permissions permissions, QSystemError &error,
QFileSystemMetaData *data)
{
+ Q_CHECK_FILE_NAME(entry, false);
+
Q_UNUSED(data);
int mode = 0;
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index 0d73839f8d..3042eac2f0 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -911,14 +911,7 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
}
/*! \fn bool QFSFileEngine::caseSensitive() const
- Returns \c true for Windows, false for Unix.
-*/
-
-/*! \fn bool QFSFileEngine::copy(const QString &copyName)
-
- For Windows or Apple platforms, copy the file to file \a copyName.
-
- Not implemented for other Unix platforms.
+ Returns \c false for Windows, true for Unix.
*/
/*! \fn QString QFSFileEngine::currentPath(const QString &fileName)
@@ -950,11 +943,34 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn QString QFSFileEngine::homePath()
+/*!
Returns the home path of the current user.
\sa rootPath()
*/
+QString QFSFileEngine::homePath()
+{
+ return QFileSystemEngine::homePath();
+}
+
+/*!
+ Returns the root path.
+
+ \sa homePath()
+*/
+QString QFSFileEngine::rootPath()
+{
+ return QFileSystemEngine::rootPath();
+}
+
+/*!
+ Returns the temporary path (i.e., a path in which it is safe
+ to store temporary files).
+*/
+QString QFSFileEngine::tempPath()
+{
+ return QFileSystemEngine::tempPath();
+}
/*! \fn bool QFSFileEngine::isRelativePath() const
\reimp
@@ -968,9 +984,6 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
true if successful; otherwise returns \c false.
*/
-/*! \fn bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
- \reimp
-*/
/*! \fn uint QFSFileEngine::ownerId(QAbstractFileEngine::FileOwner own) const
In Unix, if stat() is successful, the \c uid is returned if
@@ -984,35 +997,87 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn bool QFSFileEngine::remove()
- \reimp
+/*!
+ For Windows or Apple platforms, copy the file to file \a copyName.
+
+ Not implemented for other Unix platforms.
*/
+bool QFSFileEngine::copy(const QString &copyName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(copyName), error);
+ if (!ret)
+ setError(QFile::CopyError, error.toString());
+ return ret;
+}
-/*! \fn bool QFSFileEngine::rename(const QString &newName)
+/*!
\reimp
*/
+bool QFSFileEngine::remove()
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
+ d->metaData.clear();
+ if (!ret)
+ setError(QFile::RemoveError, error.toString());
+ return ret;
+}
-
-/*! \fn bool QFSFileEngine::renameOverwrite(const QString &newName)
+/*!
\reimp
*/
-
-/*! \fn bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
+bool QFSFileEngine::rename(const QString &newName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
+ if (!ret)
+ setError(QFile::RenameError, error.toString());
+ return ret;
+}
+/*!
\reimp
*/
+bool QFSFileEngine::renameOverwrite(const QString &newName)
+{
+ Q_D(QFSFileEngine);
+ QSystemError error;
+ bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
+ if (!ret)
+ setError(QFile::RenameError, error.toString());
+ return ret;
+}
-/*! \fn QString QFSFileEngine::rootPath()
- Returns the root path.
+/*!
+ \reimp
+*/
+bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
+{
+ return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
+}
- \sa homePath()
+/*!
+ \reimp
*/
+bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
+{
+ return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
+}
-/*! \fn bool QFSFileEngine::setCurrentPath(const QString &path)
+
+/*!
Sets the current path (e.g., for QDir), to \a path. Returns \c true if the
new path exists; otherwise this function does nothing, and returns \c false.
\sa currentPath()
*/
+bool QFSFileEngine::setCurrentPath(const QString &path)
+{
+ return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
+}
/*! \fn bool QFSFileEngine::setPermissions(uint perms)
\reimp
@@ -1022,11 +1087,6 @@ bool QFSFileEngine::supportsExtension(Extension extension) const
\reimp
*/
-/*! \fn QString QFSFileEngine::tempPath()
- Returns the temporary path (i.e., a path in which it is safe
- to store temporary files).
-*/
-
/*! \fn QAbstractFileEngine::FileFlags QFSFileEnginePrivate::getPermissions(QAbstractFileEngine::FileFlags type) const
\internal
*/
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index d4983c72af..4610e9306c 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -304,54 +304,6 @@ bool QFSFileEnginePrivate::nativeIsSequential() const
return isSequentialFdFh();
}
-bool QFSFileEngine::remove()
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
- d->metaData.clear();
- if (!ret) {
- setError(QFile::RemoveError, error.toString());
- }
- return ret;
-}
-
-bool QFSFileEngine::copy(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret) {
- setError(QFile::CopyError, error.toString());
- }
- return ret;
-}
-
-bool QFSFileEngine::renameOverwrite(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
-
- if (!ret)
- setError(QFile::RenameError, error.toString());
-
- return ret;
-}
-
-bool QFSFileEngine::rename(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
-
- if (!ret) {
- setError(QFile::RenameError, error.toString());
- }
-
- return ret;
-}
-
bool QFSFileEngine::link(const QString &newName)
{
Q_D(QFSFileEngine);
@@ -368,45 +320,16 @@ qint64 QFSFileEnginePrivate::nativeSize() const
return sizeFdFh();
}
-bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
-{
- return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
-}
-
-bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
-{
- return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
-}
-
bool QFSFileEngine::caseSensitive() const
{
return true;
}
-bool QFSFileEngine::setCurrentPath(const QString &path)
-{
- return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
-}
-
QString QFSFileEngine::currentPath(const QString &)
{
return QFileSystemEngine::currentPath().filePath();
}
-QString QFSFileEngine::homePath()
-{
- return QFileSystemEngine::homePath();
-}
-
-QString QFSFileEngine::rootPath()
-{
- return QFileSystemEngine::rootPath();
-}
-
-QString QFSFileEngine::tempPath()
-{
- return QFileSystemEngine::tempPath();
-}
QFileInfoList QFSFileEngine::drives()
{
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 19cc3e6402..5b868cc447 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -443,66 +443,11 @@ bool QFSFileEnginePrivate::nativeIsSequential() const
#endif
}
-bool QFSFileEngine::remove()
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::removeFile(d->fileEntry, error);
- if (!ret)
- setError(QFile::RemoveError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::copy(const QString &copyName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::copyFile(d->fileEntry, QFileSystemEntry(copyName), error);
- if (!ret)
- setError(QFile::CopyError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::rename(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret)
- setError(QFile::RenameError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::renameOverwrite(const QString &newName)
-{
- Q_D(QFSFileEngine);
- QSystemError error;
- bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
- if (!ret)
- setError(QFile::RenameError, error.toString());
- return ret;
-}
-
-bool QFSFileEngine::mkdir(const QString &name, bool createParentDirectories) const
-{
- return QFileSystemEngine::createDirectory(QFileSystemEntry(name), createParentDirectories);
-}
-
-bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) const
-{
- return QFileSystemEngine::removeDirectory(QFileSystemEntry(name), recurseParentDirectories);
-}
-
bool QFSFileEngine::caseSensitive() const
{
return false;
}
-bool QFSFileEngine::setCurrentPath(const QString &path)
-{
- return QFileSystemEngine::setCurrentPath(QFileSystemEntry(path));
-}
-
QString QFSFileEngine::currentPath(const QString &fileName)
{
#if !defined(Q_OS_WINRT)
@@ -530,21 +475,6 @@ QString QFSFileEngine::currentPath(const QString &fileName)
#endif // Q_OS_WINRT
}
-QString QFSFileEngine::homePath()
-{
- return QFileSystemEngine::homePath();
-}
-
-QString QFSFileEngine::rootPath()
-{
- return QFileSystemEngine::rootPath();
-}
-
-QString QFSFileEngine::tempPath()
-{
- return QFileSystemEngine::tempPath();
-}
-
#if !defined(Q_OS_WINRT)
// cf QStorageInfo::isReady
static inline bool isDriveReady(const wchar_t *path)
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index fc7122d904..e485310e86 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -420,7 +420,10 @@ QString QSettingsPrivate::variantToString(const QVariant &v)
case QVariant::UInt:
case QVariant::Bool:
case QVariant::Double:
- case QVariant::KeySequence: {
+#if QT_CONFIG(shortcut)
+ case QVariant::KeySequence:
+#endif
+ {
result = v.toString();
if (result.contains(QChar::Null))
result = QLatin1String("@String(") + result + QLatin1Char(')');
diff --git a/src/corelib/io/qstandardpaths_unix.cpp b/src/corelib/io/qstandardpaths_unix.cpp
index c35d7adc9f..5f4955c53f 100644
--- a/src/corelib/io/qstandardpaths_unix.cpp
+++ b/src/corelib/io/qstandardpaths_unix.cpp
@@ -142,36 +142,45 @@ QString QStandardPaths::writableLocation(StandardLocation type)
}
case RuntimeLocation:
{
- const uint myUid = uint(geteuid());
// http://standards.freedesktop.org/basedir-spec/latest/
+ const uint myUid = uint(geteuid());
+ // since the current user is the owner, set both xxxUser and xxxOwner
+ const QFile::Permissions wantedPerms = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser
+ | QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner;
QFileInfo fileInfo;
QString xdgRuntimeDir = QFile::decodeName(qgetenv("XDG_RUNTIME_DIR"));
if (xdgRuntimeDir.isEmpty()) {
const QString userName = QFileSystemEngine::resolveUserName(myUid);
xdgRuntimeDir = QDir::tempPath() + QLatin1String("/runtime-") + userName;
fileInfo.setFile(xdgRuntimeDir);
- if (!fileInfo.isDir()) {
- if (!QDir().mkdir(xdgRuntimeDir)) {
- qErrnoWarning("QStandardPaths: error creating runtime directory %ls",
- qUtf16Printable(xdgRuntimeDir));
- return QString();
- }
- }
#ifndef Q_OS_WASM
qWarning("QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '%ls'", qUtf16Printable(xdgRuntimeDir));
#endif
} else {
fileInfo.setFile(xdgRuntimeDir);
- if (!fileInfo.exists()) {
- qWarning("QStandardPaths: XDG_RUNTIME_DIR points to non-existing path '%ls', "
- "please create it with 0700 permissions.", qUtf16Printable(xdgRuntimeDir));
- return QString();
- }
+ }
+ if (fileInfo.exists()) {
if (!fileInfo.isDir()) {
qWarning("QStandardPaths: XDG_RUNTIME_DIR points to '%ls' which is not a directory",
qUtf16Printable(xdgRuntimeDir));
return QString();
}
+ } else {
+ QFileSystemEntry entry(xdgRuntimeDir);
+ if (!QFileSystemEngine::createDirectory(entry, false)) {
+ if (errno != EEXIST) {
+ qErrnoWarning("QStandardPaths: error creating runtime directory %ls",
+ qUtf16Printable(xdgRuntimeDir));
+ return QString();
+ }
+ } else {
+ QSystemError error;
+ if (!QFileSystemEngine::setPermissions(entry, wantedPerms, error)) {
+ qWarning("QStandardPaths: could not set correct permissions on runtime directory %ls: %ls",
+ qUtf16Printable(xdgRuntimeDir), qUtf16Printable(error.toString()));
+ return QString();
+ }
+ }
}
// "The directory MUST be owned by the user"
if (fileInfo.ownerId() != myUid) {
@@ -181,17 +190,12 @@ QString QStandardPaths::writableLocation(StandardLocation type)
return QString();
}
// "and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700."
- // since the current user is the owner, set both xxxUser and xxxOwner
- const QFile::Permissions wantedPerms = QFile::ReadUser | QFile::WriteUser | QFile::ExeUser
- | QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner;
if (fileInfo.permissions() != wantedPerms) {
- QFile file(xdgRuntimeDir);
- if (!file.setPermissions(wantedPerms)) {
- qWarning("QStandardPaths: could not set correct permissions on runtime directory %ls: %ls",
- qUtf16Printable(xdgRuntimeDir), qUtf16Printable(file.errorString()));
- return QString();
- }
+ qWarning("QStandardPaths: wrong permissions on runtime directory %ls, %x instead of %x",
+ qUtf16Printable(xdgRuntimeDir), uint(fileInfo.permissions()), uint(wantedPerms));
+ return QString();
}
+
return xdgRuntimeDir;
}
default:
diff --git a/src/corelib/io/qt_attribution.json b/src/corelib/io/qt_attribution.json
index 9b7dcc6b54..fe31e1474b 100644
--- a/src/corelib/io/qt_attribution.json
+++ b/src/corelib/io/qt_attribution.json
@@ -20,7 +20,7 @@ supported by Qt (by the QNetworkCookieJar class).",
"Homepage": "Consult https://github.com/publicsuffix/list for the sha1 but download from ...",
"Homepage": "http://publicsuffix.org/",
- "Version": "d6331e2b65fffbe9fe299dae1689db8de8fd6190, fetched on 2019-02-20",
+ "Version": "3bd641472776a5df4a8c6407da4a4846282cba94, fetched on 2019-10-23",
"License": "Mozilla Public License 2.0",
"LicenseFile": "PSL-LICENSE.txt",
"LicenseId": "MPL-2.0",
diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h
index 043e84e5ab..9ff688decb 100644
--- a/src/corelib/io/qurltlds_p.h
+++ b/src/corelib/io/qurltlds_p.h
@@ -61,14137 +61,14302 @@ QT_BEGIN_NAMESPACE
// for instructions see the program at
// util/corelib/qurl-generateTLDs/
-static const quint16 tldCount = 8666;
+static const quint16 tldCount = 8799;
static const quint32 tldIndices[] = {
0,
-7,
-24,
-31,
-58,
-65,
-79,
-103,
-137,
-137,
-158,
-194,
-220,
-255,
-255,
-298,
-298,
-298,
-298,
-298,
-311,
-311,
-311,
-311,
-323,
-359,
-383,
-383,
-400,
-400,
-421,
-421,
-441,
-441,
-448,
-490,
-490,
-497,
-502,
-520,
-542,
-549,
-597,
-611,
-611,
-635,
-642,
-649,
-668,
-683,
-683,
-683,
-700,
-705,
+29,
+29,
+36,
+36,
+69,
+83,
+97,
+116,
+123,
+133,
+140,
+171,
+186,
+193,
+200,
+200,
+200,
+200,
+225,
+263,
+272,
+305,
+332,
+332,
+378,
+388,
+395,
+425,
+444,
+449,
+449,
+459,
+459,
+459,
+459,
+484,
+513,
+538,
+538,
+538,
+563,
+563,
+580,
+599,
+618,
+618,
+660,
+670,
+670,
+670,
+670,
+682,
712,
-724,
-724,
-740,
-765,
-765,
-776,
-787,
-802,
-810,
-820,
-841,
-848,
-848,
-858,
-858,
-864,
-871,
-871,
-871,
-881,
-898,
-930,
-958,
-972,
-985,
-999,
-1006,
-1013,
+718,
+750,
+790,
+790,
+812,
+834,
+851,
+869,
+912,
+937,
+977,
+977,
+977,
+977,
+977,
+987,
+987,
+1002,
+1015,
+1024,
1030,
-1056,
-1063,
-1086,
-1086,
-1086,
-1093,
-1100,
-1107,
-1117,
-1117,
-1117,
-1117,
-1128,
-1153,
-1153,
-1180,
-1186,
-1186,
-1193,
-1221,
-1239,
-1239,
-1252,
-1279,
-1286,
-1286,
-1293,
-1307,
-1325,
-1348,
-1348,
-1348,
-1355,
-1355,
-1355,
-1355,
-1373,
-1395,
-1395,
+1051,
+1051,
+1061,
+1070,
+1076,
+1076,
+1076,
+1094,
+1129,
+1158,
+1195,
+1195,
+1195,
+1215,
+1234,
+1234,
+1245,
+1245,
+1245,
+1245,
+1245,
+1268,
+1276,
+1291,
+1297,
+1304,
+1316,
+1337,
+1379,
+1397,
+1408,
1413,
-1440,
-1440,
-1440,
-1440,
-1447,
-1457,
-1464,
-1498,
-1498,
-1498,
-1572,
-1606,
-1613,
-1613,
-1613,
-1620,
-1625,
-1632,
-1651,
-1658,
-1672,
-1688,
-1704,
+1429,
+1429,
+1429,
+1429,
+1444,
+1467,
+1476,
+1476,
+1505,
+1505,
+1505,
+1523,
+1523,
+1547,
+1547,
+1566,
+1590,
+1590,
+1600,
+1612,
+1612,
+1612,
+1612,
+1631,
+1674,
1712,
1712,
-1729,
+1722,
+1730,
1751,
-1757,
-1771,
-1787,
-1831,
-1831,
-1831,
-1831,
-1848,
-1919,
-1926,
-1926,
-1926,
-1949,
-1961,
-1961,
-1981,
-2001,
-2001,
-2001,
-2009,
-2028,
-2028,
-2035,
-2054,
-2054,
-2077,
-2107,
+1751,
+1769,
+1769,
+1769,
+1784,
+1784,
+1817,
+1817,
+1817,
+1817,
+1817,
+1817,
+1837,
+1837,
+1850,
+1850,
+1850,
+1850,
+1871,
+1914,
+1914,
+1932,
+1960,
+1960,
+1967,
+1977,
+1977,
+1977,
+1977,
+2015,
+2038,
+2071,
+2090,
+2090,
+2105,
2121,
-2137,
+2136,
+2157,
2157,
-2196,
-2196,
-2217,
-2235,
-2235,
-2243,
-2243,
-2259,
-2259,
-2283,
-2290,
-2290,
-2316,
-2329,
-2356,
-2356,
-2356,
-2356,
-2356,
-2393,
-2414,
-2428,
-2428,
-2440,
-2481,
-2487,
-2487,
-2487,
-2507,
-2507,
-2507,
-2546,
-2562,
-2562,
-2580,
-2607,
-2614,
-2626,
-2649,
-2649,
-2665,
-2675,
-2682,
-2721,
-2731,
-2737,
-2765,
-2770,
-2770,
-2803,
-2803,
-2813,
-2833,
-2855,
-2855,
-2855,
-2863,
-2863,
-2863,
-2880,
-2888,
-2896,
-2896,
-2903,
-2903,
-2910,
-2910,
+2209,
+2216,
+2231,
+2231,
+2231,
+2231,
+2231,
+2238,
+2238,
+2247,
+2271,
+2318,
+2331,
+2346,
+2359,
+2368,
+2368,
+2368,
+2377,
+2377,
+2377,
+2377,
+2386,
+2391,
+2391,
+2391,
+2398,
+2398,
+2405,
+2461,
+2485,
+2513,
+2513,
+2543,
+2550,
+2550,
+2579,
+2579,
+2579,
+2579,
+2590,
+2630,
+2630,
+2673,
+2673,
+2673,
+2673,
+2673,
+2700,
+2700,
+2700,
+2706,
+2706,
+2767,
+2786,
+2794,
+2818,
+2818,
+2824,
+2835,
+2850,
+2850,
+2868,
+2868,
+2868,
+2875,
+2875,
+2894,
+2912,
+2928,
2928,
2928,
-2935,
-2999,
-2999,
-3031,
-3031,
-3050,
-3100,
-3141,
-3141,
-3141,
-3147,
-3185,
-3185,
-3197,
-3197,
-3234,
-3241,
-3248,
-3257,
-3272,
-3272,
-3272,
-3309,
-3328,
-3328,
-3346,
-3356,
-3356,
-3356,
-3356,
-3364,
-3392,
-3392,
-3413,
-3441,
-3465,
-3465,
-3465,
-3465,
-3482,
-3482,
-3487,
-3487,
-3487,
-3487,
-3487,
-3497,
-3497,
-3510,
-3510,
-3519,
-3519,
-3519,
-3519,
-3519,
-3519,
-3530,
-3530,
-3541,
-3568,
-3568,
-3568,
-3586,
-3586,
-3606,
-3627,
-3637,
-3637,
-3645,
-3667,
-3667,
-3708,
-3721,
-3740,
-3762,
-3762,
-3762,
-3762,
-3762,
-3762,
-3775,
-3775,
-3790,
-3812,
-3812,
-3818,
-3818,
-3834,
-3845,
-3881,
-3904,
-3904,
+2946,
+2946,
+2956,
+2956,
+2956,
+2956,
+2956,
+2956,
+2974,
+2974,
+2995,
+2995,
+2995,
+3008,
+3014,
+3022,
+3060,
+3060,
+3073,
+3120,
+3127,
+3135,
+3145,
+3200,
+3210,
+3210,
+3210,
+3210,
+3210,
+3210,
+3210,
+3227,
+3244,
+3255,
+3276,
+3285,
+3285,
+3293,
+3293,
+3293,
+3293,
+3332,
+3377,
+3377,
+3384,
+3402,
+3416,
+3416,
+3442,
+3442,
+3442,
+3442,
+3461,
+3461,
+3461,
+3474,
+3474,
+3499,
+3529,
+3540,
+3591,
+3602,
+3602,
+3602,
+3602,
+3624,
+3661,
+3661,
+3668,
+3668,
+3700,
+3733,
+3737,
+3753,
+3799,
+3817,
+3839,
+3839,
+3839,
+3863,
+3894,
3910,
-3937,
-3937,
-3937,
-3943,
-3950,
-3950,
-3969,
-3999,
-4017,
-4017,
-4017,
-4017,
-4033,
-4033,
-4033,
-4033,
-4098,
-4135,
-4159,
-4159,
-4159,
-4159,
-4159,
-4169,
-4189,
-4205,
-4239,
-4261,
-4261,
-4261,
-4261,
-4261,
-4261,
-4278,
-4278,
-4293,
-4308,
-4317,
-4336,
-4343,
-4371,
-4371,
-4376,
-4376,
-4376,
-4399,
-4409,
-4424,
-4451,
-4473,
-4473,
-4473,
-4489,
-4489,
-4526,
-4532,
-4532,
-4538,
-4570,
-4570,
-4570,
-4613,
-4632,
-4643,
-4688,
-4688,
-4726,
-4771,
-4783,
-4799,
-4799,
-4865,
-4865,
-4865,
-4885,
-4909,
-4909,
-4926,
-4926,
-4956,
-4994,
-5010,
-5010,
-5020,
-5041,
-5056,
-5075,
-5092,
-5122,
-5122,
-5122,
-5122,
-5130,
-5157,
-5164,
+3920,
+3920,
+3936,
+3936,
+3947,
+3981,
+3993,
+3993,
+4019,
+4019,
+4023,
+4030,
+4038,
+4038,
+4038,
+4038,
+4038,
+4038,
+4038,
+4038,
+4038,
+4054,
+4054,
+4069,
+4082,
+4088,
+4116,
+4116,
+4120,
+4146,
+4160,
+4177,
+4177,
+4195,
+4204,
+4204,
+4204,
+4214,
+4214,
+4214,
+4229,
+4229,
+4229,
+4229,
+4244,
+4257,
+4265,
+4265,
+4279,
+4290,
+4329,
+4385,
+4385,
+4385,
+4385,
+4396,
+4400,
+4447,
+4465,
+4465,
+4471,
+4492,
+4507,
+4513,
+4513,
+4525,
+4531,
+4531,
+4558,
+4575,
+4591,
+4617,
+4653,
+4658,
+4658,
+4666,
+4712,
+4712,
+4718,
+4718,
+4735,
+4745,
+4745,
+4751,
+4751,
+4772,
+4812,
+4835,
+4835,
+4842,
+4864,
+4864,
+4881,
+4881,
+4897,
+4908,
+4917,
+4933,
+4948,
+4968,
+4968,
+4968,
+4968,
+4974,
+4998,
+5031,
+5038,
+5053,
+5067,
+5083,
+5116,
+5126,
+5133,
+5155,
+5155,
+5155,
+5155,
+5155,
+5155,
+5155,
+5168,
+5173,
+5173,
5177,
-5194,
-5200,
-5200,
-5211,
-5224,
-5241,
-5241,
-5273,
-5273,
-5273,
-5294,
-5294,
-5294,
-5343,
-5343,
-5350,
-5386,
+5188,
+5226,
+5226,
+5271,
+5271,
+5282,
+5282,
+5296,
+5313,
+5313,
+5313,
+5333,
+5333,
+5333,
+5342,
+5358,
+5358,
+5370,
+5374,
+5396,
+5396,
5396,
-5403,
+5413,
+5413,
+5413,
+5413,
+5413,
+5413,
+5413,
5417,
-5449,
-5463,
-5463,
-5480,
-5490,
-5541,
-5591,
-5597,
-5604,
-5604,
-5625,
-5639,
-5649,
-5649,
-5649,
-5666,
-5685,
-5705,
-5705,
-5705,
-5723,
-5772,
-5783,
-5790,
-5804,
-5837,
-5878,
-5915,
-5915,
-5915,
-5937,
-5984,
-5989,
-5989,
-5989,
-6006,
-6051,
-6051,
-6073,
-6080,
-6080,
-6089,
-6100,
-6149,
-6164,
-6169,
-6207,
-6214,
-6242,
-6278,
-6284,
-6290,
-6303,
-6326,
-6383,
-6399,
-6416,
-6416,
-6437,
-6444,
-6457,
-6463,
-6463,
-6477,
-6520,
-6535,
-6555,
-6555,
-6555,
-6555,
-6603,
-6652,
-6652,
-6670,
-6691,
-6698,
-6698,
-6712,
-6712,
-6719,
-6719,
-6726,
-6739,
-6778,
-6778,
-6797,
-6797,
-6807,
-6807,
-6830,
-6830,
-6842,
-6865,
-6865,
-6865,
-6869,
-6875,
-6888,
-6888,
-6888,
-6910,
-6926,
+5417,
+5467,
+5473,
+5473,
+5524,
+5539,
+5578,
+5585,
+5585,
+5585,
+5600,
+5600,
+5600,
+5600,
+5631,
+5642,
+5642,
+5642,
+5642,
+5669,
+5676,
+5683,
+5690,
+5708,
+5721,
+5721,
+5734,
+5743,
+5758,
+5799,
+5817,
+5835,
+5835,
+5835,
+5841,
+5841,
+5872,
+5872,
+5888,
+5904,
+5917,
+5952,
+5952,
+5997,
+6010,
+6044,
+6054,
+6078,
+6078,
+6116,
+6128,
+6128,
+6128,
+6137,
+6137,
+6143,
+6143,
+6143,
+6155,
+6160,
+6160,
+6160,
+6160,
+6160,
+6173,
+6173,
+6173,
+6189,
+6189,
+6189,
+6205,
+6237,
+6237,
+6252,
+6252,
+6263,
+6263,
+6296,
+6321,
+6321,
+6321,
+6328,
+6343,
+6343,
+6373,
+6391,
+6391,
+6426,
+6426,
+6436,
+6475,
+6489,
+6507,
+6511,
+6511,
+6515,
+6530,
+6530,
+6548,
+6548,
+6552,
+6552,
+6572,
+6572,
+6622,
+6651,
+6651,
+6668,
+6668,
+6693,
+6731,
+6731,
+6746,
+6775,
+6787,
+6787,
+6787,
+6787,
+6787,
+6787,
+6787,
+6787,
+6787,
+6802,
+6806,
+6810,
+6823,
+6823,
+6834,
+6870,
+6874,
6933,
-6944,
-6964,
-6980,
-6980,
-7024,
-7024,
-7024,
-7024,
-7036,
-7058,
-7068,
-7068,
-7083,
-7087,
-7109,
-7117,
-7124,
-7143,
-7159,
-7194,
-7194,
-7194,
-7201,
-7208,
+6954,
+6966,
+6966,
+6966,
+6966,
+6982,
+6982,
+6982,
+6988,
+6998,
+7028,
+7037,
+7037,
+7070,
+7070,
+7098,
+7098,
+7098,
+7127,
+7153,
+7153,
+7164,
+7164,
+7174,
+7174,
+7174,
+7205,
+7205,
+7224,
7224,
-7231,
-7262,
-7309,
-7323,
-7352,
-7352,
-7359,
-7366,
-7366,
-7381,
-7381,
-7412,
-7412,
-7449,
-7459,
-7459,
-7487,
-7487,
-7487,
-7487,
-7527,
-7545,
-7559,
-7559,
-7559,
-7559,
-7559,
-7564,
-7564,
-7595,
-7602,
-7626,
-7643,
-7655,
-7655,
-7682,
-7701,
-7725,
-7736,
-7751,
-7765,
-7832,
-7852,
-7906,
-7965,
-7965,
-7976,
-7976,
-8024,
-8041,
-8058,
-8071,
-8084,
-8105,
-8105,
-8115,
-8144,
-8160,
-8182,
-8210,
+7240,
+7240,
+7284,
+7284,
+7284,
+7284,
+7284,
+7284,
+7301,
+7318,
+7364,
+7364,
+7374,
+7401,
+7424,
+7424,
+7443,
+7448,
+7448,
+7448,
+7448,
+7448,
+7462,
+7462,
+7462,
+7462,
+7462,
+7462,
+7462,
+7466,
+7466,
+7488,
+7488,
+7498,
+7502,
+7520,
+7530,
+7530,
+7530,
+7534,
+7540,
+7540,
+7540,
+7547,
+7547,
+7547,
+7561,
+7571,
+7571,
+7571,
+7582,
+7582,
+7603,
+7603,
+7617,
+7628,
+7647,
+7666,
+7666,
+7666,
+7694,
+7707,
+7738,
+7750,
+7768,
+7825,
+7864,
+7880,
+7880,
+7880,
+7880,
+7880,
+7893,
+7893,
+7893,
+7898,
+7911,
+7917,
+7944,
+7944,
+7989,
+7989,
+7989,
+7989,
+7989,
+7989,
+8006,
+8037,
+8037,
+8037,
+8063,
+8074,
+8091,
+8113,
+8135,
+8148,
+8148,
+8162,
+8162,
+8169,
+8169,
+8176,
+8197,
+8197,
+8197,
+8216,
8216,
-8229,
-8229,
-8234,
-8282,
-8282,
-8282,
-8289,
-8305,
-8312,
-8312,
-8312,
-8312,
-8319,
+8216,
+8230,
+8230,
+8240,
+8240,
+8246,
+8257,
+8262,
+8279,
+8279,
+8286,
+8286,
+8296,
+8313,
+8313,
+8334,
+8339,
+8339,
+8353,
+8353,
+8363,
8363,
-8401,
-8408,
-8415,
-8415,
-8425,
-8454,
-8464,
-8464,
-8482,
-8505,
-8542,
-8542,
-8557,
-8603,
-8629,
-8629,
-8643,
-8643,
-8667,
-8690,
-8690,
-8714,
-8721,
-8721,
-8726,
-8746,
+8370,
+8370,
+8384,
+8384,
+8430,
+8458,
+8458,
+8492,
+8511,
+8511,
+8518,
+8565,
+8565,
+8565,
+8565,
+8565,
+8637,
+8665,
+8675,
+8701,
+8708,
+8708,
+8744,
+8754,
+8754,
8766,
-8783,
-8790,
-8804,
-8833,
-8840,
-8863,
-8870,
-8884,
-8934,
-8956,
-8956,
-8956,
-8956,
-8965,
-8991,
-8991,
-8997,
-9007,
-9007,
-9013,
-9031,
-9031,
-9038,
-9059,
-9066,
-9073,
-9090,
-9105,
-9109,
-9116,
-9120,
-9120,
-9178,
-9233,
-9241,
-9259,
-9275,
-9275,
-9275,
-9292,
-9299,
-9299,
-9318,
-9332,
-9351,
-9358,
-9400,
-9422,
-9497,
-9513,
-9517,
-9517,
-9530,
-9537,
-9552,
-9592,
-9592,
-9608,
-9627,
-9643,
-9643,
-9643,
-9653,
-9653,
-9683,
-9691,
-9723,
-9733,
-9758,
-9762,
-9762,
-9762,
-9842,
-9842,
-9871,
-9871,
-9890,
-9904,
-9911,
-9918,
-9932,
-9949,
-9969,
-10000,
-10024,
-10024,
-10055,
-10055,
-10082,
-10098,
-10098,
-10126,
-10126,
-10138,
-10138,
-10147,
-10174,
-10174,
-10174,
+8814,
+8826,
+8838,
+8865,
+8865,
+8882,
+8892,
+8892,
+8899,
+8899,
+8905,
+8918,
+8928,
+8935,
+8962,
+8975,
+8975,
+8986,
+9019,
+9019,
+9063,
+9071,
+9077,
+9089,
+9111,
+9118,
+9118,
+9118,
+9118,
+9139,
+9165,
+9202,
+9212,
+9225,
+9237,
+9267,
+9291,
+9291,
+9291,
+9322,
+9322,
+9330,
+9330,
+9330,
+9338,
+9355,
+9423,
+9423,
+9429,
+9447,
+9468,
+9480,
+9480,
+9480,
+9545,
+9600,
+9606,
+9615,
+9615,
+9640,
+9671,
+9671,
+9671,
+9744,
+9744,
+9783,
+9783,
+9783,
+9796,
+9814,
+9833,
+9838,
+9857,
+9857,
+9864,
+9902,
+9922,
+9944,
+9944,
+9976,
+9976,
+10001,
+10006,
+10023,
+10023,
+10029,
+10037,
+10054,
+10054,
+10054,
+10072,
+10072,
+10072,
+10094,
+10112,
+10144,
+10158,
10174,
10196,
-10203,
-10210,
-10210,
-10210,
-10233,
-10245,
-10252,
-10252,
-10282,
-10289,
-10300,
-10346,
-10369,
-10375,
-10402,
-10402,
-10402,
-10402,
-10423,
-10444,
-10453,
-10473,
-10497,
-10503,
-10513,
-10531,
-10579,
-10595,
-10602,
-10602,
-10602,
-10627,
-10648,
-10659,
-10659,
-10674,
-10674,
-10681,
-10706,
-10706,
-10722,
-10760,
-10760,
-10772,
-10785,
-10785,
-10785,
-10796,
-10815,
-10836,
-10836,
-10844,
-10875,
-10875,
-10875,
-10875,
-10885,
-10885,
-10892,
-10892,
-10892,
-10892,
-10920,
-10920,
-10963,
-10963,
-10963,
-10970,
-10977,
-11007,
-11007,
-11007,
-11007,
-11007,
-11031,
-11041,
-11051,
-11070,
-11078,
-11078,
-11078,
-11091,
-11101,
-11101,
-11123,
-11129,
-11139,
-11155,
-11191,
-11233,
-11233,
-11233,
-11244,
-11244,
-11256,
-11262,
-11262,
-11262,
-11262,
-11278,
-11285,
-11285,
-11314,
-11335,
-11341,
-11359,
-11359,
-11387,
+10213,
+10213,
+10235,
+10254,
+10279,
+10291,
+10311,
+10326,
+10366,
+10383,
+10393,
+10399,
+10399,
+10399,
+10431,
+10431,
+10431,
+10431,
+10431,
+10440,
+10459,
+10472,
+10472,
+10495,
+10507,
+10537,
+10582,
+10598,
+10612,
+10626,
+10666,
+10684,
+10690,
+10710,
+10725,
+10765,
+10783,
+10783,
+10802,
+10825,
+10825,
+10843,
+10853,
+10865,
+10902,
+10902,
+10953,
+10953,
+10984,
+10990,
+10990,
+10990,
+10990,
+11027,
+11036,
+11036,
+11036,
+11036,
+11057,
+11073,
+11073,
+11073,
+11082,
+11082,
+11082,
+11137,
+11142,
+11152,
+11168,
+11181,
+11181,
+11181,
+11181,
+11199,
+11199,
+11212,
+11226,
+11253,
+11271,
+11287,
+11311,
+11322,
+11340,
+11356,
+11380,
+11380,
11401,
-11408,
-11442,
-11442,
-11463,
-11463,
-11470,
-11492,
-11492,
-11492,
-11492,
-11503,
-11537,
+11407,
+11420,
+11475,
+11514,
+11523,
+11529,
+11529,
11547,
11572,
11572,
-11591,
-11610,
-11610,
-11618,
-11636,
-11652,
-11652,
-11652,
-11675,
-11675,
-11675,
-11675,
+11588,
+11588,
+11588,
+11602,
+11602,
+11602,
+11608,
+11625,
+11641,
+11676,
+11683,
+11683,
+11683,
11699,
-11710,
-11710,
-11738,
-11748,
-11748,
-11748,
-11768,
-11768,
-11768,
-11768,
-11768,
-11778,
-11778,
-11788,
-11812,
-11820,
-11820,
-11835,
+11706,
+11706,
+11706,
+11723,
+11729,
+11729,
+11761,
+11767,
+11767,
+11767,
+11799,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11810,
+11823,
+11838,
+11838,
+11846,
11852,
-11872,
-11872,
-11929,
-11929,
-11933,
-11952,
-11962,
-11962,
-11979,
-11979,
-11979,
-11992,
-11999,
-12014,
-12014,
-12023,
-12023,
-12023,
-12023,
-12023,
-12023,
-12041,
-12041,
+11871,
+11887,
+11905,
+11920,
+11936,
+11968,
+11968,
+11981,
+11981,
+11987,
+12004,
+12004,
+12030,
+12043,
+12059,
12066,
12066,
-12076,
-12076,
-12076,
-12076,
-12087,
-12099,
-12114,
-12137,
-12137,
-12146,
-12166,
-12175,
-12185,
-12201,
-12220,
-12239,
+12066,
+12096,
+12096,
+12096,
+12105,
+12136,
+12159,
+12159,
+12159,
+12174,
+12196,
+12232,
+12237,
+12237,
12253,
-12291,
-12304,
-12304,
-12315,
+12269,
+12269,
+12269,
+12282,
+12289,
+12289,
+12306,
12323,
-12342,
-12342,
-12351,
-12357,
-12361,
-12381,
-12381,
-12397,
-12424,
-12452,
-12475,
-12481,
-12481,
-12481,
-12485,
-12502,
-12535,
-12535,
-12552,
-12566,
-12570,
-12601,
+12333,
+12333,
+12349,
+12349,
+12384,
+12422,
+12440,
+12455,
+12472,
+12472,
+12472,
+12472,
+12491,
+12505,
+12511,
+12546,
+12569,
+12569,
+12573,
+12573,
+12595,
+12595,
12605,
12605,
-12611,
-12623,
-12633,
-12633,
-12642,
-12642,
-12642,
-12642,
-12646,
-12656,
-12656,
-12656,
-12656,
-12677,
-12677,
-12714,
-12720,
-12734,
-12734,
-12734,
-12751,
-12774,
-12794,
-12806,
-12806,
-12819,
-12819,
-12819,
-12819,
-12836,
-12836,
-12877,
-12877,
-12877,
-12893,
-12909,
-12936,
-12936,
-12936,
-12936,
-12950,
-12950,
-12950,
-12950,
-12969,
-12974,
-13000,
-13000,
-13028,
-13034,
-13051,
-13051,
-13051,
-13051,
-13051,
-13067,
-13067,
-13071,
-13071,
-13087,
-13113,
-13164,
-13204,
+12605,
+12612,
+12636,
+12654,
+12691,
+12691,
+12713,
+12728,
+12744,
+12754,
+12772,
+12784,
+12810,
+12849,
+12849,
+12873,
+12887,
+12887,
+12887,
+12887,
+12887,
+12910,
+12930,
+12973,
+13002,
+13015,
+13058,
+13058,
+13069,
+13080,
+13080,
+13080,
+13080,
+13086,
+13086,
+13096,
+13114,
+13138,
+13160,
+13160,
+13160,
+13160,
+13160,
+13160,
+13160,
+13178,
+13188,
13204,
-13211,
-13226,
-13226,
-13230,
-13230,
+13224,
+13224,
+13224,
+13224,
+13234,
+13243,
+13260,
+13260,
+13260,
13260,
-13276,
-13301,
-13332,
+13266,
+13281,
+13315,
+13315,
13340,
-13357,
-13357,
-13357,
-13374,
-13397,
-13410,
-13433,
-13445,
-13481,
-13503,
-13532,
-13532,
-13584,
-13602,
-13622,
-13650,
-13675,
-13682,
-13682,
-13701,
-13710,
-13721,
-13721,
-13735,
-13735,
-13771,
-13777,
-13797,
-13817,
-13817,
-13817,
-13837,
-13837,
-13842,
-13861,
-13892,
-13892,
-13937,
-13955,
-13994,
-13994,
-13994,
+13347,
+13347,
+13347,
+13378,
+13378,
+13378,
+13378,
+13404,
+13414,
+13430,
+13450,
+13471,
+13475,
+13479,
+13479,
+13494,
+13494,
+13494,
+13494,
+13494,
+13494,
+13494,
+13494,
+13513,
+13513,
+13513,
+13542,
+13551,
+13551,
+13551,
+13551,
+13551,
+13551,
+13560,
+13569,
+13569,
+13569,
+13569,
+13599,
+13599,
+13610,
+13623,
+13668,
+13676,
+13676,
+13683,
+13702,
+13702,
+13716,
+13716,
+13733,
+13733,
+13744,
+13766,
+13775,
+13775,
+13775,
+13790,
+13815,
+13822,
+13827,
+13827,
+13844,
+13844,
+13859,
+13875,
+13875,
+13919,
+13951,
+13972,
+14006,
+14006,
+14006,
+14015,
14023,
-14035,
-14042,
-14052,
-14052,
-14052,
-14074,
-14074,
-14074,
-14074,
-14074,
-14082,
-14116,
-14123,
-14160,
-14174,
-14191,
-14197,
-14197,
-14205,
-14205,
-14205,
-14205,
-14205,
-14243,
-14256,
-14256,
-14256,
-14256,
-14256,
-14291,
-14291,
-14291,
-14302,
-14302,
-14316,
-14330,
-14330,
+14039,
+14051,
+14079,
+14079,
+14092,
+14128,
+14143,
+14153,
+14153,
+14153,
+14153,
+14173,
+14188,
+14198,
+14198,
+14213,
+14246,
+14281,
+14287,
+14304,
+14304,
+14311,
+14321,
+14328,
+14338,
+14338,
14370,
-14370,
-14370,
-14370,
-14387,
-14399,
-14433,
-14441,
-14458,
-14458,
-14458,
-14458,
-14458,
-14458,
-14476,
-14514,
-14527,
-14527,
-14537,
-14560,
+14404,
+14448,
+14448,
+14473,
+14495,
+14502,
+14502,
+14539,
+14552,
+14559,
+14559,
+14576,
+14576,
+14576,
14590,
14590,
14590,
14590,
-14622,
-14622,
-14648,
-14648,
+14590,
+14590,
+14590,
+14590,
+14623,
+14641,
14648,
-14656,
-14667,
-14687,
-14705,
-14705,
-14705,
-14705,
-14718,
-14733,
+14655,
+14704,
+14742,
+14742,
+14742,
14759,
-14766,
-14795,
-14795,
-14795,
-14795,
-14801,
-14801,
-14824,
-14832,
-14832,
-14832,
-14832,
-14832,
-14848,
-14860,
+14780,
+14780,
+14780,
+14798,
+14798,
+14803,
+14821,
+14821,
+14861,
+14861,
14870,
-14888,
+14880,
+14880,
+14915,
14934,
-14952,
-14959,
-14977,
-14977,
-14994,
-14994,
-15007,
-15007,
-15007,
-15007,
-15017,
-15045,
-15052,
-15062,
-15072,
-15094,
-15101,
-15101,
-15125,
-15125,
-15133,
-15140,
-15164,
+14951,
+14976,
+14976,
+14976,
+14976,
+15005,
+15042,
+15057,
+15057,
+15057,
+15105,
+15131,
+15138,
+15149,
+15149,
+15173,
+15173,
15183,
-15201,
-15201,
-15207,
-15211,
-15228,
-15228,
-15242,
-15251,
-15260,
-15260,
-15266,
-15266,
-15266,
-15290,
-15290,
-15290,
-15290,
-15303,
-15317,
-15317,
-15317,
-15323,
-15323,
-15330,
-15343,
-15383,
-15390,
-15390,
-15397,
-15397,
-15397,
-15412,
-15420,
-15427,
-15451,
-15467,
-15467,
-15503,
-15509,
-15528,
-15528,
-15537,
-15537,
-15537,
-15542,
-15542,
-15542,
-15558,
-15558,
-15558,
-15580,
-15580,
-15580,
-15603,
-15615,
-15615,
-15615,
-15657,
-15690,
-15712,
+15225,
+15241,
+15272,
+15278,
+15278,
+15312,
+15333,
+15354,
+15354,
+15354,
+15354,
+15354,
+15354,
+15354,
+15365,
+15365,
+15365,
+15391,
+15391,
+15391,
+15391,
+15391,
+15391,
+15406,
+15414,
+15414,
+15414,
+15414,
+15430,
+15450,
+15501,
+15501,
+15501,
+15501,
+15501,
+15515,
+15520,
+15520,
+15520,
+15520,
+15546,
+15546,
+15546,
+15546,
+15546,
+15576,
+15608,
+15630,
+15650,
+15650,
+15675,
+15675,
+15695,
+15706,
+15716,
+15716,
+15716,
+15716,
+15733,
15741,
-15741,
-15757,
-15757,
-15792,
-15792,
-15819,
-15819,
-15839,
-15860,
+15752,
+15752,
+15752,
+15752,
+15764,
+15764,
+15778,
+15778,
+15786,
+15817,
+15817,
+15833,
+15833,
+15852,
+15852,
15867,
-15874,
-15888,
-15888,
-15900,
-15913,
-15927,
-15938,
-15938,
-15956,
-15971,
-15993,
-15993,
-15993,
-15993,
-15997,
-16020,
-16020,
-16033,
-16033,
-16033,
-16069,
-16069,
-16097,
-16109,
-16109,
-16109,
-16145,
-16145,
-16145,
-16186,
+15885,
+15935,
+15941,
+15961,
+15961,
+15977,
+15981,
+15988,
+15994,
+16015,
+16015,
+16054,
+16054,
+16054,
+16087,
+16113,
+16122,
+16122,
+16157,
+16188,
+16188,
+16212,
+16212,
+16212,
+16212,
+16230,
16230,
-16250,
-16269,
+16246,
16276,
-16283,
-16295,
-16329,
-16359,
-16391,
-16404,
-16404,
-16453,
-16470,
-16480,
-16480,
-16480,
-16499,
-16512,
-16530,
+16287,
+16300,
+16316,
+16334,
+16353,
+16378,
+16401,
+16401,
+16421,
+16421,
+16421,
+16425,
+16450,
+16450,
+16450,
+16456,
+16465,
+16475,
+16491,
+16509,
+16509,
+16518,
16530,
-16541,
-16541,
-16563,
-16579,
-16586,
-16596,
-16618,
-16633,
-16665,
-16665,
-16690,
-16721,
-16733,
-16733,
-16740,
-16762,
-16762,
-16762,
-16762,
-16762,
-16762,
-16762,
-16762,
-16777,
-16777,
-16784,
-16812,
-16830,
-16851,
-16870,
-16870,
-16901,
-16908,
-16908,
-16908,
-16929,
-16953,
-16953,
+16562,
+16562,
+16562,
+16571,
+16571,
+16571,
+16595,
+16595,
+16595,
+16610,
+16610,
+16610,
+16634,
+16661,
+16678,
+16684,
+16684,
+16691,
+16691,
+16706,
+16763,
+16792,
+16807,
+16827,
+16847,
+16847,
+16847,
+16859,
+16859,
+16859,
+16880,
+16902,
+16902,
+16922,
+16922,
+16922,
+16942,
+16949,
16959,
-16959,
-16986,
-16986,
-16986,
-16996,
-16996,
-16996,
-16996,
-17010,
-17030,
-17050,
-17057,
-17057,
-17057,
-17057,
-17066,
-17076,
-17093,
-17093,
-17122,
-17122,
-17138,
-17138,
-17157,
-17164,
-17179,
-17179,
-17198,
-17198,
-17218,
-17236,
-17236,
-17266,
-17283,
-17294,
-17294,
-17294,
-17311,
-17321,
-17336,
-17336,
-17336,
-17336,
-17336,
-17347,
-17353,
+16974,
+16974,
+16980,
+16980,
+16993,
+17024,
+17037,
+17037,
+17044,
+17097,
+17097,
+17112,
+17112,
+17135,
+17150,
+17150,
+17155,
+17162,
+17190,
+17190,
+17210,
+17219,
+17219,
+17232,
+17232,
+17241,
+17254,
+17269,
+17292,
+17302,
+17302,
+17314,
+17314,
+17314,
+17314,
17353,
-17353,
-17353,
-17361,
-17361,
-17361,
-17361,
-17374,
-17374,
-17374,
-17388,
-17388,
-17388,
-17395,
-17411,
-17411,
-17411,
-17428,
-17440,
-17457,
-17471,
-17492,
-17492,
-17529,
-17533,
-17546,
-17546,
-17558,
-17566,
-17566,
-17566,
-17578,
-17604,
-17620,
-17650,
-17650,
-17669,
-17695,
-17695,
-17741,
-17741,
-17741,
-17769,
-17774,
-17774,
-17779,
-17785,
+17371,
+17400,
+17418,
+17418,
+17444,
+17444,
+17466,
+17466,
+17466,
+17466,
+17466,
+17466,
+17466,
+17466,
+17466,
+17488,
+17488,
+17498,
+17498,
+17506,
+17506,
+17527,
+17552,
+17552,
+17562,
+17569,
+17587,
+17603,
+17603,
+17619,
+17628,
+17667,
+17674,
+17698,
+17706,
+17742,
17795,
-17795,
-17803,
-17819,
-17859,
-17859,
-17916,
-17916,
-17955,
-17963,
-17977,
-17977,
-18009,
-18009,
-18021,
-18044,
-18044,
-18044,
-18044,
-18044,
-18044,
-18064,
-18079,
-18079,
-18096,
+17813,
+17813,
+17834,
+17844,
+17844,
+17844,
+17844,
+17866,
+17886,
+17917,
+17953,
+17953,
+17953,
+17984,
+17984,
+17984,
+17984,
+17984,
+18024,
+18024,
+18045,
+18077,
18096,
-18132,
-18138,
-18138,
-18171,
-18171,
-18171,
-18171,
-18177,
-18200,
-18220,
-18220,
-18220,
-18234,
-18234,
-18234,
-18270,
-18286,
-18332,
-18343,
-18343,
-18348,
-18367,
-18409,
-18464,
-18486,
-18493,
-18544,
-18544,
-18544,
-18550,
-18575,
-18580,
-18634,
+18102,
+18114,
+18114,
+18114,
+18136,
+18146,
+18170,
+18170,
+18170,
+18193,
+18193,
+18193,
+18211,
+18246,
+18253,
+18303,
+18303,
+18303,
+18324,
+18324,
+18344,
+18344,
+18344,
+18350,
+18373,
+18393,
+18401,
+18401,
+18421,
+18435,
+18469,
+18491,
+18491,
+18523,
+18546,
+18566,
+18566,
+18589,
+18610,
+18622,
18646,
-18672,
-18695,
-18695,
-18695,
-18713,
-18744,
-18762,
-18762,
-18770,
-18770,
-18777,
-18781,
-18785,
-18785,
-18785,
-18785,
-18791,
-18839,
-18850,
-18864,
-18864,
+18674,
+18689,
+18697,
+18721,
+18730,
+18730,
+18751,
+18765,
+18789,
+18805,
+18826,
+18842,
+18842,
+18846,
+18846,
+18856,
+18863,
18881,
-18881,
-18897,
-18912,
-18919,
-18926,
-18944,
-18944,
-18944,
-18951,
-18951,
-18958,
-18969,
-18994,
-19010,
-19054,
-19054,
-19086,
-19097,
-19115,
-19129,
-19129,
-19152,
-19183,
-19189,
-19226,
-19226,
-19226,
-19226,
+18903,
+18928,
+18947,
+18950,
+18964,
+18967,
+18979,
+18987,
+19007,
+19026,
+19026,
+19029,
+19029,
+19044,
+19077,
+19107,
+19110,
+19131,
+19134,
+19140,
+19156,
+19179,
+19204,
+19222,
+19222,
19236,
-19260,
-19266,
-19273,
-19291,
-19298,
-19298,
-19298,
-19335,
-19352,
-19352,
-19363,
-19383,
-19383,
-19399,
-19409,
-19430,
-19430,
-19447,
+19239,
+19251,
+19284,
+19299,
+19302,
+19318,
+19328,
+19332,
+19360,
+19389,
+19392,
+19419,
+19432,
+19442,
+19451,
+19463,
+19466,
19469,
-19485,
-19485,
-19493,
-19499,
-19499,
-19506,
-19506,
-19516,
-19537,
-19549,
-19588,
-19588,
-19633,
-19655,
-19676,
-19676,
-19720,
-19723,
-19739,
-19742,
-19745,
-19768,
-19768,
-19771,
-19788,
-19795,
-19823,
-19843,
-19850,
-19869,
-19893,
-19919,
+19480,
+19507,
+19510,
+19543,
+19543,
+19554,
+19557,
+19578,
+19581,
+19584,
+19608,
+19611,
+19623,
+19644,
+19654,
+19673,
+19682,
+19682,
+19682,
+19685,
+19707,
+19710,
+19710,
+19727,
+19727,
+19733,
+19736,
+19736,
+19736,
+19736,
+19749,
+19749,
+19754,
+19777,
+19808,
+19811,
+19814,
+19817,
+19835,
+19860,
+19860,
+19863,
+19863,
+19863,
+19863,
+19872,
+19872,
+19906,
+19906,
+19916,
+19922,
19936,
19939,
19942,
-19963,
-19966,
-19982,
-19995,
-20004,
-20010,
-20010,
-20045,
-20048,
-20062,
-20071,
-20071,
-20074,
-20084,
+19958,
+19968,
+19978,
+20000,
+20019,
+20019,
+20049,
+20065,
+20090,
20090,
-20108,
-20108,
-20114,
-20120,
-20147,
-20153,
-20156,
-20166,
-20169,
-20184,
-20187,
-20195,
-20210,
-20221,
-20246,
-20246,
-20246,
-20273,
-20293,
-20296,
-20313,
+20113,
+20148,
+20158,
+20196,
+20239,
+20255,
+20278,
+20310,
+20322,
20331,
-20337,
-20346,
-20362,
-20395,
-20395,
-20423,
-20423,
-20429,
-20429,
-20432,
-20443,
-20465,
-20465,
-20468,
-20479,
-20479,
-20497,
-20537,
-20546,
-20558,
-20614,
+20366,
+20369,
+20376,
+20389,
+20392,
+20392,
+20412,
+20438,
+20451,
+20451,
+20511,
+20517,
+20552,
+20570,
+20586,
+20593,
+20593,
+20605,
+20608,
20621,
-20639,
-20639,
-20658,
-20661,
-20671,
-20674,
-20674,
-20674,
-20674,
-20677,
-20677,
-20677,
-20696,
-20699,
-20699,
-20702,
-20702,
+20624,
+20627,
+20663,
+20666,
20705,
-20711,
-20724,
-20727,
-20730,
-20753,
-20763,
-20766,
-20783,
-20783,
-20783,
-20806,
+20720,
+20759,
+20762,
+20762,
+20762,
+20802,
20809,
-20819,
-20819,
-20822,
-20911,
-20944,
-20961,
-20992,
-21004,
-21014,
-21017,
-21033,
-21036,
-21036,
-21067,
-21074,
-21094,
+20825,
+20830,
+20830,
+20830,
+20830,
+20854,
+20857,
+20857,
+20864,
+20917,
+20927,
+20930,
+20964,
+20967,
+20974,
+21013,
+21057,
+21057,
+21091,
21119,
-21162,
-21179,
-21204,
-21230,
-21239,
-21250,
-21256,
+21122,
+21141,
+21156,
+21176,
+21193,
+21196,
+21196,
+21196,
+21229,
+21245,
+21245,
+21251,
+21265,
+21290,
+21290,
+21290,
21290,
-21297,
-21297,
-21297,
-21333,
-21333,
-21349,
-21352,
-21378,
-21393,
-21411,
-21414,
-21424,
-21435,
-21438,
-21461,
-21461,
-21489,
-21504,
-21511,
-21511,
-21511,
-21511,
-21516,
-21516,
-21526,
-21529,
-21538,
-21538,
-21551,
-21606,
-21609,
-21609,
-21612,
-21634,
-21662,
-21737,
-21737,
-21756,
-21759,
-21787,
-21808,
-21811,
-21814,
-21820,
-21841,
-21860,
-21860,
-21867,
-21875,
-21894,
-21900,
-21921,
-21936,
-21936,
-21945,
-21945,
-21945,
-21986,
-22001,
-22021,
-22027,
-22033,
-22059,
+21314,
+21314,
+21317,
+21320,
+21326,
+21365,
+21371,
+21384,
+21387,
+21406,
+21409,
+21409,
+21417,
+21425,
+21440,
+21448,
+21451,
+21454,
+21467,
+21482,
+21492,
+21524,
+21530,
+21536,
+21546,
+21560,
+21615,
+21639,
+21639,
+21642,
+21660,
+21669,
+21672,
+21672,
+21689,
+21698,
+21705,
+21752,
+21769,
+21793,
+21793,
+21803,
+21803,
+21824,
+21831,
+21854,
+21857,
+21864,
+21897,
+21918,
+21939,
+21939,
+21939,
+21963,
+21973,
+21976,
+21976,
+22031,
+22031,
+22031,
+22046,
+22070,
22080,
-22105,
-22127,
-22130,
-22146,
-22171,
-22174,
-22202,
-22222,
-22244,
-22253,
-22285,
-22325,
-22347,
-22359,
-22371,
-22395,
+22110,
+22139,
+22163,
+22166,
+22198,
+22213,
+22232,
+22240,
+22280,
+22315,
+22315,
+22332,
+22357,
+22357,
+22357,
+22357,
+22357,
22401,
-22404,
-22433,
-22465,
-22465,
-22468,
-22468,
-22507,
-22522,
+22412,
+22424,
+22455,
+22466,
+22466,
+22469,
+22477,
+22485,
+22508,
+22530,
+22537,
22546,
-22546,
-22580,
-22580,
-22612,
-22615,
-22622,
-22622,
-22622,
-22634,
-22655,
-22655,
-22687,
+22551,
+22562,
+22571,
+22574,
+22599,
+22627,
+22630,
+22643,
+22663,
+22699,
22699,
-22711,
-22711,
-22731,
-22734,
-22740,
-22767,
-22795,
-22798,
-22801,
-22822,
-22845,
-22883,
-22883,
+22705,
+22708,
+22721,
+22724,
+22738,
+22768,
+22771,
+22774,
+22789,
+22807,
+22819,
+22870,
22886,
-22916,
-22919,
-22938,
-22947,
-22947,
-22962,
-22994,
-22997,
-23000,
-23013,
-23026,
-23029,
+22892,
+22903,
+22932,
+22944,
+22973,
+22976,
+22992,
+22995,
+23006,
23029,
-23032,
23042,
-23042,
-23069,
-23076,
-23087,
-23094,
-23107,
-23124,
-23142,
-23149,
-23149,
-23152,
-23159,
-23159,
-23181,
-23181,
-23212,
-23219,
-23233,
-23233,
-23255,
-23265,
-23265,
-23279,
-23307,
-23339,
-23349,
-23376,
-23401,
-23451,
-23514,
-23524,
-23552,
-23555,
-23575,
+23058,
+23101,
+23121,
+23138,
+23138,
+23141,
+23161,
+23164,
+23188,
+23188,
+23188,
+23201,
+23231,
+23231,
+23231,
+23231,
+23241,
+23241,
+23244,
+23262,
+23320,
+23320,
+23356,
+23402,
+23405,
+23405,
+23440,
+23443,
+23452,
+23462,
+23471,
+23474,
+23474,
+23474,
+23485,
+23485,
+23500,
+23522,
+23546,
+23584,
+23591,
23591,
-23601,
-23604,
-23620,
-23627,
-23630,
-23640,
-23659,
-23674,
-23714,
-23747,
-23776,
-23786,
-23802,
-23809,
-23812,
-23827,
-23863,
-23882,
-23882,
-23892,
-23917,
-23949,
-23974,
-23974,
-24009,
-24039,
-24039,
-24052,
-24060,
-24081,
-24100,
-24131,
-24131,
-24138,
-24138,
-24148,
-24169,
-24175,
-24233,
-24262,
-24262,
-24265,
-24272,
-24278,
-24300,
-24321,
-24332,
-24339,
-24349,
-24349,
-24349,
-24353,
-24370,
-24370,
-24370,
-24373,
-24376,
-24405,
-24405,
-24414,
-24454,
-24461,
-24461,
-24461,
-24461,
-24484,
-24504,
-24511,
+23591,
+23639,
+23639,
+23644,
+23644,
+23683,
+23683,
+23694,
+23712,
+23712,
+23740,
+23752,
+23775,
+23791,
+23791,
+23821,
+23844,
+23849,
+23872,
+23872,
+23879,
+23879,
+23939,
+23945,
+23959,
+23959,
+23959,
+24004,
+24010,
+24026,
+24042,
+24050,
+24067,
+24067,
+24098,
+24108,
+24108,
+24108,
+24108,
+24125,
+24144,
+24144,
+24160,
+24163,
+24163,
+24173,
+24177,
+24177,
+24188,
+24203,
+24203,
+24203,
+24206,
+24224,
+24253,
+24253,
+24253,
+24294,
+24294,
+24326,
+24341,
+24341,
+24354,
+24382,
+24401,
+24401,
+24419,
+24431,
+24442,
+24442,
+24457,
+24473,
+24473,
+24481,
+24512,
+24532,
+24532,
24543,
-24558,
-24558,
-24558,
-24571,
-24584,
-24591,
-24619,
-24626,
-24626,
-24678,
-24703,
-24714,
-24729,
-24757,
-24765,
+24550,
+24568,
+24607,
+24607,
+24628,
+24628,
+24634,
+24641,
+24662,
+24697,
+24712,
+24735,
+24745,
+24755,
+24769,
24769,
-24794,
-24794,
-24827,
-24827,
-24827,
-24834,
-24834,
-24834,
-24834,
-24834,
-24834,
-24852,
-24894,
-24912,
-24919,
-24919,
-24919,
-24922,
-24932,
-24966,
-24982,
-25019,
-25044,
-25059,
-25081,
-25096,
-25145,
-25145,
-25162,
-25168,
-25188,
-25188,
-25188,
-25200,
-25200,
-25218,
-25226,
-25226,
-25233,
-25250,
-25250,
-25250,
-25250,
-25264,
-25264,
-25293,
-25300,
-25311,
-25333,
-25347,
-25347,
-25347,
-25364,
-25403,
-25414,
-25443,
-25460,
-25477,
-25494,
-25511,
-25511,
-25522,
-25555,
-25576,
-25583,
-25623,
-25630,
-25630,
-25630,
-25630,
-25630,
-25645,
-25652,
-25659,
-25666,
-25693,
-25723,
-25763,
-25780,
-25788,
-25801,
-25801,
-25821,
-25828,
-25828,
-25835,
-25852,
-25852,
-25859,
-25859,
-25878,
-25896,
-25920,
-25937,
-25969,
-25998,
-26012,
-26049,
-26070,
-26076,
-26088,
-26088,
-26088,
-26088,
-26088,
-26101,
-26128,
-26149,
-26158,
-26177,
-26183,
-26219,
-26236,
-26243,
-26253,
-26261,
-26268,
-26278,
-26278,
-26296,
-26307,
-26307,
-26307,
-26315,
-26378,
-26385,
+24786,
+24786,
+24786,
+24801,
+24809,
+24821,
+24835,
+24835,
+24835,
+24853,
+24872,
+24872,
+24872,
+24883,
+24901,
+24901,
+24905,
+24918,
+24918,
+24949,
+24949,
+24970,
+24970,
+24970,
+24981,
+24981,
+24981,
+24993,
+24993,
+24993,
+25005,
+25043,
+25050,
+25070,
+25099,
+25099,
+25110,
+25110,
+25110,
+25110,
+25115,
+25134,
+25134,
+25134,
+25141,
+25160,
+25167,
+25167,
+25179,
+25179,
+25179,
+25192,
+25238,
+25238,
+25282,
+25306,
+25316,
+25327,
+25339,
+25374,
+25374,
+25384,
+25384,
+25384,
+25384,
+25388,
+25388,
+25388,
+25388,
+25416,
+25453,
+25463,
+25463,
+25480,
+25536,
+25536,
+25536,
+25536,
+25536,
+25551,
+25567,
+25571,
+25591,
+25618,
+25631,
+25631,
+25650,
+25650,
+25650,
+25690,
+25707,
+25718,
+25743,
+25753,
+25753,
+25765,
+25765,
+25778,
+25802,
+25823,
+25823,
+25823,
+25840,
+25840,
+25840,
+25840,
+25870,
+25876,
+25897,
+25897,
+25897,
+25907,
+25907,
+25907,
+25907,
+25928,
+25928,
+25928,
+25961,
+25961,
+25961,
+25965,
+25965,
+25965,
+25975,
+26006,
+26006,
+26006,
+26006,
+26020,
+26020,
+26028,
+26028,
+26043,
+26075,
+26115,
+26124,
+26145,
+26145,
+26145,
+26145,
+26145,
+26145,
+26161,
+26161,
+26215,
+26234,
+26234,
+26234,
+26234,
+26254,
+26254,
+26259,
+26285,
+26299,
+26299,
+26316,
+26328,
+26381,
+26381,
+26381,
+26381,
26402,
-26409,
-26439,
-26459,
-26466,
-26485,
-26485,
-26492,
-26499,
-26499,
-26511,
+26420,
+26438,
+26469,
+26469,
+26469,
+26481,
+26494,
+26502,
+26502,
+26502,
+26502,
+26502,
+26522,
+26522,
+26522,
+26535,
+26535,
26556,
-26572,
-26596,
-26621,
-26621,
-26621,
-26621,
-26659,
-26659,
+26563,
+26563,
+26582,
+26604,
+26604,
+26614,
+26614,
+26619,
+26619,
+26619,
+26619,
+26644,
+26644,
+26644,
+26651,
+26667,
+26667,
+26667,
+26675,
26675,
-26700,
-26716,
-26741,
-26755,
-26755,
-26755,
-26785,
-26785,
-26785,
-26825,
-26825,
-26846,
-26864,
-26891,
-26898,
-26936,
-26936,
-26951,
-26951,
-26971,
-26978,
+26682,
+26682,
+26682,
+26693,
+26693,
+26693,
+26693,
+26699,
+26699,
+26715,
+26763,
+26772,
+26793,
+26793,
+26804,
+26804,
+26813,
+26813,
+26813,
+26840,
+26855,
+26865,
+26865,
+26882,
+26928,
+26938,
+26938,
+26938,
+26979,
+26979,
+27008,
+27008,
27008,
-27054,
-27068,
-27075,
-27089,
-27089,
-27120,
-27127,
-27127,
-27127,
-27144,
-27151,
+27008,
+27021,
+27037,
+27049,
+27060,
+27064,
+27085,
+27121,
+27121,
+27169,
27169,
-27176,
-27183,
-27208,
-27225,
-27272,
-27272,
-27279,
-27308,
-27354,
-27358,
-27358,
-27374,
-27388,
-27388,
-27388,
+27221,
+27253,
+27276,
+27294,
+27294,
+27342,
+27353,
+27353,
+27353,
+27371,
+27371,
+27375,
+27390,
+27390,
+27390,
27395,
27419,
27426,
-27430,
-27465,
-27472,
-27508,
-27515,
+27451,
+27471,
+27493,
+27493,
+27510,
+27510,
+27517,
27529,
-27558,
-27580,
-27590,
-27590,
-27590,
-27605,
-27605,
-27615,
-27615,
-27625,
-27625,
-27625,
-27631,
-27681,
-27681,
-27688,
-27688,
-27707,
-27711,
+27529,
+27542,
+27548,
+27548,
+27548,
+27576,
+27581,
+27597,
+27639,
+27653,
+27699,
+27716,
+27716,
27742,
-27749,
-27749,
-27765,
-27793,
-27839,
-27839,
-27839,
-27849,
-27849,
-27864,
-27864,
-27871,
-27871,
-27871,
-27871,
-27871,
-27871,
-27884,
-27903,
-27928,
-27949,
-27949,
-27963,
-27963,
-27975,
-27982,
-27982,
-27982,
-27982,
-27982,
-28019,
-28019,
-28040,
-28040,
-28040,
-28040,
-28108,
-28134,
-28134,
-28134,
-28174,
-28183,
-28197,
-28197,
-28197,
-28220,
-28230,
-28241,
-28241,
-28257,
-28257,
-28263,
-28290,
-28290,
-28361,
-28368,
-28368,
-28368,
-28373,
-28397,
-28421,
-28433,
-28440,
-28440,
-28450,
-28450,
-28466,
-28481,
-28481,
-28490,
-28532,
-28532,
-28539,
-28548,
-28555,
-28573,
-28573,
-28603,
-28627,
-28645,
-28645,
-28658,
-28684,
-28684,
-28722,
-28749,
-28767,
-28774,
-28774,
+27766,
+27785,
+27794,
+27794,
+27812,
+27812,
+27812,
+27812,
+27832,
+27832,
+27832,
+27832,
+27861,
+27861,
+27861,
+27867,
+27922,
+27922,
+27922,
+27922,
+27960,
+27960,
+27985,
+28026,
+28063,
+28063,
+28083,
+28090,
+28090,
+28104,
+28131,
+28177,
+28192,
+28196,
+28196,
+28196,
+28196,
+28228,
+28240,
+28271,
+28305,
+28305,
+28305,
+28322,
+28328,
+28341,
+28349,
+28388,
+28388,
+28388,
+28407,
+28411,
+28411,
+28411,
+28417,
+28427,
+28449,
+28463,
+28475,
+28516,
+28516,
+28525,
+28553,
+28553,
+28553,
+28578,
+28585,
+28626,
+28626,
+28663,
+28663,
+28669,
+28669,
+28690,
+28713,
+28713,
+28728,
+28728,
+28728,
+28734,
+28734,
+28751,
+28761,
+28775,
28788,
-28801,
-28844,
-28844,
-28844,
-28850,
-28870,
-28870,
-28877,
-28883,
-28893,
-28893,
-28893,
-28918,
-28918,
-28931,
-28931,
-28931,
-28959,
-28973,
-28973,
-28991,
-29010,
-29029,
-29038,
-29048,
-29099,
-29099,
-29109,
-29109,
-29109,
-29109,
-29109,
-29109,
-29128,
-29139,
-29162,
-29162,
-29176,
-29176,
-29194,
-29194,
-29194,
-29205,
-29205,
-29227,
-29227,
-29227,
-29227,
-29248,
-29254,
+28794,
+28794,
+28812,
+28812,
+28823,
+28823,
+28834,
+28875,
+28928,
+28928,
+28928,
+28953,
+28983,
+28995,
+29012,
+29012,
+29012,
+29025,
+29056,
+29056,
+29080,
+29080,
+29092,
+29092,
+29092,
+29104,
+29104,
+29104,
+29104,
+29121,
+29121,
+29121,
+29121,
+29157,
+29157,
+29167,
+29186,
+29186,
+29186,
+29186,
+29186,
+29186,
+29195,
+29226,
+29241,
+29241,
+29257,
+29257,
29270,
29270,
-29302,
-29309,
-29326,
-29343,
-29359,
-29369,
-29369,
-29386,
-29411,
-29411,
-29411,
+29270,
+29276,
+29276,
+29276,
+29276,
+29276,
+29282,
+29327,
+29327,
+29337,
+29349,
+29381,
+29381,
+29388,
+29388,
+29401,
+29401,
+29401,
29411,
-29452,
-29463,
-29463,
-29468,
-29468,
-29492,
-29492,
-29523,
-29535,
-29535,
-29539,
-29539,
-29546,
-29557,
-29557,
-29564,
-29570,
-29579,
-29595,
-29601,
-29608,
-29608,
-29608,
-29664,
-29683,
-29698,
-29698,
-29698,
-29698,
-29706,
-29706,
-29721,
-29746,
-29775,
-29793,
-29813,
-29831,
-29831,
-29852,
-29852,
+29444,
+29483,
+29483,
+29529,
+29536,
+29549,
+29549,
+29549,
+29549,
+29549,
+29605,
+29605,
+29622,
+29622,
+29661,
+29661,
+29682,
+29691,
+29691,
+29691,
+29743,
+29743,
+29764,
+29764,
+29764,
+29764,
+29781,
+29796,
+29808,
+29819,
+29850,
+29863,
+29863,
+29876,
+29876,
+29876,
+29876,
+29885,
+29885,
29897,
-29916,
-29955,
-29971,
-29971,
-30000,
-30040,
-30040,
+29897,
+29934,
+29942,
+29942,
+29962,
+29976,
+29976,
+29976,
+29994,
+29994,
+29994,
+29994,
+29994,
+30010,
+30010,
+30025,
+30025,
+30025,
+30025,
+30035,
+30035,
+30042,
+30042,
+30055,
30055,
-30064,
-30071,
-30071,
-30071,
-30071,
-30071,
-30088,
-30088,
-30118,
-30118,
-30130,
-30130,
-30141,
-30164,
-30171,
-30178,
-30194,
-30194,
-30204,
-30223,
-30231,
-30269,
-30308,
-30308,
-30308,
-30352,
-30374,
-30394,
-30394,
-30406,
-30406,
-30406,
-30414,
+30055,
+30065,
+30082,
+30092,
+30101,
+30101,
+30123,
+30123,
+30134,
+30147,
+30147,
+30157,
+30176,
+30176,
+30193,
+30209,
+30217,
+30217,
+30259,
+30271,
+30277,
+30293,
+30328,
+30345,
+30378,
+30399,
+30425,
30431,
30431,
-30437,
-30443,
-30461,
-30483,
-30483,
-30483,
-30514,
-30519,
-30553,
-30553,
-30558,
-30563,
-30563,
-30604,
-30604,
-30610,
-30610,
-30610,
-30631,
-30642,
-30646,
-30646,
-30646,
-30650,
-30650,
-30681,
-30681,
-30681,
-30698,
-30714,
-30714,
-30714,
+30442,
+30453,
+30463,
+30469,
+30479,
+30493,
+30508,
+30518,
+30518,
+30533,
+30546,
+30546,
+30570,
+30589,
+30627,
+30648,
+30648,
+30673,
+30696,
+30708,
+30708,
+30708,
+30708,
+30708,
30714,
30714,
-30721,
-30732,
-30732,
-30732,
-30745,
-30745,
-30751,
-30765,
-30782,
-30805,
-30805,
-30821,
-30821,
-30842,
+30726,
+30736,
+30736,
+30754,
+30788,
+30788,
+30788,
+30814,
+30814,
+30814,
+30814,
+30814,
+30814,
+30814,
+30814,
+30820,
+30836,
+30836,
+30836,
+30836,
+30836,
+30836,
+30836,
+30836,
+30836,
30855,
-30881,
-30881,
-30903,
-30903,
-30912,
-30965,
-30965,
-30980,
-30980,
-30980,
-30987,
-30998,
-31002,
-31064,
-31075,
-31087,
-31103,
-31109,
-31109,
-31109,
-31122,
-31122,
-31122,
-31135,
-31150,
-31150,
-31165,
-31165,
-31175,
-31175,
-31175,
-31189,
-31220,
-31220,
-31230,
-31240,
-31274,
-31281,
-31307,
-31307,
-31313,
-31342,
-31349,
-31372,
-31413,
-31413,
-31429,
-31435,
-31435,
-31435,
-31447,
-31454,
-31454,
-31454,
-31461,
-31461,
-31488,
-31488,
-31488,
-31488,
-31488,
-31507,
-31537,
-31546,
-31546,
-31546,
-31566,
-31590,
-31602,
-31602,
-31602,
-31622,
-31622,
-31648,
-31677,
-31692,
-31701,
-31717,
-31728,
-31728,
-31744,
-31744,
+30873,
+30886,
+30911,
+30921,
+30932,
+30932,
+30951,
+30957,
+31001,
+31007,
+31007,
+31022,
+31048,
+31055,
+31062,
+31079,
+31079,
+31118,
+31128,
+31128,
+31128,
+31146,
+31146,
+31146,
+31146,
+31162,
+31162,
+31177,
+31177,
+31195,
+31211,
+31282,
+31282,
+31290,
+31300,
+31363,
+31389,
+31406,
+31419,
+31439,
+31439,
+31439,
+31439,
+31443,
+31473,
+31481,
+31481,
+31508,
+31523,
+31569,
+31599,
+31621,
+31671,
+31680,
+31700,
+31741,
31754,
-31783,
+31775,
+31804,
+31804,
31816,
-31827,
-31827,
-31834,
-31834,
-31863,
-31884,
-31884,
-31898,
-31954,
-32001,
-32023,
-32023,
-32041,
-32054,
-32076,
-32086,
-32121,
-32128,
-32135,
-32135,
-32158,
-32188,
-32203,
-32203,
-32255,
-32255,
-32255,
-32279,
-32308,
-32346,
-32374,
-32394,
-32394,
-32394,
-32394,
-32414,
+31825,
+31825,
+31850,
+31850,
+31850,
+31850,
+31866,
+31876,
+31876,
+31901,
+31911,
+31940,
+31950,
+31950,
+31957,
+31957,
+31957,
+31957,
+31976,
+31989,
+31996,
+31996,
+32010,
+32040,
+32061,
+32061,
+32080,
+32080,
+32080,
+32080,
+32093,
+32093,
+32093,
+32093,
+32115,
+32119,
+32119,
+32152,
+32152,
+32152,
+32164,
+32164,
+32174,
+32174,
+32174,
+32174,
+32237,
+32251,
+32287,
+32287,
+32295,
+32295,
+32310,
+32333,
+32342,
+32360,
+32360,
+32387,
+32409,
32431,
32431,
-32447,
-32447,
-32447,
-32462,
-32462,
-32462,
-32462,
-32505,
-32522,
-32522,
-32522,
-32539,
-32544,
-32569,
-32569,
-32569,
-32598,
-32614,
-32633,
-32633,
-32633,
-32648,
-32648,
-32659,
-32680,
-32680,
-32720,
-32720,
-32726,
-32726,
-32726,
-32726,
-32769,
-32803,
-32803,
-32803,
-32803,
-32803,
-32819,
+32431,
+32448,
+32473,
+32523,
+32523,
+32541,
+32541,
+32563,
+32563,
+32575,
+32581,
+32581,
+32581,
+32581,
+32602,
+32622,
+32622,
+32676,
+32676,
+32676,
+32676,
+32676,
+32692,
+32711,
+32711,
+32711,
+32711,
+32752,
+32767,
+32797,
32819,
-32836,
-32836,
-32836,
-32856,
-32856,
-32871,
-32871,
-32889,
-32913,
-32919,
-32919,
-32919,
-32919,
-32942,
-32942,
-32942,
-32942,
-32942,
-32963,
-32984,
-33012,
-33018,
-33018,
-33018,
-33018,
-33034,
-33060,
-33060,
-33077,
+32846,
+32864,
+32864,
+32870,
+32887,
+32887,
+32898,
+32898,
+32898,
+32898,
+32898,
+32933,
+32997,
+32997,
+33007,
+33007,
+33007,
+33007,
+33024,
+33035,
+33035,
+33066,
+33090,
+33090,
+33090,
33110,
33110,
-33120,
-33120,
-33144,
-33181,
-33195,
-33195,
-33195,
-33212,
-33225,
-33238,
-33248,
-33248,
-33248,
-33248,
-33259,
-33259,
-33259,
-33273,
-33273,
-33273,
-33273,
-33273,
-33273,
-33273,
-33273,
-33273,
-33273,
-33293,
-33303,
-33303,
-33313,
-33325,
-33325,
-33325,
-33336,
-33342,
-33347,
-33347,
-33357,
-33370,
+33130,
+33150,
+33169,
+33169,
+33169,
+33207,
+33207,
+33207,
+33227,
+33251,
+33258,
+33258,
+33275,
+33285,
+33285,
+33285,
+33294,
+33310,
+33310,
+33323,
+33323,
+33323,
+33354,
+33361,
+33361,
+33361,
+33361,
+33368,
+33380,
+33403,
33403,
-33442,
-33467,
-33477,
-33477,
-33491,
-33491,
-33508,
-33508,
-33560,
-33569,
-33569,
-33569,
-33589,
-33628,
-33654,
-33665,
-33681,
-33700,
-33719,
-33719,
+33419,
+33428,
+33428,
+33428,
+33444,
+33451,
+33451,
+33451,
+33476,
+33476,
+33483,
+33496,
+33496,
+33523,
+33558,
+33567,
+33567,
+33579,
+33592,
+33607,
+33615,
+33615,
+33615,
+33650,
+33650,
+33650,
+33650,
+33650,
+33720,
33742,
-33760,
-33760,
-33760,
-33760,
-33760,
-33788,
-33788,
-33804,
-33804,
-33804,
-33830,
-33854,
-33854,
-33854,
-33860,
-33860,
-33878,
-33898,
-33898,
-33898,
-33898,
-33898,
-33941,
-33941,
-33955,
-33982,
-33982,
-34002,
-34002,
-34017,
-34030,
-34090,
-34104,
-34104,
-34140,
-34180,
-34195,
-34214,
-34214,
-34214,
-34244,
-34244,
-34263,
-34263,
-34263,
-34263,
-34263,
-34263,
-34263,
-34263,
-34279,
-34312,
-34341,
-34345,
-34351,
-34374,
-34386,
-34407,
-34407,
-34407,
-34417,
-34437,
-34437,
-34449,
+33742,
+33750,
+33758,
+33758,
+33769,
+33769,
+33779,
+33809,
+33809,
+33823,
+33823,
+33849,
+33857,
+33857,
+33857,
+33857,
+33857,
+33874,
+33874,
+33899,
+33910,
+33916,
+33916,
+33950,
+33957,
+33964,
+33970,
+33970,
+33970,
+33970,
+33993,
+34050,
+34050,
+34050,
+34071,
+34071,
+34108,
+34162,
+34162,
+34162,
+34162,
+34173,
+34173,
+34208,
+34225,
+34233,
+34264,
+34283,
+34291,
+34291,
+34291,
+34298,
+34307,
+34314,
+34338,
+34338,
+34378,
+34384,
+34402,
+34414,
+34414,
+34414,
+34423,
+34459,
34459,
-34465,
-34484,
-34484,
+34478,
34494,
-34534,
-34556,
-34556,
-34556,
+34516,
+34528,
+34544,
+34544,
+34554,
34566,
-34576,
-34576,
-34582,
-34607,
-34607,
-34628,
-34634,
-34646,
-34646,
-34655,
-34673,
-34673,
-34686,
-34686,
-34697,
-34697,
-34714,
-34714,
-34714,
-34714,
-34714,
-34731,
-34731,
-34731,
-34731,
-34731,
-34741,
-34767,
-34767,
-34767,
-34783,
-34783,
-34792,
-34792,
-34847,
-34862,
-34876,
-34876,
-34891,
-34891,
-34902,
-34919,
-34919,
-34939,
+34566,
+34583,
+34632,
+34640,
+34640,
+34654,
+34668,
+34668,
+34674,
+34674,
+34685,
+34685,
+34685,
+34701,
+34711,
+34711,
+34723,
+34734,
+34734,
+34751,
+34751,
+34751,
+34764,
+34786,
+34795,
+34795,
+34795,
+34795,
+34795,
+34826,
+34826,
+34826,
+34826,
+34826,
+34826,
+34826,
+34839,
+34839,
+34884,
+34884,
+34897,
+34897,
+34897,
+34930,
34939,
34939,
-34954,
-34954,
-34954,
-34954,
-34971,
-34971,
-34988,
-34988,
-34998,
-35006,
-35006,
-35006,
-35017,
-35023,
-35023,
-35028,
-35028,
-35047,
-35066,
-35066,
-35076,
-35128,
-35137,
-35158,
-35174,
-35174,
-35181,
-35181,
-35223,
-35233,
-35248,
-35258,
-35277,
-35277,
-35282,
+34946,
+34989,
+35026,
+35038,
+35038,
+35038,
+35049,
+35049,
+35103,
+35103,
+35103,
+35103,
+35103,
+35103,
+35103,
+35103,
+35118,
+35118,
+35118,
+35135,
+35135,
+35163,
+35163,
+35163,
+35163,
+35191,
+35191,
+35213,
+35228,
+35234,
+35274,
+35284,
+35284,
+35284,
+35284,
+35290,
+35290,
35300,
-35316,
-35335,
-35335,
-35344,
-35378,
-35400,
-35419,
-35433,
-35433,
+35322,
+35353,
+35353,
+35353,
+35374,
+35387,
+35387,
+35393,
+35393,
35448,
-35461,
-35477,
-35498,
-35522,
-35533,
-35554,
-35569,
-35569,
-35586,
-35595,
-35608,
-35608,
-35608,
-35618,
-35623,
-35635,
-35645,
-35645,
-35645,
-35682,
-35682,
-35682,
-35682,
-35687,
-35701,
-35705,
-35705,
-35705,
-35715,
-35715,
-35715,
+35448,
+35460,
+35479,
+35479,
+35479,
+35501,
+35501,
+35531,
+35587,
+35593,
+35615,
+35615,
+35615,
+35615,
+35642,
+35653,
+35661,
+35680,
+35680,
+35680,
+35680,
+35680,
+35680,
+35688,
+35712,
+35712,
+35712,
+35718,
+35718,
+35724,
+35724,
+35724,
+35747,
+35747,
+35747,
35753,
-35766,
-35808,
-35821,
-35825,
-35835,
-35857,
-35877,
-35877,
-35877,
-35888,
-35888,
-35905,
-35967,
-35967,
-35974,
-35974,
-36001,
-36027,
-36027,
-36038,
-36038,
-36054,
-36064,
-36064,
-36064,
-36083,
-36111,
-36133,
-36133,
-36156,
-36178,
-36198,
-36198,
-36198,
-36202,
-36255,
-36276,
-36282,
-36290,
-36290,
-36313,
-36334,
-36334,
-36334,
-36345,
-36411,
-36424,
-36450,
-36472,
-36472,
-36472,
-36479,
-36495,
-36511,
-36575,
-36575,
-36593,
-36593,
-36593,
-36593,
-36602,
-36616,
-36628,
-36628,
-36656,
-36672,
-36719,
-36719,
-36719,
-36719,
-36719,
-36737,
-36737,
-36737,
-36750,
-36750,
-36750,
-36758,
-36770,
-36770,
-36778,
-36778,
-36778,
-36778,
-36826,
-36835,
-36835,
-36835,
-36850,
-36850,
-36855,
-36872,
-36872,
-36903,
-36919,
-36934,
-36939,
-36939,
-36954,
-36954,
-36986,
-37016,
-37043,
-37051,
-37062,
-37062,
-37062,
-37069,
-37069,
-37069,
-37069,
-37069,
-37069,
-37069,
-37069,
-37096,
-37096,
-37115,
-37115,
-37149,
-37177,
+35764,
+35764,
+35782,
+35802,
+35812,
+35832,
+35846,
+35867,
+35909,
+35909,
+35925,
+35935,
+35935,
+35935,
+35935,
+35935,
+35935,
+35976,
+35997,
+36014,
+36048,
+36048,
+36073,
+36106,
+36106,
+36112,
+36124,
+36124,
+36124,
+36148,
+36158,
+36158,
+36170,
+36170,
+36190,
+36190,
+36190,
+36194,
+36203,
+36221,
+36244,
+36269,
+36269,
+36285,
+36297,
+36321,
+36328,
+36328,
+36350,
+36378,
+36395,
+36405,
+36405,
+36412,
+36412,
+36425,
+36425,
+36425,
+36425,
+36444,
+36444,
+36444,
+36470,
+36492,
+36524,
+36541,
+36558,
+36558,
+36576,
+36614,
+36614,
+36638,
+36638,
+36660,
+36660,
+36664,
+36670,
+36717,
+36722,
+36741,
+36765,
+36765,
+36783,
+36783,
+36783,
+36783,
+36801,
+36811,
+36811,
+36825,
+36825,
+36856,
+36856,
+36868,
+36868,
+36868,
+36868,
+36868,
+36920,
+36920,
+36920,
+36932,
+36953,
+36953,
+36972,
+36988,
+36995,
+37007,
+37027,
+37033,
+37072,
+37089,
+37089,
+37089,
+37107,
+37137,
+37154,
+37154,
+37161,
+37167,
+37187,
+37187,
+37187,
+37187,
37193,
-37214,
-37228,
-37228,
-37228,
-37228,
-37228,
+37199,
+37207,
+37231,
+37231,
+37231,
+37241,
37241,
-37245,
-37245,
-37245,
-37250,
-37250,
-37268,
-37294,
+37258,
+37280,
37299,
-37314,
-37328,
-37335,
-37335,
-37372,
-37380,
-37396,
-37410,
-37416,
-37428,
-37468,
-37490,
-37511,
+37299,
+37324,
+37338,
+37351,
+37351,
+37365,
+37371,
+37414,
+37420,
+37432,
+37451,
+37451,
+37457,
+37457,
+37488,
37516,
37516,
-37528,
-37528,
-37528,
-37528,
-37534,
-37534,
-37562,
-37589,
-37589,
-37589,
-37611,
-37611,
-37611,
-37625,
-37631,
-37654,
-37654,
-37654,
-37658,
-37685,
-37685,
-37706,
-37717,
-37717,
-37717,
-37732,
-37732,
-37732,
-37758,
-37783,
-37803,
-37822,
-37840,
-37840,
-37840,
-37840,
-37863,
-37881,
+37529,
+37538,
+37558,
+37580,
+37580,
+37614,
+37636,
+37650,
+37650,
+37662,
+37678,
+37710,
+37755,
+37762,
+37762,
+37771,
+37782,
+37816,
+37816,
+37838,
+37851,
+37889,
+37894,
37894,
-37926,
-37949,
-37949,
-37949,
-37970,
-37970,
-37991,
-37991,
-37991,
-37991,
-38025,
-38025,
-38025,
-38025,
+37905,
+37914,
+37921,
+37921,
+37930,
+37957,
+37984,
+38029,
38045,
-38058,
-38058,
-38080,
-38080,
-38095,
-38095,
-38142,
-38179,
+38061,
+38061,
+38061,
+38074,
+38082,
+38101,
+38108,
+38108,
+38115,
+38122,
+38122,
38187,
-38211,
-38218,
-38225,
-38232,
-38277,
-38298,
-38298,
-38328,
-38352,
-38352,
-38371,
-38371,
-38378,
-38407,
-38428,
-38448,
-38448,
-38458,
-38458,
-38458,
-38489,
-38489,
-38489,
-38489,
-38499,
-38515,
-38532,
-38532,
-38578,
-38578,
-38586,
-38606,
-38606,
-38624,
-38624,
-38624,
-38642,
-38647,
-38647,
-38658,
-38665,
-38682,
-38723,
-38767,
-38767,
-38795,
-38795,
-38801,
-38801,
-38801,
-38837,
-38837,
-38856,
-38856,
-38894,
-38915,
-38941,
-38965,
-38965,
-38965,
-38965,
-38992,
-39015,
-39039,
-39045,
-39045,
-39053,
-39058,
-39058,
-39088,
-39088,
-39118,
-39118,
-39129,
-39129,
-39129,
-39147,
-39155,
-39155,
-39178,
-39182,
-39222,
-39222,
-39230,
-39230,
-39230,
-39230,
-39238,
-39238,
-39260,
-39260,
-39260,
-39281,
-39295,
-39310,
-39328,
-39335,
-39342,
-39358,
-39371,
-39386,
-39386,
-39415,
-39415,
-39422,
-39454,
-39471,
-39471,
+38187,
+38187,
+38210,
+38210,
+38214,
+38214,
+38241,
+38252,
+38274,
+38274,
+38274,
+38274,
+38284,
+38291,
+38291,
+38302,
+38313,
+38333,
+38333,
+38354,
+38354,
+38429,
+38429,
+38429,
+38429,
+38429,
+38464,
+38473,
+38503,
+38516,
+38555,
+38569,
+38569,
+38583,
+38603,
+38610,
+38619,
+38628,
+38638,
+38651,
+38656,
+38656,
+38662,
+38674,
+38704,
+38704,
+38739,
+38739,
+38739,
+38757,
+38757,
+38799,
+38833,
+38833,
+38855,
+38859,
+38893,
+38931,
+38931,
+38959,
+38977,
+38977,
+39000,
+39011,
+39011,
+39025,
+39060,
+39060,
+39070,
+39083,
+39089,
+39089,
+39093,
+39093,
+39100,
+39100,
+39123,
+39123,
+39123,
+39123,
+39123,
+39123,
+39150,
+39150,
+39168,
+39168,
+39168,
+39168,
+39198,
+39198,
+39198,
+39223,
+39246,
+39270,
+39280,
+39292,
+39292,
+39308,
+39308,
+39326,
+39326,
+39341,
+39341,
+39341,
+39341,
+39352,
+39365,
+39365,
+39372,
+39385,
+39405,
+39419,
+39436,
+39436,
+39436,
39471,
-39478,
-39520,
-39520,
-39534,
-39541,
-39541,
-39548,
-39548,
-39548,
-39568,
-39581,
+39489,
+39496,
+39523,
+39530,
+39530,
+39530,
+39544,
+39557,
+39564,
+39564,
39605,
-39613,
-39627,
-39634,
-39672,
+39612,
+39629,
+39650,
+39679,
+39679,
+39679,
+39689,
39699,
-39705,
-39712,
-39728,
-39741,
-39748,
-39755,
-39762,
-39799,
-39843,
-39884,
-39891,
-39905,
-39922,
-39922,
-39929,
-39936,
-39943,
-39970,
-39970,
-39970,
-39988,
-40002,
-40022,
-40026,
-40026,
-40043,
-40073,
-40097,
-40107,
-40107,
-40166,
-40178,
-40184,
-40211,
-40234,
-40260,
-40260,
-40285,
-40310,
-40310,
-40331,
-40348,
-40348,
-40362,
-40380,
-40380,
-40394,
-40414,
-40414,
-40421,
-40421,
-40460,
-40472,
-40483,
-40490,
-40497,
-40512,
-40527,
-40546,
-40587,
-40587,
-40587,
-40587,
-40607,
-40614,
-40614,
-40614,
-40614,
-40614,
-40635,
-40635,
-40635,
-40653,
-40673,
-40673,
-40673,
-40673,
-40673,
-40680,
+39699,
+39706,
+39715,
+39734,
+39734,
+39734,
+39754,
+39789,
+39789,
+39806,
+39820,
+39879,
+39893,
+39904,
+39945,
+39945,
+39945,
+39945,
+39945,
+39945,
+39957,
+40010,
+40034,
+40074,
+40104,
+40104,
+40104,
+40104,
+40104,
+40111,
+40118,
+40138,
+40152,
+40182,
+40198,
+40198,
+40198,
+40198,
+40232,
+40236,
+40251,
+40251,
+40272,
+40279,
+40296,
+40327,
+40336,
+40336,
+40398,
+40405,
+40423,
+40474,
+40484,
+40501,
+40519,
+40519,
+40580,
+40631,
40680,
-40694,
-40708,
-40731,
-40731,
-40738,
-40757,
-40757,
-40764,
-40803,
-40812,
+40720,
+40727,
+40727,
+40727,
+40734,
+40734,
+40734,
+40741,
+40761,
+40805,
40825,
-40825,
-40832,
-40838,
-40869,
-40922,
-40936,
-40955,
-40990,
-40997,
-41010,
-41053,
-41071,
-41101,
-41107,
-41119,
-41194,
-41208,
-41208,
-41208,
-41215,
-41233,
-41265,
-41285,
-41295,
-41318,
-41318,
-41336,
-41356,
-41356,
-41363,
-41379,
-41407,
-41439,
-41469,
-41500,
-41500,
-41524,
-41524,
-41524,
-41524,
-41529,
-41578,
-41616,
-41616,
-41631,
-41672,
-41677,
-41711,
-41726,
-41787,
-41787,
-41787,
-41818,
-41845,
-41845,
-41845,
-41900,
-41930,
-41937,
-41937,
-41937,
-41937,
-41986,
-42025,
-42037,
-42059,
-42073,
-42080,
-42148,
-42148,
-42163,
-42179,
-42186,
-42197,
-42219,
-42226,
-42240,
-42240,
-42240,
-42259,
-42264,
-42280,
-42290,
-42313,
-42313,
-42328,
-42346,
-42373,
-42380,
-42399,
-42406,
-42406,
-42413,
-42427,
-42476,
-42494,
-42533,
-42533,
-42540,
-42540,
-42556,
-42567,
-42587,
-42601,
-42615,
-42622,
-42643,
-42664,
-42664,
-42664,
-42702,
-42718,
-42718,
+40846,
+40864,
+40894,
+40906,
+40906,
+40906,
+40944,
+40951,
+40971,
+40980,
+40999,
+40999,
+41015,
+41029,
+41042,
+41042,
+41059,
+41093,
+41105,
+41125,
+41163,
+41163,
+41172,
+41183,
+41183,
+41183,
+41183,
+41183,
+41192,
+41207,
+41222,
+41222,
+41222,
+41228,
+41235,
+41241,
+41241,
+41260,
+41267,
+41267,
+41287,
+41294,
+41314,
+41319,
+41319,
+41326,
+41332,
+41346,
+41346,
+41346,
+41354,
+41361,
+41361,
+41368,
+41368,
+41387,
+41416,
+41426,
+41433,
+41462,
+41496,
+41496,
+41528,
+41528,
+41553,
+41558,
+41558,
+41565,
+41586,
+41586,
+41586,
+41603,
+41610,
+41610,
+41636,
+41656,
+41656,
+41675,
+41675,
+41728,
+41752,
+41752,
+41760,
+41760,
+41791,
+41791,
+41805,
+41840,
+41852,
+41869,
+41894,
+41894,
+41894,
+41907,
+41917,
+41917,
+41917,
+41926,
+41933,
+41933,
+41946,
+41946,
+41951,
+41951,
+41980,
+41996,
+41996,
+42017,
+42036,
+42052,
+42089,
+42114,
+42114,
+42121,
+42121,
+42145,
+42145,
+42157,
+42157,
+42157,
+42165,
+42183,
+42183,
+42214,
+42235,
+42262,
+42262,
+42276,
+42276,
+42276,
+42296,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42327,
+42362,
+42362,
+42369,
+42404,
+42411,
+42435,
+42463,
+42487,
+42513,
+42526,
+42555,
+42583,
+42583,
+42596,
+42612,
+42623,
+42634,
+42639,
+42670,
+42704,
+42704,
+42704,
+42727,
+42727,
42734,
-42746,
-42761,
-42781,
-42793,
-42810,
-42815,
-42841,
-42890,
-42897,
-42905,
-42917,
-42924,
-42931,
-42936,
-42941,
-42951,
-42967,
-42988,
-42988,
+42748,
+42772,
+42804,
+42804,
+42808,
+42821,
+42843,
+42892,
+42899,
+42909,
+42916,
+42956,
+42978,
+42987,
+42987,
43012,
-43028,
-43054,
-43070,
+43030,
+43037,
+43059,
+43075,
+43075,
+43089,
+43096,
43123,
-43127,
-43144,
-43175,
-43199,
-43199,
-43236,
-43244,
-43244,
-43273,
-43280,
-43287,
-43302,
-43318,
+43154,
+43168,
+43168,
+43168,
+43181,
+43205,
+43205,
+43212,
+43218,
+43250,
+43250,
+43257,
+43257,
+43264,
+43264,
+43271,
+43284,
+43304,
+43304,
43318,
-43318,
-43331,
-43353,
-43373,
+43348,
+43355,
43373,
-43390,
-43390,
-43390,
-43390,
-43425,
-43437,
-43437,
-43447,
-43464,
-43504,
-43504,
-43504,
-43504,
-43504,
-43504,
-43512,
-43587,
-43587,
-43613,
-43620,
-43620,
-43669,
-43684,
-43698,
-43711,
-43732,
-43752,
-43766,
-43773,
-43796,
-43811,
-43820,
-43840,
-43840,
-43856,
-43876,
-43891,
-43922,
-43922,
-43945,
-43970,
-43984,
-44011,
-44024,
-44024,
-44048,
-44055,
-44055,
-44060,
-44067,
-44074,
-44094,
-44094,
-44106,
-44126,
-44136,
-44149,
-44149,
-44149,
-44190,
-44232,
-44232,
-44250,
-44264,
-44264,
-44264,
-44280,
-44280,
-44280,
-44303,
-44335,
+43394,
+43394,
+43419,
+43426,
+43430,
+43430,
+43443,
+43461,
+43478,
+43490,
+43490,
+43490,
+43537,
+43556,
+43556,
+43578,
+43604,
+43640,
+43640,
+43640,
+43645,
+43679,
+43705,
+43747,
+43769,
+43769,
+43769,
+43775,
+43803,
+43803,
+43810,
+43810,
+43844,
+43865,
+43872,
+43880,
+43886,
+43921,
+43921,
+43928,
+43928,
+43935,
+43985,
+43992,
+43992,
+44009,
+44022,
+44022,
+44038,
+44042,
+44049,
+44049,
+44056,
+44100,
+44100,
+44107,
+44121,
+44121,
+44121,
+44137,
+44197,
+44204,
+44236,
+44254,
+44286,
+44286,
+44307,
+44319,
+44329,
+44336,
+44343,
+44361,
44361,
44361,
-44398,
-44406,
-44425,
-44425,
-44452,
-44459,
-44459,
-44459,
-44459,
-44466,
-44481,
-44516,
-44550,
-44556,
-44576,
-44576,
-44583,
-44583,
-44599,
-44621,
+44377,
+44396,
+44423,
+44423,
+44449,
+44471,
+44471,
+44480,
+44480,
+44500,
+44514,
+44537,
+44560,
+44573,
+44606,
+44619,
44642,
-44651,
-44661,
-44661,
-44661,
-44679,
-44679,
-44710,
-44728,
-44740,
-44747,
-44761,
-44772,
-44795,
-44804,
-44804,
-44804,
-44804,
-44804,
-44808,
-44814,
-44814,
-44814,
-44832,
-44832,
-44832,
-44844,
-44872,
-44899,
+44705,
+44705,
+44705,
+44711,
+44746,
+44753,
+44753,
+44765,
+44765,
+44765,
+44787,
+44794,
+44801,
+44851,
+44865,
+44884,
+44891,
+44915,
+44924,
+44924,
44924,
-44931,
-44931,
-44939,
-44983,
-44988,
-44988,
-44998,
-45008,
-45015,
-45015,
-45028,
-45028,
-45045,
-45045,
-45074,
-45091,
-45091,
-45091,
-45091,
-45095,
-45141,
-45141,
-45155,
-45155,
-45155,
-45173,
-45196,
-45209,
-45226,
-45238,
-45266,
-45266,
-45266,
-45266,
-45302,
-45308,
-45312,
-45312,
-45333,
-45365,
-45377,
-45386,
-45409,
-45409,
-45409,
-45409,
-45445,
-45455,
-45478,
-45478,
-45494,
-45511,
-45511,
-45511,
-45523,
-45523,
-45538,
-45538,
-45553,
-45553,
-45589,
-45589,
-45600,
-45610,
-45629,
-45657,
-45720,
-45725,
-45725,
-45755,
-45777,
-45777,
-45791,
-45814,
-45840,
-45890,
-45890,
-45890,
-45927,
-45927,
-45934,
-45934,
-45954,
-45954,
-45976,
-45976,
-45976,
-45998,
-46007,
+44960,
+44960,
+44967,
+45006,
+45013,
+45029,
+45036,
+45042,
+45042,
+45053,
+45060,
+45076,
+45108,
+45108,
+45131,
+45138,
+45161,
+45184,
+45261,
+45275,
+45288,
+45305,
+45352,
+45359,
+45403,
+45429,
+45457,
+45484,
+45497,
+45543,
+45574,
+45598,
+45625,
+45665,
+45679,
+45686,
+45691,
+45691,
+45717,
+45722,
+45737,
+45744,
+45744,
+45770,
+45770,
+45774,
+45774,
+45781,
+45815,
+45832,
+45839,
+45856,
+45863,
+45863,
+45896,
+45915,
+45950,
+45950,
+45967,
+45967,
46016,
46016,
-46034,
-46034,
-46066,
-46081,
-46102,
+46023,
+46038,
+46038,
+46063,
+46063,
+46074,
+46087,
46117,
-46146,
-46146,
-46162,
-46162,
-46169,
-46174,
-46215,
-46215,
-46234,
-46239,
-46286,
-46286,
-46300,
-46313,
-46370,
-46370,
-46370,
-46374,
-46379,
-46393,
-46401,
-46416,
-46416,
-46446,
-46467,
-46482,
-46482,
-46496,
+46117,
+46153,
+46153,
+46163,
+46195,
+46202,
+46275,
+46302,
+46320,
+46327,
+46343,
+46343,
+46360,
+46402,
+46402,
+46430,
+46441,
+46445,
+46445,
+46445,
+46461,
+46461,
+46461,
+46478,
+46478,
46538,
46538,
-46581,
-46581,
-46629,
-46629,
-46629,
-46640,
-46644,
-46649,
+46538,
+46552,
+46569,
+46569,
+46577,
+46585,
+46585,
+46602,
+46610,
46649,
-46659,
-46659,
-46673,
-46700,
-46731,
-46731,
-46731,
-46741,
-46766,
-46766,
-46771,
-46771,
-46782,
-46794,
-46794,
-46812,
-46812,
+46656,
+46670,
+46715,
+46734,
+46734,
+46760,
+46767,
+46767,
+46781,
+46781,
+46795,
+46813,
46828,
-46851,
-46851,
-46851,
-46851,
-46851,
-46855,
-46868,
-46875,
-46875,
-46886,
-46890,
-46925,
-46925,
-46925,
-46936,
-46954,
-46972,
-46972,
-46972,
+46835,
+46858,
+46858,
+46858,
+46884,
+46918,
+46930,
+46973,
+46984,
46998,
-47068,
-47068,
-47068,
-47098,
-47107,
-47122,
-47128,
-47151,
-47156,
+47009,
+47032,
+47038,
+47038,
+47064,
+47113,
+47133,
+47149,
47156,
-47170,
-47177,
-47182,
-47193,
-47200,
-47226,
-47226,
-47253,
-47273,
-47283,
-47283,
-47290,
-47303,
-47303,
-47303,
-47320,
-47327,
-47327,
-47335,
-47335,
-47344,
-47344,
-47356,
-47356,
-47360,
-47360,
-47369,
-47394,
-47425,
-47425,
-47425,
-47443,
-47466,
-47466,
-47481,
-47495,
-47513,
-47513,
+47163,
+47178,
+47215,
+47224,
+47236,
+47263,
+47263,
+47287,
+47295,
+47333,
+47333,
+47343,
+47343,
+47365,
+47404,
+47433,
+47441,
+47448,
+47469,
+47508,
+47526,
47532,
-47532,
-47543,
-47590,
-47603,
-47613,
-47618,
-47618,
-47635,
-47641,
-47641,
-47679,
-47727,
-47740,
-47753,
-47769,
-47779,
-47801,
-47809,
-47829,
-47859,
-47859,
-47878,
-47885,
-47906,
-47906,
+47545,
+47584,
+47610,
+47610,
+47627,
+47627,
+47644,
+47644,
+47644,
+47649,
+47680,
+47699,
+47699,
+47721,
+47721,
+47721,
+47721,
+47749,
+47749,
+47785,
+47785,
+47785,
+47785,
+47785,
+47785,
+47824,
+47824,
+47839,
+47861,
47906,
-47940,
-47950,
-47950,
-47950,
-47950,
-47984,
-47991,
-47991,
+47924,
+47924,
+47942,
+47946,
+47946,
+47980,
47991,
-47991,
-48029,
-48029,
-48029,
-48038,
-48038,
-48038,
-48055,
-48055,
-48065,
-48065,
-48065,
+48009,
+48014,
+48035,
48065,
-48105,
-48105,
-48123,
-48138,
-48164,
-48179,
-48179,
-48179,
-48205,
-48211,
-48250,
-48310,
-48343,
-48368,
-48368,
-48374,
-48381,
-48397,
-48397,
-48397,
-48406,
-48426,
-48426,
-48439,
+48075,
+48101,
+48112,
+48126,
+48148,
+48148,
+48148,
+48156,
+48239,
+48239,
+48244,
+48244,
+48281,
+48281,
+48291,
+48291,
+48306,
+48324,
+48340,
+48353,
+48366,
+48366,
+48366,
+48378,
+48378,
+48396,
+48396,
+48414,
+48421,
+48435,
+48435,
48458,
-48458,
-48485,
-48485,
-48494,
-48520,
-48532,
-48578,
-48595,
-48608,
-48608,
-48608,
-48623,
-48636,
-48636,
-48636,
-48636,
-48648,
-48687,
-48703,
-48711,
-48727,
+48522,
+48522,
+48534,
+48534,
+48548,
+48556,
+48571,
+48585,
+48593,
+48593,
+48611,
+48611,
+48616,
+48616,
+48629,
+48629,
+48629,
+48642,
+48654,
+48692,
+48700,
+48700,
+48700,
+48700,
+48700,
+48713,
+48713,
+48713,
+48730,
+48741,
48741,
-48746,
-48746,
-48746,
-48746,
-48746,
-48746,
-48771,
-48771,
-48771,
-48806,
-48847,
-48847,
-48847,
-48847,
-48847,
-48886,
-48886,
-48886,
-48886,
-48886,
-48886,
-48899,
-48933,
-48933,
-48933,
-48975,
-48979,
-48986,
-48986,
-49019,
-49019,
-49019,
-49040,
-49040,
-49040,
-49059,
-49076,
-49103,
-49103,
-49132,
-49132,
-49132,
-49132,
-49132,
-49132,
-49154,
-49171,
+48760,
+48760,
+48765,
+48765,
+48765,
+48777,
+48777,
+48777,
+48788,
+48809,
+48827,
+48827,
+48827,
+48827,
+48854,
+48888,
+48905,
+48919,
+48935,
+48935,
+48947,
+48960,
+48960,
+48982,
+49004,
+49020,
+49020,
+49043,
+49060,
+49060,
+49060,
+49074,
+49090,
+49096,
+49125,
+49146,
+49166,
+49191,
+49191,
+49191,
49191,
-49216,
-49226,
-49264,
-49264,
-49278,
-49278,
-49301,
-49340,
-49340,
-49360,
-49370,
-49370,
-49374,
-49381,
-49381,
-49399,
-49406,
-49419,
-49428,
-49428,
-49464,
-49464,
-49497,
-49497,
-49497,
-49497,
-49501,
-49501,
-49501,
-49518,
-49548,
-49548,
-49579,
-49594,
-49619,
-49619,
-49639,
-49665,
-49665,
-49665,
-49665,
-49671,
-49671,
-49671,
-49686,
-49686,
-49686,
-49701,
-49701,
-49701,
-49724,
-49738,
-49755,
-49755,
-49765,
-49785,
-49795,
-49807,
-49807,
-49842,
-49862,
-49862,
-49876,
-49899,
-49899,
-49899,
-49929,
-49929,
-49929,
-49959,
-49959,
-49959,
-49990,
-49994,
-50012,
-50028,
-50071,
-50071,
-50081,
-50081,
-50081,
-50091,
-50099,
-50139,
-50139,
-50139,
-50139,
-50156,
-50184,
-50209,
-50209,
-50209,
-50216,
-50216,
-50223,
-50231,
-50231,
-50231,
-50231,
-50251,
-50265,
-50273,
-50295,
-50311,
-50311,
-50330,
-50330,
-50339,
-50348,
-50373,
-50373,
-50406,
-50406,
-50406,
-50422,
-50422,
-50433,
-50494,
-50526,
-50542,
-50542,
-50542,
-50542,
-50542,
-50552,
-50552,
-50586,
-50586,
-50586,
-50612,
-50619,
-50619,
-50644,
-50659,
-50659,
-50676,
-50676,
-50676,
-50676,
-50676,
-50723,
-50736,
-50736,
-50736,
-50736,
-50755,
-50778,
-50778,
-50778,
-50785,
-50785,
-50793,
-50815,
-50856,
-50856,
-50874,
-50886,
-50909,
-50918,
-50973,
-50998,
-51014,
-51030,
-51030,
-51030,
-51036,
-51036,
-51046,
-51072,
-51072,
-51078,
-51118,
-51118,
-51118,
-51118,
-51134,
-51182,
-51203,
-51219,
-51219,
-51230,
-51240,
-51240,
-51260,
-51260,
-51260,
-51260,
-51260,
-51260,
-51260,
-51275,
-51275,
-51301,
-51358,
-51374,
-51386,
-51393,
-51402,
-51402,
-51402,
-51441,
-51471,
-51507,
-51507,
-51531,
-51547,
-51547,
-51571,
-51571,
-51571,
-51571,
-51571,
-51571,
-51587,
-51612,
-51626,
-51642,
-51665,
-51681,
-51681,
-51681,
-51681,
-51700,
-51713,
-51734,
-51742,
-51746,
-51746,
-51746,
-51759,
-51759,
-51799,
-51799,
-51811,
-51811,
-51816,
-51816,
-51851,
-51851,
-51867,
-51879,
-51879,
-51885,
-51902,
-51918,
-51940,
-51940,
-51946,
-51966,
+49191,
+49203,
+49213,
+49219,
+49245,
+49280,
+49288,
+49300,
+49307,
+49322,
+49329,
+49342,
+49367,
+49384,
+49391,
+49391,
+49414,
+49426,
+49446,
+49460,
+49460,
+49460,
+49489,
+49503,
+49503,
+49532,
+49539,
+49539,
+49539,
+49546,
+49546,
+49567,
+49567,
+49582,
+49589,
+49596,
+49603,
+49609,
+49609,
+49653,
+49660,
+49667,
+49692,
+49710,
+49736,
+49752,
+49777,
+49802,
+49808,
+49819,
+49826,
+49845,
+49861,
+49905,
+49905,
+49916,
+49916,
+49916,
+49938,
+49938,
+49962,
+49962,
+49969,
+49976,
+50026,
+50026,
+50088,
+50088,
+50110,
+50157,
+50191,
+50234,
+50261,
+50261,
+50278,
+50278,
+50285,
+50285,
+50289,
+50314,
+50324,
+50324,
+50324,
+50324,
+50324,
+50337,
+50337,
+50337,
+50351,
+50358,
+50358,
+50358,
+50358,
+50375,
+50375,
+50375,
+50383,
+50383,
+50383,
+50396,
+50432,
+50432,
+50432,
+50432,
+50432,
+50432,
+50439,
+50439,
+50446,
+50519,
+50533,
+50537,
+50548,
+50555,
+50581,
+50588,
+50599,
+50620,
+50647,
+50654,
+50665,
+50672,
+50688,
+50688,
+50699,
+50719,
+50742,
+50742,
+50749,
+50804,
+50810,
+50827,
+50849,
+50849,
+50849,
+50849,
+50887,
+50901,
+50910,
+50910,
+50933,
+50950,
+50950,
+50962,
+50962,
+51006,
+51013,
+51028,
+51028,
+51028,
+51035,
+51068,
+51075,
+51075,
+51082,
+51089,
+51089,
+51109,
+51125,
+51153,
+51160,
+51160,
+51179,
+51204,
+51211,
+51211,
+51228,
+51228,
+51241,
+51241,
+51241,
+51241,
+51248,
+51248,
+51276,
+51288,
+51302,
+51334,
+51342,
+51349,
+51349,
+51364,
+51394,
+51401,
+51426,
+51426,
+51426,
+51446,
+51453,
+51453,
+51479,
+51494,
+51526,
+51526,
+51536,
+51558,
+51567,
+51589,
+51639,
+51646,
+51661,
+51661,
+51678,
+51685,
+51685,
+51693,
+51715,
+51715,
+51722,
+51729,
+51739,
+51747,
+51754,
+51754,
+51777,
+51777,
+51784,
+51791,
+51826,
+51847,
+51868,
+51892,
+51912,
+51937,
+51968,
+51989,
+51989,
+51989,
+51989,
+51989,
51997,
-52007,
-52018,
-52018,
-52049,
-52049,
-52049,
-52064,
-52064,
-52084,
-52104,
-52130,
-52168,
-52204,
-52236,
-52249,
-52249,
-52276,
-52276,
-52309,
-52328,
-52328,
-52338,
-52364,
-52364,
-52377,
-52395,
-52402,
-52418,
-52441,
-52441,
-52485,
-52524,
-52524,
-52567,
-52567,
-52567,
-52567,
-52614,
-52628,
-52628,
-52642,
-52654,
-52680,
-52699,
-52760,
-52765,
-52765,
-52765,
-52785,
-52785,
-52785,
-52785,
-52806,
-52832,
-52832,
-52871,
-52871,
-52885,
-52885,
-52892,
+52004,
+52020,
+52031,
+52031,
+52031,
+52047,
+52058,
+52066,
+52073,
+52093,
+52093,
+52113,
+52113,
+52113,
+52113,
+52134,
+52153,
+52163,
+52163,
+52178,
+52195,
+52208,
+52215,
+52215,
+52215,
+52227,
+52270,
+52285,
+52302,
+52311,
+52311,
+52362,
+52378,
+52416,
+52433,
+52458,
+52468,
+52468,
+52468,
+52491,
+52491,
+52504,
+52504,
+52513,
+52518,
+52518,
+52518,
+52534,
+52534,
+52542,
+52542,
+52559,
+52581,
+52610,
+52644,
+52657,
+52662,
+52685,
+52685,
+52690,
+52690,
+52708,
+52728,
+52747,
+52774,
+52788,
+52830,
+52837,
+52837,
+52876,
+52883,
+52911,
52911,
-52935,
-52958,
-52976,
-52996,
-53005,
-53005,
-53022,
-53022,
-53022,
-53066,
-53081,
-53088,
-53102,
-53109,
-53109,
-53120,
-53124,
-53158,
-53174,
-53174,
-53185,
-53185,
-53221,
-53249,
-53256,
-53256,
-53285,
-53290,
-53309,
-53309,
-53309,
+52921,
+52943,
+52943,
+52943,
+52967,
+52967,
+52981,
+53000,
+53014,
+53050,
+53050,
+53061,
+53061,
+53075,
+53082,
+53129,
+53129,
+53129,
+53145,
+53152,
+53159,
+53159,
+53179,
+53186,
+53192,
+53199,
+53199,
+53199,
+53234,
+53257,
+53262,
+53279,
+53298,
53317,
-53322,
-53322,
-53322,
-53360,
-53369,
-53369,
-53369,
-53386,
-53405,
-53405,
-53405,
-53412,
-53432,
+53341,
+53361,
+53361,
+53361,
+53372,
+53372,
+53411,
+53433,
53444,
-53464,
-53472,
-53494,
-53494,
-53494,
+53455,
+53476,
+53490,
+53504,
53531,
-53547,
-53547,
-53547,
-53547,
-53556,
-53556,
-53556,
-53556,
-53556,
-53564,
-53587,
-53606,
-53610,
-53628,
-53651,
-53651,
-53667,
+53531,
+53531,
+53545,
+53552,
+53568,
+53568,
+53568,
+53580,
+53580,
+53613,
+53635,
53667,
-53674,
-53674,
-53681,
-53697,
-53701,
-53701,
-53722,
-53722,
-53729,
-53741,
-53749,
-53749,
-53749,
-53749,
-53765,
+53677,
+53706,
+53706,
+53706,
+53726,
+53767,
53774,
-53785,
-53799,
-53799,
-53821,
-53831,
-53847,
-53902,
-53902,
-53902,
-53902,
-53941,
-53962,
-53972,
-53972,
-53998,
-54016,
-54033,
-54049,
-54066,
-54066,
-54079,
-54089,
-54089,
-54089,
-54096,
-54118,
-54139,
-54163,
-54179,
-54184,
-54210,
-54232,
-54254,
-54278,
-54278,
-54292,
-54325,
-54337,
-54371,
-54396,
-54421,
-54434,
-54455,
-54462,
+53792,
+53805,
+53816,
+53824,
+53851,
+53869,
+53869,
+53869,
+53869,
+53869,
+53879,
+53893,
+53893,
+53903,
+53903,
+53912,
+53912,
+53912,
+53912,
+53912,
+53912,
+53924,
+53924,
+53931,
+53931,
+53950,
+53960,
+53960,
+53965,
+53986,
+53986,
+54018,
+54028,
+54036,
+54054,
+54061,
+54061,
+54080,
+54090,
+54098,
+54102,
+54106,
+54106,
+54122,
+54143,
+54143,
+54158,
+54165,
+54165,
+54175,
+54175,
+54175,
+54192,
+54204,
+54220,
+54265,
+54265,
+54265,
+54271,
+54271,
+54271,
+54271,
+54276,
+54276,
+54300,
+54306,
+54306,
+54315,
+54324,
+54329,
+54343,
+54365,
+54381,
+54381,
+54381,
+54381,
+54381,
+54381,
+54403,
+54403,
+54403,
+54429,
+54445,
+54445,
+54445,
+54458,
+54458,
+54471,
+54495,
54495,
54507,
-54507,
-54523,
-54542,
-54552,
-54552,
-54552,
-54552,
-54552,
-54559,
-54559,
-54569,
-54620,
-54692,
-54710,
-54721,
-54721,
-54759,
-54773,
-54787,
-54787,
-54803,
-54808,
-54834,
-54834,
-54848,
-54848,
-54848,
-54855,
-54855,
-54879,
-54891,
-54891,
-54891,
-54891,
-54900,
-54910,
-54949,
-54962,
-54978,
-54978,
-54985,
-55005,
-55018,
-55037,
-55037,
-55044,
-55049,
-55049,
-55056,
-55066,
-55073,
-55081,
-55143,
-55151,
-55161,
+54514,
+54519,
+54526,
+54554,
+54571,
+54600,
+54607,
+54622,
+54622,
+54638,
+54656,
+54656,
+54665,
+54682,
+54682,
+54682,
+54703,
+54709,
+54709,
+54725,
+54749,
+54780,
+54780,
+54794,
+54799,
+54799,
+54799,
+54799,
+54804,
+54817,
+54840,
+54858,
+54858,
+54858,
+54858,
+54878,
+54890,
+54896,
+54904,
+54904,
+54911,
+54911,
+54924,
+54924,
+54924,
+54924,
+54924,
+54924,
+54924,
+54938,
+54946,
+54966,
+54984,
+54984,
+54984,
+54984,
+54984,
+54995,
+55002,
+55017,
+55017,
+55026,
+55051,
+55083,
+55083,
+55083,
+55083,
+55083,
+55100,
+55100,
+55100,
+55108,
+55116,
+55126,
+55126,
+55126,
+55126,
+55133,
+55137,
+55137,
+55137,
+55168,
+55168,
55168,
-55190,
-55196,
-55213,
-55213,
-55230,
-55237,
-55247,
-55267,
-55272,
-55279,
-55279,
-55286,
-55306,
-55334,
-55341,
-55348,
-55354,
-55363,
-55363,
-55378,
-55386,
-55395,
-55432,
-55432,
-55437,
-55446,
-55458,
-55479,
-55502,
-55512,
-55512,
-55532,
+55168,
+55173,
+55173,
+55177,
+55177,
+55177,
+55205,
+55217,
+55241,
+55255,
+55287,
+55291,
+55324,
+55328,
+55336,
+55343,
+55361,
+55376,
+55376,
+55381,
+55409,
+55409,
+55409,
+55409,
+55409,
+55424,
+55424,
+55441,
+55441,
+55452,
+55470,
+55470,
+55515,
+55515,
+55533,
+55543,
+55543,
+55543,
55543,
-55565,
-55573,
-55580,
-55580,
-55618,
-55638,
+55543,
+55543,
+55577,
+55577,
+55588,
+55603,
+55634,
+55634,
+55634,
55645,
-55657,
-55657,
-55657,
-55691,
-55708,
-55708,
-55708,
-55708,
-55729,
-55735,
-55758,
-55758,
-55767,
+55665,
+55665,
+55676,
+55693,
+55693,
+55701,
+55716,
+55734,
+55762,
55772,
+55791,
+55791,
+55795,
+55795,
+55812,
+55812,
+55816,
55820,
-55830,
-55830,
-55854,
-55854,
-55866,
-55886,
-55886,
-55886,
-55886,
-55910,
-55910,
-55914,
-55929,
-55939,
-55965,
-56006,
-56025,
-56037,
-56037,
-56037,
-56064,
-56115,
-56115,
-56128,
-56133,
-56133,
-56133,
-56133,
-56133,
-56140,
-56140,
-56140,
-56151,
+55837,
+55837,
+55837,
+55837,
+55837,
+55850,
+55850,
+55850,
+55850,
+55878,
+55878,
+55883,
+55887,
+55887,
+55887,
+55908,
+55908,
+55932,
+55932,
+55945,
+55945,
+55958,
+55958,
+55969,
+56008,
+56029,
+56029,
+56045,
+56056,
+56086,
+56086,
+56120,
+56120,
+56149,
56177,
-56205,
-56205,
-56219,
-56219,
-56219,
-56236,
-56250,
-56250,
-56250,
-56260,
-56264,
-56271,
-56271,
-56283,
-56292,
-56312,
-56329,
-56338,
+56177,
+56188,
+56188,
+56194,
+56194,
+56202,
+56202,
+56222,
+56222,
+56254,
+56254,
+56293,
+56313,
56338,
56338,
-56364,
-56371,
-56382,
-56382,
-56389,
-56389,
-56389,
-56417,
-56417,
-56417,
-56417,
-56417,
-56437,
-56437,
+56353,
+56378,
+56393,
+56393,
+56410,
+56410,
+56410,
+56410,
+56444,
56444,
-56460,
-56460,
-56474,
-56503,
+56490,
+56490,
+56490,
56511,
-56524,
-56594,
-56599,
-56659,
-56685,
-56700,
-56707,
-56707,
-56738,
-56761,
-56774,
-56785,
-56792,
-56805,
-56829,
-56829,
-56840,
-56868,
-56868,
-56868,
-56868,
-56874,
-56874,
-56874,
-56874,
-56881,
-56881,
+56511,
+56525,
+56525,
+56537,
+56558,
+56578,
+56588,
+56588,
+56596,
+56604,
+56604,
+56604,
+56604,
+56604,
+56604,
+56604,
+56608,
+56634,
+56644,
+56644,
+56644,
+56663,
+56663,
+56671,
+56671,
+56671,
+56671,
+56697,
+56718,
+56718,
+56718,
+56748,
+56752,
+56752,
+56768,
+56810,
+56810,
+56810,
+56836,
+56882,
+56882,
+56882,
+56893,
56893,
-56922,
-56934,
-56934,
-56944,
-56944,
-56944,
-56944,
-56965,
-56973,
-57005,
-57081,
-57126,
-57138,
-57159,
-57175,
-57199,
-57216,
-57216,
-57222,
-57222,
-57222,
-57237,
-57259,
-57282,
-57282,
-57296,
-57312,
-57312,
-57341,
+56917,
+56917,
+56937,
+56967,
+56976,
+56996,
+56996,
+57031,
+57049,
+57071,
+57103,
+57103,
+57103,
+57121,
+57133,
+57151,
+57151,
+57165,
+57165,
+57165,
+57170,
+57185,
+57185,
+57185,
+57204,
+57214,
+57241,
+57286,
+57336,
+57336,
+57377,
57397,
-57405,
-57442,
-57442,
-57442,
-57456,
-57466,
-57482,
-57500,
-57512,
-57537,
-57537,
-57575,
-57575,
+57409,
+57439,
+57451,
+57451,
+57472,
+57486,
+57532,
+57556,
+57556,
+57562,
57575,
-57582,
-57609,
-57633,
-57651,
-57688,
-57714,
-57767,
-57775,
-57783,
-57783,
-57810,
-57849,
-57856,
-57869,
-57889,
-57916,
+57590,
+57621,
+57654,
+57675,
+57675,
+57675,
+57689,
+57689,
+57695,
+57699,
+57716,
+57739,
+57748,
+57788,
+57806,
+57822,
+57828,
+57828,
+57838,
+57861,
+57894,
+57924,
+57924,
+57930,
+57930,
+57930,
57941,
57941,
-57941,
-57948,
-57956,
-57974,
-57996,
-58017,
-58048,
-58048,
-58048,
-58048,
-58070,
+57966,
+57997,
+58022,
+58030,
+58050,
58070,
-58094,
-58151,
-58192,
-58224,
-58224,
-58224,
-58224,
-58263,
-58263,
-58273,
-58283,
-58314,
-58356,
-58356,
-58363,
-58363,
-58363,
-58380,
-58396,
-58396,
-58417,
-58417,
-58417,
-58423,
-58423,
-58450,
-58461,
-58461,
-58470,
-58470,
-58514,
-58514,
-58537,
-58544,
-58557,
-58557,
-58557,
-58557,
-58557,
-58591,
-58615,
-58636,
-58636,
-58658,
-58679,
-58686,
-58686,
-58686,
-58700,
+58107,
+58115,
+58158,
+58185,
+58217,
+58235,
+58266,
+58272,
+58298,
+58309,
+58349,
+58381,
+58381,
+58418,
+58432,
+58456,
+58468,
+58468,
+58489,
+58517,
+58517,
+58535,
+58561,
+58581,
+58618,
+58655,
+58655,
+58674,
+58680,
+58696,
+58701,
+58701,
+58701,
58717,
-58732,
-58739,
+58717,
+58727,
58739,
-58745,
-58752,
+58753,
+58762,
58762,
-58784,
-58811,
-58825,
+58762,
+58797,
+58809,
58832,
-58839,
-58863,
-58899,
-58905,
-58912,
+58847,
+58868,
+58868,
+58868,
+58880,
+58880,
+58880,
+58885,
+58885,
+58885,
+58885,
+58885,
+58885,
+58885,
58912,
-58912,
-58939,
-58939,
-58939,
-58960,
-58973,
-58973,
-58973,
-58973,
-58973,
-58980,
-58980,
-58987,
-58994,
-59012,
-59012,
-59019,
-59055,
-59110,
-59110,
-59110,
-59110,
-59135,
+58931,
+58931,
+58931,
+58951,
+58963,
+58985,
+58985,
+59003,
+59008,
+59017,
+59017,
+59027,
+59052,
+59058,
+59058,
+59058,
+59096,
+59130,
+59153,
59153,
59153,
-59180,
-59186,
-59196,
-59210,
-59236,
-59244,
-59244,
-59244,
-59276,
-59282,
-59300,
-59300,
-59342,
-59351,
-59372,
-59390,
-59402,
-59418,
-59444,
-59444,
-59444,
-59444,
-59482,
+59153,
+59153,
+59153,
+59153,
+59153,
+59162,
+59162,
+59162,
+59162,
+59179,
+59225,
+59242,
+59248,
+59270,
+59318,
+59323,
+59340,
+59346,
+59360,
+59366,
+59382,
+59416,
+59445,
+59471,
59495,
59495,
-59525,
-59545,
-59568,
-59578,
-59584,
-59584,
-59596,
-59596,
-59596,
-59596,
-59615,
-59625,
-59663,
-59663,
-59670,
-59711,
-59731,
-59731,
-59761,
-59782,
-59837,
-59837,
-59862,
-59904,
-59931,
-59931,
-59931,
-59931,
-59946,
-59958,
-59958,
-59958,
-59958,
-59958,
-59981,
-60003,
-60003,
-60003,
-60012,
-60012,
-60012,
-60039,
-60047,
-60088,
-60116,
-60161,
-60195,
-60195,
-60227,
-60238,
-60256,
-60283,
-60292,
-60296,
-60301,
-60325,
-60325,
-60325,
-60335,
-60335,
-60368,
-60368,
-60368,
-60399,
-60440,
-60449,
-60470,
-60485,
-60499,
-60535,
-60535,
-60542,
-60550,
-60550,
-60562,
-60562,
-60569,
-60614,
-60614,
-60614,
-60634,
-60634,
-60648,
-60648,
-60648,
-60669,
-60669,
-60690,
-60698,
-60698,
-60723,
-60752,
-60772,
-60772,
-60772,
-60788,
-60788,
-60810,
-60821,
-60846,
-60869,
-60899,
-60916,
-60916,
-60916,
-60916,
-60925,
-60931,
-60931,
-60931,
-60931,
-60938,
-60972,
-60972,
-60972,
-60985,
-60985,
-61003,
-61003,
-61003,
-61003,
-61003,
-61003,
-61003,
-61003,
-61003,
-61031,
-61031,
-61044,
-61056,
-61072,
-61108,
-61146,
-61146,
-61146,
-61146,
-61207,
-61231,
-61231,
-61250,
-61257,
-61257,
-61288,
-61288,
-61322,
-61322,
-61338,
-61338,
-61343,
-61352,
-61352,
-61373,
+59513,
+59513,
+59541,
+59547,
+59553,
+59559,
+59583,
+59595,
+59607,
+59631,
+59631,
+59643,
+59649,
+59661,
+59714,
+59737,
+59737,
+59758,
+59758,
+59775,
+59784,
+59796,
+59815,
+59821,
+59821,
+59849,
+59856,
+59868,
+59881,
+59900,
+59907,
+59928,
+59940,
+59940,
+59955,
+59955,
+60014,
+60014,
+60045,
+60057,
+60057,
+60063,
+60075,
+60075,
+60079,
+60079,
+60096,
+60111,
+60111,
+60111,
+60156,
+60171,
+60183,
+60197,
+60223,
+60223,
+60229,
+60253,
+60259,
+60259,
+60274,
+60315,
+60342,
+60342,
+60386,
+60396,
+60406,
+60406,
+60433,
+60433,
+60433,
+60457,
+60474,
+60474,
+60492,
+60502,
+60508,
+60508,
+60514,
+60527,
+60545,
+60551,
+60588,
+60621,
+60645,
+60645,
+60663,
+60685,
+60711,
+60758,
+60758,
+60769,
+60781,
+60823,
+60842,
+60842,
+60842,
+60848,
+60848,
+60860,
+60866,
+60880,
+60880,
+60880,
+60898,
+60949,
+60975,
+60975,
+60997,
+60997,
+61059,
+61083,
+61083,
+61107,
+61107,
+61113,
+61117,
+61123,
+61140,
+61152,
+61174,
+61183,
+61183,
+61183,
+61235,
+61262,
+61268,
+61268,
+61268,
+61276,
+61289,
+61297,
+61297,
+61312,
+61327,
+61336,
+61350,
+61375,
61383,
-61389,
-61436,
-61443,
-61449,
-61503,
-61520,
-61520,
-61520,
-61520,
-61532,
-61544,
-61557,
-61557,
-61557,
-61557,
-61563,
-61563,
-61591,
-61610,
-61631,
-61631,
-61631,
-61651,
-61659,
-61691,
-61726,
-61744,
-61744,
-61748,
-61758,
-61794,
-61829,
-61836,
-61856,
-61856,
-61864,
-61897,
-61924,
-61924,
-61924,
-61924,
-61924,
+61409,
+61422,
+61422,
+61457,
+61497,
+61497,
+61554,
+61594,
+61606,
+61606,
+61624,
+61624,
+61624,
+61633,
+61633,
+61658,
+61674,
+61682,
+61682,
+61696,
+61696,
+61696,
+61696,
+61706,
+61747,
+61768,
+61768,
+61768,
+61777,
+61777,
+61777,
+61781,
+61787,
+61800,
+61815,
+61820,
+61826,
+61834,
+61865,
+61871,
+61876,
+61889,
+61912,
+61912,
+61912,
+61918,
+61918,
61946,
-61946,
-61962,
-61977,
-62005,
+61985,
+61985,
+61985,
+62004,
62015,
62015,
-62033,
-62033,
-62033,
-62065,
-62075,
-62075,
+62029,
+62044,
+62050,
+62064,
+62064,
62087,
-62104,
-62104,
-62104,
-62104,
-62138,
-62138,
-62165,
-62165,
-62193,
-62220,
-62235,
-62235,
-62255,
-62262,
-62269,
-62269,
-62269,
-62269,
-62269,
-62282,
-62282,
-62291,
-62307,
-62307,
-62307,
-62316,
-62316,
-62333,
-62333,
-62344,
-62370,
-62392,
-62392,
-62392,
-62396,
-62411,
-62411,
-62411,
-62418,
-62422,
-62463,
-62463,
-62486,
-62500,
-62504,
-62512,
-62512,
-62522,
-62539,
-62544,
-62557,
-62567,
-62567,
-62567,
-62571,
-62571,
-62571,
-62575,
-62575,
-62575,
-62575,
-62591,
-62591,
-62632,
-62638,
-62638,
-62638,
-62648,
-62675,
-62675,
-62675,
-62675,
-62696,
-62696,
-62715,
-62715,
-62732,
-62745,
-62801,
-62828,
+62099,
+62099,
+62110,
+62116,
+62129,
+62142,
+62167,
+62179,
+62191,
+62212,
+62218,
+62218,
+62256,
+62256,
+62283,
+62304,
+62304,
+62329,
+62329,
+62351,
+62351,
+62351,
+62351,
+62368,
+62368,
+62386,
+62404,
+62442,
+62449,
+62449,
+62449,
+62469,
+62473,
+62488,
+62488,
+62502,
+62530,
+62549,
+62569,
+62569,
+62569,
+62600,
+62600,
+62609,
+62622,
+62639,
+62639,
+62639,
+62657,
+62657,
+62681,
+62681,
+62681,
+62688,
+62716,
+62716,
+62724,
+62724,
+62735,
+62743,
+62757,
+62769,
+62789,
+62809,
+62809,
+62815,
+62836,
62853,
62853,
62863,
62863,
-62879,
-62884,
-62884,
-62893,
-62929,
-62949,
-62949,
-62961,
-62980,
-62998,
-63007,
-63017,
-63027,
-63034,
-63034,
-63050,
-63050,
-63050,
-63050,
-63088,
-63111,
-63111,
-63111,
-63111,
-63111,
-63111,
-63111,
+62863,
+62863,
+62863,
+62872,
+62885,
+62885,
+62914,
+62914,
+62914,
+62952,
+62952,
+62964,
+63000,
+63000,
+63000,
+63010,
+63016,
+63016,
+63016,
+63032,
+63039,
+63049,
+63063,
+63063,
+63099,
63111,
-63142,
-63155,
-63155,
-63165,
-63165,
-63165,
-63172,
-63172,
-63172,
-63172,
-63172,
-63172,
-63172,
-63191,
-63191,
-63201,
-63221,
-63230,
-63230,
-63230,
-63230,
-63249,
-63254,
-63254,
-63266,
-63266,
-63287,
-63287,
-63313,
-63327,
-63327,
-63327,
-63327,
-63346,
-63377,
-63377,
-63377,
-63392,
-63392,
-63392,
-63392,
-63392,
-63412,
-63412,
-63431,
-63437,
-63437,
-63464,
-63473,
-63479,
-63494,
-63509,
-63509,
-63520,
-63520,
-63520,
-63520,
-63520,
-63547,
-63547,
-63547,
+63119,
+63125,
+63145,
+63176,
+63188,
+63225,
+63231,
+63244,
+63244,
+63255,
+63255,
+63273,
+63273,
+63285,
+63285,
+63338,
+63352,
+63399,
+63399,
+63423,
+63423,
+63435,
+63449,
+63449,
+63457,
+63491,
+63491,
+63518,
+63518,
63547,
-63547,
-63582,
-63614,
-63632,
-63632,
-63640,
-63640,
-63664,
-63664,
-63664,
+63565,
+63576,
+63594,
+63594,
+63594,
+63594,
+63600,
+63600,
+63616,
+63616,
+63642,
+63671,
+63671,
+63671,
+63677,
63677,
-63690,
-63690,
-63713,
-63738,
-63738,
-63771,
-63788,
-63788,
-63811,
-63811,
-63818,
-63818,
-63818,
-63818,
-63830,
-63852,
-63863,
-63863,
-63883,
-63883,
-63887,
-63887,
-63920,
-63931,
-63956,
-63956,
-63956,
-63975,
-64026,
-64030,
-64067,
-64067,
-64067,
-64080,
-64080,
-64097,
-64124,
-64124,
-64139,
-64139,
-64139,
-64139,
-64148,
-64148,
-64148,
-64148,
-64173,
-64193,
-64200,
-64217,
-64231,
-64235,
-64241,
-64241,
-64279,
-64313,
-64332,
-64345,
-64368,
-64424,
-64430,
-64448,
-64479,
+63691,
+63706,
+63720,
+63733,
+63755,
+63762,
+63779,
+63779,
+63795,
+63795,
+63795,
+63847,
+63879,
+63905,
+63921,
+63927,
+63965,
+63986,
+63986,
+64007,
+64007,
+64052,
+64052,
+64066,
+64079,
+64079,
+64134,
+64134,
+64140,
+64150,
+64150,
+64167,
+64192,
+64192,
+64192,
+64208,
+64224,
+64232,
+64243,
+64243,
+64278,
+64295,
+64314,
+64314,
+64314,
+64314,
+64314,
+64314,
+64314,
+64331,
+64360,
+64377,
+64395,
+64395,
+64395,
+64420,
+64463,
+64470,
+64486,
64496,
-64514,
-64574,
-64574,
-64595,
-64599,
-64618,
-64643,
-64657,
-64672,
-64691,
-64691,
-64691,
-64691,
-64728,
-64742,
-64760,
-64760,
-64787,
-64819,
-64819,
-64837,
-64844,
-64860,
-64874,
-64885,
-64885,
-64891,
-64901,
-64953,
-64953,
-64953,
-64967,
-64997,
-64997,
-64997,
-65020,
-65027,
-65044,
-65051,
-65062,
-65078,
-65099,
-65099,
-65099,
-65126,
-65133,
-65162,
+64509,
+64509,
+64519,
+64531,
+64548,
+64570,
+64597,
+64631,
+64631,
+64661,
+64671,
+64710,
+64710,
+64710,
+64751,
+64751,
+64761,
+64772,
+64772,
+64772,
+64772,
+64772,
+64792,
+64834,
+64846,
+64846,
+64862,
+64881,
+64893,
+64893,
+64911,
+64920,
+64937,
+64937,
+64954,
+64954,
+64954,
+64970,
+64970,
+64980,
+64980,
+64980,
+65004,
+65013,
+65013,
+65022,
+65022,
+65022,
+65047,
+65047,
+65054,
+65054,
+65061,
+65061,
+65061,
+65069,
+65081,
+65127,
+65136,
+65158,
+65158,
+65158,
+65188,
+65188,
+65188,
65209,
-65217,
-65234,
-65265,
-65265,
-65265,
-65285,
-65285,
-65291,
-65291,
-65291,
-65308,
-65328,
-65335,
-65341,
-65353,
-65366,
+65227,
+65227,
+65227,
+65242,
+65246,
+65263,
+65289,
+65297,
+65314,
+65314,
+65347,
+65347,
+65347,
+65390,
65390,
-65408,
-65418,
-65429,
-65440,
-65440,
-65457,
-65466,
-65496,
-65502,
-65508,
-65508,
+65405,
+65412,
+65432,
+65432,
+65445,
+65445,
+65460,
+65460,
+65497,
+65497,
+65497,
+65497,
65517,
-65535,
-65554,
-65558,
-65564,
-65564,
-65570,
-65581,
-65607,
-65627,
-65635,
-65635,
-65635,
-65635,
+65526,
+65526,
+65547,
+65547,
+65553,
+65553,
+65569,
+65576,
+65576,
+65576,
+65586,
+65586,
+65586,
+65586,
+65603,
+65628,
+65628,
65647,
-65685,
-65693,
-65712,
-65729,
-65729,
-65734,
-65734,
-65734,
-65755,
-65776,
-65776,
-65793,
-65808,
-65828,
-65842,
-65878,
-65891,
-65891,
-65891,
-65982,
-65989,
-66003,
-66003,
-66003,
-66023,
-66057,
-66088,
-66101,
-66132,
-66139,
-66146,
-66146,
-66159,
-66159,
-66182,
-66182,
-66182,
-66189,
-66217,
-66259,
-66271,
-66271,
-66285,
-66297,
-66332,
-66349,
-66349,
-66364,
-66364,
-66421,
-66449,
-66463,
-66503,
-66535,
-66548,
-66555,
-66555,
-66570,
-66570,
-66580,
-66580,
-66587,
-66587,
-66587,
-66603,
-66631,
-66631,
-66650,
-66650,
-66675,
-66695,
-66702,
-66702,
-66702,
-66702,
-66709,
-66709,
-66739,
-66755,
-66762,
-66762,
-66775,
-66805,
-66823,
-66835,
-66841,
-66841,
-66841,
-66841,
-66841,
-66841,
+65647,
+65667,
+65677,
+65695,
+65704,
+65715,
+65715,
+65743,
+65743,
+65782,
+65802,
+65809,
+65818,
+65837,
+65837,
+65852,
+65856,
+65871,
+65875,
+65918,
+65918,
+65918,
+65944,
+65944,
+65951,
+65958,
+65980,
+65980,
+66007,
+66007,
+66007,
+66036,
+66059,
+66059,
+66059,
+66082,
+66082,
+66082,
+66082,
+66121,
+66121,
+66128,
+66128,
+66168,
+66168,
+66188,
+66203,
+66218,
+66251,
+66251,
+66270,
+66270,
+66270,
+66270,
+66296,
+66301,
+66328,
+66361,
+66387,
+66387,
+66416,
+66434,
+66448,
+66448,
+66448,
+66467,
+66467,
+66476,
+66476,
+66476,
+66493,
+66505,
+66505,
+66505,
+66513,
+66513,
+66513,
+66513,
+66528,
+66549,
+66549,
+66549,
+66566,
+66571,
+66593,
+66623,
+66623,
+66623,
+66623,
+66623,
+66623,
+66623,
+66623,
+66623,
+66646,
+66657,
+66681,
+66697,
+66727,
+66747,
+66754,
+66773,
+66795,
+66821,
+66833,
+66840,
+66861,
66861,
-66907,
-66907,
-66907,
-66907,
-66907,
-66922,
-66940,
-66940,
-66940,
-66940,
-66975,
-66975,
-66975,
-67002,
-67016,
-67032,
-67032,
-67039,
-67069,
-67075,
-67086,
-67119,
-67146,
-67146,
-67151,
-67167,
-67197,
-67197,
-67214,
-67214,
+66861,
+66861,
+66861,
+66874,
+66874,
+66874,
+66880,
+66880,
+66880,
+66890,
+66903,
+66903,
+66918,
+66946,
+67028,
+67028,
+67035,
+67050,
+67050,
+67062,
+67077,
+67077,
+67091,
+67091,
+67108,
+67108,
+67136,
+67136,
+67136,
+67152,
+67173,
+67202,
67221,
-67236,
-67236,
-67249,
-67265,
-67279,
-67306,
-67313,
-67336,
+67245,
+67245,
+67251,
+67260,
+67277,
+67277,
+67277,
+67277,
+67284,
+67311,
+67311,
+67311,
+67332,
+67332,
+67332,
67353,
-67404,
-67420,
-67420,
-67420,
-67420,
-67420,
-67420,
-67429,
-67429,
-67446,
+67395,
+67421,
+67421,
67446,
-67462,
-67462,
-67473,
-67480,
-67490,
-67511,
-67511,
-67568,
-67605,
-67639,
-67646,
-67682,
-67689,
-67696,
-67702,
-67720,
-67744,
-67763,
-67763,
+67497,
+67519,
+67524,
+67549,
+67549,
+67565,
+67575,
+67593,
+67607,
+67612,
+67612,
+67612,
+67625,
+67675,
+67685,
+67694,
+67705,
+67705,
+67705,
+67725,
+67725,
+67772,
67782,
-67806,
-67806,
-67806,
-67810,
-67817,
-67817,
+67782,
+67782,
+67782,
+67782,
+67811,
+67827,
67827,
-67840,
-67840,
-67840,
-67840,
-67840,
-67847,
-67867,
-67874,
-67874,
-67886,
-67886,
-67920,
-67927,
-67932,
-67960,
-67967,
-67974,
-67992,
-67992,
-68004,
-68004,
-68031,
-68031,
-68063,
-68088,
-68095,
-68112,
-68112,
-68112,
-68127,
-68135,
-68146,
-68176,
-68193,
-68200,
-68221,
-68228,
-68245,
-68245,
-68280,
-68280,
-68320,
-68345,
-68352,
-68383,
-68425,
-68445,
-68445,
-68452,
-68479,
-68503,
-68510,
-68517,
-68576,
-68583,
-68628,
-68642,
-68646,
-68662,
-68701,
-68717,
-68724,
-68724,
-68733,
-68740,
-68756,
-68777,
-68777,
-68777,
-68777,
-68791,
-68803,
-68803,
-68825,
-68843,
-68857,
-68879,
-68907,
-68907,
-68907,
-68919,
-68959,
-68994,
-69006,
-69023,
-69023,
-69040,
-69055,
-69055,
-69076,
-69102,
-69102,
-69140,
-69149,
-69165,
-69183,
-69221,
-69228,
-69235,
-69256,
-69256,
-69256,
-69268,
-69292,
-69326,
-69363,
-69380,
-69380,
-69380,
-69380,
-69405,
-69417,
-69445,
-69445,
-69464,
-69464,
-69464,
-69464,
-69464,
-69480,
-69508,
-69544,
-69544,
-69557,
-69557,
-69557,
+67827,
+67835,
+67852,
+67857,
+67900,
+67900,
+67900,
+67904,
+67904,
+67904,
+67904,
+67921,
+67941,
+67952,
+67952,
+67969,
+67969,
+67969,
+67983,
+67983,
+68008,
+68008,
+68016,
+68035,
+68035,
+68035,
+68035,
+68035,
+68056,
+68076,
+68083,
+68104,
+68104,
+68104,
+68104,
+68122,
+68143,
+68167,
+68185,
+68185,
+68185,
+68202,
+68229,
+68238,
+68251,
+68274,
+68295,
+68300,
+68300,
+68338,
+68370,
+68392,
+68416,
+68416,
+68416,
+68416,
+68436,
+68458,
+68485,
+68508,
+68542,
+68542,
+68549,
+68549,
+68549,
+68549,
+68555,
+68555,
+68563,
+68575,
+68587,
+68606,
+68606,
+68606,
+68606,
+68606,
+68611,
+68611,
+68611,
+68630,
+68636,
+68673,
+68673,
+68686,
+68686,
+68686,
+68697,
+68706,
+68716,
+68728,
+68749,
+68754,
+68779,
+68784,
+68784,
+68784,
+68784,
+68794,
+68794,
+68799,
+68813,
+68813,
+68840,
+68840,
+68858,
+68858,
+68858,
+68880,
+68880,
+68902,
+68908,
+68908,
+68908,
+68908,
+68908,
+68934,
+68934,
+68941,
+68968,
+68968,
+68984,
+68984,
+69000,
+69000,
+69000,
+69000,
+69000,
+69000,
+69000,
+69018,
+69045,
+69083,
+69083,
+69083,
+69083,
+69100,
+69104,
+69104,
+69104,
+69167,
+69167,
+69181,
+69192,
+69192,
+69192,
+69203,
+69203,
+69203,
+69203,
+69203,
+69203,
+69203,
+69203,
+69203,
+69208,
+69230,
+69242,
+69242,
+69249,
+69249,
+69249,
+69249,
+69259,
+69266,
+69266,
+69266,
+69331,
+69331,
+69331,
+69358,
+69369,
+69408,
+69414,
+69433,
+69433,
+69441,
+69456,
+69482,
+69482,
+69492,
+69527,
+69536,
+69549,
+69549,
+69566,
+69566,
+69570,
+69570,
69587,
-69607,
-69628,
-69655,
-69725,
-69749,
-69760,
-69796,
-69803,
-69847,
-69872,
-69872,
-69893,
-69893,
-69893,
-69893,
-69893,
-69902,
-69926,
-69941,
-69948,
+69592,
+69592,
+69635,
+69642,
+69642,
+69654,
+69654,
+69654,
+69670,
+69677,
+69689,
+69689,
+69689,
+69705,
+69724,
+69724,
+69744,
+69750,
+69762,
+69779,
+69798,
+69806,
+69806,
+69814,
+69814,
+69844,
+69858,
+69868,
+69877,
+69911,
+69925,
+69925,
69948,
-69965,
-69979,
-69986,
-69993,
-70000,
-70005,
+69955,
+69964,
+69987,
+70016,
70030,
-70050,
+70030,
+70047,
+70052,
+70052,
+70052,
+70052,
70057,
-70064,
-70091,
-70117,
-70163,
-70163,
+70070,
+70070,
+70070,
+70070,
+70083,
+70089,
+70089,
+70099,
+70111,
+70125,
+70140,
+70140,
+70144,
+70144,
+70144,
70170,
-70180,
-70211,
-70218,
-70264,
-70264,
-70278,
-70285,
-70285,
-70332,
-70332,
-70337,
-70337,
-70337,
-70361,
-70368,
-70385,
-70392,
-70410,
-70429,
-70435,
+70176,
+70188,
+70200,
+70200,
+70215,
+70233,
+70233,
+70238,
+70270,
+70292,
+70302,
+70302,
+70320,
+70320,
+70328,
+70362,
+70362,
+70379,
70435,
-70435,
-70435,
-70442,
-70442,
-70456,
-70485,
-70503,
-70512,
-70521,
+70445,
+70476,
+70483,
+70483,
+70483,
+70494,
70521,
-70525,
-70525,
-70563,
-70575,
-70586,
-70586,
-70586,
-70603,
-70609,
-70640,
-70656,
-70664,
-70664,
-70670,
-70685,
-70692,
-70710,
-70731,
-70750,
-70767,
-70785,
+70533,
+70533,
+70533,
+70533,
+70544,
+70544,
+70582,
+70598,
+70615,
+70615,
+70636,
+70684,
+70684,
+70704,
+70704,
+70704,
+70716,
+70744,
+70772,
+70772,
70816,
-70823,
-70839,
-70839,
-70853,
-70853,
-70853,
-70871,
-70889,
-70889,
-70889,
+70831,
+70831,
+70865,
+70865,
+70876,
+70892,
70907,
-70916,
-70955,
-70955,
-70970,
-70970,
-70990,
-70998,
-70998,
-70998,
-71024,
-71045,
-71051,
-71058,
-71058,
-71058,
-71058,
-71058,
-71058,
-71058,
-71074,
-71096,
-71096,
-71105,
-71105,
-71112,
-71112,
-71119,
-71135,
-71135,
-71152,
-71152,
-71152,
-71152,
-71170,
-71177,
-71199,
-71199,
-71199,
-71210,
-71210,
-71238,
-71238,
-71238,
-71238,
-71243,
-71243,
-71243,
-71261,
-71288,
-71302,
-71318,
-71361,
-71361,
-71361,
-71389,
-71389,
-71389,
-71410,
-71422,
-71439,
-71439,
-71439,
-71439,
-71439,
-71449,
-71449,
-71449,
-71469,
-71483,
-71490,
-71490,
-71494,
-71506,
-71544,
-71544,
-71571,
-71580,
-71580,
-71580,
-71580,
-71593,
-71611,
-71626,
-71626,
-71640,
-71653,
-71653,
-71653,
-71665,
-71684,
+70925,
+70925,
+70925,
+70934,
+70934,
+70934,
+70973,
+71002,
+71044,
+71044,
+71044,
+71044,
+71056,
+71073,
+71073,
+71097,
+71097,
+71108,
+71108,
+71113,
+71113,
+71132,
+71146,
+71146,
+71153,
+71160,
+71160,
+71179,
+71198,
+71212,
+71223,
+71230,
+71230,
+71244,
+71274,
+71286,
+71286,
+71304,
+71304,
+71304,
+71320,
+71320,
+71325,
+71325,
+71325,
+71359,
+71388,
+71388,
+71411,
+71416,
+71416,
+71438,
+71464,
+71464,
+71464,
+71471,
+71485,
+71505,
+71519,
+71526,
+71541,
+71563,
+71563,
+71583,
+71605,
+71612,
+71631,
+71663,
+71682,
+71682,
71700,
-71729,
-71729,
-71729,
-71729,
-71741,
-71741,
-71748,
-71809,
-71818,
-71818,
-71836,
-71876,
-71926,
-71946,
-71946,
-71946,
-71946,
-71946,
-71971,
-71984,
-71984,
-71994,
-72010,
-72010,
-72010,
-72010,
-72010,
-72010,
-72035,
-72079,
-72079,
-72102,
-72129,
-72138,
-72151,
-72151,
-72151,
-72151,
-72162,
-72162,
-72166,
-72166,
-72166,
-72175,
-72175,
-72175,
-72191,
-72191,
-72191,
-72191,
-72191,
-72191,
-72242,
-72242,
-72242,
-72248,
-72264,
-72282,
-72290,
-72308,
-72324,
-72345,
-72345,
-72345,
-72345,
-72351,
-72370,
-72370,
-72401,
-72401,
-72407,
-72407,
-72407,
-72407,
-72435,
-72453,
-72453,
-72453,
-72468,
-72486,
-72506,
-72512,
-72512,
-72537,
-72537,
-72556,
-72567,
-72579,
-72601,
-72613,
-72619,
-72625,
-72625,
-72631,
-72637,
-72667,
-72680,
-72692,
-72692,
-72692,
-72710,
-72720,
-72720,
-72733,
-72733,
-72741,
-72741,
-72752,
-72765,
-72771,
-72771,
-72771,
-72771,
-72785,
-72785,
-72807,
-72807,
-72827,
-72834,
-72843,
-72878,
-72878,
-72892,
-72901,
-72901,
+71714,
+71721,
+71721,
+71749,
+71774,
+71783,
+71790,
+71797,
+71804,
+71830,
+71830,
+71863,
+71882,
+71882,
+71882,
+71917,
+71924,
+71944,
+71985,
+71985,
+71985,
+71985,
+72004,
+72023,
+72037,
+72037,
+72049,
+72090,
+72119,
+72152,
+72152,
+72152,
+72152,
+72177,
+72194,
+72229,
+72229,
+72229,
+72246,
+72253,
+72279,
+72286,
+72291,
+72319,
+72332,
+72339,
+72339,
+72372,
+72379,
+72417,
+72417,
+72442,
+72442,
+72457,
+72466,
+72498,
+72505,
+72529,
+72538,
+72538,
+72555,
+72584,
+72584,
+72603,
+72603,
+72603,
+72635,
+72635,
+72635,
+72635,
+72635,
+72635,
+72652,
+72652,
+72652,
+72652,
+72682,
+72689,
+72696,
+72696,
+72725,
+72732,
+72732,
+72781,
+72781,
+72813,
+72820,
+72847,
+72854,
+72867,
+72867,
+72894,
72901,
-72906,
-72916,
-72916,
-72916,
-72927,
-72927,
-72927,
-72927,
-72963,
-72963,
-72963,
-72963,
-72963,
-72963,
-72985,
-73029,
-73044,
-73064,
-73064,
-73064,
-73064,
-73064,
-73064,
-73073,
-73073,
-73093,
-73120,
-73126,
-73144,
-73144,
-73159,
-73159,
-73165,
-73165,
-73203,
-73213,
-73238,
-73258,
-73273,
-73273,
-73273,
-73273,
-73273,
-73287,
-73303,
-73335,
-73359,
-73365,
-73387,
-73402,
-73402,
-73402,
-73413,
-73413,
-73413,
-73423,
-73442,
-73468,
-73485,
-73485,
-73503,
-73537,
-73575,
-73575,
-73610,
-73629,
-73635,
-73635,
-73635,
-73635,
-73658,
-73658,
-73681,
-73687,
-73687,
-73712,
-73736,
-73753,
-73780,
-73797,
-73816,
-73838,
-73850,
-73850,
-73863,
-73909,
-73918,
-73930,
-73946,
-73976,
-73986,
-73986,
-73986,
-73986,
-73990,
-74017,
-74017,
-74017,
-74025,
-74025,
-74025,
-74025,
-74055,
-74073,
-74073,
-74073,
-74084,
+72918,
+72953,
+72953,
+72995,
+73002,
+73002,
+73014,
+73014,
+73014,
+73048,
+73103,
+73135,
+73142,
+73149,
+73160,
+73160,
+73169,
+73169,
+73169,
+73200,
+73208,
+73262,
+73285,
+73296,
+73309,
+73317,
+73331,
+73331,
+73338,
+73354,
+73354,
+73379,
+73401,
+73421,
+73428,
+73435,
+73469,
+73487,
+73494,
+73494,
+73494,
+73494,
+73522,
+73522,
+73529,
+73545,
+73545,
+73551,
+73604,
+73612,
+73612,
+73619,
+73644,
+73655,
+73655,
+73655,
+73662,
+73684,
+73730,
+73745,
+73769,
+73769,
+73791,
+73798,
+73798,
+73805,
+73823,
+73830,
+73844,
+73844,
+73885,
+73902,
+73937,
+73961,
+73968,
+74012,
+74038,
+74038,
+74038,
+74054,
+74080,
74095,
-74095,
-74095,
-74123,
+74124,
74150,
-74150,
-74155,
-74155,
-74155,
-74155,
-74161,
-74170,
-74176,
-74193,
-74216,
-74224,
-74266,
-74266,
-74277,
-74277,
-74289,
-74289,
-74295,
-74330,
-74330,
-74342,
-74348,
-74383,
-74420,
-74420,
-74426,
-74426,
+74174,
+74181,
+74195,
+74202,
+74241,
+74241,
+74264,
+74284,
+74291,
+74298,
+74329,
+74349,
+74387,
+74408,
+74415,
+74422,
+74429,
+74429,
74451,
-74469,
-74483,
-74500,
-74500,
-74515,
-74520,
-74520,
-74537,
-74547,
+74458,
+74490,
+74490,
+74497,
+74504,
+74504,
+74511,
74547,
-74547,
-74558,
-74558,
-74571,
-74578,
-74590,
-74590,
-74603,
-74619,
-74628,
-74628,
-74634,
+74566,
+74566,
+74586,
+74586,
+74610,
74634,
74634,
-74655,
+74663,
74667,
74691,
-74702,
-74725,
-74725,
-74725,
-74725,
-74730,
-74730,
-74730,
-74730,
-74736,
-74758,
-74764,
-74764,
-74764,
-74764,
-74784,
-74803,
-74803,
-74832,
-74832,
+74691,
+74691,
+74706,
+74738,
+74738,
+74745,
+74745,
+74791,
+74791,
+74804,
+74823,
+74830,
+74856,
74856,
-74867,
-74867,
-74885,
-74890,
-74890,
-74910,
-74925,
-74925,
-74939,
-74939,
-74954,
-74963,
-74989,
-74996,
-74996,
-75013,
-75013,
-75013,
-75042,
-75059,
+74875,
+74882,
+74893,
+74902,
+74909,
+74916,
+74976,
+74976,
+74983,
+75010,
+75017,
+75029,
+75036,
+75043,
+75060,
75067,
-75108,
-75128,
-75136,
-75155,
-75160,
-75160,
-75173,
-75173,
-75173,
-75173,
-75179,
-75179,
-75190,
-75213,
-75217,
-75236,
-75236,
-75265,
-75265,
-75283,
-75294,
-75311,
-75311,
-75317,
-75317,
-75325,
-75345,
-75370,
-75370,
-75382,
-75382,
-75382,
-75411,
-75417,
-75434,
-75443,
-75449,
-75455,
-75478,
-75484,
-75517,
-75542,
-75548,
-75561,
-75561,
-75567,
-75573,
+75067,
+75067,
+75106,
+75113,
+75129,
+75129,
+75129,
+75129,
+75129,
+75149,
+75163,
+75195,
+75222,
+75259,
+75259,
+75259,
+75280,
+75280,
+75280,
+75301,
+75319,
+75360,
+75360,
+75367,
+75379,
+75379,
+75397,
+75428,
+75466,
+75486,
+75510,
+75536,
+75552,
75573,
-75579,
-75579,
-75593,
-75593,
-75593,
-75593,
-75599,
-75615,
-75651,
-75685,
-75692,
-75713,
-75719,
-75725,
-75737,
-75746,
-75750,
-75750,
-75761,
-75783,
-75789,
-75804,
-75814,
-75814,
-75814,
-75833,
-75833,
-75867,
-75867,
-75867,
-75867,
-75904,
-75909,
-75928,
-75928,
-75928,
-75928,
-75928,
-75945,
-75959,
-75973,
-75973,
-75995,
-76066,
-76066,
-76066,
-76082,
-76082,
-76082,
-76098,
-76109,
-76120,
-76120,
-76120,
-76129,
-76149,
-76170,
-76170,
-76170,
-76170,
-76170,
-76186,
-76199,
-76199,
-76199,
-76218,
-76235,
-76249,
-76261,
-76300,
-76305,
-76328,
-76342,
-76366,
-76366,
+75603,
+75620,
+75643,
+75659,
+75694,
+75694,
+75711,
+75718,
+75718,
+75718,
+75734,
+75741,
+75763,
+75805,
+75805,
+75823,
+75837,
+75844,
+75851,
+75858,
+75899,
+75906,
+75931,
+75958,
+75958,
+76002,
+76009,
+76009,
+76016,
+76023,
+76065,
+76092,
+76140,
+76140,
+76147,
+76177,
+76187,
+76187,
+76224,
+76224,
+76230,
+76265,
+76265,
+76291,
+76291,
+76316,
+76354,
+76361,
+76361,
+76375,
+76382,
+76399,
+76399,
76399,
-76413,
-76413,
-76413,
-76431,
-76437,
-76459,
-76459,
-76475,
-76475,
-76475,
-76475,
-76475,
-76475,
-76482,
-76493,
-76493,
-76501,
-76501,
-76515,
-76532,
-76532,
-76544,
-76544,
-76578,
-76603,
-76603,
-76612,
-76628,
-76644,
-76657,
+76425,
+76425,
+76425,
+76425,
+76435,
+76451,
+76451,
+76490,
+76490,
+76490,
+76506,
+76506,
+76506,
+76516,
+76516,
+76516,
+76540,
+76579,
+76579,
+76586,
+76599,
+76606,
+76606,
+76606,
+76641,
+76641,
76666,
-76705,
-76705,
-76730,
-76730,
-76740,
-76740,
-76757,
-76804,
-76816,
-76832,
-76832,
-76832,
-76832,
-76847,
-76864,
-76871,
-76881,
-76881,
-76917,
-76929,
-76929,
-76938,
-76938,
-76938,
-76938,
-76960,
-76979,
-77000,
-77041,
-77058,
-77058,
-77066,
-77084,
-77084,
-77084,
-77106,
-77122,
-77122,
-77122,
-77122,
-77143,
-77152,
-77152,
-77152,
-77158,
-77158,
-77158,
-77158,
-77158,
-77158,
-77171,
-77183,
-77183,
-77188,
-77188,
-77188,
-77188,
-77188,
-77204,
-77204,
+76676,
+76676,
+76676,
+76683,
+76683,
+76700,
+76700,
+76700,
+76700,
+76717,
+76717,
+76737,
+76737,
+76737,
+76737,
+76737,
+76737,
+76737,
+76737,
+76771,
+76771,
+76782,
+76789,
+76799,
+76828,
+76845,
+76845,
+76893,
+76893,
+76908,
+76930,
+76930,
+76973,
+76980,
+76980,
+76980,
+77005,
+77005,
+77020,
+77032,
+77051,
+77060,
+77086,
+77086,
+77086,
+77086,
+77150,
+77150,
+77167,
+77172,
+77172,
+77176,
+77176,
+77191,
+77191,
+77218,
+77218,
+77218,
+77218,
77227,
-77251,
-77251,
-77251,
-77270,
-77290,
-77290,
-77290,
-77290,
-77311,
-77327,
-77327,
-77341,
-77341,
-77358,
-77358,
-77358,
-77393,
-77393,
-77400,
-77407,
-77407,
-77436,
-77450,
-77464,
-77464,
-77492,
-77492,
-77508,
-77508,
-77533,
+77237,
+77253,
+77273,
+77294,
+77321,
+77337,
+77352,
+77380,
+77380,
+77404,
+77422,
+77422,
+77428,
+77428,
+77444,
+77485,
+77485,
+77499,
+77499,
+77520,
77545,
-77545,
-77556,
-77578,
-77593,
-77610,
-77620,
-77657,
-77657,
-77693,
-77693,
-77693,
-77693,
-77705,
-77705,
-77705,
-77718,
-77718,
-77734,
-77742,
-77742,
-77781,
-77789,
-77819,
-77830,
-77830,
-77830,
-77830,
-77830,
+77550,
+77560,
+77567,
+77596,
+77615,
+77615,
+77615,
+77653,
+77653,
+77653,
+77674,
+77674,
+77674,
+77686,
+77686,
+77706,
+77719,
+77719,
+77727,
+77736,
+77767,
+77773,
+77802,
+77821,
+77837,
77847,
77870,
-77870,
-77904,
-77904,
-77916,
-77916,
-77942,
-77958,
-77958,
-77958,
-77972,
-77972,
-77972,
-77988,
-77988,
-77994,
+77877,
+77877,
+77877,
+77877,
+77888,
+77903,
+77926,
+77946,
+77957,
+77961,
+77967,
+77967,
+77967,
+77983,
78017,
-78031,
-78044,
-78089,
+78035,
+78035,
+78035,
+78040,
+78040,
+78040,
+78050,
+78063,
78099,
-78129,
-78129,
-78129,
-78129,
-78135,
-78140,
-78155,
-78176,
-78214,
-78235,
-78243,
-78277,
-78277,
-78277,
-78285,
-78312,
-78312,
-78328,
-78339,
-78357,
-78373,
-78389,
-78389,
-78414,
-78432,
-78439,
-78455,
-78484,
-78492,
-78500,
+78104,
+78110,
+78110,
+78110,
+78138,
+78198,
+78218,
+78231,
+78295,
+78306,
+78335,
+78335,
+78364,
+78364,
+78364,
+78377,
+78417,
+78427,
+78427,
+78459,
+78459,
+78466,
+78466,
+78473,
+78499,
+78499,
+78509,
+78509,
78536,
-78556,
-78582,
-78582,
-78615,
-78624,
-78664,
-78664,
-78675,
-78675,
-78694,
-78694,
-78709,
-78715,
-78715,
-78724,
-78724,
-78733,
-78733,
-78766,
-78766,
-78780,
-78791,
-78812,
-78812,
-78812,
-78821,
-78865,
-78865,
-78865,
-78865,
-78890,
-78890,
-78890,
-78890,
-78911,
-78911,
-78911,
-78933,
-78943,
-78943,
-78943,
-78943,
-78943,
-78978,
-78986,
-78986,
+78587,
+78609,
+78609,
+78616,
+78616,
+78640,
+78653,
+78653,
+78653,
+78653,
+78660,
+78679,
+78689,
+78703,
+78703,
+78728,
+78741,
+78756,
+78765,
+78783,
+78814,
+78839,
+78839,
+78839,
+78839,
+78849,
+78854,
+78864,
+78894,
+78894,
+78914,
+78914,
+78914,
+78932,
+78932,
+78971,
+78989,
+78989,
+78989,
78997,
-79027,
-79047,
-79047,
-79078,
-79078,
-79093,
-79093,
-79093,
-79093,
+78997,
+78997,
+78997,
+78997,
+78997,
+78997,
+78997,
+79009,
+79009,
+79033,
+79033,
+79049,
+79049,
+79049,
+79049,
+79061,
+79066,
+79081,
+79086,
79093,
-79131,
-79131,
-79152,
-79152,
-79152,
-79180,
-79180,
-79180,
-79180,
-79202,
-79202,
-79202,
-79221,
-79221,
-79227,
-79233,
-79241,
-79260,
-79260,
-79260,
-79266,
-79274,
+79098,
+79098,
+79098,
+79124,
+79124,
+79124,
+79134,
+79150,
+79163,
+79163,
+79163,
+79193,
+79209,
+79218,
+79224,
+79235,
+79235,
+79247,
+79247,
+79247,
+79247,
+79247,
+79253,
79274,
-79288,
-79303,
-79319,
-79351,
-79374,
-79374,
-79380,
-79390,
-79390,
-79390,
-79396,
-79416,
-79416,
-79426,
-79426,
-79426,
-79443,
-79453,
-79453,
-79472,
-79503,
-79503,
-79508,
-79514,
-79530,
-79540,
-79540,
-79548,
-79563,
-79584,
-79636,
-79645,
-79675,
-79682,
-79682,
-79715,
-79725,
-79754,
-79754,
-79774,
-79793,
-79793,
-79816,
-79816,
-79816,
-79831,
-79831,
-79850,
-79867,
-79867,
-79867,
-79867,
-79875,
-79896,
-79896,
-79896,
-79896,
-79922,
-79922,
-79922,
-79934,
-79934,
-79947,
-79964,
-79964,
-80000,
-80014,
-80014,
-80025,
-80025,
-80037,
-80071,
-80105,
-80105,
-80111,
-80161,
-80171,
-80181,
-80197,
-80217,
-80227,
-80227,
-80227,
-80252,
-80264,
-80276,
-80293,
-80293,
-80293,
-80293,
-80293,
-80333,
+79289,
+79289,
+79320,
+79320,
+79320,
+79337,
+79337,
+79354,
+79360,
+79388,
+79400,
+79400,
+79436,
+79436,
+79444,
+79460,
+79483,
+79483,
+79517,
+79517,
+79535,
+79543,
+79543,
+79543,
+79543,
+79562,
+79562,
+79562,
+79591,
+79591,
+79607,
+79617,
+79617,
+79626,
+79641,
+79641,
+79662,
+79662,
+79678,
+79678,
+79704,
+79717,
+79738,
+79738,
+79756,
+79756,
+79763,
+79770,
+79791,
+79791,
+79798,
+79798,
+79798,
+79815,
+79815,
+79876,
+79876,
+79876,
+79894,
+79919,
+79924,
+79943,
+79943,
+79958,
+79958,
+79979,
+79979,
+79996,
+79996,
+79996,
+79996,
+79996,
+79996,
+80004,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80023,
+80049,
+80060,
+80060,
+80060,
+80091,
+80091,
+80091,
+80098,
+80123,
+80123,
+80123,
+80163,
+80163,
+80199,
+80199,
+80199,
+80199,
+80199,
+80225,
+80225,
+80240,
+80240,
+80240,
+80268,
+80287,
+80287,
+80298,
+80298,
80339,
-80353,
-80380,
-80421,
-80484,
-80484,
-80484,
-80498,
-80543,
-80543,
-80569,
-80569,
-80578,
-80578,
-80595,
-80616,
-80616,
-80623,
-80631,
-80631,
-80631,
-80649,
-80649,
-80649,
-80649,
-80659,
-80686,
-80703,
-80710,
-80726,
-80741,
-80741,
-80764,
-80764,
-80764,
-80783,
-80799,
-80799,
-80799,
-80833,
-80833,
-80872,
-80872,
-80872,
-80899,
-80916,
-80916,
-80937,
-80937,
-80937,
-80937,
-80937,
-80947,
-80947,
-80965,
-80965,
-80977,
-80977,
-80986,
-80986,
-80986,
-81006,
-81013,
-81013,
-81023,
-81048,
-81066,
-81066,
-81097,
-81107,
+80387,
+80402,
+80411,
+80422,
+80422,
+80434,
+80458,
+80466,
+80471,
+80481,
+80527,
+80565,
+80571,
+80606,
+80606,
+80618,
+80618,
+80655,
+80669,
+80677,
+80677,
+80723,
+80735,
+80735,
+80757,
+80757,
+80770,
+80800,
+80810,
+80810,
+80810,
+80820,
+80843,
+80843,
+80843,
+80879,
+80879,
+80879,
+80919,
+80919,
+80928,
+80956,
+80973,
+80973,
+80990,
+80990,
+80990,
+80990,
+81000,
+81000,
+81010,
+81028,
+81028,
+81028,
+81028,
+81034,
+81034,
+81034,
+81034,
+81034,
+81034,
+81034,
+81050,
+81070,
+81070,
81118,
-81118,
-81118,
-81140,
-81175,
-81187,
-81187,
-81187,
-81192,
-81192,
-81192,
-81212,
-81240,
-81240,
-81298,
-81298,
-81298,
-81298,
-81310,
-81316,
-81316,
+81135,
+81135,
+81145,
+81158,
+81158,
+81195,
+81222,
+81233,
+81271,
+81284,
+81319,
81327,
-81335,
-81335,
-81342,
-81359,
-81359,
-81359,
-81359,
-81370,
-81370,
-81370,
-81381,
-81395,
-81405,
-81413,
-81447,
-81447,
-81460,
-81460,
+81327,
+81345,
+81345,
+81345,
+81358,
+81392,
+81392,
+81422,
+81437,
+81471,
81471,
81471,
-81476,
-81495,
-81510,
-81510,
-81526,
-81526,
-81553,
-81571,
-81587,
-81587,
-81592,
-81611,
-81638,
-81638,
-81664,
-81690,
-81696,
-81696,
-81696,
-81721,
-81721,
-81739,
-81739,
-81739,
-81749,
-81766,
-81773,
-81773,
-81773,
-81791,
-81791,
+81471,
+81471,
+81471,
+81494,
+81494,
+81494,
+81494,
+81494,
+81494,
+81521,
+81536,
+81564,
+81564,
+81591,
+81591,
+81612,
+81623,
+81654,
+81654,
+81654,
+81673,
+81673,
+81673,
+81673,
+81716,
+81716,
+81728,
+81757,
+81757,
+81757,
+81757,
+81757,
+81767,
+81784,
+81784,
+81784,
+81803,
81815,
-81839,
-81846,
-81855,
-81855,
-81855,
-81879,
-81903,
-81915,
-81939,
-81939,
-81965,
-81985,
-82004,
-82004,
-82021,
-82037,
-82082,
-82082,
-82115,
-82154,
-82161,
-82169,
-82169,
-82207,
-82223,
-82233,
-82233,
-82233,
-82233,
-82249,
-82249,
-82249,
-82264,
-82270,
-82283,
-82309,
-82340,
-82353,
-82380,
-82380,
-82400,
-82425,
-82456,
-82462,
-82462,
-82481,
-82481,
-82499,
-82499,
-82499,
-82499,
-82499,
-82499,
-82499,
-82512,
-82547,
-82564,
-82607,
-82607,
-82607,
-82620,
-82629,
-82629,
-82629,
-82640,
-82640,
-82664,
-82664,
-82664,
-82664,
-82664,
-82674,
-82689,
-82689,
-82689,
-82689,
-82703,
+81836,
+81836,
+81865,
+81920,
+81929,
+81945,
+81945,
+81945,
+81945,
+81966,
+81966,
+81987,
+81992,
+82010,
+82019,
+82019,
+82088,
+82088,
+82088,
+82123,
+82123,
+82123,
+82134,
+82144,
+82144,
+82164,
+82179,
+82197,
+82248,
+82266,
+82266,
+82266,
+82301,
+82318,
+82352,
+82378,
+82378,
+82384,
+82384,
+82384,
+82402,
+82410,
+82410,
+82426,
+82426,
+82426,
+82426,
+82426,
+82437,
+82471,
+82489,
+82489,
+82515,
+82523,
+82544,
+82544,
+82544,
+82544,
+82544,
+82559,
+82559,
+82576,
+82591,
+82624,
+82634,
+82650,
+82650,
+82668,
+82668,
+82675,
82703,
82703,
82719,
-82724,
-82741,
-82750,
-82750,
-82757,
-82809,
-82821,
-82821,
-82821,
-82821,
-82833,
+82730,
+82755,
+82755,
+82755,
+82755,
+82755,
+82755,
+82755,
+82765,
+82765,
+82776,
+82791,
+82807,
82833,
-82863,
-82863,
-82879,
-82898,
-82906,
-82906,
-82923,
-82923,
-82942,
-82942,
-82966,
-83020,
-83020,
-83044,
-83044,
-83067,
-83067,
-83105,
-83105,
-83122,
-83143,
-83161,
-83178,
-83194,
-83210,
-83210,
-83210,
-83210,
-83210,
-83232,
-83292,
-83309,
-83323,
-83357,
-83357,
-83406,
-83406,
-83406,
-83406,
-83453,
-83468,
-83487,
-83513,
-83513,
-83513,
-83519,
-83567,
-83580,
-83591,
-83606,
-83616,
-83653,
-83653,
-83670,
-83684,
-83684,
-83684,
-83684,
-83684,
-83695,
-83714,
-83714,
-83714,
-83759,
-83759,
-83759,
-83759,
-83759,
-83759,
-83791,
-83791,
-83791,
-83791,
-83791,
-83791,
-83791,
-83799,
-83799,
-83812,
-83812,
-83822,
-83822,
-83837,
-83837,
-83837,
-83837,
-83843,
-83843,
-83861,
-83861,
-83861,
-83874,
-83888,
-83936,
-83936,
-83950,
-83950,
-83950,
-83963,
-83963,
-83970,
-83995,
-83995,
-84018,
-84040,
-84040,
-84040,
-84040,
-84053,
-84053,
-84074,
-84105,
-84115,
-84154,
-84177,
-84194,
-84211,
-84211,
-84211,
-84211,
-84229,
-84229,
-84245,
-84266,
-84278,
-84285,
-84285,
-84285,
-84285,
-84285,
-84285,
-84285,
-84323,
-84348,
-84368,
-84368,
-84368,
-84368,
-84388,
-84388,
-84388,
-84388,
-84388,
-84388,
-84408,
-84421,
-84426,
-84433,
-84433,
-84433,
-84433,
-84433,
-84449,
-84472,
-84472,
-84472,
-84472,
-84492,
-84492,
-84499,
-84499,
+82848,
+82848,
+82869,
+82869,
+82884,
+82884,
+82884,
+82927,
+82927,
+82946,
+82964,
+82975,
+82975,
+82975,
+82983,
+83005,
+83045,
+83045,
+83045,
+83045,
+83045,
+83065,
+83065,
+83065,
+83065,
+83089,
+83120,
+83120,
+83120,
+83158,
+83158,
+83187,
+83208,
+83230,
+83243,
+83243,
+83243,
+83243,
+83265,
+83265,
+83265,
+83265,
+83265,
+83284,
+83307,
+83307,
+83307,
+83312,
+83331,
+83331,
+83331,
+83331,
+83354,
+83393,
+83400,
+83400,
+83400,
+83438,
+83448,
+83448,
+83485,
+83485,
+83485,
+83485,
+83485,
+83485,
+83485,
+83485,
+83508,
+83524,
+83536,
+83536,
+83572,
+83572,
+83572,
+83581,
+83581,
+83648,
+83648,
+83663,
+83676,
+83711,
+83722,
+83731,
+83731,
+83731,
+83753,
+83772,
+83772,
+83785,
+83785,
+83795,
+83810,
+83818,
+83845,
+83870,
+83870,
+83870,
+83880,
+83880,
+83904,
+83904,
+83904,
+83916,
+83916,
+83945,
+83996,
+83996,
+84020,
+84020,
+84030,
+84030,
+84030,
+84030,
+84063,
+84063,
+84094,
+84107,
+84130,
+84130,
+84149,
+84149,
+84155,
+84180,
+84215,
+84235,
+84273,
+84273,
+84291,
+84297,
+84307,
+84313,
+84334,
+84350,
+84350,
+84350,
+84392,
+84392,
+84403,
+84403,
+84436,
+84448,
+84470,
+84470,
+84470,
+84470,
+84470,
84506,
-84506,
-84524,
-84567,
-84585,
-84585,
-84585,
-84585,
-84585,
-84585,
-84608,
-84608,
-84618,
-84618,
-84618,
-84650,
-84670,
-84670,
+84534,
+84587,
+84599,
+84617,
+84617,
+84630,
+84646,
+84646,
+84682,
84682,
84682,
-84689,
-84699,
-84699,
-84709,
-84709,
-84709,
-84709,
-84709,
-84709,
-84709,
-84724,
-84733,
-84733,
-84741,
-84741,
-84776,
-84776,
-84776,
-84795,
-84825,
-84834,
-84834,
-84841,
-84851,
-84861,
-84871,
-84871,
-84882,
-84882,
-84892,
-84927,
-84932,
-84966,
-84984,
-84984,
-85015,
-85039,
-85051,
-85088,
-85088,
-85088,
-85088,
-85108,
-85134,
-85163,
-85163,
-85163,
-85174,
-85180,
-85198,
-85198,
-85198,
-85198,
-85230,
-85257,
-85257,
-85278,
-85278,
-85278,
-85278,
+84691,
+84714,
+84731,
+84763,
+84763,
+84773,
+84809,
+84818,
+84818,
+84829,
+84874,
+84874,
+84908,
+84928,
+84928,
+84942,
+84959,
+84959,
+84968,
+84968,
+84977,
+85020,
+85040,
+85040,
+85053,
+85085,
+85085,
+85095,
+85100,
+85111,
+85111,
+85119,
+85119,
+85151,
+85173,
+85173,
+85173,
+85186,
+85186,
+85191,
+85219,
+85219,
+85226,
+85245,
+85245,
+85262,
+85269,
+85285,
+85298,
+85298,
+85311,
85324,
-85365,
-85377,
-85414,
-85420,
-85436,
-85465,
-85490,
-85490,
-85501,
-85501,
-85529,
-85553,
-85553,
-85560,
-85560,
-85571,
-85571,
-85571,
-85571,
-85571,
-85571,
-85598,
-85598,
-85598,
-85620,
-85649,
-85649,
-85664,
-85664,
-85675,
-85687,
-85687,
-85687,
-85687,
-85687,
-85687,
-85705,
-85705,
-85717,
-85755,
-85755,
-85765,
-85765,
-85784,
-85784,
-85784,
-85818,
-85848,
-85873,
-85904,
-85954,
-85954,
-85967,
-85974,
-85983,
-86022,
-86030,
-86050,
-86050,
-86050,
-86050,
-86087,
-86087,
-86087,
-86099,
-86099,
-86109,
-86127,
-86150,
-86161,
-86187,
-86187,
-86205,
-86217,
-86236,
-86243,
-86254,
-86254,
-86254,
-86270,
-86270,
-86282,
-86295,
-86304,
-86332,
-86332,
-86332,
-86332,
-86343,
-86343,
-86343,
-86343,
-86343,
-86354,
-86354,
-86354,
-86354,
-86354,
-86354,
+85341,
+85341,
+85356,
+85356,
+85363,
+85405,
+85452,
+85476,
+85483,
+85483,
+85506,
+85546,
+85562,
+85618,
+85618,
+85618,
+85641,
+85648,
+85668,
+85711,
+85711,
+85731,
+85738,
+85745,
+85776,
+85776,
+85776,
+85781,
+85795,
+85802,
+85802,
+85830,
+85864,
+85911,
+85925,
+85925,
+85925,
+85947,
+85996,
+86032,
+86071,
+86081,
+86088,
+86107,
+86121,
+86121,
+86141,
+86141,
+86163,
+86192,
+86199,
+86199,
+86199,
+86199,
+86224,
+86256,
+86292,
+86292,
+86312,
+86312,
+86341,
+86362,
+86372,
+86372,
86372,
-86377,
-86398,
-86398,
-86421,
-86427,
-86427,
-86427,
-86427,
-86432,
-86454,
-86468,
-86468,
-86482,
-86482,
+86372,
+86381,
+86399,
+86409,
+86428,
+86442,
+86449,
86487,
-86498,
-86512,
-86512,
-86535,
-86544,
-86577,
-86615,
-86651,
-86672,
-86672,
-86672,
-86698,
-86698,
-86721,
-86721,
-86757,
-86757,
-86757,
-86778,
-86789,
-86789,
-86789,
-86809,
-86833,
-86833,
-86845,
-86867,
-86867,
-86867,
-86895,
-86920,
-86920,
-86920,
-86920,
-86982,
-86982,
-87000,
-87006,
-87067,
-87067,
-87067,
-87067,
-87077,
-87077,
-87085,
-87090,
-87106,
-87106,
-87112,
-87112,
-87112,
-87118,
-87127,
-87127,
-87127,
-87143,
-87143,
-87143,
-87143,
-87155,
-87155,
-87168,
-87168,
-87182,
-87182,
-87188,
-87188,
-87188,
-87188,
-87188,
-87204,
-87215,
-87236,
-87236,
+86487,
+86503,
+86515,
+86515,
+86515,
+86515,
+86515,
+86526,
+86545,
+86545,
+86545,
+86545,
+86571,
+86571,
+86571,
+86618,
+86626,
+86673,
+86704,
+86730,
+86748,
+86760,
+86767,
+86767,
+86784,
+86784,
+86807,
+86825,
+86832,
+86856,
+86885,
+86917,
+86936,
+86936,
+86964,
+86971,
+86971,
+87009,
+87031,
+87031,
+87066,
+87096,
+87096,
+87096,
+87116,
+87116,
+87123,
+87150,
+87165,
+87192,
+87198,
+87198,
+87198,
+87224,
87236,
-87248,
-87257,
-87274,
-87282,
-87297,
+87263,
+87263,
+87270,
+87285,
87297,
-87297,
-87297,
-87302,
-87321,
-87341,
-87341,
-87367,
-87367,
-87373,
-87379,
-87387,
-87406,
-87406,
-87406,
-87412,
-87426,
-87441,
-87441,
-87441,
-87449,
-87458,
-87458,
-87458,
-87467,
-87476,
-87541,
-87541,
-87541,
-87541,
-87577,
-87583,
-87583,
-87612,
-87612,
-87620,
-87626,
-87639,
-87639,
-87639,
-87661,
-87671,
-87686,
-87707,
-87707,
-87707,
-87738,
-87738,
-87759,
-87770,
-87780,
-87797,
-87797,
-87810,
-87810,
-87819,
+87335,
+87395,
+87395,
+87395,
+87414,
+87423,
+87433,
+87433,
+87443,
+87455,
+87474,
+87490,
+87505,
+87512,
+87523,
+87539,
+87539,
+87539,
+87556,
+87556,
+87613,
+87669,
+87669,
+87676,
+87689,
+87709,
+87709,
+87716,
+87734,
+87771,
+87796,
+87803,
+87826,
+87833,
87833,
-87841,
-87869,
-87869,
-87869,
-87869,
-87885,
-87885,
-87899,
-87912,
+87861,
+87871,
+87895,
87929,
-87941,
-87955,
-87970,
-87984,
-87984,
-88000,
-88026,
-88026,
-88026,
-88026,
-88036,
-88051,
-88061,
-88104,
-88114,
-88114,
-88125,
-88125,
-88125,
-88132,
-88161,
-88166,
-88178,
-88178,
-88178,
-88178,
-88208,
-88213,
-88213,
-88220,
-88227,
-88227,
-88244,
-88260,
-88260,
-88266,
-88291,
-88297,
-88297,
-88297,
-88334,
-88334,
-88366,
-88398,
-88415,
+87936,
+87943,
+87980,
+87989,
+88003,
+88003,
+88013,
+88013,
+88020,
+88050,
+88066,
+88066,
+88088,
+88095,
+88152,
+88162,
+88169,
+88169,
+88197,
+88214,
+88237,
+88254,
+88267,
+88267,
+88274,
+88293,
+88326,
+88333,
+88358,
+88379,
+88393,
+88400,
+88414,
88432,
-88442,
-88456,
-88478,
-88520,
-88520,
-88520,
-88569,
-88617,
-88626,
-88632,
-88632,
-88649,
-88661,
-88661,
-88693,
-88705,
-88705,
+88450,
+88489,
+88497,
+88515,
+88521,
+88521,
+88521,
+88560,
+88560,
+88566,
+88574,
+88574,
+88595,
+88595,
+88595,
+88700,
+88700,
88705,
-88705,
-88705,
-88712,
-88734,
-88779,
-88779,
-88779,
-88785,
-88785,
-88800,
-88817,
-88817,
-88824,
-88824,
-88868,
-88868,
-88868,
-88868,
-88868,
-88913,
-88936,
-88977,
-88990,
-89019,
-89025,
-89044,
-89068,
-89068,
-89085,
-89085,
-89085,
-89085,
-89131,
-89143,
+88718,
+88718,
+88732,
+88732,
+88745,
+88745,
+88758,
+88773,
+88780,
+88793,
+88822,
+88846,
+88846,
+88846,
+88860,
+88873,
+88873,
+88908,
+88908,
+88918,
+88925,
+88960,
+88998,
+89005,
+89005,
+89014,
+89014,
+89014,
+89038,
+89045,
+89066,
+89080,
+89080,
+89080,
+89080,
+89096,
+89096,
+89107,
+89107,
+89126,
89143,
-89158,
-89168,
-89197,
-89202,
-89202,
-89207,
-89278,
-89290,
-89309,
-89319,
-89324,
-89324,
-89344,
-89354,
-89354,
-89386,
-89393,
-89405,
-89430,
-89430,
-89430,
-89438,
-89438,
-89489,
-89496,
-89511,
-89529,
-89545,
-89563,
-89569,
-89569,
-89569,
-89592,
-89598,
-89598,
-89598,
-89653,
-89659,
-89659,
-89669,
-89669,
-89690,
-89714,
-89722,
-89732,
-89776,
-89776,
-89776,
-89782,
-89795,
-89795,
-89795,
-89795,
-89813,
-89824,
-89824,
-89841,
-89848,
-89848,
-89848,
-89858,
-89858,
-89891,
-89891,
-89918,
-89928,
-89928,
-89947,
-89977,
-89977,
-89977,
-89977,
-89998,
-90025,
-90025,
-90065,
-90071,
-90086,
-90086,
-90086,
-90104,
-90104,
-90136,
-90163,
-90163,
-90163,
-90163,
-90169,
-90194,
-90194,
-90194,
-90194,
-90207,
-90224,
-90247,
-90256,
-90256,
-90262,
-90275,
-90275,
-90293,
-90303,
-90303,
-90303,
-90361,
-90376,
-90417,
-90428,
-90452,
-90491,
-90502,
-90509,
-90515,
-90538,
-90564,
-90594,
-90638,
-90638,
-90638,
-90638,
-90659,
-90668,
-90683,
-90691,
-90698,
-90706,
-90724,
-90735,
-90770,
-90770,
-90778,
-90778,
-90795,
-90795,
-90795,
-90795,
-90831,
-90831,
+89159,
+89181,
+89192,
+89231,
+89231,
+89248,
+89268,
+89297,
+89331,
+89338,
+89356,
+89363,
+89380,
+89387,
+89394,
+89408,
+89408,
+89426,
+89433,
+89433,
+89433,
+89453,
+89471,
+89477,
+89510,
+89517,
+89517,
+89517,
+89547,
+89573,
+89605,
+89639,
+89676,
+89676,
+89676,
+89683,
+89727,
+89781,
+89799,
+89806,
+89820,
+89853,
+89860,
+89873,
+89896,
+89901,
+89908,
+89908,
+89931,
+89976,
+90001,
+90034,
+90034,
+90056,
+90056,
+90080,
+90109,
+90109,
+90121,
+90131,
+90143,
+90178,
+90197,
+90204,
+90204,
+90214,
+90222,
+90236,
+90291,
+90304,
+90304,
+90321,
+90328,
+90328,
+90328,
+90343,
+90343,
+90358,
+90358,
+90365,
+90383,
+90383,
+90383,
+90389,
+90402,
+90402,
+90402,
+90418,
+90436,
+90436,
+90450,
+90462,
+90462,
+90469,
+90479,
+90488,
+90505,
+90518,
+90525,
+90525,
+90525,
+90543,
+90543,
+90550,
+90550,
+90550,
+90558,
+90570,
+90570,
+90570,
+90605,
+90631,
+90663,
+90680,
+90699,
+90705,
+90718,
+90727,
+90727,
+90727,
+90742,
+90761,
+90768,
+90789,
+90817,
+90837,
+90847,
+90847,
+90862,
+90862,
90869,
-90883,
-90901,
-90907,
-90913,
-90929,
-90929,
-90959,
-90977,
-90987,
-91007,
-91019,
-91033,
-91039,
-91104,
-91104,
-91110,
-91110,
-91110,
-91124,
-91130,
-91136,
-91157,
-91163,
-91163,
-91169,
-91209,
-91209,
-91225,
-91225,
-91225,
-91225,
-91241,
-91241,
-91253,
-91273,
-91273,
-91283,
-91304,
-91310,
-91337,
-91354,
-91354,
-91354,
-91354,
-91368,
-91381,
-91381,
-91416,
-91435,
-91441,
-91441,
-91441,
-91441,
-91441,
-91463,
-91489,
-91504,
-91504,
-91520,
-91520,
-91520,
-91566,
-91566,
-91576,
-91576,
-91594,
-91599,
-91599,
-91610,
-91610,
-91619,
-91635,
-91641,
-91675,
-91683,
-91683,
-91683,
-91683,
-91683,
-91683,
-91683,
-91683,
-91749,
-91749,
-91749,
-91749,
-91760,
-91809,
-91814,
-91814,
-91814,
-91824,
-91824,
-91835,
-91847,
-91865,
-91879,
-91891,
-91935,
-91935,
-91955,
-91986,
-91996,
-91996,
-91996,
-92023,
-92057,
-92057,
-92062,
-92103,
-92111,
-92117,
-92117,
-92117,
-92117,
-92117,
-92117,
-92117,
-92136,
-92157,
-92192,
-92203,
-92203,
-92223,
-92223,
-92241,
-92241,
-92241,
-92241,
+90869,
+90869,
+90869,
+90875,
+90882,
+90905,
+90945,
+90973,
+90973,
+90973,
+90986,
+90986,
+90991,
+91006,
+91060,
+91060,
+91060,
+91060,
+91060,
+91060,
+91090,
+91107,
+91107,
+91107,
+91107,
+91107,
+91127,
+91160,
+91170,
+91186,
+91186,
+91234,
+91234,
+91245,
+91245,
+91245,
+91289,
+91302,
+91302,
+91302,
+91340,
+91347,
+91347,
+91359,
+91376,
+91384,
+91384,
+91398,
+91412,
+91412,
+91431,
+91431,
+91431,
+91431,
+91431,
+91431,
+91451,
+91464,
+91472,
+91472,
+91490,
+91490,
+91502,
+91517,
+91534,
+91560,
+91569,
+91587,
+91603,
+91623,
+91663,
+91663,
+91681,
+91698,
+91698,
+91708,
+91720,
+91751,
+91751,
+91763,
+91779,
+91786,
+91786,
+91786,
+91786,
+91812,
+91812,
+91834,
+91859,
+91877,
+91886,
+91886,
+91908,
+91922,
+91951,
+91963,
+92005,
+92010,
+92059,
+92069,
+92100,
+92113,
+92132,
+92153,
+92176,
+92176,
+92193,
+92193,
+92211,
+92211,
+92220,
+92220,
+92220,
+92220,
+92220,
+92220,
+92220,
+92220,
+92220,
92241,
-92281,
-92319,
+92283,
+92309,
+92316,
92329,
92329,
-92351,
-92358,
-92358,
-92358,
-92371,
-92390,
-92404,
-92410,
-92410,
-92423,
+92334,
+92350,
+92350,
+92372,
+92379,
+92379,
+92379,
+92398,
+92398,
+92398,
+92398,
+92406,
92423,
-92449,
-92491,
-92532,
-92532,
-92540,
-92546,
-92552,
-92572,
-92572,
-92572,
-92592,
-92603,
-92603,
-92603,
-92626,
-92658,
-92666,
-92666,
-92666,
-92672,
-92714,
-92714,
-92724,
-92744,
-92776,
-92776,
-92797,
-92797,
+92436,
+92450,
+92499,
+92508,
+92544,
+92559,
+92571,
+92571,
+92571,
+92571,
+92571,
+92579,
+92579,
+92585,
+92585,
+92602,
+92613,
+92613,
+92637,
+92651,
+92651,
+92657,
+92657,
+92657,
+92657,
+92680,
+92680,
+92680,
+92680,
+92719,
+92734,
+92750,
+92750,
+92786,
+92786,
+92818,
+92828,
92828,
92828,
-92847,
-92847,
-92874,
-92874,
-92874,
-92892,
-92900,
-92900,
-92900,
-92930,
-92930,
-92936,
-92936,
-92944,
-92962,
-92977,
-92977,
-92983,
+92838,
+92838,
+92838,
+92838,
+92838,
+92845,
+92854,
+92854,
+92866,
+92875,
+92875,
+92898,
+92924,
+92924,
+92942,
+92942,
+92951,
+92951,
+92970,
+93007,
93027,
-93033,
-93033,
-93050,
-93082,
-93107,
-93125,
+93027,
+93043,
+93080,
+93080,
+93093,
+93093,
+93093,
+93093,
93125,
93125,
-93143,
-93143,
-93157,
-93157,
-93157,
-93157,
-93187,
-93187,
-93194,
-93194,
-93206,
-93206,
-93212,
-93229,
-93258,
-93285,
-93297,
-93297,
-93297,
-93297,
-93343,
-93343,
-93343,
-93370,
-93387,
-93387,
-93387,
-93387,
-93387,
-93412,
-93417,
-93430,
-93430,
-93430,
-93430,
-93430,
-93430,
-93430,
-93436,
-93455,
-93464,
-93483,
-93496,
-93496,
-93513,
-93513,
-93513,
-93554,
-93584,
-93584,
-93584,
-93584,
-93592,
-93602,
-93607,
-93631,
-93657,
-93664,
-93672,
-93744,
-93753,
-93753,
-93761,
-93776,
-93776,
-93776,
-93776,
-93776,
-93776,
-93810,
-93822,
-93822,
-93852,
-93871,
-93884,
-93897,
-93914,
+93142,
+93158,
+93180,
+93199,
+93199,
+93216,
+93216,
+93231,
+93241,
+93241,
+93241,
+93250,
+93250,
+93250,
+93278,
+93278,
+93278,
+93302,
+93314,
+93314,
+93314,
+93334,
+93334,
+93334,
+93352,
+93366,
+93389,
+93429,
+93448,
+93448,
+93457,
+93457,
+93457,
+93469,
+93469,
+93469,
+93493,
+93493,
+93570,
+93570,
+93570,
+93570,
+93578,
+93578,
+93606,
+93630,
+93642,
+93649,
+93649,
+93682,
+93710,
+93710,
+93710,
+93717,
+93732,
+93738,
+93738,
+93754,
+93754,
+93771,
+93771,
+93771,
+93787,
+93793,
+93793,
+93801,
+93812,
+93812,
+93812,
+93829,
+93829,
+93829,
+93870,
+93890,
+93890,
+93890,
+93917,
93926,
-93939,
-93939,
-93954,
-93954,
-93954,
-93954,
-93969,
-93977,
-93977,
-93977,
-93990,
-93990,
-94031,
-94062,
-94068,
-94068,
-94068,
-94099,
-94123,
-94141,
-94191,
-94209,
-94209,
-94209,
-94228,
-94263,
-94263,
-94298,
-94307,
-94321,
-94321,
-94327,
-94327,
-94358,
-94358,
-94358,
-94370,
-94370,
-94370,
-94370,
+93926,
+93942,
+93960,
+93967,
+93974,
+93998,
+93998,
+94015,
+94021,
+94021,
+94021,
+94027,
+94027,
+94027,
+94027,
+94042,
+94061,
+94061,
+94061,
+94081,
+94081,
+94104,
+94118,
+94135,
+94153,
+94153,
+94171,
+94192,
+94202,
+94218,
+94218,
+94218,
+94218,
+94218,
+94251,
+94257,
+94257,
+94276,
+94276,
+94276,
+94282,
+94300,
+94300,
+94318,
+94318,
+94335,
+94349,
+94349,
+94349,
+94349,
+94361,
+94377,
94377,
-94410,
-94464,
+94377,
+94397,
+94432,
+94432,
+94432,
+94452,
+94460,
+94460,
+94471,
+94471,
+94479,
+94496,
94496,
-94513,
-94542,
-94548,
-94548,
-94563,
-94569,
-94575,
-94593,
-94593,
-94593,
-94593,
-94613,
-94613,
-94618,
-94618,
-94618,
-94625,
-94637,
-94644,
-94650,
-94663,
+94496,
+94550,
+94612,
+94622,
+94640,
+94670,
+94670,
+94670,
+94682,
+94682,
94682,
-94695,
-94728,
-94728,
-94734,
-94734,
-94759,
-94789,
-94814,
-94826,
-94826,
-94826,
-94840,
-94840,
-94840,
-94871,
-94877,
-94877,
-94885,
-94885,
-94885,
+94700,
+94720,
+94720,
+94735,
+94735,
+94735,
+94746,
+94757,
+94773,
+94773,
+94773,
+94773,
+94773,
+94785,
+94792,
+94792,
+94792,
+94808,
+94859,
+94859,
+94867,
+94883,
94892,
94892,
-94904,
-94904,
-94904,
-94904,
-94904,
-94904,
-94904,
-94920,
-94920,
-94941,
-94959,
-94959,
-94959,
-94959,
-94959,
-94971,
-95005,
-95034,
-95034,
-95068,
-95073,
-95098,
-95098,
-95098,
-95115,
-95144,
-95153,
-95170,
-95170,
-95207,
-95227,
-95227,
-95250,
-95264,
-95264,
-95264,
-95280,
-95303,
-95303,
-95303,
-95319,
-95319,
-95319,
-95342,
+94928,
+94938,
+94938,
+94938,
+94944,
+94969,
+94975,
+95013,
+95069,
+95069,
+95069,
+95084,
+95118,
+95131,
+95157,
+95169,
+95183,
+95252,
+95268,
+95294,
+95301,
+95317,
+95323,
+95340,
+95340,
+95358,
+95358,
95364,
-95407,
-95420,
-95420,
-95435,
-95435,
-95452,
-95452,
-95452,
-95470,
-95476,
-95505,
-95536,
-95536,
-95536,
-95536,
-95536,
-95536,
-95568,
-95568,
-95587,
-95629,
-95629,
-95640,
-95647,
-95660,
-95705,
-95742,
-95754,
-95825,
-95831,
-95848,
-95848,
-95848,
-95868,
-95888,
-95911,
-95936,
-95936,
-95979,
-96003,
-96016,
-96047,
-96047,
-96059,
-96082,
-96107,
-96107,
-96119,
-96133,
-96157,
-96169,
-96169,
-96169,
-96177,
-96177,
-96203,
-96234,
-96234,
-96234,
-96247,
-96268,
-96274,
-96274,
-96315,
-96354,
-96372,
-96372,
-96372,
-96392,
-96407,
-96444,
-96444,
-96470,
-96510,
-96527,
-96562,
-96583,
-96583,
-96599,
-96599,
-96599,
-96642,
-96657,
-96657,
-96657,
-96698,
-96720,
-96735,
-96735,
-96761,
-96802,
-96802,
-96814,
-96826,
-96826,
-96843,
-96855,
-96866,
-96884,
-96896,
-96896,
-96905,
-96905,
-96905,
-96905,
-96905,
-96933,
-96933,
-96933,
-96933,
-96950,
-96950,
-96950,
-96950,
-96965,
-96974,
-96992,
-96992,
-97012,
-97041,
-97047,
-97091,
-97091,
-97091,
-97098,
-97098,
-97120,
-97138,
-97138,
-97196,
-97227,
-97227,
-97255,
-97267,
-97267,
-97292,
-97331,
-97355,
-97365,
-97373,
-97457,
-97457,
-97457,
-97519,
-97519,
-97534,
-97548,
-97548,
-97570,
-97593,
-97613,
-97631,
-97661,
-97667,
-97689,
-97717,
-97717,
-97717,
-97735,
-97735,
-97735,
-97745,
-97771,
-97786,
-97798,
-97798,
-97839,
-97839,
-97839,
-97848,
-97848,
-97867,
-97918,
-97918,
-97918,
-97927,
-97942,
-97942,
-97942,
-97942,
-97942,
-97967,
-97979,
-98012,
-98012,
-98054,
-98054,
-98078,
-98078,
-98106,
-98106,
-98115,
-98130,
-98130,
+95396,
+95396,
+95413,
+95423,
+95449,
+95449,
+95504,
+95550,
+95550,
+95566,
+95588,
+95588,
+95615,
+95654,
+95667,
+95667,
+95667,
+95667,
+95667,
+95694,
+95707,
+95721,
+95721,
+95764,
+95770,
+95770,
+95775,
+95789,
+95789,
+95789,
+95800,
+95800,
+95800,
+95800,
+95805,
+95811,
+95811,
+95811,
+95833,
+95833,
+95857,
+95889,
+95889,
+95889,
+95889,
+95889,
+95889,
+95895,
+95895,
+95926,
+95946,
+95957,
+95957,
+95974,
+95986,
+96002,
+96002,
+96034,
+96048,
+96066,
+96111,
+96111,
+96135,
+96149,
+96149,
+96149,
+96149,
+96156,
+96179,
+96179,
+96197,
+96197,
+96210,
+96226,
+96231,
+96264,
+96264,
+96281,
+96288,
+96288,
+96288,
+96322,
+96353,
+96368,
+96385,
+96404,
+96404,
+96415,
+96415,
+96415,
+96415,
+96415,
+96424,
+96472,
+96472,
+96472,
+96492,
+96511,
+96518,
+96524,
+96534,
+96549,
+96549,
+96571,
+96571,
+96571,
+96571,
+96571,
+96571,
+96590,
+96605,
+96605,
+96624,
+96624,
+96639,
+96639,
+96639,
+96654,
+96683,
+96683,
+96683,
+96683,
+96692,
+96692,
+96701,
+96701,
+96701,
+96701,
+96701,
+96701,
+96701,
+96711,
+96725,
+96732,
+96785,
+96795,
+96795,
+96832,
+96853,
+96853,
+96853,
+96853,
+96859,
+96888,
+96888,
+96888,
+96888,
+96894,
+96924,
+96931,
+96931,
+96945,
+97025,
+97049,
+97070,
+97070,
+97095,
+97095,
+97095,
+97095,
+97132,
+97132,
+97167,
+97178,
+97178,
+97178,
+97195,
+97195,
+97201,
+97201,
+97212,
+97212,
+97245,
+97254,
+97254,
+97264,
+97308,
+97322,
+97322,
+97322,
+97336,
+97371,
+97371,
+97371,
+97387,
+97399,
+97419,
+97435,
+97435,
+97459,
+97459,
+97459,
+97482,
+97523,
+97523,
+97533,
+97540,
+97540,
+97540,
+97559,
+97597,
+97606,
+97621,
+97627,
+97627,
+97674,
+97674,
+97674,
+97694,
+97694,
+97713,
+97730,
+97730,
+97730,
+97730,
+97737,
+97737,
+97737,
+97737,
+97753,
+97782,
+97782,
+97802,
+97842,
+97861,
+97861,
+97868,
+97878,
+97945,
+97945,
+97961,
+97971,
+97971,
+97971,
+97999,
+97999,
+97999,
+98016,
+98016,
+98029,
+98029,
+98029,
+98044,
+98059,
+98059,
+98077,
+98077,
+98077,
+98077,
+98077,
+98077,
+98077,
+98107,
+98117,
+98122,
98130,
-98130,
-98137,
-98137,
-98137,
-98144,
-98168,
-98188,
-98188,
-98202,
-98202,
-98220,
-98234,
-98266,
-98273,
-98292,
-98317,
-98328,
-98328,
-98346,
-98346,
-98346,
-98357,
-98357,
-98357,
-98365,
-98400,
-98412,
-98431,
-98438,
-98477,
-98488,
-98504,
-98504,
-98511,
-98540,
-98559,
-98566,
-98595,
-98601,
-98607,
-98615,
-98638,
-98651,
-98651,
-98651,
-98667,
-98667,
+98138,
+98138,
+98156,
+98156,
+98165,
+98185,
+98209,
+98249,
+98262,
+98281,
+98281,
+98296,
+98296,
+98309,
+98323,
+98323,
+98323,
+98323,
+98336,
+98336,
+98356,
+98356,
+98356,
+98356,
+98377,
+98389,
+98398,
+98398,
+98404,
+98422,
+98422,
+98422,
+98422,
+98427,
+98433,
+98433,
+98450,
+98450,
+98487,
+98500,
+98558,
+98577,
+98591,
+98603,
+98624,
+98624,
+98624,
+98624,
+98624,
+98641,
+98659,
+98659,
+98669,
+98669,
+98669,
+98669,
98686,
-98703,
-98703,
-98716,
-98728,
-98762,
-98762,
-98762,
-98779,
-98804,
-98827,
-98833,
-98847,
-98865,
-98865,
-98865,
-98865,
-98876,
-98876,
-98876,
-98895,
-98905,
-98905,
-98946,
-98946,
-98946,
-98946,
-98977,
-99002,
-99019,
+98707,
+98707,
+98729,
+98729,
+98745,
+98752,
+98752,
+98786,
+98786,
+98793,
+98793,
+98793,
+98793,
+98793,
+98793,
+98793,
+98803,
+98803,
+98809,
+98816,
+98816,
+98816,
+98816,
+98822,
+98822,
+98828,
+98850,
+98869,
+98869,
+98885,
+98906,
+98913,
+98925,
+98925,
+98935,
+98956,
+98956,
+98973,
+98982,
+98982,
+99001,
+99001,
+99013,
+99013,
99026,
99026,
-99038,
-99051,
-99078,
-99106,
-99113,
-99126,
-99144,
-99164,
-99164,
-99189,
-99238,
-99245,
-99257,
-99288,
-99306,
-99306,
-99334,
+99045,
+99061,
+99070,
+99092,
+99099,
+99123,
+99134,
+99161,
+99161,
+99161,
+99161,
+99211,
+99242,
+99283,
+99283,
+99302,
+99315,
+99321,
+99328,
99355,
-99383,
-99437,
-99437,
-99458,
-99485,
-99505,
-99517,
-99528,
-99553,
-99560,
-99573,
-99590,
-99602,
-99624,
-99624,
-99631,
+99367,
+99390,
+99450,
+99460,
+99460,
+99467,
+99492,
+99509,
+99509,
+99532,
+99548,
+99555,
+99575,
+99591,
+99599,
+99606,
+99613,
+99620,
+99620,
+99620,
+99620,
99638,
-99657,
-99688,
-99701,
-99708,
-99747,
-99759,
-99781,
-99781,
-99804,
-99822,
-99841,
-99841,
-99859,
-99859,
-99859,
-99877,
-99890,
-99913,
-99930,
-99944,
-99976,
-100005,
-100005,
-100018,
-100025,
-100025,
-100032,
-100032,
-100048,
-100059,
-100059,
-100086,
+99645,
+99652,
+99689,
+99689,
+99689,
+99706,
+99713,
+99730,
+99776,
+99796,
+99796,
+99796,
+99803,
+99819,
+99826,
+99826,
+99838,
+99855,
+99884,
+99908,
+99928,
+99947,
+99973,
+99979,
+99988,
+99988,
+100017,
+100017,
+100024,
+100024,
+100031,
+100031,
+100031,
+100072,
+100079,
+100079,
+100079,
+100079,
+100095,
100095,
-100111,
+100095,
+100100,
+100107,
+100127,
+100127,
+100138,
100138,
-100153,
-100169,
-100214,
-100222,
-100230,
-100267,
-100274,
-100284,
-100293,
-100293,
-100329,
-100347,
-100357,
-100377,
-100387,
-100387,
-100397,
-100397,
+100138,
+100148,
+100154,
+100154,
+100154,
+100154,
+100154,
+100154,
+100159,
+100172,
+100211,
+100243,
+100255,
+100281,
+100281,
+100309,
+100316,
+100343,
+100369,
+100374,
+100381,
100409,
-100425,
-100425,
-100425,
-100441,
-100455,
-100472,
-100472,
-100479,
-100508,
-100508,
-100517,
-100549,
-100549,
-100568,
-100578,
-100603,
-100603,
-100610,
-100610,
-100641,
-100682,
-100690,
-100705,
-100723,
-100743,
-100743,
-100750,
-100763,
-100763,
-100822,
-100844,
-100865,
-100877,
-100877,
-100877,
-100884,
-100891,
-100903,
-100926,
-100950,
-100950,
-100968,
-100968,
-100987,
-101007,
-101027,
-101027,
-101027,
-101034,
-101034,
+100424,
+100424,
+100444,
+100444,
+100465,
+100498,
+100545,
+100552,
+100552,
+100552,
+100552,
+100559,
+100559,
+100574,
+100606,
+100611,
+100618,
+100618,
+100618,
+100633,
+100633,
+100652,
+100670,
+100691,
+100731,
+100731,
+100731,
+100744,
+100765,
+100765,
+100800,
+100828,
+100835,
+100835,
+100835,
+100842,
+100842,
+100854,
+100881,
+100898,
+100911,
+100911,
+100911,
+100911,
+100932,
+100948,
+100948,
+100948,
+100948,
+100977,
+100977,
+100977,
+100983,
+100992,
+100992,
+101016,
101041,
-101048,
-101055,
-101105,
-101126,
-101142,
-101149,
-101156,
-101163,
-101163,
-101205,
-101205,
-101228,
-101228,
-101228,
-101228,
-101228,
-101228,
-101250,
-101275,
-101282,
-101282,
-101310,
-101316,
-101316,
-101316,
-101323,
-101344,
-101366,
-101392,
-101399,
-101424,
-101441,
-101441,
-101441,
-101441,
-101464,
-101500,
-101520,
-101537,
-101544,
-101552,
-101552,
-101580,
-101580,
-101610,
-101620,
-101627,
-101634,
-101649,
-101656,
-101663,
-101670,
-101670,
-101686,
-101686,
-101693,
-101720,
-101720,
-101748,
-101765,
-101786,
-101802,
-101809,
-101828};
+101063,
+101071,
+101088,
+101088,
+101088,
+101088,
+101113,
+101133,
+101133,
+101148,
+101170,
+101177,
+101206,
+101206,
+101214,
+101251,
+101273,
+101303,
+101345,
+101352,
+101359,
+101359,
+101359,
+101376,
+101387,
+101387,
+101405,
+101412,
+101419,
+101419,
+101426,
+101449,
+101456,
+101456,
+101463,
+101463,
+101470,
+101489,
+101497,
+101504,
+101511,
+101511,
+101516,
+101516,
+101523,
+101543,
+101543,
+101557,
+101586,
+101593,
+101607,
+101625,
+101635,
+101669,
+101689,
+101716,
+101728,
+101739,
+101746,
+101772,
+101772,
+101847,
+101847,
+101847,
+101853,
+101861,
+101888,
+101888,
+101940,
+101980,
+101987,
+102010,
+102021,
+102032,
+102055,
+102062,
+102062,
+102072,
+102079,
+102097,
+102111,
+102118,
+102118,
+102118,
+102146,
+102153,
+102171,
+102178,
+102178,
+102225,
+102244,
+102290,
+102313,
+102320,
+102331,
+102331,
+102331,
+102331,
+102362,
+102367,
+102382,
+102397,
+102438,
+102473,
+102473,
+102499,
+102508,
+102520,
+102538,
+102557,
+102571,
+102602,
+102629,
+102629,
+102629,
+102649,
+102649,
+102649,
+102661,
+102678,
+102717,
+102734,
+102753,
+102778,
+102792,
+102825,
+102832,
+102868,
+102888,
+102899,
+102930,
+102930,
+102930,
+102954,
+102954,
+102988,
+102995,
+102995,
+102995,
+103003,
+103010,
+103017,
+103025,
+103050,
+103050,
+103050,
+103057,
+103072,
+103082,
+103082,
+103095,
+103106,
+103138,
+103171,
+103198,
+103217,
+103265,
+103315,
+103339,
+103345,
+103352,
+103379,
+103379,
+103395
+};
static const char *tldData[] = {
-"edu.mt\0"
-"off.ai\0k12.dc.us\0"
-"edu.mv\0"
-"edu.mw\0edu.ng\0berlev\xc3\xa5g.no\0"
-"edu.mx\0"
-"edu.my\0edu.ni\0"
-"edu.mz\0fastpanel.direct\0"
-"suzuki\0s3-eu-west-1.amazonaws.com\0"
-"livinghistory.museum\0"
-"trentinoalto-adige.it\0dontexist.net\0"
-"hamburg.museum\0muos\xc3\xa1t.no\0"
-"cn-northwest-1.eb.amazonaws.com.cn\0"
-"edu.nr\0\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0direct\0"
-"fl.us\0agency\0"
-"from-ok.com\0"
-"nishiizu.shizuoka.jp\0komae.tokyo.jp\0"
-"edu.om\0team\0doomdns.com\0"
-"vestre-slidre.no\0"
-"sweden.museum\0edu.pa\0"
-"newhampshire.museum\0"
-"edu.pe\0"
-"pro.az\0ar.it\0nishihara.kumamoto.jp\0edu.pf\0"
-"edu.ph\0"
-"page\0"
-"hikimi.shimane.jp\0"
-"santafe.museum\0edu.pk\0"
-"edu.pl\0"
-"s3-ap-southeast-1.amazonaws.com\0home.dyndns.org\0"
-"pro.br\0edu.pn\0"
-"kasai.hyogo.jp\0clan.rip\0"
-"edu.qa\0"
-"edu.pr\0"
-"edu.ps\0mordovia.ru\0"
-"nysa.pl\0edu.pt\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.hk\0ing.pa\0"
-"tech\0"
-"edu.py\0"
-"ugim.gov.pl\0"
-"kameyama.mie.jp\0"
-"madrid.museum\0gjesdal.no\0"
-"elverum.no\0"
-"saotome.st\0"
-"sveio.no\0iveco\0"
-"gifu.jp\0"
-"k12.me.us\0"
-"samsclub\0now-dns.top\0"
-"pro.cy\0"
-"solund.no\0"
-"store\0"
-"nym.gr\0"
-"gjovik.no\0"
-"miyoshi.aichi.jp\0"
-"pro.ec\0convent.museum\0hopto.org\0"
-"ichikawamisato.yamanashi.jp\0"
-"edu.sa\0nym.gy\0"
-"edu.sb\0lamer\0"
-"edu.rs\0edu.sc\0"
-"edu.sd\0"
-"edu.ru\0"
-"map.fastlylb.net\0"
-"langevag.no\0edu.rw\0edu.sg\0"
-"bmd.br\0"
-"brasil.museum\0cc.ar.us\0"
-"edu.sl\0"
-"nym.ie\0"
-"edu.sn\0"
-"muosat.no\0"
-"usa.museum\0"
-"oguni.kumamoto.jp\0edu.st\0"
-"friuli-ve-giulia.it\0edu.sv\0"
-"lg.ua\0"
-"edu.sy\0"
-"shiwa.iwate.jp\0edu.tj\0cheap\0"
-"tysfjord.no\0miami\0"
-"edu.tm\0apple\0"
-"kunimi.fukushima.jp\0iwi.nz\0"
-"edu.to\0"
-"edu.ua\0"
-"cim.br\0edu.tr\0"
-"bindal.no\0arts.ve\0"
-"ikaruga.nara.jp\0edu.tt\0"
-"edu.tw\0"
-"eu-4.evennode.com\0"
-"shirahama.wakayama.jp\0"
-"yoshioka.gunma.jp\0"
-"stuttgart.museum\0sn\xc3\xa5sa.no\0"
+"samegawa.fukushima.jp\0dupont\0"
+"alstom\0"
+"mashiki.kumamoto.jp\0neues.museum\0"
+"herokussl.com\0"
+"karate.museum\0"
+"vall\xc3\xa9""e-d-aoste.it\0"
"edu.vc\0"
-"sicily.it\0"
+"nz.eu.org\0"
"edu.ve\0"
-"sakahogi.gifu.jp\0daigo.ibaraki.jp\0"
-"indianapolis.museum\0edu.uy\0s3.dualstack.eu-central-1.amazonaws.com\0nym.la\0"
-"iwamizawa.hokkaido.jp\0buzz\0piaget\0"
-"nym.lc\0"
-"edu.vn\0"
-"o.bg\0"
-"pro.ht\0"
-"skanland.no\0nym.li\0"
-"nym.kz\0"
-"riik.ee\0audio\0"
-"adachi.tokyo.jp\0"
-"edu.vu\0exnet.su\0"
-"iselect\0"
-"sanjo.niigata.jp\0"
-"jamison.museum\0abbvie\0"
-"za.bz\0"
-"sor-aurdal.no\0"
-"adult.ht\0nym.lt\0"
-"miners.museum\0is-an-actor.com\0nym.lu\0nym.me\0"
-"*.cns.joyent.com\0"
-"sv.it\0mukawa.hokkaido.jp\0oshu.iwate.jp\0kawanehon.shizuoka.jp\0krakow.pl\0"
-"edu.ws\0"
-"asahi.toyama.jp\0nym.mn\0"
-"from-ak.com\0"
-"preservation.museum\0"
-"rec.br\0oga.akita.jp\0"
-"okinawa\0"
-"chikuho.fukuoka.jp\0"
-"nym.mx\0"
-"levanger.no\0living\0"
-"8.bg\0space-to-rent.com\0"
-"tokushima.jp\0wanouchi.gifu.jp\0"
-"lifeinsurance\0"
-"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0jetzt\0"
-"rec.co\0bible.museum\0"
-"ibaraki.jp\0usui.fukuoka.jp\0chungbuk.kr\0"
-"takamori.kumamoto.jp\0"
-"eu-3.evennode.com\0"
-"arts.ro\0"
-"is-a-lawyer.com\0"
-"edu.za\0is-a-student.com\0"
-"nym.nz\0"
-"nishikatsura.yamanashi.jp\0"
-"app.lmpm.com\0"
-"po.it\0nishigo.fukushima.jp\0"
-"s3.dualstack.us-east-2.amazonaws.com\0"
-"fj.cn\0tome.miyagi.jp\0"
-"edu.zm\0nym.pe\0"
-"v-info.info\0"
-"tomakomai.hokkaido.jp\0hosting-cluster.nl\0"
-"click\0"
-"miharu.fukushima.jp\0"
-"r\xc3\xb8st.no\0s3.eu-central-1.amazonaws.com\0"
-"midori.chiba.jp\0"
-"moriyama.shiga.jp\0"
-"natuurwetenschappen.museum\0"
-"nym.pt\0"
-"pro.na\0moto\0"
-"aero.tt\0map.fastly.net\0"
-"hidaka.kochi.jp\0"
-"crew.aero\0"
-"pro.mv\0"
-"histoire.museum\0krokstadelva.no\0giving\0"
-"microsoft\0"
-"ar.us\0"
-"sc.cn\0higashiosaka.osaka.jp\0"
-"pars\0"
-"philadelphia.museum\0lima-city.de\0"
-"lib.nv.us\0"
-"nakagawa.fukuoka.jp\0"
-"\xe4\xb8\xaa\xe4\xba\xba.hk\0nordkapp.no\0"
-"aero.mv\0"
-"baltimore.museum\0"
-"arts.nf\0"
-"shiksha\0"
-"nym.ro\0"
-"pro.om\0"
-"eu-2.evennode.com\0"
-"google\0"
-"nisshin.aichi.jp\0oyamazaki.kyoto.jp\0higashimatsuyama.saitama.jp\0"
-"vallee-d-aoste.it\0serveblog.net\0"
-"agro.pl\0agrinet.tn\0"
-"\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0verm\xc3\xb6gensberatung\0loginto.me\0nym.sk\0"
-"kiyokawa.kanagawa.jp\0kagamino.okayama.jp\0"
-"zt.ua\0"
-"barletta-trani-andria.it\0lima-city.at\0"
-"aeroport.fr\0"
-"kikonai.hokkaido.jp\0shell\0boomla.net\0"
-"nym.su\0"
-"pro.pr\0"
-"yokohama\0"
-"jobs.tt\0nym.sx\0"
-"club.aero\0journalism.museum\0symantec\0"
-"takamori.nagano.jp\0"
-"kamigori.hyogo.jp\0"
-"github.io\0"
-"reviews\0"
-"ariake.saga.jp\0lima-city.ch\0"
-"trentinos\xc3\xbc""dtirol.it\0"
-"mysecuritycamera.org\0nym.tw\0"
-"inzai.chiba.jp\0verisign\0"
-"nakagyo.kyoto.jp\0"
-"surf\0"
-"k12.tn.us\0"
-"apps.lair.io\0"
-"risor.no\0"
-"finn\xc3\xb8y.no\0"
-"kafjord.no\0"
-"ujitawara.kyoto.jp\0""64-b.it\0"
-"eu-1.evennode.com\0"
-"hamburg\0dvrcam.info\0"
-"minamiaiki.nagano.jp\0"
-"mt.eu.org\0"
-"abogado\0"
-"shimokawa.hokkaido.jp\0"
-"ninomiya.kanagawa.jp\0hatogaya.saitama.jp\0"
-"batsfjord.no\0"
-"kamikoani.akita.jp\0"
-"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0lenug.su\0"
-"samnanger.no\0"
-"gs.ol.no\0glade\0"
-"pro.tt\0\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
-"hn.cn\0"
-"mihama.chiba.jp\0"
-"stavern.no\0"
-"bs.it\0kuji.iwate.jp\0kisosaki.mie.jp\0"
-"tydal.no\0\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"cv.ua\0"
-"sakado.saitama.jp\0hospital\0"
-"sc.ke\0"
-"rec.nf\0"
-"takatsuki.shiga.jp\0"
-"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0teva\0square7.de\0"
-"yuasa.wakayama.jp\0"
-"choshi.chiba.jp\0"
-"shiroishi.miyagi.jp\0tottori.tottori.jp\0sc.kr\0pro.vn\0thruhere.net\0"
-"balashov.su\0cust.disrec.thingdust.io\0"
-"tw.cn\0yawara.ibaraki.jp\0"
-"lib.pr.us\0"
-"kitamoto.saitama.jp\0"
-"hurdal.no\0sling\0"
-"chonan.chiba.jp\0endofinternet.net\0"
-"githubusercontent.com\0"
-"sc.ls\0sogndal.no\0"
-"judaica.museum\0"
-"heguri.nara.jp\0"
-"cc.sc.us\0"
-"wajima.ishikawa.jp\0"
-"sec.ps\0"
-"masaki.ehime.jp\0augustow.pl\0"
-"imdb\0"
-"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0hdfcbank\0"
-"landrover\0"
-"costume.museum\0"
-"*.compute.amazonaws.com.cn\0"
-"history.museum\0alsace\0"
-"karatsu.saga.jp\0"
-"fukushima.fukushima.jp\0nabari.mie.jp\0"
-"skype\0"
-"cc.na\0"
-"le.it\0rifu.miyagi.jp\0square7.ch\0"
-"fla.no\0watches\0backplaneapp.io\0definima.io\0"
-"mikasa.hokkaido.jp\0"
-"nyc.museum\0"
-"seranishi.hiroshima.jp\0nakatane.kagoshima.jp\0"
-"aya.miyazaki.jp\0custom.metacentrum.cz\0"
-"its.me\0harvestcelebration.museum\0abo.pa\0o.se\0"
-"limanowa.pl\0"
-"corvette.museum\0"
-"artsandcrafts.museum\0watchandclock.museum\0pors\xc3\xa1\xc5\x8bgu.no\0vard\xc3\xb8.no\0"
-"naruto.tokushima.jp\0"
-"devices.resinstaging.io\0"
-"rec.ro\0accenture\0"
-"boston.museum\0sciences.museum\0"
-"takayama.gifu.jp\0abashiri.hokkaido.jp\0"
-"dyndns-wiki.com\0"
-"solutions\0"
-"minamata.kumamoto.jp\0"
-"s\xc3\xb8r-aurdal.no\0"
-"ibaraki.ibaraki.jp\0"
-"fantasyleague.cc\0"
-"vet.br\0\xe5\xb2\xa9\xe6\x89\x8b.jp\0inabe.mie.jp\0"
-"pila.pl\0"
-"balestrand.no\0hornindal.no\0"
-"virgin\0"
-"hepforge.org\0"
-"ukiha.fukuoka.jp\0"
-"ol.no\0"
-"ufcfan.org\0"
-"ino.kochi.jp\0"
-"farmstead.museum\0"
-"community.museum\0land-4-sale.us\0"
-"kaneyama.yamagata.jp\0"
-"topology.museum\0\xc3\xa1laheadju.no\0aurskog-h\xc3\xb8land.no\0"
-"tec.ve\0"
-"kumakogen.ehime.jp\0ujiie.tochigi.jp\0"
-"idrett.no\0"
-"esp.br\0"
-"is-a-guru.com\0"
-"ikawa.akita.jp\0kamitsue.oita.jp\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"alt.za\0xnbay.com\0"
-"ragusa.it\0"
-"scienceandindustry.museum\0holmestrand.no\0lib.wi.us\0"
-"minokamo.gifu.jp\0chikusei.ibaraki.jp\0definima.net\0"
-"uz.ua\0"
-"cal.it\0"
-"trento.it\0twmail.net\0"
-"aero\0halsa.no\0"
-"\xe5\xae\xae\xe5\xb4\x8e.jp\0"
-"rec.ve\0nohost.me\0"
-"mifune.kumamoto.jp\0"
-"skj\xc3\xa5k.no\0my.eu.org\0"
-"kuzumaki.iwate.jp\0"
-"net.ac\0academia.bo\0s3-ca-central-1.amazonaws.com\0"
-"dnsking.ch\0"
-"net.ae\0"
-"net.af\0umb.it\0"
-"net.ag\0alaheadju.no\0hobol.no\0aaa\0"
-"ojiya.niigata.jp\0yamanakako.yamanashi.jp\0"
-"net.ai\0communication.museum\0grong.no\0"
-"net.al\0imb.br\0cartier\0"
-"juif.museum\0bardu.no\0surnadal.no\0accesscam.org\0"
-"read\0"
-"net.ba\0kaluga.su\0"
-"net.ar\0net.bb\0aquila.it\0kuriyama.hokkaido.jp\0"
-"inazawa.aichi.jp\0chat\0"
-"net.au\0"
-"hemne.no\0"
-"net.bh\0abb\0"
-"windmill.museum\0spydeberg.no\0abc\0ditchyourip.com\0"
-"net.az\0citadel\0"
-"pccw\0"
-"okagaki.fukuoka.jp\0ginowan.okinawa.jp\0"
-"net.bm\0"
-"net.bn\0takazaki.miyazaki.jp\0"
-"net.bo\0askim.no\0l\xc3\xb8renskog.no\0sc.ug\0"
-"ap.it\0"
-"deals\0"
-"net.br\0sc.tz\0"
-"net.bs\0k12.al.us\0cc.ua\0"
-"net.bt\0tainai.niigata.jp\0kakinoki.shimane.jp\0pcloud.host\0"
-"stuff-4-sale.us\0"
-"gobo.wakayama.jp\0"
-"takikawa.hokkaido.jp\0"
-"net.ci\0"
-"net.bz\0my.id\0"
-"sc.us\0"
-"net.cm\0energy\0"
-"net.cn\0konan.aichi.jp\0biratori.hokkaido.jp\0"
-"net.co\0coupons\0"
-"ownip.net\0gotdns.ch\0"
-"gonohe.aomori.jp\0inawashiro.fukushima.jp\0jp.net\0"
-"net.cu\0coloradoplateau.museum\0giessen.museum\0aco\0"
-"act.edu.au\0net.cw\0"
-"shimodate.ibaraki.jp\0"
-"net.cy\0"
-"hjelmeland.no\0"
-"net.dm\0"
-"net.do\0"
-"joinville.br\0"
-"unj\xc3\xa1rga.no\0immo\0\xe5\xa4\xa7\xe6\x8b\xbf\0dyndns-web.com\0"
-"net.ec\0rennesoy.no\0"
-"komvux.se\0"
-"net.eg\0memorial.museum\0"
-"ads\0science\0"
-"net.dz\0minato.tokyo.jp\0"
-"aeg\0"
-"quest\0"
-"cymru.museum\0"
-"trentin-s\xc3\xbc""d-tirol.it\0"
-"muenchen.museum\0"
-"net.et\0"
-"h\xc3\xa1""bmer.no\0"
-"yonabaru.okinawa.jp\0"
-"loyalist.museum\0"
-"galsa.no\0s3-website-sa-east-1.amazonaws.com\0"
-"from-nv.com\0"
-"trentino-s\xc3\xbc""dtirol.it\0"
-"nl.eu.org\0"
-"england.museum\0"
-"afl\0"
+"hirokawa.fukuoka.jp\0midsund.no\0"
+"bronnoysund.no\0"
+"gon.pk\0"
+"edu.uy\0"
+"ayabe.kyoto.jp\0\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0"
+"massacarrara.it\0edu.vn\0virtualuser.de\0"
+"bardu.no\0"
+"stateofdelaware.museum\0richardli\0"
+"k12.va.us\0is-a-blogger.com\0"
+"kitakami.iwate.jp\0botany.museum\0l\xc3\xb8renskog.no\0"
+"v\xc3\xa5g\xc3\xa5.no\0"
+"edu.vu\0"
+"chiropractic.museum\0powiat.pl\0"
+"kawazu.shizuoka.jp\0"
+"gbiz\0"
+"cyon.link\0"
+"tjmaxx\0a.prod.fastly.net\0"
+"mihama.fukui.jp\0myeffect.net\0"
+"yasu.shiga.jp\0tran\xc3\xb8y.no\0"
+"cc.ms.us\0cc.nc.us\0edu.ws\0"
+"australia.museum\0"
+"balsan-sudtirol.it\0"
+"shinonsen.hyogo.jp\0"
+"furukawa.miyagi.jp\0uscountryestate.museum\0"
+"k12.co.us\0"
+"unj\xc3\xa1rga.no\0"
+"seto.aichi.jp\0is-a-hunter.com\0"
+"sv.it\0"
+"kushiro.hokkaido.jp\0naustdal.no\0"
+"egersund.no\0boleslawiec.pl\0h\xc3\xa4kkinen.fi\0"
"comunica\xc3\xa7\xc3\xb5""es.museum\0"
-"theater\0"
-"net.ge\0"
-"yamaga.kumamoto.jp\0"
-"urn.arpa\0net.gg\0"
-"bozen-suedtirol.it\0honjyo.akita.jp\0"
-"vik.no\0"
-"net.gl\0"
-"rindal.no\0glass\0"
-"net.gn\0"
-"tvedestrand.no\0internet-dns.de\0"
-"net.gp\0kozaki.chiba.jp\0rzgw.gov.pl\0ravendb.run\0"
-"dontexist.org\0"
-"net.gr\0nishimera.miyazaki.jp\0"
-"net.gt\0"
-"net.gu\0"
-"alabama.museum\0"
-"net.gy\0asso.eu.org\0freeddns.us\0"
-"net.hk\0gs.st.no\0fairwinds\0africa.com\0"
-"morena.br\0"
-"net.hn\0minamimaki.nagano.jp\0"
-"tagami.niigata.jp\0nakagawa.tokushima.jp\0"
-"name\0my-router.de\0"
-"net.ht\0net.id\0"
-"m.bg\0"
-"eu-west-1.elasticbeanstalk.com\0"
-"net.il\0"
-"net.im\0stathelle.no\0aig\0"
-"net.in\0modena.it\0"
-"from-wv.com\0"
-"net.iq\0\xc3\xa5lg\xc3\xa5rd.no\0hoteles\0"
-"net.ir\0williamhill\0"
-"net.is\0newspaper.museum\0"
-"niteroi.br\0"
-"net.je\0jewelry\0"
-"chuo.osaka.jp\0"
-"ap-southeast-1.elasticbeanstalk.com\0us-west-1.elasticbeanstalk.com\0"
-"hirono.fukushima.jp\0"
-"uri.arpa\0guernsey.museum\0lancashire.museum\0sn\xc3\xa5""ase.no\0"
-"soma.fukushima.jp\0onomichi.hiroshima.jp\0urausu.hokkaido.jp\0"
-"barreau.bj\0"
-"fujioka.gunma.jp\0komatsushima.tokushima.jp\0reit\0"
-"net.jo\0police.uk\0"
-"niiza.saitama.jp\0"
-"isa-geek.org\0"
-"la-spezia.it\0"
-"sm\xc3\xb8la.no\0barsy.info\0"
-"travelers\0"
-"ct.it\0kitagata.gifu.jp\0crown\0"
-"net.kg\0valle.no\0"
-"samegawa.fukushima.jp\0"
-"net.ki\0is-an-accountant.com\0"
-"nowtv\0"
-"in-addr.arpa\0"
-"6.bg\0"
-"oamishirasato.chiba.jp\0tarama.okinawa.jp\0net.kn\0"
-"net.la\0"
-"lucca.it\0net.lb\0"
-"net.lc\0"
-"net.kw\0"
-"midori.gunma.jp\0sayama.saitama.jp\0mincom.tn\0"
-"net.ky\0encyclopedic.museum\0*.0emm.com\0"
-"net.kz\0"
-"net.lk\0"
-"dgca.aero\0"
-"shirataka.yamagata.jp\0kinder\0"
-"ng.eu.org\0"
-"net.ma\0air.museum\0"
-"ogawa.nagano.jp\0net.lr\0"
-"net.ls\0is-a-socialist.com\0co.network\0"
-"net.me\0courses\0"
-"ichinomiya.chiba.jp\0kishiwada.osaka.jp\0net.lv\0"
-"sa.au\0fortmissoula.museum\0"
-"emb.kw\0net.ly\0"
-"net.mk\0lib.as.us\0luxury\0"
-"osaki.miyagi.jp\0net.ml\0"
-"hamura.tokyo.jp\0capital\0"
-"net.mo\0"
-"info\0"
-"oishida.yamagata.jp\0"
-"net.ms\0eigersund.no\0"
-"biella.it\0net.mt\0"
-"net.mu\0"
-"net.mv\0net.nf\0"
-"virtual.museum\0net.mw\0net.ng\0"
-"net.mx\0"
-"net.my\0net.ni\0cc.ct.us\0"
-"net.mz\0"
-"torino.museum\0"
-"uruma.okinawa.jp\0stalowa-wola.pl\0azure-mobile.net\0"
-"aarborte.no\0dnsfor.me\0"
-"odesa.ua\0"
-"nanbu.yamanashi.jp\0net.nr\0"
-"sa.cr\0"
+"user.party.eus\0za.net\0"
+"vibo-valentia.it\0"
+"abr.it\0dvrdns.org\0"
+"kasuga.fukuoka.jp\0namegawa.saitama.jp\0spot\0"
+"wpdevcloud.com\0jambyl.su\0"
+"\xe7\xbb\x84\xe7\xbb\x87.hk\0mb.it\0kamikoani.akita.jp\0mini\0"
+"police.uk\0"
+"edu.za\0domains\0"
+"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0"
+"software\0"
+"en.it\0"
+"wa.au\0\xe9\x9d\x99\xe5\xb2\xa1.jp\0mint\0"
+"recht.pro\0"
+"opole.pl\0"
+"at.it\0"
+"mima.tokushima.jp\0"
+"takahagi.ibaraki.jp\0bokn.no\0edu.zm\0"
+"hiraya.nagano.jp\0eaton.mi.us\0"
+"mibu.tochigi.jp\0newspaper.museum\0aaa\0"
+"field.museum\0jp.net\0"
+"f.bg\0loginline.dev\0"
+"pup.gov.pl\0"
+"youth.museum\0voagat.no\0"
+"mobi.gp\0"
+"baghdad.museum\0"
+"cc.ua\0"
+"abc.br\0"
+"honefoss.no\0"
+"arboretum.museum\0abb\0"
+"nabari.mie.jp\0abc\0diamonds\0simple-url.com\0"
+"us-4.evennode.com\0"
+"act.edu.au\0"
+"ieee\0"
+"kyonan.chiba.jp\0"
+"mus.br\0asso.re\0"
+"yamatsuri.fukushima.jp\0"
+"czest.pl\0"
+"friuli-vegiulia.it\0lib.ut.us\0"
+"katsuura.chiba.jp\0"
+"hi.cn\0manchester.museum\0"
+"tenei.fukushima.jp\0"
+"\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0selfip.biz\0"
"lib.oh.us\0"
-"st.no\0"
-"taiji.wakayama.jp\0"
-"net.nz\0"
-"couchpotatofries.org\0"
-"search\0"
-"net.om\0"
-"pinb.gov.pl\0rent\0"
-"game-server.cc\0"
-"anz\0"
-"net.pa\0"
+"politica.bo\0"
+"iwaki.fukushima.jp\0"
+"akita.jp\0asahikawa.hokkaido.jp\0aco\0fashion\0"
+"s3-website.eu-central-1.amazonaws.com\0"
+"\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0"
+"kiwi.nz\0"
+"takanabe.miyazaki.jp\0"
+"melbourne\0schwarz\0"
+"aoki.nagano.jp\0"
+"indian.museum\0travelersinsurance\0"
+"kunimi.fukushima.jp\0"
+"ads\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0"
+"yura.wakayama.jp\0aeg\0"
+"nsw.edu.au\0ciencia.bo\0nishihara.okinawa.jp\0"
+"sande.vestfold.no\0"
+"misugi.mie.jp\0\xe7\xb6\xb2\xe7\xb5\xa1.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"jaguar\0"
+"lublin.pl\0"
+"nishiazai.shiga.jp\0\xe7\xbd\x91\xe5\xba\x97\0from-ks.com\0"
+"hizen.saga.jp\0risor.no\0"
+"vossevangen.no\0us-3.evennode.com\0"
+"siracusa.it\0fhs.no\0"
+"bergbau.museum\0"
+"sandnessjoen.no\0"
+"sld.do\0asso.nc\0"
+"takikawa.hokkaido.jp\0"
+"sodegaura.chiba.jp\0\xe0\xb8\x98\xe0\xb8\xb8\xe0\xb8\xa3\xe0\xb8\x81\xe0\xb8\xb4\xe0\xb8\x88.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0afl\0"
+"dental\0"
+"is-a-llama.com\0"
+"gda.pl\0"
+"deloitte\0"
+"inawashiro.fukushima.jp\0"
+"savannahga.museum\0kerryproperties\0\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0"
+"embaixada.st\0"
+"readthedocs.io\0"
+"sk\xc3\xa5nland.no\0"
+"frana.no\0"
+"cc.md.us\0"
+"selbu.no\0"
+"ollo\0"
+"biz.bb\0"
+"biz.at\0"
+"kinko.kagoshima.jp\0kushima.miyazaki.jp\0southwest.museum\0"
+"shiojiri.nagano.jp\0u.se\0"
+"ono.fukushima.jp\0ostroda.pl\0"
+"ce.gov.br\0orland.no\0snoasa.no\0"
+"biz.az\0"
+"charter.aero\0bunkyo.tokyo.jp\0"
+"shimane.jp\0"
+"maceio.br\0lc.it\0umaji.kochi.jp\0budapest\0"
+"higashi.okinawa.jp\0shimoda.shizuoka.jp\0aig\0"
+"higashi.fukushima.jp\0bd.se\0"
+"email\0"
+"shibata.niigata.jp\0kusatsu.shiga.jp\0columbia.museum\0vanguard\0"
+"trentinsudtirol.it\0"
+"and.mom\0"
+"pl.ua\0us-2.evennode.com\0"
+"nexus\0"
+"rennebu.no\0"
+"webspace.rocks\0"
+"maniwa.okayama.jp\0"
+"biz.cy\0"
+"taki.mie.jp\0biz.dk\0"
+"fujisawa.iwate.jp\0"
+"yosemite.museum\0"
+"datsun\0cloud66.ws\0"
+"half.host\0"
+"eniwa.hokkaido.jp\0"
+"circle\0worse-than.tv\0"
+"talk\0for.men\0"
+"cards\0"
+"asso.km\0"
+"izumi.kagoshima.jp\0kotoura.tottori.jp\0"
+"scholarships\0"
+"fujimino.saitama.jp\0jeonbuk.kr\0brussels.museum\0"
+"biz.et\0"
+"compare\0"
+"raholt.no\0"
+"usa.museum\0ap-southeast-1.elasticbeanstalk.com\0ng.city\0"
+"melhus.no\0"
+"coupons\0dynu.net\0"
+"kashiwa.chiba.jp\0"
+"bnpparibas\0"
+"moseushi.hokkaido.jp\0"
+"padua.it\0"
+"asso.mc\0"
+"bulsan-suedtirol.it\0rivne.ua\0my-wan.de\0"
+"historicalsociety.museum\0is-a-linux-user.org\0"
+"biz.gl\0"
+"hasuda.saitama.jp\0"
+"is-a-chef.org\0"
+"courses\0us-1.evennode.com\0"
+"shinjo.yamagata.jp\0"
+"stadt.museum\0"
+"trani-barletta-andria.it\0"
+"trader.aero\0cloudapps.digital\0"
+"mywire.org\0"
+"mashike.hokkaido.jp\0yamagata.ibaraki.jp\0unjarga.no\0"
+"sicilia.it\0"
+"morimachi.shizuoka.jp\0"
+"s3.dualstack.eu-west-2.amazonaws.com\0"
+"biz.id\0"
+"imageandsound.museum\0anz\0credit\0"
+"historical.museum\0jewelry.museum\0"
"aol\0"
-"friuli-veneziagiulia.it\0oiso.kanagawa.jp\0muika.niigata.jp\0"
-"artgallery.museum\0handson.museum\0net.pe\0on-aptible.com\0"
-"enna.it\0"
-"honefoss.no\0press\0"
-"net.ph\0etisalat\0"
-"s\xc3\xb8rum.no\0net.pk\0"
-"net.pl\0"
-"wios.gov.pl\0net.pn\0"
-"servepics.com\0"
-"marugame.kagawa.jp\0"
-"net.qa\0"
-"joso.ibaraki.jp\0tsubame.niigata.jp\0net.pr\0"
-"net.ps\0myfirewall.org\0"
-"bergamo.it\0rishirifuji.hokkaido.jp\0ina.nagano.jp\0kokubunji.tokyo.jp\0net.pt\0"
-"sweetpepper.org\0"
+"manno.kagawa.jp\0"
+"newyork.museum\0pubol.museum\0h\xc3\xa1mm\xc3\xa1rfeasta.no\0"
+"seihi.nagasaki.jp\0"
+"and.museum\0sdn.gov.pl\0"
+"bievat.no\0karasjohka.no\0"
+"us-east-2.elasticbeanstalk.com\0"
+"home.dyndns.org\0"
+"mt.eu.org\0"
+"government.aero\0"
+"selfip.com\0"
+"mitoyo.kagawa.jp\0kameoka.kyoto.jp\0"
+"vercelli.it\0"
+"geekgalaxy.com\0ptplus.fit\0"
"app\0"
-"benevento.it\0"
-"net.py\0"
-"akita.akita.jp\0"
-"s3-website-ap-northeast-1.amazonaws.com\0"
-"forgot.her.name\0"
-"shinshiro.aichi.jp\0"
-"scotland.museum\0"
-"\xe5\x85\xb5\xe5\xba\xab.jp\0"
-"sassari.it\0okuma.fukushima.jp\0"
-"mypi.co\0"
-"numazu.shizuoka.jp\0\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
-"ris\xc3\xb8r.no\0"
-"fuefuki.yamanashi.jp\0bar\0"
-"bbc\0"
-"toscana.it\0atsugi.kanagawa.jp\0settsu.osaka.jp\0kusatsu.shiga.jp\0yamada.toyama.jp\0"
-"\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"omitama.ibaraki.jp\0"
-"net.sa\0kindle\0"
-"net.sb\0"
-"net.sc\0"
-"net.sd\0dunlop\0"
-"net.ru\0myftp.org\0"
-"sekikawa.niigata.jp\0"
-"hemsedal.no\0net.rw\0net.sg\0navy\0"
-"niimi.okayama.jp\0net.sh\0"
-"kamifurano.hokkaido.jp\0art\0bbt\0"
-"kumejima.okinawa.jp\0net.sl\0"
-"broker.aero\0bcg\0"
-"fet.no\0net.so\0nsupdate.info\0"
-"dagestan.ru\0"
-"property\0"
-"iki.nagasaki.jp\0net.st\0bcn\0"
-"prof.pr\0net.th\0walter\0"
-"net.sy\0"
-"net.tj\0"
-"sor-varanger.no\0net.tm\0"
-"net.tn\0rest\0"
-"net.to\0"
-"unjarga.no\0net.ua\0dagestan.su\0"
-"net.tr\0"
-"cargo.aero\0"
-"aizubange.fukushima.jp\0kamo.niigata.jp\0net.tt\0"
-"society.museum\0ebiz.tw\0"
-"sa.it\0"
-"net.tw\0localhost.daplie.me\0"
-"net.uk\0cards\0organic\0"
-"hl.cn\0\xd0\xba\xd0\xbe\xd0\xbc\0""32-b.it\0"
-"diamonds\0"
-"naganohara.gunma.jp\0"
-"vennesla.no\0blogdns.org\0"
-"ca.it\0"
-"lib.co.us\0"
-"kyotango.kyoto.jp\0"
-"safety.aero\0net.vc\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0cyon.link\0"
-"sandvikcoromant\0"
-"net.ve\0"
-"koge.tottori.jp\0guardian\0"
-"hof.no\0net.uy\0net.vi\0"
-"net.uz\0bet\0"
-"sakae.chiba.jp\0"
-"net.vn\0"
-"ekloges.cy\0bryne.no\0kpmg\0"
-"dyndns-home.com\0"
-"\xe5\xa4\xa7\xe5\x88\x86.jp\0higashimatsushima.miyagi.jp\0"
-"gmbh\0\xe7\xa7\xbb\xe5\x8a\xa8\0"
-"ct.us\0net.vu\0"
-"wsa.gov.pl\0"
-"gemological.museum\0"
-"pistoia.it\0travel.pl\0"
-"realtor\0"
-"vindafjord.no\0k12.mn.us\0viajes\0"
-"tysnes.no\0"
-"net.ws\0"
-"axa\0place\0visa\0isa-geek.com\0"
-"civilisation.museum\0aws\0u2-local.xnbay.com\0"
-"ppg.br\0"
-"\xe5\x95\x86\xe5\xba\x97\0"
-"kami.kochi.jp\0sado.niigata.jp\0"
-"cc.ca.us\0kerrylogistics\0"
-"puglia.it\0"
-"siljan.no\0"
-"toyohashi.aichi.jp\0"
-"xfinity\0"
-"lomza.pl\0bid\0"
-"evenes.no\0"
-"monmouth.museum\0ca.na\0"
-"lc.it\0"
-"lib.nm.us\0"
-"cloudaccess.net\0"
-"gs.hl.no\0lv.ua\0net.za\0""1337.pictures\0"
-"iwafune.tochigi.jp\0tokushima.tokushima.jp\0"
-"bio\0inc.hk\0"
-"m.se\0online\0"
-"seven\0"
-"sukumo.kochi.jp\0"
-"net.zm\0"
-"rochester.museum\0dynserv.org\0"
-"biz\0watari.miyagi.jp\0"
-"tokyo\0"
-"yasuoka.nagano.jp\0"
-"koshigaya.saitama.jp\0tjmaxx\0"
-"democracia.bo\0"
-"tur.ar\0"
-"stavanger.no\0theatre\0viva\0myds.me\0"
-"bilbao.museum\0webcam\0"
-"tienda\0"
-"hashimoto.wakayama.jp\0"
-"cosenza.it\0"
-"louvre.museum\0askoy.no\0boxfuse.io\0"
-"travel.tt\0"
-"\xd0\xb1\xd0\xb3\0is-a-celticsfan.org\0"
-"vivo\0cleverapps.io\0"
-"riopreto.br\0tur.br\0"
-"walmart\0"
-"manchester.museum\0"
-"asahi.nagano.jp\0"
-"valer.hedmark.no\0fh.se\0"
-"wiki.bo\0cc.ks.us\0\xe8\xb4\xad\xe7\x89\xa9\0"
-"homeip.net\0"
-"wiki.br\0imakane.hokkaido.jp\0"
-"snoasa.no\0"
-"kumagaya.saitama.jp\0"
-"tromsa.no\0"
-"hob\xc3\xb8l.no\0"
-"ecn.br\0koza.wakayama.jp\0"
-"krym.ua\0"
-"filegear-de.me\0"
-"toyama.toyama.jp\0"
-"rygge.no\0istmein.de\0"
-"jewish.museum\0usgarden.museum\0raisa.no\0endofinternet.org\0"
-"bms\0"
-"ryokami.saitama.jp\0"
-"\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0"
-"haugesund.no\0bmw\0"
-"homeunix.net\0"
-"asn.au\0"
-"messina.it\0bnl\0"
-"lazio.it\0"
-"*.in.futurecms.at\0"
-"val-d-aosta.it\0pa.leg.br\0"
-"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0"
-"gorlice.pl\0"
-"assn.lk\0bom\0"
-"kanna.gunma.jp\0"
-"timekeeping.museum\0boo\0"
-"ardal.no\0"
-"monza.it\0fukuoka.jp\0"
-"tksat.bo\0"
-"an.it\0bot\0"
-"sandnessjoen.no\0"
-"calvinklein\0report\0"
-"hl.no\0\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0"
-"genova.it\0box\0"
-"epilepsy.museum\0geology.museum\0casino\0"
-"pordenone.it\0"
-"ostroda.pl\0"
-"tana.no\0"
-"tochigi.tochigi.jp\0"
-"opole.pl\0"
-"sucks\0"
-"cab\0"
-"artanddesign.museum\0"
-"webredirect.org\0"
-"kashiwa.chiba.jp\0pb.leg.br\0"
-"tele.amune.org\0dnsalias.com\0"
-"kiwi.nz\0\xd0\xb5\xd1\x8e\0honeywell\0"
-"ca.us\0"
+"design\0"
+"tickets\0"
+"rodoy.no\0sld.pa\0"
+"biz.ki\0company\0"
+"kunst.museum\0"
+"vb.it\0"
+"higashimatsuyama.saitama.jp\0"
+"bar\0"
+"bizen.okayama.jp\0f.se\0bbc\0"
+"kirovograd.ua\0"
+"kaizuka.osaka.jp\0"
+"*.bzz.dapps.earth\0"
+"askoy.no\0"
+"rollag.no\0"
+"hara.nagano.jp\0"
+"aostavalley.it\0"
+"vinnytsia.ua\0"
+"art\0bbt\0"
+"j\xc3\xb8rpeland.no\0"
+"biz.ls\0bcg\0"
+"joinville.br\0dabur\0phone\0is-a-chef.com\0"
+"yahaba.iwate.jp\0isahaya.nagasaki.jp\0kitamoto.saitama.jp\0"
+"001www.com\0"
+"bcn\0"
+"tsukuba.ibaraki.jp\0akrehamn.no\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0"
+"yasugi.shimane.jp\0"
+"ks.ua\0"
+"ninomiya.kanagawa.jp\0"
+"ulsan.kr\0salon\0"
+"wa.us\0"
+"from-de.com\0"
+"audio\0"
+"yoshinogari.saga.jp\0biz.mv\0"
+"bulsan.it\0biz.mw\0"
+"freiburg.museum\0"
+"yusui.kagoshima.jp\0biz.ni\0"
+"s3-website.ap-south-1.amazonaws.com\0"
+"bofa\0"
+"2038.io\0"
+"boavista.br\0batsfjord.no\0from-ri.com\0ddns.net\0"
+"ks.us\0"
+"biz.nr\0marshalls\0"
+"crew.aero\0"
+"hi.us\0"
+"services.aero\0\xe8\xb4\xad\xe7\x89\xa9\0"
+"mo.cn\0yamato.kanagawa.jp\0masoy.no\0watch\0"
+"financial\0arvo.network\0"
+"agency\0"
+"myactivedirectory.com\0"
+"iide.yamagata.jp\0"
+"bet\0netlify.com\0"
+"tourism.tn\0"
+"cnpy.gdn\0"
+"pharmacy.museum\0"
+"nedre-eiker.no\0"
+"yugawa.fukushima.jp\0"
+"coach\0"
+"ujiie.tochigi.jp\0\xe4\xbc\x81\xe4\xb8\x9a\0"
+"nishinoomote.kagoshima.jp\0biz.pk\0"
+"biz.pl\0"
+"mobi.tt\0reisen\0"
+"tamaki.mie.jp\0"
+"okaya.nagano.jp\0"
+"okoppe.hokkaido.jp\0arita.saga.jp\0"
+"\xe5\xa4\xa7\xe9\x98\xaa.jp\0"
+"biz.pr\0"
+"living.museum\0mobi.tz\0"
+"dattoweb.com\0"
+"taxi\0"
+"axa\0"
+"dscloud.me\0"
+"owani.aomori.jp\0setagaya.tokyo.jp\0aws\0"
+"kaita.hiroshima.jp\0village.museum\0fuossko.no\0"
+"jfk.museum\0"
+"toei.aichi.jp\0"
+"maintenance.aero\0"
+"hatoyama.saitama.jp\0"
+"donna.no\0"
+"michigan.museum\0"
+"hjartdal.no\0"
+"bid\0"
+"gildeskal.no\0gulen.no\0"
+"tonami.toyama.jp\0"
+"bio\0"
+"sagamihara.kanagawa.jp\0tainai.niigata.jp\0cc.ut.us\0"
+"photo\0"
+"tokyo.jp\0marugame.kagawa.jp\0servecounterstrike.com\0"
+"bitballoon.com\0"
+"nishihara.kumamoto.jp\0voting\0my.eu.org\0"
+"biz.ss\0"
+"biz\0hasura.app\0"
+"ullensvang.no\0vard\xc3\xb8.no\0biz.tj\0"
+"okinawa.jp\0"
+"shimosuwa.nagano.jp\0madrid\0"
+"ven.it\0"
+"biz.ua\0"
+"biz.tr\0"
+"shiroishi.saga.jp\0"
+"ts.it\0biz.tt\0"
+"ricoh\0za.org\0"
+"trana.no\0"
+"on-aptible.com\0"
+"kakegawa.shizuoka.jp\0is-a-landscaper.com\0"
+"mobi.na\0lardal.no\0"
+"masuda.shimane.jp\0"
+"mo.it\0"
+"mobi.ng\0hammerfest.no\0stord.no\0"
+"database.museum\0"
+"aosta-valley.it\0"
+"is-a-cpa.com\0"
+"sakai.ibaraki.jp\0nakamura.kochi.jp\0"
+"tadotsu.kagawa.jp\0ethnology.museum\0ng.school\0"
+"aparecida.br\0"
+"go.gov.br\0emiliaromagna.it\0plc.ly\0"
+"bergen.no\0"
+"dyroy.no\0\xc3\xb8vre-eiker.no\0"
+"ca.it\0indianapolis.museum\0eidfjord.no\0"
+"biz.vn\0bond\0"
+"training\0"
+"oz.au\0"
+"mazowsze.pl\0"
+"s.bg\0"
+"9.bg\0for.mom\0"
+"bms\0scrysec.com\0"
+"misconfused.org\0"
+"asahi.toyama.jp\0bmw\0from-ga.com\0"
+"e164.arpa\0book\0"
+"\xc3\xb8ksnes.no\0"
+"volkenkunde.museum\0dynathome.net\0"
+"bergamo.it\0meeres.museum\0"
+"ngo.lk\0"
+"medical.museum\0"
+"mer\xc3\xa5ker.no\0\xc3\xb8rland.no\0\xe6\x9c\xba\xe6\x9e\x84\0"
+"lib.wi.us\0run.app\0"
+"tatebayashi.gunma.jp\0hjelmeland.no\0"
+"b\xc3\xb8mlo.no\0"
+"yabu.hyogo.jp\0gs.fm.no\0lib.sc.us\0trade\0"
+"mining.museum\0"
+"toride.ibaraki.jp\0"
+"bom\0"
+"boo\0"
+"birdart.museum\0"
+"of.work\0zapto.xyz\0"
+"bot\0"
+"nl.eu.org\0ybo.faith\0"
+"notogawa.shiga.jp\0denmark.museum\0bydgoszcz.pl\0box\0"
+"otofuke.hokkaido.jp\0dovre.no\0"
+"hemne.no\0abogado\0"
+"motobu.okinawa.jp\0gol.no\0"
+"toki.gifu.jp\0chattanooga.museum\0ca.na\0"
+"loseyourip.com\0"
+"iwamizawa.hokkaido.jp\0biz.zm\0"
+"mobi.ke\0cab\0"
+"fineart.museum\0"
"cal\0"
-"space.museum\0cam\0"
-"rankoshi.hokkaido.jp\0rawa-maz.pl\0"
-"zama.kanagawa.jp\0"
-"k12.mi.us\0cba\0"
+"cam\0"
+"samnanger.no\0"
+"commune.am\0"
+"lombardia.it\0cba\0*.quipelements.com\0"
"car\0"
-"journalist.aero\0synology-ds.de\0"
-"cat\0"
-"rehab\0"
-"r\xc3\xb8mskog.no\0"
-"dynv6.net\0"
-"tychy.pl\0"
-"cbn\0"
-"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0"
-"cbs\0stuff-4-sale.org\0"
-"shell.museum\0cloud.fedoraproject.org\0"
-"sport\0"
-"rsc.cdn77.org\0"
-"omachi.nagano.jp\0"
-"biev\xc3\xa1t.no\0tennis\0tiaa\0"
-"ichinoseki.iwate.jp\0"
-"time.museum\0"
-"trading.aero\0"
-"citi\0from-ma.com\0"
-"ks.ua\0twmail.org\0synology-diskstation.de\0"
-"anani.br\0dupont\0"
-"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0"
-"jpmorgan\0router.management\0"
-"lincoln\0lixil\0"
-"valle-aosta.it\0ceb\0"
-"city\0"
-"nuoro.it\0iheya.okinawa.jp\0"
-"saitama.jp\0kamimine.saga.jp\0"
-"ks.us\0"
-"nakano.nagano.jp\0"
-"patria.bo\0md.ci\0"
+"kitaaiki.nagano.jp\0nebraska.museum\0tourism.pl\0aetna\0co.com\0"
+"cat\0kitahata.saga.jp\0"
+"from-nj.com\0"
+"kyuragi.saga.jp\0"
+"apple\0"
+"ancona.it\0"
+"glas.museum\0ngo.ph\0cbn\0qc.com\0"
+"discount\0"
+"trentinos\xc3\xbc""d-tirol.it\0h\xc3\xa1pmir.no\0"
+"kokonoe.oita.jp\0amli.no\0cbs\0"
+"wada.nagano.jp\0dontexist.net\0"
+"versailles.museum\0latrobe\0"
+"kafjord.no\0"
+"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0"
+"horonobe.hokkaido.jp\0lerdal.no\0"
+"kumakogen.ehime.jp\0"
+"r\xc3\xa5holt.no\0\xd0\xb1\xd0\xb3\0"
+"eq.edu.au\0contagem.br\0shimotsuke.tochigi.jp\0"
+"takagi.nagano.jp\0"
+"k12.de.us\0ar.com\0"
+"kitakata.miyazaki.jp\0telekommunikation.museum\0"
+"allfinanz\0"
+"sekikawa.niigata.jp\0plc.uk\0"
+"la-spezia.it\0k12.ak.us\0"
+"ceb\0mckinsey\0sling\0"
+"qpon\0"
+"hazu.aichi.jp\0"
"ceo\0"
-"cfa\0from-pa.com\0"
-"tono.iwate.jp\0r.cdn77.net\0"
-"artdeco.museum\0civilization.museum\0bodo.no\0kiev.ua\0"
-"fujisato.akita.jp\0obama.nagasaki.jp\0cfd\0"
-"int.ar\0"
-"klabu.no\0radio\0"
+"kawanishi.nara.jp\0cfa\0"
+"tromsa.no\0"
+"cfd\0"
+"kyowa.hokkaido.jp\0"
+"ng.eu.org\0"
"buy\0"
-"ddnsgeek.com\0servesarcasm.com\0"
-"olbia-tempio.it\0"
-"k.bg\0\xc3\xb8rsta.no\0skodje.no\0"
-"int.az\0otsuki.kochi.jp\0""16-b.it\0"
-"mine.nu\0"
-"naie.hokkaido.jp\0"
-"int.bo\0algard.no\0"
-"trentino-s\xc3\xbc""d-tirol.it\0"
-"khakassia.su\0"
-"kure.hiroshima.jp\0land\0"
-"s\xc3\xb8rfold.no\0"
-"kaisei.kanagawa.jp\0ohira.tochigi.jp\0"
-"grane.no\0codespot.com\0"
-"shikabe.hokkaido.jp\0targi.pl\0"
-"takayama.nagano.jp\0itoigawa.niigata.jp\0zachpomor.pl\0"
-"empresa.bo\0int.ci\0"
-"mochizuki.nagano.jp\0"
-"is-very-good.org\0webhop.org\0"
-"fortal.br\0sr.it\0\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0"
-"per.la\0"
-"int.co\0gjerdrum.no\0"
-"vanguard\0"
-"saltdal.no\0"
-"magazine.aero\0"
-"sciencesnaturelles.museum\0\xc3\xa5snes.no\0"
-"cr.it\0"
-"bievat.no\0lib.fl.us\0"
-"obihiro.hokkaido.jp\0"
-"ringebu.no\0cc.wi.us\0"
-"4.bg\0"
-"higashi.fukuoka.jp\0"
-"l\xc3\xb8""dingen.no\0est-le-patron.com\0"
-"mod.gi\0naturalhistorymuseum.museum\0hemnes.no\0"
-"tadotsu.kagawa.jp\0"
-"missoula.museum\0supply\0cable-modem.org\0"
-"schmidt\0dynu.net\0nerdpol.ovh\0"
-"getmyip.com\0"
-"asn.lv\0"
-"zapto.org\0"
-"kyowa.akita.jp\0now.sh\0"
-"lancome\0"
-"odo.br\0shunan.yamaguchi.jp\0per.nf\0"
-"nsn.us\0"
-"salvador.br\0omaezaki.shizuoka.jp\0bzh\0"
-"circus.museum\0"
-"unnan.shimane.jp\0"
-"gripe\0"
-"shriram\0"
-"cnt.br\0nikaho.akita.jp\0meiwa.gunma.jp\0"
-"omega\0otsuka\0"
-"toyoake.aichi.jp\0omura.nagasaki.jp\0"
-"extraspace\0"
-"game-host.org\0"
-"udine.it\0\xd1\x80\xd1\x84\0"
-"bulsan-suedtirol.it\0iglesiascarbonia.it\0"
-"niki.hokkaido.jp\0"
-"from-va.com\0"
-"noshiro.akita.jp\0agano.niigata.jp\0"
-"vega.no\0"
-"lt.it\0suwalki.pl\0"
-"yahiko.niigata.jp\0"
-"usarts.museum\0hoyanger.no\0from-wa.com\0"
-"oita.oita.jp\0"
-"\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
-"childrensgarden.museum\0"
-"tarnobrzeg.pl\0\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0"
-"tajiri.osaka.jp\0toyono.osaka.jp\0"
-"auto.pl\0cloudycluster.net\0"
-"compare\0"
-"barsy.club\0"
-"r\xc3\xb8yrvik.no\0kids.us\0"
-"trentinoaadige.it\0"
-"saga.saga.jp\0"
-"gs.vf.no\0zp.ua\0"
-"tokyo.jp\0stargard.pl\0kred\0"
-"int.is\0"
-"nx.cn\0molise.it\0isa-geek.net\0"
-"im.it\0"
-"hyogo.jp\0toei.aichi.jp\0"
-"vaga.no\0"
-"jelenia-gora.pl\0"
-"kvalsund.no\0"
-"pi.leg.br\0"
-"pilot.aero\0per.sg\0"
-"trieste.it\0shimizu.hokkaido.jp\0seika.kyoto.jp\0"
-"television.museum\0"
-"coupon\0"
-"bykle.no\0cc.md.us\0"
-"com\0dscloud.mobi\0"
-"dattoweb.com\0"
-"tr.eu.org\0"
-"tamba.hyogo.jp\0dynalias.net\0"
-"int.la\0"
-"teramo.it\0"
-"lyngen.no\0"
-"shimotsuke.tochigi.jp\0"
-"secure\0"
-"americanantiques.museum\0"
-"cooking\0"
-"\xd0\xbc\xd0\xba\xd0\xb4\0"
-"int.lk\0ambulance.museum\0"
-"takashima.shiga.jp\0"
-"unusualperson.com\0"
-"tushu\0"
-"dad\0"
-"2000.hu\0luroy.no\0"
-"iamallama.com\0"
-"radio.br\0"
-"romsa.no\0"
-"wi.us\0"
-"noheji.aomori.jp\0nowruz\0"
-"ozu.ehime.jp\0"
-"arna.no\0ro.im\0"
-"xj.cn\0"
-"ato.br\0"
-"vagan.no\0day\0"
-"ro.it\0int.mv\0construction\0freebox-os.fr\0"
-"int.mw\0"
-"int.ni\0"
-"gz.cn\0capetown\0"
-"company\0"
-"qsl.br\0"
-"alfaromeo\0crs\0csc\0video\0"
-"sp.gov.br\0bo.it\0"
-"anamizu.ishikawa.jp\0sakae.nagano.jp\0"
-"cr.ua\0"
-"cloudfunctions.net\0"
-"siena.it\0"
-"tips\0"
-"ashiya.hyogo.jp\0"
-"myactivedirectory.com\0"
-"kaminoyama.yamagata.jp\0"
-"from-ca.com\0"
-"tobe.ehime.jp\0nikko.tochigi.jp\0sko.gov.pl\0"
-"otago.museum\0washingtondc.museum\0"
-"shiranuka.hokkaido.jp\0"
-"oceanographic.museum\0rana.no\0"
-"divtasvuodna.no\0"
-"vf.no\0meloy.no\0k12.mt.us\0insurance\0"
-"koebenhavn.museum\0aigo\0dds\0"
-"oyer.no\0netlify.com\0"
-"shakotan.hokkaido.jp\0"
-"\xd0\xbc\xd0\xbe\xd0\xbd\0"
-"int.pt\0"
-"\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"from-ia.com\0"
-"hita.oita.jp\0"
-"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
-"seihi.nagasaki.jp\0"
-"geekgalaxy.com\0"
-"taketa.oita.jp\0mutual\0"
-"dev\0"
-"research.aero\0mytis.ru\0"
-"gratangen.no\0"
-"mihara.kochi.jp\0gyokuto.kumamoto.jp\0"
-"takaishi.osaka.jp\0so.gov.pl\0"
-"from-ga.com\0"
-"furubira.hokkaido.jp\0ayabe.kyoto.jp\0"
-"lt.ua\0s3-website.eu-west-3.amazonaws.com\0"
-"tateyama.chiba.jp\0ohira.miyagi.jp\0pe.leg.br\0"
-"larvik.no\0verdal.no\0"
-"geometre-expert.fr\0"
-"int.ru\0"
-"biz.bb\0"
-"int.rw\0k.se\0"
-"hakata.fukuoka.jp\0czest.pl\0biz.at\0"
-"wildlife.museum\0spreadbetting\0"
-"otaki.chiba.jp\0suzu.ishikawa.jp\0"
-"mydobiss.com\0"
-"stpetersburg.museum\0cc.oh.us\0zone\0diskstation.me\0"
-"biz.az\0miasta.pl\0"
-"ask\xc3\xb8y.no\0"
-"yoshimi.saitama.jp\0"
-"md.us\0physio\0"
-"maebashi.gunma.jp\0"
-"ferrara.it\0"
-"dhl\0scrapper-site.net\0"
-"ann-arbor.mi.us\0"
-"int.tj\0"
-"lifestyle\0"
-"ishikawa.fukushima.jp\0"
-"diskstation.eu\0"
-"toyooka.hyogo.jp\0oi.kanagawa.jp\0"
-"maringa.br\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0"
-"kragero.no\0vinnica.ua\0co.place\0"
-"blogdns.net\0"
-"int.tt\0"
-"baidar.no\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0"
-"biz.cy\0law.pro\0"
-"biz.dk\0"
-"fuchu.tokyo.jp\0for-some.biz\0"
-"*.sch.uk\0cc.la.us\0"
-"shintoku.hokkaido.jp\0"
-"airport.aero\0study\0"
-"int.ve\0diy\0grocery\0certmgr.org\0"
-"hiphop\0"
-"booking\0homeunix.org\0"
-"matsushige.tokushima.jp\0"
-"ts.it\0"
-"wajiki.tokushima.jp\0int.vn\0"
-"ltd.co.im\0"
-"hawaii.museum\0"
-"chikuzen.fukuoka.jp\0"
-"est-a-la-masion.com\0"
-"biz.et\0"
-"marriott\0"
+"ar.it\0"
+"mol.it\0"
+"leclerc\0skype\0"
+"sp.leg.br\0"
+"ac.ae\0d.bg\0"
+"*.bd\0kanzaki.saga.jp\0"
+"software.aero\0"
+"kartuzy.pl\0"
+"app.banzaicloud.io\0"
+"toyotsu.fukuoka.jp\0"
+"miyazaki.jp\0lima-city.rocks\0"
+"music.museum\0"
+"s3-us-gov-west-1.amazonaws.com\0"
+"mo.us\0vegas\0"
+"router.management\0"
+"ac.at\0ikeda.gifu.jp\0shobara.hiroshima.jp\0yamazoe.nara.jp\0"
+"ac.be\0naturalsciences.museum\0fairwinds\0"
+"ozu.kumamoto.jp\0"
+"baths.museum\0"
+"*.ck\0"
+"\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0"
+"cymru\0"
+"fukagawa.hokkaido.jp\0ca.us\0"
+"communications.museum\0berlevag.no\0int.eu.org\0"
+"ac.ci\0bolzano.it\0"
+"yakage.okayama.jp\0sarpsborg.no\0"
+"trentins\xc3\xbc""dtirol.it\0st.no\0"
+"ac.cn\0\xd0\xb5\xd1\x8e\0"
+"biella.it\0latino\0"
+"monster\0is-a-chef.net\0"
+"m\xc3\xa1latvuopmi.no\0ubank\0"
+"srv.br\0ac.cr\0"
+"tama.tokyo.jp\0"
+"aramco\0"
+"\xe5\xae\xb6\xe9\x9b\xbb\0"
+"ac.cy\0g\xc3\xa1ls\xc3\xa1.no\0bzh\0"
+"komagane.nagano.jp\0"
+"freeboxos.com\0"
+"\xe5\x95\x86\xe6\xa5\xad.tw\0"
+"sucks\0"
+"ybo.review\0"
+"*.er\0"
+"fujioka.gunma.jp\0"
+"leg.br\0"
+"algard.no\0"
+"suzu.ishikawa.jp\0"
+"*.fj\0sado.niigata.jp\0"
+"*.fk\0"
+"loginline.app\0"
+"napoli.it\0"
+"norton\0"
+"luzern.museum\0"
+"kitadaito.okinawa.jp\0ngo.za\0dyndns-office.com\0"
+"automotive.museum\0uw.gov.pl\0"
+"minowa.nagano.jp\0valer.hedmark.no\0"
+"takatsuki.shiga.jp\0"
+"casino\0"
+"kagoshima.kagoshima.jp\0vindafjord.no\0ntdll.top\0"
+"gs.oslo.no\0tvedestrand.no\0ap-south-1.elasticbeanstalk.com\0mein-vigor.de\0"
+"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0uonuma.niigata.jp\0"
+"k12.mn.us\0"
+"oum.gov.pl\0kerrylogistics\0"
+"abarth\0"
+"education.tas.edu.au\0asahi.chiba.jp\0"
"apigee.io\0"
-"yuu.yamaguchi.jp\0"
-"natal.br\0hachinohe.aomori.jp\0"
-"sayama.osaka.jp\0"
-"9guacu.br\0budapest\0"
-"camera\0"
-"showa.gunma.jp\0"
-"eating-organic.net\0"
-"hirata.fukushima.jp\0"
-"wales\0dnsdojo.org\0"
-"snasa.no\0stream\0dontexist.com\0"
-"kuokgroup\0\xd8\xb9\xd8\xb1\xd8\xa8\0"
-"m\xc3\xa5s\xc3\xb8y.no\0"
-"nishi.fukuoka.jp\0"
-"ddnss.org\0"
-"ritto.shiga.jp\0"
-"n\xc3\xa6r\xc3\xb8y.no\0"
-"al.it\0"
-"isla.pr\0"
-"ide.kyoto.jp\0"
-"tecnologia.bo\0"
-"biz.id\0"
-"zaporizhzhia.ua\0"
-"kppsp.gov.pl\0dnp\0"
-"birkenes.no\0"
-"omuta.fukuoka.jp\0"
-"\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"carbonia-iglesias.it\0"
-"arai.shizuoka.jp\0hokuto.yamanashi.jp\0"
-"dog\0"
-"nara.nara.jp\0"
-"swidnica.pl\0"
-"storage\0"
+"uzhgorod.ua\0"
+"ac.gn\0enterprises\0sandvik\0health-carereform.com\0"
+"dsmynas.com\0"
"from-ny.net\0"
-"brussel.museum\0stordal.no\0"
-"mitane.akita.jp\0"
-"botanicgarden.museum\0asker.no\0"
-"judygarland.museum\0"
-"ne.jp\0yono.saitama.jp\0dot\0"
-"hiji.oita.jp\0oshima.tokyo.jp\0futurehosting.at\0"
-"pri.ee\0ne.ke\0atlanta.museum\0"
-"gold\0"
-"golf\0"
-"oh.us\0"
-"sr.gov.pl\0"
+"ehime.jp\0tokoname.aichi.jp\0"
+"seiro.niigata.jp\0"
+"oksnes.no\0"
+"\xe3\x82\xb3\xe3\x83\xa0\0"
+"tools\0"
+"isa.us\0cloud\0"
+"s.se\0raid\0"
+"fam.pk\0"
+"lanbib.se\0kiwi\0*.dweb.link\0"
+"ako.hyogo.jp\0"
+"gwangju.kr\0"
+"aomori.aomori.jp\0wallonie.museum\0"
+"andria-barletta-trani.it\0ass.km\0sorreisa.no\0"
+"arna.no\0"
+"ac.id\0"
+"dagestan.ru\0"
+"futtsu.chiba.jp\0shell\0"
+"gr.com\0"
+"shikokuchuo.ehime.jp\0"
+"ac.il\0aibetsu.hokkaido.jp\0"
+"ac.im\0eu-west-2.elasticbeanstalk.com\0"
+"com\0ac.in\0"
+"money.museum\0"
+"art.br\0*.jm\0"
+"virtuel.museum\0vipsinaapp.com\0"
+"ac.ir\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0cpa\0"
+"izumisano.osaka.jp\0dagestan.su\0"
"como.it\0"
-"biz.ki\0cc.al.us\0"
-"sarufutsu.hokkaido.jp\0arida.wakayama.jp\0"
-"mashiko.tochigi.jp\0chizu.tottori.jp\0bosch\0global\0beep.pl\0"
-"izumizaki.fukushima.jp\0ne.kr\0pr.leg.br\0"
-"samsung\0"
-"realestate.pl\0"
-"daito.osaka.jp\0asaka.saitama.jp\0"
-"kiho.mie.jp\0"
-"gloppen.no\0porsangu.no\0"
-"snaase.no\0uk.eu.org\0"
-"bologna.it\0eat\0"
-"yaita.tochigi.jp\0"
-"kawagoe.mie.jp\0kalisz.pl\0tourism.tn\0"
-"al.no\0"
-"biz.ls\0cc.ne.us\0is-a-liberal.com\0"
-"mb.ca\0"
-"higashikurume.tokyo.jp\0"
-"kv\xc3\xa6nangen.no\0la.us\0"
-"ginan.gifu.jp\0"
-"*.hosting.myjino.ru\0lima-city.rocks\0"
-"!city.nagoya.jp\0"
-"k12.vi.us\0ap-northeast-2.elasticbeanstalk.com\0"
-"legnica.pl\0"
-"rich\0"
-"goog\0*.transurl.be\0"
-"oketo.hokkaido.jp\0biz.mv\0starostwo.gov.pl\0"
-"biz.mw\0vegarshei.no\0eco\0is-very-sweet.org\0blogsyte.com\0"
-"fujikawa.yamanashi.jp\0"
-"biz.ni\0"
-"lig.it\0napoli.it\0aioi.hyogo.jp\0okuizumo.shimane.jp\0"
-"gallo\0"
-"tohma.hokkaido.jp\0rep.kp\0"
-"i.bg\0"
-"taishin.fukushima.jp\0sumita.iwate.jp\0hamatama.saga.jp\0"
-"yk.ca\0reise\0"
-"iwaki.fukushima.jp\0biz.nr\0"
-"andebu.no\0karaganda.su\0"
-"hamada.shimane.jp\0"
-"finland.museum\0helsinki.museum\0"
-"onagawa.miyagi.jp\0"
-"zone.id\0"
-"gob.ar\0"
+"pisa.it\0"
+"*.kh\0from-fl.com\0"
+"trentino-suedtirol.it\0bauern.museum\0leitungsen.de\0*.ex.futurecms.at\0"
+"if.ua\0"
+"hiranai.aomori.jp\0"
+"ac.jp\0omachi.saga.jp\0"
+"holtalen.no\0"
+"xz.cn\0friuli-vgiulia.it\0mamurogawa.yamagata.jp\0artgallery.museum\0"
+"minamiuonuma.niigata.jp\0meguro.tokyo.jp\0ac.ke\0dad\0fund\0"
+"nl.ca\0"
+"etisalat\0"
+"namegata.ibaraki.jp\0star\0"
+"ikeda.osaka.jp\0is-an-actor.com\0"
+"art.do\0missoula.museum\0larvik.no\0us-east-1.amazonaws.com\0stuff-4-sale.us\0"
+"news.hu\0monza-brianza.it\0studio\0eu.com\0"
+"udi.br\0ac.kr\0"
+"taiji.wakayama.jp\0"
+"shimane.shimane.jp\0"
+"gent\0"
+"marumori.miyagi.jp\0"
+"art.dz\0"
+"toyoake.aichi.jp\0yokosuka.kanagawa.jp\0"
+"ar.us\0aquarelle\0day\0"
+"ac.lk\0fundacio.museum\0"
+"indiana.museum\0fr\xc3\xb8ya.no\0hiphop\0"
+"h\xc3\xa6gebostad.no\0warmia.pl\0"
+"*.mm\0"
+"trieste.it\0ac.ma\0"
+"ac.ls\0"
+"crs\0csc\0"
+"firenze.it\0ac.me\0"
+"misaki.okayama.jp\0"
+"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0murmansk.su\0"
+"ikeda.hokkaido.jp\0"
+"ogawara.miyagi.jp\0koryo.nara.jp\0"
+"cloudeity.net\0"
+"olbia-tempio.it\0"
+"air-surveillance.aero\0"
+"koya.wakayama.jp\0"
+"kurotaki.nara.jp\0*.np\0"
+"\xd1\x80\xd1\x84\0xen.prgmr.com\0"
+"macapa.br\0ac.mu\0tjome.no\0"
+"now-dns.top\0"
+"ac.mw\0spjelkavik.no\0"
+"sologne.museum\0"
+"tokorozawa.saitama.jp\0ac.ni\0from-ne.com\0"
+"ac.mz\0meraker.no\0"
+"vagsoy.no\0"
+"loans\0"
+"yoshioka.gunma.jp\0prochowice.pl\0"
+"cafe\0dds\0"
+"schoenbrunn.museum\0"
+"kongsberg.no\0"
+"matsumoto.kagoshima.jp\0"
+"gets-it.net\0"
+"hioki.kagoshima.jp\0ac.nz\0*.pg\0"
+"padova.it\0kawasaki.miyagi.jp\0ohira.miyagi.jp\0"
+"mozilla-iot.org\0"
+"kita.osaka.jp\0"
+"cal.it\0lancia\0"
+"s3-website-ap-southeast-2.amazonaws.com\0"
+"tohma.hokkaido.jp\0"
+"ac.pa\0"
+"art.ht\0cyber.museum\0"
+"himi.toyama.jp\0"
+"s3.dualstack.ca-central-1.amazonaws.com\0"
+"unazuki.toyama.jp\0"
+"chita.aichi.jp\0dev\0"
+"omasvuotna.no\0cc.wa.us\0"
+"yuzawa.niigata.jp\0"
+"utsira.no\0"
+"definima.io\0"
+"iwanai.hokkaido.jp\0iwaizumi.iwate.jp\0"
+"fujikawa.yamanashi.jp\0koshu.yamanashi.jp\0k12.me.us\0"
+"kuokgroup\0from-nv.com\0navoi.su\0"
+"ac.pr\0"
+"eastcoast.museum\0is-a-republican.com\0"
+"cc.ks.us\0"
+"kitagawa.miyazaki.jp\0"
+"cc.hi.us\0reg.dk\0"
+"bozen.it\0"
+"hatogaya.saitama.jp\0us-gov-west-1.elasticbeanstalk.com\0"
+"d.se\0"
+"\xe6\x96\xb0\xe6\xbd\x9f.jp\0"
+"helsinki.museum\0"
+"saga.saga.jp\0"
+"club.tw\0accenture\0"
+"crafting.xyz\0"
+"\xe7\x86\x8a\xe6\x9c\xac.jp\0dhl\0"
+"aeroport.fr\0asago.hyogo.jp\0"
+"hofu.yamaguchi.jp\0"
+"monmouth.museum\0"
+"isernia.it\0glass.museum\0"
+"ski.museum\0"
+"kids.museum\0ac.rs\0"
+"toho.fukuoka.jp\0"
+"ac.ru\0ac.se\0certmgr.org\0"
+"ac.rw\0afamilycompany\0"
+"cn.it\0"
+"plaza.museum\0"
+"murakami.niigata.jp\0inami.toyama.jp\0fr\xc3\xa6na.no\0yokohama\0"
+"mishima.fukushima.jp\0abira.hokkaido.jp\0"
+"bod\xc3\xb8.no\0"
+"macys\0"
+"ichikawa.chiba.jp\0"
+"valleaosta.it\0salerno.it\0"
+"taishi.hyogo.jp\0"
+"iveco\0zuerich\0"
+"ac.th\0"
+"omigawa.chiba.jp\0"
+"ac.sz\0ac.tj\0diy\0"
+"tsuwano.shimane.jp\0\xc4\x8d\xc3\xa1hcesuolo.no\0"
+"warman\0"
+"palmas.br\0ok.us\0"
+"gub.uy\0"
+"linkitools.space\0"
+"la.us\0"
+"s3-ap-northeast-2.amazonaws.com\0"
+"ac.ug\0"
+"uji.kyoto.jp\0ando.nara.jp\0ac.tz\0"
+"ac.uk\0call\0"
+"bialystok.pl\0"
+"test.tj\0google\0"
+"for.one\0"
+"fi.cr\0"
+"shimamoto.osaka.jp\0"
+"barsycenter.com\0"
+"hyuga.miyazaki.jp\0"
+"video.hu\0ac.vn\0"
+"floripa.br\0camp\0"
+"hirono.iwate.jp\0internet-dns.de\0"
+"ino.kochi.jp\0"
+"nl.no\0"
+"lib.fl.us\0fin.ci\0"
+"ohira.tochigi.jp\0tokke.no\0"
+"porsanger.no\0"
+"kashiba.nara.jp\0"
+"art.pl\0"
+"leasing.aero\0veneto.it\0olayan\0"
+"giske.no\0"
+"seljord.no\0dev-myqnapcloud.com\0"
+"sport\0azure-mobile.net\0"
+"weatherchannel\0"
+"\xe6\x95\x99\xe8\x82\xb2.\xe9\xa6\x99\xe6\xb8\xaf\0booking\0"
+"nango.fukushima.jp\0sandnessj\xc3\xb8""en.no\0"
+"*.ye\0"
+"cadaques.museum\0"
+"idv.hk\0pharmacy\0"
+"gehirn.ne.jp\0"
+"fin.ec\0"
+"sykkylven.no\0dnp\0"
+"fermo.it\0test.ru\0"
+"myftp.org\0"
+"valle-daosta.it\0"
+"harima.hyogo.jp\0miyoshi.saitama.jp\0"
+"recreation.aero\0reggiocalabria.it\0dog\0"
+"katsuragi.nara.jp\0"
+"judaica.museum\0"
+"yuu.yamaguchi.jp\0"
+"kunitachi.tokyo.jp\0"
+"myravendb.com\0"
+"ac.za\0"
+"yorkshire.museum\0mel\xc3\xb8y.no\0qa2.com\0"
+"hornindal.no\0k12.or.us\0"
+"dot\0"
+"aviation.museum\0bosch\0"
+"um.gov.pl\0"
+"art.sn\0"
+"tagami.niigata.jp\0ac.zm\0"
+"oketo.hokkaido.jp\0"
+"yokoshibahikari.chiba.jp\0syncloud.it\0"
+"is-a-photographer.com\0"
+"filegear-au.me\0"
+"bolivia.bo\0open\0"
+"care\0team\0"
+"eastafrica.museum\0"
+"vennesla.no\0"
+"k12.az.us\0ac.zw\0analytics\0"
+"arts.co\0game-server.cc\0dyndns.ddnss.de\0"
+"jetzt\0swidnik.pl\0hk.com\0"
+"ueno.gunma.jp\0"
+"shari.hokkaido.jp\0casa\0"
+"localhistory.museum\0"
+"trentino-altoadige.it\0miyazu.kyoto.jp\0cars\0"
+"control.aero\0shoo.okayama.jp\0"
+"sola.no\0case\0"
+"shintoku.hokkaido.jp\0zoological.museum\0eat\0"
+"is.it\0cash\0"
+"fetsund.no\0"
+"fi.it\0"
+"rimini.it\0"
+"tech\0dyn.ddnss.de\0"
+"minamitane.kagoshima.jp\0"
+"bo.it\0is-a-soxfan.org\0"
+"investments\0lexus\0"
+"fuel.aero\0"
+"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0"
+"q.bg\0valledaosta.it\0"
+"vacations\0"
+"7.bg\0eco\0"
+"id.au\0barsy.menu\0"
+"cn.ua\0"
+"kawaue.gifu.jp\0"
+"aland.fi\0app.os.fedoraproject.org\0"
+"r\xc3\xb8st.no\0us.gov.pl\0study\0"
+"mie.jp\0"
+"student.aero\0journalism.museum\0"
+"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0ohda.shimane.jp\0"
+"to.leg.br\0"
+"undersea.museum\0"
+"takarazuka.hyogo.jp\0"
+"ln.cn\0betainabox.com\0"
"edu\0"
"dtv\0"
-"sp.it\0"
-"lib.tn.us\0s3-eu-west-3.amazonaws.com\0""001www.com\0"
-"immobilien\0"
-"gwiddle.co.uk\0"
-"parachuting.aero\0"
-"ip6.arpa\0gob.bo\0"
-"chita.aichi.jp\0"
-"biz.pk\0"
-"biz.pl\0"
-"lindas.no\0avianca\0"
-"cri.br\0"
-"biz.pr\0"
-"2.bg\0ne.pw\0"
-"musashimurayama.tokyo.jp\0"
-"is-a-doctor.com\0"
-"gob.cl\0bari.it\0tsuwano.shimane.jp\0ug.gov.pl\0"
-"annaka.gunma.jp\0in-the-band.net\0"
-"ski.museum\0"
-"joyo.kyoto.jp\0dvr\0"
-"indian.museum\0"
-"servecounterstrike.com\0"
-"date.hokkaido.jp\0zao.miyagi.jp\0"
-"trade\0"
-"bozen-s\xc3\xbc""dtirol.it\0warabi.saitama.jp\0"
-"\xe4\xbd\x90\xe8\xb3\x80.jp\0"
-"nesset.no\0*.transurl.eu\0"
-"pi.it\0"
-"no.com\0"
-"yusuhara.kochi.jp\0"
-"gob.do\0"
-"yoshinogari.saga.jp\0johana.toyama.jp\0"
-"gob.ec\0grozny.su\0"
-"mad.museum\0"
-"online.th\0a.run.app\0"
-"nanto.toyama.jp\0"
-"d\xc3\xb8nna.no\0"
-"nhlfan.net\0myftp.biz\0"
-"aguni.okinawa.jp\0"
-"bergbau.museum\0rogers\0"
-"oyabe.toyama.jp\0"
-"univ.sn\0"
-"prime\0"
-"gob.es\0"
-"gamvik.no\0"
-"\xe7\xa6\x8f\xe4\xba\x95.jp\0memset.net\0"
-"indigena.bo\0"
-"okegawa.saitama.jp\0shimizu.shizuoka.jp\0"
-"vix.br\0kyowa.hokkaido.jp\0nagaokakyo.kyoto.jp\0"
-"al.us\0no-ip.org\0oy.lc\0"
-"kunitomi.miyazaki.jp\0"
-"balsan-suedtirol.it\0wakuya.miyagi.jp\0gb.net\0"
-"ac\0"
-"ad\0mb.it\0biz.tj\0"
-"ae\0"
-"af\0"
-"ag\0yahoo\0dnsupdater.de\0"
+"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0"
+"planetarium.museum\0"
+"medio-campidano.it\0lib.ky.us\0"
+"forde.no\0"
+"partners\0"
+"cipriani\0"
+"saka.hiroshima.jp\0olayangroup\0"
+"donetsk.ua\0"
+"dvr\0nodum.co\0"
+"furniture.museum\0s3-ap-south-1.amazonaws.com\0"
+"time.no\0"
+"voyage\0"
+"bozen-suedtirol.it\0"
+"dontexist.org\0"
+"matta-varjjat.no\0"
+"volkswagen\0"
+"hayakawa.yamanashi.jp\0"
+"turen.tn\0"
+"arkhangelsk.su\0"
+"matsudo.chiba.jp\0kids.us\0"
+"kep.tr\0"
+"ggee\0"
+"toyooka.hyogo.jp\0"
+"insurance.aero\0"
+"susaki.kochi.jp\0"
+"accident-investigation.aero\0dev.static.land\0"
+"daegu.kr\0faith\0is-into-cars.com\0"
+"kakamigahara.gifu.jp\0"
+"steiermark.museum\0fet.no\0airforce\0"
+"nodum.io\0"
+"hs.zone\0"
+"bounty-full.com\0"
+"sortland.no\0"
+"suzaka.nagano.jp\0bajddar.no\0"
+"codes\0garden\0"
+"himeshima.oita.jp\0resistance.museum\0"
+"withgoogle.com\0"
+"k12.ny.us\0"
+"minamiboso.chiba.jp\0"
+"malatvuopmi.no\0"
+"wa.gov.au\0"
+"cc.mo.us\0actor\0"
+"mincom.tn\0chernivtsi.ua\0bradesco\0"
+"fukuchi.fukuoka.jp\0muenster.museum\0"
+"ua.rs\0"
+"cim.br\0ic.gov.pl\0"
+"\xe6\x97\xb6\xe5\xb0\x9a\0"
+"k12.dc.us\0"
+"mobile\0"
+"lur\xc3\xb8y.no\0"
+"chizu.tottori.jp\0buyshouses.net\0"
+"omuta.fukuoka.jp\0toyama.toyama.jp\0"
+"barlettatraniandria.it\0sr.it\0alabama.museum\0"
+"kuki.saitama.jp\0cc.ca.us\0"
+"sarufutsu.hokkaido.jp\0"
+"inf.br\0"
+"mizuho.tokyo.jp\0exeter.museum\0idv.tw\0"
+"rennes\xc3\xb8y.no\0"
+"unicom\0"
+"bando.ibaraki.jp\0"
+"id.ir\0arts.ve\0"
+"s\xc3\xb8r-varanger.no\0barsyonline.com\0"
+"miyama.fukuoka.jp\0"
+"inf.cu\0"
+"nsw.au\0"
+"profesional.bo\0ap.it\0imakane.hokkaido.jp\0windows\0"
+"wroclaw.pl\0duck\0solutions\0ybo.science\0"
+"minamiise.mie.jp\0"
+"ogliastra.it\0sula.no\0"
+"tonosho.kagawa.jp\0"
+"b.bg\0"
+"koebenhavn.museum\0"
+"kamakura.kanagawa.jp\0kuroiso.tochigi.jp\0"
+"zgora.pl\0"
+"daplie.me\0"
+"narita.chiba.jp\0otake.hiroshima.jp\0"
+"katashina.gunma.jp\0"
+"hachijo.tokyo.jp\0"
+"b.br\0gs.st.no\0harstad.no\0"
+"oster\xc3\xb8y.no\0fedorapeople.org\0"
+"sc.cn\0friuli-v-giulia.it\0from-sc.com\0"
+"gs.svalbard.no\0"
+"circus.museum\0dallas.museum\0ballangen.no\0author\0"
+"ichikai.tochigi.jp\0realty\0"
+"fin.tn\0"
+"nesseby.no\0"
+"prof.pr\0backplaneapp.io\0"
+"\xe5\x8d\x83\xe8\x91\x89.jp\0"
+"kaneyama.yamagata.jp\0mysecuritycamera.com\0"
+"settlers.museum\0"
+"id.lv\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0balashov.su\0"
+"he.cn\0"
+"laz.it\0yonezawa.yamagata.jp\0id.ly\0"
+"sondre-land.no\0movie\0"
+"takaharu.miyazaki.jp\0"
+"mragowo.pl\0"
+"towada.aomori.jp\0uni5.net\0"
+"dyn.cosidns.de\0"
+"arts.ro\0"
+"bellevue.museum\0"
+"trentino-a-adige.it\0"
+"kumenan.okayama.jp\0coldwar.museum\0ushistory.museum\0"
+"ostrowwlkp.pl\0"
+"cbre\0"
+"forsand.no\0dattolocal.com\0"
+"zachpomor.pl\0cherkasy.ua\0surf\0"
+"svizzera.museum\0knowsitall.info\0"
+"ooshika.nagano.jp\0fan\0"
+"uchihara.ibaraki.jp\0"
+"tksat.bo\0forli-cesena.it\0"
+"chikuhoku.nagano.jp\0"
+"consulting\0"
+"tr.eu.org\0"
+"page\0asso.eu.org\0"
+"noip.us\0"
+"finn\xc3\xb8y.no\0"
+"flesberg.no\0"
+"tarui.gifu.jp\0"
+"fujitsu\0"
+"matsuura.nagasaki.jp\0k12.mt.us\0"
+"selje.no\0hs.run\0"
+"eating-organic.net\0"
+"itami.hyogo.jp\0"
+"kumatori.osaka.jp\0"
+"kameyama.mie.jp\0mobi\0slattum.no\0eu-4.evennode.com\0"
+"toray\0"
+"arts.nf\0from-ma.com\0"
+"masaki.ehime.jp\0"
+"esq\0"
+"\xe6\xb8\xb8\xe6\x88\x8f\0"
+"drive\0"
+"atlanta.museum\0ox.rs\0"
+"trentino-s-tirol.it\0mitou.yamaguchi.jp\0"
+"ecologia.bo\0firewall-gateway.net\0"
+"hokkaido.jp\0fuso.aichi.jp\0"
+"cc.ar.us\0"
+"es.gov.br\0tsuiki.fukuoka.jp\0\xd5\xb0\xd5\xa1\xd5\xb5\0"
+"us-west-1.elasticbeanstalk.com\0"
+"management\0freeboxos.fr\0"
+"moda\0ddnslive.com\0"
+"cesena-forli.it\0"
+"teva\0altervista.org\0spdns.org\0"
+"mitsubishi\0"
+"express.aero\0"
+"sc.ke\0twmail.cc\0"
+"dyndns-remote.com\0"
+"dyndns-at-work.com\0"
+"inf.mk\0losangeles.museum\0"
+"higashinaruse.akita.jp\0"
+"bandai.fukushima.jp\0"
+"eus\0"
+"chirurgiens-dentistes.fr\0"
+"sc.kr\0"
+"hotel.tz\0"
+"*.lcl.dev\0"
+"sayama.osaka.jp\0"
+"takayama.gunma.jp\0"
+"*.nom.br\0"
+"is-leet.com\0"
+"azumino.nagano.jp\0torino.museum\0"
+"radio.br\0"
+"kamiamakusa.kumamoto.jp\0"
+"sc.ls\0pictures\0"
+"nationalheritage.museum\0"
+"\xc3\xb8yer.no\0eu-3.evennode.com\0"
+"flynnhosting.net\0"
+"id.us\0"
+"webcam\0"
+"ina.saitama.jp\0"
+"tomakomai.hokkaido.jp\0finland.museum\0museumcenter.museum\0"
+"murata.miyagi.jp\0jevnaker.no\0"
+"groks-the.info\0"
+"owariasahi.aichi.jp\0"
+"tobetsu.hokkaido.jp\0"
+"skierv\xc3\xa1.no\0"
+"etne.no\0cloudapp.net\0"
+"linz.museum\0averoy.no\0"
+"lib.nm.us\0df.leg.br\0"
+"contemporary.museum\0"
+"teo.br\0"
+"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0"
+"iida.nagano.jp\0"
+"poker\0"
+"oppeg\xc3\xa5rd.no\0"
+"b\xc3\xa1id\xc3\xa1r.no\0dyndns-at-home.com\0"
+"kusu.oita.jp\0"
+"tienda\0"
+"yazu.tottori.jp\0scienceandindustry.museum\0v\xc3\xa6r\xc3\xb8y.no\0"
+"kanna.gunma.jp\0"
+"emb.kw\0khmelnitskiy.ua\0"
+"nyc.museum\0fit\0"
+"dvag\0"
+"airtel\0"
+"chuo.yamanashi.jp\0evenes.no\0"
+"leksvik.no\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
+"lecco.it\0"
+"aa.no\0\xe9\x80\x9a\xe8\xb2\xa9\0"
+"balat.no\0"
+"servep2p.com\0"
+"filegear-sg.me\0"
+"turystyka.pl\0cyon.site\0"
+"flor\xc3\xb8.no\0"
+"chungnam.kr\0"
+"ashiya.fukuoka.jp\0fujikawa.shizuoka.jp\0"
+"naka.hiroshima.jp\0"
+"locus\0statefarm\0thruhere.net\0"
+"eu-2.evennode.com\0"
+"adachi.tokyo.jp\0k12.wy.us\0"
+"rieti.it\0godo.gifu.jp\0"
+"shimabara.nagasaki.jp\0"
+"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0"
+"juniper\0"
+"omotego.fukushima.jp\0"
+"asmatart.museum\0cc.ok.us\0"
+"k12.ia.us\0"
+"inf.ua\0"
+"kosai.shizuoka.jp\0"
+"cc.la.us\0viking\0"
+"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0"
+"fjell.no\0"
+"hotel.lk\0topology.museum\0tr\xc3\xa6na.no\0fly\0"
+"psc.br\0"
+"mihama.mie.jp\0aseral.no\0"
+"noip.me\0"
+"ap-northeast-2.elasticbeanstalk.com\0"
+"experts-comptables.fr\0minamiizu.shizuoka.jp\0loten.no\0"
+"minakami.gunma.jp\0"
+"airguard.museum\0b.se\0"
+"fauske.no\0"
+"taiwa.miyagi.jp\0seven\0"
+"pars\0\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0"
+"inzai.chiba.jp\0mulhouse.museum\0"
+"oyamazaki.kyoto.jp\0futurehosting.at\0"
+"pordenone.it\0gj\xc3\xb8vik.no\0\xe5\x81\xa5\xe5\xba\xb7\0"
+"reggio-emilia.it\0childrensgarden.museum\0"
+"niteroi.br\0pulawy.pl\0"
+"zama.kanagawa.jp\0jamison.museum\0"
+"kawakami.nagano.jp\0"
+"cl.it\0"
+"uk0.bigv.io\0"
+"sciencecenters.museum\0"
+"glogow.pl\0"
+"sc.ug\0eu-1.evennode.com\0"
+"sc.tz\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0foo\0"
+"grong.no\0modum.no\0"
+"morotsuka.miyazaki.jp\0for-more.biz\0"
+"nym.by\0"
+"shinto.gunma.jp\0s3-eu-west-2.amazonaws.com\0nym.bz\0"
+"gjesdal.no\0sc.us\0fox\0"
+"\xe5\x85\xac\xe5\x8f\xb8.cn\0\xe6\xb2\x96\xe7\xb8\x84.jp\0"
+"ny.us\0"
+"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"shimizu.hokkaido.jp\0"
+"de.cool\0"
+"sasaguri.fukuoka.jp\0"
+"hawaii.museum\0"
+"shiriuchi.hokkaido.jp\0c.cdn77.org\0"
+"soni.nara.jp\0gs.nl.no\0"
+"\xe5\x85\xac\xe5\x8f\xb8.hk\0toyota.aichi.jp\0gu.us\0"
+"trentino-sued-tirol.it\0"
+"bungotakada.oita.jp\0"
+"england.museum\0x443.pw\0"
+"camera\0gal\0iserv.dev\0"
+"york.museum\0"
+"rochester.museum\0nym.ec\0"
+"ashiya.hyogo.jp\0sinaapp.com\0"
+"gangwon.kr\0gap\0"
+"bestbuy\0"
+"americanantiques.museum\0"
+"hotel.hu\0"
+"uchinada.ishikawa.jp\0"
+"dyndns-ip.com\0"
+"makurazaki.kagoshima.jp\0"
+"scotland.museum\0"
+"ogori.fukuoka.jp\0gay\0"
+"yoshino.nara.jp\0"
+"frl\0"
+"lib.id.us\0"
+"oracle\0"
+"ac\0\xe7\xa7\xbb\xe5\x8a\xa8\0to.work\0"
+"ad\0serveminecraft.net\0"
+"ae\0hamamatsu.shizuoka.jp\0"
+"af\0cesenaforl\xc3\xac.it\0"
+"ag\0"
+"rsc.cdn77.org\0"
"ai\0"
-"tonami.toyama.jp\0"
-"biz.ua\0"
-"al\0kanuma.tochigi.jp\0biz.tr\0"
-"am\0seljord.no\0ne.ug\0"
-"biz.tt\0"
-"ao\0creation.museum\0"
-"otaru.hokkaido.jp\0ne.tz\0"
-"aq\0ba\0stj\xc3\xb8rdalshalsen.no\0"
-"ar\0bb\0schaeffler\0"
-"as\0"
+"williamhill\0"
+"berg.no\0"
+"al\0racing\0logoip.de\0"
+"am\0himeji.hyogo.jp\0"
+"ao\0"
+"aq\0ba\0romsa.no\0"
+"ar\0bb\0satsumasendai.kagoshima.jp\0"
+"passenger-association.aero\0as\0"
"at\0"
-"au\0be\0jewelry.museum\0"
+"au\0be\0phoenix.museum\0"
"bf\0"
-"aw\0bg\0grozny.ru\0"
-"ax\0bh\0gob.gt\0"
-"bi\0ne.us\0"
-"az\0bj\0"
-"*.yokohama.jp\0matsumae.hokkaido.jp\0"
-"bm\0"
-"bn\0webhop.net\0"
-"bo\0of.by\0"
-"ca\0"
-"br\0gob.hn\0"
-"bs\0cc\0"
-"bt\0cd\0szczytno.pl\0"
-"bv\0cf\0"
-"bw\0cg\0"
-"ch\0vall\xc3\xa9""e-aoste.it\0biz.vn\0"
-"by\0ci\0"
-"bz\0"
-"k12.gu.us\0"
-"cl\0"
-"cm\0c.cdn77.org\0"
+"aw\0bg\0"
+"ax\0bh\0uk.eu.org\0"
+"bi\0cloudcontrolled.com\0"
+"az\0bj\0chikujo.fukuoka.jp\0"
+"moriya.ibaraki.jp\0"
+"bm\0medecin.km\0"
+"bn\0"
+"bo\0tunk.org\0"
+"computer.museum\0microsoft\0nym.gr\0"
+"ca\0aero.tt\0gdn\0"
+"br\0"
+"bs\0cc\0onred.one\0"
+"bt\0cd\0gea\0"
+"ftr\0"
+"bv\0cf\0casadelamoneda.museum\0"
+"bw\0cg\0yokawa.hyogo.jp\0nym.gy\0"
+"ch\0"
+"by\0ci\0panama.museum\0nym.hk\0"
+"bz\0k12.vt.us\0"
+"dnsfor.me\0"
+"cl\0delta\0"
+"cm\0valle.no\0"
"cn\0"
-"co\0java\0"
-"tempioolbia.it\0"
-"alesund.no\0"
-"cr\0fukuyama.hiroshima.jp\0"
-"cu\0de\0farmequipment.museum\0"
-"cv\0iruma.saitama.jp\0"
-"cw\0"
-"cx\0seto.aichi.jp\0"
-"cy\0ushuaia.museum\0"
-"cz\0dj\0"
-"dk\0games\0"
-"mobara.chiba.jp\0"
-"dm\0gjerstad.no\0naamesjevuemie.no\0"
-"do\0lur\xc3\xb8y.no\0is-a-green.com\0"
-"tools\0"
+"co\0"
+"properties\0"
+"rakkestad.no\0fun\0enonic.io\0"
+"cr\0"
+"workinggroup.aero\0aero.mv\0nym.ie\0"
+"cu\0de\0moto\0"
+"cv\0"
+"cw\0sherbrooke.museum\0"
+"cx\0"
+"cy\0"
+"cz\0dj\0hachioji.tokyo.jp\0"
+"dk\0"
+"bas.it\0read\0"
+"dm\0hemsedal.no\0bingo\0"
+"k12.il.us\0"
+"do\0chosei.chiba.jp\0"
+"bykle.no\0"
"ec\0"
-"okinawa.jp\0"
-"ee\0vefsn.no\0k12.tx.us\0"
-"eg\0"
-"tourism.pl\0"
-"dz\0kin.okinawa.jp\0"
-"museumcenter.museum\0valley.museum\0bingo\0"
-"baseball\0"
-"noticias.bo\0"
-"inagawa.hyogo.jp\0abu.yamaguchi.jp\0global.ssl.fastly.net\0"
-"co.com\0"
-"takahama.aichi.jp\0"
-"kayabe.hokkaido.jp\0"
+"hitachiota.ibaraki.jp\0"
+"ee\0"
+"eg\0go.dyndns.org\0"
+"to.it\0"
+"dz\0"
+"pu.it\0uwu.ai\0"
+"aarp\0"
+"lucania.it\0from-wi.com\0"
+"!www.ck\0oceanographique.museum\0"
"es\0"
-"et\0school\0"
+"et\0"
"eu\0"
+"usr.cloud.muni.cz\0"
+"iraq.museum\0nordreisa.no\0"
"fi\0"
-"aikawa.kanagawa.jp\0"
-"fm\0"
-"fo\0"
-"ga\0"
+"fm\0fg.it\0"
+"fo\0tomi.nagano.jp\0ventures\0nym.la\0"
+"ga\0nym.lc\0"
"fr\0gb\0"
-"dep.no\0media\0"
+"jdevcloud.com\0"
"gd\0"
"ge\0"
-"gf\0rm.it\0*.transurl.nl\0"
-"gg\0biz.zm\0"
-"gh\0"
-"gi\0i.ng\0gs.of.no\0"
-"gx.cn\0gl\0ouchi.saga.jp\0"
-"gm\0"
-"adm.br\0gn\0"
-"gp\0"
-"recreation.aero\0gq\0lib.dc.us\0fitness\0s3.dualstack.ap-northeast-1.amazonaws.com\0mypets.ws\0"
-"gr\0saga.jp\0matsubushi.saitama.jp\0"
-"gs\0\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0"
-"gt\0trentino-aadige.it\0lukow.pl\0"
-"gu\0cc.ut.us\0"
-"to.gov.br\0"
-"gw\0"
-"miyazu.kyoto.jp\0"
-"gy\0"
-"hk\0elvendrell.museum\0mel\xc3\xb8y.no\0"
-"gob.mx\0"
-"hm\0gob.ni\0hadsel.no\0"
-"hn\0aridagawa.wakayama.jp\0"
-"ubank\0s3.dualstack.eu-west-3.amazonaws.com\0"
-"kep.tr\0coach\0fan\0"
-"wpdevcloud.com\0cyon.site\0"
-"hr\0saarland\0dynathome.net\0"
-"andoy.no\0"
-"ht\0id\0akdn\0"
+"gf\0hyllestad.no\0"
+"gg\0nym.li\0"
+"gh\0nym.kz\0"
+"gi\0narashino.chiba.jp\0"
+"kitami.hokkaido.jp\0"
+"o.bg\0gl\0molde.no\0r\xc3\xa5""de.no\0fyi\0"
+"gm\0tjeldsund.no\0"
+"gn\0tondabayashi.osaka.jp\0"
+"gp\0tateshina.nagano.jp\0"
+"5.bg\0gq\0embetsu.hokkaido.jp\0imamat\0"
+"gr\0nym.lt\0"
+"gs\0kudoyama.wakayama.jp\0nym.lu\0nym.me\0"
+"gt\0showa.fukushima.jp\0botanicgarden.museum\0"
+"gu\0amber.museum\0"
+"wa.edu.au\0ringerike.no\0"
+"gw\0sex.hu\0sakaki.nagano.jp\0gift\0"
+"coal.museum\0"
+"gy\0nj.us\0"
+"misato.wakayama.jp\0muenchen.museum\0"
+"hk\0"
+"nym.mn\0"
+"hm\0marker.no\0"
+"hn\0"
+"naganohara.gunma.jp\0"
+"tamano.okayama.jp\0ivgu.no\0"
+"hr\0mosvik.no\0"
+"ht\0id\0otoineppu.hokkaido.jp\0nordkapp.no\0slupsk.pl\0rj.leg.br\0"
"hu\0ie\0"
-"oarai.ibaraki.jp\0futuremailing.at\0"
-"bnr.la\0"
-"higashi.okinawa.jp\0i.ph\0winb.gov.pl\0"
-"il\0for-more.biz\0"
-"im\0"
-"in\0matsumoto.kagoshima.jp\0"
-"io\0from-al.com\0"
-"naka.hiroshima.jp\0"
+"prd.fr\0mombetsu.hokkaido.jp\0nym.mx\0"
+"sannohe.aomori.jp\0"
+"*.kitakyushu.jp\0"
+"iki.fi\0"
+"ogi.saga.jp\0"
+"il\0"
+"im\0\xe6\x84\x9b\xe7\x9f\xa5.jp\0"
+"in\0"
+"io\0"
+"aip.ee\0ranzan.saitama.jp\0karm\xc3\xb8y.no\0"
"iq\0"
-"ir\0cri.nz\0"
-"is\0oldnavy\0"
-"it\0"
-"je\0gob.pa\0togliatti.su\0"
-"varoy.no\0is-a-bruinsfan.org\0"
-"watarai.mie.jp\0"
-"gob.pe\0"
-"news\0"
-"jo\0gob.pk\0"
+"ir\0jaworzno.pl\0marketing\0mayfirst.info\0"
+"is\0kvafjord.no\0"
+"it\0kuriyama.hokkaido.jp\0wafflecell.com\0"
+"je\0"
+"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0shimofusa.chiba.jp\0gle\0nym.nz\0"
+"alipay\0"
+"lib.gu.us\0black\0"
+"visa\0"
+"jo\0lib.co.us\0tatamotors\0"
"jp\0"
-"floro.no\0"
-"radoy.no\0esq\0"
-"treviso.it\0katori.chiba.jp\0toga.toyama.jp\0freeboxos.fr\0"
+"select\0"
+"ama.shimane.jp\0katsushika.tokyo.jp\0saltdal.no\0nym.pe\0"
+"namsos.no\0"
"ke\0"
+"swiss\0googlecode.com\0temp-dns.com\0"
"kg\0"
-"furudono.fukushima.jp\0"
-"ki\0tree.museum\0dynalias.org\0"
-"mobi.gp\0trentinoa-adige.it\0toba.mie.jp\0ooshika.nagano.jp\0nagai.yamagata.jp\0"
-"koshu.yamanashi.jp\0"
-"km\0"
-"kn\0club\0next\0blogspot.co.at\0"
-"folldal.no\0lib.ma.us\0"
-"kp\0"
-"la\0"
-"kr\0lb\0"
-"lc\0naturbruksgymn.se\0"
-"shonai.yamagata.jp\0"
-"\xe6\xbe\xb3\xe9\x96\x80\0"
-"kw\0i.se\0"
-"haboro.hokkaido.jp\0"
+"coffee\0"
+"hitachiomiya.ibaraki.jp\0ki\0r\xc3\xb8yrvik.no\0"
+"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0tonaki.okinawa.jp\0corvette.museum\0"
+"bozen-s\xc3\xbc""dtirol.it\0*.uberspace.de\0"
+"km\0naturhistorisches.museum\0"
+"kn\0"
+"sassari.it\0bentley\0"
+"kp\0from-az.net\0"
+"iheya.okinawa.jp\0la\0"
+"kr\0lb\0gmo\0nym.pt\0"
+"lc\0"
+"shiksha\0ciscofreak.com\0mypsx.net\0"
+"kw\0is-found.org\0"
"ky\0li\0"
-"chikuma.nagano.jp\0kz\0"
-"lk\0motorcycles\0"
-"cc.nv.us\0"
-"kawamata.fukushima.jp\0nagasu.kumamoto.jp\0"
-"ma\0protonet.io\0"
-"friulivgiulia.it\0lr\0"
+"bologna.it\0kz\0"
+"kamisu.ibaraki.jp\0lk\0gmx\0"
+"minamioguni.kumamoto.jp\0"
+"ma\0"
+"lr\0"
"ls\0mc\0"
-"lt\0md\0"
-"lu\0me\0\xc4\x8d\xc3\xa1hcesuolo.no\0eus\0"
-"hachioji.tokyo.jp\0lv\0"
-"mg\0alpha-myqnapcloud.com\0"
-"takasu.hokkaido.jp\0mh\0"
+"anpachi.gifu.jp\0lt\0md\0ambulance.museum\0"
+"lu\0me\0"
+"lv\0beardu.no\0"
+"mg\0"
+"kosaka.akita.jp\0mh\0"
"ly\0"
-"soccer\0stcgroup\0"
-"mk\0flakstad.no\0k12.vt.us\0"
-"ml\0"
-"ssl.origin.cdn77-secure.org\0"
-"cesena-forl\xc3\xac.it\0mn\0"
-"mo\0eidfjord.no\0\xd0\xbe\xd1\x80\xd0\xb3\0"
-"mp\0dabur\0"
-"mq\0na\0edu.eu.org\0tselinograd.su\0"
-"anpachi.gifu.jp\0kamakura.kanagawa.jp\0mr\0"
-"ms\0nc\0myqnapcloud.com\0"
-"fermo.it\0mt\0"
-"mu\0ne\0of.no\0"
-"ranzan.saitama.jp\0mv\0nf\0"
-"mw\0ng\0"
-"mx\0"
-"z.bg\0my\0ni\0is-into-anime.com\0"
-"asahikawa.hokkaido.jp\0mz\0gob.sv\0"
+"mk\0viva\0"
+"ml\0reit\0"
+"mail.pl\0nym.ro\0"
+"mn\0pccw\0"
+"mo\0"
+"mp\0"
+"prd.km\0mq\0na\0"
+"bolt.hu\0mr\0goo\0"
+"ms\0nc\0gop\0"
+"hakuba.nagano.jp\0mt\0from-oh.com\0"
+"mu\0ne\0"
+"mv\0nf\0"
+"mw\0ng\0got\0"
+"barreau.bj\0mx\0"
+"gov\0trentinoalto-adige.it\0my\0ni\0folldal.no\0vivo\0nym.sk\0"
+"fujishiro.ibaraki.jp\0mz\0"
"nl\0"
-"miyama.fukuoka.jp\0yanaizu.fukushima.jp\0"
-"no\0from-il.com\0"
-"nagano.nagano.jp\0makeup\0"
-"aizumi.tokushima.jp\0nr\0nextdirect\0"
-"yokawa.hyogo.jp\0yoshino.nara.jp\0"
-"nu\0"
-"tos.it\0"
-"from-fl.com\0"
-"nz\0trafficplex.cloud\0"
-"sardegna.it\0oshima.yamaguchi.jp\0"
-"masoy.no\0om\0"
-"dnsdojo.net\0"
-"takahagi.ibaraki.jp\0"
-"pa\0"
-"jl.cn\0"
-"national.museum\0bygland.no\0"
-"shimoichi.nara.jp\0lebork.pl\0"
-"pe\0"
+"technology.museum\0"
+"kyoto.jp\0"
+"no\0"
+"jefferson.museum\0"
+"sp.it\0nr\0"
+"nym.su\0"
+"naturbruksgymn.se\0app.os.stg.fedoraproject.org\0"
+"skaun.no\0nu\0able\0"
+"ind.br\0latina.it\0nym.sx\0"
+"olecko.pl\0"
+"aurskog-holand.no\0nz\0"
+"prd.mg\0"
+"sakaiminato.tottori.jp\0"
+"om\0"
+"sex.pl\0"
+"kunstunddesign.museum\0gotdns.org\0"
+"shizuoka.shizuoka.jp\0"
+"motegi.tochigi.jp\0pa\0"
+"nationalfirearms.museum\0"
+"pe\0nym.tw\0"
"pf\0"
-"fosnes.no\0syno-ds.de\0"
-"chitose.hokkaido.jp\0ph\0"
-"quebec.museum\0aurland.no\0gob.ve\0money\0"
-"pk\0"
-"koya.wakayama.jp\0pl\0financial\0"
-"pm\0"
-"shoo.okayama.jp\0pn\0"
-"sogne.no\0"
-"qa\0ut.us\0we.bs\0"
-"taiki.mie.jp\0taiwa.miyagi.jp\0pr\0"
-"ps\0"
-"pt\0"
-"basel.museum\0"
-"ulsan.kr\0fit\0"
-"pw\0"
-"py\0"
-"\xe6\x9d\xb1\xe4\xba\xac.jp\0"
-"shinto.gunma.jp\0gwangju.kr\0"
-"org.ac\0"
-"wif.gov.pl\0"
-"org.ae\0"
-"org.af\0pz.it\0"
-"org.ag\0lib.sd.us\0"
-"yaizu.shizuoka.jp\0"
-"org.ai\0"
+"kariya.aichi.jp\0sasebo.nagasaki.jp\0ph\0fastpanel.direct\0"
+"og.ao\0an.it\0pk\0"
+"sa.au\0kawai.iwate.jp\0pl\0"
+"pm\0report\0"
+"iwade.wakayama.jp\0pn\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
+"onion\0direct.quickconnect.to\0"
+"urasoe.okinawa.jp\0mk.ua\0"
+"qa\0"
+"kuzumaki.iwate.jp\0pr\0hbo\0rogers\0"
+"ps\0wy.us\0total\0"
+"chiryu.aichi.jp\0pt\0"
+"bugatti\0"
+"nakatombetsu.hokkaido.jp\0toga.toyama.jp\0"
+"ishikari.hokkaido.jp\0mup.gov.pl\0pw\0"
+"jewish.museum\0py\0"
+"piw.gov.pl\0onthewifi.com\0"
+"catering.aero\0lorenskog.no\0is-certified.com\0"
+"lavagis.no\0"
+"cloudns.biz\0"
+"preservation.museum\0sunndal.no\0"
+"r\xc3\xb8""d\xc3\xb8y.no\0"
"re\0"
-"org.al\0"
-"kaminokawa.tochigi.jp\0"
-"kyotamba.kyoto.jp\0fastlylb.net\0"
-"org.ba\0"
-"org.ar\0org.bb\0"
-"\xe6\xbe\xb3\xe9\x97\xa8\0blogspot.co.id\0"
-"org.au\0ro\0"
-"tysv\xc3\xa6r.no\0sa\0"
-"org.bh\0ashiya.fukuoka.jp\0sb\0"
-"org.bi\0kopervik.no\0rs\0sc\0beauty\0"
-"org.az\0sd\0"
-"ru\0se\0fastly-terrarium.com\0"
-"balsan.it\0blogspot.co.il\0"
-"org.bm\0archaeological.museum\0trustee.museum\0rw\0sg\0"
-"org.bn\0toki.gifu.jp\0kahoku.ishikawa.jp\0yoshikawa.saitama.jp\0sh\0"
-"org.bo\0si\0"
-"kaszuby.pl\0sj\0on-the-web.tv\0"
-"sk\0"
-"org.br\0mielno.pl\0sl\0"
-"org.bs\0sm\0black\0"
-"org.bt\0sn\0"
-"so\0"
-"df.gov.br\0sn.cn\0"
-"org.bw\0"
-"sr\0"
-"org.ci\0tc\0"
-"org.bz\0ms.it\0st\0td\0"
-"b\xc3\xa1jddar.no\0su\0"
-"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0asakuchi.okayama.jp\0sv\0tf\0"
-"karmoy.no\0lier.no\0tg\0redumbrella\0"
-"org.cn\0forl\xc3\xac""cesena.it\0sx\0th\0"
-"org.co\0sy\0"
-"slupsk.pl\0sz\0tj\0"
-"tk\0fly\0"
-"tl\0"
-"tm\0brasilia.me\0"
-"ven.it\0shinagawa.tokyo.jp\0atm.pl\0tn\0"
-"org.cu\0to\0boutique\0"
-"org.cw\0ua\0"
-"shiga.jp\0gose.nara.jp\0tr\0"
-"org.cy\0is-a-personaltrainer.com\0"
-"tt\0olayan\0for-better.biz\0"
-"hakodate.hokkaido.jp\0jeonbuk.kr\0tv\0"
-"org.dm\0tw\0ug\0fedorapeople.org\0"
-"org.do\0nv.us\0"
-"tz\0hair\0"
-"losangeles.museum\0uk\0"
-"shimoji.okinawa.jp\0"
-"org.ec\0berg.no\0b\xc3\xb8.nordland.no\0"
-"org.ee\0"
-"org.eg\0va\0"
-"oto.fukuoka.jp\0ms.kr\0"
-"us\0vc\0"
-"org.dz\0sardinia.it\0trentins\xc3\xbc""dtirol.it\0kyotanabe.kyoto.jp\0"
-"ve\0whoswho\0home-webserver.de\0"
+"shop.ht\0"
+"shop.hu\0"
+"minamiminowa.nagano.jp\0"
+"sa.cr\0virginia.museum\0"
+"sic.it\0"
+"lubin.pl\0"
+"rent\0"
+"mad.museum\0"
+"jpmorgan\0"
+"ro\0"
+"logistics.aero\0kalisz.pl\0"
+"kamisunagawa.hokkaido.jp\0sa\0"
+"sb\0"
+"tmp.br\0rs\0sc\0"
+"gs.cn\0stavern.no\0sd\0"
+"catanzaro.it\0gotsu.shimane.jp\0ru\0se\0"
+"rw\0sg\0"
+"sh\0"
+"si\0lib.mn.us\0"
+"sj\0"
+"goiania.br\0sk\0"
+"nakano.nagano.jp\0sm\xc3\xb8la.no\0sl\0"
+"sm\0"
+"sn\0"
+"so\0from-mn.com\0"
+"midtre-gauldal.no\0"
+"kumamoto.jp\0"
+"wiki.bo\0sr\0s3-website-ap-northeast-1.amazonaws.com\0"
+"ss\0tc\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"st\0td\0"
+"wiki.br\0su\0"
+"nishiaizu.fukushima.jp\0sv\0tf\0"
+"tg\0builders\0"
+"ind.gt\0iki.nagasaki.jp\0sx\0th\0"
+"sy\0"
+"school.na\0sz\0tj\0"
+"tk\0"
+"tl\0surgery\0"
+"shimada.shizuoka.jp\0tm\0"
+"\xe4\xb8\x89\xe9\x87\x8d.jp\0tn\0"
+"to\0soc.srcf.net\0"
+"sweden.museum\0leirfjord.no\0doesntexist.com\0"
+"newjersey.museum\0ua\0"
+"oxford.museum\0tr\0"
+"tt\0"
+"kitaura.miyazaki.jp\0"
+"tv\0"
+"humanities.museum\0tw\0ug\0"
+"stokke.no\0tz\0"
+"stockholm.museum\0uk\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0"
+"\xe9\xa6\x99\xe5\xb7\x9d.jp\0"
+"va\0"
+"medecin.fr\0ind.in\0"
+"yugawara.kanagawa.jp\0kamiizumi.saitama.jp\0school.nz\0us\0vc\0"
+"sakyo.kyoto.jp\0kanuma.tochigi.jp\0ve\0"
+"suwa.nagano.jp\0ogimi.okinawa.jp\0kvam.no\0gifts\0"
"vg\0"
-"sos.pl\0"
-"uy\0vi\0"
-"uz\0freetls.fastly.net\0"
-"mysecuritycamera.com\0"
-"ptplus.fit\0"
-"org.es\0"
-"org.et\0vn\0"
-"foo\0"
-"kasugai.aichi.jp\0"
-"vu\0"
-"wf\0"
-"cc.ms.us\0cc.nc.us\0mypep.link\0"
-"smola.no\0"
-"minamiawaji.hyogo.jp\0kami.miyagi.jp\0fox\0"
-"fie.ee\0"
-"org.ge\0mymailer.com.tw\0"
-"niyodogawa.kochi.jp\0"
-"org.gg\0"
-"org.gh\0anan.nagano.jp\0ac.leg.br\0"
-"org.gi\0ws\0lego\0"
-"org.gl\0cloud\0"
+"trentin-s\xc3\xbc""d-tirol.it\0uy\0vi\0gb.net\0"
+"uz\0"
+"iwate.jp\0"
+"k12.tn.us\0"
+"business\0"
+"vn\0"
+"pomorze.pl\0"
+"\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0"
+"arezzo.it\0narviika.no\0"
+"kunitomi.miyazaki.jp\0vu\0"
+"toyotomi.hokkaido.jp\0ochi.kochi.jp\0wf\0"
+"toyota\0"
+"\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0is-with-theband.com\0azurewebsites.net\0"
+"rest\0"
+"shichikashuku.miyagi.jp\0redirectme.net\0"
+"ibestad.no\0"
+"home-webserver.de\0"
+"cc.id.us\0ws\0*.vps.myjino.ru\0"
+"from-vt.com\0"
+"citadel\0filegear-de.me\0"
+"honjyo.akita.jp\0"
+"nomi.ishikawa.jp\0haugesund.no\0"
+"kitaakita.akita.jp\0hiv\0"
+"o.se\0"
+"sa.it\0\xe5\xa4\xa7\xe5\x88\x86.jp\0ind.kw\0"
+"expert\0"
+"tomisato.chiba.jp\0kariwa.niigata.jp\0\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0logoip.com\0"
+"og.it\0"
+"chuo.osaka.jp\0"
+"yamashina.kyoto.jp\0histoire.museum\0rr.leg.br\0"
+"zt.ua\0"
+"\xc3\xb8stre-toten.no\0"
+"midori.chiba.jp\0"
+"16-b.it\0"
+"*.ex.ortsinfo.at\0"
+"otama.fukushima.jp\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0"
+"plc.co.im\0"
+"ibaraki.osaka.jp\0"
+"museet.museum\0zone\0"
+"sumida.tokyo.jp\0"
+"yt\0"
+"\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
+"hkt\0"
+"boxfuse.io\0"
+"tele.amune.org\0"
+"zm\0"
+"tatsuno.nagano.jp\0"
+"agr.br\0coastaldefence.museum\0"
+"ozora.hokkaido.jp\0salat.no\0dontexist.com\0"
+"progressive\0rs.leg.br\0sc.leg.br\0"
+"ostre-toten.no\0"
+"zw\0myftp.biz\0"
+"takaishi.osaka.jp\0hareid.no\0"
+"hasami.nagasaki.jp\0"
+"dyndns-server.com\0"
+"badaddja.no\0"
+"group.aero\0"
+"station.museum\0"
+"onga.fukuoka.jp\0"
+"auction\0"
+"economia.bo\0tachikawa.tokyo.jp\0"
+"stpetersburg.museum\0"
+"gloppen.no\0"
+"hol.no\0"
+"iizuka.fukuoka.jp\0"
+"geometre-expert.fr\0chijiwa.nagasaki.jp\0"
+"name\0\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
+"gd.cn\0"
+"tas.au\0"
+"iwakuni.yamaguchi.jp\0"
+"s3-website-us-east-1.amazonaws.com\0"
+"point2this.com\0"
+"cinema.museum\0gs.aa.no\0"
+"ba.leg.br\0"
+"lenvik.no\0"
+"isteingeek.de\0"
+"gobo.wakayama.jp\0"
+"flekkefjord.no\0"
+"country\0"
+"agents.aero\0"
+"center.museum\0"
+"nanao.ishikawa.jp\0"
+"is-a-therapist.com\0"
+"nationwide\0"
+"barsyonline.co.uk\0"
+"hot\0"
+"shiftedit.io\0"
+"desa.id\0kizu.kyoto.jp\0how\0tiaa\0"
+"yamagata.yamagata.jp\0"
+"mantova.it\0"
+"fyresdal.no\0"
+"tysfjord.no\0"
+"guernsey.museum\0mandal.no\0imdb\0cbg.ru\0"
+"direct\0"
+"tabuse.yamaguchi.jp\0"
+"jewishart.museum\0zhytomyr.ua\0"
+"poltava.ua\0"
+"cern\0"
+"lodi.it\0uklugs.org\0"
+"rec.br\0"
+"molise.it\0zarow.pl\0"
+"br.com\0"
+"from-ok.com\0"
+"kv\xc3\xa6""fjord.no\0"
+"chihayaakasaka.osaka.jp\0alpha-myqnapcloud.com\0"
+"shikabe.hokkaido.jp\0mitsue.nara.jp\0cc.sc.us\0"
+"higashikagawa.kagawa.jp\0"
+"k12.mi.us\0"
+"rec.co\0ibm\0"
+"indigena.bo\0"
+"ind.tn\0cc.ny.us\0is-a-candidate.org\0"
+"rn.leg.br\0"
+"ice\0"
+"bihoro.hokkaido.jp\0cc.gu.us\0"
+"s3.dualstack.us-east-2.amazonaws.com\0"
+"k12.as.us\0"
+"is-a-painter.com\0"
+"cremona.it\0kuchinotsu.nagasaki.jp\0h\xc3\xb8ylandet.no\0neustar\0"
+"est.pr\0noho.st\0"
+"aquarium.museum\0"
+"icu\0"
+"balsan-s\xc3\xbc""dtirol.it\0"
+"nanbu.yamanashi.jp\0limited\0"
+"wloclawek.pl\0"
+"trentinos-tirol.it\0"
+"nachikatsuura.wakayama.jp\0gwiddle.co.uk\0"
+"is-a-caterer.com\0"
+"loginto.me\0"
+"kadoma.osaka.jp\0agric.za\0"
+"ro.leg.br\0"
+"mydatto.com\0"
+"bz.it\0\xe5\x95\x86\xe5\x9f\x8e\0"
+"kr\xc3\xa5""anghke.no\0dynv6.net\0"
+"kiyokawa.kanagawa.jp\0"
+"pagefrontapp.com\0"
+"alfaromeo\0cloudcontrolapp.com\0"
+"km.ua\0"
+"adac\0pantheonsite.io\0"
+"homedepot\0"
+"qc.ca\0trolley.museum\0"
+"tsushima.nagasaki.jp\0satx.museum\0"
+"ifm\0"
+"am.leg.br\0"
+"izena.okinawa.jp\0pilots.museum\0"
+"komono.mie.jp\0"
+"shop.th\0"
+"society.museum\0"
+"tm.cy\0miki.hyogo.jp\0glug.org.uk\0"
+"kembuchi.hokkaido.jp\0nakagawa.nagano.jp\0"
+"goodyear\0"
+"is-a-hard-worker.com\0"
+"mx.na\0lib.or.us\0"
+"minamiyamashiro.kyoto.jp\0aguni.okinawa.jp\0iron.museum\0"
+"gokase.miyazaki.jp\0"
+"kibichuo.okayama.jp\0"
+"navy\0"
+"higashikagura.hokkaido.jp\0"
+"dyn-berlin.de\0"
+"yasaka.nagano.jp\0"
+"from-ar.com\0"
+"s3-website.ap-northeast-2.amazonaws.com\0ddnsfree.com\0"
+"slz.br\0hellas.museum\0"
+"aure.no\0lib.az.us\0"
+"tsuno.miyazaki.jp\0"
+"niikappu.hokkaido.jp\0m\xc4\x81ori.nz\0"
+"from-wv.com\0"
+"jorpeland.no\0"
+"shop.ro\0"
+"tm.fr\0wzmiuw.gov.pl\0"
+"git-repos.de\0"
+"andoy.no\0buzz\0\xe5\x9c\xa8\xe7\xba\xbf\0"
+"ecn.br\0"
+"mimata.miyazaki.jp\0"
+"githubusercontent.com\0"
+"ma.gov.br\0"
+"immo\0"
+"vestnes.no\0style\0ddns.me\0"
+"\xe5\xb9\xbf\xe4\xb8\x9c\0"
+"dyndns-home.com\0"
+"shop.pl\0"
+"def.br\0"
+"air.museum\0"
+"quest\0"
+"tm.hu\0\xe7\xa6\x8f\xe5\xb3\xb6.jp\0"
+"g12.br\0achi.nagano.jp\0r\xc3\xa1isa.no\0myqnapcloud.com\0"
+"cc.nj.us\0"
+"louvre.museum\0\xe5\xa8\xb1\xe4\xb9\x90\0"
+"newholland\0"
+"sauda.no\0"
+"shiki.saitama.jp\0ap.leg.br\0"
+"cancerresearch\0"
+"\xe5\xae\xae\xe5\xb4\x8e.jp\0"
+"marche.it\0rec.nf\0"
+"oshu.iwate.jp\0hannan.osaka.jp\0bearalv\xc3\xa1hki.no\0"
+"\xe6\xbb\x8b\xe8\xb3\x80.jp\0"
+"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0kuroishi.aomori.jp\0maori.nz\0"
+"aogashima.tokyo.jp\0orkdal.no\0"
+"mi.it\0luxury\0"
+"misaki.osaka.jp\0"
+"from-il.com\0"
+"sand\xc3\xb8y.no\0"
+"inc\0"
+"ee.eu.org\0mypep.link\0"
+"rotorcraft.aero\0north-kazakhstan.su\0"
+"ing\0eu-west-3.elasticbeanstalk.com\0*.advisor.ws\0"
+"fe.it\0bushey.museum\0blogsite.xyz\0enterprisecloud.nu\0"
+"sites.static.land\0user.srcf.net\0"
+"ink\0is-a-nascarfan.com\0"
+"is-very-sweet.org\0"
+"ohtawara.tochigi.jp\0tm.km\0\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0"
+"homeip.net\0"
+"maebashi.gunma.jp\0"
+"int\0"
+"ritto.shiga.jp\0"
+"m.bg\0"
+"lebesby.no\0randaberg.no\0"
+"ntr.br\0"
+"nakasatsunai.hokkaido.jp\0"
+"taketomi.okinawa.jp\0"
+"3.bg\0gosen.niigata.jp\0"
+"nankoku.kochi.jp\0"
+"grp.lk\0"
+"wakayama.jp\0"
+"tm.mc\0hughes\0"
+"nh.us\0"
+"sn.cn\0yatomi.aichi.jp\0tm.mg\0"
+"tips\0"
+"zaporizhzhia.ua\0"
+"copenhagen.museum\0palace.museum\0lpages.co\0"
+"vaporcloud.io\0"
+"qld.edu.au\0chiyoda.gunma.jp\0erimo.hokkaido.jp\0"
+"santacruz.museum\0"
+"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0toda.saitama.jp\0"
+"cloudera.site\0se.leg.br\0"
+"reggio-calabria.it\0"
+"feedback\0"
+"eu.int\0barsy.mobi\0"
+"inashiki.ibaraki.jp\0"
+"exchange.aero\0rec.ro\0philips\0"
+"tm.no\0"
+"kagawa.jp\0hino.tottori.jp\0\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"entertainment.aero\0ujitawara.kyoto.jp\0"
+"gyeongnam.kr\0orkanger.no\0"
+"shijonawate.osaka.jp\0applicationcloud.io\0"
+"takashima.shiga.jp\0verm\xc3\xb6gensberater\0"
+"franziskaner.museum\0"
+"us.org\0"
+"nsupdate.info\0"
+"capital\0fuettertdasnetz.de\0"
+"sanuki.kagawa.jp\0niigata.niigata.jp\0lib.ak.us\0"
+"filegear-jp.me\0"
+"jcb\0"
+"steam.museum\0kaufen\0chimkent.su\0"
+"moskenes.no\0"
+"numazu.shizuoka.jp\0engineering\0"
+"odate.akita.jp\0kazimierz-dolny.pl\0"
+"kimitsu.chiba.jp\0"
+"tm.pl\0"
+"vevelstad.no\0"
+"recipes\0"
+"info\0funagata.yamagata.jp\0asnes.no\0jcp\0"
+"judygarland.museum\0"
+"ist\0"
+"tours\0"
+"loabat.no\0"
+"uwajima.ehime.jp\0kpmg\0"
+"usuki.oita.jp\0"
+"flakstad.no\0"
+"futaba.fukushima.jp\0beeldengeluid.museum\0"
+"*.sch.uk\0"
+"shirakawa.gifu.jp\0k12.vi.us\0"
+"cc.wy.us\0forgot.her.name\0"
+"rec.ve\0"
+"monzaedellabrianza.it\0mifune.kumamoto.jp\0"
+"vibovalentia.it\0soeda.fukuoka.jp\0itv\0"
+"nokia\0"
+"est-mon-blogueur.com\0"
+"nakamichi.yamanashi.jp\0"
+"uozu.toyama.jp\0"
+"tm.ro\0"
+"is-a-teacher.com\0"
+"k12.ga.us\0"
+"kota.aichi.jp\0"
+"ome.tokyo.jp\0"
+"tm.se\0"
+"kanonji.kagawa.jp\0"
+"messina.it\0"
+"media.aero\0"
+"s3-us-east-2.amazonaws.com\0mein-iserv.de\0"
+"beppu.oita.jp\0ito.shizuoka.jp\0portal.museum\0vardo.no\0"
+"barrel-of-knowledge.info\0"
+"kashiwara.osaka.jp\0royrvik.no\0"
+"ot.it\0pd.it\0"
+"honjo.saitama.jp\0"
+"asahi.mie.jp\0"
+"tanabe.wakayama.jp\0rhcloud.com\0"
+"\xe5\x85\xb5\xe5\xba\xab.jp\0spreadbetting\0"
+"ribeirao.br\0"
+"of.football\0"
+"m\xc3\xa5s\xc3\xb8y.no\0mi.th\0"
+"al.it\0ragusa.it\0nanporo.hokkaido.jp\0"
+"\xc3\xb8rsta.no\0"
+"numata.hokkaido.jp\0"
+"jampa.br\0"
+"matsuda.kanagawa.jp\0sandnes.no\0"
+"santafe.museum\0"
+"toyone.aichi.jp\0"
+"mytuleap.com\0"
+"nu.ca\0"
+"mi.us\0"
+"higashiyoshino.nara.jp\0jio\0linkyard-cloud.ch\0"
+"\xe5\x80\x8b\xe4\xba\xba.hk\0"
+"katowice.pl\0"
+"hiratsuka.kanagawa.jp\0royken.no\0"
+"\xe5\x8f\xb0\xe6\xb9\xbe\0"
+"tara.saga.jp\0"
+"termez.su\0"
+"writesthisblog.com\0barsy.support\0"
+"kasai.hyogo.jp\0*.compute.amazonaws.com\0"
+"shichinohe.aomori.jp\0sande.more-og-romsdal.no\0"
+"insure\0"
+"ha.cn\0vgs.no\0"
+"varese.it\0incheon.kr\0archaeological.museum\0kinghost.net\0"
+"yokkaichi.mie.jp\0"
+"nakagyo.kyoto.jp\0skjervoy.no\0fhapp.xyz\0"
+"holt\xc3\xa5len.no\0krym.ua\0"
+"woodside\0"
+"mutsu.aomori.jp\0academy.museum\0farmequipment.museum\0"
+"piedmont.it\0movistar\0"
+"\xe5\x98\x89\xe9\x87\x8c\0ro.eu.org\0"
+"ikata.ehime.jp\0"
+"creditunion\0"
+"realestate\0"
+"lajolla.museum\0ann-arbor.mi.us\0"
+"kppsp.gov.pl\0"
+"chiba.jp\0jll\0"
+"rauma.no\0"
+"al.no\0tm.za\0"
+"shimodate.ibaraki.jp\0\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0"
+"enna.it\0"
+"ichinomiya.aichi.jp\0"
+"sango.nara.jp\0"
+"iwanuma.miyagi.jp\0"
+"jmp\0hashbang.sh\0"
+"swinoujscie.pl\0"
+"siljan.no\0"
+"office\0"
+"\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0jnj\0"
+"suldal.no\0"
+"starnberg.museum\0"
+"s\xc3\xb8rum.no\0"
+"engineer\0"
+"sorocaba.br\0k12.nh.us\0"
+"skedsmo.no\0"
+"\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0"
+"k12.in.us\0"
+"arakawa.saitama.jp\0"
+"nagano.nagano.jp\0"
+"divtasvuodna.no\0"
+"mex.com\0"
+"ginowan.okinawa.jp\0tarnobrzeg.pl\0sochi.su\0"
+"piacenza.it\0"
+"ro.im\0"
+"cologne\0shriram\0"
+"vi.it\0sabae.fukui.jp\0g\xc3\xa1ivuotna.no\0"
+"childrens.museum\0"
+"fujiidera.osaka.jp\0jot\0cn.eu.org\0"
+"kharkov.ua\0si.eu.org\0"
+"taishin.fukushima.jp\0m.se\0"
+"ro.it\0"
+"\xd0\xb1\xd0\xb5\xd0\xbb\0joy\0"
+"gorizia.it\0"
+"9guacu.br\0"
+"nu.it\0"
+"goldpoint\0"
+"crafts.museum\0"
+"lillehammer.no\0"
+"verran.no\0"
+"manaus.br\0chat\0"
+"industria.bo\0"
+"gratangen.no\0lug.org.uk\0"
+"her\xc3\xb8y.nordland.no\0"
+"hembygdsforbund.museum\0ushuaia.museum\0"
+"omaezaki.shizuoka.jp\0"
+"epilepsy.museum\0asker.no\0"
+"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0poznan.pl\0"
+"blockbuster\0"
+"osaka\0"
+"dnsdojo.com\0"
+"kl\xc3\xa6""bu.no\0"
+"kyotamba.kyoto.jp\0"
+"school.za\0homelinux.com\0kozow.com\0"
+"midori.gunma.jp\0presse.km\0"
+"nf.ca\0"
+"is-uberleet.com\0"
+"okegawa.saitama.jp\0"
+"ichikawa.hyogo.jp\0"
+"co.financial\0"
+"laquila.it\0russia.museum\0"
+"odessa.ua\0"
+"jolster.no\0"
+"yamato.kumamoto.jp\0"
+"jl.cn\0"
+"interactive.museum\0newport.museum\0sk.eu.org\0"
+"al.us\0"
+"kanan.osaka.jp\0"
+"kazo.saitama.jp\0presse.ml\0"
+"co.krd\0"
+"ru.com\0"
+"a.ssl.fastly.net\0"
+"cesenaforli.it\0lib.ma.us\0myasustor.com\0"
+"andebu.no\0"
+"hemnes.no\0rade.no\0"
+"siellak.no\0land\0"
+"gmbh\0lancaster\0"
+"thingdustdata.com\0"
+"instantcloud.cn\0"
+"county.museum\0aurskog-h\xc3\xb8land.no\0s3.dualstack.ap-south-1.amazonaws.com\0"
+"hamburg\0"
+"\xe7\xae\x87\xe4\xba\xba.hk\0"
+"otaki.nagano.jp\0praxi\0*.cryptonomic.net\0boldlygoingnowhere.org\0"
+"nagato.yamaguchi.jp\0ha.no\0"
+"miyota.nagano.jp\0"
+"hoylandet.no\0"
+"savona.it\0cy.eu.org\0"
+"kfh\0"
+"kochi.jp\0miyoshi.hiroshima.jp\0"
+"conf.au\0"
+"kitagata.gifu.jp\0trysil.no\0"
+"honai.ehime.jp\0"
+"mg.gov.br\0vallee-d-aoste.it\0*.in.futurecms.at\0"
+"s3.eu-central-1.amazonaws.com\0"
+"nishimera.miyazaki.jp\0"
+"hanawa.fukushima.jp\0s3-ca-central-1.amazonaws.com\0"
+"kepno.pl\0"
+"hisayama.fukuoka.jp\0"
+"minamata.kumamoto.jp\0rep.kp\0neat-url.com\0"
"\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0"
+"trentinsued-tirol.it\0"
+"trentinsuedtirol.it\0volda.no\0"
+"film.museum\0"
+"vikna.no\0"
+"aero\0friuli-ve-giulia.it\0"
+"soka.saitama.jp\0"
+"furniture\0"
+"prato.it\0akashi.hyogo.jp\0"
+"cz.eu.org\0"
+"baseball\0ru.eu.org\0se.eu.org\0"
+"k12.pa.us\0"
+"cri.br\0"
+"yachiyo.ibaraki.jp\0"
+"rich\0myds.me\0"
+"eid.no\0"
+"pro.az\0sci.eg\0"
+"frogn.no\0contact\0kia\0ddnss.de\0"
+"norfolk.museum\0rehab\0"
+"kounosu.saitama.jp\0"
+"pro.br\0dubai\0"
+"kawanehon.shizuoka.jp\0"
+"kim\0"
+"s\xc3\xbc""dtirol.it\0mj\xc3\xb8ndalen.no\0smart\0"
+"macerata.it\0"
+"dk.eu.org\0"
+"chikushino.fukuoka.jp\0inatsuki.fukuoka.jp\0oceanographic.museum\0"
+"servepics.com\0"
+"certification.aero\0tsuruga.fukui.jp\0"
+"d.gv.vc\0"
+"map.fastly.net\0"
+"pro.cy\0fr.it\0\xc3\xa1lt\xc3\xa1.no\0"
+"sampa.br\0"
+"dnepropetrovsk.ua\0"
+"s3.eu-west-3.amazonaws.com\0"
+"ch.it\0nesna.no\0gratis\0"
+"nativeamerican.museum\0"
+"clothing\0digital\0"
+"pro.ec\0eidskog.no\0\xe1\x83\x92\xe1\x83\x94\0"
+"nagara.chiba.jp\0ostrowiec.pl\0co.network\0ownip.net\0"
+"ternopil.ua\0baidu\0"
+"z.bg\0*.cns.joyent.com\0"
+"kvalsund.no\0"
+"vi.us\0"
+"kawaguchi.saitama.jp\0"
+"tomika.gifu.jp\0kred\0"
+"trentino-sudtirol.it\0nantan.kyoto.jp\0b\xc3\xa1hccavuotna.no\0"
+"toyono.osaka.jp\0"
+"kotohira.kagawa.jp\0"
+"carboniaiglesias.it\0fastly-terrarium.com\0"
+"kanie.aichi.jp\0"
+"entomology.museum\0rendalen.no\0"
+"reggioemilia.it\0xerox\0"
+"takamori.nagano.jp\0eng.pro\0"
+"nanae.hokkaido.jp\0"
+"lupin\0"
+"isa.kagoshima.jp\0"
+"boomla.net\0"
+"itoman.okinawa.jp\0broadcast.museum\0"
+"tranibarlettaandria.it\0berlin\0ca-central-1.elasticbeanstalk.com\0"
+"de.eu.org\0"
+"watari.miyagi.jp\0"
+"uber.space\0"
+"genova.it\0redumbrella\0\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
+"ninohe.iwate.jp\0govt.nz\0"
+"yanagawa.fukuoka.jp\0"
+"localhost.daplie.me\0"
+"civilization.museum\0"
+"campidano-medio.it\0"
+"americana.museum\0scjohnson\0technology\0"
+"chikuzen.fukuoka.jp\0"
+"pro.ht\0frankfurt.museum\0"
+"\xe5\x85\xab\xe5\x8d\xa6\0"
+"kusatsu.gunma.jp\0"
+"mypets.ws\0"
+"softbank\0"
+"osaki.miyagi.jp\0"
+"kani.gifu.jp\0"
+"oshino.yamanashi.jp\0varggat.no\0"
+"gsm.pl\0"
+"gos.pk\0"
+"chungbuk.kr\0"
+"matsuyama.ehime.jp\0kpn\0"
+"salzburg.museum\0"
+"froya.no\0"
+"eun.eg\0exnet.su\0"
+"bir.ru\0"
+"r\xc3\xb8mskog.no\0pomorskie.pl\0"
+"\xeb\x8b\xb7\xec\xbb\xb4\0"
+"fastlylb.net\0"
+"championship.aero\0klepp.no\0"
+"ina.ibaraki.jp\0takamatsu.kagawa.jp\0"
+"wlocl.pl\0"
+"v\xc3\xa5gs\xc3\xb8y.no\0"
+"chambagri.fr\0"
+"pharmaciens.km\0"
+"krd\0lat\0"
+"shinichi.hiroshima.jp\0cc.nh.us\0law\0"
+"wanouchi.gifu.jp\0hanamaki.iwate.jp\0s3-website-us-west-2.amazonaws.com\0"
+"feira.br\0siteleaf.net\0"
+"moss.no\0"
+"hotmail\0"
+"gleeze.com\0"
+"ooguy.com\0"
+"bsb.br\0hita.oita.jp\0in-vpn.de\0"
+"toyo.kochi.jp\0"
+"sk\xc3\xa1nit.no\0apps.fbsbx.com\0"
+"gallery\0"
+"toya.hokkaido.jp\0"
+"traeumtgerade.de\0tuva.su\0"
+"drammen.no\0"
+"im.it\0"
+"omihachiman.shiga.jp\0for-some.biz\0"
+"uk.com\0"
+"pro.na\0"
+"fc.it\0"
+"nasu.tochigi.jp\0pro.mv\0"
+"pb.ao\0bi.it\0wodzislaw.pl\0loginline.services\0ddnsking.com\0"
+"vald-aosta.it\0cri.nz\0"
+"or.at\0toon.ehime.jp\0futuremailing.at\0"
+"vall\xc3\xa9""eaoste.it\0arao.kumamoto.jp\0lds\0map.fastlylb.net\0"
+"k.bg\0or.bi\0"
+"kasahara.gifu.jp\0cartoonart.museum\0"
+"eisenbahn.museum\0"
+"bodo.no\0"
+"ed.ao\0""1.bg\0trentinosudtirol.it\0"
+"hosting-cluster.nl\0"
+"organic\0"
+"yandex\0"
+"gs.tm.no\0"
+"pro.om\0"
+"kobierzyce.pl\0ca.eu.org\0"
+"shunan.yamaguchi.jp\0es.kr\0hasura-app.io\0"
+"or.ci\0"
+"kasama.ibaraki.jp\0"
+"getmyip.com\0"
+"plumbing\0"
+"hidaka.kochi.jp\0br\xc3\xb8nn\xc3\xb8y.no\0\xec\x82\xbc\xec\x84\xb1\0"
+"amagasaki.hyogo.jp\0"
+"or.cr\0ce.leg.br\0"
+"lib.va.us\0mydrobo.com\0"
+"skanland.no\0"
+"misato.akita.jp\0"
+"nombre.bo\0"
+"ed.ci\0hn.cn\0"
+"halden.no\0pro.pr\0"
+"sardegna.it\0oshima.yamaguchi.jp\0myshopblocks.com\0"
+"conf.se\0"
+"sor-aurdal.no\0"
+"tosa.kochi.jp\0"
+"ed.cr\0"
+"dr\xc3\xb8""bak.no\0"
+"\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0"
+"lib.hi.us\0"
+"webhop.info\0"
+"barsy.info\0"
+"lib.dc.us\0\xe5\x8f\xb0\xe7\x81\xa3\0"
+"andasuolo.no\0"
+"vega.no\0homelinux.net\0"
+"lomza.pl\0"
+"nakama.fukuoka.jp\0langev\xc3\xa5g.no\0"
+"trainer.aero\0"
+"trentinos\xc3\xbc""dtirol.it\0\xe5\x85\xac\xe5\x8f\xb8\0wpcomstaging.com\0"
+"bible.museum\0"
+"environmentalconservation.museum\0"
+"bargains\0"
+"\xe6\xbe\xb3\xe9\x96\x80\0"
+"presse.ci\0fukuyama.hiroshima.jp\0muos\xc3\xa1t.no\0"
+"higashimurayama.tokyo.jp\0hokksund.no\0"
+"j\xc3\xb8lster.no\0"
+"cloudns.eu\0"
+"seaport.museum\0\xc3\xa5krehamn.no\0*.compute-1.amazonaws.com\0"
+"western.museum\0"
+"jor.br\0k12.ok.us\0"
+"sunagawa.hokkaido.jp\0pro.tt\0"
+"mod.gi\0rankoshi.hokkaido.jp\0"
+"cc.mi.us\0familyds.com\0"
+"hobby-site.com\0"
+"or.id\0"
+"obihiro.hokkaido.jp\0minato.osaka.jp\0llc\0"
+"cd.eu.org\0"
+"vv.it\0"
+"\xe7\xbe\xa4\xe9\xa6\xac.jp\0"
+"obanazawa.yamagata.jp\0"
+"z.se\0filegear-gb.me\0in-dsl.org\0"
+"namerikawa.toyama.jp\0"
+"llp\0verisign\0"
+"or.it\0"
+"gushikami.okinawa.jp\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0pro.vn\0"
+"grimstad.no\0"
+"educational.museum\0"
+"kaneyama.fukushima.jp\0"
+"chikuho.fukuoka.jp\0lolipop.io\0"
+"yoshimi.saitama.jp\0sakata.yamagata.jp\0radio\0from-tn.com\0"
+"or.jp\0"
+"urn.arpa\0house.museum\0"
+"takazaki.miyazaki.jp\0or.ke\0"
+"cloudns.in\0"
+"cruises\0"
+"trentinoa-adige.it\0"
+"bpl.biz\0"
+"ed.jp\0minano.saitama.jp\0"
+"or.kr\0"
+"za.bz\0"
+"\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"ns.ca\0"
+"cloudns.cc\0"
+"fukaya.saitama.jp\0"
+"sakurai.nara.jp\0lol\0"
+"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0"
+"nagaokakyo.kyoto.jp\0"
+"lifeinsurance\0"
+"nishiizu.shizuoka.jp\0"
+"s3.dualstack.ap-northeast-1.amazonaws.com\0"
+"nakano.tokyo.jp\0"
+"\xc3\xa5rdal.no\0"
+"go.ci\0kamo.kyoto.jp\0lib.tn.us\0basketball\0"
+"americanfamily\0dance\0"
+"lpl\0dnsalias.net\0"
+"kashima.ibaraki.jp\0\xe6\xbe\xb3\xe9\x97\xa8\0avianca\0"
+"namie.fukushima.jp\0or.na\0"
+"kwpsp.gov.pl\0\xe5\x85\xac\xe7\x9b\x8a\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
+"green\0"
+"go.cr\0or.mu\0"
+"higashikawa.hokkaido.jp\0"
+"habmer.no\0"
+"psse.gov.pl\0"
+"conf.lv\0lavangen.no\0"
+"man\0"
+"press.cy\0"
+"quebec.museum\0map\0"
+"esp.br\0roma.museum\0mba\0"
+"ikeda.nagano.jp\0stryn.no\0"
+"military.museum\0"
+"levanger.no\0"
+"\xe7\xb5\x84\xe7\xb9\x94.tw\0accesscam.org\0"
+"yachts\0"
+"historichouses.museum\0"
+"plurinacional.bo\0beskidy.pl\0"
+"valer.ostfold.no\0"
+"dnsup.net\0"
+"pfizer\0"
+"meiwa.mie.jp\0"
+"association.museum\0"
+"kunneppu.hokkaido.jp\0citi\0"
+"nakaniikawa.toyama.jp\0"
+"skanit.no\0boehringer\0georgia.su\0"
+"nisshin.aichi.jp\0"
+"is-a-patsfan.org\0"
+"asahi.yamagata.jp\0"
+"aizubange.fukushima.jp\0project.museum\0"
+"columbus.museum\0tana.no\0"
+"mallorca.museum\0amfam\0"
+"ltd\0"
+"or.pw\0"
+"yashiro.hyogo.jp\0zoology.museum\0kongsvinger.no\0"
+"city\0"
+"is.gov.pl\0democrat\0"
+"misato.miyagi.jp\0market\0"
+"yonago.tottori.jp\0"
+"trentinostirol.it\0"
+"gitlab.io\0"
+"\xed\x95\x9c\xea\xb5\xad\0hermes\0"
+"ed.pw\0med\0issmarterthanyou.com\0"
+"salvador.br\0"
+"miyashiro.saitama.jp\0hokuto.yamanashi.jp\0gliwice.pl\0"
+"nysa.pl\0men\0"
+"kanazawa.ishikawa.jp\0"
+"tsukiyono.gunma.jp\0"
+"utazu.kagawa.jp\0"
+"sos.pl\0"
+"bahn.museum\0"
+"go.id\0k.se\0hospital\0"
+"rm.it\0"
+"assabu.hokkaido.jp\0kakinoki.shimane.jp\0"
+"cc.al.us\0audible\0"
+"rebun.hokkaido.jp\0"
+"modern.museum\0research.museum\0"
+"nic.in\0crimea.ua\0"
+"virgin\0"
+"zp.ua\0"
+"seki.gifu.jp\0nowruz\0"
+"go.it\0"
+"or.th\0"
+"netbank\0"
+"aizumisato.fukushima.jp\0"
+"sigdal.no\0"
+"hanno.saitama.jp\0"
+"t\xc3\xb8nsberg.no\0everbank\0"
+"nishiwaki.hyogo.jp\0"
+"go.jp\0sko.gov.pl\0fishing\0"
+"act.au\0suzuki\0"
+"labor.museum\0"
+"or.ug\0markets\0"
+"go.ke\0"
+"andria-trani-barletta.it\0hirakata.osaka.jp\0"
+"or.tz\0"
+"bern.museum\0"
+"photography.museum\0"
+"shoes\0"
+"kiwa.mie.jp\0ryokami.saitama.jp\0"
+"mil.ac\0trento.it\0moareke.no\0"
+"mil.ae\0or.us\0"
+"vefsn.no\0"
+"go.kr\0*.telebit.xyz\0"
+"tires\0diskstation.org\0"
+"lom.it\0tomigusuku.okinawa.jp\0news\0"
+"nirasaki.yamanashi.jp\0"
+"mil.al\0\xd2\x9b\xd0\xb0\xd0\xb7\0"
+"wuoz.gov.pl\0"
+"taira.toyama.jp\0"
+"mil\0s3-external-1.amazonaws.com\0"
+"mil.ba\0s3-website.ca-central-1.amazonaws.com\0"
+"mil.ar\0"
+"hdfcbank\0"
+"modalen.no\0"
+"noheji.aomori.jp\0isleofman.museum\0"
+"stange.no\0exposed\0mit\0"
+"dolls.museum\0"
+"mil.az\0lombardy.it\0mutsuzawa.chiba.jp\0"
+"next\0"
+"cloudns.us\0"
+"hyogo.jp\0"
+"mil.bo\0"
+"loppa.no\0"
+"mil.br\0ichinomiya.chiba.jp\0"
+"hamura.tokyo.jp\0malbork.pl\0"
+"frei.no\0krasnodar.su\0mangyshlak.su\0go.leg.br\0"
+"usui.fukuoka.jp\0"
+"baseball.museum\0"
+"mil.by\0reise\0"
+"grocery\0"
+"toyako.hokkaido.jp\0"
+"mil.cl\0"
+"mil.cn\0"
+"mil.co\0"
+"trentinosued-tirol.it\0ainan.ehime.jp\0iizuna.nagano.jp\0wsa.gov.pl\0"
+"jeju.kr\0georgia.museum\0"
+"mlb\0"
+"cultural.museum\0karacol.su\0"
+"dnsking.ch\0"
+"higashitsuno.kochi.jp\0"
+"tj\xc3\xb8me.no\0"
+"mil.do\0"
+"viterbo.it\0"
+"obninsk.su\0"
+"mil.ec\0drayddns.com\0"
+"mma\0s3.amazonaws.com\0"
+"mil.eg\0kikuchi.kumamoto.jp\0mihama.wakayama.jp\0skole.museum\0kirkenes.no\0mls\0"
+"kristiansand.no\0\xe5\xa4\xa7\xe6\x8b\xbf\0from-nh.com\0"
+"\xc3\xa5mot.no\0"
+"warszawa.pl\0servehalflife.com\0"
+"sosnowiec.pl\0"
+"obuse.nagano.jp\0vote\0cloudycluster.net\0"
+"kvinnherad.no\0"
+"keymachine.de\0"
+"naruto.tokushima.jp\0"
+"lom.no\0"
+"graphics\0"
+"cc.vi.us\0"
+"barcelona\0"
+"cloudns.club\0"
+"voto\0"
+"go.pw\0"
+"brasilia.me\0"
+"kakogawa.hyogo.jp\0podzone.net\0"
+"takaoka.toyama.jp\0skjak.no\0lacaixa\0"
+"opencraft.hosting\0"
+"mil.ge\0sue.fukuoka.jp\0wellbeingzone.co.uk\0"
+"trentino.it\0jessheim.no\0leczna.pl\0"
+"mil.gh\0matera.it\0gold\0"
+"moe\0"
+"dlugoleka.pl\0golf\0doesntexist.org\0"
+"iz.hr\0toyosato.shiga.jp\0lutsk.ua\0pics\0"
+"contractors\0moi\0ravendb.run\0"
+"is-a-democrat.com\0"
+"nord-fron.no\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0"
+"mom\0now.sh\0"
+"servegame.com\0"
+"mil.gt\0matsue.shimane.jp\0rybnik.pl\0"
+"byen.site\0"
+"\xc3\xb8ygarden.no\0"
+"mt.it\0"
+"mov\0"
+"col.ng\0"
+"mil.hn\0nerima.tokyo.jp\0"
+"mil.id\0shiraoi.hokkaido.jp\0"
+"nab\0kicks-ass.net\0"
+"higashihiroshima.hiroshima.jp\0"
+"go.th\0nic.tj\0mydatto.net\0"
+"mil.in\0heritage.museum\0"
+"gob.ar\0go.tj\0dyndns1.de\0"
+"dynns.com\0"
+"x.bg\0mil.iq\0"
+"starachowice.pl\0"
+"nba\0game-host.org\0"
+"resindevice.io\0"
+"goog\0weber\0"
+"gob.bo\0go.ug\0"
+"nhs.uk\0"
+"mil.jo\0go.tz\0"
+"gotemba.shizuoka.jp\0"
+"rost.no\0tirol\0"
+"abu.yamaguchi.jp\0"
+"!city.yokohama.jp\0komoro.nagano.jp\0"
+"stathelle.no\0java\0"
+"mil.kg\0"
+"shinjo.nara.jp\0express\0msd\0"
+"gob.cl\0"
+"santamaria.br\0"
+"mil.km\0de.us\0"
+"fst.br\0"
+"wassamu.hokkaido.jp\0kamikitayama.nara.jp\0"
+"\xe8\xb0\xb7\xe6\xad\x8c\0"
+"mil.kr\0on-web.fr\0"
+"foz.br\0cahcesuolo.no\0"
+"fujikawaguchiko.yamanashi.jp\0"
+"dd-dns.de\0"
+"ch.eu.org\0"
+"mil.kz\0"
+"greta.fr\0"
+"gob.do\0oygarden.no\0"
+"ulm.museum\0press.se\0"
+"gob.ec\0yorii.saitama.jp\0square7.de\0"
+"s\xc3\xb8r-odal.no\0mtn\0"
+"viking.museum\0"
+"friulivenezia-giulia.it\0taka.hyogo.jp\0browsersafetymark.io\0"
+"homelinux.org\0"
+"mil.lv\0mtr\0"
+"far.br\0mil.mg\0state.museum\0jondal.no\0nec\0"
+"nerdpol.ovh\0"
+"\xe7\xb5\x84\xe7\xb9\x94.hk\0hitachi.ibaraki.jp\0finearts.museum\0nctu.me\0"
+"bibai.hokkaido.jp\0irish\0"
+"gob.es\0shirahama.wakayama.jp\0biev\xc3\xa1t.no\0"
+"atsuma.hokkaido.jp\0cloudns.pw\0"
+"mil.mv\0"
+"mil.ng\0"
+"aya.miyazaki.jp\0net\0"
+"mil.my\0mil.ni\0"
+"coloradoplateau.museum\0mil.mz\0"
+"new\0does-it.net\0"
+"hachinohe.aomori.jp\0mil.no\0church\0"
+"nfl\0"
+"scientist.aero\0"
+"countryestate.museum\0"
+"nic.za\0"
+"biei.hokkaido.jp\0"
+"cn-north-1.eb.amazonaws.com.cn\0"
+"floro.no\0"
+"oizumi.gunma.jp\0yamanouchi.nagano.jp\0health.museum\0net.eu.org\0"
+"mil.nz\0"
+"sera.hiroshima.jp\0"
+"a\xc3\xa9roport.ci\0shiroishi.miyagi.jp\0mango\0from-ut.com\0"
+"vads\xc3\xb8.no\0"
+"urayasu.chiba.jp\0"
+"isen.kagoshima.jp\0"
+"gob.gt\0fuchu.toyama.jp\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0s3.ap-south-1.amazonaws.com\0"
+"barueri.br\0murayama.yamagata.jp\0dynamisches-dns.de\0"
+"intelligence.museum\0ngo\0square7.ch\0nh-serv.co.uk\0"
+"hirado.nagasaki.jp\0kikugawa.shizuoka.jp\0"
+"mil.pe\0"
+"mil.ph\0"
+"gob.hn\0"
+"skjerv\xc3\xb8y.no\0mil.pl\0"
+"alto-adige.it\0shiogama.miyagi.jp\0in-dsl.net\0"
+"aizumi.tokushima.jp\0"
+"nhk\0is-very-good.org\0"
+"halsa.no\0yombo.me\0"
+"campobasso.it\0mil.qa\0lenug.su\0"
+"zakopane.pl\0"
+"yurihonjo.akita.jp\0tsukui.kanagawa.jp\0"
+"ryukyu\0"
+"oishida.yamagata.jp\0"
+"skien.no\0"
+"mil.py\0from-ia.com\0"
+"numata.gunma.jp\0"
+"po.it\0grue.no\0"
+"vegarshei.no\0"
+"ping\0potager.org\0"
+"onagawa.miyagi.jp\0sweetpepper.org\0"
+"lu.it\0me.it\0"
+"knightpoint.systems\0"
+"haebaru.okinawa.jp\0pink\0*.webhare.dev\0"
+"carrd.co\0"
+"\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
+"press.ma\0"
+"knx-server.net\0"
+"chtr.k12.ma.us\0"
+"bg.it\0"
+"js.org\0"
+"me.ke\0"
+"tateyama.toyama.jp\0"
+"mil.ru\0"
+"frosinone.it\0mil.rw\0"
+"mil.sh\0"
+"trentin-sudtirol.it\0"
+"i.bg\0"
+"doctor\0"
+"tx.us\0"
+"namsskogan.no\0"
+"systems\0"
+"ath.cx\0"
+"mil.st\0"
+"chikugo.fukuoka.jp\0"
+"mt.us\0nd.us\0cloudaccess.host\0"
+"at.eu.org\0"
+"mil.sy\0"
+"tempioolbia.it\0mil.tj\0\xd8\xb9\xd8\xb1\xd8\xa8\0"
+"kaas.gg\0cust.testing.thingdust.io\0"
+"basel.museum\0lodingen.no\0mil.tm\0"
+"brindisi.it\0ws.na\0mil.to\0"
+"aigo\0"
+"mil.tr\0"
+"townnews-staging.com\0"
+"kitagata.saga.jp\0"
+"mil.tw\0"
+"hl.cn\0rishiri.hokkaido.jp\0"
+"aki.kochi.jp\0mil.tz\0"
+"*.on-rancher.cloud\0"
+"noto.ishikawa.jp\0asahi.nagano.jp\0kumagaya.saitama.jp\0"
+"uki.kumamoto.jp\0lund.no\0"
+"muni.il\0"
+"ah.cn\0ris\xc3\xb8r.no\0mil.vc\0frogans\0"
+"gob.mx\0mil.ve\0"
+"nishitosa.kochi.jp\0gob.ni\0brand.se\0"
+"oji.nara.jp\0"
+"uryu.hokkaido.jp\0"
+"coop.ht\0r\xc3\xb8ros.no\0mil.uy\0"
+"stj\xc3\xb8rdal.no\0"
+"lib.de.us\0"
+"galsa.no\0"
+"slg.br\0"
+"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0"
+"lego\0"
+"sayo.hyogo.jp\0for-better.biz\0"
+"katori.chiba.jp\0"
+"trentin-s\xc3\xbc""dtirol.it\0"
+"skierva.no\0hosting\0"
+"stalowa-wola.pl\0"
+"lel.br\0settsu.osaka.jp\0anthro.museum\0"
+"tsushima.aichi.jp\0gob.pa\0"
+"ltd.cy\0"
+"r\xc3\xa1hkker\xc3\xa1vju.no\0gob.pe\0"
+"stargard.pl\0"
+"coop.br\0"
+"gob.pk\0\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0"
+"kumamoto.kumamoto.jp\0edunet.tn\0"
+"satte.saitama.jp\0now\0"
+"ip6.arpa\0takahama.fukui.jp\0"
+"os.hedmark.no\0"
+"historisches.museum\0"
+"kanra.gunma.jp\0ownprovider.com\0"
+"zhitomir.ua\0press\0fantasyleague.cc\0"
+"rocher\0"
+"schweiz.museum\0mil.za\0togliatti.su\0"
+"org.ac\0"
+"nodebalancer.linode.com\0"
+"org.ae\0nishinomiya.hyogo.jp\0"
+"org.af\0nra\0cloudns.info\0"
+"org.ag\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa4\xae\xe0\xa5\x8d\0"
+"gujo.gifu.jp\0"
+"org.ai\0teshikaga.hokkaido.jp\0"
+"hamar.no\0sells-for-less.com\0"
+"org.al\0vt.it\0"
+"org.am\0barefoot\0"
+"mil.zm\0obi\0"
+"brescia.it\0"
+"x.se\0"
+"org.ba\0ltd.gi\0geelvinck.museum\0"
+"org.ar\0org.bb\0name.hr\0bale.museum\0"
+"org.au\0togane.chiba.jp\0"
+"london\0"
+"org.bh\0mil.zw\0"
+"org.bi\0matsusaka.mie.jp\0"
+"org.az\0snasa.no\0vestre-toten.no\0"
+"nrw\0"
+"org.bm\0me.so\0"
+"org.bn\0mitake.gifu.jp\0"
+"org.bo\0seiyo.ehime.jp\0minamiashigara.kanagawa.jp\0"
+"msk.ru\0"
+"shangrila\0"
+"org.br\0"
+"org.bs\0tadaoka.osaka.jp\0lighting\0ltd.hk\0"
+"org.bt\0name.et\0gob.sv\0"
+"catholic\0"
+"org.bw\0yakumo.shimane.jp\0"
+"yusuhara.kochi.jp\0"
+"org.ci\0"
+"org.bz\0culture.museum\0"
+"chonan.chiba.jp\0"
+"ouchi.saga.jp\0"
+"org.cn\0"
+"org.co\0mihara.hiroshima.jp\0"
+"philadelphiaarea.museum\0msk.su\0"
+"fhv.se\0shouji\0"
+"dnsalias.org\0"
+"org.cu\0divttasvuotna.no\0"
+"org.cw\0"
+"me.tz\0"
+"org.cy\0even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0me.uk\0ntt\0"
+"alsace\0"
+"org.dm\0"
+"org.do\0"
+"ostroleka.pl\0"
+"otsu.shiga.jp\0me.us\0"
+"org.ec\0gob.ve\0"
+"ozu.ehime.jp\0maison\0ybo.party\0"
+"org.ee\0"
+"california.museum\0"
+"org.eg\0tuxfamily.org\0"
+"name.cy\0publishproxy.com\0"
+"org.dz\0"
+"off\0"
+"zgorzelec.pl\0"
+"kashihara.nara.jp\0"
+"starostwo.gov.pl\0"
+"svalbard.no\0"
+"org.es\0s3-us-west-2.amazonaws.com\0leadpages.co\0"
+"org.et\0grosseto.it\0"
+"cosenza.it\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
+"name.eg\0ushiku.ibaraki.jp\0"
+"kozaki.chiba.jp\0lib.mt.us\0lib.nd.us\0"
+"i.ng\0"
+"biratori.hokkaido.jp\0kolobrzeg.pl\0"
+"egyptian.museum\0lib.in.us\0"
+"s3.dualstack.ap-southeast-2.amazonaws.com\0"
+"onomichi.hiroshima.jp\0"
+"dr.na\0"
+"tahara.aichi.jp\0ltd.lk\0wang\0"
+"org.ge\0"
+"org.gg\0williamsburg.museum\0piaget\0"
+"org.gh\0is-a-guru.com\0"
+"org.gi\0"
+"name.az\0"
+"hl.no\0"
+"org.gl\0berkeley.museum\0homeftp.org\0"
"org.gn\0"
-"bjerkreim.no\0filegear-au.me\0"
"org.gp\0"
-"org.gr\0ge.it\0shikaoi.hokkaido.jp\0mitsuke.niigata.jp\0"
-"l\xc3\xb8ten.no\0readthedocs.io\0"
-"org.gt\0gal\0"
-"org.gu\0bar.pro\0"
-"mie.jp\0kunneppu.hokkaido.jp\0"
-"holiday\0"
-"gap\0"
-"g.bg\0org.gy\0priv.hu\0pics\0"
-"org.hk\0computer.museum\0crimea.ua\0"
+"trentinsud-tirol.it\0minobu.yamanashi.jp\0equipment\0"
+"org.gr\0"
+"org.gt\0szkola.pl\0"
+"org.gu\0ah.no\0"
+"takino.hyogo.jp\0"
+"nyc\0"
+"org.gy\0"
+"org.hk\0"
+"takahashi.okayama.jp\0i.ph\0*.platformsh.site\0"
"org.hn\0"
-"org.ht\0frl\0uk.net\0"
-"org.hu\0arboretum.museum\0is-a-rockstar.com\0"
-"sites.static.land\0"
-"eun.eg\0"
-"yt\0"
-"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0"
-"org.il\0tateshina.nagano.jp\0intuit\0"
-"org.im\0naroy.no\0"
-"org.in\0yawatahama.ehime.jp\0ms.leg.br\0"
-"aeroclub.aero\0qld.gov.au\0"
-"umi.fukuoka.jp\0"
-"org.iq\0nordre-land.no\0"
-"org.ir\0support\0"
-"org.is\0kunst.museum\0zm\0cust.testing.thingdust.io\0"
-"org.je\0ee.eu.org\0"
-"cn.it\0"
-"l\xc3\xa4ns.museum\0\xe4\xbd\x9b\xe5\xb1\xb1\0"
-"ribeirao.br\0"
-"miyako.fukuoka.jp\0"
-"0.bg\0zw\0"
-"org.jo\0"
-"shibuya.tokyo.jp\0"
-"saiki.oita.jp\0"
-"monza-e-della-brianza.it\0gdn\0"
+"fla.no\0ltd.ng\0"
+"valleedaoste.it\0"
+"mizumaki.fukuoka.jp\0ogaki.gifu.jp\0\xc3\xa5lesund.no\0*.dapps.earth\0"
+"org.ht\0"
+"org.hu\0tagajo.miyagi.jp\0science\0"
+"hakui.ishikawa.jp\0"
+"yaese.okinawa.jp\0lincoln.museum\0"
+"tochigi.jp\0ask\xc3\xb8y.no\0"
+"sandcats.io\0"
+"k12.tx.us\0"
+"org.il\0"
+"org.im\0"
+"org.in\0pointto.us\0"
+"org.iq\0busan.kr\0"
+"org.ir\0podzone.org\0"
+"pa.gov.br\0org.is\0barsy.net\0"
+"org.je\0\xd9\x85\xd9\x88\xd8\xb1\xd9\x8a\xd8\xaa\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7\0"
+"kawamata.fukushima.jp\0"
+"cc.or.us\0"
+"n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
+"kita.tokyo.jp\0"
+"higashikurume.tokyo.jp\0"
+"space.museum\0bloomberg\0"
+"flynnhub.com\0"
+"org.jo\0exhibition.museum\0fusa.no\0"
+"ftpaccess.cc\0"
+"botanicalgarden.museum\0"
+"shingu.hyogo.jp\0eu-central-1.elasticbeanstalk.com\0app.lmpm.com\0"
+"ve.it\0"
+"doshi.yamanashi.jp\0antiques.museum\0"
"org.kg\0"
-"ketrzyn.pl\0"
-"org.ki\0skedsmo.no\0gea\0"
-"\xe9\xab\x98\xe7\x9f\xa5.jp\0ftr\0"
-"org.km\0amsterdam\0"
-"alessandria.it\0org.kn\0church\0mt.leg.br\0"
-"cuisinella\0"
-"pg.it\0hannan.osaka.jp\0org.kp\0"
-"org.la\0lib.ri.us\0"
-"org.lb\0no-ip.net\0"
-"org.lc\0k12.ny.us\0"
-"nomi.ishikawa.jp\0"
-"waw.pl\0fun\0"
-"org.kw\0anthro.museum\0from-mo.com\0"
-"omihachiman.shiga.jp\0"
+"org.ki\0i.se\0"
+"kimobetsu.hokkaido.jp\0"
+"org.km\0"
+"org.kn\0"
+"ohkura.yamagata.jp\0us-west-2.elasticbeanstalk.com\0"
+"org.kp\0target\0"
+"org.la\0notteroy.no\0"
+"org.lb\0"
+"pb.gov.br\0org.lc\0sakura\0"
+"commbank\0"
+"kisofukushima.nagano.jp\0org.kw\0hair\0"
"org.ky\0"
-"nahari.kochi.jp\0nagiso.nagano.jp\0org.kz\0"
+"hamada.shimane.jp\0org.kz\0kicks-ass.org\0"
"org.lk\0"
-"chofu.tokyo.jp\0"
+"tv.bb\0gdansk.pl\0"
+"sec.ps\0"
+"cs.it\0"
+"sn\xc3\xa5""ase.no\0"
"org.ma\0"
-"org.lr\0"
-"org.ls\0"
-"gen.in\0nobeoka.miyazaki.jp\0"
-"org.me\0naumburg.museum\0gos.pk\0"
-"belluno.it\0ashibetsu.hokkaido.jp\0org.lv\0"
-"org.mg\0\xe5\x95\x86\xe6\xa5\xad.tw\0"
-"priv.at\0"
-"org.ly\0gives\0"
-"org.mk\0field.museum\0"
-"org.ml\0"
+"org.lr\0brussels\0"
+"org.ls\0westfalen.museum\0sund.no\0"
+"org.me\0dyndns-pics.com\0"
+"org.lv\0"
+"tone.ibaraki.jp\0org.mg\0"
+"agano.niigata.jp\0kv.ua\0"
+"tv.bo\0nishi.osaka.jp\0moroyama.saitama.jp\0org.ly\0odesa.ua\0au.eu.org\0be.eu.org\0"
+"one\0\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0"
+"org.mk\0vt.us\0"
+"tv.br\0org.ml\0ong\0"
+"\xe4\xba\xac\xe9\x83\xbd.jp\0castle.museum\0computerhistory.museum\0"
"org.mn\0"
-"org.mo\0lenvik.no\0"
-"org.na\0"
-"org.ms\0arts.museum\0"
-"caserta.it\0org.mt\0"
-"org.mu\0museum\0lib.mn.us\0"
-"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0org.mv\0"
-"humanities.museum\0org.mw\0org.ng\0"
-"takko.aomori.jp\0org.mx\0nc.tr\0"
+"org.mo\0bielawa.pl\0boutique\0servesarcasm.com\0"
+"kumano.mie.jp\0shacknet.nu\0"
+"matsuno.ehime.jp\0org.na\0onl\0"
+"tsubetsu.hokkaido.jp\0kg.kr\0"
+"org.ms\0dr.tr\0"
+"yukuhashi.fukuoka.jp\0org.mt\0settlement.museum\0"
+"nb.ca\0org.mu\0is-an-actress.com\0"
+"goto.nagasaki.jp\0org.mv\0"
+"kagoshima.jp\0org.mw\0org.ng\0"
+"org.mx\0heroy.nordland.no\0lancome\0soccer\0"
"org.my\0org.ni\0"
-"mihama.wakayama.jp\0org.mz\0gniezno.pl\0"
-"nt.au\0blogspot.co.uk\0"
-"earth\0"
-"z.se\0iki.fi\0"
-"org.nr\0epost\0"
-"s3.eu-west-3.amazonaws.com\0"
-"trentins\xc3\xbc""d-tirol.it\0"
-"frana.no\0"
-"takatsuki.osaka.jp\0"
-"nt.ca\0"
-"kashihara.nara.jp\0verm\xc3\xb6gensberater\0"
-"ms.us\0nc.us\0itau\0"
-"org.nz\0"
-"hareid.no\0"
-"from.hr\0"
-"org.om\0"
-"miyagi.jp\0"
-"saito.miyazaki.jp\0"
-"org.pa\0fyi\0"
-"mobi.tt\0"
-"civilwar.museum\0rissa.no\0org.pe\0security\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0remotewd.com\0"
-"org.pf\0"
-"filatelia.museum\0"
-"org.ph\0"
-"dolls.museum\0rodoy.no\0tinn.no\0"
-"mobi.tz\0creditunion\0"
-"org.pk\0"
-"org.pl\0vapor.cloud\0"
-"org.pn\0"
-"ski.no\0"
-"org.qa\0haus\0"
-"kumenan.okayama.jp\0yatsuka.shimane.jp\0org.pr\0"
-"gulen.no\0org.ps\0"
-"misawa.aomori.jp\0org.pt\0"
-"ally\0bugatti\0filegear.me\0"
-"usculture.museum\0org.py\0keymachine.de\0"
-"military.museum\0"
-"koto.shiga.jp\0restaurant\0"
-"nt.edu.au\0volvo\0"
-"sannan.hyogo.jp\0other.nf\0"
-"swiss\0youtube\0"
-"vb.it\0aizumisato.fukushima.jp\0"
-"s3-website.ap-northeast-2.amazonaws.com\0"
-"sch.ae\0panama.museum\0"
-"hyuga.miyazaki.jp\0"
-"s3-us-west-1.amazonaws.com\0"
-"agr.br\0"
-"s3-website.ca-central-1.amazonaws.com\0"
-"gv.ao\0gle\0ping\0"
-"org.ro\0pimienta.org\0"
-"gen.nz\0"
-"org.sa\0lexus\0pink\0nfshost.com\0"
-"gv.at\0hiroshima.jp\0kawajima.saitama.jp\0org.sb\0"
+"org.mz\0"
+"itau\0"
+"valleeaoste.it\0iveland.no\0"
+"rmit\0"
+"chicago.museum\0"
+"pvt.ge\0"
+"hongo.hiroshima.jp\0org.nr\0"
+"ooo\0"
+"hof.no\0"
+"okuma.fukushima.jp\0farmers.museum\0"
+"stuttgart.museum\0"
+"ltd.ua\0"
+"org.nz\0pramerica\0"
+"rel.ht\0"
+"org.om\0coop.rw\0virtueeldomein.nl\0"
+"academia.bo\0\xc3\xa5l.no\0"
+"kamogawa.chiba.jp\0b.ssl.fastly.net\0"
+"org.pa\0lib.me.us\0"
+"shikatsu.aichi.jp\0nordre-land.no\0ltd.uk\0uconnect\0"
+"org.pe\0"
+"bari.it\0org.pf\0"
+"fujimi.saitama.jp\0org.ph\0"
+"q-a.eu.org\0"
+"org.pk\0glade\0"
+"minamiechizen.fukui.jp\0org.pl\0"
+"tabayama.yamanashi.jp\0org.pn\0xihuan\0"
+"lib.as.us\0"
+"theater.museum\0narvik.no\0org.qa\0"
+"org.pr\0"
+"kurobe.toyama.jp\0juedisches.museum\0gamvik.no\0org.ps\0\xe5\x95\x86\xe5\xba\x97\0cdn77-ssl.net\0"
+"kagamino.okayama.jp\0org.pt\0"
+"anan.tokushima.jp\0"
+"alt.za\0"
+"yawata.kyoto.jp\0"
+"org.py\0bg.eu.org\0"
+"maringa.br\0coop.tt\0apartments\0vapor.cloud\0"
+"aoste.it\0science.museum\0org\0"
+"bukhara.su\0"
+"pay\0"
+"taishi.osaka.jp\0"
+"wielun.pl\0health\0"
+"basilicata.it\0higashiizumo.shimane.jp\0narusawa.yamanashi.jp\0"
+"lebtimnetz.de\0"
+"naie.hokkaido.jp\0"
+"coop.mv\0"
+"coop.mw\0"
+"org.ro\0k12.wa.us\0"
+"oslo.no\0"
+"medicina.bo\0tysv\xc3\xa6r.no\0org.sa\0frontier\0"
+"org.sb\0"
"org.rs\0org.sc\0"
-"org.sd\0"
-"org.se\0org.ru\0"
-"omaha.museum\0org.sg\0nflfan.org\0"
+"itayanagi.aomori.jp\0wakasa.tottori.jp\0org.sd\0"
+"org.se\0club\0org.ru\0"
+"org.rw\0org.sg\0bloxcms.com\0"
"org.sh\0"
-"sandnessj\xc3\xb8""en.no\0"
-"org.sl\0"
-"sande.vestfold.no\0"
-"org.sn\0"
+"\xe6\x94\xbf\xe5\xba\x9c.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"org.sl\0tkmaxx\0"
+"eu.org\0barsy.club\0"
+"org.sn\0name.vn\0"
"org.so\0"
-"nakatombetsu.hokkaido.jp\0"
-"nesna.no\0country\0"
-"ancona.it\0kiryu.gunma.jp\0hitachiota.ibaraki.jp\0"
-"org.st\0"
-"karasjohka.no\0blogspot.co.ke\0"
-"kitagawa.miyazaki.jp\0hasuda.saitama.jp\0org.sv\0"
-"gmo\0"
-"gs.nt.no\0org.sy\0"
-"org.sz\0org.tj\0"
-"org.tm\0"
-"yorii.saitama.jp\0org.tn\0"
-"org.to\0"
-"gmx\0"
-"mobi.na\0and\xc3\xb8y.no\0org.ua\0lib.de.us\0"
+"altoadige.it\0dyr\xc3\xb8y.no\0"
+"corporation.museum\0org.ss\0"
+"oyabe.toyama.jp\0org.st\0dnshome.de\0"
+"shizuoka.jp\0"
+"takinoue.hokkaido.jp\0org.sv\0googleapis.com\0"
+"tv.im\0nico\0"
+"on-the-web.tv\0"
+"org.sy\0ott\0"
+"org.sz\0org.tj\0stcgroup\0"
+"amica\0"
+"naoshima.kagawa.jp\0org.tm\0"
+"tv.it\0org.tn\0ap-northeast-1.elasticbeanstalk.com\0"
+"gaivuotna.no\0org.to\0"
+"poa.br\0cc.de.us\0"
+"org.ua\0"
"org.tr\0"
-"entomology.museum\0moskenes.no\0cn.ua\0"
-"org.tt\0"
-"modern.museum\0"
-"\xe6\x96\xb0\xe6\xbd\x9f.jp\0hioki.kagoshima.jp\0"
-"mobi.ng\0org.tw\0org.ug\0"
-"olkusz.pl\0"
-"org.uk\0tickets\0"
-"1kapp.com\0"
-"lardal.no\0"
-"fedex\0"
-"moareke.no\0org.vc\0ap-south-1.elasticbeanstalk.com\0"
-"org.ve\0"
-"goo\0hobby-site.com\0"
-"gop\0"
-"minnesota.museum\0org.uy\0org.vi\0"
-"org.uz\0"
-"got\0wedeploy.sh\0"
-"plantation.museum\0k12.nh.us\0"
-"gov\0fukui.fukui.jp\0matsuda.kanagawa.jp\0org.vn\0"
-"rad\xc3\xb8y.no\0"
-"readmyblog.org\0"
-"org.vu\0"
-"vic.au\0edeka\0"
-"sekigahara.gifu.jp\0"
-"telekommunikation.museum\0"
-"kembuchi.hokkaido.jp\0"
-"agakhan\0irish\0"
-"piedmont.it\0"
-"org.ws\0"
-"shima.mie.jp\0ogose.saitama.jp\0gen.tr\0"
-"qh.cn\0blogspot.co.nz\0"
-"yokosuka.kanagawa.jp\0minamisanriku.miyagi.jp\0katano.osaka.jp\0swatch\0"
-"overhalla.no\0baidu\0\xe9\x80\x9a\xe8\xb2\xa9\0"
-"kamikitayama.nara.jp\0kimino.wakayama.jp\0"
-"donna.no\0"
-"ah.cn\0kitchen\0"
-"berlin.museum\0g.se\0hbo\0"
-"al.leg.br\0"
-"int.eu.org\0"
-"american.museum\0"
-"toray\0"
-"haibara.shizuoka.jp\0""2ix.at\0"
-"aosta-valley.it\0oki.fukuoka.jp\0kitashiobara.fukushima.jp\0misugi.mie.jp\0"
-"org.za\0"
-"amex\0"
-"mobi.ke\0herad.no\0aramco\0"
-"sch.id\0bando.ibaraki.jp\0"
-"glug.org.uk\0"
-"madrid\0"
-"szkola.pl\0"
-"imizu.toyama.jp\0"
-"osen.no\0org.zm\0"
-"\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0"
-"trentin-sudtirol.it\0uenohara.yamanashi.jp\0"
-"2ix.ch\0"
-"fidelity\0"
-"sch.ir\0"
-"frog.museum\0nt.no\0"
-"org.zw\0cbg.ru\0stufftoread.com\0"
-"urasoe.okinawa.jp\0mopar\0"
-"council.aero\0x.bg\0"
-"soundcast.me\0"
-"savona.it\0kyuragi.saga.jp\0"
-"miyakonojo.miyazaki.jp\0cookingchannel\0"
-"is-an-anarchist.com\0""2ix.de\0"
-"kurate.fukuoka.jp\0"
-"sch.jo\0"
-"theworkpc.com\0"
-"lplfinancial\0"
-"karate.museum\0kommunalforbund.se\0cn.eu.org\0"
-"zj.cn\0"
-"hoylandet.no\0law.za\0"
-"family\0"
-"to.it\0"
-"lib.va.us\0"
-"shinshinotsu.hokkaido.jp\0"
-"ando.nara.jp\0"
-"cranbrook.museum\0r\xc3\xa5holt.no\0"
-"vald-aosta.it\0"
-"erimo.hokkaido.jp\0"
-"gs.ah.no\0k12.ca.us\0"
-"hitachi.ibaraki.jp\0"
-"cc.wv.us\0"
-"rj.gov.br\0"
-"sch.lk\0s3-website.eu-west-2.amazonaws.com\0hopto.me\0"
-"lerdal.no\0"
-"customer.enonic.io\0"
-"trapani.it\0"
-"vic.gov.au\0investments\0"
-"gc.ca\0domains\0"
-"sch.ly\0cloud66.ws\0"
-"volkswagen\0"
-"assedic.fr\0psp.gov.pl\0"
-"fujishiro.ibaraki.jp\0"
-"nt.ro\0"
-"toyone.aichi.jp\0"
-"nemuro.hokkaido.jp\0broke-it.net\0"
-"sch.ng\0"
-"okawa.fukuoka.jp\0"
-"guovdageaidnu.no\0"
-"kaho.fukuoka.jp\0"
-"fage\0vote\0"
-"wellbeingzone.eu\0"
-"valle-d-aosta.it\0priv.pl\0"
-"asaminami.hiroshima.jp\0notogawa.shiga.jp\0"
-"karm\xc3\xb8y.no\0"
-"voto\0"
-"kerryhotels\0wedeploy.me\0"
-"baghdad.museum\0amfam\0ro.eu.org\0"
-"wakayama.jp\0"
-"hiv\0"
-"lel.br\0"
-"forsand.no\0"
-"\xd1\x80\xd1\x83\xd1\x81\0"
-"na.it\0"
-"bradesco\0"
-"ureshino.mie.jp\0"
-"od.ua\0"
-"sic.it\0"
-"interactive.museum\0norfolk.museum\0\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0"
-"reggio-calabria.it\0"
-"gs.svalbard.no\0"
-"alibaba\0"
-"priv.no\0sch.qa\0"
-"sobetsu.hokkaido.jp\0fail\0"
-"dominic.ua\0cy.eu.org\0goip.de\0"
-"iz.hr\0square7.net\0"
-"pe.ca\0masfjorden.no\0"
-"tamayu.shimane.jp\0"
-"padua.it\0static.land\0"
-"marumori.miyagi.jp\0kamitonda.wakayama.jp\0hkt\0"
-"aure.no\0onyourside\0"
-"*.kobe.jp\0chihayaakasaka.osaka.jp\0lgbt\0"
-"misconfused.org\0"
-"canada.museum\0blogspot.co.za\0"
-"itoman.okinawa.jp\0nakaniikawa.toyama.jp\0"
-"avocat.fr\0jeep\0"
-"trana.no\0"
-"rel.ht\0"
-"meraker.no\0km.ua\0"
-"academy.museum\0miniserver.com\0"
-"jevnaker.no\0"
-"harstad.no\0"
-"abruzzo.it\0hashbang.sh\0"
-"sch.sa\0"
-"nic.in\0"
-"ah.no\0cz.eu.org\0"
-"tranby.no\0"
-"kunitachi.tokyo.jp\0"
-"priv.me\0"
-"kibichuo.okayama.jp\0mugi.tokushima.jp\0"
-"si.eu.org\0app.os.stg.fedoraproject.org\0"
-"minamiechizen.fukui.jp\0tsubetsu.hokkaido.jp\0"
-"ostre-toten.no\0orange\0"
-"nakatsugawa.gifu.jp\0"
-"vs.it\0smart\0"
-"cologne\0"
-"tsuruga.fukui.jp\0"
-"ln.cn\0"
-"loans\0"
-"fukusaki.hyogo.jp\0"
-"lavagis.no\0cloudns.eu\0"
-"itami.hyogo.jp\0wroclaw.pl\0cool\0"
-"nico\0"
-"udi.br\0tsuno.kochi.jp\0nowaruda.pl\0"
-"coop\0"
-"e.bg\0"
-"eu-west-2.elasticbeanstalk.com\0dk.eu.org\0"
-"wv.us\0"
-"namerikawa.toyama.jp\0"
-"lyngdal.no\0"
-"hot\0"
-"how\0"
-"us-west-2.elasticbeanstalk.com\0"
-"oyama.tochigi.jp\0"
-"bellevue.museum\0"
-"nyc.mn\0"
-"fans\0style\0"
-"\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
-"cl.it\0"
-"sevastopol.ua\0"
-"okutama.tokyo.jp\0"
-"stateofdelaware.museum\0"
-"dyndns-work.com\0"
-"sel.no\0co.technology\0"
-"kwpsp.gov.pl\0"
-"engine.aero\0design.museum\0"
-"sorreisa.no\0sk.eu.org\0"
-"vardo.no\0"
-"karumai.iwate.jp\0akishima.tokyo.jp\0itabashi.tokyo.jp\0"
-"sue.fukuoka.jp\0"
-"\xe6\x94\xbf\xe5\x8a\xa1\0"
-"cloudns.in\0"
-"ibm\0"
-"ba.gov.br\0cesena-forli.it\0hekinan.aichi.jp\0moriyoshi.akita.jp\0"
-"inderoy.no\0"
-"brindisi.it\0"
-"dyndns.ddnss.de\0"
-"pe.it\0"
-"dyroy.no\0ice\0"
-"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0"
-"filegear-ie.me\0"
-"simple-url.com\0"
-"de.eu.org\0"
-"hazu.aichi.jp\0"
-"riodejaneiro.museum\0cloudns.cc\0"
-"beardu.no\0"
-"bulsan.it\0"
-"arendal.no\0icu\0dynamisches-dns.de\0"
-"rel.pl\0"
-"sa.gov.au\0barsycenter.com\0"
-"codes\0"
-"takayama.gunma.jp\0olsztyn.pl\0"
-"za.com\0"
-"mamurogawa.yamagata.jp\0"
-"intelligence.museum\0\xc3\xb8stre-toten.no\0farm\0"
-"\xc3\xa1k\xc5\x8boluokta.no\0"
-"pe.kr\0"
-"mer\xc3\xa5ker.no\0"
-"dental\0"
-"sch.zm\0"
-"yosemite.museum\0dyndns.org\0"
-"katsuyama.fukui.jp\0"
-"x.se\0afamilycompany\0vacations\0"
-"rieti.it\0"
-"ru.eu.org\0se.eu.org\0"
-"kounosu.saitama.jp\0fast\0"
-"bill.museum\0"
-"akabira.hokkaido.jp\0"
-"matsuno.ehime.jp\0fbxos.fr\0"
-"\xe6\x95\x8e\xe8\x82\xb2.hk\0\xd1\x81\xd1\x80\xd0\xb1\0wedeploy.io\0"
-"achi.nagano.jp\0"
-"ifm\0nike\0"
-"happou.akita.jp\0"
-"gleeze.com\0"
-"airforce\0hk.org\0"
-"k12.wy.us\0"
-"rr.gov.br\0tawaramoto.nara.jp\0"
-"mansion.museum\0ulvik.no\0tunk.org\0"
-"venezia.it\0"
-"tel.tr\0"
-"iwata.shizuoka.jp\0incheon.kr\0"
-"castle.museum\0bostik\0"
-"fhs.no\0h\xc3\xa5.no\0"
-"nishiawakura.okayama.jp\0tabuse.yamaguchi.jp\0wskr.gov.pl\0"
-"\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0*.compute.amazonaws.com\0webhop.me\0"
-"karasuyama.tochigi.jp\0"
-"zushi.kanagawa.jp\0"
-"homeunix.com\0"
-"trentino-sud-tirol.it\0"
-"christmas\0"
-"val-daosta.it\0iwakuni.yamaguchi.jp\0"
-"joburg\0"
-"nic.tj\0"
-"jab.br\0*.kitakyushu.jp\0"
-"donostia.museum\0kvinnherad.no\0"
-"\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0"
-"eti.br\0aizuwakamatsu.fukushima.jp\0kitakami.iwate.jp\0"
-"belau.pw\0philips\0sa.com\0"
-"cuiaba.br\0kamiichi.toyama.jp\0"
-"her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0vaksdal.no\0"
-"rs.gov.br\0sc.gov.br\0asti.it\0"
-"historisches.museum\0"
-"nhs.uk\0flynnhub.com\0"
-"soo.kagoshima.jp\0"
-"pesarourbino.it\0"
-"flekkefjord.no\0"
-"americana.museum\0leangaviika.no\0torsken.no\0"
-"zp.gov.pl\0center\0"
-"myhome-server.de\0"
-"rmit\0"
-"hdfc\0\xe4\xb8\xad\xe4\xbf\xa1\0familyds.com\0"
-"srv.br\0milan.it\0tosu.saga.jp\0"
-"forgot.his.name\0"
-"am.gov.br\0turen.tn\0"
-"groks-the.info\0"
-"h\xc3\xa1pmir.no\0"
-"fujikawa.shizuoka.jp\0"
-"tsukuba.ibaraki.jp\0kitadaito.okinawa.jp\0"
-"ri.it\0"
-"*.nom.br\0okazaki.aichi.jp\0izumo.shimane.jp\0"
-"airline.aero\0ca.eu.org\0logoip.com\0"
-"bi.it\0museum.tt\0"
-"natori.miyagi.jp\0"
-"namsskogan.no\0macys\0"
-"sondre-land.no\0"
-"historisch.museum\0"
-"imari.saga.jp\0homedepot\0"
-"shoes\0"
-"kharkov.ua\0from-nj.com\0"
-"kawakita.ishikawa.jp\0"
-"fedorainfracloud.org\0"
-"osasco.br\0friuli-vgiulia.it\0"
-"cymru\0"
-"washtenaw.mi.us\0"
-"tsuyama.okayama.jp\0boston\0"
-"tokai.ibaraki.jp\0"
-"sherbrooke.museum\0virtuel.museum\0"
-"tm.cy\0inc\0"
-"scholarships\0bryansk.su\0"
-"komoro.nagano.jp\0kunigami.okinawa.jp\0"
-"lib.al.us\0ing\0"
-"uryu.hokkaido.jp\0"
-"cc.ri.us\0ink\0"
-"turystyka.pl\0"
-"directory\0"
-"cloudns.us\0"
-"rn.gov.br\0int\0"
-"kutchan.hokkaido.jp\0"
-"verran.no\0"
-"lib.me.us\0"
+"emergency.aero\0"
+"morena.br\0funahashi.toyama.jp\0org.tt\0"
+"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
"oristano.it\0"
-"bolivia.bo\0"
-"group\0"
+"eigersund.no\0org.tw\0org.ug\0"
+"aichi.jp\0cuisinella\0pet\0"
+"name.tj\0"
+"shonai.fukuoka.jp\0org.uk\0blogsite.org\0"
+"lease\0ovh\0"
+"gangaviika.no\0coop.py\0"
+"foundation.museum\0tromso.no\0telebit.io\0"
+"semboku.akita.jp\0tree.museum\0"
+"name.tr\0"
+"org.vc\0"
+"name.tt\0ddnsgeek.com\0"
+"hachirogata.akita.jp\0tcm.museum\0org.ve\0"
+"kamaishi.iwate.jp\0"
+"bt.it\0"
+"karaganda.su\0"
+"shikaoi.hokkaido.jp\0org.uy\0org.vi\0town\0"
+"okayama.okayama.jp\0org.uz\0"
+"iruma.saitama.jp\0"
+"org.vn\0barsy.pro\0"
+"v.bg\0"
+"codespot.com\0git-pages.rit.edu\0"
+"gjerstad.no\0rel.pl\0"
+"kiyama.saga.jp\0org.vu\0"
+"chuo.chiba.jp\0phd\0hr.eu.org\0"
+"asuke.aichi.jp\0communication.museum\0"
+"nagi.okayama.jp\0athleta\0dnsiskinky.com\0"
+"coop.km\0org.ws\0"
+"podlasie.pl\0of.london\0"
+"club.aero\0uto.kumamoto.jp\0yoshida.saitama.jp\0"
+"otobe.hokkaido.jp\0"
+"shima.mie.jp\0haus\0"
+"pid\0"
+"ichihara.chiba.jp\0tv.na\0lib.vt.us\0"
+"leirvik.no\0"
+"notodden.no\0dc.us\0"
+"toys\0"
+"kouyama.kagoshima.jp\0"
+"vik.no\0akdn\0is-a-designer.com\0"
+"barsy.pub\0"
+"kitashiobara.fukushima.jp\0"
+"pin\0search\0"
+"aeroclub.aero\0"
+"horokanai.hokkaido.jp\0"
+"port.fr\0"
+"miyawaka.fukuoka.jp\0yatsushiro.kumamoto.jp\0yamatokoriyama.nara.jp\0koganei.tokyo.jp\0"
+"lgbt\0"
+"sakuragawa.ibaraki.jp\0usercontent.jp\0"
+"lib.il.us\0"
+"name.qa\0org.za\0"
+"luster.no\0name.pr\0"
+"pi.gov.br\0mr.no\0"
+"chernigov.ua\0"
+"sells-it.net\0"
+"from-in.com\0"
+"fujisato.akita.jp\0"
+"ichinohe.iwate.jp\0"
+"org.zm\0"
+"davvesiida.no\0"
+"horten.no\0kviteseid.no\0"
+"broker.aero\0saitama.jp\0kitanakagusuku.okinawa.jp\0name.na\0\xeb\x8b\xb7\xeb\x84\xb7\0"
+"troandin.no\0"
+"bialowieza.pl\0"
+"name.mv\0"
+"name.ng\0org.zw\0"
+"koka.shiga.jp\0"
+"name.my\0"
+"tagawa.fukuoka.jp\0"
+"nike\0"
+"yamanashi.jp\0"
+"serveftp.net\0"
+"riopreto.br\0"
+"tochigi.tochigi.jp\0oregontrail.museum\0"
+"intl.tn\0"
+"walbrzych.pl\0"
+"noshiro.akita.jp\0"
+"prvcy.page\0"
+"reklam.hu\0cc.tx.us\0"
"play\0"
-"e.se\0erni\0"
-"ome.tokyo.jp\0"
-"chicago.museum\0steiermark.museum\0"
-"tm.fr\0yachimata.chiba.jp\0beppu.oita.jp\0"
-"camdvr.org\0hb.cldmail.ru\0"
-"ap.gov.br\0"
-"omi.nagano.jp\0"
-"eiheiji.fukui.jp\0"
-"ro.gov.br\0seirou.niigata.jp\0nishinoshima.shimane.jp\0"
-"somna.no\0"
-"setouchi.okayama.jp\0"
-"iris.arpa\0ravendb.community\0uklugs.org\0"
-"fuji.shizuoka.jp\0gmina.pl\0"
-"dvrdns.org\0"
-"joboji.iwate.jp\0"
-"gs.tm.no\0cd.eu.org\0"
-"kawazu.shizuoka.jp\0"
-"mo.cn\0chiyoda.tokyo.jp\0"
-"dh.bytemark.co.uk\0"
-"asahi.ibaraki.jp\0tsu.mie.jp\0"
-"ap.gov.pl\0total\0"
-"v.bg\0bus.museum\0namsos.no\0"
-"nanmoku.gunma.jp\0bel.tr\0"
-"tm.hu\0"
-"drobak.no\0mex.com\0"
-"hikone.shiga.jp\0jcb\0"
-"malvik.no\0agric.za\0wang\0fastvps-server.com\0"
-"is-a-chef.org\0"
-"prato.it\0*.cryptonomic.net\0"
-"!city.kitakyushu.jp\0"
-"\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0"
-"mayfirst.org\0"
-"shirosato.ibaraki.jp\0izumisano.osaka.jp\0kiyose.tokyo.jp\0jcp\0"
-"omasvuotna.no\0"
-"schokoladen.museum\0official.academy\0"
-"togane.chiba.jp\0yotsukaido.chiba.jp\0ist\0"
-"wa.au\0clothing\0"
-"hongo.hiroshima.jp\0"
-"services.aero\0tas.au\0rivne.ua\0"
-"her\xc3\xb8y.nordland.no\0"
-"conference.aero\0"
-"andriatranibarletta.it\0museum.mv\0"
-"museum.mw\0is-a-therapist.com\0"
-"itv\0"
-"tm.km\0"
-"pomorskie.pl\0dyndns.tv\0"
-"bonn.museum\0"
-"kiyosato.hokkaido.jp\0"
-"museum.no\0"
-"nagato.yamaguchi.jp\0"
-"casacam.net\0"
-"bamble.no\0"
-"pv.it\0"
-"is-a-candidate.org\0"
-"k12.or.us\0"
-"shibetsu.hokkaido.jp\0shiojiri.nagano.jp\0"
-"surrey.museum\0forsale\0"
-"\xe5\xa4\xa7\xe9\x98\xaa.jp\0"
-"museum.om\0"
-"tm.mc\0"
-"tajimi.gifu.jp\0edunet.tn\0"
-"izumozaki.niigata.jp\0"
-"tm.mg\0"
-"hokkaido.jp\0"
-"bozen.it\0"
-"dyndns-remote.com\0"
-"ri.us\0hotels\0"
-"agdenes.no\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
-"itakura.gunma.jp\0"
-"dyndns.ws\0"
-"mo.it\0toyoura.hokkaido.jp\0"
-"tm.no\0k12.la.us\0"
-"woodside\0"
-"delaware.museum\0h\xc3\xa1mm\xc3\xa1rfeasta.no\0lamborghini\0reliance\0"
-"cancerresearch\0"
-"is-a-chef.com\0"
-"arkhangelsk.su\0"
-"s\xc3\xa1l\xc3\xa1t.no\0"
-"hiraya.nagano.jp\0"
-"yamato.fukushima.jp\0"
-"webspace.rocks\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0"
-"jio\0u2.xnbay.com\0"
-"gen.mi.us\0"
-"brother\0"
-"cloudns.pw\0"
-"tm.pl\0"
-"town\0"
-"kawanishi.hyogo.jp\0"
-"charter.aero\0vegas\0"
-"k12.id.us\0"
-"sanuki.kagawa.jp\0agematsu.nagano.jp\0haga.tochigi.jp\0"
-"holdings\0"
-"higashi.fukushima.jp\0"
+"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
+"abbott\0pnc\0"
+"nishigo.fukushima.jp\0"
+"cc.mt.us\0cc.nd.us\0"
+"tosashimizu.kochi.jp\0tv.sd\0"
+"saigawa.fukuoka.jp\0detroit.museum\0"
+"workisboring.com\0"
+"anjo.aichi.jp\0"
+"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0"
+"sauherad.no\0"
+"lindesnes.no\0"
+"dynalias.com\0""4lima.de\0"
+"shimamaki.hokkaido.jp\0"
+"ibigawa.gifu.jp\0"
+"aisho.shiga.jp\0name.mk\0"
+"botanical.museum\0"
+"garden.museum\0"
"nes.akershus.no\0"
-"\xe6\x9b\xb8\xe7\xb1\x8d\0"
-"profesional.bo\0lviv.ua\0homesecuritypc.com\0"
-"dnsup.net\0"
-"vossevangen.no\0"
-"m\xc4\x81ori.nz\0"
-"cc.mo.us\0pgfog.com\0"
-"guge\0"
-"kanonji.kagawa.jp\0"
-"nebraska.museum\0"
-"kawagoe.saitama.jp\0"
-"download\0"
-"southcarolina.museum\0bremanger.no\0"
-"grosseto.it\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0"
-"evje-og-hornnes.no\0"
-"oyodo.nara.jp\0"
-"hasama.oita.jp\0"
-"chernigov.ua\0"
-"sumoto.hyogo.jp\0"
-"insurance.aero\0tm.ro\0"
-"makurazaki.kagoshima.jp\0"
-"\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0"
-"aomori.aomori.jp\0jll\0"
-"homegoods\0toys\0"
-"tm.se\0cupcake.is\0"
-"seoul.kr\0"
-"neues.museum\0"
-"se.gov.br\0"
-"c.bg\0"
-"upow.gov.pl\0"
-"\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0"
-"tsuruoka.yamagata.jp\0goodyear\0pictet\0"
-"lidl\0"
-"jdevcloud.com\0"
-"jmp\0"
-"s\xc3\xa1lat.no\0"
-"tahara.aichi.jp\0nakagusuku.okinawa.jp\0"
-"steinkjer.no\0"
-"yokoshibahikari.chiba.jp\0nanjo.okinawa.jp\0"
-"press.museum\0"
-"jnj\0"
-"lpages.co\0"
-"higashine.yamagata.jp\0"
-"illustration.museum\0"
-"mragowo.pl\0"
-"bz.it\0mmafan.biz\0"
-"amusement.aero\0s3.dualstack.ca-central-1.amazonaws.com\0cya.gg\0"
-"villas\0"
-"hyllestad.no\0cc.wa.us\0life\0"
-"tatsuno.hyogo.jp\0maori.nz\0"
-"kwp.gov.pl\0"
-"uto.kumamoto.jp\0"
-"dyr\xc3\xb8y.no\0"
-"atsuma.hokkaido.jp\0"
-"nsw.au\0inder\xc3\xb8y.no\0cc.ga.us\0"
-"sabae.fukui.jp\0design\0"
-"sasebo.nagasaki.jp\0jot\0"
-"gucci\0*.alces.network\0"
+"mc.it\0"
+"homebuilt.aero\0freesite.host\0"
+"yamatotakada.nara.jp\0"
+"nagatoro.saitama.jp\0"
+"workshop.museum\0radoy.no\0"
+"time.museum\0"
+"\xe7\xbb\x84\xe7\xb9\x94.hk\0"
+"tv.tr\0"
+"verbania.it\0servegame.org\0"
+"yoita.niigata.jp\0tamayu.shimane.jp\0"
+"name.jo\0"
+"dynserv.org\0"
+"net.ac\0"
+"hamburg.museum\0"
+"net.ae\0"
+"net.af\0tv.tz\0"
+"net.ag\0campidanomedio.it\0"
+"free.hr\0""4lima.at\0"
+"net.ai\0"
+"sakahogi.gifu.jp\0glass\0"
+"net.al\0g.bg\0"
+"net.am\0salem.museum\0"
+"malopolska.pl\0"
+"net.ba\0is-a-conservative.com\0"
+"net.ar\0net.bb\0"
+"on.ca\0kashiwazaki.niigata.jp\0"
+"net.au\0"
+"net.bh\0"
+"net.az\0sydney.museum\0"
+"sh.cn\0""4lima.ch\0"
+"net.bm\0"
+"net.bn\0"
+"net.bo\0"
+"place\0"
+"net.br\0toyonaka.osaka.jp\0members.linode.com\0"
+"net.bs\0"
+"net.bt\0"
+"pe.gov.br\0otaki.chiba.jp\0"
+"pro\0likes-pie.com\0"
+"hichiso.gifu.jp\0es.leg.br\0"
+"industries\0jeep\0"
+"net.ci\0toyokawa.aichi.jp\0"
+"net.bz\0hidaka.saitama.jp\0"
+"gz.cn\0"
+"events\0pru\0"
+"net.cm\0"
+"net.cn\0dray-dns.de\0"
+"net.co\0osaka.jp\0"
+"chesapeakebay.museum\0consulado.st\0lib.ny.us\0"
+"wolomin.pl\0"
+"net.cu\0daito.osaka.jp\0"
+"net.cw\0tsuga.tochigi.jp\0"
+"net.cy\0"
+"hk.org\0"
+"hinode.tokyo.jp\0kawanishi.yamagata.jp\0homeftp.net\0"
+"net.dm\0s3-website.us-east-2.amazonaws.com\0*.hosting.myjino.ru\0"
+"net.do\0service.gov.uk\0"
+"nichinan.tottori.jp\0naamesjevuemie.no\0samsclub\0"
+"kaminoyama.yamagata.jp\0on.fashion\0"
+"minami-alps.yamanashi.jp\0sellsyourhome.org\0"
+"net.ec\0outsystemscloud.com\0"
+"akiruno.tokyo.jp\0"
+"net.eg\0"
+"pub\0"
+"net.dz\0trycloudflare.com\0"
+"ladbrokes\0"
+"pixolino.com\0"
+"austin.museum\0"
+"net.et\0"
+"daigo.ibaraki.jp\0"
+"64-b.it\0"
+"mydobiss.com\0"
+"hashima.gifu.jp\0homesecuritymac.com\0"
+"net.ge\0"
+"net.gg\0"
+"shinyoshitomi.fukuoka.jp\0k12.ri.us\0dst.mi.us\0locker\0bryansk.su\0barsy.org\0"
+"miyama.mie.jp\0"
+"pwc\0"
+"norddal.no\0"
+"net.gl\0"
+"k12.mo.us\0lcube-server.de\0"
+"net.gn\0"
+"qld.gov.au\0"
+"net.gp\0gildesk\xc3\xa5l.no\0"
+"council.aero\0mo-siemens.io\0"
+"net.gr\0"
+"extraspace\0"
+"net.gt\0"
+"net.gu\0cc.me.us\0"
+"budejju.no\0"
"kannami.shizuoka.jp\0"
-"joy\0"
-"nanao.ishikawa.jp\0akagi.shimane.jp\0*.bzz.dapps.earth\0"
-"iraq.museum\0esurance\0"
-"pc.it\0"
-"guam.gu\0"
-"cust.prod.thingdust.io\0"
-"horonobe.hokkaido.jp\0"
-"ibestad.no\0"
-"abc.br\0novara.it\0nichinan.tottori.jp\0fujikawaguchiko.yamanashi.jp\0"
-"wales.museum\0"
-"shikokuchuo.ehime.jp\0help\0"
-"textile.museum\0c66.me\0"
-"\xd1\x83\xd0\xba\xd1\x80\0"
-"dyndns-free.com\0"
-"uki.kumamoto.jp\0"
-"anthropology.museum\0botanicalgarden.museum\0raholt.no\0gjemnes.no\0"
-"us-4.evennode.com\0"
-"deloitte\0"
-"mydissent.net\0"
-"kustanai.ru\0"
-"veg\xc3\xa5rshei.no\0leitungsen.de\0"
-"valleedaoste.it\0"
-"settlers.museum\0sa-east-1.elasticbeanstalk.com\0"
-"sa.gov.pl\0clubmed\0"
-"paleo.museum\0"
-"rnrt.tn\0"
-"kustanai.su\0"
+"net.gy\0ascolipiceno.it\0"
+"net.hk\0"
+"shingu.fukuoka.jp\0k12.ca.us\0*.compute.amazonaws.com.cn\0"
+"vr.it\0"
+"osasco.br\0net.hn\0"
+"pa.gov.pl\0blackfriday\0"
+"forum.hu\0hiji.oita.jp\0presidio.museum\0"
+"net.ht\0net.id\0"
+"\xda\x80\xd8\xa7\xd8\xb1\xd8\xaa\0"
+"kasumigaura.ibaraki.jp\0"
+"ookuwa.nagano.jp\0"
+"synology.me\0"
+"net.il\0mobara.chiba.jp\0koshigaya.saitama.jp\0"
+"net.im\0"
+"net.in\0""12hp.de\0"
+"net.iq\0"
+"net.ir\0delaware.museum\0myvnc.com\0"
+"net.is\0"
+"net.je\0"
+"career\0"
+"asakuchi.okayama.jp\0"
+"miho.ibaraki.jp\0"
+"ogawa.ibaraki.jp\0storj.farm\0"
+"vix.br\0"
+"ashoro.hokkaido.jp\0"
+"shingo.aomori.jp\0fitness\0"
+"net.jo\0"
+"unnan.shimane.jp\0"
+"hida.gifu.jp\0"
+"net.kg\0"
+"trentinosuedtirol.it\0net.ki\0"
+"upow.gov.pl\0"
+"taifun-dns.de\0"
+"yamakita.kanagawa.jp\0pubtls.org\0"
+"12hp.at\0"
+"net.kn\0"
+"media.hu\0gripe\0"
+"shinanomachi.nagano.jp\0net.la\0"
+"net.lb\0"
+"tra.kp\0net.lc\0grajewo.pl\0"
+"amakusa.kumamoto.jp\0"
+"net.kw\0"
+"satosho.okayama.jp\0net.ky\0"
+"net.kz\0metlife\0"
+"net.lk\0il.eu.org\0basicserver.io\0"
+"bedzin.pl\0"
+"firm.ht\0valley.museum\0"
+"gs.hl.no\0"
+"aridagawa.wakayama.jp\0"
+"hiroo.hokkaido.jp\0karumai.iwate.jp\0net.ma\0""12hp.ch\0"
+"net.lr\0"
+"net.ls\0reviews\0"
+"pr.gov.br\0net.me\0"
+"net.lv\0"
+"firm.in\0"
+"cq.cn\0net.ly\0gs.ah.no\0"
+"net.mk\0"
+"net.ml\0"
+"lahppi.no\0"
+"agro.bo\0"
+"net.mo\0"
+"miyakonojo.miyazaki.jp\0"
+"net.ms\0"
+"net.mt\0"
+"kozagawa.wakayama.jp\0net.mu\0clinic\0"
+"net.mv\0net.nf\0orange\0"
+"net.mw\0net.ng\0www.ro\0"
+"morioka.iwate.jp\0net.mx\0"
+"net.my\0net.ni\0nikon\0"
+"net.mz\0office-on-the.net\0"
+"r\xc3\xb8yken.no\0hu.eu.org\0ie.eu.org\0"
+"coupon\0moonscale.net\0"
"kyiv.ua\0"
-"control.aero\0tm.za\0data\0lundbeck\0dattolocal.com\0"
-"chiba.jp\0"
-"rollag.no\0date\0"
+"net.nr\0"
+"!city.sendai.jp\0"
+"lyngdal.no\0"
+"nes.buskerud.no\0"
+"tsu.mie.jp\0"
+"firm.co\0"
+"net.nz\0"
+"kanoya.kagoshima.jp\0"
+"naval.museum\0net.om\0"
+"togo.aichi.jp\0net.pa\0"
+"civilaviation.aero\0"
+"utazas.hu\0"
+"net.pe\0firm.dk\0"
+"dielddanuorri.no\0"
+"blogspot.com\0"
+"net.ph\0"
+"net.pk\0fage\0"
+"jus.br\0net.pl\0africa\0dyn.home-webserver.de\0"
+"likescandy.com\0"
+"net.pn\0dyndns.tv\0"
+"cc.vt.us\0"
+"haboro.hokkaido.jp\0saintlouis.museum\0net.qa\0bostik\0"
+"uri.arpa\0net.pr\0"
+"kawanishi.hyogo.jp\0szczecin.pl\0net.ps\0"
+"hvaler.no\0net.pt\0"
+"bo.nordland.no\0gov.nc.tr\0"
+"k12.nj.us\0"
+"joso.ibaraki.jp\0net.py\0"
+"gorge.museum\0"
+"lesja.no\0"
"plus\0"
-"maibara.shiga.jp\0"
-"trani-andria-barletta.it\0epson\0"
-"ruovat.no\0mo.us\0"
-"ueda.nagano.jp\0"
-"like\0"
-"birdart.museum\0"
-"gateway.museum\0pagefrontapp.com\0"
-"higashihiroshima.hiroshima.jp\0"
-"fribourg.museum\0etnedal.no\0"
-"port.fr\0"
-"union.aero\0"
-"aju.br\0"
-"higashichichibu.saitama.jp\0"
+"children.museum\0"
+"caravan\0"
+"yamada.toyama.jp\0"
+"vc.it\0lea\xc5\x8bgaviika.no\0"
+"ebina.kanagawa.jp\0bus.museum\0"
+"itakura.gunma.jp\0mesaverde.museum\0"
+"suedtirol.it\0"
+"g.se\0"
+"ri.it\0education.museum\0"
+"ally\0"
+"emilia-romagna.it\0"
+"no.it\0babia-gora.pl\0"
+"net.sa\0static.land\0"
+"fudai.iwate.jp\0net.sb\0fail\0"
+"net.sc\0secure\0"
+"net.sd\0s3-website-sa-east-1.amazonaws.com\0"
+"net.ru\0"
+"komaki.aichi.jp\0media.pl\0net.rw\0net.sg\0"
+"net.sh\0"
+"gen.in\0kunstsammlung.museum\0"
+"dyndns.ws\0"
+"fussa.tokyo.jp\0net.sl\0"
+"yaita.tochigi.jp\0net.so\0"
+"chernovtsy.ua\0"
+"tawaramoto.nara.jp\0"
+"net.ss\0taipei\0"
+"net.st\0serveblog.net\0api.stdlib.com\0"
+"crotone.it\0"
+"net.th\0physio\0"
+"net.sy\0"
+"trentinoaltoadige.it\0eidsvoll.no\0net.tj\0monash\0"
+"sorum.no\0net.tm\0"
+"net.tn\0"
+"net.to\0"
+"net.ua\0chernihiv.ua\0"
+"net.tr\0"
+"dp.ua\0"
+"net.tt\0"
+"mp.br\0bomlo.no\0net.tw\0my-router.de\0"
+"\xc3\xa5""fjord.no\0duckdns.org\0"
+"room\0"
+"machida.tokyo.jp\0"
+"net.uk\0red\0theater\0"
"furano.hokkaido.jp\0"
-"yamanouchi.nagano.jp\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
-"stange.no\0us-3.evennode.com\0"
-"toda.saitama.jp\0"
-"newport.museum\0locus\0"
+"design.aero\0silk.museum\0"
+"hikari.yamaguchi.jp\0"
+"healthcare\0"
+"us.na\0lib.wy.us\0net.vc\0dyndns-wiki.com\0"
+"szczytno.pl\0krakow.pl\0"
+"net.ve\0ren\0"
+"erotika.hu\0"
+"shintomi.miyazaki.jp\0"
+"chuo.tokyo.jp\0"
+"net.uy\0net.vi\0"
+"kagami.kochi.jp\0net.uz\0qvc\0"
+"pyatigorsk.ru\0"
+"net.vn\0"
+"wildlife.museum\0"
+"augustow.pl\0"
+"tozawa.yamagata.jp\0boston\0sa.com\0"
+"net.vu\0linkyard.cloud\0"
+"watarai.mie.jp\0teaches-yoga.com\0"
+"lib.ia.us\0"
+"farm.museum\0newmexico.museum\0"
+"odawara.kanagawa.jp\0"
+"takasu.hokkaido.jp\0nakatane.kagoshima.jp\0"
+"mat.br\0"
+"lpusercontent.com\0"
+"stavanger.no\0"
+"bjarkoy.no\0"
+"saga.jp\0"
+"toyota.yamaguchi.jp\0gen.ng\0"
+"wif.gov.pl\0net.ws\0"
+"gen.mi.us\0"
+"belau.pw\0fans\0"
+"gr.eu.org\0"
+"lecce.it\0"
+"from-nm.com\0"
+"gen.nz\0"
+"shimoji.okinawa.jp\0"
+"passagens\0"
+"hdfc\0"
+"matsumae.hokkaido.jp\0"
+"\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0here-for-more.info\0"
+"miasta.pl\0"
+"firm.ve\0"
+"fukusaki.hyogo.jp\0"
+"net.za\0"
+"ontario.museum\0ril\0"
+"avocat.fr\0"
+"szex.hu\0"
+"rio\0"
+"rip\0"
+"sandiego.museum\0"
+"assassination.museum\0"
+"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0"
+"net.zm\0"
+"k12.la.us\0"
+"in-brb.de\0n4t.co\0"
+"autos\0prime\0"
+"cuiaba.br\0works\0"
+"ebetsu.hokkaido.jp\0minami.tokushima.jp\0world\0"
+"tt.im\0"
+"amex\0"
+"tsurugashima.saitama.jp\0"
+"ud.it\0"
+"cc.dc.us\0"
+"store.nf\0"
+"farm\0"
+"pz.it\0winners\0"
+"iwama.ibaraki.jp\0lidl\0"
+"azimuth.network\0"
+"\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0khakassia.su\0"
+"hammarfeasta.no\0po.gov.pl\0"
+"kouhoku.saga.jp\0"
+"u2.xnbay.com\0"
+"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0"
+"nishio.aichi.jp\0kitchen\0"
+"br.it\0cb.it\0"
+"tos.it\0"
+"fast\0"
+"ng.ink\0"
+"akagi.shimane.jp\0edugit.org\0"
+"urbino-pesaro.it\0"
+"fukuoka.jp\0life\0homelink.one\0"
+"pri.ee\0"
+"dyndns-web.com\0"
+"t.bg\0empresa.bo\0"
+"isa-hockeynut.com\0"
+"monza.it\0"
+"friulivgiulia.it\0"
+"repbody.aero\0firm.ro\0"
+"ri.us\0"
+"bahccavuotna.no\0"
+"soo.kagoshima.jp\0gen.tr\0"
+"namdalseid.no\0durban\0kurgan.su\0"
+"is-a-geek.com\0"
+"cool\0"
+"coop\0"
+"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0"
+"gs.mr.no\0aktyubinsk.su\0"
+"zushi.kanagawa.jp\0"
+"okuizumo.shimane.jp\0"
+"karasjok.no\0"
+"bc.ca\0"
+"jpn.com\0"
+"emerck\0"
+"\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0"
"nose.osaka.jp\0"
-"north.museum\0"
-"kfh\0"
-"here\0"
-"bukhara.su\0ras.ru\0"
-"nishinoomote.kagoshima.jp\0"
-"c.la\0"
-"oe.yamagata.jp\0"
-"limo\0*.s5y.io\0"
-"rocher\0"
-"godo.gifu.jp\0shikama.miyagi.jp\0pc.pl\0"
+"roan.no\0"
+"hashikami.aomori.jp\0"
+"homeoffice.gov.uk\0"
+"ketrzyn.pl\0"
+"walter\0"
+"olbiatempio.it\0"
+"\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0"
+"usa.oita.jp\0serveftp.org\0"
+"caxias.br\0taxi.br\0imari.saga.jp\0"
+"paragliding.aero\0"
+"firm.nf\0"
+"firm.ng\0"
+"firestone\0"
+"\xe6\x94\xbf\xe5\x8a\xa1\0"
+"sap\0"
+"yamagata.gifu.jp\0skj\xc3\xa5k.no\0sas\0"
+"like\0"
+"sbi\0"
+"nakanoto.ishikawa.jp\0viajes\0"
+"gyeonggi.kr\0"
+"amot.no\0solar\0co.events\0"
+"theworkpc.com\0"
+"higashisumiyoshi.osaka.jp\0smile\0"
+"sca\0"
+"shimogo.fukushima.jp\0cpa.pro\0scb\0"
+"sbs\0"
+"agro.pl\0"
+"qsl.br\0"
+"kurogi.fukuoka.jp\0"
+"shopitsite.com\0"
+"weir\0"
+"environment.museum\0store.ve\0"
+"servequake.com\0"
+"fortworth.museum\0"
+"alesund.no\0"
+"trading\0pony.club\0"
+"miyoshi.tokushima.jp\0principe.st\0from-me.org\0"
+"is-a-musician.com\0"
+"alvdal.no\0"
+"\xe7\xbd\x91\xe7\xb5\xa1.hk\0matsushige.tokushima.jp\0"
+"te.it\0limo\0"
+"cooperativa.bo\0"
+"kochi.kochi.jp\0b\xc3\xb8.telemark.no\0"
+"ravendb.me\0"
+"paleo.museum\0mutual\0"
+"kommune.no\0"
+"johana.toyama.jp\0"
"jur.pro\0"
-"miasa.nagano.jp\0"
-"n\xc3\xb8tter\xc3\xb8y.no\0"
-"en.it\0"
-"design.aero\0"
-"takinoue.hokkaido.jp\0shinjo.yamagata.jp\0"
-"barcelona.museum\0guru\0"
-"bas.it\0kita.kyoto.jp\0"
-"link\0"
-"nyny.museum\0"
-"wa.us\0"
-"show.aero\0usantiques.museum\0"
-"asago.hyogo.jp\0wiih.gov.pl\0"
-"heimatunduhren.museum\0"
-"ikoma.nara.jp\0"
-"ga.us\0"
-"gyeongbuk.kr\0ybo.faith\0"
-"kia\0"
-"rg.it\0shizukuishi.iwate.jp\0"
-"shobara.hiroshima.jp\0"
-"uber.space\0"
-"hb.cn\0store.nf\0"
-"bushey.museum\0ashgabad.su\0"
-"bg.it\0mimata.miyazaki.jp\0"
-"kim\0promo\0ch.eu.org\0"
-"matsubara.osaka.jp\0"
-"us-2.evennode.com\0"
-"logistics.aero\0windows\0"
-"minano.saitama.jp\0"
-"salem.museum\0"
-"cremona.it\0higashiyama.kyoto.jp\0"
-"watch-and-clock.museum\0"
-"shibecha.hokkaido.jp\0"
-"funagata.yamagata.jp\0"
-"motosu.gifu.jp\0kuroiso.tochigi.jp\0"
-"yoshida.shizuoka.jp\0"
-"paris.eu.org\0"
-"davvenj\xc3\xa1rga.no\0amica\0"
-"western.museum\0"
-"environmentalconservation.museum\0schule\0own.pm\0"
-"noto.ishikawa.jp\0iwatsuki.saitama.jp\0"
+"novara.it\0link\0"
+"run\0""1337.pictures\0"
+"forl\xc3\xac-cesena.it\0sokndal.no\0"
+"fujixerox\0"
+"toyohashi.aichi.jp\0"
+"ses\0"
+"takayama.gifu.jp\0"
+"sew\0"
+"sex\0"
+"okutama.tokyo.jp\0"
+"omaha.museum\0"
+"kodaira.tokyo.jp\0kinder\0sfr\0"
+"e.bg\0"
+"rwe\0"
+"kasuga.hyogo.jp\0erni\0"
+"zj.cn\0cheltenham.museum\0"
+"gyeongbuk.kr\0"
+"polkowice.pl\0"
+"dyndns.biz\0"
+"mill.museum\0ivano-frankivsk.ua\0network\0"
+"kawatana.nagasaki.jp\0"
+"store.ro\0nyc.mn\0"
+"kvitsoy.no\0"
+"omachi.nagano.jp\0isa-geek.org\0"
+"makinohara.shizuoka.jp\0hamaroy.no\0"
+"tecnologia.bo\0giessen.museum\0"
+"izunokuni.shizuoka.jp\0fl.us\0"
+"pilot.aero\0"
+"stada\0"
+"hyundai\0"
+"gx.cn\0is-a-geek.org\0"
+"shiranuka.hokkaido.jp\0vestby.no\0"
+"mito.ibaraki.jp\0theatre\0app.render.com\0"
+"aquila.it\0lib.ok.us\0"
+"store.st\0ens.tn\0spdns.eu\0"
+"missile.museum\0"
+"barletta-trani-andria.it\0"
+"jobs.tt\0\xe6\x9b\xb8\xe7\xb1\x8d\0"
+"misawa.aomori.jp\0"
+"ibaraki.ibaraki.jp\0oi.kanagawa.jp\0"
+"eti.br\0oirase.aomori.jp\0paroch.k12.ma.us\0guge\0"
+"shirosato.ibaraki.jp\0"
+"pharmacien.fr\0"
+"blogspot.vn\0"
+"furubira.hokkaido.jp\0"
+"santabarbara.museum\0"
+"mielec.pl\0"
+"aaa.pro\0"
+"jewelry\0"
+"ski\0"
+"\xe6\x9d\xb1\xe4\xba\xac.jp\0avocat.pro\0safe\0"
+"travelers\0"
+"kamiichi.toyama.jp\0"
"info.gu\0"
-"nom.ad\0yuza.yamagata.jp\0"
-"nom.ae\0"
-"nom.af\0"
-"nom.ag\0"
-"isumi.chiba.jp\0shirakawa.gifu.jp\0witd.gov.pl\0"
-"square.museum\0nom.ai\0"
-"astronomy.museum\0vinnytsia.ua\0"
-"kasahara.gifu.jp\0nom.al\0"
-"funabashi.chiba.jp\0"
-"\xe4\xb8\x96\xe7\x95\x8c\0"
-"nature.museum\0bo.nordland.no\0"
-"info.ht\0ono.fukui.jp\0"
-"info.hu\0tank.museum\0"
-"bloomberg\0"
-"kofu.yamanashi.jp\0co.education\0"
-"sp.leg.br\0"
-"freiburg.museum\0"
-"machida.tokyo.jp\0"
-"obu.aichi.jp\0gifu.gifu.jp\0ashikaga.tochigi.jp\0"
-"info.et\0"
-"arte.bo\0homeftp.org\0"
-"us-1.evennode.com\0"
-"shika.ishikawa.jp\0"
+"kitahiroshima.hokkaido.jp\0"
+"hakodate.hokkaido.jp\0"
+"mw.gov.pl\0nadex\0dnsupdater.de\0"
+"sky\0"
+"kiyose.tokyo.jp\0"
+"seranishi.hiroshima.jp\0freemasonry.museum\0"
+"info.ht\0university.museum\0"
+"info.hu\0griw.gov.pl\0\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"works.aero\0"
+"lib.ee\0k12.ne.us\0kindle\0"
+"stor-elvdal.no\0live\0"
+"konyvelo.hu\0drobak.no\0beep.pl\0"
+"istanbul\0"
+"sanfrancisco.museum\0"
+"kuji.iwate.jp\0hayashima.okayama.jp\0"
+"miura.kanagawa.jp\0"
+"suzuka.mie.jp\0mine.nu\0"
+"info.et\0koga.fukuoka.jp\0singles\0"
+"mattel\0vistaprint\0"
+"blogspot.re\0"
+"mizusawa.iwate.jp\0"
+"vda.it\0bnr.la\0"
+"t.se\0"
+"alessandria.it\0"
+"hotels\0blogspot.ro\0"
+"ms.gov.br\0"
+"gamo.shiga.jp\0onrender.com\0"
+"minamiawaji.hyogo.jp\0*.triton.zone\0pgfog.com\0"
+"sor-varanger.no\0is-an-entertainer.com\0blogspot.rs\0"
+"maizuru.kyoto.jp\0blogspot.ru\0blogspot.se\0"
+"kr.it\0ovre-eiker.no\0"
+"blogspot.sg\0"
+"trentino-sud-tirol.it\0netflix\0"
+"blogspot.si\0"
+"blogspot.sk\0spdns.de\0"
+"*.transurl.be\0"
+"\xe5\xa5\x88\xe8\x89\xaf.jp\0yaotsu.gifu.jp\0flatanger.no\0schmidt\0"
+"skiptvet.no\0blogspot.sn\0"
+"te.ua\0"
+"shell.museum\0"
+"help\0kaluga.su\0"
+"palermo.it\0portland.museum\0spa\0"
+"hirogawa.wakayama.jp\0blogspot.td\0"
+"hiroshima.jp\0info.cx\0"
+"yk.ca\0web.app\0"
+"co.ae\0"
+"soy\0"
+"co.ag\0aver\xc3\xb8y.no\0"
+"higashiizu.shizuoka.jp\0"
+"download\0"
+"urawa.saitama.jp\0doomdns.org\0krasnik.pl\0"
+"mt.gov.br\0info.ec\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0ad.jp\0"
+"co.am\0"
+"co.ao\0tab\0"
+"adm.br\0freedesktop.org\0"
+"chigasaki.kanagawa.jp\0cieszyn.pl\0"
+"co.bb\0blogspot.tw\0blogspot.ug\0"
+"co.at\0"
+"ma.us\0sale\0"
+"co.bi\0sekigahara.gifu.jp\0"
+"info.bb\0fukushima.fukushima.jp\0"
+"higashiyodogawa.osaka.jp\0"
+"info.at\0"
+"info.au\0blogspot.mr\0"
+"joyo.kyoto.jp\0co.bn\0"
+"nm.cn\0os.hordaland.no\0alwaysdata.net\0"
+"temasek\0"
+"nrw.museum\0sande.m\xc3\xb8re-og-romsdal.no\0co.ca\0"
+"info.az\0moriyoshi.akita.jp\0"
+"togitsu.nagasaki.jp\0blogspot.mx\0"
+"js.cn\0blogspot.my\0"
+"nagoya\0tax\0is-a-celticsfan.org\0"
+"as.us\0"
+"info.bo\0co.bw\0blogspot.nl\0"
+"webhop.biz\0"
+"co.ci\0belluno.it\0shiiba.miyazaki.jp\0srl\0"
+"kawajima.saitama.jp\0blogspot.no\0"
+"co.cl\0agrar.hu\0naturalhistory.museum\0"
+"co.cm\0assn.lk\0"
+"lib.nh.us\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0"
+"from-mo.com\0"
+"vall\xc3\xa9""edaoste.it\0srt\0"
+"co.cr\0sf.no\0b\xc3\xa1hcavuotna.no\0"
+"scrapper-site.net\0"
+"kihoku.ehime.jp\0s\xc3\xb8gne.no\0"
+"tajiri.osaka.jp\0tci\0"
+"info.co\0ol.no\0marriott\0*.transurl.eu\0"
+"yuki.ibaraki.jp\0endoftheinternet.org\0"
+"drangedal.no\0co.cz\0"
+"co.dk\0"
+"wakasa.fukui.jp\0"
+"pohl\0"
+"stc\0blogspot.pe\0"
+"us.eu.org\0"
+"barclaycard\0"
+"herokuapp.com\0"
+"hitra.no\0"
+"carrier.museum\0tdk\0dyndns-free.com\0"
+"axis.museum\0"
+"ac.gov.br\0pimienta.org\0"
+"kawagoe.mie.jp\0"
+"clinique\0blogspot.qa\0"
+"blogspot.pt\0"
+"here\0"
+"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0tel\0isa-geek.com\0"
+"cam.it\0workers.dev\0"
+"groundhandling.aero\0"
+"blogspot.is\0"
+"wnext.app\0blogspot.it\0"
+"marylhurst.museum\0"
+"guru\0"
+"bjugn.no\0"
+"pueblo.bo\0"
+"gallery.museum\0k12.pr.us\0"
+"co.gg\0"
+"yokote.akita.jp\0soundandvision.museum\0"
+"blogspot.jp\0cust.dev.thingdust.io\0"
+"co.gl\0farmstead.museum\0"
+"store.bb\0"
+"is-a-student.com\0"
+"co.gy\0toyama.jp\0n\xc3\xa1vuotna.no\0nore-og-uvdal.no\0"
+"hadsel.no\0supply\0"
+"va.it\0"
+"culturalcenter.museum\0"
+"hatsukaichi.hiroshima.jp\0restaurant\0blogspot.kr\0"
+"sarl\0"
+"e.se\0from-mi.com\0"
+"rg.it\0"
+"thd\0fr.eu.org\0"
+"ninja\0"
+"kristiansund.no\0"
+"co.id\0blogspot.li\0development.run\0"
+"co.hu\0pagespeedmobilizer.com\0"
+"bmd.br\0b\xc3\xa6rum.no\0maserati\0"
+"off.ai\0cranbrook.museum\0"
+"date.fukushima.jp\0"
+"bhz.br\0nishikata.tochigi.jp\0"
+"co.il\0"
+"co.im\0"
+"co.in\0"
+"blogspot.lt\0blogspot.md\0"
+"blogspot.lu\0"
+"bridgestone\0"
+"co.ir\0nakanojo.gunma.jp\0"
+"co.it\0rv.ua\0"
+"co.je\0"
+"blogspot.mk\0"
+"shinshinotsu.hokkaido.jp\0travel\0\xd0\xba\xd0\xbe\xd0\xbc\0cleverapps.io\0"
+"kamifurano.hokkaido.jp\0"
+"kamikawa.hokkaido.jp\0"
+"pesaro-urbino.it\0"
+"store.dk\0"
+"it.ao\0kr.ua\0"
+"hole.no\0czeladz.pl\0"
+"co.jp\0"
+"laspezia.it\0sakae.nagano.jp\0"
+"tennis\0"
+"blogspot.fi\0"
+"pol.dz\0co.ke\0"
+"shinshiro.aichi.jp\0"
+"gru.br\0"
+"artdeco.museum\0dn.ua\0"
+"oppegard.no\0"
+"\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0"
+"kurume.fukuoka.jp\0creation.museum\0homeunix.net\0blogspot.fr\0"
+"!city.nagoya.jp\0mansion.museum\0"
+"uppo.gov.pl\0"
+"co.kr\0"
+"qh.cn\0co.lc\0"
+"tjx\0"
+"rzgw.gov.pl\0save\0"
+"suita.osaka.jp\0"
+"kudamatsu.yamaguchi.jp\0global.ssl.fastly.net\0"
+"vestv\xc3\xa5g\xc3\xb8y.no\0"
+"blogspot.gr\0"
+"*.transurl.nl\0"
+"sanjo.niigata.jp\0guardian\0"
+"co.ma\0"
+"fj.cn\0endofinternet.net\0"
+"co.ls\0"
+"co.me\0barsy.me\0"
+"watch-and-clock.museum\0va.no\0blogspot.hk\0"
+"co.mg\0granvin.no\0lib.mi.us\0"
+"union.aero\0hakone.kanagawa.jp\0co.technology\0"
+"rovigo.it\0"
+"hasvik.no\0"
+"taito.tokyo.jp\0blogspot.hr\0"
+"blogspot.hu\0blogspot.ie\0"
+"vic.gov.au\0co.na\0"
+"omura.nagasaki.jp\0"
+"elblag.pl\0"
+"co.mu\0"
+"co.mw\0"
+"lima-city.de\0"
+"co.ni\0blogspot.in\0"
+"co.mz\0"
+"yamanakako.yamanashi.jp\0in-berlin.de\0"
+"saku.nagano.jp\0co.nl\0blogspot.ba\0"
+"hattfjelldal.no\0info.ve\0"
+"pol.ht\0porn\0co.no\0"
+"insurance\0blogspot.be\0"
+"research.aero\0saxo\0swatch\0"
+"aosta.it\0rifu.miyagi.jp\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0blogspot.bg\0"
+"okayama.jp\0"
+"blogspot.bj\0"
+"transporte.bo\0info.vn\0*.magentosite.cloud\0"
+"kawagoe.saitama.jp\0"
+"co.nz\0"
+"blogspot.ca\0"
+"co.om\0"
+"vantaa.museum\0"
+"weibo\0blogspot.cf\0"
+"fujiyoshida.yamanashi.jp\0nishikatsura.yamanashi.jp\0"
+"kuwana.mie.jp\0blogspot.ch\0"
+"monzaebrianza.it\0post\0"
+"rishirifuji.hokkaido.jp\0yufu.oita.jp\0blogspot.cl\0lima-city.at\0"
+"monzabrianza.it\0repl.co\0"
+"avellino.it\0b\xc3\xa1jddar.no\0"
+"co.pl\0"
+"top\0"
+"co.pn\0"
+"shirako.chiba.jp\0"
+"blogspot.de\0"
+"panasonic\0blogspot.cv\0"
+"cc.ri.us\0"
+"wakkanai.hokkaido.jp\0omitama.ibaraki.jp\0blogspot.cz\0"
+"cng.br\0info.tn\0blogspot.dk\0"
+"co.pw\0"
+"info.tr\0"
+"lima-city.ch\0"
+"info.tt\0"
+"shiga.jp\0dodge\0"
+"konan.aichi.jp\0"
+"symantec\0"
+"elburg.museum\0"
+"nanmoku.gunma.jp\0info.tz\0"
+"i234.me\0"
+"tr.it\0!city.kitakyushu.jp\0"
+"kraanghke.no\0"
+"nasushiobara.tochigi.jp\0university\0"
+"jinsekikogen.hiroshima.jp\0broadway\0tube\0"
+"takatori.nara.jp\0yahiko.niigata.jp\0okinoshima.shimane.jp\0"
+"fujisawa.kanagawa.jp\0cloudfunctions.net\0"
+"curitiba.br\0"
+"mn.it\0filegear.me\0"
+"chrysler\0"
+"yomitan.okinawa.jp\0co.rs\0"
+"sells-for-u.com\0"
+"vang.no\0"
+"info.ro\0co.rw\0"
+"fresenius\0"
+"filatelia.museum\0olsztyn.pl\0info.sd\0data\0"
+"snaase.no\0nhlfan.net\0"
+"date\0ubs\0"
+"trv\0"
+"co.st\0"
+"barsy.online\0"
+"inagi.tokyo.jp\0"
+"r.bg\0"
+"co.th\0"
+"dentist\0"
+"co.sz\0co.tj\0va.us\0cloud66.zone\0"
+"tc.br\0"
+"8.bg\0"
+"iwi.nz\0co.tm\0"
+"mansions.museum\0lefrak\0"
+"co.ua\0"
+"hobol.no\0info.pk\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
+"mar.it\0info.pl\0co.tt\0nm.us\0pcloud.host\0"
+"balsfjord.no\0co.ug\0"
+"abruzzo.it\0"
+"info.pr\0co.tz\0"
+"co.uk\0barsy.uk\0"
+"legal\0"
+"is-a-geek.net\0"
+"maritimo.museum\0living\0"
+"blogspot.ae\0"
+"protection\0"
+"co.us\0"
+"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0"
+"cci.fr\0co.ve\0"
+"yamanobe.yamagata.jp\0tui\0"
+"blogspot.al\0"
+"blogspot.am\0"
+"fot.br\0info.na\0co.vi\0"
+"co.uz\0"
+"is-a-anarchist.com\0fastvps-server.com\0"
+"ddr.museum\0info.mv\0info.nf\0"
+"aerodrome.aero\0tr.no\0"
+"info.ni\0is-very-nice.org\0"
+"\xe6\x95\x99\xe8\x82\xb2.hk\0ralingen.no\0"
+"ogano.saitama.jp\0"
+"dh.bytemark.co.uk\0"
+"al.gov.br\0info.nr\0"
+"omiya.saitama.jp\0yoshikawa.saitama.jp\0"
+"zlg.br\0"
+"chichibu.saitama.jp\0"
+"tvs\0"
+"ae.org\0goip.de\0"
+"veg\xc3\xa5rshei.no\0"
+"artsandcrafts.museum\0bayern\0"
+"vagan.no\0education\0"
+"is-a-bookkeeper.com\0"
+"friuliveneziagiulia.it\0info.la\0"
+"other.nf\0"
+"folkebibl.no\0"
+"niimi.okayama.jp\0"
+"ayase.kanagawa.jp\0"
+"minamisanriku.miyagi.jp\0"
+"gok.pk\0"
+"daejeon.kr\0is-very-evil.org\0"
+"xfinity\0"
+"gorlice.pl\0"
+"info.ls\0"
+"mydissent.net\0"
+"myphotos.cc\0"
+"nakatsugawa.gifu.jp\0"
+"\xe7\x8f\xa0\xe5\xae\x9d\0is-slick.com\0"
+"co.za\0"
+"bolzano-altoadige.it\0"
+"gonohe.aomori.jp\0"
+"d\xc3\xb8nna.no\0"
+"lakas.hu\0"
+"ui.nabu.casa\0"
+"arte.bo\0gifu.jp\0pol.tr\0co.zm\0"
+"kui.hiroshima.jp\0travelchannel\0hu.com\0"
+"from-md.com\0"
+"yasuda.kochi.jp\0kvanangen.no\0global\0"
+"cog.mi.us\0"
+"co.zw\0"
+"cc.fl.us\0social\0"
+"uy.com\0"
+"k12.al.us\0"
+"ss.it\0info.ke\0"
+"furudono.fukushima.jp\0se.net\0ru.net\0"
+"rennesoy.no\0"
+"info.ki\0"
+"pi.it\0"
+"yoshida.shizuoka.jp\0"
+"boston.museum\0tynset.no\0gallup\0"
+"calabria.it\0"
+"tokushima.tokushima.jp\0niepce.museum\0"
+"lo.it\0"
+"clock.museum\0"
+"l\xc3\xa6rdal.no\0"
+"misato.shimane.jp\0"
+"frog.museum\0"
+"sakura.tochigi.jp\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0isa-geek.net\0"
+"kita.kyoto.jp\0"
+"togakushi.nagano.jp\0hamatama.saga.jp\0tranoy.no\0"
+"kagamiishi.fukushima.jp\0"
+"aq.it\0ba.it\0"
+"brunel.museum\0"
+"whoswho\0"
+"skodje.no\0ipifony.net\0my-vigor.de\0"
+"saijo.ehime.jp\0dali.museum\0"
+"collection.museum\0gotdns.com\0"
+"minami.fukuoka.jp\0"
+"gv.ao\0c.bg\0"
+"campinas.br\0oy.lc\0"
+"gv.at\0"
+"tsk.tr\0capetown\0"
+"shisui.chiba.jp\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0"
+"privatizehealthinsurance.net\0"
+"mn.us\0"
+"usarts.museum\0"
+"sd.cn\0*.s5y.io\0"
+"servehttp.com\0"
+"trading.aero\0"
+"l\xc3\xb8ten.no\0*.on-rio.io\0"
+"emr.it\0"
+"baltimore.museum\0"
+"mitaka.tokyo.jp\0"
+"asaminami.hiroshima.jp\0lib.vi.us\0u2-local.xnbay.com\0"
+"b\xc3\xa5tsfjord.no\0vm.bytemark.co.uk\0"
+"ab.ca\0sumita.iwate.jp\0uno\0"
+"olkusz.pl\0archi\0"
+"yahoo\0"
+"sar.it\0haga.tochigi.jp\0castres.museum\0"
+"is-into-cartoons.com\0"
+"trentins\xc3\xbc""d-tirol.it\0"
+"belem.br\0otoyo.kochi.jp\0salangen.no\0hopto.me\0"
+"yoka.hyogo.jp\0"
+"l\xc3\xb8""dingen.no\0"
+"kawahara.tottori.jp\0embroidery.museum\0marnardal.no\0uol\0"
+"omega\0"
+"lierne.no\0"
+"lib.ga.us\0tec.ve\0"
+"friuli-venezia-giulia.it\0"
+"karatsu.saga.jp\0"
+"pesarourbino.it\0"
+"isla.pr\0"
+"b\xc3\xa1l\xc3\xa1t.no\0"
+"otaki.saitama.jp\0elvendrell.museum\0"
+"tokai.ibaraki.jp\0"
+"wajima.ishikawa.jp\0"
+"ups\0co.education\0"
+"shimokitayama.nara.jp\0abo.pa\0"
+"transport.museum\0"
+"est-le-patron.com\0"
+"family.museum\0eurovision\0"
+"giehtavuoatna.no\0bci.dnstrace.pro\0barsy.bg\0"
+"cn.com\0"
+"jelenia-gora.pl\0"
+"sirdal.no\0"
+"ringsaker.no\0"
+"\xe5\xae\xae\xe5\x9f\x8e.jp\0"
+"abkhazia.su\0"
+"ascoli-piceno.it\0"
+"rio.br\0\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
+"pmn.it\0jeonnam.kr\0barsy.ca\0"
+"educator.aero\0higashiomi.shiga.jp\0"
+"asahi.ibaraki.jp\0ota.tokyo.jp\0"
+"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0"
+"tempio-olbia.it\0security\0meteorapp.com\0"
+"hagi.yamaguchi.jp\0debian.net\0dnsdojo.org\0"
+"s\xc3\xa1lat.no\0"
+"lezajsk.pl\0"
+"k12.ms.us\0k12.nc.us\0"
+"higashichichibu.saitama.jp\0bahcavuotna.no\0"
+"poivron.org\0"
+"sel.no\0barsy.de\0"
+"verona.it\0vadso.no\0"
+"from-al.com\0"
+"roros.no\0cc.ma.us\0"
+"herad.no\0"
+"parachuting.aero\0"
+"semine.miyagi.jp\0"
+"tsukumi.oita.jp\0"
+"mc.eu.org\0"
+"jab.br\0r.se\0blogdns.org\0"
+"lukow.pl\0"
+"cc.as.us\0"
+"yamagata.nagano.jp\0lilly\0"
+"web.bo\0"
+"\xd0\xbc\xd0\xba\xd0\xb4\0"
+"publ.pt\0"
+"kiho.mie.jp\0"
+"andriabarlettatrani.it\0livorno.it\0scor\0\xe9\xa3\x9f\xe5\x93\x81\0"
+"barsy.eu\0"
+"scot\0official.academy\0"
+"philadelphia.museum\0strand.no\0"
+"ong.br\0parliament.nz\0"
+"web.co\0askvoll.no\0"
+"convent.museum\0"
+"vet\0"
+"\xe4\xbd\x9b\xe5\xb1\xb1\0lt.eu.org\0"
+"serveftp.com\0xs4all.space\0"
+"gran.no\0"
+"yuza.yamagata.jp\0"
+"telefonica\0square7.net\0lima.zone\0"
+"association.aero\0tachiarai.fukuoka.jp\0c.la\0"
+"tajimi.gifu.jp\0"
+"web.do\0"
+"*.landing.myjino.ru\0"
+"homeunix.org\0"
+"adult\0observer\0"
+"ukiha.fukuoka.jp\0gs.sf.no\0enebakk.no\0"
+"yamato.fukushima.jp\0"
+"gs.ol.no\0",
+
+"is-a-libertarian.com\0"
+"boats\0"
+"guam.gu\0charity\0"
+"ing.pa\0"
+"baby\0hgtv\0"
+"suifu.ibaraki.jp\0"
+"journal.aero\0wiih.gov.pl\0"
+"fjaler.no\0tolga.no\0"
+"anamizu.ishikawa.jp\0"
+"lib.nj.us\0"
+"fidelity\0barsy.in\0"
+"barsy.io\0"
+"froland.no\0"
+"juif.museum\0mymailer.com.tw\0"
+"nikaho.akita.jp\0kayabe.hokkaido.jp\0vig\0"
+"yonabaru.okinawa.jp\0"
+"waw.pl\0"
+"barclays\0"
+"cagliari.it\0\xd0\xbc\xd0\xbe\xd0\xbd\0"
+"*.futurecms.at\0"
+"vin\0"
+"tselinograd.su\0"
+"vip\0"
+"tanabe.kyoto.jp\0naumburg.museum\0loab\xc3\xa1t.no\0"
+"es.eu.org\0servehumour.com\0"
+"web.gu\0"
+"pub.sa\0"
+"santoandre.br\0info.zm\0"
+"kanegasaki.iwate.jp\0claims\0"
+"takanezawa.tochigi.jp\0uk.net\0"
+"sowa.ibaraki.jp\0aid.pl\0"
+"higashiyamato.tokyo.jp\0"
+"web.id\0fortmissoula.museum\0manx.museum\0"
+"sanofi\0"
+"saobernardo.br\0casino.hu\0foggia.it\0dclk\0"
+"indianmarket.museum\0"
+"rahkkeravju.no\0"
+"shiwa.iwate.jp\0"
+"mochizuki.nagano.jp\0servebbs.net\0"
+"nagaoka.niigata.jp\0"
+"songdalen.no\0storfjord.no\0"
+"rsvp\0"
+"s3.us-east-2.amazonaws.com\0"
+"decorativearts.museum\0ufcfan.org\0"
+"samsung\0is-into-games.com\0"
+"astronomy.museum\0dyn-ip24.de\0"
+"iwata.shizuoka.jp\0"
+"koto.shiga.jp\0"
+"cnt.br\0vanylven.no\0"
+"slask.pl\0"
+"tuscany.it\0build\0"
+"sor-odal.no\0"
+"ebiz.tw\0"
+"handson.museum\0"
+"meiwa.gunma.jp\0homes\0"
+"ogawa.saitama.jp\0"
"c.se\0"
-"erotica.hu\0"
-"nom.cl\0"
-"is-very-nice.org\0"
-"tagawa.fukuoka.jp\0shishikui.tokushima.jp\0"
-"air-traffic-control.aero\0nom.co\0from-ne.com\0"
-"colonialwilliamsburg.museum\0"
-"homes\0"
-"bifuka.hokkaido.jp\0ogawa.saitama.jp\0"
-"yamashina.kyoto.jp\0"
-"matsushima.miyagi.jp\0kodaira.tokyo.jp\0"
-"imageandsound.museum\0"
-"tado.mie.jp\0is-a-chef.net\0"
-"live\0\xe5\x95\x86\xe6\xa0\x87\0murmansk.su\0"
-"fr\xc3\xa6na.no\0nore-og-uvdal.no\0"
-"kasumigaura.ibaraki.jp\0"
-"niepce.museum\0s\xc3\xb8gne.no\0"
-"gr.it\0"
-"info.cx\0"
-"room\0"
-"nexus\0us-east-1.amazonaws.com\0"
-"t.bg\0is-found.org\0forumz.info\0"
-"ivanovo.su\0"
-"campinas.br\0gr.jp\0"
-"info.ec\0"
-"nom.es\0ulm.museum\0baby\0"
-"kpn\0"
-"barsy.me\0serveexchange.com\0homelink.one\0"
-"game.tw\0"
-"voss.no\0"
-"store.ve\0applinzi.com\0"
-"info.bb\0frosinone.it\0"
+"re.it\0nogi.tochigi.jp\0"
+"honbetsu.hokkaido.jp\0mortgage\0"
+"kamo.niigata.jp\0web.lk\0"
+"elverum.no\0"
+"synology-diskstation.de\0"
+"mihara.kochi.jp\0"
+"tsubata.ishikawa.jp\0ma.leg.br\0"
+"stjohn.museum\0vn.ua\0"
+"cruise\0"
+"stjordalshalsen.no\0"
+"tokuyama.yamaguchi.jp\0"
+"nakayama.yamagata.jp\0wien\0"
+"nfshost.com\0"
+"museum\0"
+"sakegawa.yamagata.jp\0"
+"valdaosta.it\0"
+"re.kr\0"
+"sytes.net\0"
+"nara.nara.jp\0"
+"miniserver.com\0"
+"trentin-suedtirol.it\0web.nf\0"
+"trentino-s\xc3\xbc""d-tirol.it\0public.museum\0gausdal.no\0sd.us\0endofinternet.org\0github.io\0"
+"web.ni\0"
+"xj.cn\0gs.va.no\0"
+"nowaruda.pl\0"
+"pacific.museum\0"
+"\xc3\xa1laheadju.no\0"
+"mizunami.gifu.jp\0"
+"fortal.br\0sugito.saitama.jp\0"
+"mazury.pl\0gv.vc\0"
+"aukra.no\0from-pa.com\0"
+"zao.miyagi.jp\0fuchu.tokyo.jp\0"
+"funabashi.chiba.jp\0"
+"revista.bo\0lillesand.no\0"
+"nowtv\0"
+"ngrok.io\0"
+"jerusalem.museum\0"
+"safety\0"
+"and\xc3\xb8y.no\0lib.pa.us\0abbvie\0"
+"yamaxun\0familyds.net\0"
+"tokamachi.niigata.jp\0"
+"chuo.fukuoka.jp\0anan.nagano.jp\0agrinet.tn\0"
+"safety.aero\0web.pk\0plo.ps\0"
+"shimonoseki.yamaguchi.jp\0"
+"motoyama.kochi.jp\0blackbaudcdn.net\0is-a-techie.com\0"
+"alaheadju.no\0ipiranga\0"
+"band\0"
+"konskowola.pl\0vpnplus.to\0"
+"figueres.museum\0"
+"nesset.no\0"
+"lancashire.museum\0"
+"mymediapc.net\0"
+"bank\0"
+"vestvagoy.no\0"
+"sjc.br\0chintai\0in-dsl.de\0dvrcam.info\0rackmaze.com\0"
+"mus.mi.us\0"
+"sanok.pl\0"
+"defense.tn\0"
+"ishikawa.okinawa.jp\0"
+"*.kobe.jp\0otsuchi.iwate.jp\0ishigaki.okinawa.jp\0"
+"mk.eu.org\0"
+"bieszczady.pl\0hobby-site.org\0"
+"kunohe.iwate.jp\0"
+"tcp4.me\0"
+"dynamic-dns.info\0"
+"wiki\0"
+"s\xc3\xb8rfold.no\0ugim.gov.pl\0balena-devices.com\0"
+"wed\0"
+"niki.hokkaido.jp\0"
+"fitjar.no\0gotdns.ch\0"
+"lelux.site\0"
+"kakuda.miyagi.jp\0"
+"cc.va.us\0arab\0"
+"landes.museum\0associates\0"
+"ferrari\0"
+"lucca.it\0fi.eu.org\0"
+"florence.it\0cc.nm.us\0"
+"int.ar\0trust.museum\0"
+"web.tj\0"
+"iglesias-carbonia.it\0"
+"birthplace.museum\0"
+"southcarolina.museum\0"
+"hanggliding.aero\0int.az\0"
+"web.tr\0nflfan.org\0"
+"tp.it\0psp.gov.pl\0"
+"int.bo\0yabuki.fukushima.jp\0"
+"cc.co.us\0"
+"riik.ee\0seat\0"
+"uslivinghistory.museum\0"
+"pv.it\0ericsson\0gallo\0"
+"wine\0"
+"nagahama.shiga.jp\0austrheim.no\0bbs.tr\0"
+"shimoichi.nara.jp\0realestate.pl\0"
+"higashine.yamagata.jp\0"
+"int.ci\0oarai.ibaraki.jp\0"
+"lu.eu.org\0me.eu.org\0"
+"web.ve\0blogspot.co.at\0"
+"int.co\0lasalle\0ashgabad.su\0"
+"shirakawa.fukushima.jp\0"
+"kahoku.ishikawa.jp\0synology-ds.de\0"
+"ato.br\0"
+"bn.it\0"
+"vaga.no\0"
+"swidnica.pl\0"
+"gives\0vodka\0"
+"uchinomi.kagawa.jp\0"
+"p.bg\0"
+"verm\xc3\xb6gensberatung\0"
+"lotte\0"
+"6.bg\0saitama.saitama.jp\0abudhabi\0win\0"
+"l\xc3\xa4ns.museum\0"
+"deporte.bo\0"
+"gs.tr.no\0"
+"lv.eu.org\0"
+"evenassi.no\0"
+"minoh.osaka.jp\0lotto\0"
+"prod\0"
+"london.cloudapps.digital\0"
+"prof\0"
+"idrett.no\0"
+"seek\0"
+"ggf.br\0juegos\0"
+"s3.eu-west-2.amazonaws.com\0"
+"tochio.niigata.jp\0"
+"lib.sd.us\0*.stolos.io\0"
+"journalist.aero\0linde\0"
+"honda\0"
+"kamioka.akita.jp\0co.place\0"
+"web.za\0"
+"s3-eu-west-1.amazonaws.com\0"
+"fribourg.museum\0"
+"ballooning.aero\0"
+"yaizu.shizuoka.jp\0"
+"natuurwetenschappen.museum\0"
+"ishikawa.fukushima.jp\0hikone.shiga.jp\0"
+"emp.br\0\xe6\x95\x8e\xe8\x82\xb2.hk\0"
+"wme\0"
+"rokunohe.aomori.jp\0north.museum\0*.statics.cloud\0loginline.site\0"
+"muncie.museum\0"
+"potenza.it\0"
+"inderoy.no\0"
+"ruhr\0"
+"parti.se\0\xe5\xb7\xa5\xe8\xa1\x8c\0dy.fi\0"
+"dnsdojo.net\0"
+"int.is\0"
+"hapmir.no\0"
+"qld.au\0"
+"idf.il\0inami.wakayama.jp\0colonialwilliamsburg.museum\0graz.museum\0"
+"wios.gov.pl\0blogspot.co.id\0"
+"skoczow.pl\0"
+"riobranco.br\0barrell-of-knowledge.info\0"
+"trust\0"
+"yakumo.hokkaido.jp\0"
+"storage\0"
+"taketa.oita.jp\0"
+"swiftcover\0blogspot.co.il\0"
+"\xe7\xa7\x8b\xe7\x94\xb0.jp\0"
+"sondrio.it\0isshiki.aichi.jp\0kosher\0"
+"cc.mn.us\0"
+"overhalla.no\0"
+"ham-radio-op.net\0"
+"wow\0"
+"int.la\0k12.ct.us\0"
+"deal\0"
+"zaporizhzhe.ua\0giize.com\0flt.cloud.muni.cz\0"
+"airbus\0"
+"ta.it\0games\0"
+"maritime.museum\0"
+"int.lk\0"
+"pg.it\0group\0"
+"is-a-knight.org\0"
+"midatlantic.museum\0"
+"kutchan.hokkaido.jp\0"
+"fh.se\0"
+"barsy.co.uk\0"
+"nishi.fukuoka.jp\0"
+"dazaifu.fukuoka.jp\0"
+"from.hr\0"
+"lapy.pl\0"
+"mosjoen.no\0tysnes.no\0lundbeck\0"
+"my-gateway.de\0"
+"kr.eu.org\0"
+"sport.hu\0"
+"takatsuki.osaka.jp\0bananarepublic\0"
+"ao.it\0oldnavy\0"
+"andriatranibarletta.it\0"
+"\xe9\xa4\x90\xe5\x8e\x85\0"
+"ustka.pl\0"
+"*.elb.amazonaws.com.cn\0"
+"parliament.cy\0asti.it\0int.mv\0"
+"int.mw\0\xd9\x82\xd8\xb7\xd8\xb1\0"
+"naples.it\0int.ni\0"
+"a.bg\0"
+"army\0"
+"h\xc3\xb8yanger.no\0"
+"tokushima.jp\0"
+"hs.kr\0"
+"chieti.it\0"
+"from-co.net\0"
+"fylkesbibl.no\0"
+"saarland\0space\0"
+"wtc\0"
+"koriyama.fukushima.jp\0wtf\0"
+"nx.cn\0"
+"now-dns.net\0"
+"dyndns.info\0"
+"amusement.aero\0"
+"pittsburgh.museum\0"
+"arpa\0"
+"karuizawa.nagano.jp\0porsangu.no\0"
+"matsuzaki.shizuoka.jp\0"
+"recife.br\0"
+"azurecontainer.io\0"
+"walmart\0"
+"navigation.aero\0lib.mo.us\0politie\0"
+"shibuya.tokyo.jp\0"
+"nagareyama.chiba.jp\0higashishirakawa.gifu.jp\0kwp.gov.pl\0"
+"gaular.no\0"
+"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0annefrank.museum\0"
+"int.pt\0"
+"svelvik.no\0"
+"aizuwakamatsu.fukushima.jp\0"
+"forumz.info\0"
+"cargo.aero\0"
+"wake.okayama.jp\0railway.museum\0rnu.tn\0"
+"minato.tokyo.jp\0"
+"wakuya.miyagi.jp\0"
+"watchandclock.museum\0"
+"kami.miyagi.jp\0f\xc3\xb8rde.no\0karlsoy.no\0merseine.nu\0"
+"fukuroi.shizuoka.jp\0"
+"tingvoll.no\0"
+"oharu.aichi.jp\0mo-i-rana.no\0"
+"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0demon.nl\0"
+"yono.saitama.jp\0online.museum\0\xe5\x85\xac\xe5\x8f\xb8.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"bearalvahki.no\0"
+"movimiento.bo\0kumejima.okinawa.jp\0"
+"vaksdal.no\0"
+"dyndns-work.com\0"
+"komae.tokyo.jp\0"
+"int.ru\0camdvr.org\0"
+"dedyn.io\0"
+"tokigawa.saitama.jp\0nyny.museum\0quebec\0"
+"imperia.it\0kujukuri.chiba.jp\0"
+"noda.iwate.jp\0blogdns.net\0webredirect.org\0"
+"accountants\0"
+"!city.sapporo.jp\0"
+"kamishihoro.hokkaido.jp\0"
+"asda\0gucci\0"
+"loan\0"
+"int.tj\0arte\0flickr\0"
"moscow.museum\0"
-"nom.fr\0info.at\0"
-"info.au\0at.eu.org\0"
-"nom.gd\0"
+"beauty\0"
+"online\0"
+"takayama.nagano.jp\0"
+"kasaoka.okayama.jp\0"
+"oyodo.nara.jp\0"
+"treviso.it\0"
+"int.tt\0"
+"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0xin\0"
+"noticias.bo\0ilovecollege.info\0"
+"kustanai.ru\0"
+"taiki.hokkaido.jp\0"
+"ppg.br\0clan.rip\0"
+"p.se\0"
+"umi.fukuoka.jp\0*.sensiosite.cloud\0"
+"tendo.yamagata.jp\0in-vpn.org\0"
+"soja.okayama.jp\0int.ve\0"
+"bbva\0"
+"kustanai.su\0mg.leg.br\0"
+"kyotanabe.kyoto.jp\0\xd0\xbe\xd1\x80\xd0\xb3\0"
+"nom.ad\0"
+"gov.ac\0nom.ae\0"
+"int.vn\0promo\0nom.af\0"
+"gov.ae\0nom.ag\0"
+"gov.af\0"
+"android\0nom.ai\0"
+"usculture.museum\0dell\0"
+"fvg.it\0cz.it\0nom.al\0"
+"arq.br\0blogspot.co.uk\0"
+"gov.al\0"
+"okagaki.fukuoka.jp\0"
+"airport.aero\0lewismiller.museum\0"
+"yatsuka.shimane.jp\0"
+"gov.ba\0trapani.it\0"
+"gov.ar\0gov.bb\0"
+"gov.as\0"
+"gov.au\0nakadomari.aomori.jp\0"
+"gov.bf\0television.museum\0"
+"games.hu\0"
+"gov.bh\0"
+"\xe6\x96\xb0\xe9\x97\xbb\0"
+"gov.az\0"
+"koga.ibaraki.jp\0aejrie.no\0"
+"gov.bm\0haibara.shizuoka.jp\0tatar\0"
+"gov.bn\0from-ct.com\0"
+"nesoddtangen.no\0is-a-socialist.com\0"
+"gov.br\0"
+"airline.aero\0gov.bs\0"
+"gov.bt\0gov.cd\0bungoono.oita.jp\0a.run.app\0"
+"kommunalforbund.se\0"
+"gov.by\0sardinia.it\0"
+"gov.bz\0nom.cl\0"
+"asia\0gov.cl\0"
+"gov.cm\0nom.co\0valled-aosta.it\0sogndal.no\0"
+"gov.cn\0sciencehistory.museum\0"
+"author.aero\0gov.co\0saiki.oita.jp\0"
+"lib.tx.us\0is-a-green.com\0"
+"lans.museum\0loft\0"
+"gov.cu\0onjuku.chiba.jp\0\xc3\xa5lg\xc3\xa5rd.no\0"
+"gov.cx\0lib.pr.us\0"
+"gov.cy\0"
+"saikai.nagasaki.jp\0\xc3\xa5s.no\0"
+"fnd.br\0"
+"sexy\0"
+"gov.dm\0miners.museum\0za.com\0"
+"in-butter.de\0"
+"gov.do\0"
+"res.in\0paderborn.museum\0scapp.io\0"
+"c66.me\0"
+"gov.ec\0aga.niigata.jp\0naha.okinawa.jp\0"
+"gov.ee\0hakata.fukuoka.jp\0"
+"gov.eg\0med.pro\0"
+"klabu.no\0"
+"!city.kobe.jp\0dominic.ua\0fed.us\0"
+"gov.dz\0"
+"noboribetsu.hokkaido.jp\0"
+"catering\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0"
+"federation.aero\0servebbs.org\0"
+"nom.es\0from-wy.com\0"
+"gov.et\0cincinnati.museum\0\xe9\xa6\x99\xe6\xb8\xaf\0"
+"oystre-slidre.no\0"
+"s3-eu-central-1.amazonaws.com\0"
+"villas\0"
+"nom.fr\0"
+"shirataka.yamagata.jp\0nom.gd\0"
"nom.ge\0"
-"!city.sendai.jp\0"
-"nannestad.no\0"
-"info.az\0social\0"
-"tsuchiura.ibaraki.jp\0krd\0lat\0"
+"gov.ge\0lviv.ua\0blogspot.co.ke\0homesecuritypc.com\0"
+"plants.museum\0vlaanderen.museum\0"
+"gov.gh\0"
+"gov.gi\0securitytactics.com\0"
"nom.gl\0"
-"info.bo\0law\0applicationcloud.io\0"
-"nankoku.kochi.jp\0"
+"remotewd.com\0"
+"brussel.museum\0moma.museum\0"
+"gov.gn\0"
+"bruxelles.museum\0"
+"vicenza.it\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0degree\0"
+"gov.gr\0naklo.pl\0customer.enonic.io\0nom.gt\0"
+"sydney\0"
+"gov.gu\0desi\0"
+"badajoz.museum\0cc.sd.us\0no-ip.org\0"
+"gov.gy\0oseto.nagasaki.jp\0uruma.okinawa.jp\0nord-odal.no\0"
+"k12.md.us\0stackhero-network.com\0"
+"gov.hk\0"
+"nom.hn\0"
+"arendal.no\0"
+"services\0"
+"huissier-justice.fr\0bronnoy.no\0"
+"banamex\0"
+"my.id\0akabira.hokkaido.jp\0showa.yamanashi.jp\0merckmsd\0"
+"gov.ie\0cloudaccess.net\0"
+"kherson.ua\0"
+"oita.oita.jp\0"
+"auspost\0"
+"snillfjord.no\0"
+"nom.im\0"
+"gov.il\0pavia.it\0"
+"gov.in\0a.se\0scrapping.cc\0"
+"rc.it\0choshi.chiba.jp\0"
+"fukumitsu.toyama.jp\0"
+"gov.iq\0"
+"gov.ir\0"
+"gov.is\0sagae.yamagata.jp\0\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0"
+"gov.it\0edu.eu.org\0"
+"\xe9\x9b\x86\xe5\x9b\xa2\0"
+"higashiyama.kyoto.jp\0mormon\0"
+"vic.au\0"
+"is-a-doctor.com\0"
+"ge.it\0"
+"gov.jo\0niihama.ehime.jp\0\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x90\xe0\xb8\x9a\xe0\xb8\xb2\xe0\xb8\xa5.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
+"academy\0"
+"\xe4\xb8\xad\xe4\xbf\xa1\0"
+"ingatlan.hu\0sb.ua\0nom.ke\0"
+"saotome.st\0"
+"gov.kg\0"
+"honjo.akita.jp\0stream\0"
+"koto.tokyo.jp\0musashimurayama.tokyo.jp\0gov.ki\0"
+"blogspot.co.nz\0"
+"asaka.saitama.jp\0nom.km\0"
+"gov.km\0british.museum\0"
+"gov.kn\0"
+"gov.kp\0"
+"gov.la\0vaapste.no\0"
+"gov.lb\0"
+"gov.lc\0broker\0"
+"kamijima.ehime.jp\0sibenik.museum\0agakhan\0"
+"tatsuno.hyogo.jp\0"
+"gov.kw\0hagebostad.no\0nat.tn\0nom.li\0"
+"capitalone\0familyds.org\0"
+"gov.ky\0"
+"gyokuto.kumamoto.jp\0gov.kz\0oh.us\0syno-ds.de\0"
+"gov.lk\0freetls.fastly.net\0"
+"konsulat.gov.pl\0"
+"harvestcelebration.museum\0"
+"sanda.hyogo.jp\0"
+"gov.ma\0alpha.bounty-full.com\0"
+"itano.tokushima.jp\0gov.lr\0"
+"gov.ls\0br\xc3\xb8nn\xc3\xb8ysund.no\0"
+"gov.lt\0"
+"gov.me\0nom.mg\0"
+"gov.lv\0"
+"mishima.shizuoka.jp\0gov.mg\0aarborte.no\0"
+"gov.ly\0turek.pl\0nom.mk\0"
+"urakawa.hokkaido.jp\0"
+"gov.mk\0"
+"gov.ml\0"
+"gifu.gifu.jp\0shioya.tochigi.jp\0"
+"gov.mn\0spydeberg.no\0"
+"ono.hyogo.jp\0saito.miyazaki.jp\0gov.mo\0"
+"museum.tt\0ivanovo.su\0"
+"nom.nc\0"
+"gov.mr\0"
+"gov.ms\0"
+"tome.miyagi.jp\0gov.mu\0"
+"gov.mv\0"
+"gov.mw\0gov.ng\0nom.ni\0nalchik.ru\0"
+"gov.my\0"
+"gov.mz\0"
+"\xe5\x95\x86\xe6\xa0\x87\0"
+"otaru.hokkaido.jp\0tomobe.ibaraki.jp\0"
+"udine.it\0ybo.trade\0"
+"iglesiascarbonia.it\0"
+"okawa.fukuoka.jp\0gov.nr\0"
+"ube.yamaguchi.jp\0nom.nu\0"
+"tarama.okinawa.jp\0draydns.de\0"
+"xxx\0"
+"nalchik.su\0applinzi.com\0"
+"pisz.pl\0dating\0"
+"trentinosud-tirol.it\0utwente.io\0"
+"gov.om\0"
+"skydiving.aero\0berlin.museum\0s\xc3\xb8mna.no\0nom.pa\0"
+"rackmaze.net\0"
+"fuchu.hiroshima.jp\0"
+"nom.pe\0"
+"yamamoto.miyagi.jp\0\xe6\x89\x8b\xe8\xa1\xa8\0"
+"musashino.tokyo.jp\0"
+"eco.br\0"
+"gov.ph\0xyz\0"
+"milan.it\0"
+"nom.pl\0"
+"gov.pk\0"
+"rome.it\0nishiokoppe.hokkaido.jp\0matsushima.miyagi.jp\0gov.pl\0"
+"gov.pn\0"
+"isehara.kanagawa.jp\0nom.qa\0"
+"dni.us\0"
+"gov.qa\0fiat\0"
+"gov.pr\0"
+"gov.ps\0"
+"gov.pt\0k12.wi.us\0"
+"nom.pw\0"
+"sukagawa.fukushima.jp\0niiza.saitama.jp\0"
+"gov.py\0"
+"memorial.museum\0"
+"stj\xc3\xb8rdalshalsen.no\0"
+"magazine.aero\0"
+"brasil.museum\0luxembourg.museum\0"
+"livinghistory.museum\0kyoto\0"
+"newhampshire.museum\0nom.re\0k12.ks.us\0"
+"fedorainfracloud.org\0"
+"asakawa.fukushima.jp\0"
+"zamami.okinawa.jp\0"
+"ine.kyoto.jp\0higashimatsushima.miyagi.jp\0"
+"nom.ro\0"
+"pinb.gov.pl\0"
+"sayama.saitama.jp\0"
+"fukui.jp\0oyer.no\0gov.sa\0nom.rs\0"
+"\xe7\xa6\x8f\xe4\xba\x95.jp\0kinokawa.wakayama.jp\0gov.sb\0"
+"tn.it\0gov.rs\0gov.sc\0"
+"vao.it\0torino.it\0gov.sd\0"
+"ullensaker.no\0gov.ru\0love\0"
+"kanmaki.nara.jp\0"
+"gov.rw\0gov.sg\0nom.si\0"
+"pt.it\0chocolate.museum\0gov.sh\0"
+"miyoshi.aichi.jp\0"
+"rikuzentakata.iwate.jp\0"
+"american.museum\0"
+"yoro.gifu.jp\0gov.sl\0fido\0institute\0"
+"eiheiji.fukui.jp\0"
+"gov.so\0"
+"meloy.no\0nom.st\0"
+"gov.ss\0"
+"gov.st\0readmyblog.org\0"
+"nagasaki.nagasaki.jp\0cloud.metacentrum.cz\0"
+"\xc3\xb8ystre-slidre.no\0"
+"gov.sx\0nom.tj\0"
+"gov.sy\0"
+"gov.tj\0"
+"nom.tm\0"
+"ambulance.aero\0bl.it\0mino.gifu.jp\0gov.tl\0"
+"gov.tm\0"
+"atami.shizuoka.jp\0gov.tn\0"
+"hirata.fukushima.jp\0gov.to\0"
+"schools.nsw.edu.au\0katagami.akita.jp\0gov.ua\0"
+"gov.tr\0"
+"gov.tt\0"
+"nom.ug\0"
+"n.bg\0s3.dualstack.us-east-1.amazonaws.com\0"
+"kamisato.saitama.jp\0gov.tw\0"
+"hakusan.ishikawa.jp\0naturalhistorymuseum.museum\0"
+"tur.ar\0"
+"4.bg\0wiw.gov.pl\0gov.uk\0cya.gg\0"
+"orskog.no\0"
+"pe.ca\0versicherung\0trafficplex.cloud\0"
+"ck.ua\0"
+"cloudns.asia\0blogspot.co.za\0nom.vc\0"
+"kyowa.akita.jp\0gov.vc\0you\0"
+"gov.ve\0webhop.org\0nom.vg\0"
+"ishinomaki.miyagi.jp\0myhome-server.de\0"
+"nom.uy\0"
+"*.yokohama.jp\0"
+"tur.br\0"
+"hekinan.aichi.jp\0"
+"shibukawa.gunma.jp\0gov.vn\0"
+"museum.mv\0"
+"am.br\0museum.mw\0"
+"nyuzen.toyama.jp\0estate\0freebox-os.com\0"
+"catholic.edu.au\0"
+"museum.no\0"
+"misato.saitama.jp\0rugby\0"
+"kamitonda.wakayama.jp\0community.museum\0"
+"pictet\0"
+"serveirc.com\0"
+"gov.ws\0"
+"minami.kyoto.jp\0timekeeping.museum\0"
+"carrara-massa.it\0florist\0"
+"museum.om\0"
+"intuit\0"
+"maibara.shiga.jp\0"
+"\xe5\xb2\x90\xe9\x98\x9c.jp\0red.sv\0"
+"kumano.hiroshima.jp\0"
+"paris.museum\0sciencecenter.museum\0"
+"can.museum\0"
+"nom.za\0"
+"\xe4\xb8\xaa\xe4\xba\xba.hk\0"
+"gjovik.no\0gov.za\0from-ca.com\0"
+"tomiya.miyagi.jp\0"
+"hokuto.hokkaido.jp\0sukumo.kochi.jp\0\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0"
+"kiryu.gunma.jp\0"
+"custom.metacentrum.cz\0"
+"nago.okinawa.jp\0shinjuku.tokyo.jp\0sopot.pl\0"
+"dealer\0"
+"k12.ut.us\0gov.zm\0drud.io\0"
+"collegefan.org\0"
+"tonsberg.no\0"
+"navuotna.no\0\xd9\x83\xd9\x88\xd9\x85\0"
+"reliance\0"
+"capebreton.museum\0alibaba\0"
+"hamatonbetsu.hokkaido.jp\0osoyro.no\0k12.oh.us\0gov.zw\0from-ky.com\0"
+"nanjo.okinawa.jp\0"
+"film\0"
+"yun\0"
+"trustee.museum\0"
+"nt.edu.au\0muika.niigata.jp\0"
+"memorial\0"
+"homesense\0"
+"shiroi.chiba.jp\0"
+"yamagata.jp\0brother\0"
+"wakayama.wakayama.jp\0"
+"ltd.co.im\0myoko.niigata.jp\0"
+"dinosaur.museum\0"
+"izumi.osaka.jp\0"
+"so.it\0nakagawa.tokushima.jp\0"
+"kr\xc3\xb8""dsherad.no\0ulvik.no\0"
+"vic.edu.au\0bel.tr\0"
+"pe.it\0"
+"nanto.toyama.jp\0"
+"asn.au\0miyako.fukuoka.jp\0sennan.osaka.jp\0"
+"tenri.nara.jp\0"
+"shibetsu.hokkaido.jp\0"
+"volyn.ua\0is-a-player.com\0"
+"shaw\0"
+"gdynia.pl\0"
+"giving\0"
+"shitara.aichi.jp\0sor-fron.no\0"
+"\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0"
+"yamaga.kumamoto.jp\0evje-og-hornnes.no\0"
+"samukawa.kanagawa.jp\0"
+"is-lost.org\0"
+"edu.krd\0now-dns.org\0"
+"\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0"
+"okinawa\0"
+"luroy.no\0"
+"nobeoka.miyazaki.jp\0armenia.su\0"
+"pe.kr\0"
+"washtenaw.mi.us\0lplfinancial\0"
+"matsubara.osaka.jp\0"
+"tn.us\0homegoods\0"
+"christmas\0"
+"audi\0\xe6\x8b\x9b\xe8\x81\x98\0mmafan.biz\0"
+"adv.br\0"
+"ferrara.it\0"
+"fedje.no\0today\0"
+"contemporaryart.museum\0"
+"kira.aichi.jp\0tmall\0"
+"africa.com\0"
+"zip\0"
+"of.by\0"
+"aogaki.hyogo.jp\0"
+"kumiyama.kyoto.jp\0ureshino.mie.jp\0"
+"friuliv-giulia.it\0"
+"yoga\0"
+"\xe9\x9d\x92\xe6\xa3\xae.jp\0"
+"poniatowa.pl\0"
+"ap-southeast-2.elasticbeanstalk.com\0"
+"beer\0"
+"hb.cn\0"
+"\xe9\x95\xb7\xe5\xb4\x8e.jp\0hikimi.shimane.jp\0"
+"akishima.tokyo.jp\0fire\0s3.dualstack.eu-west-3.amazonaws.com\0"
+"krodsherad.no\0miami\0"
+"porsgrunn.no\0"
+"posts-and-telecommunications.museum\0salvadordali.museum\0genting\0"
+"h\xc3\xa1""bmer.no\0"
+"pasadena.museum\0loginline.io\0"
+"mukawa.hokkaido.jp\0solund.no\0"
+"h\xc3\xa5.no\0lipsy\0"
+"konan.shiga.jp\0force.museum\0wskr.gov.pl\0"
+"\xc3\xa5snes.no\0"
+"etc.br\0inagawa.hyogo.jp\0sumy.ua\0"
+"atm.pl\0"
+"rns.tn\0"
+"nonoichi.ishikawa.jp\0fish\0"
+"bamble.no\0"
+"bulsan-s\xc3\xbc""dtirol.it\0inc.hk\0"
+"erotica.hu\0trentino-aadige.it\0kadogawa.miyazaki.jp\0"
+"kushimoto.wakayama.jp\0"
+"de.com\0"
+"from-mt.com\0from-nd.com\0"
+"kvinesdal.no\0"
+"school\0"
+"\xe6\x89\x8b\xe6\x9c\xba\0myfritz.net\0"
+"hopto.org\0"
+"design.museum\0"
+"monza-e-della-brianza.it\0"
+"ohi.fukui.jp\0"
+"dattolocal.net\0"
+"redstone\0"
+"futsu.nagasaki.jp\0"
+"shimizu.shizuoka.jp\0twmail.net\0"
+"scienceandhistory.museum\0"
+"jp.eu.org\0"
+"shia\0"
+"no-ip.net\0"
+"nayoro.hokkaido.jp\0in-vpn.net\0"
+"jogasz.hu\0afjord.no\0"
+"sp.gov.br\0rnrt.tn\0"
+"tsuchiura.ibaraki.jp\0agdenes.no\0\xd1\x80\xd1\x83\xd1\x81\0"
+"spy.museum\0\xe4\xb8\x96\xe7\x95\x8c\0"
+"alta.no\0"
+"ena.gifu.jp\0"
+"gouv.fr\0forl\xc3\xac""cesena.it\0"
+"kisosaki.mie.jp\0"
+"lamborghini\0"
+"jobs\0"
+"\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0"
+"n.se\0"
+"tattoo\0"
+"maif\0"
+"taranto.it\0abeno.osaka.jp\0"
+"finnoy.no\0"
+"siena.it\0\xd9\x85\xd8\xb5\xd8\xb1\0"
+"ota.gunma.jp\0"
+"utsunomiya.tochigi.jp\0drud.us\0"
+"imizu.toyama.jp\0"
+"askim.no\0"
+"gr.it\0"
+"rzeszow.pl\0"
+"v-info.info\0"
+"koeln\0"
+"gouv.ht\0mjondalen.no\0"
+"s\xc3\xb8r-aurdal.no\0"
+"gr.jp\0naka.ibaraki.jp\0fbxos.fr\0"
+"date.hokkaido.jp\0"
+"asn.lv\0so.gov.pl\0"
+"wi.us\0"
+"cable-modem.org\0spacekit.io\0"
+"kvits\xc3\xb8y.no\0"
+"koori.fukushima.jp\0edogawa.tokyo.jp\0"
+"farmers\0"
+"sakura.chiba.jp\0"
+"sanagochi.tokushima.jp\0"
+"handa.aichi.jp\0esashi.hokkaido.jp\0"
+"torahime.shiga.jp\0"
+"gouv.bj\0"
+"kimino.wakayama.jp\0"
+"gc.ca\0imabari.ehime.jp\0ia.us\0"
+"vallee-aoste.it\0"
+"health.nz\0"
+"delivery\0"
+"damnserver.com\0"
+"gouv.ci\0ide.kyoto.jp\0"
+"daisen.akita.jp\0"
+"aerobatic.aero\0adygeya.su\0"
+"homeunix.com\0"
+"takamori.kumamoto.jp\0"
+"plantation.museum\0"
+"4u.com\0"
+"adv.mz\0"
+"kv\xc3\xa6nangen.no\0\xe6\x85\x88\xe5\x96\x84\0"
+"kr.com\0"
+"flight.aero\0shop\0"
+"civilisation.museum\0of.no\0s3-website-eu-west-1.amazonaws.com\0"
+"usantiques.museum\0"
+"uvic.museum\0apps.lair.io\0"
+"show\0"
+"hadano.kanagawa.jp\0"
+"tinn.no\0\xe8\x87\xba\xe7\x81\xa3\0"
+"fukuchiyama.kyoto.jp\0"
+"kunisaki.oita.jp\0"
+"ferrero\0"
+"aikawa.kanagawa.jp\0"
+"tado.mie.jp\0london.museum\0"
+"adygeya.ru\0"
+"s3.cn-north-1.amazonaws.com.cn\0"
+"natura\0"
+"\xe6\xa0\x83\xe6\x9c\xa8.jp\0oki.fukuoka.jp\0"
+"s3.dualstack.eu-central-1.amazonaws.com\0"
+"joetsu.niigata.jp\0hinohara.tokyo.jp\0"
+"patria.bo\0my-firewall.org\0"
+"lucerne.museum\0"
+"adult.ht\0cc.oh.us\0yodobashi\0"
+"sogne.no\0in.london\0"
+"best\0cisco\0"
+"akune.kagoshima.jp\0gmina.pl\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
+"conference.aero\0nozawaonsen.nagano.jp\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0"
+"dyn-o-saur.com\0"
+"hurum.no\0"
+"pescara.it\0"
+"from-wa.com\0"
+"surrey.museum\0statebank\0"
+"watches\0"
+"auto\0"
+"tec.mi.us\0"
+"utashinai.hokkaido.jp\0ariake.saga.jp\0is-by.us\0"
+"ryugasaki.ibaraki.jp\0fukudomi.saga.jp\0"
+"ra.it\0"
+"campinagrande.br\0portlligat.museum\0"
+"cechire.com\0"
+"tanagura.fukushima.jp\0hasama.oita.jp\0"
+"madrid.museum\0"
+"wroc.pl\0"
+"mihama.aichi.jp\0miyake.nara.jp\0clinton.museum\0"
+"m\xc3\xa5lselv.no\0"
+"muko.kyoto.jp\0hitachi\0"
+"feste-ip.net\0"
+"uz.ua\0\xd1\x81\xd1\x80\xd0\xb1\0law.za\0landrover\0"
+"zp.gov.pl\0"
+"health.vn\0"
+"ci.it\0echizen.fukui.jp\0"
+"air-traffic-control.aero\0toscana.it\0"
+"venezia.it\0hidaka.hokkaido.jp\0community\0"
+"salud.bo\0"
+"civilwar.museum\0trogstad.no\0"
+"tomioka.gunma.jp\0"
+"philately.museum\0"
+"tranby.no\0"
+"travel.pl\0"
+"sr.gov.pl\0bauhaus\0"
+"nv.us\0"
+"maryland.museum\0"
+"yokaichiba.chiba.jp\0"
+"carraramassa.it\0s3-ap-southeast-2.amazonaws.com\0"
+"kamimine.saga.jp\0"
+"lib.wa.us\0"
+"inabe.mie.jp\0"
+"komatsu.ishikawa.jp\0discovery.museum\0"
+"webhosting.be\0blogsyte.com\0"
+"schaeffler\0"
+"ekloges.cy\0buzen.fukuoka.jp\0zapto.org\0"
+"bremanger.no\0"
+"press.aero\0museumvereniging.museum\0"
+"staples\0"
+"static-access.net\0"
+"bjerkreim.no\0"
+"bj.cn\0sobetsu.hokkaido.jp\0ismaili\0"
+"sumoto.kumamoto.jp\0stordal.no\0"
+"fredrikstad.no\0"
+"ami.ibaraki.jp\0shingu.wakayama.jp\0"
+"oamishirasato.chiba.jp\0"
+"kikonai.hokkaido.jp\0repair\0"
+"nord-aurdal.no\0"
+"okazaki.aichi.jp\0grondar.za\0"
+"s3-sa-east-1.amazonaws.com\0"
+"couchpotatofries.org\0"
+"no-ip.info\0"
+"vestre-slidre.no\0\xe5\x80\x8b\xe4\xba\xba.\xe9\xa6\x99\xe6\xb8\xaf\0"
+"kishiwada.osaka.jp\0"
+"airtraffic.aero\0nagano.jp\0inuyama.aichi.jp\0"
+"dsmynas.org\0"
+"amsterdam.museum\0hoyanger.no\0"
+"travel.tt\0"
+"ogose.saitama.jp\0"
+"higashi.fukuoka.jp\0"
+"for-the.biz\0"
+"surnadal.no\0bytom.pl\0"
+"winb.gov.pl\0wellbeingzone.eu\0"
+"zentsuji.kagawa.jp\0minamidaito.okinawa.jp\0trondheim.no\0"
+"res.aero\0"
+"urbinopesaro.it\0"
+"etajima.hiroshima.jp\0"
+"gjemnes.no\0glitch.me\0"
+"silk\0"
+"kisarazu.chiba.jp\0"
+"esurance\0"
+"austevoll.no\0k12.ky.us\0sa-east-1.elasticbeanstalk.com\0better-than.tv\0"
+"higashiagatsuma.gunma.jp\0ug.gov.pl\0"
+"fuoisku.no\0"
+"fbx-os.fr\0"
+"fujieda.shizuoka.jp\0"
+"openair.museum\0"
+"suginami.tokyo.jp\0"
+"kawaba.gunma.jp\0takasaki.gunma.jp\0stage.nodeart.io\0"
+"warabi.saitama.jp\0"
+"chirurgiens-dentistes-en-france.fr\0"
+"virtualserver.io\0"
+"sakae.chiba.jp\0kawai.nara.jp\0sina\0"
+"oguni.yamagata.jp\0voss.no\0"
+"pr.it\0"
+"kitagawa.kochi.jp\0"
+"odda.no\0"
+"site.builder.nu\0"
+"webhop.net\0"
+"moka.tochigi.jp\0lincoln\0is.eu.org\0"
+"pippu.hokkaido.jp\0"
+"sciencesnaturelles.museum\0"
+"gouv.sn\0"
+"shibecha.hokkaido.jp\0"
+"college\0url.tw\0"
+"massa-carrara.it\0"
+"diet\0*.otap.co\0"
+"yashio.saitama.jp\0chofu.tokyo.jp\0"
+"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
+"miasa.nagano.jp\0"
+"l.bg\0servebbs.com\0"
+"family\0"
+"ichikawamisato.yamanashi.jp\0"
+"2.bg\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0"
+"komforb.se\0"
+"customer.speedpartner.de\0"
+"it.eu.org\0"
+"caserta.it\0"
+"tamba.hyogo.jp\0"
+"miyako.iwate.jp\0"
+"\xe7\xbd\x91\xe5\x9d\x80\0bmoattachments.org\0"
+"kosei.shiga.jp\0"
+"shakotan.hokkaido.jp\0"
+"larsson.museum\0"
+"tel.tr\0cherkassy.ua\0is-a-cubicle-slave.com\0"
+"zappos\0lubartow.pl\0"
+"oguni.kumamoto.jp\0"
+"os\xc3\xb8yro.no\0"
+"support\0"
+"koshimizu.hokkaido.jp\0"
+"film.hu\0assisi.museum\0hockey\0cistron.nl\0"
+"nature.museum\0in.na\0"
+"ardal.no\0cookingchannel\0"
+"consulting.aero\0burghof.museum\0"
+"shiraoka.saitama.jp\0in.ni\0vladimir.su\0"
+"toba.mie.jp\0minnesota.museum\0"
+"tsuruoka.yamagata.jp\0"
+"caa.aero\0freight.aero\0"
+"freeddns.org\0"
+"oga.akita.jp\0no-ip.ca\0"
+"umig.gov.pl\0nissan\0"
+"\xc3\xb8rskog.no\0bplaced.com\0"
+"site\0"
+"tottori.tottori.jp\0"
+"muroto.kochi.jp\0review\0"
+"kamikawa.hyogo.jp\0karmoy.no\0go-vip.net\0"
+"nissay\0"
+"yawara.ibaraki.jp\0riodejaneiro.museum\0"
+"in.eu.org\0"
+"uchiko.ehime.jp\0yao.osaka.jp\0auto.pl\0"
+"horse\0is-a-liberal.com\0"
+"voorloper.cloud\0"
+"freeddns.us\0"
+"nishinoshima.shimane.jp\0limanowa.pl\0"
+"cc.tn.us\0"
+"minokamo.gifu.jp\0estate.museum\0k12.nv.us\0\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0vladimir.ru\0"
+"bristol.museum\0"
+"steinkjer.no\0"
+"heimatunduhren.museum\0koeln.museum\0"
+"golffan.us\0"
+"targi.pl\0"
+"fukushima.hokkaido.jp\0"
+"fosnes.no\0showtime\0"
+"essex.museum\0"
+"hicam.net\0"
+"ikawa.akita.jp\0"
+"gouv.km\0"
+"medizinhistorisches.museum\0"
+"happou.akita.jp\0ilawa.pl\0"
+"to.gov.br\0"
+"chippubetsu.hokkaido.jp\0"
+"pc.it\0in.rs\0"
+"dell-ogliastra.it\0suwalki.pl\0"
+"itoigawa.niigata.jp\0toshima.tokyo.jp\0wolterskluwer\0"
+"li.it\0namikata.ehime.jp\0"
+"ddnss.org\0"
+"fukushima.jp\0muroran.hokkaido.jp\0"
+"eu-west-1.elasticbeanstalk.com\0"
+"ama.aichi.jp\0"
+"geek.nz\0quicksytes.com\0"
+"agriculture.museum\0"
+"citic\0"
+"chase\0wales\0dscloud.mobi\0"
+"fuefuki.yamanashi.jp\0gouv.ml\0in.th\0"
+"iwatsuki.saitama.jp\0"
+"chiyoda.tokyo.jp\0is-not-certified.com\0"
+"seirou.niigata.jp\0"
+"nt.au\0"
+"meldal.no\0"
+"wv.us\0"
+"shizukuishi.iwate.jp\0"
+"in.ua\0pa.leg.br\0"
+"texas.museum\0univ.sn\0cyou\0virtual-user.de\0"
+"vlaanderen\0"
+"law.pro\0cust.disrec.thingdust.io\0"
+"nt.ca\0pr.us\0"
+"nakagusuku.okinawa.jp\0"
+"togura.nagano.jp\0okinawa.okinawa.jp\0"
+"\xc3\xa1k\xc5\x8boluokta.no\0k\xc3\xa5""fjord.no\0"
+"tottori.jp\0ikeda.fukui.jp\0onna.okinawa.jp\0republican\0"
+"rightathome\0"
+"town.museum\0in.us\0"
+"city.hu\0jprs\0"
+"flanders.museum\0"
+"ditchyourip.com\0firewall-gateway.de\0"
+"olawa.pl\0"
+"veterinaire.km\0youtube\0"
+"sorfold.no\0az.us\0"
+"sakai.fukui.jp\0arai.shizuoka.jp\0"
+"lib.ri.us\0"
+"is-a-financialadvisor.com\0pb.leg.br\0"
+"dyn53.io\0"
+"troitsk.su\0"
+"friulivegiulia.it\0lib.ms.us\0lib.nc.us\0futbol\0"
+"\xe9\xab\x98\xe7\x9f\xa5.jp\0frosta.no\0servebeer.com\0"
+"suli.hu\0from-pr.com\0"
+"ina.nagano.jp\0"
+"nosegawa.nara.jp\0"
+"genoa.it\0"
+"shopping\0"
+"parma.it\0misasa.tottori.jp\0firebaseapp.com\0"
+"nakagawa.fukuoka.jp\0"
+"in-addr.arpa\0"
+"lib.ca.us\0twmail.org\0memset.net\0"
+"komvux.se\0"
+"dish\0"
+"legnica.pl\0"
+"oita.jp\0"
+"perugia.it\0kamoenai.hokkaido.jp\0"
+"kobayashi.miyazaki.jp\0"
+"wales.museum\0"
+"flir\0"
+"joboji.iwate.jp\0foodnetwork\0"
"com.ac\0"
-"ebetsu.hokkaido.jp\0*.elb.amazonaws.com.cn\0"
-"com.af\0nom.gt\0"
+"teramo.it\0terni.it\0"
+"com.af\0\xe6\x84\x9b\xe5\xaa\x9b.jp\0"
"com.ag\0"
-"com.ai\0"
-"com.al\0aparecida.br\0"
-"ddnslive.com\0"
-"chippubetsu.hokkaido.jp\0"
-"info.co\0"
-"monash\0nom.hn\0"
+"bato.tochigi.jp\0"
+"com.ai\0pc.pl\0"
+"paris.eu.org\0"
+"com.al\0intel\0"
+"com.am\0hurdal.no\0"
+"veterinaire.fr\0"
"com.ba\0"
-"com.ar\0com.bb\0art.br\0pesaro-urbino.it\0"
-"r\xc3\xa1hkker\xc3\xa1vju.no\0hisamitsu\0"
-"pt.it\0"
+"com.ar\0com.bb\0genkai.saga.jp\0myddns.rocks\0"
+"fujinomiya.shizuoka.jp\0lyngen.no\0n\xc3\xb8tter\xc3\xb8y.no\0"
+"loyalist.museum\0wedding\0"
"com.au\0"
-"kashima.saga.jp\0"
-"com.aw\0tours\0"
-"com.bh\0"
-"com.bi\0"
-"com.az\0"
-"s3.dualstack.eu-west-1.amazonaws.com\0"
-"fukushima.hokkaido.jp\0tokorozawa.saitama.jp\0"
-"com.bm\0oregontrail.museum\0read-books.org\0"
+"com.aw\0forgot.his.name\0"
+"com.bh\0piemonte.it\0tokashiki.okinawa.jp\0"
+"com.bi\0cc.wi.us\0"
+"com.az\0ueda.nagano.jp\0kofu.yamanashi.jp\0building.museum\0"
+"com.bm\0\xe5\x9f\xbc\xe7\x8e\x89.jp\0fedex\0"
"com.bn\0"
-"com.bo\0nom.im\0"
-"ogano.saitama.jp\0"
-"com.br\0"
+"com.bo\0taku.saga.jp\0"
+"carbonia-iglesias.it\0k12.nm.us\0is-gone.com\0"
+"com.br\0soundcast.me\0"
"com.bs\0"
"com.bt\0"
-"software.aero\0pubol.museum\0"
-"abira.hokkaido.jp\0"
+"friulive-giulia.it\0notaires.km\0"
+"zara\0"
"com.by\0com.ci\0"
-"com.bz\0ad.jp\0flickr\0"
-"lds\0"
-"com.cm\0plc.co.im\0"
-"com.cn\0traniandriabarletta.it\0"
-"pueblo.bo\0com.co\0art.do\0"
-"\xe5\x85\xac\xe5\x8f\xb8.cn\0"
-"tohnosho.chiba.jp\0kawanabe.kagoshima.jp\0nakagawa.nagano.jp\0"
-"politica.bo\0"
-"sh.cn\0"
-"com.cu\0tr\xc3\xb8gstad.no\0com.de\0"
-"sanagochi.tokushima.jp\0"
-"com.cw\0karasjok.no\0nom.ke\0"
-"com.cy\0tolga.no\0store.ro\0"
-"art.dz\0lom.it\0mantova.it\0"
-"nakadomari.aomori.jp\0"
-"com.dm\0\xe5\x85\xac\xe5\x8f\xb8.hk\0"
-"com.do\0nom.km\0"
-"\xe6\xbb\x8b\xe8\xb3\x80.jp\0weather\0"
-"koka.shiga.jp\0"
-"com.ec\0bashkiria.ru\0"
-"com.ee\0"
-"com.eg\0settlement.museum\0herokussl.com\0"
-"gets-it.net\0"
-"works.aero\0"
-"com.dz\0"
-"nom.li\0"
-"omachi.saga.jp\0"
-"bearalvahki.no\0"
-"\xe7\xa7\x8b\xe7\x94\xb0.jp\0store.st\0"
-"mandal.no\0north-kazakhstan.su\0obninsk.su\0"
-"com.es\0bashkiria.su\0"
+"com.bz\0"
+"oguchi.aichi.jp\0wmflabs.org\0"
+"com.cm\0cc.ia.us\0\xd1\x83\xd0\xba\xd1\x80\0prudential\0"
+"production.aero\0com.cn\0showa.gunma.jp\0iobb.net\0"
+"jdf.br\0com.co\0"
+"takehara.hiroshima.jp\0"
+"tsukigata.hokkaido.jp\0s3-eu-west-3.amazonaws.com\0"
+"ishikawa.jp\0urausu.hokkaido.jp\0l.se\0"
+"com.cu\0rn.it\0americanart.museum\0com.de\0"
+"hisamitsu\0"
+"com.cw\0"
+"\xce\xb5\xce\xbb\0hb.cldmail.ru\0"
+"imb.br\0com.cy\0"
+"washingtondc.museum\0"
+"com.dm\0mycd.eu\0nid.io\0"
+"encyclopedic.museum\0penza.su\0"
+"com.do\0"
+"com.ec\0hirara.okinawa.jp\0"
+"*.sendai.jp\0kosuge.yamanashi.jp\0"
+"com.ee\0mikawa.yamagata.jp\0stockholm\0"
+"com.eg\0tosu.saga.jp\0"
+"izumizaki.fukushima.jp\0sm.ua\0"
+"com.dz\0balestrand.no\0"
+"avoues.fr\0"
+"infiniti\0"
+"hikawa.shimane.jp\0"
+"aomori.jp\0"
+"saroma.hokkaido.jp\0"
+"vet.br\0com.es\0"
"com.et\0"
-"nom.mg\0mein-iserv.de\0"
-"choyo.kumamoto.jp\0"
-"music.museum\0nom.mk\0"
-"com.fr\0"
-"anjo.aichi.jp\0"
-"com.ge\0nom.nc\0"
-"palmas.br\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
-"com.gh\0"
-"economia.bo\0com.gi\0"
-"nom.ni\0"
-"com.gl\0kawara.fukuoka.jp\0tenri.nara.jp\0"
-"barsy.uk\0"
-"com.gn\0email\0"
-"com.gp\0"
-"delta\0"
-"com.gr\0nagara.chiba.jp\0florist\0"
-"dovre.no\0porsanger.no\0s3-us-gov-west-1.amazonaws.com\0"
-"com.gt\0art.ht\0"
-"com.gu\0from-de.com\0"
-"towada.aomori.jp\0takata.fukuoka.jp\0"
-"nom.nu\0"
-"chambagri.fr\0"
-"com.gy\0ap-northeast-1.elasticbeanstalk.com\0"
-"iwanuma.miyagi.jp\0"
-"catering.aero\0com.hk\0roros.no\0"
-"watch\0"
-"vladimir.su\0"
-"com.hn\0semboku.akita.jp\0hanamigawa.chiba.jp\0chiyoda.gunma.jp\0kuwana.mie.jp\0"
-"cinema.museum\0"
-"com.hr\0"
-"nom.pa\0lug.org.uk\0"
-"com.ht\0higashishirakawa.gifu.jp\0"
-"lom.no\0vestvagoy.no\0"
-"ce.gov.br\0"
-"a.bg\0romskog.no\0nom.pe\0"
-"is-into-games.com\0"
-"inatsuki.fukuoka.jp\0"
-"tra.kp\0"
-"com.im\0abudhabi\0"
-"kudoyama.wakayama.jp\0nom.pl\0"
-"com.io\0aejrie.no\0davvenjarga.no\0"
-"nango.fukushima.jp\0band\0forex\0"
-"com.iq\0nationalfirearms.museum\0"
-"com.is\0bergen.no\0nom.qa\0"
-"bank\0"
-"kurashiki.okayama.jp\0musashino.tokyo.jp\0hotel.tz\0"
-"botany.museum\0newmexico.museum\0nom.pw\0"
-"llc\0university\0"
-"higashinaruse.akita.jp\0fujimi.saitama.jp\0"
-"dclk\0"
-"bunkyo.tokyo.jp\0office-on-the.net\0"
-"com.jo\0mycd.eu\0"
-"kawatana.nagasaki.jp\0satosho.okayama.jp\0kawaguchi.saitama.jp\0"
-"honda\0barrel-of-knowledge.info\0"
-"ch.it\0kanazawa.ishikawa.jp\0"
-"com.kg\0matta-varjjat.no\0nom.re\0mckinsey\0ciscofreak.com\0"
-"*.bd\0higashiagatsuma.gunma.jp\0"
-"com.ki\0"
-"com.km\0schoenbrunn.museum\0vladimir.ru\0ybo.review\0"
-"ichinomiya.aichi.jp\0numata.hokkaido.jp\0"
-"lans.museum\0"
-"mitake.gifu.jp\0com.kp\0"
-"com.la\0nom.ro\0"
-"com.lb\0"
-"veterinaire.km\0com.lc\0uzhgorod.ua\0is-a-musician.com\0freedesktop.org\0"
-"info.ve\0nom.rs\0"
-"tanabe.kyoto.jp\0"
-"com.kw\0"
+"hokuryu.hokkaido.jp\0staging.onred.one\0"
+"nahari.kochi.jp\0"
+"londrina.br\0"
"pgafan.net\0"
-"com.ky\0missile.museum\0"
+"is-a-bruinsfan.org\0"
+"com.fr\0tobishima.aichi.jp\0"
+"com.ge\0otago.museum\0rygge.no\0ky.us\0co.business\0"
+"cooking\0"
+"sasayama.hyogo.jp\0skedsmokorset.no\0no-ip.co.uk\0"
+"com.gh\0valle-aosta.it\0gs.of.no\0"
+"com.gi\0tomari.hokkaido.jp\0"
+"v\xc3\xa5ler.hedmark.no\0"
+"mordovia.su\0"
+"com.gl\0"
+"com.gn\0lindas.no\0"
+"com.gp\0dyndns-blog.com\0"
+"trentinoaadige.it\0"
+"com.gr\0"
+"goshiki.hyogo.jp\0\xe7\xbd\x91\xe7\xab\x99\0"
+"com.gt\0ak.us\0americanexpress\0"
+"com.gu\0taiki.mie.jp\0productions\0"
+"forsale\0*.0emm.com\0"
+"ssl.origin.cdn77-secure.org\0"
+"com.gy\0"
+"com.hk\0agrigento.it\0kamigori.hyogo.jp\0"
+"sch.ae\0oe.yamagata.jp\0"
+"com.hn\0bjark\xc3\xb8y.no\0dyndns-mail.com\0"
+"pistoia.it\0holdings\0*.stg.dev\0"
+"com.hr\0nome.pt\0ltda\0"
+"com.ht\0"
+"nt.no\0\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0comsec\0"
+"kiso.nagano.jp\0"
+"\xe7\xb5\x84\xe7\xb9\x94.\xe9\xa6\x99\xe6\xb8\xaf\0dynalias.net\0"
+"tunes\0"
+"r\xc3\xa6lingen.no\0hepforge.org\0"
+"tank.museum\0"
+"com.im\0wajiki.tokushima.jp\0"
+"com.io\0"
+"iwate.iwate.jp\0"
+"com.iq\0work\0"
+"catania.it\0shibata.miyagi.jp\0seoul.kr\0"
+"com.is\0kasuya.fukuoka.jp\0gemological.museum\0groks-this.info\0"
+"press.museum\0rocks\0"
+"orsta.no\0"
+"iris.arpa\0"
+"malvik.no\0"
+"mordovia.ru\0"
+"tsuyama.okayama.jp\0"
+"s\xc3\xb8ndre-land.no\0"
+"schokokeks.net\0"
+"com.jo\0"
+"lugansk.ua\0"
+"kazuno.akita.jp\0"
+"eu.meteorapp.com\0"
+"ibara.okayama.jp\0sklep.pl\0nis.za\0cloud.fedoraproject.org\0"
+"com.kg\0\xd7\xa7\xd7\x95\xd7\x9d\0s3.dualstack.ap-southeast-1.amazonaws.com\0"
+"com.ki\0"
+"jan-mayen.no\0"
+"kunigami.okinawa.jp\0"
+"com.km\0"
+"tsumagoi.gunma.jp\0"
+"usdecorativearts.museum\0leikanger.no\0"
+"obira.hokkaido.jp\0com.kp\0"
+"com.la\0"
+"com.lb\0*.alces.network\0"
+"com.lc\0"
+"artanddesign.museum\0osen.no\0"
+"sn\xc3\xa5sa.no\0"
+"com.kw\0dreamhosters.com\0"
+"tamakawa.fukushima.jp\0mykolaiv.ua\0"
+"com.ky\0"
"com.kz\0"
-"com.lk\0nom.si\0"
-"pa.it\0info.vn\0arab\0"
-"*.ck\0"
-"miyako.iwate.jp\0"
-"k12.ok.us\0"
-"com.lr\0wlocl.pl\0\xe5\xb7\xa5\xe8\xa1\x8c\0"
-"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0"
-"isa-hockeynut.com\0"
-"com.lv\0ostrowiec.pl\0nom.st\0"
-"com.mg\0"
-"kawasaki.miyagi.jp\0"
+"com.lk\0freebox-os.fr\0withyoutube.com\0"
+"cc.nv.us\0"
+"aknoluokta.no\0"
+"pi.leg.br\0"
+"pvh.br\0"
+"tsunan.niigata.jp\0com.lr\0skin\0"
+"k12.fl.us\0pizza\0"
+"kashima.saga.jp\0nt.ro\0"
+"com.lv\0"
+"cuneo.it\0kainan.tokushima.jp\0com.mg\0*.kunden.ortsinfo.at\0"
+"k12.ar.us\0"
"com.ly\0"
-"com.mk\0"
-"com.ml\0nom.tj\0"
-"historyofscience.museum\0midtre-gauldal.no\0bir.ru\0"
-"minami.fukuoka.jp\0"
-"com.mo\0southwest.museum\0nom.tm\0drud.io\0"
+"com.mk\0discover\0from-id.com\0"
+"com.ml\0tysvar.no\0"
+"n\xc3\xa6r\xc3\xb8y.no\0bplaced.net\0"
+"kai.yamanashi.jp\0"
+"com.mo\0globo\0"
"com.na\0"
-"com.ms\0showtime\0"
-"com.mt\0lol\0"
-"com.mu\0plaza.museum\0"
-"com.mv\0com.nf\0"
+"bifuka.hokkaido.jp\0"
+"com.ms\0lunner.no\0qualifioapp.com\0"
+"com.mt\0"
+"obama.nagasaki.jp\0com.mu\0"
+"com.mv\0com.nf\0vuelos\0"
"com.mw\0com.ng\0"
"com.mx\0"
-"com.my\0com.ni\0nom.ug\0"
-"yonezawa.yamagata.jp\0"
-"production.aero\0sciencecenters.museum\0"
-"lodi.it\0info.tn\0"
-"chiryu.aichi.jp\0"
-"blogdns.com\0"
-"com.nr\0info.tr\0"
-"lib.mt.us\0lib.nd.us\0"
-"info.tt\0lpl\0"
-"ooguy.com\0nom.vc\0"
-"*.er\0"
-"sande.m\xc3\xb8re-og-romsdal.no\0"
-"veterinaire.fr\0rikuzentakata.iwate.jp\0jeonnam.kr\0"
-"nom.vg\0"
-"info.tz\0"
-"t.se\0nom.uy\0"
-"art.pl\0"
-"com.om\0"
-"*.fj\0"
-"*.fk\0"
-"\xe4\xb8\x89\xe9\x87\x8d.jp\0"
-"com.pa\0cc.pa.us\0"
-"nishinomiya.hyogo.jp\0"
-"tsurugashima.saitama.jp\0"
-"aukra.no\0com.pe\0"
-"hara.nagano.jp\0com.pf\0man\0"
-"pharmacy.museum\0"
-"piemonte.it\0trentinosudtirol.it\0com.ph\0map\0zapto.xyz\0"
-"mba\0"
-"izena.okinawa.jp\0"
-"museumvereniging.museum\0com.pk\0"
-"tomioka.gunma.jp\0com.pl\0"
-"takasaki.gunma.jp\0hiraizumi.iwate.jp\0"
-"info.ro\0"
-"historichouses.museum\0com.qa\0"
-"com.pr\0"
-"com.ps\0"
-"com.pt\0info.sd\0"
-"g\xc3\xa1\xc5\x8bgaviika.no\0"
-"hida.gifu.jp\0"
-"hotel.lk\0com.py\0paris\0"
-"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0fujixerox\0"
-"yachiyo.chiba.jp\0"
-"trentinosued-tirol.it\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa7\xb0\xe0\xa6\xa4\0"
-"holtalen.no\0"
-"\xe7\xb5\x84\xe7\xb9\x94.tw\0"
-"soeda.fukuoka.jp\0"
-"gorge.museum\0com.re\0au.eu.org\0be.eu.org\0"
-"info.pk\0"
-"trentinosuedtirol.it\0tokamachi.niigata.jp\0gushikami.okinawa.jp\0info.pl\0ltd\0"
-"miyoshi.saitama.jp\0art.sn\0"
+"com.my\0com.ni\0"
+"kamagaya.chiba.jp\0"
+"df.gov.br\0komatsu\0"
+"channelsdvr.net\0global.prod.fastly.net\0"
+"nara.jp\0"
+"mo\xc3\xa5reke.no\0bible\0"
+"ne.jp\0"
+"uenohara.yamanashi.jp\0bindal.no\0com.nr\0"
+"ne.ke\0"
+"tula.su\0"
+"costume.museum\0od.ua\0"
+"bulsan-sudtirol.it\0soma.fukushima.jp\0osakikamijima.hiroshima.jp\0nishikawa.yamagata.jp\0user.aseinet.ne.jp\0"
+"y.bg\0"
+"pp.az\0com.om\0"
+"bilbao.museum\0"
+"ne.kr\0com.pa\0"
+"definima.net\0"
+"cloudfront.net\0"
+"com.pe\0"
+"com.pf\0cv.ua\0"
+"kitayama.wakayama.jp\0lier.no\0"
+"com.ph\0at-band-camp.net\0"
+"sch.id\0com.pk\0"
+"tj.cn\0com.pl\0"
+"shimotsuma.ibaraki.jp\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0"
+"ruovat.no\0"
+"com.qa\0"
+"kamitsue.oita.jp\0com.pr\0mlbfan.org\0"
+"\xe4\xbd\x90\xe8\xb3\x80.jp\0bill.museum\0com.ps\0exchange\0"
+"com.pt\0"
+"jgora.pl\0"
+"sch.ir\0com.py\0go-vip.co\0"
+"center\0"
+"elasticbeanstalk.com\0"
+"pvt.k12.ma.us\0"
+"otsuki.kochi.jp\0"
+"nextdirect\0"
+"the.br\0dsmynas.net\0"
+"com.re\0lib.la.us\0"
+"natal.br\0sch.jo\0"
+"karasuyama.tochigi.jp\0"
+"ravenna.it\0"
+"matsubushi.saitama.jp\0deals\0vpndns.net\0"
+"med.br\0meland.no\0"
+"perso.ht\0ringebu.no\0"
+"ikoma.nara.jp\0sakai.osaka.jp\0"
+"anthropology.museum\0durham.museum\0"
"com.ro\0"
-"denmark.museum\0uhren.museum\0com.sa\0servegame.com\0"
-"info.pr\0com.sb\0"
-"com.sc\0nom.za\0"
-"hs.kr\0com.sd\0"
-"\xc3\xa5l.no\0com.se\0com.ru\0"
-"mashiki.kumamoto.jp\0"
-"com.rw\0com.sg\0"
+"weather\0myjino.ru\0"
+"com.sa\0"
+"dgca.aero\0com.sb\0"
+"com.sc\0"
+"com.sd\0"
+"com.se\0com.ru\0"
+"ibaraki.jp\0com.sg\0"
"com.sh\0"
-"rade.no\0americanfamily\0"
-"valledaosta.it\0"
-"froya.no\0"
-"store.bb\0com.sl\0med\0"
-"com.sn\0ericsson\0"
-"com.so\0git-repos.de\0"
-"ryuoh.shiga.jp\0"
-"*.jm\0info.na\0is-a-democrat.com\0"
-"britishcolumbia.museum\0"
-"motobu.okinawa.jp\0com.st\0"
-"myravendb.com\0"
-"info.mv\0info.nf\0com.sv\0men\0"
-"trainer.aero\0"
-"info.ni\0com.sy\0barsy.bg\0"
-"com.tj\0"
-"*.kh\0"
+"matsumoto.nagano.jp\0"
+"niigata.jp\0com.sl\0"
+"video\0"
+"art.museum\0virtual.museum\0com.sn\0"
+"com.so\0"
+"itako.ibaraki.jp\0sch.lk\0rodeo\0"
+"com.ss\0northwesternmutual\0"
+"ogata.akita.jp\0com.st\0pt.eu.org\0"
+"opoczno.pl\0podhale.pl\0lugs.org.uk\0"
+"arteducation.museum\0com.sv\0xnbay.com\0"
+"com.sy\0"
+"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0com.tj\0"
+"milano.it\0roma.it\0s3-fips-us-gov-west-1.amazonaws.com\0"
+"med.ec\0*.awdev.ca\0"
"com.tm\0"
-"com.tn\0"
-"depot.museum\0com.to\0"
-"com.ua\0safe\0"
-"info.nr\0com.tr\0pohl\0"
-"tysvar.no\0"
-"re.it\0com.tt\0"
-"muncie.museum\0com.tw\0cherkassy.ua\0com.ug\0"
-"geisei.kochi.jp\0izumi.osaka.jp\0swidnik.pl\0"
-"tomobe.ibaraki.jp\0"
-"exeter.museum\0"
-"monzabrianza.it\0"
-"info.la\0bitballoon.com\0"
-"\xe0\xb8\x97\xe0\xb8\xab\xe0\xb8\xb2\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0istanbul\0"
-"hotel.hu\0com.vc\0barcelona\0"
-"com.ve\0realestate\0store.dk\0bg.eu.org\0"
-"flog.br\0"
-"\xe7\xbb\x84\xe7\xb9\x94.hk\0barsy.de\0"
-"com.uy\0com.vi\0ddnsking.com\0"
-"com.uz\0"
+"med.ee\0com.tn\0"
+"com.to\0pe.leg.br\0yandexcloud.net\0"
+"sch.ly\0"
+"com.ua\0paris\0"
+"com.tr\0discourse.group\0"
+"host\0"
+"com.tt\0"
+"francaise.museum\0ne.pw\0"
+"com.tw\0com.ug\0us-east-1.elasticbeanstalk.com\0"
+"modelling.aero\0k12.sc.us\0"
+"katsuragi.wakayama.jp\0klodzko.pl\0"
+"rad\xc3\xb8y.no\0from-la.net\0"
+"nishiawakura.okayama.jp\0"
+"sch.ng\0online.th\0from-ak.com\0"
+"utah.museum\0"
+"v\xc3\xa5gan.no\0"
+"nagasaki.jp\0"
+"ogasawara.tokyo.jp\0varoy.no\0com.vc\0"
+"v\xc3\xa5ler.\xc3\xb8stfold.no\0"
+"com.ve\0"
+"k12.gu.us\0"
+"priv.hu\0"
+"com.uy\0com.vi\0"
+"trani-andria-barletta.it\0kawaminami.miyazaki.jp\0com.uz\0"
+"tr\xc3\xb8gstad.no\0"
+"iijima.nagano.jp\0"
"com.vn\0"
-"bronnoysund.no\0"
-"toya.hokkaido.jp\0ebina.kanagawa.jp\0"
-"*.mm\0zoological.museum\0lind\xc3\xa5s.no\0"
-"re.kr\0"
-"info.ls\0no-ip.co.uk\0"
+"isumi.chiba.jp\0"
+"*.moonscale.io\0"
"com.vu\0"
-"finearts.museum\0"
-"hiratsuka.kanagawa.jp\0"
-"media.hu\0iron.museum\0"
-"jampa.br\0"
-"k12.nj.us\0"
-"tamano.okayama.jp\0"
-"misaki.okayama.jp\0cloudns.club\0"
-"heroy.nordland.no\0"
-"homeftp.net\0"
+"tohnosho.chiba.jp\0"
+"guide\0"
+"yolasite.com\0"
+"is-a-lawyer.com\0"
+"mugi.tokushima.jp\0"
+"democracia.bo\0"
+"*.nagoya.jp\0"
"com.ws\0"
-"mil\0*.np\0hgtv\0"
-"varggat.no\0"
-"vlog.br\0oharu.aichi.jp\0"
-"barsy.eu\0"
-"mit\0"
-"pa.us\0"
-"friulivegiulia.it\0"
-"town.museum\0"
-"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0hidaka.saitama.jp\0"
-"ab.ca\0info.ke\0forum\0us.com\0"
-"chuo.fukuoka.jp\0sklep.pl\0"
-"qld.au\0"
-"info.ki\0"
-"jinsekikogen.hiroshima.jp\0yashio.saitama.jp\0"
-"*.pg\0"
-"lib.mi.us\0"
-"to.leg.br\0"
-"comsec\0"
-"jan-mayen.no\0"
-"loten.no\0drud.us\0"
-"a.se\0army\0east-kazakhstan.su\0"
-"tomiya.miyagi.jp\0"
-"mlb\0"
-"s3-website.ap-south-1.amazonaws.com\0kurgan.su\0"
-"sld.do\0com.zm\0"
-"campidanomedio.it\0"
-"luxembourg.museum\0sale\0"
+"lifestyle\0"
+"helsinki\0"
+"miyada.nagano.jp\0"
+"\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0"
+"sch.qa\0"
+"akaiwa.okayama.jp\0"
+"med.ht\0"
+"flog.br\0"
+"from-tx.com\0"
+"s3-website.eu-west-3.amazonaws.com\0"
+"j.bg\0okawa.kochi.jp\0we.bs\0"
+"brumunddal.no\0pruszkow.pl\0ne.ug\0"
+"odo.br\0ponpes.id\0"
+"sk.ca\0*.sapporo.jp\0"
+"ne.tz\0"
+"0.bg\0corsica\0"
+"grane.no\0"
+"motosu.gifu.jp\0"
+"\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0"
+"taa.it\0"
+"minamiaiki.nagano.jp\0"
+"lowicz.pl\0ne.us\0cloudns.pro\0"
+"surgeonshall.museum\0"
+"sandoy.no\0"
+"textile.museum\0"
+"sch.sa\0"
+"ga.us\0"
+"com.zm\0"
+"trd.br\0ogawa.nagano.jp\0"
+"trentino-stirol.it\0wegrow.pl\0selfip.net\0"
+"vlog.br\0est-a-la-masion.com\0"
+"obu.aichi.jp\0"
+"meet\0"
+"fhsk.se\0sch.so\0"
+"kasugai.aichi.jp\0stuff-4-sale.org\0kalmykia.su\0priv.at\0"
+"architecture.museum\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
+"nagiso.nagano.jp\0"
+"balsan-suedtirol.it\0"
+"romskog.no\0grozny.su\0telebit.app\0"
+"beiarn.no\0"
+"koge.tottori.jp\0"
+"takata.fukuoka.jp\0iwafune.tochigi.jp\0aremark.no\0"
+"of.fashion\0"
+"iiyama.nagano.jp\0cambridge.museum\0lib.al.us\0"
"ouda.nara.jp\0"
-"dynamic-dns.info\0"
-"griw.gov.pl\0"
-"s3-external-1.amazonaws.com\0"
-"karikatur.museum\0project.museum\0mma\0"
-"kg.kr\0"
-"mls\0"
-"arpa\0michigan.museum\0"
-"nanporo.hokkaido.jp\0uppo.gov.pl\0"
-"flesberg.no\0"
-"barsy.in\0"
-"it.ao\0time.no\0barsy.io\0"
-"freemasonry.museum\0africa\0hr.eu.org\0"
-"ntdll.top\0"
-"r.bg\0skierva.no\0qc.com\0"
-"r\xc3\xa1isa.no\0parts\0"
-"omiya.saitama.jp\0"
-"roma.museum\0"
-"res.aero\0party\0"
-"rockart.museum\0"
-"mj\xc3\xb8ndalen.no\0contractors\0passagens\0"
-"hamaroy.no\0"
-"go.gov.br\0"
-"educational.museum\0"
-"amagasaki.hyogo.jp\0frontier\0"
-"\xe7\xae\x87\xe4\xba\xba.hk\0ddr.museum\0s3.dualstack.ap-southeast-2.amazonaws.com\0"
-"weir\0"
-"feira.br\0asakawa.fukushima.jp\0"
-"fl\xc3\xa5.no\0k12.sc.us\0moe\0"
-"oregon.museum\0"
-"vercelli.it\0basketball\0"
-"aip.ee\0nedre-eiker.no\0moi\0"
-"togakushi.nagano.jp\0final\0barsy.support\0no-ip.biz\0"
-"consulting\0mom\0tires\0lcube-server.de\0"
-"voting\0"
-"is-a-landscaper.com\0"
-"conf.au\0suisse.museum\0"
-"kamikawa.hyogo.jp\0mov\0"
-"frogn.no\0"
-"media.pl\0"
-"bsb.br\0swiftcover\0"
-"koori.fukushima.jp\0porn\0noho.st\0"
-"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0"
-"honbetsu.hokkaido.jp\0"
-"pacific.museum\0"
-"fm.br\0makinohara.shizuoka.jp\0"
-"nab\0myfritz.net\0"
-"co.krd\0"
-"asda\0"
-"pr.it\0kakamigahara.gifu.jp\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0deal\0"
-"aogashima.tokyo.jp\0"
-"arte\0"
-"reggioemilia.it\0ehime.jp\0teshikaga.hokkaido.jp\0"
-"santamaria.br\0"
-"cyber.museum\0"
-"nakagawa.hokkaido.jp\0yamato.kanagawa.jp\0ogimi.okinawa.jp\0"
-"nba\0"
-"post\0"
-"cahcesuolo.no\0"
-"android\0"
-"\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0"
-"s3-eu-central-1.amazonaws.com\0"
-"kawai.nara.jp\0\xe8\xb0\xb7\xe6\xad\x8c\0"
-"withgoogle.com\0"
-"nh-serv.co.uk\0"
-"iizuka.fukuoka.jp\0meiwa.mie.jp\0lezajsk.pl\0"
-"minamiboso.chiba.jp\0hashima.gifu.jp\0imamat\0"
-"manaus.br\0urbino-pesaro.it\0kariya.aichi.jp\0sarl\0"
-"vpnplus.to\0"
-"msd\0"
-"bbva\0"
-"meldal.no\0"
-"*.triton.zone\0"
-"crotone.it\0toho.fukuoka.jp\0"
-"portal.museum\0tr\xc3\xa6na.no\0\xd9\x82\xd8\xb7\xd8\xb1\0"
-"allfinanz\0"
-"heroy.more-og-romsdal.no\0"
-"*.ye\0"
-"nrw.museum\0"
-"does-it.net\0"
-"ginoza.okinawa.jp\0"
-"yahaba.iwate.jp\0"
-"cc.pr.us\0azerbaijan.su\0"
-"mtn\0"
-"cloudns.info\0"
-"abarth\0"
-"\xe1\x83\x92\xe1\x83\x94\0mtr\0"
-"nec\0"
-"yokote.akita.jp\0sodegaura.chiba.jp\0"
-"l\xc3\xa1hppi.no\0"
-"kitagawa.kochi.jp\0"
-"workinggroup.aero\0"
-"padova.it\0onga.fukuoka.jp\0"
-"stjordal.no\0us-east-1.elasticbeanstalk.com\0s3-sa-east-1.amazonaws.com\0"
-"\xe5\xbe\xb3\xe5\xb3\xb6.jp\0komatsu.ishikawa.jp\0"
-"gs.fm.no\0"
-"saobernardo.br\0"
-"globo\0"
-"okinawa.okinawa.jp\0net\0"
-"asia\0"
-"melhus.no\0new\0"
-"vao.it\0"
-"save\0"
-"defense.tn\0"
-"lefrak\0"
-"kawanishi.yamagata.jp\0nfl\0"
-"katsushika.tokyo.jp\0lawyer\0"
-"\xe7\xb5\x84\xe7\xb9\x94.hk\0pramerica\0"
-"df.leg.br\0"
-"airtel\0"
-"rakkestad.no\0"
-"tsuga.tochigi.jp\0"
-"sld.pa\0"
-"med.pro\0"
-"gs.sf.no\0"
-"ecologia.bo\0"
-"ngo\0"
-"everbank\0"
-"fm.it\0nishiazai.shiga.jp\0"
-"v\xc3\xa5gan.no\0is-into-cartoons.com\0"
-"def.br\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0"
-"public.museum\0software\0"
-"seaport.museum\0"
-"hino.tokyo.jp\0"
-"austin.museum\0nhk\0"
-"writesthisblog.com\0"
-"mlbfan.org\0"
-"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0abr.it\0varese.it\0hirokawa.fukuoka.jp\0"
-"kvanangen.no\0"
-"maceio.br\0"
-"saxo\0"
-"furniture.museum\0"
-"tirol\0"
-"saka.hiroshima.jp\0*.magentosite.cloud\0"
-"brunel.museum\0tingvoll.no\0eaton.mi.us\0daplie.me\0"
-"s\xc3\xbc""dtirol.it\0"
-"stadt.museum\0"
-"yamada.iwate.jp\0"
-"lib.tx.us\0"
-"ravenna.it\0cistron.nl\0"
-"bestbuy\0"
-"kamisato.saitama.jp\0"
-"\xc3\xa5seral.no\0drive\0drayddns.com\0"
-"corporation.museum\0"
-"adv.br\0"
-"jorpeland.no\0info.zm\0"
-"abeno.osaka.jp\0showa.yamanashi.jp\0"
-"k12.ar.us\0"
-"idv.hk\0medizinhistorisches.museum\0"
-"locker\0"
-"sampa.br\0tsumagoi.gunma.jp\0wiw.gov.pl\0"
-"allstate\0"
-"miyota.nagano.jp\0"
-"\xe9\x9d\x99\xe5\xb2\xa1.jp\0"
-"mihama.fukui.jp\0nishiokoppe.hokkaido.jp\0"
-"tsuiki.fukuoka.jp\0"
-"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0"
-"higashisumiyoshi.osaka.jp\0"
-"acct.pro\0movie\0"
-"nichinan.miyazaki.jp\0dell\0"
-"pizza\0"
-"trentinsud-tirol.it\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0"
-"r\xc3\xb8""d\xc3\xb8y.no\0vikna.no\0s3-website-ap-southeast-1.amazonaws.com\0"
-"tone.ibaraki.jp\0cloudaccess.host\0"
-"touch.museum\0nesodden.no\0"
-"fm.no\0"
-"\xe3\x82\xb3\xe3\x83\xa0\0"
-"khmelnytskyi.ua\0"
-"jgora.pl\0"
-"is-with-theband.com\0"
-"gok.pk\0pr.us\0"
-"kotoura.tottori.jp\0"
-"minamiashigara.kanagawa.jp\0"
-"kyoto.jp\0"
-"satx.museum\0brumunddal.no\0"
-"curitiba.br\0"
-"bc.ca\0\xe7\xb6\xb2\xe7\xb5\xa1.hk\0uscountryestate.museum\0hockey\0"
-"kawakami.nara.jp\0"
-"ringsaker.no\0"
-"suwa.nagano.jp\0"
-"t\xc3\xb8nsberg.no\0"
-"sf.no\0mk.ua\0"
-"komagane.nagano.jp\0murakami.niigata.jp\0"
-"fjell.no\0events\0"
-"pioneer\0"
-"dyndns-mail.com\0"
-"hizen.saga.jp\0"
-"r.se\0"
-"health.museum\0no-ip.info\0"
-"elblag.pl\0eurovision\0international\0"
-"nl.ca\0user.party.eus\0is-a-bookkeeper.com\0"
-"\xe9\xb3\xa5\xe5\x8f\x96.jp\0ogasawara.tokyo.jp\0\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0"
-"\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0"
-"capebreton.museum\0s\xc3\xb8ndre-land.no\0"
-"niigata.jp\0!city.kawasaki.jp\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0"
-"now\0"
-"london\0"
-"ishikawa.jp\0samukawa.kanagawa.jp\0"
-"kunstsammlung.museum\0"
-"yamato.kumamoto.jp\0"
-"australia.museum\0"
-"rome.it\0tsuru.yamanashi.jp\0"
-"wake.okayama.jp\0wloclawek.pl\0"
-"chigasaki.kanagawa.jp\0"
-"ngrok.io\0noip.us\0"
-"etc.br\0seki.gifu.jp\0"
-"lincoln.museum\0il.eu.org\0"
-"\xe5\xba\x83\xe5\xb3\xb6.jp\0"
-"eastcoast.museum\0sor-fron.no\0ipiranga\0"
-"nra\0twmail.cc\0"
-"\xc3\xa5krehamn.no\0lib.vt.us\0"
-"anan.tokushima.jp\0yamanobe.yamagata.jp\0"
-"ichiba.tokushima.jp\0"
-"f\xc3\xb8rde.no\0"
-"obi\0"
-"garden\0"
-"inami.wakayama.jp\0"
-"photos\0"
-"crafting.xyz\0"
-"parti.se\0"
-"svizzera.museum\0firewall-gateway.de\0"
-"pharmaciens.km\0chernihiv.ua\0desi\0"
-"nrw\0"
-"shiki.saitama.jp\0"
-"caa.aero\0sor-odal.no\0cc.ia.us\0"
-"norddal.no\0hu.eu.org\0ie.eu.org\0"
-"sakai.fukui.jp\0"
-"balsfjord.no\0bloxcms.com\0"
-"\xe7\x8f\xa0\xe5\xae\x9d\0shiftedit.io\0"
-"kitanakagusuku.okinawa.jp\0"
-"rc.it\0"
-"gs.nl.no\0rv.ua\0"
-"kanie.aichi.jp\0"
-"dnipropetrovsk.ua\0tube\0"
-"fuso.aichi.jp\0"
-"loppa.no\0tiffany\0"
-"reklam.hu\0"
-"numata.gunma.jp\0ntt\0"
-"sa.edu.au\0"
-"verbania.it\0"
-"shimabara.nagasaki.jp\0dnsalias.net\0"
-"nesseby.no\0plumbing\0"
-"servehttp.com\0"
-"onjuku.chiba.jp\0adv.mz\0"
-"kids.museum\0motorcycle.museum\0"
-"kamioka.akita.jp\0ine.kyoto.jp\0"
-"nationalheritage.museum\0gratis\0"
-"off\0"
-"gausdal.no\0condos\0"
-"daisen.akita.jp\0"
-"openair.museum\0gaular.no\0\xc3\xb8ystre-slidre.no\0"
-"lib.or.us\0"
-"uw.gov.pl\0"
-"ismaili\0"
-"furukawa.miyagi.jp\0kitakata.miyazaki.jp\0"
+"trentin-sud-tirol.it\0kawakami.nara.jp\0"
+"med.ly\0"
+"wedeploy.sh\0"
+"kijo.miyazaki.jp\0"
+"fl\xc3\xa5.no\0"
+"tono.iwate.jp\0"
+"masfjorden.no\0"
+"yoichi.hokkaido.jp\0"
+"gateway.museum\0bike\0"
+"h\xc3\xb8nefoss.no\0"
+"rexroth\0"
+"kure.hiroshima.jp\0"
+"kalmykia.ru\0"
+"tsuno.kochi.jp\0"
"nagawa.nagano.jp\0"
-"s\xc3\xb8mna.no\0lpusercontent.com\0"
-"pp.az\0yomitan.okinawa.jp\0"
-"idv.tw\0"
-"estate\0"
-"caravan\0"
-"yamagata.ibaraki.jp\0"
-"b\xc3\xa5tsfjord.no\0"
-"nara.jp\0"
-"gliding.aero\0cc.as.us\0"
-"yamazoe.nara.jp\0"
-"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0democrat\0"
-"iwate.jp\0"
-"skien.no\0"
-"taxi.br\0takagi.nagano.jp\0"
-"embetsu.hokkaido.jp\0kuju.oita.jp\0"
-"servehumour.com\0"
-"dr\xc3\xb8""bak.no\0"
-"minamiminowa.nagano.jp\0yamatotakada.nara.jp\0toshima.tokyo.jp\0"
-"fineart.museum\0storfjord.no\0nyc\0"
-"vall\xc3\xa9""eaoste.it\0"
-"statebank\0"
-"is-a-nascarfan.com\0""3utilities.com\0"
-"nachikatsuura.wakayama.jp\0"
-"fin.ec\0"
-"dali.museum\0songdalen.no\0"
-"obama.fukui.jp\0"
-"imabari.ehime.jp\0"
-"trysil.no\0s3.dualstack.us-east-1.amazonaws.com\0"
-"\xe0\xb2\xad\xe0\xb2\xbe\xe0\xb2\xb0\xe0\xb2\xa4\0"
-"ashoro.hokkaido.jp\0"
-"hembygdsforbund.museum\0"
-"\xe6\x89\x8b\xe8\xa1\xa8\0"
-"conf.lv\0"
-"nl.no\0feedback\0shouji\0"
-"iglesias-carbonia.it\0hashikami.aomori.jp\0"
-"sakura.tochigi.jp\0"
-"p.bg\0emerck\0"
-"sakaiminato.tottori.jp\0"
-"cleaning\0"
-"shijonawate.osaka.jp\0hino.tottori.jp\0nanyo.yamagata.jp\0"
-"\xe6\x95\x99\xe8\x82\xb2.hk\0indiana.museum\0"
+"engineer.aero\0notaires.fr\0"
+"flora.no\0"
+"moriyama.shiga.jp\0"
"izu.shizuoka.jp\0"
-"is-a-techie.com\0"
-"adult\0"
-"equipment\0"
-"discovery.museum\0pharmacy\0"
-"ia.us\0"
-"nishihara.okinawa.jp\0izumiotsu.osaka.jp\0"
-"nasu.tochigi.jp\0"
-"lib.vi.us\0servegame.org\0noip.me\0pantheonsite.io\0"
-"sakegawa.yamagata.jp\0"
-"ass.km\0skaun.no\0"
-"armenia.su\0"
-"half.host\0"
-"tsubata.ishikawa.jp\0"
-"servequake.com\0"
-"9.bg\0v\xc3\xa6r\xc3\xb8y.no\0gr.eu.org\0"
-"yachiyo.ibaraki.jp\0fujisawa.kanagawa.jp\0urawa.saitama.jp\0"
-"maryland.museum\0"
-"taki.mie.jp\0"
-"\xe6\x96\xb0\xe9\x97\xbb\0"
-"ilawa.pl\0"
-"fundacio.museum\0one\0travelersinsurance\0"
-"wada.nagano.jp\0\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0"
-"ong\0*.elb.amazonaws.com\0from-ks.com\0"
-"nord-aurdal.no\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0"
-"ninohe.iwate.jp\0"
-"otsuki.yamanashi.jp\0onl\0"
-"meguro.tokyo.jp\0"
-"trust.museum\0zhytomyr.ua\0"
-"tarui.gifu.jp\0"
-"ballooning.aero\0"
-"miyazaki.jp\0vpndns.net\0"
-"railroad.museum\0"
-"blog.bo\0capitalone\0"
-"aki.kochi.jp\0"
-"chintai\0rackmaze.com\0"
-"blog.br\0"
-"ooo\0"
-"bialystok.pl\0"
-"manno.kagawa.jp\0shichikashuku.miyagi.jp\0"
-"med.br\0scor\0"
-"scot\0"
-"fvg.it\0toyako.hokkaido.jp\0discover\0"
-"miho.ibaraki.jp\0"
-"oppegard.no\0"
-"as.us\0"
-"sd.cn\0malbork.pl\0"
-"virginia.museum\0"
-"higashitsuno.kochi.jp\0"
-"mi.it\0"
-"oksnes.no\0shangrila\0"
-"gyeongnam.kr\0limited\0rj.leg.br\0"
-"k12.ks.us\0"
-"brescia.it\0"
-"jeju.kr\0management\0podzone.net\0"
-"vads\xc3\xb8.no\0audi\0"
-"outsystemscloud.com\0"
-"funahashi.toyama.jp\0"
-"autos\0wellbeingzone.co.uk\0"
-"forlicesena.it\0olawa.pl\0ostrowwlkp.pl\0"
-"vanylven.no\0from-ms.com\0from-nc.com\0"
-"asuke.aichi.jp\0flynnhosting.net\0"
-"r\xc3\xa6lingen.no\0"
-"med.ec\0org\0delivery\0n4t.co\0"
-"vic.edu.au\0med.ee\0pay\0golffan.us\0"
-"kinko.kagoshima.jp\0"
-"marche.it\0"
-"*.compute-1.amazonaws.com\0"
-"porsgrunn.no\0"
-"tochio.niigata.jp\0"
-"unicom\0"
-"konsulat.gov.pl\0"
-"lakas.hu\0dyndns-ip.com\0"
-"heritage.museum\0starnberg.museum\0dscloud.me\0"
-"yamatsuri.fukushima.jp\0beer\0barsy.shop\0"
-"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0komaki.aichi.jp\0myoko.niigata.jp\0"
-"veneto.it\0tobetsu.hokkaido.jp\0semine.miyagi.jp\0"
-"movimiento.bo\0"
-"hammerfest.no\0"
-"zakopane.pl\0"
-"quebec\0fuettertdasnetz.de\0"
-"nishiwaki.hyogo.jp\0"
-"brandywinevalley.museum\0s3.dualstack.eu-west-2.amazonaws.com\0"
-"fiat\0"
-"granvin.no\0cc.mi.us\0"
-"grp.lk\0pvt.k12.ma.us\0"
-"name.hr\0sugito.saitama.jp\0"
-"mishima.fukushima.jp\0joetsu.niigata.jp\0"
-"suzuka.mie.jp\0"
-"\xe6\x85\x88\xe5\x96\x84\0"
-"is-an-engineer.com\0"
-"minami.tokushima.jp\0ott\0"
-"nationwide\0from-sc.com\0"
-"potenza.it\0career\0"
-"\xe6\x94\xbf\xe5\xba\x9c.hk\0panasonic\0"
-"\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0"
-"goshiki.hyogo.jp\0"
-"delmenhorst.museum\0zoology.museum\0lib.gu.us\0"
-"name.et\0\xe6\x89\x8b\xe6\x9c\xba\0"
-"\xd9\x83\xd9\x88\xd9\x85\0"
-"*.platform.sh\0"
-"yachts\0"
-"svelvik.no\0"
-"pet\0"
-"naturalsciences.museum\0jolster.no\0"
-"massacarrara.it\0"
-"med.ht\0ovh\0"
-"trentinsuedtirol.it\0wazuka.kyoto.jp\0"
-"county.museum\0oxford.museum\0"
-"inf.br\0"
-"ushiku.ibaraki.jp\0accountant\0"
-"fido\0"
-"kuroishi.aomori.jp\0"
-"metlife\0"
-"rsvp\0"
-"narvik.no\0mytuleap.com\0freebox-os.com\0"
-"barefoot\0"
-"bronnoy.no\0smile\0"
-"trentino-stirol.it\0"
-"inf.cu\0"
-"bt.it\0tamaki.mie.jp\0"
-"pp.se\0pp.ru\0"
-"takarazuka.hyogo.jp\0"
-"name.cy\0"
-"misasa.tottori.jp\0phd\0"
-"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0"
-"kazuno.akita.jp\0"
-"pavia.it\0"
-"name.eg\0"
-"kawaminami.miyazaki.jp\0"
-"photography.museum\0"
-"pid\0"
-"california.museum\0"
-"kudamatsu.yamaguchi.jp\0"
-"sakurai.nara.jp\0"
-"fin.tn\0"
-"travel\0"
-"k12.mo.us\0pp.ua\0"
-"pin\0"
-"szczecin.pl\0zagan.pl\0"
-"\xe6\x8b\x9b\xe8\x81\x98\0"
-"is-lost.org\0"
-"name.az\0"
-"yazu.tottori.jp\0"
-"cc.sd.us\0"
-"catania.it\0"
-"aknoluokta.no\0"
-"med.ly\0fredrikstad.no\0"
-"um.gov.pl\0"
-"montreal.museum\0"
-"sosa.chiba.jp\0matsumoto.nagano.jp\0loan\0instantcloud.cn\0"
-"hokuto.hokkaido.jp\0odawara.kanagawa.jp\0"
-"is-a-hard-worker.com\0"
-"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0"
-"chikuhoku.nagano.jp\0mi.th\0"
-"cartoonart.museum\0"
-"nieruchomosci.pl\0"
-"hammarfeasta.no\0"
-"seiro.niigata.jp\0"
-"ohi.fukui.jp\0"
-"lib.nh.us\0"
-"expert\0"
-"ddnsfree.com\0yombo.me\0"
-"trentin-suedtirol.it\0"
-"newjersey.museum\0\xe4\xb8\xad\xe5\x9b\xbd\0"
-"nerima.tokyo.jp\0"
-"p.se\0"
-"vda.it\0aoste.it\0ic.gov.pl\0"
-"koeln.museum\0r\xc3\xa5""de.no\0"
-"muko.kyoto.jp\0govt.nz\0"
-"tcm.museum\0austrheim.no\0"
-"vaporcloud.io\0"
-"toon.ehime.jp\0moriguchi.osaka.jp\0"
-"rightathome\0"
-"torahime.shiga.jp\0gmail\0ba.leg.br\0"
-"med.om\0institute\0systems\0"
-"moroyama.saitama.jp\0prod\0"
-"mi.us\0\xe4\xb8\xad\xe5\x9c\x8b\0"
-"hinode.tokyo.jp\0prof\0"
+"kouzushima.tokyo.jp\0"
+"cc.wv.us\0azure\0is-a-nurse.com\0pr.leg.br\0"
+"gamagori.aichi.jp\0"
+"fuji.shizuoka.jp\0"
+"grozny.ru\0"
+"engerdal.no\0"
+"yame.fukuoka.jp\0med.om\0liaison\0"
+"tashkent.su\0"
+"cc.pr.us\0\xe6\x94\xbf\xe5\xba\x9c\0"
"med.pa\0"
-"yasuda.kochi.jp\0hakuba.nagano.jp\0"
-"from-dc.com\0"
-"vestre-toten.no\0"
-"shinonsen.hyogo.jp\0"
-"k12.wa.us\0"
-"med.pl\0"
-"barsy.net\0"
-"usdecorativearts.museum\0osteroy.no\0pnc\0dray-dns.de\0"
-"tsushima.aichi.jp\0yukuhashi.fukuoka.jp\0kiso.nagano.jp\0fukaya.saitama.jp\0"
-"club.tw\0k12.ga.us\0"
-"taranto.it\0"
-"calabria.it\0uchinomi.kagawa.jp\0red.sv\0"
-"kr\xc3\xa5""anghke.no\0"
-"miki.hyogo.jp\0"
-"oguchi.aichi.jp\0"
-"film\0"
-"narita.chiba.jp\0us.gov.pl\0"
-"wolterskluwer\0"
-"mil.ac\0"
-"mil.ae\0association.aero\0"
-"pruszkow.pl\0"
-"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0"
-"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0"
-"mil.al\0higashiizumo.shimane.jp\0run.app\0"
-"trondheim.no\0"
-"scjohnson\0solar\0"
-"cam.it\0"
-"mil.ba\0kviteseid.no\0"
-"mil.ar\0js.cn\0"
-"americanart.museum\0"
+"s\xc3\xb8rreisa.no\0bashkiria.ru\0"
+"shimokawa.hokkaido.jp\0"
+"archaeology.museum\0parts\0"
+"sveio.no\0cityeats\0"
+"cc.in.us\0"
+"florida.museum\0med.pl\0"
+"canada.museum\0"
+"party\0homedns.org\0dyn-vpn.de\0"
+"pp.se\0pp.ru\0"
+"shimonita.gunma.jp\0kawachinagano.osaka.jp\0"
+"y.se\0"
+"tsugaru.aomori.jp\0nesodden.no\0is-an-engineer.com\0"
+"rj.gov.br\0"
+"usgarden.museum\0cc.az.us\0click\0"
+"bashkiria.su\0"
+"agematsu.nagano.jp\0"
+"pa.it\0obama.fukui.jp\0"
+"umb.it\0railroad.museum\0"
+"nikolaev.ua\0bing\0"
+"yokoze.saitama.jp\0"
+"repl.run\0"
+"firewall-gateway.com\0"
+"lg.jp\0holmestrand.no\0bar.pro\0broke-it.net\0"
+"kasamatsu.gifu.jp\0channel\0"
+"taobao\0"
+"sch.zm\0pp.ua\0"
+"meme\0"
+"b\xc3\xb8.nordland.no\0"
+"sumoto.hyogo.jp\0lv.ua\0"
"med.sa\0"
-"loft\0"
-"med.sd\0"
-"k12.ct.us\0"
-"mil.az\0"
-"sund.no\0"
-"emiliaromagna.it\0yashiro.hyogo.jp\0kaizuka.osaka.jp\0skoczow.pl\0"
-"alta.no\0"
-"\xe5\xa5\x88\xe8\x89\xaf.jp\0"
-"mil.bo\0"
-"foz.br\0tomi.nagano.jp\0"
-"guide\0"
-"mil.br\0arezzo.it\0"
-"minowa.nagano.jp\0"
-"inf.mk\0"
-"rr.leg.br\0"
-"mosvik.no\0termez.su\0"
-"best\0"
-"mil.by\0"
-"\xd9\x85\xd8\xb5\xd8\xb1\0"
-"mil.cl\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0"
-"collection.museum\0fitjar.no\0"
-"mil.cn\0"
-"mil.co\0"
-"ra.it\0"
-"scapp.io\0"
-"auto\0lima.zone\0"
-"asso.fr\0"
-"catering\0"
-"mitsue.nara.jp\0kushimoto.wakayama.jp\0"
-"seat\0"
-"barclays\0"
-"aq.it\0ba.it\0"
-"egersund.no\0tokke.no\0"
-"\xe0\xb9\x80\xe0\xb8\x99\xe0\xb9\x87\xe0\xb8\x95.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"k12.ak.us\0"
-"mil.do\0pro\0cc.tx.us\0"
-"bss.design\0"
-"christiansburg.museum\0"
-"asso.gp\0"
-"mil.ec\0"
-"sd.us\0pru\0s3-ap-south-1.amazonaws.com\0"
-"rs.leg.br\0sc.leg.br\0"
-"mil.eg\0"
-"ena.gifu.jp\0"
-"passenger-association.aero\0racing\0"
-"shirako.chiba.jp\0"
-"miyoshi.tokushima.jp\0"
-"dance\0"
-"sakyo.kyoto.jp\0nome.pt\0"
-"\xd8\xa8\xd8\xa7\xd8\xb1\xd8\xaa\0"
-"fire\0"
-"asso.ht\0yoshida.saitama.jp\0hotmail\0servebbs.net\0"
-"wa.gov.au\0"
-"nuremberg.museum\0fam.pk\0"
-"ingatlan.hu\0"
-"aibetsu.hokkaido.jp\0"
-"kumano.mie.jp\0am.leg.br\0"
-"pub\0"
-"cooperativa.bo\0"
-"verona.it\0"
-"mil.ge\0association.museum\0"
-"niikappu.hokkaido.jp\0kawahara.tottori.jp\0"
-"bmoattachments.org\0"
-"mil.gh\0fish\0"
-"s3-eu-west-2.amazonaws.com\0"
-"asso.bj\0nagano.jp\0shinyoshitomi.fukuoka.jp\0starhub\0"
-"kagoshima.jp\0"
-"seek\0"
-"mil.gt\0"
-"vaapste.no\0"
-"yakage.okayama.jp\0name.vn\0"
-"eastafrica.museum\0averoy.no\0"
-"asso.ci\0kv.ua\0"
-"es.gov.br\0mil.hn\0"
-"freeboxos.com\0"
-"venice.it\0"
-"pwc\0"
-"mil.id\0"
-"uda.nara.jp\0"
-"cc.nj.us\0"
-"kouzushima.tokyo.jp\0"
-"web.bo\0meland.no\0"
+"langevag.no\0med.sd\0"
+"careers\0"
+"onojo.fukuoka.jp\0"
+"crown\0moscow\0"
+"alaska.museum\0"
+"anani.br\0susono.shizuoka.jp\0mysecuritycamera.net\0"
"radom.pl\0"
-"planetarium.museum\0fed.us\0"
-"mil.in\0"
-"steigen.no\0"
-"mil.iq\0"
-"yokaichiba.chiba.jp\0name.tj\0"
-"web.co\0yolasite.com\0"
-"inf.ua\0"
-"asso.dz\0name.tr\0"
-"name.tt\0faith\0"
-"mil.jo\0nativeamerican.museum\0"
-"wroc.pl\0"
-"gildeskal.no\0"
-"shichinohe.aomori.jp\0kanoya.kagoshima.jp\0privatizehealthinsurance.net\0"
-"n.bg\0"
-"kanegasaki.iwate.jp\0ogawara.miyagi.jp\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0"
-"website\0dedyn.io\0ddnss.de\0"
-"ruhr\0rn.leg.br\0"
-"mil.kg\0"
-"web.do\0hellas.museum\0fr\xc3\xb8ya.no\0"
-"nakamichi.yamanashi.jp\0"
-"dnsalias.org\0"
-"kartuzy.pl\0"
-"mil.km\0"
-"kmpsp.gov.pl\0"
-"pixolino.com\0telebit.io\0"
-"barsy.site\0"
-"matsuura.nagasaki.jp\0mil.kr\0"
-"te.it\0"
-"mil.kz\0"
-"oirm.gov.pl\0"
-"deporte.bo\0temasek\0barsy.pro\0"
-"target\0wien\0"
-"ap.leg.br\0"
-"yamagata.yamagata.jp\0"
-"moss.no\0"
-"ama.shimane.jp\0mil.lv\0ro.leg.br\0"
-"7.bg\0mil.mg\0jondal.no\0s3.dualstack.sa-east-1.amazonaws.com\0is-a-patsfan.org\0"
-"turin.it\0dazaifu.fukuoka.jp\0miyada.nagano.jp\0"
-"ternopil.ua\0"
-"miyoshi.hiroshima.jp\0"
-"tx.us\0marshalls\0"
-"higashikawa.hokkaido.jp\0"
-"eisenbahn.museum\0"
-"horse\0"
-"cloudfront.net\0"
-"culturalcenter.museum\0"
-"kawachinagano.osaka.jp\0"
-"mil.mv\0gda.pl\0"
-"mil.ng\0forde.no\0"
-"mil.my\0mil.ni\0lillehammer.no\0"
-"pn.it\0yamakita.kanagawa.jp\0nozawaonsen.nagano.jp\0mil.mz\0"
-"name.qa\0"
-"ntr.br\0tomigusuku.okinawa.jp\0name.pr\0"
-"web.gu\0mil.no\0"
-"barsy.pub\0"
-"undersea.museum\0"
-"fujisawa.iwate.jp\0"
-"\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0"
-"fi.cr\0susono.shizuoka.jp\0"
-"murata.miyagi.jp\0cloud.metacentrum.cz\0"
-"voyage\0"
-"bulsan-s\xc3\xbc""dtirol.it\0mil.nz\0"
-"name.na\0nes.buskerud.no\0"
-"shinjo.okayama.jp\0"
-"whaling.museum\0podzone.org\0fr.eu.org\0"
-"web.id\0aichi.jp\0health.nz\0"
-"sunndal.no\0lancia\0s3-website-us-west-1.amazonaws.com\0"
-"name.mv\0"
-"name.ng\0"
-"name.my\0vestby.no\0cc.de.us\0"
-"azumino.nagano.jp\0nagasaki.nagasaki.jp\0"
-"mil.pe\0"
-"ostroleka.pl\0"
-"*.landing.myjino.ru\0"
-"munakata.fukuoka.jp\0mil.ph\0"
-"revista.bo\0mining.museum\0"
-"mil.pl\0"
-"latrobe\0"
-"katsuura.chiba.jp\0"
-"engerdal.no\0lib.ny.us\0"
-"wakayama.wakayama.jp\0"
-"sandefjord.no\0mil.qa\0k12.ky.us\0"
-"\xe5\x80\x8b\xe4\xba\xba.hk\0from-mn.com\0"
-"entertainment.aero\0love\0"
-"balsan-s\xc3\xbc""dtirol.it\0ina.ibaraki.jp\0okinoshima.shimane.jp\0"
-"westfalen.museum\0stryn.no\0mil.py\0hosting\0"
-"shisui.chiba.jp\0sowa.ibaraki.jp\0"
-"tanagura.fukushima.jp\0nanbu.tottori.jp\0"
-"gov.nc.tr\0"
-"stockholm\0"
-"kitami.hokkaido.jp\0lubartow.pl\0"
-"r\xc3\xb8ros.no\0nj.us\0industries\0hobby-site.org\0"
-"ru.com\0"
-"ono.fukushima.jp\0"
-"wiki\0georgia.su\0"
-"bauern.museum\0taipei\0"
-"lupin\0"
-"gojome.akita.jp\0boehringer\0"
-"pointto.us\0"
-"\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0"
-"web.lk\0name.mk\0mil.ru\0k12.il.us\0spacekit.io\0"
-"mil.rw\0dyndns-blog.com\0"
-"mil.sh\0"
-"nordreisa.no\0"
-"hichiso.gifu.jp\0shinjuku.tokyo.jp\0"
-"bahn.museum\0ybo.science\0"
-"trentinoaltoadige.it\0"
-"minamiizu.shizuoka.jp\0"
-"properties\0us.eu.org\0"
-"mil.st\0"
-"elburg.museum\0"
-"at-band-camp.net\0"
-"name.jo\0mil.sy\0"
-"mil.tj\0"
-"vi.it\0"
-"mil.tm\0"
-"on-web.fr\0"
-"mil.to\0is-a-nurse.com\0"
-"yonaguni.okinawa.jp\0web.nf\0"
-"spjelkavik.no\0"
-"mil.tr\0"
-"web.ni\0"
-"mitoyo.kagawa.jp\0yandex\0"
-"j\xc3\xb8rpeland.no\0wine\0is-a-painter.com\0"
-"fi.it\0"
-"mil.tw\0"
-"futaba.fukushima.jp\0mil.tz\0"
-"saves-the-whales.com\0"
-"yufu.oita.jp\0"
-"mil.vc\0"
-"mil.ve\0"
-"ind.br\0"
-"barsyonline.co.uk\0"
-"mil.uy\0"
-"\xe5\x8d\x83\xe8\x91\x89.jp\0kitahiroshima.hokkaido.jp\0"
-"can.museum\0yorkshire.museum\0bjugn.no\0vm.bytemark.co.uk\0"
-"sande.more-og-romsdal.no\0"
-"akaiwa.okayama.jp\0"
-"sejny.pl\0health.vn\0contact\0"
-"te.ua\0"
-"tv.bb\0red\0"
-"web.pk\0\xd7\xa7\xd7\x95\xd7\x9d\0"
-"\xe0\xb8\xa8\xe0\xb8\xb6\xe0\xb8\x81\xe0\xb8\xa9\xe0\xb8\xb2.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"asso.re\0"
-"br.it\0cb.it\0shimoda.shizuoka.jp\0"
-"archi\0"
-"tanohata.iwate.jp\0"
-"kamishihoro.hokkaido.jp\0diet\0ren\0cnpy.gdn\0"
-"cc.vi.us\0"
-"omotego.fukushima.jp\0"
-"tv.bo\0sandcats.io\0"
-"blockbuster\0"
-"qvc\0from-tn.com\0"
-"fnd.br\0tv.br\0rackmaze.net\0"
-"mihara.hiroshima.jp\0azurewebsites.net\0"
-"stada\0hu.com\0"
-"mulhouse.museum\0school.museum\0"
-"shimada.shizuoka.jp\0"
-"pagespeedmobilizer.com\0"
-"bedzin.pl\0"
-"de.us\0"
-"manx.museum\0"
-"lease\0serveirc.com\0"
-"se.leg.br\0"
-"copenhagen.museum\0lanbib.se\0k12.ne.us\0"
-"studio\0"
-"friuliveneziagiulia.it\0ikeda.hokkaido.jp\0"
-"notaires.km\0leka.no\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0*.advisor.ws\0"
-"fukagawa.hokkaido.jp\0"
-"hanggliding.aero\0s3.dualstack.ap-south-1.amazonaws.com\0"
-"resistance.museum\0mil.za\0"
-"yamagata.jp\0kamikawa.saitama.jp\0wielun.pl\0"
-"beiarn.no\0is-into-cars.com\0"
-"film.hu\0eu.com\0"
-"for-the.biz\0"
-"mil.zm\0*.vps.myjino.ru\0"
-"morimachi.shizuoka.jp\0"
-"maserati\0"
-"nagareyama.chiba.jp\0web.tj\0"
-"asso.nc\0"
-"takehara.hiroshima.jp\0yamagata.nagano.jp\0"
-"oppdal.no\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0mil.zw\0"
-"ind.gt\0!city.yokohama.jp\0fujimino.saitama.jp\0"
-"lib.nj.us\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0xs4all.space\0"
-"gs.hm.no\0netbank\0wanggou\0de.com\0"
-"web.tr\0ril\0"
-"leasing.aero\0sexy\0"
-"hirono.iwate.jp\0debian.net\0"
-"jobs\0rio\0"
-"rip\0"
-"n.se\0"
-"ggf.br\0urayasu.chiba.jp\0"
-"barsy.org\0"
-"cc.ok.us\0is-leet.com\0dsmynas.org\0"
-"ochi.kochi.jp\0satte.saitama.jp\0"
-"m\xc3\xa5lselv.no\0is-a-teacher.com\0synology.me\0"
-"zarow.pl\0"
-"firewall-gateway.com\0"
-"okawa.kochi.jp\0"
-"web.ve\0latino\0"
-"kusatsu.gunma.jp\0saikai.nagasaki.jp\0"
-"ind.in\0"
-"corsica\0"
-"oster\xc3\xb8y.no\0"
-"pub.sa\0"
-"\xe9\x95\xb7\xe9\x87\x8e.jp\0niigata.niigata.jp\0nago.okinawa.jp\0"
-"est-a-la-maison.com\0"
-"namdalseid.no\0"
-"nishikata.tochigi.jp\0"
-"kumamoto.jp\0ustka.pl\0"
-"tuva.su\0"
-"accident-prevention.aero\0"
-"roma.it\0mombetsu.hokkaido.jp\0"
-"odda.no\0barsy.co.uk\0"
-"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa4\0"
-"oita.jp\0moonscale.net\0"
-"gotdns.org\0"
-"higashimurayama.tokyo.jp\0"
-"tv.im\0publishproxy.com\0"
-"shimogo.fukushima.jp\0sanok.pl\0"
-"!www.ck\0sport.hu\0"
-"catholic\0"
-"tv.it\0"
-"eco.br\0"
-"ind.kw\0transport.museum\0homesense\0"
-"soni.nara.jp\0"
-"hinohara.tokyo.jp\0"
-"nombre.bo\0versailles.museum\0"
-"vi.us\0web.za\0"
-"now-dns.net\0"
-"is-very-bad.org\0"
-"otoineppu.hokkaido.jp\0freesite.host\0"
-"asso.km\0gallery.museum\0rahkkeravju.no\0"
-"posts-and-telecommunications.museum\0station.museum\0community\0"
-"minamiuonuma.niigata.jp\0"
-"hirosaki.aomori.jp\0"
-"dating\0"
-"horten.no\0endoftheinternet.org\0"
-"ethnology.museum\0giske.no\0charity\0"
-"sb.ua\0k12.pa.us\0"
-"cyou\0"
-"lubin.pl\0"
-"tachiarai.fukuoka.jp\0"
-"tj\xc3\xb8me.no\0"
-"ao.it\0"
-"asso.mc\0ontario.museum\0chernovtsy.ua\0lib.ca.us\0"
-"mus.br\0"
-"hm.no\0"
-"dellogliastra.it\0yoita.niigata.jp\0kainan.tokushima.jp\0"
-"myshopblocks.com\0"
-"from-in.com\0"
-"dscloud.biz\0"
-"mo-i-rana.no\0"
-"tv.na\0"
-"author.aero\0nesoddtangen.no\0"
-"showa.fukushima.jp\0"
-"folkebibl.no\0athleta\0"
-"nagatoro.saitama.jp\0"
-"bokn.no\0"
-"moka.tochigi.jp\0nogi.tochigi.jp\0"
-"mesaverde.museum\0technology.museum\0"
-"kamisu.ibaraki.jp\0"
-"sap\0"
-"k12.md.us\0"
-"hikari.yamaguchi.jp\0\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0"
-"casadelamoneda.museum\0sas\0shopping\0"
-"jus.br\0"
-"groundhandling.aero\0"
-"wedding\0"
-"urbinopesaro.it\0podlasie.pl\0maif\0"
-"konyvelo.hu\0sbi\0adygeya.su\0"
-"morotsuka.miyazaki.jp\0"
-"naha.okinawa.jp\0"
-"aver\xc3\xb8y.no\0sca\0"
-"rokunohe.aomori.jp\0dish\0scb\0"
-"ok.us\0sbs\0"
-"\xc3\xa5mot.no\0flora.no\0"
-"sondrio.it\0takahata.yamagata.jp\0"
-"royken.no\0"
-"salangen.no\0"
-"oirase.aomori.jp\0"
-"pescara.it\0kuchinotsu.nagasaki.jp\0"
-"shiraoi.hokkaido.jp\0vision\0"
-"tottori.jp\0onojo.fukuoka.jp\0"
-"maritimo.museum\0\xc3\xb8ksnes.no\0"
-"iida.nagano.jp\0"
-"yabuki.fukushima.jp\0"
-"gub.uy\0"
-"res.in\0"
-"h\xc3\xb8nefoss.no\0"
-"cc.nh.us\0"
-"susaki.kochi.jp\0"
-"haram.no\0"
-"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0"
-"adygeya.ru\0"
-"bhz.br\0iwanai.hokkaido.jp\0"
-"mx.na\0gs.jan-mayen.no\0"
-"run\0"
-"culture.museum\0"
-"ind.tn\0"
-"ses\0"
-"bandai.fukushima.jp\0etajima.hiroshima.jp\0"
-"campinagrande.br\0tv.sd\0"
-"lib.id.us\0sew\0"
-"sex\0"
-"fhsk.se\0"
-"tranoy.no\0"
-"kakuda.miyagi.jp\0"
-"l.bg\0"
-"walbrzych.pl\0"
-"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0"
-"sfr\0"
-"rwe\0"
-"salzburg.museum\0"
-"press.aero\0railway.museum\0net-freaks.com\0"
-"yn.cn\0"
-"dynns.com\0"
-"ss.it\0hachirogata.akita.jp\0"
-"tv.tr\0redirectme.net\0"
-"shingu.wakayama.jp\0"
-"bungoono.oita.jp\0"
-"servebbs.org\0"
-"cs.it\0mediocampidano.it\0esashi.hokkaido.jp\0cloudapp.net\0"
-"s3.eu-west-2.amazonaws.com\0"
-"kahoku.yamagata.jp\0tv.tz\0"
-"fhapp.xyz\0"
-"kihoku.ehime.jp\0"
-"5.bg\0"
-"press.cy\0"
-"koga.ibaraki.jp\0hakusan.ishikawa.jp\0"
-"saskatchewan.museum\0"
-"trogstad.no\0"
-"hakone.kanagawa.jp\0"
-"xenapponazure.com\0"
-"bytom.pl\0"
-"analytics\0"
-"toyama.jp\0"
-"\xe4\xbf\xa1\xe6\x81\xaf\0"
-"kristiansund.no\0"
-"aquarelle\0mango\0is-a-photographer.com\0"
-"minamidaito.okinawa.jp\0"
-"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0chuo.yamanashi.jp\0"
-"leikanger.no\0"
-"lib.ar.us\0"
-"za.net\0"
-"ambulance.aero\0ski\0"
-"voagat.no\0"
-"namegawa.saitama.jp\0"
-"cc.dc.us\0"
-"*.quipelements.com\0"
-"flir\0"
-"nagasaki.jp\0"
-"wakkanai.hokkaido.jp\0"
-"lu.it\0me.it\0*.telebit.xyz\0"
-"lib.ok.us\0sky\0"
-"v\xc3\xa5ler.\xc3\xb8stfold.no\0"
-"himeji.hyogo.jp\0alwaysdata.net\0"
-"science.museum\0"
-"higashiura.aichi.jp\0"
-"hadano.kanagawa.jp\0"
-"me.ke\0"
-"dyndns.info\0dnsiskinky.com\0"
-"gunma.jp\0"
-"nh.us\0"
-"ikeda.fukui.jp\0"
-"googleapis.com\0"
-"farsund.no\0"
-"okoppe.hokkaido.jp\0publ.pt\0"
-"paderborn.museum\0dyndns-server.com\0"
-"*.sapporo.jp\0shibata.niigata.jp\0"
-"halloffame.museum\0"
-"farmers\0"
-"eidsberg.no\0doomdns.org\0"
-"asahi.mie.jp\0"
-"neat-url.com\0"
-"oceanographique.museum\0"
-"shinkamigoto.nagasaki.jp\0"
-"friuliv-giulia.it\0kanra.gunma.jp\0"
-"cc.me.us\0""2038.io\0"
-"lillesand.no\0es.eu.org\0"
-"url.tw\0"
-"evenassi.no\0"
-"utashinai.hokkaido.jp\0"
-"ravendb.me\0"
-"tromso.no\0lib.wy.us\0"
-"soy\0"
-"beauxarts.museum\0bounty-full.com\0"
-"uzs.gov.pl\0"
-"kvam.no\0giehtavuoatna.no\0"
-"fg.it\0familyds.net\0"
-"alaska.museum\0lib.hi.us\0s3.us-east-2.amazonaws.com\0"
-"tab\0"
-"naturhistorisches.museum\0hjartdal.no\0"
-"ora.gunma.jp\0"
-"oumu.hokkaido.jp\0"
-"paragliding.aero\0halden.no\0"
-"badajoz.museum\0"
-"cc.in.us\0"
-"modelling.aero\0mc.eu.org\0"
-"ishikawa.okinawa.jp\0"
-"www.ro\0"
-"niihama.ehime.jp\0"
-"kautokeino.no\0"
-"tax\0"
-"in.na\0"
-"shaw\0est-mon-blogueur.com\0from-ky.com\0"
-"daiwa.hiroshima.jp\0rzeszow.pl\0srl\0"
-"eidsvoll.no\0ryukyu\0"
-"taku.saga.jp\0"
-"family.museum\0bargains\0"
-"hk.cn\0notaires.fr\0bolzano-altoadige.it\0isesaki.gunma.jp\0"
-"in.ni\0"
-"kurume.fukuoka.jp\0"
-"chattanooga.museum\0lodingen.no\0"
-"przeworsk.pl\0srt\0"
-"ed.ao\0from-mi.com\0"
-"greta.fr\0amami.kagoshima.jp\0chuo.tokyo.jp\0yonago.tottori.jp\0"
-"rnu.tn\0cdn77-ssl.net\0"
-"tci\0"
-"kitaaiki.nagano.jp\0"
-"app.os.fedoraproject.org\0"
-"miyama.mie.jp\0"
-"theater.museum\0"
-"katashina.gunma.jp\0"
-"tsuno.miyazaki.jp\0fujiidera.osaka.jp\0"
-"stc\0lt.eu.org\0"
-"takasago.hyogo.jp\0"
-"ponpes.id\0ham-radio-op.net\0"
-"sells-for-u.com\0ownprovider.com\0"
-"dc.us\0duckdns.org\0"
-"mormon\0"
-"nikolaev.ua\0tdk\0"
-"usuki.oita.jp\0"
-"apartments\0"
-"ed.ci\0"
-"ce.leg.br\0"
-"oystre-slidre.no\0pl.ua\0k12.ms.us\0k12.nc.us\0softbank\0"
-"ikeda.gifu.jp\0"
-"flight.aero\0k12.ec\0\xc3\xb8rskog.no\0"
-"ed.cr\0fujimi.nagano.jp\0"
-"nagoya\0"
-"kui.hiroshima.jp\0"
-"pvt.ge\0"
-"g12.br\0tel\0"
-"khmelnitskiy.ua\0"
-"kamiizumi.saitama.jp\0"
-"s3-us-east-2.amazonaws.com\0"
-"futbol\0"
-"v\xc3\xa5gs\xc3\xb8y.no\0valer.ostfold.no\0"
-"osaka.jp\0hidaka.wakayama.jp\0mail.pl\0podhale.pl\0"
-"ddns.me\0"
-"goto.nagasaki.jp\0"
-"cincinnati.museum\0myddns.rocks\0"
-"minobu.yamanashi.jp\0"
-"am.br\0"
-"amsterdam.museum\0"
-"trentino-s-tirol.it\0"
-"4u.com\0"
-"kr.it\0"
-"graz.museum\0"
-"yoro.gifu.jp\0"
-"cruise\0teaches-yoga.com\0"
-"minakami.gunma.jp\0"
-"orkdal.no\0"
-"imperia.it\0"
-"*.awdev.ca\0"
-"in.rs\0l.se\0dubai\0"
-"aosta.it\0"
-"alstom\0is-a-cubicle-slave.com\0"
-"me.tz\0"
-"me.uk\0"
-"cc.ny.us\0"
-,
-
-"ichikawa.hyogo.jp\0"
-"\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0"
-"thd\0"
-"nf.ca\0"
-"me.us\0"
-"pup.gov.pl\0"
-"klepp.no\0bike\0mydatto.com\0"
-"trentino-a-adige.it\0"
-"sandvik\0"
-"from-ri.com\0"
-"*.kawasaki.jp\0nakama.fukuoka.jp\0in.th\0"
-"i234.me\0"
-"toyotsu.fukuoka.jp\0"
-"broadcast.museum\0"
-"shia\0"
-"kouyama.kagoshima.jp\0"
-"coldwar.museum\0in.ua\0"
-"gov.ac\0v\xc3\xa5g\xc3\xa5.no\0"
-"aga.niigata.jp\0"
-"gov.ae\0kvinesdal.no\0"
-"gov.af\0k12.il\0"
-"jprs\0eu-west-3.elasticbeanstalk.com\0"
-"sells-it.net\0"
-"hitra.no\0s3-website-ap-southeast-2.amazonaws.com\0*.otap.co\0from-wy.com\0net.eu.org\0""4lima.de\0"
-"gov.al\0"
-"landes.museum\0"
-"chijiwa.nagasaki.jp\0"
-"gov.ba\0tt.im\0beeldengeluid.museum\0"
-"gov.ar\0gov.bb\0edogawa.tokyo.jp\0"
-"gov.as\0in.us\0"
-"s3.cn-north-1.amazonaws.com.cn\0"
-"gov.au\0"
-"gov.bf\0"
-"gov.bh\0ud.it\0"
-"gov.az\0kiyosu.aichi.jp\0"
-"gov.bm\0"
-"gov.bn\0miyashiro.saitama.jp\0"
-"jerusalem.museum\0sydney\0servehalflife.com\0"
-"tjx\0yamaxun\0"
-"gov.br\0emr.it\0"
-"gov.bs\0bing\0"
-"gov.bt\0gov.cd\0fukuchiyama.kyoto.jp\0"
-"cn.com\0fi.eu.org\0"
-"press.se\0house\0"
-"gov.by\0cpa.pro\0s3.ca-central-1.amazonaws.com\0from-wi.com\0"
-"gov.bz\0florence.it\0""4lima.at\0"
-"viking.museum\0"
-"gov.cl\0forl\xc3\xac-cesena.it\0kagami.kochi.jp\0"
-"gov.cm\0isleofman.museum\0rentals\0"
-"gov.cn\0ed.jp\0"
-"gov.co\0"
-"chtr.k12.ma.us\0"
-"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0"
-"gov.cu\0"
-"gov.cx\0perso.ht\0"
-"gov.cy\0pilots.museum\0hughes\0"
-"dyndns-at-work.com\0"
-"gov.dm\0lib.sc.us\0flowers\0"
-"bielawa.pl\0""4lima.ch\0"
-"gov.do\0"
-"gov.ec\0"
-"gov.ee\0bern.museum\0sk\xc3\xa1nit.no\0"
-"kyonan.chiba.jp\0"
-"gov.eg\0"
-"h\xc3\xb8yanger.no\0"
-"gov.dz\0tamatsukuri.ibaraki.jp\0"
-"asnes.no\0molde.no\0"
-"dsmynas.net\0"
-"phone\0"
-"salvadordali.museum\0"
-"gov.et\0sakuragawa.ibaraki.jp\0fukudomi.saga.jp\0"
-"kr\xc3\xb8""dsherad.no\0"
-"pippu.hokkaido.jp\0"
-"mima.tokushima.jp\0ube.yamaguchi.jp\0"
-"firebaseapp.com\0barsy.menu\0"
-"basilicata.it\0"
-"government.aero\0"
-"gov.ge\0"
-"cq.cn\0naples.it\0toyo.kochi.jp\0"
-"oz.au\0"
-"gov.gh\0top\0"
-"express.aero\0gov.gi\0force.museum\0"
-"aostavalley.it\0gyeonggi.kr\0"
-"shop\0"
-"fujitsu\0recipes\0"
-"gov.gn\0kashiwazaki.niigata.jp\0"
-"buzen.fukuoka.jp\0"
-"gov.gr\0"
-"fresenius\0show\0"
-"gov.gu\0ny.us\0"
-"*.statics.cloud\0"
-"isteingeek.de\0"
-"caxias.br\0suzaka.nagano.jp\0"
-"gov.gy\0"
-"shirakawa.fukushima.jp\0"
-"gov.hk\0habmer.no\0"
-"otama.fukushima.jp\0koryo.nara.jp\0kumatori.osaka.jp\0"
-"\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0"
-"press.ma\0"
-"gov.ie\0lib.la.us\0"
-"kr.ua\0k12.ia.us\0"
-"eidskog.no\0"
-"\xe4\xbc\x81\xe4\xb8\x9a\0"
-"mk.eu.org\0"
-"gov.il\0kizu.kyoto.jp\0"
-"gov.in\0mito.ibaraki.jp\0kita.osaka.jp\0\xe6\x94\xbf\xe5\xba\x9c\0blogsite.xyz\0"
-"m\xc3\xa1latvuopmi.no\0beta.bounty-full.com\0"
-"kamagaya.chiba.jp\0aso.kumamoto.jp\0"
-"gov.iq\0"
-"the.br\0gov.ir\0kaneyama.fukushima.jp\0"
-"gov.is\0"
-"gov.it\0"
-"ed.pw\0"
-"kasuya.fukuoka.jp\0"
-"lugs.org.uk\0now-dns.org\0"
-"matsuyama.ehime.jp\0"
-"doshi.yamanashi.jp\0"
-"tran\xc3\xb8y.no\0ubs\0navoi.su\0"
-"trv\0"
-"gov.jo\0"
-"k12.ut.us\0"
-"feste-ip.net\0"
-"gov.kg\0"
-"vicenza.it\0uconnect\0"
-"gov.ki\0"
-"from-hi.com\0"
-"tas.edu.au\0gov.km\0aquarium.museum\0"
-"gov.kn\0"
-"j.bg\0"
-"hayashima.okayama.jp\0gov.kp\0"
-"gov.la\0"
-"gov.lb\0"
-"gov.lc\0g\xc3\xa1ls\xc3\xa1.no\0"
-"cloudns.pro\0"
-"gov.kw\0center.museum\0photo\0"
-"gov.ky\0stokke.no\0vladikavkaz.ru\0"
-"iwade.wakayama.jp\0gov.kz\0"
-"gov.lk\0"
-"ma.gov.br\0k12.tr\0"
-"volyn.ua\0rugby\0"
-"schwarz\0"
-"gov.ma\0tui\0"
-"ta.it\0yamagata.gifu.jp\0gov.lr\0"
-"gov.ls\0\xc3\xa5rdal.no\0"
-"gov.lt\0"
-"gov.me\0palace.museum\0"
-"gov.lv\0"
-"gov.mg\0orskog.no\0"
-"gov.ly\0for-our.info\0vladikavkaz.su\0"
-"gov.mk\0lu.eu.org\0me.eu.org\0servemp3.com\0"
-"hiranai.aomori.jp\0gov.ml\0"
-"plo.ps\0"
-"kisofukushima.nagano.jp\0gov.mn\0"
-"gov.mo\0us-gov-west-1.elasticbeanstalk.com\0"
-"uchihara.ibaraki.jp\0"
-"gov.mr\0"
-"3.bg\0gov.ms\0lund.no\0k12.vi\0"
-"friulivenezia-giulia.it\0"
-"gov.mu\0"
-"gov.mv\0"
-"chiropractic.museum\0gov.mw\0gov.ng\0j\xc3\xb8lster.no\0is-slick.com\0"
-"gsm.pl\0"
-"midatlantic.museum\0gov.my\0is-a-bulls-fan.com\0"
-"gov.mz\0durban\0"
-"tvs\0"
-"valled-aosta.it\0"
-"santabarbara.museum\0naustdal.no\0za.org\0"
-"mizuho.tokyo.jp\0"
-"nov.ru\0"
-"brand.se\0"
-"gov.nr\0"
-"columbia.museum\0"
-"kamoenai.hokkaido.jp\0"
-"konskowola.pl\0"
-"progressive\0"
-"hokksund.no\0lv.eu.org\0"
-"nakamura.kochi.jp\0"
-"soc.lk\0gov.om\0"
-"tondabayashi.osaka.jp\0"
-"nov.su\0*.spectrum.myjino.ru\0"
-"laz.it\0host\0"
-"b\xc3\xa1hccavuotna.no\0helsinki\0homelinux.com\0"
-"tmp.br\0siracusa.it\0vibovalentia.it\0"
-"skjervoy.no\0"
-"togura.nagano.jp\0"
-"gov.ph\0go.leg.br\0"
-"\xc3\xb8vre-eiker.no\0"
-"ullensaker.no\0gov.pk\0"
-"otake.hiroshima.jp\0gov.pl\0"
-"bolzano.it\0fukuroi.shizuoka.jp\0gov.pn\0"
-"exchange\0"
-"futtsu.chiba.jp\0"
-"gs.oslo.no\0gov.qa\0"
-"kimobetsu.hokkaido.jp\0gov.pr\0merckmsd\0"
-"gov.ps\0"
-"gov.pt\0"
-"sauda.no\0cherkasy.ua\0"
-"from-la.net\0"
-"bruxelles.museum\0gov.py\0"
-"mc.it\0iwate.iwate.jp\0ota.tokyo.jp\0"
-"og.ao\0bajddar.no\0e12.ve\0leadpages.co\0"
-"tagajo.miyagi.jp\0"
-"aoki.nagano.jp\0leczna.pl\0"
-"webhop.info\0"
-"latina.it\0virtueeldomein.nl\0"
-"tobishima.aichi.jp\0"
-"pasadena.museum\0"
-"contagem.br\0chosei.chiba.jp\0"
-"homesecuritymac.com\0diskstation.org\0"
-"naval.museum\0"
-"fujinomiya.shizuoka.jp\0tkmaxx\0"
-"holt\xc3\xa5len.no\0gov.sa\0"
-"gov.sb\0kicks-ass.net\0"
-"paris.museum\0gov.rs\0gov.sc\0"
-"trentino-suedtirol.it\0itano.tokushima.jp\0obanazawa.yamagata.jp\0gov.sd\0"
-"frankfurt.museum\0gov.ru\0"
-"\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0"
-"gov.rw\0gov.sg\0health-carereform.com\0"
-"gov.sh\0"
-"assisi.museum\0cadaques.museum\0herokuapp.com\0"
-"kamisunagawa.hokkaido.jp\0"
-"kota.aichi.jp\0gov.sl\0"
-"supplies\0"
-"noboribetsu.hokkaido.jp\0"
-"*.uberspace.de\0"
-"gov.st\0"
-"!city.sapporo.jp\0"
-"yalta.ua\0silk\0"
-"gov.sx\0"
-"gov.sy\0"
-"gov.tj\0"
-"ltda\0"
-"ichinohe.iwate.jp\0gov.tl\0"
-"oppeg\xc3\xa5rd.no\0gov.tm\0"
-"gov.tn\0"
-"gov.to\0"
-"kamo.kyoto.jp\0wodzislaw.pl\0"
-"volkenkunde.museum\0gov.ua\0"
-"honjo.akita.jp\0kamiamakusa.kumamoto.jp\0gov.tr\0"
-"gov.tt\0"
-"skanit.no\0"
-"kisarazu.chiba.jp\0ono.hyogo.jp\0"
-"gov.tw\0"
-"ve.it\0kosaka.akita.jp\0matsusaka.mie.jp\0pfizer\0"
-"swiebodzin.pl\0"
-"gov.uk\0"
-"art.museum\0vestv\xc3\xa5g\xc3\xb8y.no\0sina\0virtual-user.de\0"
-"yoga\0"
-"fe.it\0miura.kanagawa.jp\0"
-"gov.vc\0"
-"yasaka.nagano.jp\0"
-"gov.ve\0"
-"uonuma.niigata.jp\0"
-"florida.museum\0uno\0"
-"intel\0"
-"market\0"
-"gov.vn\0maison\0"
-"kristiansand.no\0blogspot.com\0"
-"misato.saitama.jp\0"
-"cc.il.us\0"
-"perso.sn\0"
-"uol\0"
-"chanel\0cn-north-1.eb.amazonaws.com.cn\0"
-"cody.museum\0"
-"czeladz.pl\0"
-"sakura\0kr.eu.org\0"
-"rn.it\0"
-"maritime.museum\0vipsinaapp.com\0"
-"harima.hyogo.jp\0"
-"staples\0"
-"boats\0"
-"hi.cn\0perso.tn\0"
-"gov.ws\0"
-"dell-ogliastra.it\0"
-"browsersafetymark.io\0"
-"bn.it\0dlugoleka.pl\0"
-"annefrank.museum\0"
-"hagi.yamaguchi.jp\0"
-"k12.az.us\0space\0loseyourip.com\0"
-"rns.tn\0"
-"mill.museum\0ups\0"
-"go.dyndns.org\0"
-"bozen-sudtirol.it\0"
-"dyndns-office.com\0"
-"hofu.yamaguchi.jp\0"
-"no-ip.ca\0"
-"togitsu.nagasaki.jp\0misato.wakayama.jp\0"
-"better-than.tv\0"
-"emp.br\0kani.gifu.jp\0"
-"oslo.no\0"
-"foggia.it\0mibu.tochigi.jp\0"
-"orsta.no\0is-gone.com\0"
-"og.it\0"
-"gov.za\0"
-"tenkawa.nara.jp\0"
-"communications.museum\0"
-"builders\0"
-"gov.zm\0"
-"juegos\0"
-"minami.kyoto.jp\0"
-"blackbaudcdn.net\0"
-"auction\0mypsx.net\0"
-"gov.zw\0"
-"monzaedellabrianza.it\0"
-"q-a.eu.org\0"
-"federation.aero\0cloudns.org\0"
-"site\0"
-"zamami.okinawa.jp\0"
-"emergency.aero\0from-md.com\0"
-"not.br\0repair\0"
-"airtraffic.aero\0"
-"satsumasendai.kagoshima.jp\0\xe0\xb4\xad\xe0\xb4\xbe\xe0\xb4\xb0\xe0\xb4\xa4\xe0\xb4\x82\0"
-"lajolla.museum\0familyds.org\0"
-"trentino-sudtirol.it\0"
-"mosj\xc3\xb8""en.no\0"
-"takatori.nara.jp\0"
-"recht.pro\0"
-"inashiki.ibaraki.jp\0"
-"durham.museum\0"
-"\xe5\xbe\xae\xe5\x8d\x9a\0"
-"vet\0"
-"co.business\0"
-"andria-barletta-trani.it\0suedtirol.it\0"
-"konin.pl\0linkyard-cloud.ch\0"
-"gs.tr.no\0"
-"labor.museum\0"
+"takko.aomori.jp\0matsukawa.nagano.jp\0"
+"dattorelay.com\0"
+"calvinklein\0"
+"aca.pro\0"
+"il.us\0"
+"oyama.tochigi.jp\0"
+"bplaced.de\0"
+"lig.it\0condos\0dynvpn.de\0"
+"tydal.no\0menu\0"
+"jx.cn\0"
+"tokai.aichi.jp\0stat.no\0"
+"toyoura.hokkaido.jp\0shinagawa.tokyo.jp\0"
+"geology.museum\0"
+"lib.ne.us\0forex\0"
+"kitakata.fukushima.jp\0labour.museum\0"
+"oregon.museum\0perso.sn\0supplies\0"
+"oppdal.no\0"
+"mielno.pl\0"
+"photos\0"
+"lazio.it\0"
+"inder\xc3\xb8y.no\0"
+"naroy.no\0"
+"nikko.tochigi.jp\0hm.no\0"
+"dellogliastra.it\0perso.tn\0"
"ayagawa.kagawa.jp\0"
-"zaporizhzhe.ua\0"
-"ovre-eiker.no\0"
-"yao.osaka.jp\0"
-"my-vigor.de\0"
-"northwesternmutual\0"
-"stalbans.museum\0"
-"hokuryu.hokkaido.jp\0football\0"
-"*.nagoya.jp\0"
-"teo.br\0"
-"presidio.museum\0b\xc3\xb8mlo.no\0kharkiv.ua\0from-mt.com\0from-nd.com\0"
-"lecco.it\0"
-"asahi.yamagata.jp\0"
-"salud.bo\0contemporaryart.museum\0aca.pro\0"
-"soja.okayama.jp\0tokigawa.saitama.jp\0prochowice.pl\0"
-"il.us\0is-a-geek.com\0"
-"tr.it\0gokase.miyazaki.jp\0"
-"dyn.ddnss.de\0"
-"ladbrokes\0"
-"uchiko.ehime.jp\0"
-"toyosato.shiga.jp\0ens.tn\0"
-"berkeley.museum\0s3.ap-south-1.amazonaws.com\0"
-"media.aero\0aaa.pro\0vig\0"
-"rimini.it\0itako.ibaraki.jp\0"
-"cc.wy.us\0"
-"gujo.gifu.jp\0"
-"fot.br\0vin\0"
-"vip\0"
-"cc.hi.us\0"
-"taishi.hyogo.jp\0"
-"neyagawa.osaka.jp\0genkai.saga.jp\0wakasa.tottori.jp\0"
-"co.ae\0"
-"development.run\0"
-"co.ag\0from-sd.com\0"
-"neustar\0"
-"birthplace.museum\0"
-"cesenaforl\xc3\xac.it\0"
-"amot.no\0skjerv\xc3\xb8y.no\0"
-"co.ao\0"
-"arakawa.saitama.jp\0"
-"co.bb\0trani-barletta-andria.it\0"
-"co.at\0"
-"suifu.ibaraki.jp\0oum.gov.pl\0"
-"co.bi\0kvafjord.no\0"
-"odate.akita.jp\0"
-"embroidery.museum\0"
-"takamatsu.kagawa.jp\0"
-"nokia\0"
-"civilaviation.aero\0co.ca\0"
-"sells-for-less.com\0"
-"creditcard\0"
-"from-ut.com\0"
-"rikubetsu.hokkaido.jp\0"
-"co.bw\0dr.na\0"
-"mt.it\0"
-"co.ci\0"
-"tr.no\0"
-"co.cl\0"
-"co.cm\0philadelphiaarea.museum\0"
-"bounceme.net\0"
-"from-vt.com\0"
-"co.cr\0playstation\0"
-"hvaler.no\0"
-"servebbs.com\0"
-"guitars\0"
-"storj.farm\0"
-"poa.br\0co.cz\0"
-"co.dk\0"
-"dallas.museum\0"
-"leirfjord.no\0cc.ak.us\0"
-"localhistory.museum\0"
-"\xeb\x8b\xb7\xec\xbb\xb4\0"
-"attorney\0"
-"awaji.hyogo.jp\0higashiomi.shiga.jp\0"
-"homelinux.net\0"
-"business\0"
-"meet\0"
-"lib.ks.us\0"
-"krasnik.pl\0"
-"isshiki.aichi.jp\0okayama.okayama.jp\0"
-"koriyama.fukushima.jp\0"
-"horology.museum\0cc.mt.us\0cc.nd.us\0ybo.trade\0"
-"valleeaoste.it\0"
-"williamsburg.museum\0"
-"\xc3\xa5mli.no\0"
-"is-a-linux-user.org\0"
-"vv.it\0kozagawa.wakayama.jp\0"
-"co.gg\0"
-"tokoname.aichi.jp\0"
-"mg.gov.br\0food\0"
-"co.gl\0"
-"wassamu.hokkaido.jp\0hakui.ishikawa.jp\0"
-"orland.no\0"
-"friuli-venezia-giulia.it\0"
-"sanfrancisco.museum\0"
-"omi.niigata.jp\0"
-"h.bg\0infiniti\0"
-"kokonoe.oita.jp\0"
-"co.gy\0meeres.museum\0merseine.nu\0"
-"ebino.miyazaki.jp\0tatar\0"
-"wy.us\0"
-"trentino-altoadige.it\0"
-"malatvuopmi.no\0"
-"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0"
-"melbourne\0"
-"co.id\0valdaosta.it\0"
-"co.hu\0hi.us\0is-a-geek.org\0"
-"xz.cn\0prudential\0"
-"yasugi.shimane.jp\0"
-"games.hu\0from-ct.com\0scrapping.cc\0"
-"so.it\0iwakura.aichi.jp\0saijo.ehime.jp\0"
-"co.il\0friulive-giulia.it\0mielec.pl\0"
-"co.im\0ikano\0msk.ru\0"
-"co.in\0"
-"co.ir\0kurotaki.nara.jp\0"
-"co.it\0ogawa.ibaraki.jp\0"
-"co.je\0"
-"foundation.museum\0clinic\0"
-"kamogawa.chiba.jp\0dr.tr\0"
-"santacruz.museum\0"
-"tsukigata.hokkaido.jp\0ford\0"
-"1.bg\0kalmykia.su\0"
-"shimofusa.chiba.jp\0"
-"bananarepublic\0msk.su\0"
-"umig.gov.pl\0"
-"co.jp\0warman\0"
-"luzern.museum\0s3-ap-northeast-1.amazonaws.com\0"
-"cuneo.it\0"
-"tananger.no\0"
-"vallee-aoste.it\0"
-"co.ke\0lindesnes.no\0cloud.goog\0"
-"milano.it\0"
-"wed\0"
-"wa.edu.au\0is-a-caterer.com\0"
-"edu.krd\0"
-"\xe5\xb2\x90\xe9\x98\x9c.jp\0co.kr\0legal\0rexroth\0"
-"co.lc\0*.stolos.io\0"
-"selfip.net\0"
-"slattum.no\0"
-"kawakami.nagano.jp\0computer\0"
-"stor-elvdal.no\0from-id.com\0"
-"meme\0"
-"co.ma\0"
-"akita.jp\0"
-"co.ls\0"
-"sakai.ibaraki.jp\0"
-"co.me\0royrvik.no\0rocks\0"
-"geek.nz\0"
-"co.mg\0school.na\0cc.co.us\0s3.amazonaws.com\0"
-"kommune.no\0"
-"kalmykia.ru\0"
-"ak.us\0"
-"aogaki.hyogo.jp\0kashima.ibaraki.jp\0"
-"shizuoka.jp\0"
-"co.na\0"
-"tako.chiba.jp\0kamikawa.hokkaido.jp\0"
-"media.museum\0lib.mo.us\0kicks-ass.org\0"
-"co.mu\0"
-"certification.aero\0co.mw\0"
-"nakanojo.gunma.jp\0"
-"suli.hu\0co.ni\0"
-"sicilia.it\0co.mz\0"
-"movistar\0co.nl\0"
-"menu\0"
-"co.no\0utwente.io\0"
-"school.nz\0"
-"vologda.su\0"
-"nu.ca\0george\0"
-"xihuan\0"
-"mt.us\0nd.us\0"
-"drangedal.no\0"
-"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0co.nz\0"
-"rauma.no\0"
-"co.om\0"
-"nakanoto.ishikawa.jp\0"
-"poivron.org\0"
-"cesenaforli.it\0discount\0"
-"loab\xc3\xa1t.no\0"
-"nakijin.okinawa.jp\0win\0"
-"skin\0"
-"co.pl\0"
-"soundandvision.museum\0"
-"co.pn\0"
-"kasukabe.saitama.jp\0"
-"vgs.no\0notodden.no\0"
-"surgeonshall.museum\0cc.ma.us\0"
-"university.museum\0co.pw\0"
-"klodzko.pl\0"
-"static-access.net\0"
-"kddi\0"
-"volda.no\0troitsk.su\0"
-"kawai.iwate.jp\0"
-"coop.ht\0vc.it\0"
-"ikata.ehime.jp\0"
-"gs.rl.no\0"
-"catanzaro.it\0ogliastra.it\0"
-"\xc3\xa5s.no\0"
-"dreamhosters.com\0"
-"fc.it\0sagamihara.kanagawa.jp\0"
-"skedsmokorset.no\0"
-"lapy.pl\0"
-"figueres.museum\0midsund.no\0tuxfamily.org\0"
-"kushiro.hokkaido.jp\0"
-"x443.pw\0"
-"yamamoto.miyagi.jp\0"
-"blog\0"
-"co.rs\0active\0"
-"co.rw\0"
-"sorfold.no\0"
-"trentino-sued-tirol.it\0"
-"wme\0"
-"shimonita.gunma.jp\0"
-"coop.br\0kadogawa.miyazaki.jp\0"
-"shari.hokkaido.jp\0"
-"avocat.pro\0"
-"massa-carrara.it\0"
-"co.st\0"
-"shop.ht\0"
-"shop.hu\0productions\0"
-"yamaguchi.jp\0es.kr\0co.th\0"
-"co.sz\0co.tj\0"
-"francaise.museum\0co.tm\0ox.rs\0"
-"bl.it\0"
-"e164.arpa\0fhv.se\0"
-"genoa.it\0"
-"co.ua\0"
-"build\0"
-"langev\xc3\xa5g.no\0loabat.no\0"
-"co.tt\0"
-"skydiving.aero\0is-a-designer.com\0"
-"psi.br\0oseto.nagasaki.jp\0"
-"co.ug\0"
-"uji.kyoto.jp\0"
-"co.tz\0"
-"co.uk\0"
-"us.na\0"
-"transporte.bo\0"
-"co.us\0"
-"ito.shizuoka.jp\0"
-"osoyro.no\0co.ve\0knightpoint.systems\0"
-"pmn.it\0arita.saga.jp\0sosnowiec.pl\0"
-"sci.eg\0"
-"nu.it\0swinoujscie.pl\0"
-"co.vi\0"
-"co.uz\0"
-"nissedal.no\0"
-"grainger\0"
-"wow\0"
-"associates\0"
-"narusawa.yamanashi.jp\0"
-"rodeo\0"
-"kiyama.saga.jp\0"
-"lib.ak.us\0"
-"medio-campidano.it\0"
-"chikushino.fukuoka.jp\0mazowsze.pl\0"
-"ogori.fukuoka.jp\0kitaura.miyazaki.jp\0"
-"luxe\0"
-"assabu.hokkaido.jp\0"
-"geelvinck.museum\0"
-"malopolska.pl\0"
-"living.museum\0"
-"farmers.museum\0coffee\0"
-"fukushima.jp\0shingo.aomori.jp\0sasaguri.fukuoka.jp\0toyotomi.hokkaido.jp\0"
-"b\xc3\xa1hcavuotna.no\0"
-"tempio-olbia.it\0"
-"rl.no\0blue\0"
-"perugia.it\0"
-"commbank\0"
-"chichibu.saitama.jp\0"
-"hattfjelldal.no\0h.se\0"
-"inami.toyama.jp\0"
-"ftpaccess.cc\0"
-"yurihonjo.akita.jp\0"
-"nb.ca\0draydns.de\0"
-"mymediapc.net\0"
-"ma.us\0co.za\0"
-"kitaakita.akita.jp\0kosuge.yamanashi.jp\0"
-"docs\0"
-"tranibarlettaandria.it\0"
-"sydney.museum\0"
-"tamamura.gunma.jp\0onion\0"
-"taketomi.okinawa.jp\0myeffect.net\0"
-"k12.wi.us\0wtc\0"
-"noda.iwate.jp\0wtf\0"
-"co.zm\0"
-"horokanai.hokkaido.jp\0"
-"ikeda.nagano.jp\0"
-"jor.br\0"
-"y.bg\0co.zw\0"
-"news.hu\0"
-"xen.prgmr.com\0"
-"otaki.saitama.jp\0"
-"ipifony.net\0"
-"minamitane.kagoshima.jp\0olecko.pl\0"
-"jpn.com\0workisboring.com\0"
-"tjome.no\0"
-"forli-cesena.it\0"
-"os.hordaland.no\0"
-"ako.hyogo.jp\0"
-"video.hu\0"
-"huissier-justice.fr\0kotohira.kagawa.jp\0"
-"tp.it\0ichikai.tochigi.jp\0"
-"gdansk.pl\0"
-"maizuru.kyoto.jp\0"
-"hsbc\0icbc\0lanxess\0singles\0elasticbeanstalk.com\0"
-"katowice.pl\0"
-"consulting.aero\0"
-"detroit.museum\0"
-"yaese.okinawa.jp\0"
-"office\0"
-"umbria.it\0"
-"toyota.aichi.jp\0gotemba.shizuoka.jp\0"
-"selfip.info\0"
-"vadso.no\0"
-"mo\xc3\xa5reke.no\0doha\0work\0"
-"ohkura.yamagata.jp\0"
-"pictures\0myphotos.cc\0"
-"eu.int\0shonai.fukuoka.jp\0sennan.osaka.jp\0"
-"philately.museum\0"
-"gallery\0"
-"misato.shimane.jp\0"
-"aerobatic.aero\0review\0"
-"yatomi.aichi.jp\0"
-"tosashimizu.kochi.jp\0"
-"gs.mr.no\0"
-"gd.cn\0"
-"polkowice.pl\0"
-"bale.museum\0"
-"zara\0"
-"mutsu.aomori.jp\0"
-"jaworzno.pl\0doctor\0xin\0"
-"chimkent.su\0sinaapp.com\0"
-"nishiarita.saga.jp\0"
-"cloudcontrolled.com\0"
-"chrome\0aktyubinsk.su\0"
-"muroto.kochi.jp\0"
-"tama.tokyo.jp\0"
-"hanyu.saitama.jp\0"
-"s3-website.us-east-2.amazonaws.com\0"
-"\xe8\x87\xba\xe7\x81\xa3\0"
-"\xe7\xbd\x91\xe5\x9d\x80\0"
-"\xe0\xb8\xad\xe0\xb8\x87\xe0\xb8\x84\xe0\xb9\x8c\xe0\xb8\x81\xe0\xb8\xa3.\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"homelinux.org\0"
-"noda.chiba.jp\0"
-"ama.aichi.jp\0ami.ibaraki.jp\0"
-"misato.akita.jp\0"
-"cci.fr\0kawanishi.nara.jp\0"
-"cechire.com\0"
-"\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0"
-"newholland\0vistaprint\0"
-"lucerne.museum\0"
-"vibo-valentia.it\0"
-"jp.eu.org\0"
-"haebaru.okinawa.jp\0suginami.tokyo.jp\0"
-"otofuke.hokkaido.jp\0kasuga.hyogo.jp\0"
-"mydatto.net\0"
-"marnardal.no\0"
+"barum.no\0"
+"nagasu.kumamoto.jp\0"
+"nakai.kanagawa.jp\0ikano\0l-o-g-i-n.de\0"
+"setouchi.okayama.jp\0"
+"tenkawa.nara.jp\0"
+"is-a-personaltrainer.com\0wedeploy.me\0"
+"uhren.museum\0"
+"hitachinaka.ibaraki.jp\0rissa.no\0"
+"nieruchomosci.pl\0"
+"gs.jan-mayen.no\0"
+"trentin-sued-tirol.it\0"
+"tsuru.yamanashi.jp\0"
+"ofunato.iwate.jp\0"
+"oto.fukuoka.jp\0"
+"b-data.io\0"
+"cleaning\0"
+"birkenes.no\0laakesvuemie.no\0"
+"war.museum\0appchizi.com\0"
+"eidsberg.no\0"
+"sevastopol.ua\0house\0"
+"tateyama.chiba.jp\0"
+"swiebodzin.pl\0"
+"shishikui.tokushima.jp\0"
+"kanagawa.jp\0palmsprings.museum\0yalta.ua\0"
+"mashiko.tochigi.jp\0"
+"cc.ky.us\0"
+"cloudns.org\0"
+"historyofscience.museum\0"
+"yanaizu.fukushima.jp\0akkeshi.hokkaido.jp\0ap-northeast-3.elasticbeanstalk.com\0"
+"hangout\0"
+"izumo.shimane.jp\0farsund.no\0"
+"per.la\0cc.ak.us\0flights\0"
+"stjordal.no\0"
+"its.me\0"
+"mitsuke.niigata.jp\0hino.tokyo.jp\0"
+"horology.museum\0pokrovsk.su\0"
+"vision\0"
+"bio.br\0pioneer\0"
+"cheap\0"
+"annaka.gunma.jp\0"
+"vall\xc3\xa9""e-aoste.it\0"
+"sandvikcoromant\0"
+"ct.it\0"
+"website\0"
+"uzs.gov.pl\0"
+"*.compute.estate\0"
+"tsurugi.ishikawa.jp\0minamimaki.nagano.jp\0"
+"square.museum\0lg.ua\0"
+"abiko.chiba.jp\0kerryhotels\0"
+"tychy.pl\0"
+"sannan.hyogo.jp\0"
+"kurate.fukuoka.jp\0"
+"spb.ru\0"
+"per.nf\0"
+"uda.nara.jp\0arts.museum\0"
+"oiso.kanagawa.jp\0"
+"pa.us\0"
+"tw.cn\0"
+"directory\0luxe\0"
+"gs.nt.no\0amsterdam\0"
+"dynalias.org\0spb.su\0"
+"dyndns.org\0from-sd.com\0"
+"*.kawasaki.jp\0"
+"ojiya.niigata.jp\0"
+"sa.gov.au\0priv.pl\0"
+"mediocampidano.it\0"
+"kawakita.ishikawa.jp\0"
+"tozsde.hu\0"
+"consultant.aero\0"
+"choyo.kumamoto.jp\0lanxess\0hu.net\0"
+"vf.no\0"
+"kokubunji.tokyo.jp\0"
+"rl.no\0"
+"halloffame.museum\0"
+"ginoza.okinawa.jp\0"
+"valle-d-aosta.it\0"
+"suisse.museum\0"
+"soc.lk\0kddi\0"
+"national.museum\0"
+"*.elb.amazonaws.com\0"
+"hirono.fukushima.jp\0""3utilities.com\0"
+"yonaguni.okinawa.jp\0"
+"priv.no\0"
+"vinnica.ua\0"
+"clubmed\0"
+"creditcard\0money\0"
+"deatnu.no\0\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0is-into-anime.com\0cloud.goog\0"
+"s3-us-west-1.amazonaws.com\0s3-website-us-west-1.amazonaws.com\0"
+"rr.gov.br\0"
+"tamamura.gunma.jp\0"
+"s3.ca-central-1.amazonaws.com\0"
+"bonn.museum\0"
+"keisen.fukuoka.jp\0"
+"est-a-la-maison.com\0"
+"bo.telemark.no\0"
+"ise.mie.jp\0"
+"accountant\0"
+"\xc3\xa5mli.no\0per.sg\0"
+"campania.it\0"
+"ski.no\0"
"blogspot.com.cy\0"
-"monster\0"
-"shimane.jp\0chikugo.fukuoka.jp\0zgora.pl\0"
-"komatsu\0"
-"trentino.it\0yakumo.shimane.jp\0"
-"tatamotors\0"
-"morioka.iwate.jp\0"
-"\xe9\xa3\x9f\xe5\x93\x81\0blogspot.com.ee\0"
-"kherson.ua\0blogspot.com.eg\0nid.io\0"
-"rendalen.no\0"
-"is-a-financialadvisor.com\0"
-"kouhoku.saga.jp\0"
-"myasustor.com\0"
+"tanohata.iwate.jp\0ashikaga.tochigi.jp\0bounceme.net\0"
+"priv.me\0"
+"mitane.akita.jp\0"
+"sejny.pl\0"
+"rs.gov.br\0sc.gov.br\0wazuka.kyoto.jp\0"
+"k12.id.us\0"
+"volvo\0"
+"turin.it\0blogspot.com.ee\0"
+"lamer\0"
+"tarumizu.kagoshima.jp\0blogspot.com.eg\0"
+"s3.dualstack.eu-west-1.amazonaws.com\0east-kazakhstan.su\0"
+"awaji.hyogo.jp\0"
+"umbria.it\0fujimi.nagano.jp\0nov.ru\0"
+"s\xc3\xb8r-fron.no\0"
+"ebino.miyazaki.jp\0orx.biz\0"
+"wedeploy.io\0"
+"school.museum\0"
+"onyourside\0s3-website-ap-southeast-1.amazonaws.com\0xenapponazure.com\0"
"blogspot.com.ar\0"
-"vt.it\0"
-"alipay\0blogspot.com.au\0"
-"is-a-geek.net\0"
-"youth.museum\0"
-"kasuga.fukuoka.jp\0arao.kumamoto.jp\0is.gov.pl\0"
-"kozow.com\0"
-"daegu.kr\0*.kunden.ortsinfo.at\0"
-"weber\0"
-"game\0"
-"umaji.kochi.jp\0"
-"mr.no\0service.gov.uk\0"
-"hamamatsu.shizuoka.jp\0blogspot.com.br\0"
-"russia.museum\0spb.ru\0"
-"coop.tt\0"
-"f.bg\0is-uberleet.com\0krasnodar.su\0"
-"liaison\0"
-"karlsoy.no\0blogspot.com.by\0"
-"sandiego.museum\0"
-"republican\0"
-"v\xc3\xa5ler.hedmark.no\0"
-"obuse.nagano.jp\0"
-"blogspot.com.co\0"
-"historicalsociety.museum\0"
-"masuda.shimane.jp\0"
-"spb.su\0"
-"oizumi.gunma.jp\0"
-"wallonie.museum\0versicherung\0"
-"coop.mv\0"
-"coop.mw\0"
-"naka.ibaraki.jp\0isahaya.nagasaki.jp\0"
-"lierne.no\0utsira.no\0"
-"onna.okinawa.jp\0es.leg.br\0"
-"bydgoszcz.pl\0\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0jaguar\0"
-"sochi.su\0"
-"biei.hokkaido.jp\0konan.shiga.jp\0shop.th\0"
-"gliwice.pl\0"
-"trentinos-tirol.it\0"
-"uozu.toyama.jp\0"
-"dp.ua\0"
-"cc.vt.us\0"
-"bomlo.no\0"
-"grondar.za\0dyn.home-webserver.de\0"
-"gangaviika.no\0"
-"okayama.jp\0"
-"townnews-staging.com\0"
-"parma.it\0"
-"agents.aero\0doesntexist.com\0blogspot.com.es\0"
-"student.aero\0engineering\0"
-"college\0cloudns.asia\0"
-"tgory.pl\0embaixada.st\0"
-"mus.mi.us\0"
-"katsuragi.wakayama.jp\0kolobrzeg.pl\0"
-"shop.ro\0"
-"tas.gov.au\0"
-"pharmacien.fr\0sakura.chiba.jp\0"
-"coop.py\0zhitomir.ua\0"
-"jefferson.museum\0mangyshlak.su\0"
-"georgia.museum\0"
-"reggiocalabria.it\0muroran.hokkaido.jp\0"
-"pomorze.pl\0lancaster\0"
-"dinosaur.museum\0fyresdal.no\0"
-"kvitsoy.no\0dyndns1.de\0"
-"tsukiyono.gunma.jp\0"
-"lo.it\0"
-"zippo\0"
-"shop.pl\0"
-"genting\0mitsubishi\0"
-"bj.cn\0"
-"frei.no\0"
-"hurum.no\0y.se\0"
-"linkyard.cloud\0"
-"antiques.museum\0"
-"kimitsu.chiba.jp\0aisho.shiga.jp\0"
-"coop.km\0dattorelay.com\0"
-"lilly\0"
-"wegrow.pl\0"
-"ns.ca\0"
-"fujieda.shizuoka.jp\0"
-"\xe4\xba\xac\xe9\x83\xbd.jp\0"
-"dielddanuorri.no\0"
-"\xe9\xa6\x99\xe5\xb7\x9d.jp\0"
-"kasaoka.okayama.jp\0"
-"gs.va.no\0alpha.bounty-full.com\0"
-"free\0"
-"hyatt\0"
-"mansions.museum\0"
-"\xe6\xb2\x96\xe7\xb8\x84.jp\0"
-"hangout\0"
-"larsson.museum\0"
+"chikuma.nagano.jp\0toshiba\0"
+"us.com\0"
+"blogspot.com.au\0"
+"ms.it\0"
+"elk.pl\0nohost.me\0"
+"sakado.saitama.jp\0"
+"forum\0"
+"shinkamigoto.nagasaki.jp\0nov.su\0"
+"guovdageaidnu.no\0"
+"ba.gov.br\0"
+"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0firmdale\0gmail\0"
+"\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0is-very-bad.org\0blogspot.com.br\0"
+"kadena.okinawa.jp\0\xe4\xb8\xad\xe5\x9b\xbd\0*.spectrum.myjino.ru\0"
+"ce.it\0rindal.no\0"
+"noda.chiba.jp\0hoteles\0"
+"kopervik.no\0myfirewall.org\0"
+"traniandriabarletta.it\0blogspot.com.by\0"
+"cymru.museum\0"
+"w.bg\0kh.ua\0blogspot.com.co\0"
+"alstahaug.no\0"
+"\xe4\xb8\xad\xe5\x9c\x8b\0gb.com\0"
+"komatsushima.tokushima.jp\0arakawa.tokyo.jp\0"
+"ms.kr\0"
+"food\0"
+"sandefjord.no\0"
+"stranda.no\0"
+"sncf\0"
+"sx.cn\0"
+"kawanabe.kagoshima.jp\0"
+"md.ci\0serveexchange.com\0"
+"s3.ap-northeast-2.amazonaws.com\0"
+"ct.us\0"
+"whaling.museum\0rana.no\0game.tw\0"
+"yotsukaido.chiba.jp\0"
+"osteroy.no\0"
+"caltanissetta.it\0"
+"schule\0xbox\0"
+"blogspot.com.es\0"
+"higashiura.aichi.jp\0casacam.net\0"
+"iamallama.com\0"
+"nagai.yamagata.jp\0"
+"kaisei.kanagawa.jp\0lib.ks.us\0stufftoread.com\0"
+"website.yandexcloud.net\0"
+"aioi.hyogo.jp\0"
+"ras.ru\0"
+"rn.gov.br\0udono.mie.jp\0"
+"\xe7\xb5\x84\xe7\xbb\x87.hk\0origins\0"
+"kuju.oita.jp\0"
+"football\0lawyer\0"
+"ford\0"
+"ikaruga.nara.jp\0nanbu.tottori.jp\0"
+"modena.it\0\xe8\x81\x94\xe9\x80\x9a\0"
+"eng.br\0"
+"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0"
+"otari.nagano.jp\0kin.okinawa.jp\0"
+"shiso.hyogo.jp\0"
+"bu.no\0cupcake.is\0"
+"hirosaki.aomori.jp\0"
+"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0"
+"computer\0"
+"\xe6\x94\xbf\xe5\xba\x9c.hk\0liguria.it\0hanamigawa.chiba.jp\0chrome\0"
+"is-an-anarchist.com\0"
+"tananger.no\0gop.pk\0"
+"fie.ee\0"
+"canon\0"
+"ro.gov.br\0"
+"diskstation.me\0"
+"aircraft.aero\0realtor\0"
+"kahoku.yamagata.jp\0"
+"ryuoh.shiga.jp\0"
+"gunma.jp\0lebork.pl\0"
+"aisai.aichi.jp\0"
+"diskstation.eu\0"
+"motorcycle.museum\0karpacz.pl\0"
+"attorney\0"
+"cc.ne.us\0"
+"am.gov.br\0"
+"international\0"
+"2ix.at\0"
+"britishcolumbia.museum\0sebastopol.ua\0cc.ga.us\0\xe7\x82\xb9\xe7\x9c\x8b\0"
+"frontdoor\0"
+"s3.dualstack.sa-east-1.amazonaws.com\0"
"osakasayama.osaka.jp\0"
-"fortworth.museum\0googlecode.com\0securitytactics.com\0"
-"kochi.jp\0"
-"nuernberg.museum\0br\xc3\xb8nn\xc3\xb8y.no\0"
-"elk.pl\0"
-"caltanissetta.it\0owani.aomori.jp\0"
-"\xe7\xbb\x84\xe7\xbb\x87.hk\0"
-"tateyama.toyama.jp\0fbx-os.fr\0"
-"hanawa.fukushima.jp\0"
-"berlevag.no\0eid.no\0"
-"audnedaln.no\0gitlab.io\0"
-"kosei.shiga.jp\0"
-"namie.fukushima.jp\0"
-"firestone\0insure\0"
-"stat.no\0"
-"va.it\0fudai.iwate.jp\0"
-"nishikawa.yamagata.jp\0xxx\0"
-"uvic.museum\0"
-"dynalias.com\0"
-"yokkaichi.mie.jp\0"
-"mutsuzawa.chiba.jp\0uwajima.ehime.jp\0"
-"kirovograd.ua\0"
+"pn.it\0"
+"yawatahama.ehime.jp\0somna.no\0"
+"lt.it\0"
+"nanyo.yamagata.jp\0nissedal.no\0"
+"dep.no\0"
+"*.platform.sh\0"
+"forlicesena.it\0donostia.museum\0s3.dualstack.ap-northeast-2.amazonaws.com\0no.com\0"
+"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0""2ix.ch\0"
+"kurashiki.okayama.jp\0"
+"rentals\0is-an-artist.com\0"
+"minamifurano.hokkaido.jp\0motorcycles\0"
+"puglia.it\0av.it\0delmenhorst.museum\0"
+"kragero.no\0"
+"venice.it\0""2ix.de\0"
+"nc.tr\0"
"selfip.org\0"
-"nittedal.no\0"
-"lucania.it\0higashiizu.shizuoka.jp\0"
-"asmatart.museum\0exhibition.museum\0"
-"vt.us\0"
-"riobranco.br\0xyz\0*.ex.ortsinfo.at\0blogspot.com.mt\0"
-"aseral.no\0"
-"warmia.pl\0"
+"h.bg\0from-dc.com\0in-the-band.net\0"
+"haram.no\0"
+"khplay.nl\0"
+"selfip.info\0karelia.su\0mysecuritycamera.org\0"
+"test-iserv.de\0"
+"pors\xc3\xa1\xc5\x8bgu.no\0"
+"takasago.hyogo.jp\0artcenter.museum\0"
+"blogspot.com.mt\0"
+"ms.us\0nc.us\0"
+"chitose.hokkaido.jp\0"
"blogspot.com.ng\0"
-"mizumaki.fukuoka.jp\0"
-"sandoy.no\0"
-"hatsukaichi.hiroshima.jp\0"
-"pokrovsk.su\0"
-"laspezia.it\0"
-"is-certified.com\0"
-"motegi.tochigi.jp\0hayakawa.yamanashi.jp\0"
-"sm.ua\0"
-"babia-gora.pl\0"
-"bo.telemark.no\0narviika.no\0"
-"he.cn\0esan.hokkaido.jp\0unzen.nagasaki.jp\0"
-"vevelstad.no\0s3-fips-us-gov-west-1.amazonaws.com\0test-iserv.de\0"
-"valleaosta.it\0"
-"ciencia.bo\0fuossko.no\0s\xc3\xb8rreisa.no\0lib.ct.us\0"
-"dyn-ip24.de\0hasura-app.io\0"
-"cc.va.us\0"
-"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0"
-"nagi.okayama.jp\0gbiz\0"
-"aid.pl\0"
-"hole.no\0"
-"nakai.kanagawa.jp\0"
-"chieti.it\0"
-"flatanger.no\0krodsherad.no\0"
-"reggio-emilia.it\0"
-"us.org\0"
+"val-d-aosta.it\0raisa.no\0"
+"tamatsukuri.ibaraki.jp\0"
+"friuli-veneziagiulia.it\0yachiyo.chiba.jp\0"
+"musica.ar\0"
+"in.net\0"
+"nuoro.it\0ms.leg.br\0"
+"kuromatsunai.hokkaido.jp\0przeworsk.pl\0"
+"smola.no\0"
+"equipment.aero\0"
+"hk.cn\0"
+"itabashi.tokyo.jp\0stalbans.museum\0nannestad.no\0"
+"musica.bo\0lib.nv.us\0"
+"schokoladen.museum\0"
+"esan.hokkaido.jp\0"
+"own.pm\0"
+"k12.ec\0realm.cz\0"
+"chino.nagano.jp\0mayfirst.org\0"
+"ichiba.tokushima.jp\0"
+"bryne.no\0lib.ct.us\0is-an-accountant.com\0"
+"iyo.ehime.jp\0sener\0"
+"george\0"
+"ap.gov.br\0"
+"nishiarita.saga.jp\0takahata.yamagata.jp\0krokstadelva.no\0barsy.shop\0"
"blogspot.com.tr\0"
-"is-a-llama.com\0"
-"enebakk.no\0scrysec.com\0"
-"*.sensiosite.cloud\0"
-"va.no\0k12.nm.us\0"
-"kurogi.fukuoka.jp\0shingu.hyogo.jp\0"
-"carrara-massa.it\0tamakawa.fukushima.jp\0"
-"s3-us-west-2.amazonaws.com\0"
-"kurobe.toyama.jp\0"
-"shizuoka.shizuoka.jp\0"
-"go-vip.co\0"
-"saintlouis.museum\0"
-"appspot.com\0"
-"cc.az.us\0"
-"hisayama.fukuoka.jp\0"
-"claims\0"
-"cog.mi.us\0"
-"sorocaba.br\0siteleaf.net\0"
-"historical.museum\0"
-"us-east-2.elasticbeanstalk.com\0"
-"torino.it\0"
-"iveland.no\0"
-"tokuyama.yamaguchi.jp\0"
-"clinton.museum\0you\0groks-this.info\0"
-"kiwa.mie.jp\0"
-"f.se\0"
-"mishima.shizuoka.jp\0"
-"lutsk.ua\0here-for-more.info\0"
-"s3.dualstack.ap-northeast-2.amazonaws.com\0barsyonline.com\0"
-"kirkenes.no\0"
-"mp.br\0"
-"mup.gov.pl\0"
-"flights\0"
-"\xe7\x82\xb9\xe7\x9c\x8b\0"
-"kunisaki.oita.jp\0"
-"sdn.gov.pl\0"
-"siellak.no\0"
-"otsu.shiga.jp\0"
-"is.eu.org\0"
-"netflix\0"
-"bahcavuotna.no\0\xe5\x81\xa5\xe5\xba\xb7\0potager.org\0"
-"kongsberg.no\0"
-"telefonica\0"
-"w.bg\0"
-"hasami.nagasaki.jp\0"
-"homebuilt.aero\0"
-"blogspot.com.uy\0"
-"school.za\0stage.nodeart.io\0"
-"bibai.hokkaido.jp\0"
-"city.hu\0lacaixa\0"
-"bofa\0"
-"izumi.kagoshima.jp\0"
-"monticello.museum\0cityeats\0"
-"essex.museum\0tjeldsund.no\0"
-"kakegawa.shizuoka.jp\0sncf\0"
-"gifts\0"
-"tn.it\0saitama.saitama.jp\0"
-"katagami.akita.jp\0"
-"it.eu.org\0"
-"monza-brianza.it\0"
-"js.org\0"
-"yamada.fukuoka.jp\0"
-"kagamiishi.fukushima.jp\0"
-"bjark\xc3\xb8y.no\0bplaced.com\0"
-"trd.br\0"
-"aland.fi\0"
-"ogi.saga.jp\0chungnam.kr\0"
-"deatnu.no\0likes-pie.com\0"
-"avellino.it\0"
-"va.us\0moscow\0barsy.mobi\0"
-"gildesk\xc3\xa5l.no\0mydrobo.com\0"
-"akkeshi.hokkaido.jp\0"
-"alvdal.no\0cc.gu.us\0"
-"is-an-artist.com\0"
-"shiroi.chiba.jp\0"
-"h\xc3\xa6gebostad.no\0firmdale\0uy.com\0webhosting.be\0"
-"americanexpress\0traeumtgerade.de\0"
-"nishitosa.kochi.jp\0sakawa.kochi.jp\0yun\0"
-"\xec\x82\xbc\xec\x84\xb1\0"
-"pisz.pl\0"
-"monzaebrianza.it\0yugawara.kanagawa.jp\0"
-"gotpantheon.com\0"
-"goldpoint\0"
-"koga.fukuoka.jp\0"
-"likescandy.com\0"
-"ag.it\0"
-"\xc3\xb8ygarden.no\0"
-"ogata.akita.jp\0gangwon.kr\0"
-"workshop.museum\0filegear-jp.me\0"
-"consulado.st\0"
-"l\xc3\xa6rdal.no\0cc.tn.us\0\xe7\xbd\x91\xe7\xab\x99\0"
-"\xe7\xb5\x84\xe7\xbb\x87.hk\0marketing\0"
-"fujiyoshida.yamanashi.jp\0"
-"repbody.aero\0sk.ca\0ralingen.no\0"
-"trust\0"
-"bulsan-sudtirol.it\0"
-"sasayama.hyogo.jp\0"
-"lib.ee\0az.us\0"
-"ofunato.iwate.jp\0shibata.miyagi.jp\0"
-"\xe5\xae\xb6\xe9\x9b\xbb\0in.eu.org\0"
-"andria-trani-barletta.it\0katsuragi.nara.jp\0"
-"freeddns.org\0"
-"belem.br\0"
-"lebesby.no\0"
-"consultant.aero\0amli.no\0"
-"\xe5\x9f\xbc\xe7\x8e\x89.jp\0"
-"ivgu.no\0viking\0"
-"sebastopol.ua\0"
-"author\0ddns.net\0"
-"ieee\0"
-"mat.br\0\xe5\xae\xae\xe5\x9f\x8e.jp\0"
-"services\0"
-"\xd0\xb1\xd0\xb5\xd0\xbb\0"
-"sayo.hyogo.jp\0shiiba.miyazaki.jp\0zip\0buyshouses.net\0"
-"wmflabs.org\0"
-"from-or.com\0"
-"moma.museum\0homeoffice.gov.uk\0"
-"children.museum\0"
-"balsan-sudtirol.it\0"
-"winners\0"
-"is-very-evil.org\0"
-"\xe9\xa4\x90\xe5\x8e\x85\0from-pr.com\0"
-"gj\xc3\xb8vik.no\0appchizi.com\0"
-"miyazaki.miyazaki.jp\0shiroishi.saga.jp\0anquan\0channel\0"
-"prd.fr\0koganei.tokyo.jp\0"
-"boleslawiec.pl\0exposed\0"
-"nishi.osaka.jp\0sagae.yamagata.jp\0bond\0"
-"iwama.ibaraki.jp\0"
-"surgery\0servep2p.com\0"
-"ayase.kanagawa.jp\0"
-"maintenance.aero\0"
-"yawata.kyoto.jp\0"
-"skjak.no\0vuelos\0"
-"vr.it\0kunohe.iwate.jp\0"
-"brussels.museum\0os.hedmark.no\0sk\xc3\xa5nland.no\0eu.meteorapp.com\0"
-"minamiise.mie.jp\0"
-"hagebostad.no\0"
-"rishiri.hokkaido.jp\0wzmiuw.gov.pl\0"
-"floripa.br\0namegata.ibaraki.jp\0xerox\0from-co.net\0"
-"fr.it\0higashikagura.hokkaido.jp\0saku.nagano.jp\0"
-"lib.il.us\0book\0"
-"saigawa.fukuoka.jp\0"
-"sirdal.no\0linde\0myjino.ru\0"
-"poker\0"
-"d.bg\0is-an-entertainer.com\0is-not-certified.com\0"
-"serveftp.net\0"
-"medecin.km\0"
-"yaotsu.gifu.jp\0"
-"vagsoy.no\0"
-"campidano-medio.it\0kamijima.ehime.jp\0"
-"gotsu.shimane.jp\0"
-"onthewifi.com\0"
-"\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0"
-"gu.us\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0"
-"trentinosud-tirol.it\0firenze.it\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0"
-"yamanashi.yamanashi.jp\0realm.cz\0"
-"cruises\0"
-"dn.ua\0bharti\0"
-"tynset.no\0"
-"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0"
-"tn.us\0"
-"prd.km\0r\xc3\xb8yken.no\0"
+"mt.leg.br\0"
+"hsbc\0icbc\0unusualperson.com\0"
+"natori.miyagi.jp\0"
+"gose.nara.jp\0"
+"bharti\0flowers\0"
+"pug.it\0pila.pl\0"
+"kyotango.kyoto.jp\0"
+"iitate.fukushima.jp\0pl.eu.org\0"
+"ap.gov.pl\0"
+"zero\0"
+"cartier\0"
+"cricket\0"
+"baidar.no\0tiffany\0"
+"konin.pl\0"
+"illustration.museum\0"
+"brandywinevalley.museum\0"
+"munakata.fukuoka.jp\0leka.no\0from-va.com\0"
+"touch.museum\0"
+"is-a-bulls-fan.com\0"
+"leangaviika.no\0"
"t3l3p0rt.net\0"
-"plants.museum\0"
-"vall\xc3\xa9""e-d-aoste.it\0nagaoka.niigata.jp\0rybnik.pl\0"
-"yasu.shiga.jp\0"
-"randaberg.no\0"
-"\xeb\x8b\xb7\xeb\x84\xb7\0"
-"ot.it\0pd.it\0\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0"
-"hitachinaka.ibaraki.jp\0"
-"b\xc3\xa1id\xc3\xa1r.no\0k12.oh.us\0"
-"alstahaug.no\0"
-"\xd5\xb0\xd5\xa1\xd5\xb5\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0"
-"yamatokoriyama.nara.jp\0dentist\0"
-"lib.az.us\0"
-"taiki.hokkaido.jp\0kitayama.wakayama.jp\0"
-"prd.mg\0bahccavuotna.no\0"
-"a.ssl.fastly.net\0"
-"ushistory.museum\0"
-"is-an-actress.com\0"
-"fedje.no\0gop.pk\0"
-"kikugawa.shizuoka.jp\0"
-"kvits\xc3\xb8y.no\0"
-"slz.br\0"
-"castres.museum\0training\0lebtimnetz.de\0"
-"shimonoseki.yamaguchi.jp\0"
-"architecture.museum\0"
-"lib.ms.us\0lib.nc.us\0"
-"dev-myqnapcloud.com\0"
-"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
+"tobe.ehime.jp\0"
+"berlev\xc3\xa5g.no\0"
+"godaddy\0blogdns.com\0"
+"miyazaki.miyazaki.jp\0"
+"krager\xc3\xb8.no\0"
+"cc.il.us\0"
+"earth\0"
+"vs.it\0playstation\0"
"w.se\0"
-"broker\0"
-"database.museum\0"
-"soka.saitama.jp\0norton\0"
-"kushima.miyazaki.jp\0"
-"\xe9\x9b\x86\xe5\x9b\xa2\0"
-"sjc.br\0"
-"emilia-romagna.it\0"
-"spy.museum\0s3-ap-northeast-2.amazonaws.com\0"
-"kasamatsu.gifu.jp\0"
-"kagoshima.kagoshima.jp\0"
-"pa.gov.br\0"
-"s3-ap-southeast-2.amazonaws.com\0"
-"xbox\0*.futurecms.at\0"
-"*.sendai.jp\0"
-"abbott\0"
-"fjaler.no\0"
-"b\xc3\xa6rum.no\0"
-"minoh.osaka.jp\0"
-"agrar.hu\0"
-"markets\0"
-"computerhistory.museum\0notteroy.no\0"
-"kaita.hiroshima.jp\0"
-"indianmarket.museum\0lib.wa.us\0"
-"naklo.pl\0"
-"taa.it\0"
-"luster.no\0"
-"pb.gov.br\0"
-"ybo.party\0"
-"sand\xc3\xb8y.no\0"
-"lib.ga.us\0"
-"vall\xc3\xa9""edaoste.it\0ichikawa.chiba.jp\0"
-"mini\0"
-"yusui.kagoshima.jp\0schokokeks.net\0"
-"automotive.museum\0"
-"kunstunddesign.museum\0barum.no\0"
-"nasushiobara.tochigi.jp\0"
-"from-ar.com\0"
-"amakusa.kumamoto.jp\0kai.yamanashi.jp\0"
-"miyake.nara.jp\0mint\0"
-"aviation.museum\0fauske.no\0"
-"zlg.br\0shiriuchi.hokkaido.jp\0"
-"askvoll.no\0"
-"tmall\0"
-"ngo.lk\0poltava.ua\0"
-"s3.ap-northeast-2.amazonaws.com\0"
-"tenei.fukushima.jp\0spiegel\0"
-"kinokawa.wakayama.jp\0"
-"gs.cn\0experts-comptables.fr\0toride.ibaraki.jp\0"
-"jewishart.museum\0ivano-frankivsk.ua\0sohu\0"
-"wuoz.gov.pl\0"
-"palmsprings.museum\0dnepropetrovsk.ua\0"
-"koeln\0"
-"mallorca.museum\0"
-"nirasaki.yamanashi.jp\0bayern\0"
-"m\xc3\xa1tta-v\xc3\xa1rjjat.no\0ck.ua\0"
-"fetsund.no\0"
-"medical.museum\0blogsite.org\0"
-"komono.mie.jp\0powiat.pl\0"
-"ath.cx\0"
-"piw.gov.pl\0"
-"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0glogow.pl\0nat.tn\0"
-"natural.bo\0mosjoen.no\0"
-"akiruno.tokyo.jp\0bplaced.net\0"
-"taito.tokyo.jp\0"
-"beskidy.pl\0"
-"film.museum\0"
-"sellsyourhome.org\0"
-"foodnetwork\0"
-"boavista.br\0saogonca.br\0yabu.hyogo.jp\0"
-"aomori.jp\0"
-"sakata.yamagata.jp\0"
-"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0"
-"sera.hiroshima.jp\0psse.gov.pl\0"
-"safety\0*.platformsh.site\0"
-"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0ngo.ph\0travelchannel\0"
-"express\0s3.dualstack.ap-southeast-1.amazonaws.com\0"
-"kv\xc3\xa6""fjord.no\0"
-"slg.br\0"
-"ventures\0"
-"sakuho.nagano.jp\0utsunomiya.tochigi.jp\0"
-"audible\0"
-"yanagawa.fukuoka.jp\0"
-"kashiwara.osaka.jp\0a.prod.fastly.net\0"
-"homedns.org\0"
-"lib.md.us\0"
-"*.ex.futurecms.at\0"
-"gaivuotna.no\0k12.in.us\0"
-"protection\0"
-"engineer.aero\0lavangen.no\0"
-"opencraft.hosting\0"
-"olayangroup\0"
-"celtic.museum\0d.se\0"
-"\xe6\x9c\xba\xe6\x9e\x84\0"
-"and.museum\0"
-"kanzaki.saga.jp\0"
-"principe.st\0"
-"politie\0song\0"
-"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0"
-"cheltenham.museum\0marker.no\0"
-"\xc3\xa5""fjord.no\0"
-"daejeon.kr\0"
-"mizusawa.iwate.jp\0"
-"sony\0"
-"gru.br\0tosa.kochi.jp\0"
-"barlettatraniandria.it\0"
-"if.ua\0"
-"u.bg\0"
-"shimamaki.hokkaido.jp\0"
-"h\xc3\xb8ylandet.no\0"
-"bible\0ferrari\0"
-"vana\0"
-"medecin.fr\0"
-"pyatigorsk.ru\0"
-"\xe9\xa6\x99\xe6\xb8\xaf\0statefarm\0today\0"
-"kutno.pl\0"
-"education.museum\0is-a-player.com\0"
-"!city.kobe.jp\0bialowieza.pl\0frontdoor\0"
-"ap-southeast-2.elasticbeanstalk.com\0"
-"firewall-gateway.net\0"
-"presse.km\0mozilla-iot.org\0"
-"airguard.museum\0hzc.io\0"
-"arteducation.museum\0research.museum\0"
-"tsushima.nagasaki.jp\0"
-"karacol.su\0"
-"ishigaki.okinawa.jp\0"
-"freight.aero\0\xc3\xb8rland.no\0"
-"dnsdojo.com\0"
-"selfip.biz\0hasura.app\0"
-"tozsde.hu\0vlaanderen.museum\0"
-"nakasatsunai.hokkaido.jp\0"
-"\xe6\x84\x9b\xe7\x9f\xa5.jp\0mihama.aichi.jp\0matsudo.chiba.jp\0tachikawa.tokyo.jp\0"
-"toyonaka.osaka.jp\0"
-"ws.na\0"
-"tomisato.chiba.jp\0takahashi.okayama.jp\0matsuzaki.shizuoka.jp\0"
-"presse.ml\0"
-"gouv.fr\0"
-"cafe\0"
-"ascolipiceno.it\0"
-"pu.it\0"
-"osaka\0"
-"demon.nl\0"
-"lotte\0pt.eu.org\0"
-"sortland.no\0"
-"nord-odal.no\0"
-"servebeer.com\0"
-"lotto\0"
-"kazo.saitama.jp\0"
-"nalchik.ru\0"
-"pi.gov.br\0vlaanderen\0"
-"dsmynas.com\0"
-"kepno.pl\0"
-"childrens.museum\0"
-"gouv.ht\0"
-"api.stdlib.com\0"
-"\xce\xb5\xce\xbb\0"
-"mn.it\0\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0"
-"pb.ao\0fylkesbibl.no\0"
-"fusa.no\0ngo.za\0nalchik.su\0"
-"dodge\0"
-"or.at\0"
-"grue.no\0"
-"kazimierz-dolny.pl\0"
-"or.bi\0"
-"se.net\0ru.net\0"
-"scientist.aero\0"
-"gouv.bj\0"
-"selje.no\0"
-"sopot.pl\0"
-"spdns.eu\0"
-"shimotsuma.ibaraki.jp\0tanabe.wakayama.jp\0intl.tn\0dev.static.land\0"
-"taka.hyogo.jp\0shimokitayama.nara.jp\0"
-"or.ci\0"
-"szex.hu\0chesapeakebay.museum\0"
-"gouv.ci\0"
-"sener\0"
-"kraanghke.no\0"
-"or.cr\0nakano.tokyo.jp\0"
-"lib.ky.us\0"
-"\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0"
-"microlight.aero\0ollo\0"
-"ota.gunma.jp\0himeshima.oita.jp\0"
-"tokashiki.okinawa.jp\0"
-"nsw.edu.au\0"
-"\xe7\x86\x8a\xe6\x9c\xac.jp\0"
-"botanical.museum\0"
-"house.museum\0"
-"cc.mn.us\0"
-"ogaki.gifu.jp\0"
-"gran.no\0"
-"shinichi.hiroshima.jp\0nadex\0"
-"ibigawa.gifu.jp\0"
-"koto.tokyo.jp\0"
-"steam.museum\0"
-"arakawa.tokyo.jp\0"
-"medicina.bo\0"
-"turek.pl\0call\0"
-"apps.fbsbx.com\0"
-"*.dapps.earth\0"
-"utazu.kagawa.jp\0"
-"assassination.museum\0zero\0"
-"\xe7\xbd\x91\xe7\xb5\xa1.hk\0"
-"himi.toyama.jp\0"
-"k12.fl.us\0"
-"sar.it\0ichihara.chiba.jp\0unazuki.toyama.jp\0"
-"furniture\0"
-"id.au\0b.bg\0"
-"nissan\0"
-"bjarkoy.no\0azurecontainer.io\0"
-"camp\0"
-"mykolaiv.ua\0"
-"online.museum\0is-a-hunter.com\0"
-"b.br\0"
-"far.br\0"
-"nissay\0"
-"wpcomstaging.com\0"
-"starachowice.pl\0"
"si.it\0"
-"erotika.hu\0garden.museum\0"
-"nikon\0"
-"cultural.museum\0issmarterthanyou.com\0"
-"egyptian.museum\0\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0"
-"misato.miyagi.jp\0weatherchannel\0"
-"br\xc3\xb8nn\xc3\xb8ysund.no\0"
-"ci.it\0karpacz.pl\0"
-"dynvpn.de\0"
-"togo.aichi.jp\0"
-"trader.aero\0k12.as.us\0"
-"sannohe.aomori.jp\0mizunami.gifu.jp\0hu.net\0"
-"cambridge.museum\0lewismiller.museum\0svn-repos.de\0"
-"pe.gov.br\0nosegawa.nara.jp\0cieszyn.pl\0hicam.net\0"
-"spdns.de\0"
-"or.id\0"
-"otsuchi.iwate.jp\0"
-"jessheim.no\0"
-"chernivtsi.ua\0kyoto\0from-nm.com\0"
-"macerata.it\0"
-"kr.com\0"
-"takanezawa.tochigi.jp\0"
-"london.museum\0bod\xc3\xb8.no\0is-a-conservative.com\0"
-"or.it\0"
-"desa.id\0mar.it\0"
-"k12.nv.us\0nis.za\0"
-"zappos\0"
-"aurskog-holand.no\0skiptvet.no\0my-gateway.de\0"
-"or.jp\0shiogama.miyagi.jp\0bungotakada.oita.jp\0"
-"clock.museum\0strand.no\0"
-"higashiyamato.tokyo.jp\0oguni.yamagata.jp\0"
-"andasuolo.no\0"
-"musica.ar\0shimamoto.osaka.jp\0"
-"or.ke\0"
-"mikawa.yamagata.jp\0"
-"sumy.ua\0care\0selfip.com\0"
-"gon.pk\0dst.mi.us\0"
-"sokndal.no\0s3-website-us-east-1.amazonaws.com\0"
-"from-az.net\0"
-"ikeda.osaka.jp\0"
-"musica.bo\0"
-"takaoka.toyama.jp\0or.kr\0fund\0"
-"casa\0"
-"cars\0"
-"nishiaizu.fukushima.jp\0kusu.oita.jp\0minato.osaka.jp\0bieszczady.pl\0spot\0"
-"case\0gr.com\0"
-"nayoro.hokkaido.jp\0"
-"lib.ne.us\0"
-"cash\0"
-"owariasahi.aichi.jp\0"
-"utazas.hu\0"
-"decorativearts.museum\0sigdal.no\0"
-"mattel\0"
-"u.se\0gb.com\0"
-"shiraoka.saitama.jp\0gent\0"
-"bauhaus\0"
-"artcenter.museum\0cc.or.us\0serveftp.org\0shacknet.nu\0"
-"jdf.br\0"
-"collegefan.org\0"
-"isen.kagoshima.jp\0"
-"b\xc3\xb8.telemark.no\0"
-"tsuruta.aomori.jp\0"
-"mn.us\0"
-"higashiyoshino.nara.jp\0"
-"or.na\0"
-"tochigi.jp\0osakikamijima.hiroshima.jp\0kitagata.saga.jp\0"
-"or.mu\0"
-"enonic.io\0"
-"texas.museum\0leclerc\0"
-"id.ir\0habikino.osaka.jp\0"
-"qa2.com\0"
-"pa.gov.pl\0"
-"air-surveillance.aero\0axis.museum\0marine.ru\0"
-"ricoh\0"
-"ballangen.no\0"
-"odessa.ua\0careers\0"
-"palermo.it\0"
-"kitahata.saga.jp\0"
-"br.com\0"
-"\xe9\x95\xb7\xe5\xb4\x8e.jp\0"
-"campania.it\0hirogawa.wakayama.jp\0"
-"macapa.br\0yura.wakayama.jp\0"
-"my-wan.de\0"
-"k\xc3\xa5""fjord.no\0ar.com\0"
-"aisai.aichi.jp\0sanda.hyogo.jp\0"
-"trentin-s\xc3\xbc""dtirol.it\0"
-"estate.museum\0ringerike.no\0"
-"dyndns-at-home.com\0is-a-libertarian.com\0"
-"jx.cn\0"
-"newyork.museum\0"
-"yuzawa.niigata.jp\0"
-"hitachiomiya.ibaraki.jp\0test.tj\0"
-"k12.co.us\0linkitools.space\0"
-"or.pw\0"
-"fukui.jp\0mitaka.tokyo.jp\0"
-"\xe0\xac\xad\xe0\xac\xbe\xe0\xac\xb0\xe0\xac\xa4\0"
-"is-a-blogger.com\0"
-"kijo.miyazaki.jp\0id.lv\0"
-"cc.id.us\0"
-"id.ly\0"
-"altoadige.it\0"
-"hirara.okinawa.jp\0"
-"hapmir.no\0"
-"obira.hokkaido.jp\0kochi.kochi.jp\0higashiyodogawa.osaka.jp\0"
-"damnserver.com\0"
-"yame.fukuoka.jp\0ina.saitama.jp\0lowicz.pl\0"
-"war.museum\0"
-"omigawa.chiba.jp\0datsun\0"
-"modalen.no\0k12.pr.us\0tattoo\0karelia.su\0"
-"grajewo.pl\0"
-"sanofi\0"
-"ha.cn\0"
-"academy\0filegear-gb.me\0"
-"pr.gov.br\0tsukumi.oita.jp\0"
-"stjordalshalsen.no\0komforb.se\0"
-"av.it\0sunagawa.hokkaido.jp\0iijima.nagano.jp\0"
-"ishinomaki.miyagi.jp\0"
-"stord.no\0"
-"sakai.osaka.jp\0"
-"gouv.rw\0"
-"psc.br\0"
-"test.ru\0"
-"kakogawa.hyogo.jp\0"
-"budejju.no\0"
-"kariwa.niigata.jp\0iide.yamagata.jp\0"
-"gouv.sn\0"
-"kameoka.kyoto.jp\0"
-"uchinada.ishikawa.jp\0or.th\0observer\0"
-"tj.cn\0handa.aichi.jp\0kaga.ishikawa.jp\0"
-"snillfjord.no\0"
-"idf.il\0tuscany.it\0"
-"azure\0"
-"no.it\0"
-"ac.ae\0lib.pa.us\0"
-"presse.ci\0k12.ma.us\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0"
-"kasama.ibaraki.jp\0"
-"tec.mi.us\0"
-"karuizawa.nagano.jp\0"
-"photography\0"
-"reisen\0\xe5\x95\x86\xe5\x9f\x8e\0"
-"or.ug\0"
-"hamatonbetsu.hokkaido.jp\0tomari.hokkaido.jp\0kita.tokyo.jp\0select\0"
-"or.tz\0"
-"mayfirst.info\0"
-"ac.at\0"
-"ac.be\0"
-"rovigo.it\0ise.mie.jp\0"
-"qc.ca\0"
-"or.us\0"
-"laquila.it\0gamagori.aichi.jp\0foundation\0"
-"taira.toyama.jp\0"
-"valle-daosta.it\0"
-"barclaycard\0"
-"cloudcontrolapp.com\0"
-"hasvik.no\0"
-"takaharu.miyazaki.jp\0"
-"cisco\0"
-"hatoyama.saitama.jp\0credit\0"
-"ac.ci\0malselv.no\0"
-"ullensvang.no\0"
-"ac.cn\0gallup\0"
-"\xe9\x9d\x92\xe6\xa3\xae.jp\0minami-alps.yamanashi.jp\0"
-"g\xc3\xa1ivuotna.no\0b.se\0"
-"ac.cr\0"
-"baths.museum\0balat.no\0"
-"liguria.it\0kanan.osaka.jp\0"
-"ac.cy\0forum.hu\0"
-"is-a-knight.org\0"
-"pol.dz\0kitakata.fukushima.jp\0iizuna.nagano.jp\0"
-"presse.fr\0"
-"tsugaru.aomori.jp\0"
-"talk\0"
-"sandnes.no\0"
-"graphics\0"
-"carraramassa.it\0"
-"lipsy\0"
-"iiyama.nagano.jp\0nyuzen.toyama.jp\0"
-"network\0"
-"s.bg\0chocolate.museum\0labour.museum\0marburg.museum\0kongsvinger.no\0"
-"bnpparibas\0"
-"kashiba.nara.jp\0parliament.nz\0chrysler\0poznan.pl\0"
-"kiwi\0"
-"gdynia.pl\0"
-"barueri.br\0"
-"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0"
-"kamaishi.iwate.jp\0"
-"id.us\0lasalle\0"
-"warszawa.pl\0"
-"sciencecenter.museum\0yodobashi\0myiphost.com\0"
-"is-a-republican.com\0"
-"chikujo.fukuoka.jp\0usa.oita.jp\0"
-"lib.ut.us\0"
-"gorizia.it\0ozu.kumamoto.jp\0"
-"franziskaner.museum\0mein-vigor.de\0"
-"cbre\0"
-"ac.gn\0friuli-v-giulia.it\0kuki.saitama.jp\0"
-"bentley\0"
-"cz.it\0"
-"gouv.km\0froland.no\0"
-"pol.ht\0worse-than.tv\0"
-"s3-website-eu-west-1.amazonaws.com\0"
-"salerno.it\0"
-"mino.gifu.jp\0\xe8\x81\x94\xe9\x80\x9a\0"
-"atami.shizuoka.jp\0"
-"building.museum\0flanders.museum\0""12hp.de\0"
-"ac.id\0kira.aichi.jp\0flt.cloud.muni.cz\0"
-"suldal.no\0"
-"british.museum\0reg.dk\0"
-"\xe6\x97\xb6\xe5\xb0\x9a\0"
-"journal.aero\0"
-"ac.il\0poniatowa.pl\0"
-"ac.im\0vang.no\0"
-"ac.in\0"
-"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0"
-"ac.ir\0kagawa.jp\0\xe6\x84\x9b\xe5\xaa\x9b.jp\0"
-"coal.museum\0davvesiida.no\0knowsitall.info\0"
-"\xe7\xbe\xa4\xe9\xa6\xac.jp\0asahi.chiba.jp\0bato.tochigi.jp\0"
-"gouv.ml\0"
-"ha.no\0"
+"se.gov.br\0k12.il\0"
+"nakagawa.hokkaido.jp\0edeka\0ac.leg.br\0"
+"ono.fukui.jp\0"
+"kiyosato.hokkaido.jp\0shika.ishikawa.jp\0atsugi.kanagawa.jp\0"
+"mikasa.hokkaido.jp\0"
+"tako.chiba.jp\0"
+"appspot.com\0"
+"le.it\0seika.kyoto.jp\0"
+"barcelona.museum\0"
+"space-to-rent.com\0"
+"verdal.no\0"
+"inazawa.aichi.jp\0"
+"heguri.nara.jp\0epson\0"
+"microlight.aero\0ag.it\0"
+"blogspot.com.uy\0"
+"\xe7\xbd\x91\xe7\xbb\x9c\0"
+"katano.osaka.jp\0mosj\xc3\xb8""en.no\0lt.ua\0"
+"e12.ve\0"
+"\xe7\xbd\x91\xe7\xbb\x9c.cn\0"
+"yn.cn\0"
+"not.br\0"
"av.tr\0"
-"n\xc3\xa5\xc3\xa5mesjevuemie.no\0"
-"mashike.hokkaido.jp\0"
-"fuoisku.no\0"
-"ac.jp\0isa.kagoshima.jp\0"
-"portland.museum\0doesntexist.org\0"
-"12hp.at\0"
-"ac.ke\0"
-"mol.it\0saroma.hokkaido.jp\0ohda.shimane.jp\0"
-"\xe6\xa0\x83\xe6\x9c\xa8.jp\0"
-"schweiz.museum\0duck\0"
-"leg.br\0kuromatsunai.hokkaido.jp\0"
-"ryugasaki.ibaraki.jp\0"
-"ainan.ehime.jp\0wakasa.fukui.jp\0"
-"sumoto.kumamoto.jp\0"
-"murayama.yamagata.jp\0ac.kr\0"
-"portlligat.museum\0"
-"12hp.ch\0"
-"aircraft.aero\0navigation.aero\0"
-"ac.lk\0"
-"finance\0"
-"usr.cloud.muni.cz\0"
-"betainabox.com\0"
-"ac.ma\0"
-"trentino-alto-adige.it\0nonoichi.ishikawa.jp\0"
-"ac.ls\0"
-"ac.me\0mywire.org\0"
-"yuki.ibaraki.jp\0nantan.kyoto.jp\0"
-"stjohn.museum\0bplaced.de\0"
-"hanamaki.iwate.jp\0"
-"pittsburgh.museum\0"
-"educator.aero\0"
-"muenster.museum\0taifun-dns.de\0"
-"blanco\0"
-"ac.mu\0kh.ua\0"
-"ac.mw\0"
-"ascoli-piceno.it\0"
-"uslivinghistory.museum\0ac.ni\0"
-"trentin-sud-tirol.it\0ac.mz\0"
-"svalbard.no\0"
-"giize.com\0customer.speedpartner.de\0dyn-vpn.de\0"
-"inuyama.aichi.jp\0po.gov.pl\0"
-"mortgage\0toshiba\0"
-"cagliari.it\0sharp\0\xe7\xbd\x91\xe7\xbb\x9c\0"
-"ggee\0"
-"pug.it\0ac.nz\0"
-"ac.pa\0"
-"shibukawa.gunma.jp\0"
-"sorum.no\0"
-"fukuchi.fukuoka.jp\0"
-"sarpsborg.no\0"
-"vestnes.no\0chase\0"
-"tarumizu.kagoshima.jp\0shimane.shimane.jp\0"
-"farm.museum\0ilovecollege.info\0"
-"hitachi\0"
-"education\0"
-"taxi\0"
-"date.fukushima.jp\0ac.pr\0"
-"barrell-of-knowledge.info\0"
-"dealer\0"
-"fishing\0"
-"trentin-sued-tirol.it\0nanae.hokkaido.jp\0akashi.hyogo.jp\0sumida.tokyo.jp\0"
-"selbu.no\0"
-"rost.no\0"
-"tomika.gifu.jp\0"
-"ookuwa.nagano.jp\0hachijo.tokyo.jp\0"
-"silk.museum\0"
-"mjondalen.no\0k12.ri.us\0uk.com\0"
-"hidaka.hokkaido.jp\0"
-"austevoll.no\0"
-"iyo.ehime.jp\0"
-"plurinacional.bo\0"
-"kanagawa.jp\0"
-"is-a-cpa.com\0"
-"aerodrome.aero\0"
-"operaunite.com\0"
-"zuerich\0"
-"hol.no\0ac.rs\0"
-"nord-fron.no\0ac.ru\0ac.se\0lighting\0eu.org\0"
-"kujukuri.chiba.jp\0tara.saga.jp\0"
-"ac.rw\0"
-"yugawa.fukushima.jp\0dyndns.biz\0"
-"sauherad.no\0accountants\0"
-"eniwa.hokkaido.jp\0"
-"gol.no\0bridgestone\0dyndns-pics.com\0point2this.com\0"
-"takahama.fukui.jp\0"
-"skierv\xc3\xa1.no\0\xd2\x9b\xd0\xb0\xd0\xb7\0"
-"iitate.fukushima.jp\0otoyo.kochi.jp\0"
-"tatsuno.nagano.jp\0ibaraki.osaka.jp\0"
-"clinique\0"
-"pol.tr\0kosher\0"
-"ac.th\0"
-"mazury.pl\0slask.pl\0ac.sz\0ac.tj\0"
-"rhcloud.com\0"
-"natura\0"
-"okaya.nagano.jp\0b.ssl.fastly.net\0"
-"lunner.no\0aetna\0s3-website.eu-central-1.amazonaws.com\0"
-"fuchu.toyama.jp\0salon\0ma.leg.br\0"
-"divttasvuotna.no\0"
-"campobasso.it\0inagi.tokyo.jp\0"
-"ac.ug\0"
-"bristol.museum\0"
-"ac.tz\0"
-"ac.uk\0"
-"matsue.shimane.jp\0"
-"abiko.chiba.jp\0qpon\0"
-"aarp\0"
-"mobile\0"
-"oji.nara.jp\0"
-"ae.org\0"
-"li.it\0"
-"glass.museum\0"
-"serveminecraft.net\0"
-"amber.museum\0"
-"hirado.nagasaki.jp\0\xe5\x8f\xb0\xe6\xb9\xbe\0in.net\0"
-"ac.vn\0"
-"fussa.tokyo.jp\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0"
-"ltd.cy\0money.museum\0s.se\0duns\0"
-"minamifurano.hokkaido.jp\0"
-"glas.museum\0"
-"mihama.mie.jp\0"
-"degree\0mobily\0\xe5\x9c\xa8\xe7\xba\xbf\0logoip.de\0"
-"e4.cz\0"
-"fashion\0"
-"realty\0"
-"from-nh.com\0"
-"recife.br\0nm.cn\0"
-"rio.br\0ueno.gunma.jp\0"
-"citic\0from-oh.com\0"
-"blogspot.vn\0"
-"ca-central-1.elasticbeanstalk.com\0"
-"viterbo.it\0shingu.fukuoka.jp\0"
-"chuo.chiba.jp\0urakawa.hokkaido.jp\0"
-"dvag\0"
-"fst.br\0tsunan.niigata.jp\0"
-"stockholm.museum\0"
-"kobayashi.miyazaki.jp\0\xe5\xa8\xb1\xe4\xb9\x90\0"
-"cc.ky.us\0"
-"bizen.okayama.jp\0"
-"koshimizu.hokkaido.jp\0shinjo.nara.jp\0"
-"trading\0from-tx.com\0"
-"ltd.gi\0ac.za\0al.eu.org\0"
-"gamo.shiga.jp\0"
-"rovno.ua\0hk.com\0"
-"yatsushiro.kumamoto.jp\0"
-"vn.ua\0richardli\0"
-"taishi.osaka.jp\0kaufen\0"
-"bearalv\xc3\xa1hki.no\0ac.zm\0"
-"chirurgiens-dentistes.fr\0rebun.hokkaido.jp\0"
-"state.museum\0"
-"equipment.aero\0"
-"k12.de.us\0ltd.hk\0"
-"setagaya.tokyo.jp\0"
-"ac.zw\0"
-"pvh.br\0firm.ht\0bbs.tr\0\xe5\x85\xab\xe5\x8d\xa6\0"
-"grandrapids.museum\0enterprises\0"
-"a\xc3\xa9roport.ci\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0nodum.co\0"
-"bolt.hu\0technology\0"
-"firm.in\0hiroo.hokkaido.jp\0kadoma.osaka.jp\0"
-"isernia.it\0"
-"act.au\0"
-"agrigento.it\0"
-"drammen.no\0troandin.no\0pl.eu.org\0blogspot.re\0"
-"shioya.tochigi.jp\0mitou.yamaguchi.jp\0"
-"badaddja.no\0"
-"nogata.fukuoka.jp\0tonosho.kagawa.jp\0minamioguni.kumamoto.jp\0opoczno.pl\0"
-"go.ci\0"
-"shitara.aichi.jp\0"
-"beats\0meteorapp.com\0"
-"kumano.hiroshima.jp\0"
-"leksvik.no\0blogspot.ro\0"
-"maniwa.okayama.jp\0health\0"
-"londrina.br\0go.cr\0at.it\0yoichi.hokkaido.jp\0"
-"oygarden.no\0blogspot.rs\0"
-"zgorzelec.pl\0"
-"airbus\0blogspot.ru\0blogspot.se\0"
-"blogspot.sg\0"
-"andriabarlettatrani.it\0"
-"stj\xc3\xb8rdal.no\0blogspot.si\0"
-"blogspot.sk\0"
-"alto-adige.it\0"
-"filegear-sg.me\0nodum.io\0"
-"blogspot.sn\0"
-"firm.co\0"
-"kerryproperties\0dd-dns.de\0"
-"fuchu.hiroshima.jp\0blogspot.td\0"
-"temp-dns.com\0"
-"sx.cn\0tokai.aichi.jp\0"
-"ninja\0"
-"marylhurst.museum\0science-fiction.museum\0"
-"tozawa.yamagata.jp\0oshino.yamanashi.jp\0"
-"casino.hu\0firm.dk\0"
-"ac.gov.br\0mw.gov.pl\0"
-"ltd.lk\0hyundai\0"
-"kosai.shizuoka.jp\0kainan.wakayama.jp\0"
-"shintomi.miyazaki.jp\0raid\0"
-"lorenskog.no\0able\0cust.dev.thingdust.io\0"
-"hanno.saitama.jp\0"
-"rennebu.no\0blogspot.tw\0blogspot.ug\0"
-"nakayama.yamagata.jp\0"
-"nishio.aichi.jp\0"
-"origins\0dyn.cosidns.de\0abkhazia.su\0tula.su\0"
-"dattolocal.net\0"
-"baseball.museum\0vantaa.museum\0os\xc3\xb8yro.no\0"
-"\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0blogspot.mr\0"
-"quicksytes.com\0"
-"sex.hu\0agriculture.museum\0"
-"muni.il\0kikuchi.kumamoto.jp\0\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0"
-"blogspot.mx\0"
-"blogspot.my\0"
-"bci.dnstrace.pro\0"
-"blogspot.nl\0"
-"qld.edu.au\0"
-"ikusaka.nagano.jp\0"
-"blogspot.no\0"
-"\xc3\xb8yer.no\0"
-"ms.gov.br\0otobe.hokkaido.jp\0"
-"sakaki.nagano.jp\0"
-"knx-server.net\0"
-"cc.nm.us\0"
-"moriya.ibaraki.jp\0"
-"miyawaka.fukuoka.jp\0"
-"sciencehistory.museum\0circle\0"
-"go.id\0"
-"burghof.museum\0donetsk.ua\0ky.us\0blogspot.pe\0"
-"bio.br\0"
-"izunokuni.shizuoka.jp\0"
-"frogans\0spdns.org\0"
-"york.museum\0k12.va.us\0ap-northeast-3.elasticbeanstalk.com\0"
-"takanabe.miyazaki.jp\0\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0"
-"isehara.kanagawa.jp\0auspost\0"
-"blogspot.qa\0"
-"scienceandhistory.museum\0"
-"trentinsued-tirol.it\0go.it\0blogspot.pt\0"
-"parliament.cy\0lib.ia.us\0"
-"mt.gov.br\0"
-"etne.no\0"
-"trentinos\xc3\xbc""d-tirol.it\0trentinsudtirol.it\0olbiatempio.it\0fukumitsu.toyama.jp\0juniper\0"
-"q.bg\0naturalhistory.museum\0s3-website-us-west-2.amazonaws.com\0"
-"sologne.museum\0"
-"santoandre.br\0"
-"go.jp\0kawaba.gunma.jp\0"
-"flor\xc3\xb8.no\0l-o-g-i-n.de\0"
-"ohtawara.tochigi.jp\0"
-"weibo\0blogspot.is\0"
-"lecce.it\0memorial\0blogspot.it\0"
-"go.ke\0"
-"tabayama.yamanashi.jp\0"
-"accident-investigation.aero\0"
-"kadena.okinawa.jp\0"
-"frosta.no\0"
-"toyokawa.aichi.jp\0banamex\0"
-"sibenik.museum\0"
-"blogspot.jp\0"
-"go.kr\0chirurgiens-dentistes-en-france.fr\0"
-"hamar.no\0"
-"environment.museum\0"
-"higashikagawa.kagawa.jp\0matsukawa.nagano.jp\0\xe5\x85\xac\xe5\x8f\xb8\0"
-"gs.aa.no\0"
-"honai.ehime.jp\0"
-"skole.museum\0utah.museum\0"
-"blogspot.kr\0"
-"trolley.museum\0bd.se\0from-me.org\0"
-"carrier.museum\0salat.no\0brussels\0cipriani\0"
-"grimstad.no\0krager\xc3\xb8.no\0"
-"lea\xc5\x8bgaviika.no\0blogspot.li\0"
-"is-by.us\0"
-"shiso.hyogo.jp\0"
-"arq.br\0"
-"\xed\x95\x9c\xea\xb5\xad\0"
-"blogspot.lt\0blogspot.md\0"
-"roan.no\0blogspot.lu\0"
-"dni.us\0ltd.ua\0"
-"championship.aero\0"
-"kobierzyce.pl\0"
-"schlesisches.museum\0blogspot.mk\0"
-"sex.pl\0"
-"archaeology.museum\0"
-"tonaki.okinawa.jp\0est.pr\0"
-"gotdns.com\0"
-"ltd.uk\0healthcare\0"
-"webhop.biz\0"
-"firm.ve\0"
-"itayanagi.aomori.jp\0suita.osaka.jp\0"
-"blogspot.fi\0"
-"narashino.chiba.jp\0"
-"\xe7\xbd\x91\xe5\xba\x97\0"
-"tsukui.kanagawa.jp\0shimosuwa.nagano.jp\0"
-"troms\xc3\xb8.no\0"
-"otaki.nagano.jp\0"
-"\xe5\xb9\xbf\xe4\xb8\x9c\0"
-"jfk.museum\0kl\xc3\xa6""bu.no\0ferrero\0"
-"berlin\0blogspot.fr\0"
-"oracle\0"
-"sukagawa.fukushima.jp\0\xe5\x98\x89\xe9\x87\x8c\0"
-"works\0"
-"world\0"
-"tcp4.me\0"
-"kumiyama.kyoto.jp\0open\0"
-"is-saved.org\0"
-"channelsdvr.net\0"
-"friuli-vegiulia.it\0"
-"taobao\0co.events\0"
-"\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0"
-"blogspot.gr\0"
-"praxi\0barsy.online\0resindevice.io\0"
-"tadaoka.osaka.jp\0"
-"go.pw\0is-a-anarchist.com\0"
-"trentinostirol.it\0star\0"
-"on.ca\0"
-"cloudeity.net\0"
-"nm.us\0blogspot.hk\0"
-"leirvik.no\0"
-"ong.br\0blogspot.hr\0"
-"lahppi.no\0"
-"*.compute.estate\0blogspot.hu\0blogspot.ie\0"
-"edu.ac\0\xc3\xa5lesund.no\0blackfriday\0"
-"is.it\0zentsuji.kagawa.jp\0"
-"paroch.k12.ma.us\0"
-"edu.af\0"
-"blogspot.in\0"
-"rennes\xc3\xb8y.no\0"
-"ozora.hokkaido.jp\0busan.kr\0"
-"blogspot.ba\0withyoutube.com\0"
-"edu.al\0"
-"sykkylven.no\0"
-"hirakata.osaka.jp\0"
-"eng.pro\0blogspot.be\0"
-"edu.ba\0aa.no\0blogspot.bg\0"
-"edu.ar\0edu.bb\0matera.it\0ibara.okayama.jp\0de.cool\0"
-"plc.ly\0"
-"blogspot.bj\0"
-"edu.au\0godaddy\0is-a-soxfan.org\0"
-"keisen.fukuoka.jp\0"
-"edu.bh\0moseushi.hokkaido.jp\0"
-"edu.bi\0crafts.museum\0"
-"edu.az\0kumamoto.kumamoto.jp\0"
-"firm.ro\0eu-central-1.elasticbeanstalk.com\0blogspot.ca\0"
-"exchange.aero\0edu.bm\0"
-"edu.bn\0tsurugi.ishikawa.jp\0"
-"edu.bo\0s\xc3\xb8r-odal.no\0"
-"blogspot.cf\0"
-"aremark.no\0"
-"edu.br\0go.th\0blogspot.ch\0"
+"md.us\0"
+"christiansburg.museum\0"
+"hiraizumi.iwate.jp\0"
+"montreal.museum\0"
+"nichinan.miyazaki.jp\0"
+"makeup\0"
+"doomdns.com\0"
+"al.eu.org\0"
+"saves-the-whales.com\0"
+"hanyu.saitama.jp\0"
+"gs.hm.no\0"
+"kainan.wakayama.jp\0"
+"protonet.io\0"
+"construction\0"
+"katsuyama.fukui.jp\0"
+"kaho.fukuoka.jp\0"
+"acct.pro\0"
+"\xc3\xa5seral.no\0kaszuby.pl\0"
+"edu.ac\0"
+"isesaki.gunma.jp\0caseih\0"
+"l\xc3\xa1hppi.no\0"
+"edu.af\0vana\0operaunite.com\0"
+"neyagawa.osaka.jp\0saskatchewan.museum\0photography\0"
+"ginan.gifu.jp\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0"
+"edu.al\0davvenj\xc3\xa1rga.no\0is-a-rockstar.com\0"
+"hidaka.wakayama.jp\0"
+"audnedaln.no\0"
+"mopar\0"
+"edu.ba\0"
+"edu.ar\0edu.bb\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0"
+"cody.museum\0"
+"khmelnytskyi.ua\0\xe5\xbe\xae\xe5\x8d\x9a\0"
+"edu.au\0nogata.fukuoka.jp\0ashibetsu.hokkaido.jp\0\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0"
+"sa.gov.pl\0"
+"edu.bh\0"
+"gliding.aero\0edu.bi\0sohu\0"
+"edu.az\0miyagi.jp\0"
+"science-fiction.museum\0"
+"edu.bm\0allstate\0"
+"edu.bn\0"
+"edu.bo\0v\xc3\xa1rgg\xc3\xa1t.no\0"
+"yamada.iwate.jp\0"
+"wanggou\0"
+"edu.br\0"
"edu.bs\0"
-"edu.bt\0go.tj\0"
-"s\xc3\xb8r-varanger.no\0"
-"blogspot.cl\0"
-"jogasz.hu\0orkanger.no\0"
+"edu.bt\0"
+"arida.wakayama.jp\0"
"edu.ci\0"
"edu.bz\0"
-"gs.bu.no\0jambyl.su\0"
-"lublin.pl\0mysecuritycamera.net\0"
-"v\xc3\xa1rgg\xc3\xa1t.no\0"
-"edu.cn\0"
-"edu.co\0contemporary.museum\0blogspot.de\0"
-"blogspot.cv\0"
-"laakesvuemie.no\0go.ug\0"
-"boldlygoingnowhere.org\0"
-"go.tz\0blogspot.cz\0"
-"edu.cu\0blogspot.dk\0"
-"edu.cw\0stranda.no\0"
-"hikawa.shimane.jp\0"
-"serveftp.com\0"
-"shinanomachi.nagano.jp\0"
-"edu.dm\0finnoy.no\0"
-"yoka.hyogo.jp\0"
-"edu.do\0museet.museum\0b\xc3\xa1l\xc3\xa1t.no\0"
-"sano.tochigi.jp\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0"
-"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0"
-"edu.ec\0"
+"tsubame.niigata.jp\0habikino.osaka.jp\0"
+"edu.cn\0\xe7\xbd\x91\xe7\xbb\x9c.hk\0"
+"edu.co\0"
+"\xe9\x95\xb7\xe9\x87\x8e.jp\0hzc.io\0"
+"sa.edu.au\0aso.kumamoto.jp\0kasukabe.saitama.jp\0"
+"kamikawa.saitama.jp\0"
+"edu.cu\0"
+"geisei.kochi.jp\0"
+"edu.cw\0"
+"saogonca.br\0"
+"beauxarts.museum\0"
+"izumiotsu.osaka.jp\0no-ip.biz\0"
+"karikatur.museum\0anquan\0"
+"edu.dm\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0"
+"k12.ma.us\0grainger\0"
+"edu.do\0nakijin.okinawa.jp\0"
+"lixil\0"
+"cc.pa.us\0"
+"edu.ec\0higashiosaka.osaka.jp\0"
"edu.ee\0"
-"edu.eg\0broadway\0"
-"livorno.it\0"
-"edu.dz\0carboniaiglesias.it\0"
-"lesja.no\0"
-"ce.it\0sytes.net\0"
-"linz.museum\0virtualuser.de\0"
-"seiyo.ehime.jp\0"
-"my-firewall.org\0"
-"kanmaki.nara.jp\0tendo.yamagata.jp\0wolomin.pl\0"
-"sula.no\0"
-"firm.nf\0"
-"edu.es\0savannahga.museum\0tonsberg.no\0"
-"edu.et\0"
-"myvnc.com\0"
-"engineer\0"
-"avoues.fr\0bihoro.hokkaido.jp\0caseih\0"
-"juedisches.museum\0"
-"al.gov.br\0"
-"group.aero\0cc.fl.us\0"
-"mg.leg.br\0"
-"pulawy.pl\0"
-"eng.br\0gift\0"
-"columbus.museum\0"
-"otari.nagano.jp\0"
-"edu.ge\0hermes\0"
-"honjo.saitama.jp\0"
+"edu.eg\0"
+"edu.dz\0val-daosta.it\0chikusei.ibaraki.jp\0"
+"psi.br\0"
+"gotpantheon.com\0"
+"h.se\0"
+"edu.es\0"
+"edu.et\0myiphost.com\0"
+"istmein.de\0"
+"balsan.it\0"
+"media\0"
+"docs\0"
+"ora.gunma.jp\0"
+"rockart.museum\0\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0barsy.site\0"
+"s3-ap-southeast-1.amazonaws.com\0"
+"witd.gov.pl\0"
+"edu.ge\0nemuro.hokkaido.jp\0"
+"trentino-s\xc3\xbc""dtirol.it\0cr.it\0"
"edu.gh\0"
-"edu.gi\0coastaldefence.museum\0"
-"partners\0"
-"edu.gl\0minamiyamashiro.kyoto.jp\0"
-"edu.gn\0cloudns.biz\0"
-"no.eu.org\0"
-"edu.gp\0namikata.ehime.jp\0"
-"edu.gr\0"
-"cng.br\0edu.gt\0gosen.niigata.jp\0"
-"agro.bo\0edu.gu\0phoenix.museum\0lugansk.ua\0"
-"digital\0"
-"dyn-o-saur.com\0"
-"motoyama.kochi.jp\0"
-"industria.bo\0edu.gy\0"
-"edu.hk\0"
-"lombardia.it\0"
-"edu.hn\0iwaizumi.iwate.jp\0chino.nagano.jp\0futsu.nagasaki.jp\0"
-"fuel.aero\0blogspot.ae\0"
-"ishikari.hokkaido.jp\0"
-"akrehamn.no\0"
-"edu.ht\0"
-"toyota\0"
-"blogspot.al\0"
-"mobi\0tunes\0blogspot.am\0"
-"goiania.br\0co.financial\0"
-"yokoze.saitama.jp\0"
-"naoshima.kagawa.jp\0"
-"sola.no\0adac\0\xe6\xb8\xb8\xe6\x88\x8f\0"
-"edu.in\0yamanashi.jp\0"
+"edu.gi\0miharu.fukushima.jp\0"
+"cesena-forl\xc3\xac.it\0property\0"
+"song\0"
+"edu.gl\0"
+"sakawa.kochi.jp\0oirm.gov.pl\0"
+"edu.gn\0holiday\0"
+"edu.gp\0benevento.it\0"
+"aju.br\0edu.gr\0k12.tr\0"
+"hashimoto.wakayama.jp\0blog\0final\0"
+"show.aero\0edu.gt\0trentino-alto-adige.it\0chanel\0"
+"edu.gu\0"
+"edu.gy\0"
+"edu.hk\0""2000.hu\0"
+"gs.vf.no\0cust.prod.thingdust.io\0"
+"sony\0"
+"edu.hn\0"
+"gs.rl.no\0hyatt\0"
+"yachimata.chiba.jp\0"
+"edu.ht\0gniezno.pl\0"
+"izumozaki.niigata.jp\0"
+"asso.fr\0tsuruta.aomori.jp\0celtic.museum\0"
+"fm.br\0k12.vi\0"
+"beats\0net-freaks.com\0"
+"cn-northwest-1.eb.amazonaws.com.cn\0"
+"\xe5\xba\x83\xe5\xb3\xb6.jp\0takahama.aichi.jp\0"
+"edu.in\0"
"edu.iq\0"
-"edu.is\0"
-"edu.it\0"
-"plc.uk\0"
-"piacenza.it\0terni.it\0lg.jp\0echizen.fukui.jp\0actor\0"
-"bu.no\0modum.no\0dy.fi\0"
-"takino.hyogo.jp\0"
-"\xe5\x8f\xb0\xe7\x81\xa3\0"
-"\xe5\x85\xac\xe7\x9b\x8a\0"
-"isa.us\0"
-"arts.co\0village.museum\0s\xc3\xb8r-fron.no\0vodka\0"
-"edu.jo\0moda\0dnshome.de\0"
-"tashkent.su\0byen.site\0"
-"akune.kagoshima.jp\0canon\0"
-"edu.kg\0"
-"edu.ki\0countryestate.museum\0"
-"green\0"
-"edu.km\0"
-"sango.nara.jp\0edu.kn\0"
-"navuotna.no\0lib.in.us\0"
-"yakumo.hokkaido.jp\0edu.kp\0"
-"edu.la\0"
-"nagahama.shiga.jp\0edu.lb\0"
-"edu.lc\0afjord.no\0"
-"rotorcraft.aero\0edu.kw\0"
-"udono.mie.jp\0global.prod.fastly.net\0"
-"edu.ky\0n\xc3\xa1vuotna.no\0"
-"\xe7\xbd\x91\xe7\xbb\x9c.cn\0edu.kz\0"
+"edu.is\0game\0"
+"asso.gp\0edu.it\0dscloud.biz\0"
+"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0"
+"depot.museum\0"
+"natural.bo\0lib.md.us\0"
+"sano.tochigi.jp\0"
+"edu.jo\0kaminokawa.tochigi.jp\0"
+"store\0"
+"zagan.pl\0"
+"kmpsp.gov.pl\0vologda.su\0"
+"accident-prevention.aero\0"
+"edu.kg\0land-4-sale.us\0"
+"asso.ht\0"
+"edu.ki\0lib.ar.us\0"
+"unzen.nagasaki.jp\0edu.km\0"
+"edu.kn\0is-saved.org\0"
+"edu.kp\0comcast\0"
+"akita.akita.jp\0edu.la\0"
+"edu.lb\0"
+"rikubetsu.hokkaido.jp\0edu.lc\0"
+"finance\0"
+"daiwa.hiroshima.jp\0s\xc3\xa1l\xc3\xa1t.no\0dunlop\0"
+"edu.kw\0history.museum\0"
+"niyodogawa.kochi.jp\0""1kapp.com\0"
+"shonai.yamagata.jp\0edu.ky\0sciences.museum\0"
+"edu.kz\0"
"edu.lk\0"
-"pisa.it\0"
-"toyota.yamaguchi.jp\0comcast\0"
-"lombardy.it\0shikatsu.aichi.jp\0"
-"\xc3\xa1lt\xc3\xa1.no\0"
+"asso.bj\0for.sale\0"
+"aurland.no\0"
+"foundation\0otsuka\0"
"edu.lr\0"
"edu.ls\0"
-"kawaue.gifu.jp\0"
"edu.me\0"
-"edu.lv\0"
+"mihama.chiba.jp\0edu.lv\0"
"edu.mg\0"
-"edu.ly\0penza.su\0"
+"edu.ly\0"
"edu.mk\0"
-"edu.ml\0cricket\0telebit.app\0"
-"misaki.osaka.jp\0edu.mn\0cern\0"
-"edu.mo\0nz.eu.org\0"
-"tatebayashi.gunma.jp\0"
-"redstone\0nym.by\0"
-"nym.bz\0"
-"edu.ms\0mordovia.su\0"
+"edu.ml\0nittedal.no\0"
+"asso.ci\0"
+"edu.mn\0"
+"edu.mo\0"
+"blue\0"
+"edu.ms\0"
+"edu.mt\0dnsalias.com\0"
+"edu.mv\0lab.ms\0"
+"marburg.museum\0edu.mw\0edu.ng\0"
+"edu.mx\0"
+"edu.my\0edu.ni\0"
+"tas.edu.au\0edu.mz\0"
+"muosat.no\0"
+"amami.kagoshima.jp\0omi.niigata.jp\0"
+"etnedal.no\0kutno.pl\0"
+"\xe5\xb2\xa9\xe6\x89\x8b.jp\0energy\0al.leg.br\0"
+"from-hi.com\0"
+"kharkiv.ua\0"
+"crd.co\0"
+"\xe9\xb3\xa5\xe5\x8f\x96.jp\0edu.nr\0mytis.ru\0"
+"sicily.it\0ichinoseki.iwate.jp\0s3-website.eu-west-2.amazonaws.com\0webhop.me\0"
+"sharp\0"
+"kiev.ua\0"
+"yuasa.wakayama.jp\0cc.ct.us\0"
+"schlesisches.museum\0marine.ru\0filegear-ie.me\0caa.li\0"
+"!city.kawasaki.jp\0azerbaijan.su\0""32-b.it\0"
+"edu.om\0"
+"asso.dz\0read-books.org\0"
+"troms\xc3\xb8.no\0"
+"immobilien\0"
+"na.it\0hob\xc3\xb8l.no\0edu.pa\0"
+"\xe4\xbf\xa1\xe6\x81\xaf\0"
+"no.eu.org\0"
+"edu.pe\0"
+"steigen.no\0edu.pf\0"
+"kautokeino.no\0"
+"edu.ph\0"
+"fm.it\0edu.pk\0vladikavkaz.ru\0"
+"edu.pl\0"
+"dnipropetrovsk.ua\0"
+"edu.pn\0"
+"bs.it\0abashiri.hokkaido.jp\0otsuki.yamanashi.jp\0"
+"gjerdrum.no\0edu.qa\0"
+"gojome.akita.jp\0yamanashi.yamanashi.jp\0edu.pr\0"
+"oshima.tokyo.jp\0edu.ps\0"
+"edu.pt\0"
+"lind\xc3\xa5s.no\0"
+"edu.py\0devices.resinstaging.io\0"
+"u.bg\0"
+"vladikavkaz.su\0"
+"davvenjarga.no\0"
+"yamada.fukuoka.jp\0sakuho.nagano.jp\0ut.us\0"
+"koza.wakayama.jp\0ravendb.community\0"
+"moriguchi.osaka.jp\0nsn.us\0"
+"tgory.pl\0"
+"engine.aero\0"
+"media.museum\0free\0"
+"cr.ua\0svn-repos.de\0"
+"sosa.chiba.jp\0"
+"joburg\0storage.yandexcloud.net\0"
+"mb.ca\0beta.bounty-full.com\0"
+"omi.nagano.jp\0tushu\0"
+"from-or.com\0"
+"iwakura.aichi.jp\0"
+"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0yasuoka.nagano.jp\0guitars\0"
+"oumu.hokkaido.jp\0"
+"rawa-maz.pl\0edu.sa\0"
+"shinjo.okayama.jp\0edu.sb\0"
+"edu.rs\0edu.sc\0"
+"fukui.fukui.jp\0torsken.no\0edu.sd\0"
+"edu.ru\0"
+"ikusaka.nagano.jp\0monticello.museum\0"
+"edu.sg\0for-our.info\0"
+"tas.gov.au\0"
+"historisch.museum\0servemp3.com\0"
+"kaga.ishikawa.jp\0edu.sl\0"
+"shikama.miyagi.jp\0gs.bu.no\0edu.sn\0"
+"edu.so\0"
+"blog.bo\0"
+"edu.ss\0"
+"edu.st\0"
+"blog.br\0"
+"bozen-sudtirol.it\0edu.sv\0"
+"edu.sy\0"
+"edu.tj\0mypi.co\0"
+"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0"
+"cc.na\0edu.tm\0"
+"bygland.no\0"
+"grandrapids.museum\0edu.to\0e4.cz\0"
+"yamaguchi.jp\0malselv.no\0rovno.ua\0"
+"kami.kochi.jp\0edu.ua\0tokyo\0"
+"edu.tr\0r.cdn77.net\0"
+"g\xc3\xa1\xc5\x8bgaviika.no\0s3-ap-northeast-1.amazonaws.com\0"
+"kawara.fukuoka.jp\0heroy.more-og-romsdal.no\0edu.tt\0"
+"from-ms.com\0from-nc.com\0"
+"fm.no\0"
+"edu.tw\0"
+"windmill.museum\0bss.design\0"
+"kiyosu.aichi.jp\0"
};
static const quint16 tldChunkCount = 2;
-static const quint32 tldChunks[] = {65517, 101828};
+static const quint32 tldChunks[] = {65526, 103395};
QT_END_NAMESPACE
diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h
index 3c3f9fb1ac..5421eb2afa 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.h
+++ b/src/corelib/itemmodels/qitemselectionmodel.h
@@ -171,11 +171,11 @@ public:
QModelIndex currentIndex() const;
Q_INVOKABLE bool isSelected(const QModelIndex &index) const;
- Q_INVOKABLE bool isRowSelected(int row, const QModelIndex &parent) const;
- Q_INVOKABLE bool isColumnSelected(int column, const QModelIndex &parent) const;
+ Q_INVOKABLE bool isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const;
+ Q_INVOKABLE bool isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const;
- Q_INVOKABLE bool rowIntersectsSelection(int row, const QModelIndex &parent) const;
- Q_INVOKABLE bool columnIntersectsSelection(int column, const QModelIndex &parent) const;
+ Q_INVOKABLE bool rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const;
+ Q_INVOKABLE bool columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const;
bool hasSelection() const;
@@ -241,7 +241,7 @@ inline uint qHash(const QItemSelectionRange &) { return 0; }
# define Q_TEMPLATE_EXTERN extern
# endif
# endif
-Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QList<QItemSelectionRange>;
+Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector<QItemSelectionRange>;
#endif // Q_CC_MSVC
class Q_CORE_EXPORT QItemSelection : public QList<QItemSelectionRange>
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
index 675bf4b8c3..978102035e 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
@@ -377,6 +377,7 @@ public:
void sort();
bool update_source_sort_column();
+ int find_source_sort_column() const;
void sort_source_rows(QVector<int> &source_rows,
const QModelIndex &source_parent) const;
QVector<QPair<int, QVector<int > > > proxy_intervals_for_source_items_to_add(
@@ -479,11 +480,8 @@ void QSortFilterProxyModelPrivate::_q_clearMapping()
qDeleteAll(source_index_mapping);
source_index_mapping.clear();
- if (dynamic_sortfilter && update_source_sort_column()) {
- //update_source_sort_column might have created wrong mapping so we have to clear it again
- qDeleteAll(source_index_mapping);
- source_index_mapping.clear();
- }
+ if (dynamic_sortfilter)
+ source_sort_column = find_source_sort_column();
// update the persistent indexes
update_persistent_indexes(source_indexes);
@@ -640,6 +638,31 @@ bool QSortFilterProxyModelPrivate::update_source_sort_column()
return old_source_sort_column != source_sort_column;
}
+/*!
+ \internal
+
+ Find the source_sort_column without creating a full mapping and
+ without updating anything.
+*/
+int QSortFilterProxyModelPrivate::find_source_sort_column() const
+{
+ if (proxy_sort_column == -1)
+ return -1;
+
+ const QModelIndex rootIndex;
+ const int source_cols = model->columnCount();
+ int accepted_columns = -1;
+
+ Q_Q(const QSortFilterProxyModel);
+ for (int i = 0; i < source_cols; ++i) {
+ if (q->filterAcceptsColumn(i, rootIndex)) {
+ if (++accepted_columns == proxy_sort_column)
+ return i;
+ }
+ }
+
+ return -1;
+}
/*!
\internal
@@ -1591,11 +1614,8 @@ void QSortFilterProxyModelPrivate::_q_sourceLayoutChanged(const QList<QPersisten
update_persistent_indexes(saved_persistent_indexes);
saved_persistent_indexes.clear();
- if (dynamic_sortfilter && update_source_sort_column()) {
- //update_source_sort_column might have created wrong mapping so we have to clear it again
- qDeleteAll(source_index_mapping);
- source_index_mapping.clear();
- }
+ if (dynamic_sortfilter)
+ source_sort_column = find_source_sort_column();
emit q->layoutChanged(saved_layoutChange_parents);
saved_layoutChange_parents.clear();
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index a8e8866339..b1e1bb8b4a 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -682,7 +682,9 @@ static void argumentTypesFromString(const char *str, const char *end,
--level;
++str;
}
- types += QArgumentType(QByteArray(begin, str - begin));
+ QByteArray argType(begin, str - begin);
+ argType.replace("QList<", "QVector<");
+ types += QArgumentType(std::move(argType));
}
}
diff --git a/src/corelib/kernel/qmetaobject_moc_p.h b/src/corelib/kernel/qmetaobject_moc_p.h
index 8c7900767b..471e43f85b 100644
--- a/src/corelib/kernel/qmetaobject_moc_p.h
+++ b/src/corelib/kernel/qmetaobject_moc_p.h
@@ -213,6 +213,9 @@ static QByteArray normalizeTypeInternal(const char *t, const char *e, bool fixSc
}
}
+ // Qt 5 compatibility, make sure we use the correct type name for QList
+ result.replace("QList<", "QVector<");
+
return result;
}
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp
index f77c4ce32f..aab9e05182 100644
--- a/src/corelib/kernel/qmetaobjectbuilder.cpp
+++ b/src/corelib/kernel/qmetaobjectbuilder.cpp
@@ -1103,7 +1103,7 @@ int QMetaStringTable::enter(const QByteArray &value)
int QMetaStringTable::preferredAlignment()
{
- return Q_ALIGNOF(QByteArrayData);
+ return alignof(QByteArrayData);
}
// Returns the size (in bytes) required for serializing this string table.
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 356a675517..5c1e4b4ddd 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -37,6 +37,8 @@
**
****************************************************************************/
+#include <bitset>
+
#include "qmetatype.h"
#include "qmetatype_p.h"
#include "qobjectdefs.h"
@@ -2416,6 +2418,50 @@ const QMetaObject *metaObjectForQWidget()
return nullptr;
return qMetaObjectWidgetsHelper;
}
+
+void qt5CompatibilityHookPostRegister(int id, const QByteArray &normalizedTypeName)
+{
+ // In Qt6 QList got typedef'ed to QVector. To keep runtime behavior compatibility
+ // with Qt5 we install corresponding aliases. For example if one register
+ // QVector<QVector<int>>
+ // we need to register the type plus all possible aliases:
+ // QVector<QList<int>>
+ // QList<QVector<int>>
+ // QList<QList<int>>
+ // ### Qt6 TODO This is slow, as it allocates couple of strings we would need to
+ // if def this call with something like QT_NO_QLIST
+ const char *vectorName = "QVector<";
+ const char *listName = "QList<";
+
+ auto isSubstringOfAType = [](char c) { return c != ' ' && c != ',' && c != '<'; };
+ QVarLengthArray<int> indexes;
+
+ for (auto containerName: {vectorName, listName}) {
+ for (int i = normalizedTypeName.indexOf(containerName, 0); i != -1; i = normalizedTypeName.indexOf(containerName, i + 1)) {
+ if (!i || (i > 0 && !isSubstringOfAType(normalizedTypeName[i - 1])))
+ indexes.append(i);
+ }
+ }
+ // To avoid problems with the constantly changing size we start replacements
+ // from the end of normalizedTypeName
+ std::sort(indexes.rbegin(), indexes.rend());
+
+ for (quint64 combination = 1; ; ++combination) {
+ std::bitset<64> bits(combination);
+ QByteArray name = normalizedTypeName;
+ for (auto j = 0; j < indexes.size(); ++j) {
+ if (bits.test(j)) {
+ auto i = indexes[j];
+ auto replaceFrom = normalizedTypeName[i + 1] == 'V' ? vectorName : listName;
+ auto replaceTo = normalizedTypeName[i + 1] == 'V' ? listName : vectorName;
+ name.replace(i, sizeof(replaceFrom), replaceTo);
+ }
+ }
+ QMetaType::registerNormalizedTypedef(name, id);
+ if (bits.count() >= size_t(indexes.size()))
+ break;
+ }
+}
}
namespace QtMetaTypePrivate {
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index 94a32cec02..caa158841c 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -151,6 +151,13 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId();
F(QVariantHash, 28, QVariantHash) \
F(QByteArrayList, 49, QByteArrayList) \
+#if QT_CONFIG(shortcut)
+#define QT_FOR_EACH_STATIC_KEYSEQUENCE_CLASS(F)\
+ F(QKeySequence, 75, QKeySequence)
+#else
+#define QT_FOR_EACH_STATIC_KEYSEQUENCE_CLASS(F)
+#endif
+
#define QT_FOR_EACH_STATIC_GUI_CLASS(F)\
F(QFont, 64, QFont) \
F(QPixmap, 65, QPixmap) \
@@ -163,7 +170,7 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId();
F(QRegion, 72, QRegion) \
F(QBitmap, 73, QBitmap) \
F(QCursor, 74, QCursor) \
- F(QKeySequence, 75, QKeySequence) \
+ QT_FOR_EACH_STATIC_KEYSEQUENCE_CLASS(F) \
F(QPen, 76, QPen) \
F(QTextLength, 77, QTextLength) \
F(QTextFormat, 78, QTextFormat) \
@@ -200,10 +207,11 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId();
F(UInt, -1, uint, "quint32") \
F(LongLong, -1, qlonglong, "qint64") \
F(ULongLong, -1, qulonglong, "quint64") \
+ F(QVariantList, -1, QVariantList, "QVector<QVariant>") \
F(QVariantList, -1, QVariantList, "QList<QVariant>") \
F(QVariantMap, -1, QVariantMap, "QMap<QString,QVariant>") \
F(QVariantHash, -1, QVariantHash, "QHash<QString,QVariant>") \
- F(QByteArrayList, -1, QByteArrayList, "QList<QByteArray>") \
+ F(QByteArrayList, -1, QByteArrayList, "QVector<QByteArray>") \
#define QT_FOR_EACH_STATIC_TYPE(F)\
QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\
@@ -218,7 +226,6 @@ inline Q_DECL_CONSTEXPR int qMetaTypeId();
TypeName = Id,
#define QT_FOR_EACH_AUTOMATIC_TEMPLATE_1ARG(F) \
- F(QList) \
F(QVector) \
F(QQueue) \
F(QStack) \
@@ -997,10 +1004,6 @@ struct ContainerAPI : CapabilitiesImpl<T>
};
template<typename T>
-struct ContainerAPI<QList<T> > : CapabilitiesImpl<QList<T> >
-{ static int size(const QList<T> *t) { return t->size(); } };
-
-template<typename T>
struct ContainerAPI<QVector<T> > : CapabilitiesImpl<QVector<T> >
{ static int size(const QVector<T> *t) { return t->size(); } };
@@ -1643,6 +1646,23 @@ namespace QtPrivate
static bool registerConverter(int) { return false; }
};
+ template<class T>
+ struct Qt5CompatibilityHook
+ {
+ static inline void postRegister(int, const QByteArray &) {};
+ };
+
+ Q_CORE_EXPORT void qt5CompatibilityHookPostRegister(int id, const QByteArray &normalizedTypeName);
+
+ template<class T>
+ struct Qt5CompatibilityHook<QVector<T>>
+ {
+ static inline void postRegister(int id, const QByteArray &normalizedTypeName)
+ {
+ qt5CompatibilityHookPostRegister(id, normalizedTypeName);
+ }
+ };
+
Q_CORE_EXPORT bool isBuiltinType(const QByteArray &type);
} // namespace QtPrivate
@@ -1769,6 +1789,7 @@ int qRegisterNormalizedMetaType(const QT_PREPEND_NAMESPACE(QByteArray) &normaliz
QtPrivate::AssociativeContainerConverterHelper<T>::registerConverter(id);
QtPrivate::MetaTypePairHelper<T>::registerConverter(id);
QtPrivate::MetaTypeSmartPointerHelper<T>::registerConverter(id);
+ QtPrivate::Qt5CompatibilityHook<T>::postRegister(id, normalizedTypeName);
}
return id;
@@ -1992,7 +2013,7 @@ typedef QHash<QString, QVariant> QVariantHash;
#ifdef Q_CLANG_QDOC
class QByteArrayList;
#else
-typedef QList<QByteArray> QByteArrayList;
+typedef QVector<QByteArray> QByteArrayList;
#endif
#define Q_DECLARE_METATYPE_TEMPLATE_1ARG(SINGLE_ARG_TEMPLATE) \
diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index d743d5a5c7..f2057e25b4 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -232,9 +232,6 @@ template<> struct TypeDefinition<QRegExp> { static const bool IsAvailable = fals
#if !QT_CONFIG(regularexpression)
template<> struct TypeDefinition<QRegularExpression> { static const bool IsAvailable = false; };
#endif
-#ifdef QT_NO_SHORTCUT
-template<> struct TypeDefinition<QKeySequence> { static const bool IsAvailable = false; };
-#endif
#ifdef QT_NO_CURSOR
template<> struct TypeDefinition<QCursor> { static const bool IsAvailable = false; };
#endif
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index 11ebba7787..db62c03b7a 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -362,6 +362,7 @@ public:
}
public:
ExtraData *extraData; // extra data set by the user
+ QThreadData *getThreadData() const { return threadData; }
QThreadData *threadData; // id of the thread that owns the object
using ConnectionDataPointer = QExplicitlySharedDataPointer<ConnectionData>;
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index a7e16ac351..60d1a91eef 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1470,7 +1470,7 @@ static void customConstruct(QVariant::Private *d, const void *copy)
} else {
// Private::Data contains long long, and long double is the biggest standard type.
const size_t maxAlignment =
- qMax(Q_ALIGNOF(QVariant::Private::Data), Q_ALIGNOF(long double));
+ qMax(alignof(QVariant::Private::Data), alignof(long double));
const size_t s = sizeof(QVariant::PrivateShared);
const size_t offset = s + ((s * maxAlignment - s) % maxAlignment);
void *data = operator new(offset + size);
@@ -2469,7 +2469,9 @@ static const ushort mapIdFromQt3ToCurrent[MapFromThreeCount] =
QVariant::DateTime,
QVariant::ByteArray,
QVariant::BitArray,
+#if QT_CONFIG(shortcut)
QVariant::KeySequence,
+#endif
QVariant::Pen,
QVariant::LongLong,
QVariant::ULongLong,
@@ -2574,7 +2576,11 @@ void QVariant::save(QDataStream &s) const
typeId += 97;
} else if (typeId == QMetaType::QSizePolicy) {
typeId = 75;
+#if QT_CONFIG(shortcut)
} else if (typeId >= QMetaType::QKeySequence && typeId <= QMetaType::QQuaternion) {
+#else
+ } else if (typeId >= QMetaType::QPen && typeId <= QMetaType::QQuaternion) {
+#endif
// and as a result these types received lower ids too
typeId +=1;
} else if (typeId == QMetaType::QPolygonF) {
@@ -3647,9 +3653,11 @@ bool QVariant::canConvert(int targetTypeId) const
if (currentType > int(QMetaType::QUuid) || targetTypeId > int(QMetaType::QUuid)) {
switch (uint(targetTypeId)) {
case QVariant::Int:
+#if QT_CONFIG(shortcut)
if (currentType == QVariant::KeySequence)
return true;
Q_FALLTHROUGH();
+#endif
case QVariant::UInt:
case QVariant::LongLong:
case QVariant::ULongLong:
@@ -3672,11 +3680,16 @@ bool QVariant::canConvert(int targetTypeId) const
return currentType == QVariant::Color || currentType == QMetaType::Nullptr
|| ((QMetaType::typeFlags(currentType) & QMetaType::IsEnumeration) && QMetaType::metaObjectForType(currentType));
case QVariant::String:
- return currentType == QVariant::KeySequence || currentType == QVariant::Font
- || currentType == QVariant::Color || currentType == QMetaType::Nullptr
- || ((QMetaType::typeFlags(currentType) & QMetaType::IsEnumeration) && QMetaType::metaObjectForType(currentType));
+ return currentType == QVariant::Font
+ || currentType == QVariant::Color || currentType == QMetaType::Nullptr
+#if QT_CONFIG(shortcut)
+ || currentType == QVariant::KeySequence
+#endif
+ || ((QMetaType::typeFlags(currentType) & QMetaType::IsEnumeration) && QMetaType::metaObjectForType(currentType));
+#if QT_CONFIG(shortcut)
case QVariant::KeySequence:
return currentType == QVariant::String || currentType == QVariant::Int;
+#endif
case QVariant::Font:
return currentType == QVariant::String;
case QVariant::Color:
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index 86c7414704..331adea4e7 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -184,7 +184,9 @@ class Q_CORE_EXPORT QVariant
Region = QMetaType::QRegion,
Bitmap = QMetaType::QBitmap,
Cursor = QMetaType::QCursor,
+#if QT_CONFIG(shortcut)
KeySequence = QMetaType::QKeySequence,
+#endif
Pen = QMetaType::QPen,
TextLength = QMetaType::QTextLength,
TextFormat = QMetaType::QTextFormat,
diff --git a/src/corelib/serialization/qbinaryjson.cpp b/src/corelib/serialization/qbinaryjson.cpp
new file mode 100644
index 0000000000..3d359f0998
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjson.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjson_p.h"
+
+#include <qjsonobject.h>
+#include <qjsonarray.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QBinaryJsonPrivate {
+
+static Q_CONSTEXPR Base emptyArray = {
+ { qle_uint(sizeof(Base)) },
+ { 0 },
+ { qle_uint(0) }
+};
+
+static Q_CONSTEXPR Base emptyObject = {
+ { qle_uint(sizeof(Base)) },
+ { qToLittleEndian(1U) },
+ { qle_uint(0) }
+};
+
+void MutableData::compact()
+{
+ Q_STATIC_ASSERT(sizeof(Value) == sizeof(offset));
+
+ Base *base = header->root();
+ int reserve = 0;
+ if (base->is_object) {
+ auto *o = static_cast<Object *>(base);
+ for (uint i = 0; i < o->length; ++i)
+ reserve += o->entryAt(i)->usedStorage(o);
+ } else {
+ auto *a = static_cast<Array *>(base);
+ for (uint i = 0; i < a->length; ++i)
+ reserve += a->at(i)->usedStorage(a);
+ }
+
+ uint size = sizeof(Base) + reserve + base->length * sizeof(offset);
+ uint alloc = sizeof(Header) + size;
+ auto *h = reinterpret_cast<Header *>(malloc(alloc));
+ Q_CHECK_PTR(h);
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ Base *b = h->root();
+ b->size = size;
+ b->is_object = header->root()->is_object;
+ b->length = base->length;
+ b->tableOffset = reserve + sizeof(Array);
+
+ uint offset = sizeof(Base);
+ if (b->is_object) {
+ const auto *o = static_cast<const Object *>(base);
+ auto *no = static_cast<Object *>(b);
+
+ for (uint i = 0; i < o->length; ++i) {
+ no->table()[i] = offset;
+
+ const Entry *e = o->entryAt(i);
+ Entry *ne = no->entryAt(i);
+ uint s = e->size();
+ memcpy(ne, e, s);
+ offset += s;
+ uint dataSize = e->value.usedStorage(o);
+ if (dataSize) {
+ memcpy(reinterpret_cast<char *>(no) + offset, e->value.data(o), dataSize);
+ ne->value.value = offset;
+ offset += dataSize;
+ }
+ }
+ } else {
+ const auto *a = static_cast<const Array *>(base);
+ auto *na = static_cast<Array *>(b);
+
+ for (uint i = 0; i < a->length; ++i) {
+ const Value *v = a->at(i);
+ Value *nv = na->at(i);
+ *nv = *v;
+ uint dataSize = v->usedStorage(a);
+ if (dataSize) {
+ memcpy(reinterpret_cast<char *>(na) + offset, v->data(a), dataSize);
+ nv->value = offset;
+ offset += dataSize;
+ }
+ }
+ }
+ Q_ASSERT(offset == uint(b->tableOffset));
+
+ free(header);
+ header = h;
+ this->alloc = alloc;
+ compactionCounter = 0;
+}
+
+bool ConstData::isValid() const
+{
+ if (header->tag != QJsonDocument::BinaryFormatTag || header->version != 1U)
+ return false;
+
+ const Base *root = header->root();
+ const uint maxSize = alloc - sizeof(Header);
+ return root->is_object
+ ? static_cast<const Object *>(root)->isValid(maxSize)
+ : static_cast<const Array *>(root)->isValid(maxSize);
+}
+
+QJsonDocument ConstData::toJsonDocument() const
+{
+ const Base *root = header->root();
+ return root->is_object
+ ? QJsonDocument(static_cast<const Object *>(root)->toJsonObject())
+ : QJsonDocument(static_cast<const Array *>(root)->toJsonArray());
+}
+
+uint Base::reserveSpace(uint dataSize, uint posInTable, uint numItems, bool replace)
+{
+ Q_ASSERT(posInTable <= length);
+ if (size + dataSize >= Value::MaxSize) {
+ qWarning("QJson: Document too large to store in data structure %d %d %d",
+ uint(size), dataSize, Value::MaxSize);
+ return 0;
+ }
+
+ offset off = tableOffset;
+ // move table to new position
+ if (replace) {
+ memmove(reinterpret_cast<char *>(table()) + dataSize, table(), length * sizeof(offset));
+ } else {
+ memmove(reinterpret_cast<char *>(table() + posInTable + numItems) + dataSize,
+ table() + posInTable, (length - posInTable) * sizeof(offset));
+ memmove(reinterpret_cast<char *>(table()) + dataSize, table(), posInTable * sizeof(offset));
+ }
+ tableOffset += dataSize;
+ for (uint i = 0; i < numItems; ++i)
+ table()[posInTable + i] = off;
+ size += dataSize;
+ if (!replace) {
+ length += numItems;
+ size += numItems * sizeof(offset);
+ }
+ return off;
+}
+
+uint Object::indexOf(QStringView key, bool *exists) const
+{
+ uint min = 0;
+ uint n = length;
+ while (n > 0) {
+ uint half = n >> 1;
+ uint middle = min + half;
+ if (*entryAt(middle) >= key) {
+ n = half;
+ } else {
+ min = middle + 1;
+ n -= half + 1;
+ }
+ }
+ if (min < length && *entryAt(min) == key) {
+ *exists = true;
+ return min;
+ }
+ *exists = false;
+ return min;
+}
+
+QJsonObject Object::toJsonObject() const
+{
+ QJsonObject object;
+ for (uint i = 0; i < length; ++i) {
+ const Entry *e = entryAt(i);
+ object.insert(e->key(), e->value.toJsonValue(this));
+ }
+ return object;
+}
+
+bool Object::isValid(uint maxSize) const
+{
+ if (size > maxSize || tableOffset + length * sizeof(offset) > size)
+ return false;
+
+ QString lastKey;
+ for (uint i = 0; i < length; ++i) {
+ if (table()[i] + sizeof(Entry) >= tableOffset)
+ return false;
+ const Entry *e = entryAt(i);
+ if (!e->isValid(tableOffset - table()[i]))
+ return false;
+ const QString key = e->key();
+ if (key < lastKey)
+ return false;
+ if (!e->value.isValid(this))
+ return false;
+ lastKey = key;
+ }
+ return true;
+}
+
+QJsonArray Array::toJsonArray() const
+{
+ QJsonArray array;
+ const offset *values = table();
+ for (uint i = 0; i < length; ++i)
+ array.append(reinterpret_cast<const Value *>(values + i)->toJsonValue(this));
+ return array;
+}
+
+bool Array::isValid(uint maxSize) const
+{
+ if (size > maxSize || tableOffset + length * sizeof(offset) > size)
+ return false;
+
+ const offset *values = table();
+ for (uint i = 0; i < length; ++i) {
+ if (!reinterpret_cast<const Value *>(values + i)->isValid(this))
+ return false;
+ }
+ return true;
+}
+
+uint Value::usedStorage(const Base *b) const
+{
+ uint s = 0;
+ switch (type) {
+ case QJsonValue::Double:
+ if (!latinOrIntValue)
+ s = sizeof(double);
+ break;
+ case QJsonValue::String: {
+ const char *d = data(b);
+ s = latinOrIntValue
+ ? (sizeof(ushort)
+ + qFromLittleEndian(*reinterpret_cast<const ushort *>(d)))
+ : (sizeof(int)
+ + sizeof(ushort) * qFromLittleEndian(*reinterpret_cast<const int *>(d)));
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ s = base(b)->size;
+ break;
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ default:
+ break;
+ }
+ return alignedSize(s);
+}
+
+QJsonValue Value::toJsonValue(const Base *b) const
+{
+ switch (type) {
+ case QJsonValue::Null:
+ return QJsonValue(QJsonValue::Null);
+ case QJsonValue::Bool:
+ return QJsonValue(toBoolean());
+ case QJsonValue::Double:
+ return QJsonValue(toDouble(b));
+ case QJsonValue::String:
+ return QJsonValue(toString(b));
+ case QJsonValue::Array:
+ return static_cast<const Array *>(base(b))->toJsonArray();
+ case QJsonValue::Object:
+ return static_cast<const Object *>(base(b))->toJsonObject();
+ case QJsonValue::Undefined:
+ return QJsonValue(QJsonValue::Undefined);
+ }
+ Q_UNREACHABLE();
+ return QJsonValue(QJsonValue::Undefined);
+}
+
+inline bool isValidValueOffset(uint offset, uint tableOffset)
+{
+ return offset >= sizeof(Base)
+ && offset + sizeof(uint) <= tableOffset;
+}
+
+bool Value::isValid(const Base *b) const
+{
+ switch (type) {
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ return true;
+ case QJsonValue::Double:
+ return latinOrIntValue || isValidValueOffset(value, b->tableOffset);
+ case QJsonValue::String:
+ if (!isValidValueOffset(value, b->tableOffset))
+ return false;
+ if (latinOrIntValue)
+ return asLatin1String(b).isValid(b->tableOffset - value);
+ return asString(b).isValid(b->tableOffset - value);
+ case QJsonValue::Array:
+ return isValidValueOffset(value, b->tableOffset)
+ && static_cast<const Array *>(base(b))->isValid(b->tableOffset - value);
+ case QJsonValue::Object:
+ return isValidValueOffset(value, b->tableOffset)
+ && static_cast<const Object *>(base(b))->isValid(b->tableOffset - value);
+ default:
+ return false;
+ }
+}
+
+uint Value::requiredStorage(const QBinaryJsonValue &v, bool *compressed)
+{
+ *compressed = false;
+ switch (v.type()) {
+ case QJsonValue::Double:
+ if (QBinaryJsonPrivate::compressedNumber(v.toDouble()) != INT_MAX) {
+ *compressed = true;
+ return 0;
+ }
+ return sizeof(double);
+ case QJsonValue::String: {
+ QString s = v.toString();
+ *compressed = QBinaryJsonPrivate::useCompressed(s);
+ return QBinaryJsonPrivate::qStringSize(s, *compressed);
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return v.base ? uint(v.base->size) : sizeof(QBinaryJsonPrivate::Base);
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ break;
+ }
+ return 0;
+}
+
+uint Value::valueToStore(const QBinaryJsonValue &v, uint offset)
+{
+ switch (v.type()) {
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ break;
+ case QJsonValue::Bool:
+ return v.toBool();
+ case QJsonValue::Double: {
+ int c = QBinaryJsonPrivate::compressedNumber(v.toDouble());
+ if (c != INT_MAX)
+ return c;
+ }
+ Q_FALLTHROUGH();
+ case QJsonValue::String:
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return offset;
+ }
+ return 0;
+}
+
+void Value::copyData(const QBinaryJsonValue &v, char *dest, bool compressed)
+{
+ switch (v.type()) {
+ case QJsonValue::Double:
+ if (!compressed)
+ qToLittleEndian(v.toDouble(), dest);
+ break;
+ case QJsonValue::String: {
+ const QString str = v.toString();
+ QBinaryJsonPrivate::copyString(dest, str, compressed);
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object: {
+ const QBinaryJsonPrivate::Base *b = v.base;
+ if (!b)
+ b = (v.type() == QJsonValue::Array ? &emptyArray : &emptyObject);
+ memcpy(dest, b, b->size);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+} // namespace QBinaryJsonPrivate
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjson_p.h b/src/corelib/serialization/qbinaryjson_p.h
new file mode 100644
index 0000000000..132c36f227
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjson_p.h
@@ -0,0 +1,617 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2016 Intel Corporation.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSON_P_H
+#define QBINARYJSON_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <private/qbinaryjsonvalue_p.h>
+#include <private/qendian_p.h>
+
+#include <qjsondocument.h>
+
+#include <limits>
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+// in qstring.cpp
+void qt_to_latin1_unchecked(uchar *dst, const ushort *uc, qsizetype len);
+void qt_from_latin1(ushort *dst, const char *str, size_t size) noexcept;
+
+/*
+ This defines a binary data structure for Json data. The data structure is optimised for fast reading
+ and minimum allocations. The whole data structure can be mmap'ed and used directly.
+
+ In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but
+ much faster to access.
+
+ The size requirements are:
+
+ String:
+ Latin1 data: 2 bytes header + string.length()
+ Full Unicode: 4 bytes header + 2*(string.length())
+
+ Values: 4 bytes + size of data (size can be 0 for some data)
+ bool: 0 bytes
+ double: 8 bytes (0 if integer with less than 27bits)
+ string: see above
+ array: size of array
+ object: size of object
+ Array: 12 bytes + 4*length + size of Value data
+ Object: 12 bytes + 8*length + size of Key Strings + size of Value data
+
+ For an example such as
+
+ { // object: 12 + 5*8 = 52
+ "firstName": "John", // key 12, value 8 = 20
+ "lastName" : "Smith", // key 12, value 8 = 20
+ "age" : 25, // key 8, value 0 = 8
+ "address" : // key 12, object below = 140
+ { // object: 12 + 4*8
+ "streetAddress": "21 2nd Street", // key 16, value 16
+ "city" : "New York", // key 8, value 12
+ "state" : "NY", // key 8, value 4
+ "postalCode" : "10021" // key 12, value 8
+ }, // object total: 128
+ "phoneNumber": // key: 16, value array below = 172
+ [ // array: 12 + 2*4 + values below: 156
+ { // object 12 + 2*8
+ "type" : "home", // key 8, value 8
+ "number": "212 555-1234" // key 8, value 16
+ }, // object total: 68
+ { // object 12 + 2*8
+ "type" : "fax", // key 8, value 8
+ "number": "646 555-4567" // key 8, value 16
+ } // object total: 68
+ ] // array total: 156
+ } // great total: 412 bytes
+
+ The uncompressed text file used roughly 500 bytes, so in this case we end up using about
+ the same space as the text representation.
+
+ Other measurements have shown a slightly bigger binary size than a compact text
+ representation where all possible whitespace was stripped out.
+*/
+namespace QBinaryJsonPrivate {
+
+class Array;
+class Object;
+class Value;
+class Entry;
+
+template<typename T>
+using q_littleendian = QLEInteger<T>;
+
+using qle_short = q_littleendian<short>;
+using qle_ushort = q_littleendian<unsigned short>;
+using qle_int = q_littleendian<int>;
+using qle_uint = q_littleendian<unsigned int>;
+
+template<int pos, int width>
+using qle_bitfield = QLEIntegerBitfield<uint, pos, width>;
+
+template<int pos, int width>
+using qle_signedbitfield = QLEIntegerBitfield<int, pos, width>;
+
+using offset = qle_uint;
+
+// round the size up to the next 4 byte boundary
+inline uint alignedSize(uint size) { return (size + 3) & ~3; }
+
+const int MaxLatin1Length = 0x7fff;
+
+static inline bool useCompressed(QStringView s)
+{
+ if (s.length() > MaxLatin1Length)
+ return false;
+ return QtPrivate::isLatin1(s);
+}
+
+static inline bool useCompressed(QLatin1String s)
+{
+ return s.size() <= MaxLatin1Length;
+}
+
+static inline uint qStringSize(const QString &string, bool compress)
+{
+ uint l = 2 + string.size();
+ if (!compress)
+ l *= 2;
+ return alignedSize(l);
+}
+
+// returns INT_MAX if it can't compress it into 28 bits
+static inline int compressedNumber(double d)
+{
+ // this relies on details of how ieee floats are represented
+ const int exponent_off = 52;
+ const quint64 fraction_mask = 0x000fffffffffffffULL;
+ const quint64 exponent_mask = 0x7ff0000000000000ULL;
+
+ quint64 val;
+ memcpy (&val, &d, sizeof(double));
+ int exp = (int)((val & exponent_mask) >> exponent_off) - 1023;
+ if (exp < 0 || exp > 25)
+ return std::numeric_limits<int>::max();
+
+ quint64 non_int = val & (fraction_mask >> exp);
+ if (non_int)
+ return std::numeric_limits<int>::max();
+
+ bool neg = (val >> 63) != 0;
+ val &= fraction_mask;
+ val |= ((quint64)1 << 52);
+ int res = (int)(val >> (52 - exp));
+ return neg ? -res : res;
+}
+
+class Latin1String;
+
+class String
+{
+public:
+ explicit String(const char *data) : d(reinterpret_cast<const Data *>(data)) {}
+
+ struct Data {
+ qle_uint length;
+ qle_ushort utf16[1];
+ };
+ const Data *d;
+
+ uint byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; }
+ bool isValid(uint maxSize) const
+ {
+ // Check byteSize() <= maxSize, avoiding integer overflow
+ return maxSize >= sizeof(uint)
+ && uint(d->length) <= (maxSize - sizeof(uint)) / sizeof(ushort);
+ }
+
+ static void copy(char *dest, QStringView str)
+ {
+ Data *data = reinterpret_cast<Data *>(dest);
+ data->length = str.length();
+ qToLittleEndian<quint16>(str.utf16(), str.length(), data->utf16);
+ fillTrailingZeros(data);
+ }
+
+ static void fillTrailingZeros(Data *data)
+ {
+ if (data->length & 1)
+ data->utf16[data->length] = 0;
+ }
+
+ bool operator ==(QStringView str) const
+ {
+ int slen = str.length();
+ int l = d->length;
+ if (slen != l)
+ return false;
+ const auto *s = reinterpret_cast<const ushort *>(str.utf16());
+ const qle_ushort *a = d->utf16;
+ const ushort *b = s;
+ while (l-- && *a == *b)
+ a++,b++;
+ return (l == -1);
+ }
+
+ bool operator ==(const String &str) const
+ {
+ if (d->length != str.d->length)
+ return false;
+ return !memcmp(d->utf16, str.d->utf16, d->length * sizeof(ushort));
+ }
+
+ QString toString() const
+ {
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ return QString(reinterpret_cast<const QChar *>(d->utf16), d->length);
+#else
+ const uint l = d->length;
+ QString str(l, Qt::Uninitialized);
+ QChar *ch = str.data();
+ for (uint i = 0; i < l; ++i)
+ ch[i] = QChar(d->utf16[i]);
+ return str;
+#endif
+ }
+};
+
+class Latin1String
+{
+public:
+ explicit Latin1String(const char *data) : d(reinterpret_cast<const Data *>(data)) {}
+
+ struct Data {
+ qle_ushort length;
+ char latin1[1];
+ };
+ const Data *d;
+
+ uint byteSize() const { return sizeof(ushort) + sizeof(char) * (d->length); }
+ bool isValid(uint maxSize) const { return byteSize() <= maxSize; }
+
+ static void copy(char *dest, QStringView src)
+ {
+ Data *data = reinterpret_cast<Data *>(dest);
+ data->length = src.length();
+ auto *l = reinterpret_cast<uchar *>(data->latin1);
+ const auto *uc = reinterpret_cast<const ushort *>(src.utf16());
+ qt_to_latin1_unchecked(l, uc, data->length);
+
+ for (uint len = data->length; quintptr(l + len) & 0x3; ++len)
+ l[len] = 0;
+ }
+
+ QLatin1String toQLatin1String() const noexcept { return QLatin1String(d->latin1, d->length); }
+ QString toString() const { return QString::fromLatin1(d->latin1, d->length); }
+};
+
+static inline void copyString(char *dest, QStringView str, bool compress)
+{
+ if (compress)
+ Latin1String::copy(dest, str);
+ else
+ String::copy(dest, str);
+}
+
+/*
+ Base is the base class for both Object and Array. Both classes work more or less the same way.
+ The class starts with a header (defined by the struct below), then followed by data (the data for
+ values in the Array case and Entry's (see below) for objects.
+
+ After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and
+ offsets from the beginning of the object to Entry's in the case of Object.
+
+ Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage
+ of a binary search over the keys in an Object.
+ */
+class Base
+{
+public:
+ qle_uint size;
+ union {
+ uint _dummy;
+ qle_bitfield<0, 1> is_object;
+ qle_bitfield<1, 31> length;
+ };
+ offset tableOffset;
+ // content follows here
+
+ bool isObject() const { return !!is_object; }
+ bool isArray() const { return !isObject(); }
+
+ offset *table()
+ {
+ return reinterpret_cast<offset *>(reinterpret_cast<char *>(this) + tableOffset);
+ }
+
+ const offset *table() const
+ {
+ return reinterpret_cast<const offset *>(reinterpret_cast<const char *>(this) + tableOffset);
+ }
+
+ uint reserveSpace(uint dataSize, uint posInTable, uint numItems, bool replace);
+};
+
+class Object : public Base
+{
+public:
+ const Entry *entryAt(uint i) const
+ {
+ return reinterpret_cast<const Entry *>(reinterpret_cast<const char *>(this) + table()[i]);
+ }
+
+ Entry *entryAt(uint i)
+ {
+ return reinterpret_cast<Entry *>(reinterpret_cast<char *>(this) + table()[i]);
+ }
+
+ uint indexOf(QStringView key, bool *exists) const;
+ QJsonObject toJsonObject() const;
+ bool isValid(uint maxSize) const;
+};
+
+class Array : public Base
+{
+public:
+ const Value *at(uint i) const { return reinterpret_cast<const Value *>(table() + i); }
+ Value *at(uint i) { return reinterpret_cast<Value *>(table() + i); }
+
+ QJsonArray toJsonArray() const;
+ bool isValid(uint maxSize) const;
+};
+
+class Value
+{
+public:
+ enum {
+ MaxSize = (1 << 27) - 1
+ };
+ union {
+ uint _dummy;
+ qle_bitfield<0, 3> type;
+ qle_bitfield<3, 1> latinOrIntValue;
+ qle_bitfield<4, 1> latinKey;
+ qle_bitfield<5, 27> value;
+ qle_signedbitfield<5, 27> int_value;
+ };
+
+ inline const char *data(const Base *b) const
+ {
+ return reinterpret_cast<const char *>(b) + value;
+ }
+
+ uint usedStorage(const Base *b) const;
+
+ bool toBoolean() const
+ {
+ Q_ASSERT(type == QJsonValue::Bool);
+ return value != 0;
+ }
+
+ double toDouble(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::Double);
+ if (latinOrIntValue)
+ return int_value;
+
+ auto i = qFromLittleEndian<quint64>(reinterpret_cast<const uchar *>(b) + value);
+ double d;
+ memcpy(&d, &i, sizeof(double));
+ return d;
+ }
+
+ QString toString(const Base *b) const
+ {
+ return latinOrIntValue
+ ? asLatin1String(b).toString()
+ : asString(b).toString();
+ }
+
+ String asString(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::String && !latinOrIntValue);
+ return String(data(b));
+ }
+
+ Latin1String asLatin1String(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::String && latinOrIntValue);
+ return Latin1String(data(b));
+ }
+
+ const Base *base(const Base *b) const
+ {
+ Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object);
+ return reinterpret_cast<const Base *>(data(b));
+ }
+
+ QJsonValue toJsonValue(const Base *b) const;
+ bool isValid(const Base *b) const;
+
+ static uint requiredStorage(const QBinaryJsonValue &v, bool *compressed);
+ static uint valueToStore(const QBinaryJsonValue &v, uint offset);
+ static void copyData(const QBinaryJsonValue &v, char *dest, bool compressed);
+};
+
+class Entry {
+public:
+ Value value;
+ // key
+ // value data follows key
+
+ uint size() const
+ {
+ uint s = sizeof(Entry);
+ if (value.latinKey)
+ s += shallowLatin1Key().byteSize();
+ else
+ s += shallowKey().byteSize();
+ return alignedSize(s);
+ }
+
+ uint usedStorage(Base *b) const
+ {
+ return size() + value.usedStorage(b);
+ }
+
+ String shallowKey() const
+ {
+ Q_ASSERT(!value.latinKey);
+ return String(reinterpret_cast<const char *>(this) + sizeof(Entry));
+ }
+
+ Latin1String shallowLatin1Key() const
+ {
+ Q_ASSERT(value.latinKey);
+ return Latin1String(reinterpret_cast<const char *>(this) + sizeof(Entry));
+ }
+
+ QString key() const
+ {
+ return value.latinKey
+ ? shallowLatin1Key().toString()
+ : shallowKey().toString();
+ }
+
+ bool isValid(uint maxSize) const
+ {
+ if (maxSize < sizeof(Entry))
+ return false;
+ maxSize -= sizeof(Entry);
+ return value.latinKey
+ ? shallowLatin1Key().isValid(maxSize)
+ : shallowKey().isValid(maxSize);
+ }
+
+ bool operator ==(QStringView key) const
+ {
+ return value.latinKey
+ ? (shallowLatin1Key().toQLatin1String() == key)
+ : (shallowKey() == key);
+ }
+
+ bool operator >=(QStringView key) const
+ {
+ return value.latinKey
+ ? (shallowLatin1Key().toQLatin1String() >= key)
+ : (shallowKey().toString() >= key);
+ }
+};
+
+class Header {
+public:
+ qle_uint tag; // 'qbjs'
+ qle_uint version; // 1
+ Base *root() { return reinterpret_cast<Base *>(this + 1); }
+ const Base *root() const { return reinterpret_cast<const Base *>(this + 1); }
+};
+
+class ConstData
+{
+ Q_DISABLE_COPY_MOVE(ConstData)
+public:
+ const uint alloc;
+ union {
+ const char *rawData;
+ const Header *header;
+ };
+
+ ConstData(const char *raw, uint a) : alloc(a), rawData(raw) {}
+ bool isValid() const;
+ QJsonDocument toJsonDocument() const;
+};
+
+class MutableData
+{
+ Q_DISABLE_COPY_MOVE(MutableData)
+public:
+ QAtomicInt ref;
+ uint alloc;
+ union {
+ char *rawData;
+ Header *header;
+ };
+ uint compactionCounter : 31;
+
+ MutableData(char *raw, uint a)
+ : alloc(a), rawData(raw), compactionCounter(0)
+ {
+ }
+
+ MutableData(uint reserved, QJsonValue::Type valueType)
+ : rawData(nullptr), compactionCounter(0)
+ {
+ Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object);
+
+ alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset);
+ header = reinterpret_cast<Header *>(malloc(alloc));
+ Q_CHECK_PTR(header);
+ header->tag = QJsonDocument::BinaryFormatTag;
+ header->version = 1;
+ Base *b = header->root();
+ b->size = sizeof(Base);
+ b->is_object = (valueType == QJsonValue::Object);
+ b->tableOffset = sizeof(Base);
+ b->length = 0;
+ }
+
+ ~MutableData()
+ {
+ free(rawData);
+ }
+
+ MutableData *clone(const Base *b, uint reserve = 0)
+ {
+ uint size = sizeof(Header) + b->size;
+ if (b == header->root() && ref.loadRelaxed() == 1 && alloc >= size + reserve)
+ return this;
+
+ if (reserve) {
+ if (reserve < 128)
+ reserve = 128;
+ size = qMax(size + reserve, qMin(size *2, uint(Value::MaxSize)));
+ if (size > Value::MaxSize) {
+ qWarning("QJson: Document too large to store in data structure");
+ return nullptr;
+ }
+ }
+ char *raw = reinterpret_cast<char *>(malloc(size));
+ Q_CHECK_PTR(raw);
+ memcpy(raw + sizeof(Header), b, b->size);
+ auto *h = reinterpret_cast<Header *>(raw);
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ auto *d = new MutableData(raw, size);
+ d->compactionCounter = (b == header->root()) ? compactionCounter : 0;
+ return d;
+ }
+
+ char *takeRawData(uint *size)
+ {
+ *size = alloc;
+ char *result = rawData;
+ rawData = nullptr;
+ alloc = 0;
+ return result;
+ }
+
+ void compact();
+};
+
+} // namespace QBinaryJsonPrivate
+
+Q_DECLARE_TYPEINFO(QBinaryJsonPrivate::Value, Q_PRIMITIVE_TYPE);
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSON_P_H
diff --git a/src/corelib/serialization/qbinaryjsonarray.cpp b/src/corelib/serialization/qbinaryjsonarray.cpp
new file mode 100644
index 0000000000..68937fe17d
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonarray.cpp
@@ -0,0 +1,137 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonarray_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonarray.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonArray::~QBinaryJsonArray()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonArray QBinaryJsonArray::fromJsonArray(const QJsonArray &array)
+{
+ QBinaryJsonArray binary;
+ for (const QJsonValue &value : array)
+ binary.append(QBinaryJsonValue::fromJsonValue(value));
+ if (binary.d) // We want to compact it as it is a root item now
+ binary.d->compactionCounter++;
+ binary.compact();
+ return binary;
+}
+
+void QBinaryJsonArray::append(const QBinaryJsonValue &value)
+{
+ const uint i = a ? a->length : 0;
+
+ bool compressed;
+ uint valueSize = QBinaryJsonPrivate::Value::requiredStorage(value, &compressed);
+
+ if (!detach(valueSize + sizeof(QBinaryJsonPrivate::Value)))
+ return;
+
+ if (!a->length)
+ a->tableOffset = sizeof(QBinaryJsonPrivate::Array);
+
+ uint valueOffset = a->reserveSpace(valueSize, i, 1, false);
+ if (!valueOffset)
+ return;
+
+ QBinaryJsonPrivate::Value *v = a->at(i);
+ v->type = (value.t == QJsonValue::Undefined ? QJsonValue::Null : value.t);
+ v->latinOrIntValue = compressed;
+ v->latinKey = false;
+ v->value = QBinaryJsonPrivate::Value::valueToStore(value, valueOffset);
+ if (valueSize) {
+ QBinaryJsonPrivate::Value::copyData(value, reinterpret_cast<char *>(a) + valueOffset,
+ compressed);
+ }
+}
+
+char *QBinaryJsonArray::takeRawData(uint *size)
+{
+ if (d)
+ return d->takeRawData(size);
+ *size = 0;
+ return nullptr;
+}
+
+bool QBinaryJsonArray::detach(uint reserve)
+{
+ if (!d) {
+ if (reserve >= QBinaryJsonPrivate::Value::MaxSize) {
+ qWarning("QBinaryJson: Document too large to store in data structure");
+ return false;
+ }
+ d = new QBinaryJsonPrivate::MutableData(reserve, QJsonValue::Array);
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+ d->ref.ref();
+ return true;
+ }
+ if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ return true;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(a, reserve);
+ if (!x)
+ return false;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+ return true;
+}
+
+void QBinaryJsonArray::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ a = static_cast<QBinaryJsonPrivate::Array *>(d->header->root());
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/corelib/serialization/qbinaryjsonarray_p.h b/src/corelib/serialization/qbinaryjsonarray_p.h
new file mode 100644
index 0000000000..2bb8fed387
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonarray_p.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONARRAY_P_H
+#define QBINARYJSONARRAY_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qbinaryjsonvalue_p.h"
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonArray
+{
+ Q_DISABLE_COPY(QBinaryJsonArray)
+public:
+ QBinaryJsonArray() = default;
+ ~QBinaryJsonArray();
+
+ QBinaryJsonArray(QBinaryJsonArray &&other) noexcept
+ : d(other.d),
+ a(other.a)
+ {
+ other.d = nullptr;
+ other.a = nullptr;
+ }
+
+ QBinaryJsonArray &operator =(QBinaryJsonArray &&other) noexcept
+ {
+ qSwap(d, other.d);
+ qSwap(a, other.a);
+ return *this;
+ }
+
+ static QBinaryJsonArray fromJsonArray(const QJsonArray &array);
+ char *takeRawData(uint *size);
+
+private:
+ friend class QBinaryJsonValue;
+
+ void append(const QBinaryJsonValue &value);
+ void compact();
+ bool detach(uint reserve = 0);
+
+ QBinaryJsonPrivate::MutableData *d = nullptr;
+ QBinaryJsonPrivate::Array *a = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONARRAY_P_H
diff --git a/src/corelib/serialization/qbinaryjsonobject.cpp b/src/corelib/serialization/qbinaryjsonobject.cpp
new file mode 100644
index 0000000000..3186ab6087
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonobject.cpp
@@ -0,0 +1,149 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonobject.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonObject::~QBinaryJsonObject()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonObject QBinaryJsonObject::fromJsonObject(const QJsonObject &object)
+{
+ QBinaryJsonObject binary;
+ for (auto it = object.begin(), end = object.end(); it != end; ++it)
+ binary.insert(it.key(), QBinaryJsonValue::fromJsonValue(it.value()));
+ if (binary.d) // We want to compact it as it is a root item now
+ binary.d->compactionCounter++;
+ binary.compact();
+ return binary;
+}
+
+void QBinaryJsonObject::insert(const QString &key, const QBinaryJsonValue &value)
+{
+ bool latinOrIntValue;
+ uint valueSize = QBinaryJsonPrivate::Value::requiredStorage(value, &latinOrIntValue);
+
+ bool latinKey = QBinaryJsonPrivate::useCompressed(key);
+ uint valueOffset = sizeof(QBinaryJsonPrivate::Entry)
+ + QBinaryJsonPrivate::qStringSize(key, latinKey);
+ uint requiredSize = valueOffset + valueSize;
+
+ if (!detach(requiredSize + sizeof(QBinaryJsonPrivate::offset))) // offset for the new index entry
+ return;
+
+ if (!o->length)
+ o->tableOffset = sizeof(QBinaryJsonPrivate::Object);
+
+ bool keyExists = false;
+ uint pos = o->indexOf(key, &keyExists);
+ if (keyExists)
+ ++d->compactionCounter;
+
+ uint off = o->reserveSpace(requiredSize, pos, 1, keyExists);
+ if (!off)
+ return;
+
+ QBinaryJsonPrivate::Entry *e = o->entryAt(pos);
+ e->value.type = value.t;
+ e->value.latinKey = latinKey;
+ e->value.latinOrIntValue = latinOrIntValue;
+ e->value.value = QBinaryJsonPrivate::Value::valueToStore(
+ value, reinterpret_cast<char *>(e) - reinterpret_cast<char *>(o) + valueOffset);
+ QBinaryJsonPrivate::copyString(reinterpret_cast<char *>(e + 1), key, latinKey);
+ if (valueSize) {
+ QBinaryJsonPrivate::Value::copyData(value, reinterpret_cast<char *>(e) + valueOffset,
+ latinOrIntValue);
+ }
+
+ if (d->compactionCounter > 32U && d->compactionCounter >= unsigned(o->length) / 2U)
+ compact();
+}
+
+char *QBinaryJsonObject::takeRawData(uint *size) const
+{
+ if (d)
+ return d->takeRawData(size);
+ *size = 0;
+ return nullptr;
+}
+
+bool QBinaryJsonObject::detach(uint reserve)
+{
+ if (!d) {
+ if (reserve >= QBinaryJsonPrivate::Value::MaxSize) {
+ qWarning("QBinaryJson: Document too large to store in data structure");
+ return false;
+ }
+ d = new QBinaryJsonPrivate::MutableData(reserve, QJsonValue::Object);
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+ d->ref.ref();
+ return true;
+ }
+ if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ return true;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(o, reserve);
+ if (!x)
+ return false;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+ return true;
+}
+
+void QBinaryJsonObject::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ o = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjsonobject_p.h b/src/corelib/serialization/qbinaryjsonobject_p.h
new file mode 100644
index 0000000000..c0991ac339
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonobject_p.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONOBJECT_H
+#define QBINARYJSONOBJECT_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qbinaryjsonvalue_p.h"
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonObject
+{
+ Q_DISABLE_COPY(QBinaryJsonObject)
+public:
+ QBinaryJsonObject() = default;
+ ~QBinaryJsonObject();
+
+ QBinaryJsonObject(QBinaryJsonObject &&other) noexcept
+ : d(other.d), o(other.o)
+ {
+ other.d = nullptr;
+ other.o = nullptr;
+ }
+
+ QBinaryJsonObject &operator =(QBinaryJsonObject &&other) noexcept
+ {
+ qSwap(d, other.d);
+ qSwap(o, other.o);
+ return *this;
+ }
+
+ static QBinaryJsonObject fromJsonObject(const QJsonObject &object);
+ char *takeRawData(uint *size) const;
+
+private:
+ friend class QBinaryJsonValue;
+
+ void insert(const QString &key, const QBinaryJsonValue &value);
+ bool detach(uint reserve = 0);
+ void compact();
+
+ QBinaryJsonPrivate::MutableData *d = nullptr;
+ QBinaryJsonPrivate::Object *o = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONOBJECT_P_H
diff --git a/src/corelib/serialization/qbinaryjsonvalue.cpp b/src/corelib/serialization/qbinaryjsonvalue.cpp
new file mode 100644
index 0000000000..5e3a01ad38
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonvalue.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjsonvalue_p.h"
+#include "qbinaryjsonarray_p.h"
+#include "qbinaryjson_p.h"
+
+#include <qjsonarray.h>
+#include <qjsonobject.h>
+
+QT_BEGIN_NAMESPACE
+
+QBinaryJsonValue::QBinaryJsonValue(QBinaryJsonPrivate::MutableData *data,
+ QBinaryJsonPrivate::Base *parent,
+ const QBinaryJsonPrivate::Value &v)
+ : t(QJsonValue::Type(uint(v.type)))
+{
+ switch (t) {
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ dbl = 0;
+ break;
+ case QJsonValue::Bool:
+ b = v.toBoolean();
+ break;
+ case QJsonValue::Double:
+ dbl = v.toDouble(parent);
+ break;
+ case QJsonValue::String: {
+ QString s = v.toString(parent);
+ stringData = s.data_ptr();
+ stringData->ref.ref();
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ d = data;
+ base = v.base(parent);
+ break;
+ }
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(QString string)
+ : stringData(*reinterpret_cast<QStringData **>(&string)), t(QJsonValue::String)
+{
+ stringData->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(const QBinaryJsonArray &a)
+ : base(a.a), d(a.d), t(QJsonValue::Array)
+{
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::QBinaryJsonValue(const QBinaryJsonObject &o)
+ : base(o.o), d(o.d), t(QJsonValue::Object)
+{
+ if (d)
+ d->ref.ref();
+}
+
+QBinaryJsonValue::~QBinaryJsonValue()
+{
+ if (t == QJsonValue::String && stringData && !stringData->ref.deref())
+ free(stringData);
+
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+QBinaryJsonValue QBinaryJsonValue::fromJsonValue(const QJsonValue &json)
+{
+ switch (json.type()) {
+ case QJsonValue::Bool:
+ return QBinaryJsonValue(json.toBool());
+ case QJsonValue::Double:
+ return QBinaryJsonValue(json.toDouble());
+ case QJsonValue::String:
+ return QBinaryJsonValue(json.toString());
+ case QJsonValue::Array:
+ return QBinaryJsonArray::fromJsonArray(json.toArray());
+ case QJsonValue::Object:
+ return QBinaryJsonObject::fromJsonObject(json.toObject());
+ case QJsonValue::Null:
+ return QBinaryJsonValue(QJsonValue::Null);
+ case QJsonValue::Undefined:
+ return QBinaryJsonValue(QJsonValue::Undefined);
+ }
+ Q_UNREACHABLE();
+ return QBinaryJsonValue(QJsonValue::Null);
+}
+
+QString QBinaryJsonValue::toString() const
+{
+ if (t != QJsonValue::String)
+ return QString();
+ stringData->ref.ref(); // the constructor below doesn't add a ref.
+ QStringDataPtr holder = { stringData };
+ return QString(holder);
+}
+
+void QBinaryJsonValue::detach()
+{
+ if (!d)
+ return;
+
+ QBinaryJsonPrivate::MutableData *x = d->clone(base);
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ base = static_cast<QBinaryJsonPrivate::Object *>(d->header->root());
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qbinaryjsonvalue_p.h b/src/corelib/serialization/qbinaryjsonvalue_p.h
new file mode 100644
index 0000000000..498fc62ecd
--- /dev/null
+++ b/src/corelib/serialization/qbinaryjsonvalue_p.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QBINARYJSONVALUE_P_H
+#define QBINARYJSONVALUE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qjsonvalue.h>
+
+QT_REQUIRE_CONFIG(binaryjson);
+
+QT_BEGIN_NAMESPACE
+
+class QBinaryJsonArray;
+class QBinaryJsonObject;
+
+namespace QBinaryJsonPrivate {
+class ConstData;
+class MutableData;
+class Base;
+class Value;
+class Object;
+class Array;
+}
+
+class Q_CORE_EXPORT QBinaryJsonValue
+{
+ Q_DISABLE_COPY(QBinaryJsonValue)
+public:
+ explicit QBinaryJsonValue(QJsonValue::Type type) : ui(0), t(type) {}
+ explicit QBinaryJsonValue(bool b) : b(b), t(QJsonValue::Bool) {}
+ explicit QBinaryJsonValue(double n) : dbl(n), t(QJsonValue::Double) {}
+ explicit QBinaryJsonValue(QString s);
+ QBinaryJsonValue(const QBinaryJsonArray &a);
+ QBinaryJsonValue(const QBinaryJsonObject &o);
+
+ ~QBinaryJsonValue();
+
+ QBinaryJsonValue(QBinaryJsonValue &&other) noexcept
+ : ui(other.ui),
+ d(other.d),
+ t(other.t)
+ {
+ other.ui = 0;
+ other.d = nullptr;
+ other.t = QJsonValue::Null;
+ }
+
+ QBinaryJsonValue &operator =(QBinaryJsonValue &&other) noexcept
+ {
+ qSwap(ui, other.ui);
+ qSwap(d, other.d);
+ qSwap(t, other.t);
+ return *this;
+ }
+
+ static QBinaryJsonValue fromJsonValue(const QJsonValue &json);
+ QJsonValue::Type type() const { return t; }
+ bool toBool() const { return (t == QJsonValue::Bool) && b; }
+ double toDouble() const { return (t == QJsonValue::Double) ? dbl : 0; }
+ QString toString() const;
+
+private:
+ friend class QBinaryJsonPrivate::Value;
+ friend class QBinaryJsonArray;
+ friend class QBinaryJsonObject;
+
+ QBinaryJsonValue(QBinaryJsonPrivate::MutableData *d, QBinaryJsonPrivate::Base *parent,
+ const QBinaryJsonPrivate::Value &v);
+
+ void detach();
+
+ union {
+ quint64 ui;
+ bool b;
+ double dbl;
+ QStringData *stringData;
+ const QBinaryJsonPrivate::Base *base;
+ };
+ QBinaryJsonPrivate::MutableData *d = nullptr; // needed for Objects and Arrays
+ QJsonValue::Type t = QJsonValue::Null;
+};
+
+QT_END_NAMESPACE
+
+#endif // QBINARYJSONVALUE_P_H
diff --git a/src/corelib/serialization/qcborstream.cpp b/src/corelib/serialization/qcborstream.cpp
index c598eee213..a232f7eef7 100644
--- a/src/corelib/serialization/qcborstream.cpp
+++ b/src/corelib/serialization/qcborstream.cpp
@@ -166,21 +166,6 @@ Q_STATIC_ASSERT(int(QCborStreamReader::Invalid) == CborInvalidType);
QCborStreamReader::toSimpleType(), QCborValue::isSimpleType(), QCborValue::toSimpleType()
*/
-Q_CORE_EXPORT const char *qt_cbor_simpletype_id(QCborSimpleType st)
-{
- switch (st) {
- case QCborSimpleType::False:
- return "False";
- case QCborSimpleType::True:
- return "True";
- case QCborSimpleType::Null:
- return "Null";
- case QCborSimpleType::Undefined:
- return "Undefined";
- }
- return nullptr;
-}
-
#if !defined(QT_NO_DATASTREAM)
QDataStream &operator<<(QDataStream &ds, QCborSimpleType st)
{
@@ -196,18 +181,6 @@ QDataStream &operator>>(QDataStream &ds, QCborSimpleType &st)
}
#endif
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborSimpleType st)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_simpletype_id(st);
- if (id)
- return dbg.nospace() << "QCborSimpleType::" << id;
-
- return dbg.nospace() << "QCborSimpleType(" << uint(st) << ')';
-}
-#endif
-
/*!
\enum QCborTag
\relates <QtCborCommon>
@@ -230,79 +203,6 @@ QDebug operator<<(QDebug dbg, QCborSimpleType st)
QCborValue::isTag(), QCborValue::tag()
*/
-Q_CORE_EXPORT const char *qt_cbor_tag_id(QCborTag tag)
-{
- // Casting to QCborKnownTags's underlying type will make the comparison
- // below fail if the tag value is out of range.
- auto n = std::underlying_type<QCborKnownTags>::type(tag);
- if (QCborTag(n) == tag) {
- switch (QCborKnownTags(n)) {
- case QCborKnownTags::DateTimeString:
- return "DateTimeString";
- case QCborKnownTags::UnixTime_t:
- return "UnixTime_t";
- case QCborKnownTags::PositiveBignum:
- return "PositiveBignum";
- case QCborKnownTags::NegativeBignum:
- return "NegativeBignum";
- case QCborKnownTags::Decimal:
- return "Decimal";
- case QCborKnownTags::Bigfloat:
- return "Bigfloat";
- case QCborKnownTags::COSE_Encrypt0:
- return "COSE_Encrypt0";
- case QCborKnownTags::COSE_Mac0:
- return "COSE_Mac0";
- case QCborKnownTags::COSE_Sign1:
- return "COSE_Sign1";
- case QCborKnownTags::ExpectedBase64url:
- return "ExpectedBase64url";
- case QCborKnownTags::ExpectedBase64:
- return "ExpectedBase64";
- case QCborKnownTags::ExpectedBase16:
- return "ExpectedBase16";
- case QCborKnownTags::EncodedCbor:
- return "EncodedCbor";
- case QCborKnownTags::Url:
- return "Url";
- case QCborKnownTags::Base64url:
- return "Base64url";
- case QCborKnownTags::Base64:
- return "Base64";
- case QCborKnownTags::RegularExpression:
- return "RegularExpression";
- case QCborKnownTags::MimeMessage:
- return "MimeMessage";
- case QCborKnownTags::Uuid:
- return "Uuid";
- case QCborKnownTags::COSE_Encrypt:
- return "COSE_Encrypt";
- case QCborKnownTags::COSE_Mac:
- return "COSE_Mac";
- case QCborKnownTags::COSE_Sign:
- return "COSE_Sign";
- case QCborKnownTags::Signature:
- return "Signature";
- }
- }
- return nullptr;
-}
-
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborTag tag)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_tag_id(tag);
- dbg.nospace() << "QCborTag(";
- if (id)
- dbg.nospace() << "QCborKnownTags::" << id;
- else
- dbg.nospace() << quint64(tag);
-
- return dbg << ')';
-}
-#endif
-
/*!
\enum QCborKnownTags
\relates <QtCborCommon>
@@ -381,18 +281,6 @@ QDebug operator<<(QDebug dbg, QCborTag tag)
QCborValue::isTag(), QCborValue::tag()
*/
-#if !defined(QT_NO_DEBUG_STREAM)
-QDebug operator<<(QDebug dbg, QCborKnownTags tag)
-{
- QDebugStateSaver saver(dbg);
- const char *id = qt_cbor_tag_id(QCborTag(int(tag)));
- if (id)
- return dbg.nospace() << "QCborKnownTags::" << id;
-
- return dbg.nospace() << "QCborKnownTags(" << int(tag) << ')';
-}
-#endif
-
/*!
\class QCborError
\inmodule QtCore
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp
index b77cfd5c70..c2f670de06 100644
--- a/src/corelib/serialization/qcborvalue.cpp
+++ b/src/corelib/serialization/qcborvalue.cpp
@@ -2976,6 +2976,112 @@ QDebug operator<<(QDebug dbg, const QCborValue &v)
dbg.nospace() << "QCborValue(";
return debugContents(dbg, v) << ')';
}
+
+Q_CORE_EXPORT const char *qt_cbor_simpletype_id(QCborSimpleType st)
+{
+ switch (st) {
+ case QCborSimpleType::False:
+ return "False";
+ case QCborSimpleType::True:
+ return "True";
+ case QCborSimpleType::Null:
+ return "Null";
+ case QCborSimpleType::Undefined:
+ return "Undefined";
+ }
+ return nullptr;
+}
+
+QDebug operator<<(QDebug dbg, QCborSimpleType st)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_simpletype_id(st);
+ if (id)
+ return dbg.nospace() << "QCborSimpleType::" << id;
+
+ return dbg.nospace() << "QCborSimpleType(" << uint(st) << ')';
+}
+
+Q_CORE_EXPORT const char *qt_cbor_tag_id(QCborTag tag)
+{
+ // Casting to QCborKnownTags's underlying type will make the comparison
+ // below fail if the tag value is out of range.
+ auto n = std::underlying_type<QCborKnownTags>::type(tag);
+ if (QCborTag(n) == tag) {
+ switch (QCborKnownTags(n)) {
+ case QCborKnownTags::DateTimeString:
+ return "DateTimeString";
+ case QCborKnownTags::UnixTime_t:
+ return "UnixTime_t";
+ case QCborKnownTags::PositiveBignum:
+ return "PositiveBignum";
+ case QCborKnownTags::NegativeBignum:
+ return "NegativeBignum";
+ case QCborKnownTags::Decimal:
+ return "Decimal";
+ case QCborKnownTags::Bigfloat:
+ return "Bigfloat";
+ case QCborKnownTags::COSE_Encrypt0:
+ return "COSE_Encrypt0";
+ case QCborKnownTags::COSE_Mac0:
+ return "COSE_Mac0";
+ case QCborKnownTags::COSE_Sign1:
+ return "COSE_Sign1";
+ case QCborKnownTags::ExpectedBase64url:
+ return "ExpectedBase64url";
+ case QCborKnownTags::ExpectedBase64:
+ return "ExpectedBase64";
+ case QCborKnownTags::ExpectedBase16:
+ return "ExpectedBase16";
+ case QCborKnownTags::EncodedCbor:
+ return "EncodedCbor";
+ case QCborKnownTags::Url:
+ return "Url";
+ case QCborKnownTags::Base64url:
+ return "Base64url";
+ case QCborKnownTags::Base64:
+ return "Base64";
+ case QCborKnownTags::RegularExpression:
+ return "RegularExpression";
+ case QCborKnownTags::MimeMessage:
+ return "MimeMessage";
+ case QCborKnownTags::Uuid:
+ return "Uuid";
+ case QCborKnownTags::COSE_Encrypt:
+ return "COSE_Encrypt";
+ case QCborKnownTags::COSE_Mac:
+ return "COSE_Mac";
+ case QCborKnownTags::COSE_Sign:
+ return "COSE_Sign";
+ case QCborKnownTags::Signature:
+ return "Signature";
+ }
+ }
+ return nullptr;
+}
+
+QDebug operator<<(QDebug dbg, QCborTag tag)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_tag_id(tag);
+ dbg.nospace() << "QCborTag(";
+ if (id)
+ dbg.nospace() << "QCborKnownTags::" << id;
+ else
+ dbg.nospace() << quint64(tag);
+
+ return dbg << ')';
+}
+
+QDebug operator<<(QDebug dbg, QCborKnownTags tag)
+{
+ QDebugStateSaver saver(dbg);
+ const char *id = qt_cbor_tag_id(QCborTag(int(tag)));
+ if (id)
+ return dbg.nospace() << "QCborKnownTags::" << id;
+
+ return dbg.nospace() << "QCborKnownTags(" << int(tag) << ')';
+}
#endif
#ifndef QT_NO_DATASTREAM
@@ -3003,4 +3109,6 @@ QT_END_NAMESPACE
#include "qcborarray.cpp"
#include "qcbormap.cpp"
+#ifndef QT_NO_QOBJECT
#include "moc_qcborvalue.cpp"
+#endif
diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h
index accd0fae8a..9c613dfcfb 100644
--- a/src/corelib/serialization/qcborvalue.h
+++ b/src/corelib/serialization/qcborvalue.h
@@ -71,6 +71,8 @@ class QCborStreamReader;
class QCborStreamWriter;
class QDataStream;
+namespace QJsonPrivate { class Value; }
+
struct QCborParserError
{
qint64 offset = 0;
@@ -301,6 +303,8 @@ public:
private:
friend class QCborValueRef;
friend class QCborContainerPrivate;
+ friend class QJsonPrivate::Value;
+
qint64 n = 0;
QCborContainerPrivate *container = nullptr;
Type t = Undefined;
diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h
index 590c2d6e05..d18d108969 100644
--- a/src/corelib/serialization/qcborvalue_p.h
+++ b/src/corelib/serialization/qcborvalue_p.h
@@ -147,8 +147,8 @@ public:
qptrdiff offset = data.size();
// align offset
- offset += Q_ALIGNOF(QtCbor::ByteData) - 1;
- offset &= ~(Q_ALIGNOF(QtCbor::ByteData) - 1);
+ offset += alignof(QtCbor::ByteData) - 1;
+ offset &= ~(alignof(QtCbor::ByteData) - 1);
qptrdiff increment = qptrdiff(sizeof(QtCbor::ByteData)) + len;
@@ -170,7 +170,7 @@ public:
return nullptr;
size_t offset = size_t(e.value);
- Q_ASSERT((offset % Q_ALIGNOF(QtCbor::ByteData)) == 0);
+ Q_ASSERT((offset % alignof(QtCbor::ByteData)) == 0);
Q_ASSERT(offset + sizeof(QtCbor::ByteData) <= size_t(data.size()));
auto b = reinterpret_cast<const QtCbor::ByteData *>(data.constData() + offset);
@@ -215,7 +215,7 @@ public:
}
void insertAt(qsizetype idx, const QCborValue &value, ContainerDisposition disp = CopyContainer)
{
- replaceAt_internal(*elements.insert(elements.begin() + idx, {}), value, disp);
+ replaceAt_internal(*elements.insert(elements.begin() + int(idx), {}), value, disp);
}
void append(QtCbor::Undefined)
diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h
index bcfcd47ccf..20d3953652 100644
--- a/src/corelib/serialization/qdatastream.h
+++ b/src/corelib/serialization/qdatastream.h
@@ -389,18 +389,6 @@ typename std::enable_if<std::is_enum<T>::value, QDataStream &>::type&
operator>>(QDataStream &s, T &t)
{ return s >> reinterpret_cast<typename std::underlying_type<T>::type &>(t); }
-template <typename T>
-inline QDataStream &operator>>(QDataStream &s, QList<T> &l)
-{
- return QtPrivate::readArrayBasedContainer(s, l);
-}
-
-template <typename T>
-inline QDataStream &operator<<(QDataStream &s, const QList<T> &l)
-{
- return QtPrivate::writeSequentialContainer(s, l);
-}
-
template<typename T>
inline QDataStream &operator>>(QDataStream &s, QVector<T> &v)
{
diff --git a/src/corelib/serialization/qjson.cpp b/src/corelib/serialization/qjson.cpp
deleted file mode 100644
index 76f1eae1ce..0000000000
--- a/src/corelib/serialization/qjson.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qjson_p.h"
-#include <qalgorithms.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace QJsonPrivate
-{
-
-static Q_CONSTEXPR Base emptyArray = { { qle_uint(sizeof(Base)) }, { 0 }, { qle_uint(0) } };
-static Q_CONSTEXPR Base emptyObject = { { qle_uint(sizeof(Base)) }, { qToLittleEndian(1u) }, { qle_uint(0) } };
-
-void Data::compact()
-{
- Q_ASSERT(sizeof(Value) == sizeof(offset));
-
- if (!compactionCounter)
- return;
-
- Base *base = header->root();
- int reserve = 0;
- if (base->is_object) {
- Object *o = static_cast<Object *>(base);
- for (int i = 0; i < (int)o->length; ++i)
- reserve += o->entryAt(i)->usedStorage(o);
- } else {
- Array *a = static_cast<Array *>(base);
- for (int i = 0; i < (int)a->length; ++i)
- reserve += (*a)[i].usedStorage(a);
- }
-
- int size = sizeof(Base) + reserve + base->length*sizeof(offset);
- int alloc = sizeof(Header) + size;
- Header *h = (Header *) malloc(alloc);
- Q_CHECK_PTR(h);
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1;
- Base *b = h->root();
- b->size = size;
- b->is_object = header->root()->is_object;
- b->length = base->length;
- b->tableOffset = reserve + sizeof(Array);
-
- int offset = sizeof(Base);
- if (b->is_object) {
- Object *o = static_cast<Object *>(base);
- Object *no = static_cast<Object *>(b);
-
- for (int i = 0; i < (int)o->length; ++i) {
- no->table()[i] = offset;
-
- const Entry *e = o->entryAt(i);
- Entry *ne = no->entryAt(i);
- int s = e->size();
- memcpy(ne, e, s);
- offset += s;
- int dataSize = e->value.usedStorage(o);
- if (dataSize) {
- memcpy((char *)no + offset, e->value.data(o), dataSize);
- ne->value.value = offset;
- offset += dataSize;
- }
- }
- } else {
- Array *a = static_cast<Array *>(base);
- Array *na = static_cast<Array *>(b);
-
- for (int i = 0; i < (int)a->length; ++i) {
- const Value &v = (*a)[i];
- Value &nv = (*na)[i];
- nv = v;
- int dataSize = v.usedStorage(a);
- if (dataSize) {
- memcpy((char *)na + offset, v.data(a), dataSize);
- nv.value = offset;
- offset += dataSize;
- }
- }
- }
- Q_ASSERT(offset == (int)b->tableOffset);
-
- free(header);
- header = h;
- this->alloc = alloc;
- compactionCounter = 0;
-}
-
-bool Data::valid() const
-{
- if (header->tag != QJsonDocument::BinaryFormatTag || header->version != 1u)
- return false;
-
- bool res = false;
- Base *root = header->root();
- int maxSize = alloc - sizeof(Header);
- if (root->is_object)
- res = static_cast<Object *>(root)->isValid(maxSize);
- else
- res = static_cast<Array *>(root)->isValid(maxSize);
-
- return res;
-}
-
-
-int Base::reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace)
-{
- Q_ASSERT(posInTable >= 0 && posInTable <= (int)length);
- if (size + dataSize >= Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure %d %d %d", (uint)size, dataSize, Value::MaxSize);
- return 0;
- }
-
- offset off = tableOffset;
- // move table to new position
- if (replace) {
- memmove((char *)(table()) + dataSize, table(), length*sizeof(offset));
- } else {
- memmove((char *)(table() + posInTable + numItems) + dataSize, table() + posInTable, (length - posInTable)*sizeof(offset));
- memmove((char *)(table()) + dataSize, table(), posInTable*sizeof(offset));
- }
- tableOffset += dataSize;
- for (int i = 0; i < (int)numItems; ++i)
- table()[posInTable + i] = off;
- size += dataSize;
- if (!replace) {
- length += numItems;
- size += numItems * sizeof(offset);
- }
- return off;
-}
-
-void Base::removeItems(int pos, int numItems)
-{
- Q_ASSERT(pos >= 0 && pos <= (int)length);
- if (pos + numItems < (int)length)
- memmove(table() + pos, table() + pos + numItems, (length - pos - numItems)*sizeof(offset));
- length -= numItems;
-}
-
-int Object::indexOf(QStringView key, bool *exists) const
-{
- int min = 0;
- int n = length;
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= key) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
- }
- }
- if (min < (int)length && *entryAt(min) == key) {
- *exists = true;
- return min;
- }
- *exists = false;
- return min;
-}
-
-int Object::indexOf(QLatin1String key, bool *exists) const
-{
- int min = 0;
- int n = length;
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= key) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
- }
- }
- if (min < (int)length && *entryAt(min) == key) {
- *exists = true;
- return min;
- }
- *exists = false;
- return min;
-}
-
-bool Object::isValid(int maxSize) const
-{
- if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
- return false;
-
- QString lastKey;
- for (uint i = 0; i < length; ++i) {
- offset entryOffset = table()[i];
- if (entryOffset + sizeof(Entry) >= tableOffset)
- return false;
- Entry *e = entryAt(i);
- if (!e->isValid(tableOffset - table()[i]))
- return false;
- QString key = e->key();
- if (key < lastKey)
- return false;
- if (!e->value.isValid(this))
- return false;
- lastKey = key;
- }
- return true;
-}
-
-
-
-bool Array::isValid(int maxSize) const
-{
- if (size > (uint)maxSize || tableOffset + length*sizeof(offset) > size)
- return false;
-
- for (uint i = 0; i < length; ++i) {
- if (!at(i).isValid(this))
- return false;
- }
- return true;
-}
-
-
-bool Entry::operator ==(QStringView key) const
-{
- if (value.latinKey)
- return (shallowLatin1Key() == key);
- else
- return (shallowKey() == key);
-}
-
-bool Entry::operator==(QLatin1String key) const
-{
- if (value.latinKey)
- return shallowLatin1Key() == key;
- else
- return shallowKey() == QString(key); // ### conversion to QString
-}
-
-bool Entry::operator ==(const Entry &other) const
-{
- if (value.latinKey) {
- if (other.value.latinKey)
- return shallowLatin1Key() == other.shallowLatin1Key();
- return shallowLatin1Key() == other.shallowKey();
- } else if (other.value.latinKey) {
- return shallowKey() == other.shallowLatin1Key();
- }
- return shallowKey() == other.shallowKey();
-}
-
-bool Entry::operator >=(const Entry &other) const
-{
- if (value.latinKey) {
- if (other.value.latinKey)
- return shallowLatin1Key() >= other.shallowLatin1Key();
- return shallowLatin1Key() >= other.shallowKey();
- } else if (other.value.latinKey) {
- return shallowKey() >= other.shallowLatin1Key();
- }
- return shallowKey() >= other.shallowKey();
-}
-
-
-int Value::usedStorage(const Base *b) const
-{
- int s = 0;
- switch (type) {
- case QJsonValue::Double:
- if (latinOrIntValue)
- break;
- s = sizeof(double);
- break;
- case QJsonValue::String: {
- char *d = data(b);
- if (latinOrIntValue)
- s = sizeof(ushort) + qFromLittleEndian(*(ushort *)d);
- else
- s = sizeof(int) + sizeof(ushort) * qFromLittleEndian(*(int *)d);
- break;
- }
- case QJsonValue::Array:
- case QJsonValue::Object:
- s = base(b)->size;
- break;
- case QJsonValue::Null:
- case QJsonValue::Bool:
- default:
- break;
- }
- return alignedSize(s);
-}
-
-inline bool isValidValueOffset(uint offset, uint tableOffset)
-{
- return offset >= sizeof(Base)
- && offset + sizeof(uint) <= tableOffset;
-}
-
-bool Value::isValid(const Base *b) const
-{
- switch (type) {
- case QJsonValue::Null:
- case QJsonValue::Bool:
- return true;
- case QJsonValue::Double:
- return latinOrIntValue || isValidValueOffset(value, b->tableOffset);
- case QJsonValue::String:
- if (!isValidValueOffset(value, b->tableOffset))
- return false;
- if (latinOrIntValue)
- return asLatin1String(b).isValid(b->tableOffset - value);
- return asString(b).isValid(b->tableOffset - value);
- case QJsonValue::Array:
- return isValidValueOffset(value, b->tableOffset)
- && static_cast<Array *>(base(b))->isValid(b->tableOffset - value);
- case QJsonValue::Object:
- return isValidValueOffset(value, b->tableOffset)
- && static_cast<Object *>(base(b))->isValid(b->tableOffset - value);
- default:
- return false;
- }
-}
-
-/*!
- \internal
- */
-int Value::requiredStorage(QJsonValue &v, bool *compressed)
-{
- *compressed = false;
- switch (v.t) {
- case QJsonValue::Double:
- if (QJsonPrivate::compressedNumber(v.dbl) != INT_MAX) {
- *compressed = true;
- return 0;
- }
- return sizeof(double);
- case QJsonValue::String: {
- QString s = v.toString();
- *compressed = QJsonPrivate::useCompressed(s);
- return QJsonPrivate::qStringSize(s, *compressed);
- }
- case QJsonValue::Array:
- case QJsonValue::Object:
- if (v.d && v.d->compactionCounter) {
- v.detach();
- v.d->compact();
- v.base = static_cast<QJsonPrivate::Base *>(v.d->header->root());
- }
- return v.base ? uint(v.base->size) : sizeof(QJsonPrivate::Base);
- case QJsonValue::Undefined:
- case QJsonValue::Null:
- case QJsonValue::Bool:
- break;
- }
- return 0;
-}
-
-/*!
- \internal
- */
-uint Value::valueToStore(const QJsonValue &v, uint offset)
-{
- switch (v.t) {
- case QJsonValue::Undefined:
- case QJsonValue::Null:
- break;
- case QJsonValue::Bool:
- return v.b;
- case QJsonValue::Double: {
- int c = QJsonPrivate::compressedNumber(v.dbl);
- if (c != INT_MAX)
- return c;
- }
- Q_FALLTHROUGH();
- case QJsonValue::String:
- case QJsonValue::Array:
- case QJsonValue::Object:
- return offset;
- }
- return 0;
-}
-
-/*!
- \internal
- */
-void Value::copyData(const QJsonValue &v, char *dest, bool compressed)
-{
- switch (v.t) {
- case QJsonValue::Double:
- if (!compressed) {
- qToLittleEndian(v.ui, dest);
- }
- break;
- case QJsonValue::String: {
- QString str = v.toString();
- QJsonPrivate::copyString(dest, str, compressed);
- break;
- }
- case QJsonValue::Array:
- case QJsonValue::Object: {
- const QJsonPrivate::Base *b = v.base;
- if (!b)
- b = (v.t == QJsonValue::Array ? &emptyArray : &emptyObject);
- memcpy(dest, b, b->size);
- break;
- }
- default:
- break;
- }
-}
-
-} // namespace QJsonPrivate
-
-QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjson_p.h b/src/corelib/serialization/qjson_p.h
index 7978bed7da..d2bbf928d0 100644
--- a/src/corelib/serialization/qjson_p.h
+++ b/src/corelib/serialization/qjson_p.h
@@ -52,743 +52,170 @@
// We mean it.
//
-#include <qjsonobject.h>
#include <qjsonvalue.h>
-#include <qjsondocument.h>
-#include <qjsonarray.h>
-#include <qatomic.h>
-#include <qstring.h>
-#include <qendian.h>
-#include <qnumeric.h>
-
-#include "private/qendian_p.h"
-#include "private/qsimd_p.h"
-
-#include <limits.h>
-#include <limits>
-#include <type_traits>
+#include <qcborvalue.h>
+#include <private/qcborvalue_p.h>
QT_BEGIN_NAMESPACE
-// in qstring.cpp
-void qt_to_latin1_unchecked(uchar *dst, const ushort *uc, qsizetype len);
-void qt_from_latin1(ushort *dst, const char *str, size_t size) noexcept;
-
-/*
- This defines a binary data structure for Json data. The data structure is optimised for fast reading
- and minimum allocations. The whole data structure can be mmap'ed and used directly.
-
- In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but
- much faster to access.
-
- The size requirements are:
-
- String:
- Latin1 data: 2 bytes header + string.length()
- Full Unicode: 4 bytes header + 2*(string.length())
-
- Values: 4 bytes + size of data (size can be 0 for some data)
- bool: 0 bytes
- double: 8 bytes (0 if integer with less than 27bits)
- string: see above
- array: size of array
- object: size of object
- Array: 12 bytes + 4*length + size of Value data
- Object: 12 bytes + 8*length + size of Key Strings + size of Value data
-
- For an example such as
-
- { // object: 12 + 5*8 = 52
- "firstName": "John", // key 12, value 8 = 20
- "lastName" : "Smith", // key 12, value 8 = 20
- "age" : 25, // key 8, value 0 = 8
- "address" : // key 12, object below = 140
- { // object: 12 + 4*8
- "streetAddress": "21 2nd Street", // key 16, value 16
- "city" : "New York", // key 8, value 12
- "state" : "NY", // key 8, value 4
- "postalCode" : "10021" // key 12, value 8
- }, // object total: 128
- "phoneNumber": // key: 16, value array below = 172
- [ // array: 12 + 2*4 + values below: 156
- { // object 12 + 2*8
- "type" : "home", // key 8, value 8
- "number": "212 555-1234" // key 8, value 16
- }, // object total: 68
- { // object 12 + 2*8
- "type" : "fax", // key 8, value 8
- "number": "646 555-4567" // key 8, value 16
- } // object total: 68
- ] // array total: 156
- } // great total: 412 bytes
-
- The uncompressed text file used roughly 500 bytes, so in this case we end up using about
- the same space as the text representation.
-
- Other measurements have shown a slightly bigger binary size than a compact text
- representation where all possible whitespace was stripped out.
-*/
-#define Q_DECLARE_JSONPRIVATE_TYPEINFO(Class, Flags) } Q_DECLARE_TYPEINFO(QJsonPrivate::Class, Flags); namespace QJsonPrivate {
namespace QJsonPrivate {
-class Array;
-class Object;
-class Value;
-class Entry;
-
-template<typename T>
-using q_littleendian = QLEInteger<T>;
-
-typedef q_littleendian<short> qle_short;
-typedef q_littleendian<unsigned short> qle_ushort;
-typedef q_littleendian<int> qle_int;
-typedef q_littleendian<unsigned int> qle_uint;
-
-template<int pos, int width>
-using qle_bitfield = QLEIntegerBitfield<uint, pos, width>;
-
-template<int pos, int width>
-using qle_signedbitfield = QLEIntegerBitfield<int, pos, width>;
-
-typedef qle_uint offset;
-
-// round the size up to the next 4 byte boundary
-inline int alignedSize(int size) { return (size + 3) & ~3; }
-
-const int MaxLatin1Length = 0x7fff;
-
-static inline bool useCompressed(QStringView s)
-{
- if (s.length() > MaxLatin1Length)
- return false;
- return QtPrivate::isLatin1(s);
-}
-
-static inline bool useCompressed(QLatin1String s)
-{
- return s.size() <= MaxLatin1Length;
-}
-
-template <typename T>
-static inline int qStringSize(T string, bool compress)
-{
- int l = 2 + string.size();
- if (!compress)
- l *= 2;
- return alignedSize(l);
-}
-
-// returns INT_MAX if it can't compress it into 28 bits
-static inline int compressedNumber(double d)
-{
- // this relies on details of how ieee floats are represented
- const int exponent_off = 52;
- const quint64 fraction_mask = 0x000fffffffffffffull;
- const quint64 exponent_mask = 0x7ff0000000000000ull;
-
- quint64 val;
- memcpy (&val, &d, sizeof(double));
- int exp = (int)((val & exponent_mask) >> exponent_off) - 1023;
- if (exp < 0 || exp > 25)
- return INT_MAX;
-
- quint64 non_int = val & (fraction_mask >> exp);
- if (non_int)
- return INT_MAX;
-
- bool neg = (val >> 63) != 0;
- val &= fraction_mask;
- val |= ((quint64)1 << 52);
- int res = (int)(val >> (52 - exp));
- return neg ? -res : res;
-}
-
-class Latin1String;
-
-class String
-{
-public:
- explicit String(const char *data) { d = (Data *)data; }
-
- struct Data {
- qle_uint length;
- qle_ushort utf16[1];
- };
-
- Data *d;
-
- int byteSize() const { return sizeof(uint) + sizeof(ushort) * d->length; }
- bool isValid(int maxSize) const {
- // Check byteSize() <= maxSize, avoiding integer overflow
- maxSize -= sizeof(uint);
- return maxSize >= 0 && uint(d->length) <= maxSize / sizeof(ushort);
- }
-
- inline String &operator=(QStringView str)
- {
- d->length = str.length();
- qToLittleEndian<quint16>(str.utf16(), str.length(), d->utf16);
- fillTrailingZeros();
- return *this;
- }
-
- inline String &operator=(QLatin1String str)
- {
- d->length = str.size();
-#if Q_BYTE_ORDER == Q_BIG_ENDIAN
- for (int i = 0; i < str.size(); ++i)
- d->utf16[i] = str[i].unicode();
-#else
- qt_from_latin1((ushort *)d->utf16, str.data(), str.size());
-#endif
- fillTrailingZeros();
- return *this;
- }
-
- void fillTrailingZeros()
- {
- if (d->length & 1)
- d->utf16[d->length] = 0;
- }
-
- inline bool operator ==(QStringView str) const {
- int slen = str.length();
- int l = d->length;
- if (slen != l)
- return false;
- const ushort *s = (const ushort *)str.utf16();
- const qle_ushort *a = d->utf16;
- const ushort *b = s;
- while (l-- && *a == *b)
- a++,b++;
- return (l == -1);
- }
- inline bool operator !=(QStringView str) const {
- return !operator ==(str);
- }
- inline bool operator >=(QStringView str) const {
- // ###
- return toString() >= str;
- }
-
- inline bool operator<(const Latin1String &str) const;
- inline bool operator>=(const Latin1String &str) const { return !operator <(str); }
- inline bool operator ==(const Latin1String &str) const;
-
- inline bool operator ==(const String &str) const {
- if (d->length != str.d->length)
- return false;
- return !memcmp(d->utf16, str.d->utf16, d->length*sizeof(ushort));
- }
- inline bool operator<(const String &other) const;
- inline bool operator >=(const String &other) const { return !(*this < other); }
-
- inline QString toString() const {
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- return QString((QChar *)d->utf16, d->length);
-#else
- int l = d->length;
- QString str(l, Qt::Uninitialized);
- QChar *ch = str.data();
- for (int i = 0; i < l; ++i)
- ch[i] = QChar(d->utf16[i]);
- return str;
-#endif
- }
-
-};
-
-class Latin1String
+template<typename Element, typename ElementsIterator>
+struct ObjectIterator
{
-public:
- explicit Latin1String(const char *data) { d = (Data *)data; }
-
- struct Data {
- qle_ushort length;
- char latin1[1];
- };
- Data *d;
-
- int byteSize() const { return sizeof(ushort) + sizeof(char)*(d->length); }
- bool isValid(int maxSize) const {
- return byteSize() <= maxSize;
- }
-
- inline Latin1String &operator=(QStringView str)
- {
- int len = d->length = str.length();
- uchar *l = (uchar *)d->latin1;
- const ushort *uc = (const ushort *)str.utf16();
- qt_to_latin1_unchecked(l, uc, len);
+ using pointer = Element *;
- fillTrailingZeros();
- return *this;
- }
+ struct value_type;
+ struct reference {
+ reference(Element &ref) : m_key(&ref) {}
- inline Latin1String &operator=(QLatin1String str)
- {
- int len = d->length = str.size();
- uchar *l = (uchar *)d->latin1;
- memcpy(l, str.data(), len);
+ reference() = delete;
+ ~reference() = default;
- fillTrailingZeros();
- return *this;
- }
-
- void fillTrailingZeros()
- {
- uchar *l = (uchar *)d->latin1;
- for (int len = d->length; (quintptr)(l + len) & 0x3; ++len)
- l[len] = 0;
- }
-
- QLatin1String toQLatin1String() const noexcept {
- return QLatin1String(d->latin1, d->length);
- }
+ reference(const reference &other) = default;
+ reference(reference &&other) = default;
- inline bool operator<(const String &str) const
- {
- const qle_ushort *uc = (qle_ushort *) str.d->utf16;
- if (!uc || *uc == 0)
- return false;
-
- const uchar *c = (uchar *)d->latin1;
- const uchar *e = c + qMin((int)d->length, (int)str.d->length);
-
- while (c < e) {
- if (*c != *uc)
- break;
- ++c;
- ++uc;
+ reference &operator=(const value_type &value);
+ reference &operator=(const reference &other)
+ {
+ if (m_key != other.m_key) {
+ key() = other.key();
+ value() = other.value();
+ }
+ return *this;
}
- return (c == e ? (int)d->length < (int)str.d->length : *c < *uc);
-
- }
- inline bool operator ==(const String &str) const {
- return (str == *this);
- }
- inline bool operator >=(const String &str) const {
- return !(*this < str);
- }
-
- inline QString toString() const {
- return QString::fromLatin1(d->latin1, d->length);
- }
-};
-
-#define DEF_OP(op) \
- inline bool operator op(Latin1String lhs, Latin1String rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs.toQLatin1String(); \
- } \
- inline bool operator op(QLatin1String lhs, Latin1String rhs) noexcept \
- { \
- return lhs op rhs.toQLatin1String(); \
- } \
- inline bool operator op(Latin1String lhs, QLatin1String rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs; \
- } \
- inline bool operator op(QStringView lhs, Latin1String rhs) noexcept \
- { \
- return lhs op rhs.toQLatin1String(); \
- } \
- inline bool operator op(Latin1String lhs, QStringView rhs) noexcept \
- { \
- return lhs.toQLatin1String() op rhs; \
- } \
- /*end*/
-DEF_OP(==)
-DEF_OP(!=)
-DEF_OP(< )
-DEF_OP(> )
-DEF_OP(<=)
-DEF_OP(>=)
-#undef DEF_OP
-
-inline bool String::operator ==(const Latin1String &str) const
-{
- if ((int)d->length != (int)str.d->length)
- return false;
- const qle_ushort *uc = d->utf16;
- const qle_ushort *e = uc + d->length;
- const uchar *c = (uchar *)str.d->latin1;
-
- while (uc < e) {
- if (*uc != *c)
- return false;
- ++uc;
- ++c;
- }
- return true;
-}
-
-inline bool String::operator <(const String &other) const
-{
- int alen = d->length;
- int blen = other.d->length;
- int l = qMin(alen, blen);
- qle_ushort *a = d->utf16;
- qle_ushort *b = other.d->utf16;
-
- while (l-- && *a == *b)
- a++,b++;
- if (l==-1)
- return (alen < blen);
- return (ushort)*a < (ushort)*b;
-}
-
-inline bool String::operator<(const Latin1String &str) const
-{
- const uchar *c = (uchar *) str.d->latin1;
- if (!c || *c == 0)
- return false;
-
- const qle_ushort *uc = d->utf16;
- const qle_ushort *e = uc + qMin((int)d->length, (int)str.d->length);
-
- while (uc < e) {
- if (*uc != *c)
- break;
- ++uc;
- ++c;
- }
- return (uc == e ? (int)d->length < (int)str.d->length : (ushort)*uc < *c);
-
-}
-template <typename T>
-static inline void copyString(char *dest, T str, bool compress)
-{
- if (compress) {
- Latin1String string(dest);
- string = str;
- } else {
- String string(dest);
- string = str;
- }
-}
+ reference &operator=(reference &&other)
+ {
+ key() = other.key();
+ value() = other.value();
+ return *this;
+ }
+ Element &key() { return *m_key; }
+ Element &value() { return *(m_key + 1); }
-/*
- Base is the base class for both Object and Array. Both classes work more or less the same way.
- The class starts with a header (defined by the struct below), then followed by data (the data for
- values in the Array case and Entry's (see below) for objects.
+ const Element &key() const { return *m_key; }
+ const Element &value() const { return *(m_key + 1); }
- After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and
- offsets from the beginning of the object to Entry's in the case of Object.
- Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage
- of a binary search over the keys in an Object.
- */
-class Base
-{
-public:
- qle_uint size;
- union {
- uint _dummy;
- qle_bitfield<0, 1> is_object;
- qle_bitfield<1, 31> length;
+ private:
+ Element *m_key;
};
- offset tableOffset;
- // content follows here
- inline bool isObject() const { return !!is_object; }
- inline bool isArray() const { return !isObject(); }
+ struct value_type {
+ value_type(reference ref) : m_key(ref.key()), m_value(ref.value()) {}
- inline offset *table() const { return (offset *) (((char *) this) + tableOffset); }
-
- int reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace);
- void removeItems(int pos, int numItems);
-};
-
-class Object : public Base
-{
-public:
- Entry *entryAt(int i) const {
- return reinterpret_cast<Entry *>(((char *)this) + table()[i]);
- }
- int indexOf(QStringView key, bool *exists) const;
- int indexOf(QLatin1String key, bool *exists) const;
+ Element key() const { return m_key; }
+ Element value() const { return m_value; }
+ private:
+ Element m_key;
+ Element m_value;
+ };
- bool isValid(int maxSize) const;
-};
+ using difference_type = typename QVector<Element>::difference_type;
+ using iterator_category = std::random_access_iterator_tag;
+ ObjectIterator() = default;
+ ObjectIterator(ElementsIterator it) : it(it) {}
+ ElementsIterator elementsIterator() { return it; }
-class Array : public Base
-{
-public:
- inline Value at(int i) const;
- inline Value &operator [](int i);
+ ObjectIterator operator++(int) { ObjectIterator ret(it); it += 2; return ret; }
+ ObjectIterator &operator++() { it += 2; return *this; }
+ ObjectIterator &operator+=(difference_type n) { it += 2 * n; return *this; }
- bool isValid(int maxSize) const;
-};
+ ObjectIterator operator--(int) { ObjectIterator ret(it); it -= 2; return ret; }
+ ObjectIterator &operator--() { it -= 2; return *this; }
+ ObjectIterator &operator-=(difference_type n) { it -= 2 * n; return *this; }
+ reference operator*() const { return *it; }
+ reference operator[](int n) const { return it[n * 2]; }
-class Value
-{
-public:
- enum {
- MaxSize = (1<<27) - 1
- };
- union {
- uint _dummy;
- qle_bitfield<0, 3> type;
- qle_bitfield<3, 1> latinOrIntValue;
- qle_bitfield<4, 1> latinKey;
- qle_bitfield<5, 27> value;
- qle_signedbitfield<5, 27> int_value;
- };
+ bool operator<(ObjectIterator other) const { return it < other.it; }
+ bool operator>(ObjectIterator other) const { return it > other.it; }
+ bool operator<=(ObjectIterator other) const { return it <= other.it; }
+ bool operator>=(ObjectIterator other) const { return it >= other.it; }
- inline char *data(const Base *b) const { return ((char *)b) + value; }
- int usedStorage(const Base *b) const;
-
- bool toBoolean() const;
- double toDouble(const Base *b) const;
- QString toString(const Base *b) const;
- String asString(const Base *b) const;
- Latin1String asLatin1String(const Base *b) const;
- Base *base(const Base *b) const;
-
- bool isValid(const Base *b) const;
-
- static int requiredStorage(QJsonValue &v, bool *compressed);
- static uint valueToStore(const QJsonValue &v, uint offset);
- static void copyData(const QJsonValue &v, char *dest, bool compressed);
+private:
+ ElementsIterator it;
};
-Q_DECLARE_JSONPRIVATE_TYPEINFO(Value, Q_PRIMITIVE_TYPE)
-inline Value Array::at(int i) const
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator+(
+ ObjectIterator<Element, ElementsIterator> a,
+ typename ObjectIterator<Element, ElementsIterator>::difference_type n)
{
- return *(Value *) (table() + i);
+ return {a.elementsIterator() + 2 * n};
}
-
-inline Value &Array::operator [](int i)
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator+(
+ int n, ObjectIterator<Element, ElementsIterator> a)
{
- return *(Value *) (table() + i);
+ return {a.elementsIterator() + 2 * n};
}
-
-
-
-class Entry {
-public:
- Value value;
- // key
- // value data follows key
-
- uint size() const {
- int s = sizeof(Entry);
- if (value.latinKey)
- s += shallowLatin1Key().byteSize();
- else
- s += shallowKey().byteSize();
- return alignedSize(s);
- }
-
- int usedStorage(Base *b) const {
- return size() + value.usedStorage(b);
- }
-
- String shallowKey() const
- {
- Q_ASSERT(!value.latinKey);
- return String((const char *)this + sizeof(Entry));
- }
- Latin1String shallowLatin1Key() const
- {
- Q_ASSERT(value.latinKey);
- return Latin1String((const char *)this + sizeof(Entry));
- }
- QString key() const
- {
- if (value.latinKey) {
- return shallowLatin1Key().toString();
- }
- return shallowKey().toString();
- }
-
- bool isValid(int maxSize) const {
- if (maxSize < (int)sizeof(Entry))
- return false;
- maxSize -= sizeof(Entry);
- if (value.latinKey)
- return shallowLatin1Key().isValid(maxSize);
- return shallowKey().isValid(maxSize);
- }
-
- bool operator ==(QStringView key) const;
- inline bool operator !=(QStringView key) const { return !operator ==(key); }
- inline bool operator >=(QStringView key) const;
-
- bool operator==(QLatin1String key) const;
- inline bool operator!=(QLatin1String key) const { return !operator ==(key); }
- inline bool operator>=(QLatin1String key) const;
-
- bool operator ==(const Entry &other) const;
- bool operator >=(const Entry &other) const;
-};
-
-inline bool Entry::operator >=(QStringView key) const
+template<typename Element, typename ElementsIterator>
+inline ObjectIterator<Element, ElementsIterator> operator-(
+ ObjectIterator<Element, ElementsIterator> a,
+ typename ObjectIterator<Element, ElementsIterator>::difference_type n)
{
- if (value.latinKey)
- return (shallowLatin1Key() >= key);
- else
- return (shallowKey() >= key);
+ return {a.elementsIterator() - 2 * n};
}
-
-inline bool Entry::operator >=(QLatin1String key) const
+template<typename Element, typename ElementsIterator>
+inline int operator-(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- if (value.latinKey)
- return shallowLatin1Key() >= key;
- else
- return shallowKey() >= QString(key); // ### conversion to QString
+ return (a.elementsIterator() - b.elementsIterator()) / 2;
}
-
-inline bool operator <(QStringView key, const Entry &e)
-{ return e >= key; }
-
-inline bool operator<(QLatin1String key, const Entry &e)
-{ return e >= key; }
-
-
-class Header {
-public:
- qle_uint tag; // 'qbjs'
- qle_uint version; // 1
- Base *root() { return (Base *)(this + 1); }
-};
-
-
-inline bool Value::toBoolean() const
+template<typename Element, typename ElementsIterator>
+inline bool operator!=(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- Q_ASSERT(type == QJsonValue::Bool);
- return value != 0;
+ return a.elementsIterator() != b.elementsIterator();
}
-
-inline double Value::toDouble(const Base *b) const
+template<typename Element, typename ElementsIterator>
+inline bool operator==(
+ ObjectIterator<Element, ElementsIterator> a,
+ ObjectIterator<Element, ElementsIterator> b)
{
- Q_ASSERT(type == QJsonValue::Double);
- if (latinOrIntValue)
- return int_value;
-
- quint64 i = qFromLittleEndian<quint64>((const uchar *)b + value);
- double d;
- memcpy(&d, &i, sizeof(double));
- return d;
+ return a.elementsIterator() == b.elementsIterator();
}
-inline String Value::asString(const Base *b) const
-{
- Q_ASSERT(type == QJsonValue::String && !latinOrIntValue);
- return String(data(b));
-}
+using KeyIterator = ObjectIterator<QtCbor::Element, QVector<QtCbor::Element>::iterator>;
+using ConstKeyIterator = ObjectIterator<const QtCbor::Element, QVector<QtCbor::Element>::const_iterator>;
-inline Latin1String Value::asLatin1String(const Base *b) const
+template<>
+inline KeyIterator::reference &KeyIterator::reference::operator=(const KeyIterator::value_type &value)
{
- Q_ASSERT(type == QJsonValue::String && latinOrIntValue);
- return Latin1String(data(b));
+ *m_key = value.key();
+ *(m_key + 1) = value.value();
+ return *this;
}
-inline QString Value::toString(const Base *b) const
+inline void swap(KeyIterator::reference a, KeyIterator::reference b)
{
- if (latinOrIntValue)
- return asLatin1String(b).toString();
- else
- return asString(b).toString();
+ KeyIterator::value_type t = a;
+ a = b;
+ b = t;
}
-inline Base *Value::base(const Base *b) const
+class Value
{
- Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object);
- return reinterpret_cast<Base *>(data(b));
-}
-
-class Data {
public:
- enum Validation {
- Unchecked,
- Validated,
- Invalid
- };
-
- QAtomicInt ref;
- int alloc;
- union {
- char *rawData;
- Header *header;
- };
- uint compactionCounter : 31;
- uint ownsData : 1;
+ static QCborContainerPrivate *container(const QCborValue &v) { return v.container; }
- inline Data(char *raw, int a)
- : alloc(a), rawData(raw), compactionCounter(0), ownsData(true)
+ static QJsonValue fromTrustedCbor(const QCborValue &v)
{
+ QJsonValue result;
+ result.d = v.container;
+ result.n = v.n;
+ result.t = v.t;
+ return result;
}
- inline Data(int reserved, QJsonValue::Type valueType)
- : rawData(nullptr), compactionCounter(0), ownsData(true)
- {
- Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object);
-
- alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset);
- header = (Header *)malloc(alloc);
- Q_CHECK_PTR(header);
- header->tag = QJsonDocument::BinaryFormatTag;
- header->version = 1;
- Base *b = header->root();
- b->size = sizeof(Base);
- b->is_object = (valueType == QJsonValue::Object);
- b->tableOffset = sizeof(Base);
- b->length = 0;
- }
- inline ~Data()
- { if (ownsData) free(rawData); }
-
- uint offsetOf(const void *ptr) const { return (uint)(((char *)ptr - rawData)); }
-
- QJsonObject toObject(Object *o) const
- {
- return QJsonObject(const_cast<Data *>(this), o);
- }
-
- QJsonArray toArray(Array *a) const
- {
- return QJsonArray(const_cast<Data *>(this), a);
- }
-
- Data *clone(Base *b, int reserve = 0)
- {
- int size = sizeof(Header) + b->size;
- if (b == header->root() && ref.loadRelaxed() == 1 && alloc >= size + reserve)
- return this;
-
- if (reserve) {
- if (reserve < 128)
- reserve = 128;
- size = qMax(size + reserve, qMin(size *2, (int)Value::MaxSize));
- if (size > Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return nullptr;
- }
- }
- char *raw = (char *)malloc(size);
- Q_CHECK_PTR(raw);
- memcpy(raw + sizeof(Header), b, b->size);
- Header *h = (Header *)raw;
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1;
- Data *d = new Data(raw, size);
- d->compactionCounter = (b == header->root()) ? compactionCounter : 0;
- return d;
- }
-
- void compact();
- bool valid() const;
-
-private:
- Q_DISABLE_COPY_MOVE(Data)
};
-}
+} // namespace QJsonPrivate
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjsonarray.cpp b/src/corelib/serialization/qjsonarray.cpp
index 9636ac5856..c5d4bf0315 100644
--- a/src/corelib/serialization/qjsonarray.cpp
+++ b/src/corelib/serialization/qjsonarray.cpp
@@ -40,12 +40,16 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qstringlist.h>
+#include <qcborarray.h>
#include <qvariant.h>
#include <qdebug.h>
+#include <private/qcborvalue_p.h>
+#include <private/qjson_p.h>
+
#include "qjsonwriter_p.h"
-#include "qjson_p.h"
QT_BEGIN_NAMESPACE
@@ -131,10 +135,7 @@ QT_BEGIN_NAMESPACE
/*!
Creates an empty array.
*/
-QJsonArray::QJsonArray()
- : d(nullptr), a(nullptr)
-{
-}
+QJsonArray::QJsonArray() = default;
/*!
\fn QJsonArray::QJsonArray(std::initializer_list<QJsonValue> args)
@@ -151,12 +152,10 @@ QJsonArray::QJsonArray()
/*!
\internal
*/
-QJsonArray::QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array)
- : d(data), a(array)
+QJsonArray::QJsonArray(QCborContainerPrivate *array)
+ : a(array)
{
- Q_ASSERT(data);
Q_ASSERT(array);
- d->ref.ref();
}
/*!
@@ -168,18 +167,13 @@ QJsonArray::QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array)
*/
void QJsonArray::initialize()
{
- d = nullptr;
a = nullptr;
}
/*!
Deletes the array.
*/
-QJsonArray::~QJsonArray()
-{
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonArray::~QJsonArray() = default;
/*!
Creates a copy of \a other.
@@ -187,12 +181,22 @@ QJsonArray::~QJsonArray()
Since QJsonArray is implicitly shared, the copy is shallow
as long as the object doesn't get modified.
*/
+QJsonArray::QJsonArray(std::initializer_list<QJsonValue> args)
+{
+ initialize();
+ for (const auto & arg : args)
+ append(arg);
+}
+
QJsonArray::QJsonArray(const QJsonArray &other)
{
- d = other.d;
a = other.a;
- if (d)
- d->ref.ref();
+}
+
+QJsonArray::QJsonArray(QJsonArray &&other) noexcept
+ : a(other.a)
+{
+ other.a = nullptr;
}
/*!
@@ -200,15 +204,7 @@ QJsonArray::QJsonArray(const QJsonArray &other)
*/
QJsonArray &QJsonArray::operator =(const QJsonArray &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
- }
a = other.a;
-
return *this;
}
@@ -282,48 +278,7 @@ QJsonArray QJsonArray::fromStringList(const QStringList &list)
*/
QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
{
- QJsonArray array;
- if (list.isEmpty())
- return array;
-
- array.detach2(1024);
-
- QVector<QJsonPrivate::Value> values;
- values.resize(list.size());
- QJsonPrivate::Value *valueData = values.data();
- uint currentOffset = sizeof(QJsonPrivate::Base);
-
- for (int i = 0; i < list.size(); ++i) {
- QJsonValue val = QJsonValue::fromVariant(list.at(i));
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- if (!array.detach2(valueSize))
- return QJsonArray();
-
- QJsonPrivate::Value *v = valueData + i;
- v->type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v->latinOrIntValue = latinOrIntValue;
- v->latinKey = false;
- v->value = QJsonPrivate::Value::valueToStore(val, currentOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)array.a + currentOffset, latinOrIntValue);
-
- currentOffset += valueSize;
- array.a->size = currentOffset;
- }
-
- // write table
- array.a->tableOffset = currentOffset;
- if (!array.detach2(sizeof(QJsonPrivate::offset)*values.size()))
- return QJsonArray();
- memcpy(static_cast<void *>(array.a->table()),
- static_cast<const void *>(values.constData()), values.size()*sizeof(uint));
- array.a->length = values.size();
- array.a->size = currentOffset + sizeof(QJsonPrivate::offset)*values.size();
-
- return array;
+ return QCborArray::fromVariantList(list).toJsonArray();
}
/*!
@@ -333,14 +288,7 @@ QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
*/
QVariantList QJsonArray::toVariantList() const
{
- QVariantList list;
-
- if (a) {
- list.reserve(a->length);
- for (int i = 0; i < (int)a->length; ++i)
- list.append(QJsonValue(d, a, a->at(i)).toVariant());
- }
- return list;
+ return QCborArray::fromJsonArray(*this).toVariantList();
}
@@ -349,10 +297,7 @@ QVariantList QJsonArray::toVariantList() const
*/
int QJsonArray::size() const
{
- if (!d)
- return 0;
-
- return (int)a->length;
+ return a ? a->elements.size() : 0;
}
/*!
@@ -370,10 +315,7 @@ int QJsonArray::size() const
*/
bool QJsonArray::isEmpty() const
{
- if (!d)
- return true;
-
- return !a->length;
+ return a == nullptr || a->elements.isEmpty();
}
/*!
@@ -384,10 +326,10 @@ bool QJsonArray::isEmpty() const
*/
QJsonValue QJsonArray::at(int i) const
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.size())
return QJsonValue(QJsonValue::Undefined);
- return QJsonValue(d, a, a->at(i));
+ return QJsonPrivate::Value::fromTrustedCbor(a->valueAt(i));
}
/*!
@@ -411,7 +353,7 @@ QJsonValue QJsonArray::first() const
*/
QJsonValue QJsonArray::last() const
{
- return at(a ? (a->length - 1) : 0);
+ return at(a ? (a->elements.size() - 1) : 0);
}
/*!
@@ -433,7 +375,7 @@ void QJsonArray::prepend(const QJsonValue &value)
*/
void QJsonArray::append(const QJsonValue &value)
{
- insert(a ? (int)a->length : 0, value);
+ insert(a ? a->elements.size() : 0, value);
}
/*!
@@ -444,14 +386,10 @@ void QJsonArray::append(const QJsonValue &value)
*/
void QJsonArray::removeAt(int i)
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.length())
return;
-
detach2();
- a->removeItems(i, 1);
- ++d->compactionCounter;
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(a->length) / 2u)
- compact();
+ a->removeAt(i);
}
/*! \fn void QJsonArray::removeFirst()
@@ -484,11 +422,12 @@ void QJsonArray::removeAt(int i)
*/
QJsonValue QJsonArray::takeAt(int i)
{
- if (!a || i < 0 || i >= (int)a->length)
+ if (!a || i < 0 || i >= a->elements.length())
return QJsonValue(QJsonValue::Undefined);
- QJsonValue v(d, a, a->at(i));
- removeAt(i); // detaches
+ detach2();
+ const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(a->extractAt(i));
+ a->removeAt(i);
return v;
}
@@ -501,29 +440,14 @@ QJsonValue QJsonArray::takeAt(int i)
*/
void QJsonArray::insert(int i, const QJsonValue &value)
{
- Q_ASSERT (i >= 0 && i <= (a ? (int)a->length : 0));
- QJsonValue val = value;
-
- bool compressed;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &compressed);
-
- if (!detach2(valueSize + sizeof(QJsonPrivate::Value)))
- return;
-
- if (!a->length)
- a->tableOffset = sizeof(QJsonPrivate::Array);
-
- int valueOffset = a->reserveSpace(valueSize, i, 1, false);
- if (!valueOffset)
- return;
-
- QJsonPrivate::Value &v = (*a)[i];
- v.type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v.latinOrIntValue = compressed;
- v.latinKey = false;
- v.value = QJsonPrivate::Value::valueToStore(val, valueOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)a + valueOffset, compressed);
+ if (a)
+ detach2(a->elements.length() + 1);
+ else
+ a = new QCborContainerPrivate;
+
+ Q_ASSERT (i >= 0 && i <= a->elements.length());
+ a->insertAt(i, value.type() == QJsonValue::Undefined ? QCborValue(nullptr)
+ : QCborValue::fromJsonValue(value));
}
/*!
@@ -552,33 +476,9 @@ void QJsonArray::insert(int i, const QJsonValue &value)
*/
void QJsonArray::replace(int i, const QJsonValue &value)
{
- Q_ASSERT (a && i >= 0 && i < (int)(a->length));
- QJsonValue val = value;
-
- bool compressed;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &compressed);
-
- if (!detach2(valueSize))
- return;
-
- if (!a->length)
- a->tableOffset = sizeof(QJsonPrivate::Array);
-
- int valueOffset = a->reserveSpace(valueSize, i, 1, true);
- if (!valueOffset)
- return;
-
- QJsonPrivate::Value &v = (*a)[i];
- v.type = (val.t == QJsonValue::Undefined ? QJsonValue::Null : val.t);
- v.latinOrIntValue = compressed;
- v.latinKey = false;
- v.value = QJsonPrivate::Value::valueToStore(val, valueOffset);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)a + valueOffset, compressed);
-
- ++d->compactionCounter;
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(a->length) / 2u)
- compact();
+ Q_ASSERT (a && i >= 0 && i < a->elements.length());
+ detach2();
+ a->replaceAt(i, QCborValue::fromJsonValue(value));
}
/*!
@@ -610,7 +510,7 @@ bool QJsonArray::contains(const QJsonValue &value) const
*/
QJsonValueRef QJsonArray::operator [](int i)
{
- Q_ASSERT(a && i >= 0 && i < (int)a->length);
+ Q_ASSERT(a && i >= 0 && i < a->elements.length());
return QJsonValueRef(this, i);
}
@@ -633,14 +533,14 @@ bool QJsonArray::operator==(const QJsonArray &other) const
return true;
if (!a)
- return !other.a->length;
+ return !other.a->elements.length();
if (!other.a)
- return !a->length;
- if (a->length != other.a->length)
+ return !a->elements.length();
+ if (a->elements.length() != other.a->elements.length())
return false;
- for (int i = 0; i < (int)a->length; ++i) {
- if (QJsonValue(d, a, a->at(i)) != QJsonValue(other.d, other.a, other.a->at(i)))
+ for (int i = 0; i < a->elements.length(); ++i) {
+ if (a->valueAt(i) != other.a->valueAt(i))
return false;
}
return true;
@@ -1216,28 +1116,10 @@ void QJsonArray::detach(uint reserve)
*/
bool QJsonArray::detach2(uint reserve)
{
- if (!d) {
- if (reserve >= QJsonPrivate::Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return false;
- }
- d = new QJsonPrivate::Data(reserve, QJsonValue::Array);
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
- d->ref.ref();
- return true;
- }
- if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ if (!a)
return true;
-
- QJsonPrivate::Data *x = d->clone(a, reserve);
- if (!x)
- return false;
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
- return true;
+ a = a->detach(a.data(), reserve ? reserve : size());
+ return a;
}
/*!
@@ -1245,12 +1127,7 @@ bool QJsonArray::detach2(uint reserve)
*/
void QJsonArray::compact()
{
- if (!d || !d->compactionCounter)
- return;
-
- detach2();
- d->compact();
- a = static_cast<QJsonPrivate::Array *>(d->header->root());
+ a->compact(a->elements.size());
}
uint qHash(const QJsonArray &array, uint seed)
@@ -1267,7 +1144,7 @@ QDebug operator<<(QDebug dbg, const QJsonArray &a)
return dbg;
}
QByteArray json;
- QJsonPrivate::Writer::arrayToJson(a.a, json, 0, true);
+ QJsonPrivate::Writer::arrayToJson(a.a.data(), json, 0, true);
dbg.nospace() << "QJsonArray("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ")";
diff --git a/src/corelib/serialization/qjsonarray.h b/src/corelib/serialization/qjsonarray.h
index 287671419f..9b7e10766f 100644
--- a/src/corelib/serialization/qjsonarray.h
+++ b/src/corelib/serialization/qjsonarray.h
@@ -42,6 +42,7 @@
#include <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
+#include <QtCore/qshareddata.h>
#include <initializer_list>
QT_BEGIN_NAMESPACE
@@ -55,25 +56,14 @@ class Q_CORE_EXPORT QJsonArray
public:
QJsonArray();
- QJsonArray(std::initializer_list<QJsonValue> args)
- {
- initialize();
- for (std::initializer_list<QJsonValue>::const_iterator i = args.begin(); i != args.end(); ++i)
- append(*i);
- }
+ QJsonArray(std::initializer_list<QJsonValue> args);
~QJsonArray();
QJsonArray(const QJsonArray &other);
QJsonArray &operator =(const QJsonArray &other);
- QJsonArray(QJsonArray &&other) noexcept
- : d(other.d),
- a(other.a)
- {
- other.d = nullptr;
- other.a = nullptr;
- }
+ QJsonArray(QJsonArray &&other) noexcept;
QJsonArray &operator =(QJsonArray &&other) noexcept
{
@@ -112,7 +102,6 @@ public:
void swap(QJsonArray &other) noexcept
{
- qSwap(d, other.d);
qSwap(a, other.a);
}
@@ -244,20 +233,21 @@ public:
typedef int difference_type;
private:
- friend class QJsonPrivate::Data;
friend class QJsonValue;
friend class QJsonDocument;
+ friend class QCborArray;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &);
- QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array);
+ QJsonArray(QCborContainerPrivate *array);
void initialize();
void compact();
// ### Qt 6: remove me and merge with detach2
void detach(uint reserve = 0);
bool detach2(uint reserve = 0);
- QJsonPrivate::Data *d;
- QJsonPrivate::Array *a;
+ // ### Qt 6: remove
+ void *dead = nullptr;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> a;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonArray)
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp
index d6a0c8c48a..997cef0106 100644
--- a/src/corelib/serialization/qjsoncbor.cpp
+++ b/src/corelib/serialization/qjsoncbor.cpp
@@ -42,6 +42,10 @@
#include "qcborarray.h"
#include "qcbormap.h"
+
+#include "qjsonarray.h"
+#include "qjsonobject.h"
+#include "qjsondocument.h"
#include "qjson_p.h"
#include <private/qnumeric_p.h>
@@ -149,7 +153,12 @@ static Q_NEVER_INLINE QString makeString(const QCborContainerPrivate *d, qsizety
case QCborValue::Array:
case QCborValue::Map:
+#if defined(QT_JSON_READONLY) || defined(QT_BOOTSTRAPPED)
+ qFatal("Writing JSON is disabled.");
+ return QString();
+#else
return d->valueAt(idx).toDiagnosticNotation(QCborValue::Compact);
+#endif
case QCborValue::SimpleType:
break;
@@ -181,30 +190,11 @@ static Q_NEVER_INLINE QString makeString(const QCborContainerPrivate *d, qsizety
return simpleTypeString(e.type);
}
-static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx);
-
-static QJsonArray convertToJsonArray(const QCborContainerPrivate *d)
-{
- QJsonArray a;
- if (d) {
- for (qsizetype idx = 0; idx < d->elements.size(); ++idx)
- a.append(convertToJson(d, idx));
- }
- return a;
-}
-
-static QJsonObject convertToJsonObject(const QCborContainerPrivate *d)
-{
- QJsonObject o;
- if (d) {
- for (qsizetype idx = 0; idx < d->elements.size(); idx += 2)
- o.insert(makeString(d, idx), convertToJson(d, idx + 1));
- }
- return o;
-}
+QJsonValue qt_convertToJson(QCborContainerPrivate *d, qsizetype idx);
-static QJsonValue convertExtendedTypeToJson(const QCborContainerPrivate *d)
+static QJsonValue convertExtendedTypeToJson(QCborContainerPrivate *d)
{
+#ifndef QT_BUILD_QMAKE
qint64 tag = d->elements.at(0).value;
switch (tag) {
@@ -225,12 +215,36 @@ static QJsonValue convertExtendedTypeToJson(const QCborContainerPrivate *d)
return s;
}
}
+#endif
// for all other tags, ignore it and return the converted tagged item
- return convertToJson(d, 1);
+ return qt_convertToJson(d, 1);
}
-static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
+// We need to do this because sub-objects may need conversion.
+static QJsonArray convertToJsonArray(QCborContainerPrivate *d)
+{
+ QJsonArray a;
+ if (d) {
+ for (qsizetype idx = 0; idx < d->elements.size(); ++idx)
+ a.append(qt_convertToJson(d, idx));
+ }
+ return a;
+}
+
+// We need to do this because the keys need to be sorted and converted to strings
+// and sub-objects may need recursive conversion.
+static QJsonObject convertToJsonObject(QCborContainerPrivate *d)
+{
+ QJsonObject o;
+ if (d) {
+ for (qsizetype idx = 0; idx < d->elements.size(); idx += 2)
+ o.insert(makeString(d, idx), qt_convertToJson(d, idx + 1));
+ }
+ return o;
+}
+
+QJsonValue qt_convertToJson(QCborContainerPrivate *d, qsizetype idx)
{
// encoding the container itself
if (idx == -QCborValue::Array)
@@ -248,8 +262,7 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
const auto &e = d->elements.at(idx);
switch (e.type) {
case QCborValue::Integer:
- return qint64(e.value);
-
+ return QJsonValue(e.value);
case QCborValue::ByteArray:
case QCborValue::String:
case QCborValue::SimpleType:
@@ -264,14 +277,14 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
case QCborValue::RegularExpression:
case QCborValue::Uuid:
// recurse
- return convertToJson(e.flags & Element::IsContainer ? e.container : nullptr, -e.type);
+ return qt_convertToJson(e.flags & Element::IsContainer ? e.container : nullptr, -e.type);
case QCborValue::Null:
return QJsonValue();
case QCborValue::Undefined:
case QCborValue::Invalid:
- return QJsonValue(QJsonValue::Undefined);
+ return QJsonValue::Undefined;
case QCborValue::False:
return false;
@@ -283,7 +296,7 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
return fpToJson(e.fpvalue());
}
- return makeString(d, idx);
+ return QJsonPrivate::Value::fromTrustedCbor(makeString(d, idx));
}
/*!
@@ -348,22 +361,22 @@ static QJsonValue convertToJson(const QCborContainerPrivate *d, qsizetype idx)
QJsonValue QCborValue::toJsonValue() const
{
if (container)
- return convertToJson(container, n < 0 ? -type() : n);
+ return qt_convertToJson(container, n < 0 ? -type() : n);
// simple values
switch (type()) {
- case Integer:
- return n;
-
- case Null:
- return QJsonValue();
-
case False:
return false;
+ case Integer:
+ return QJsonPrivate::Value::fromTrustedCbor(*this);
+
case True:
return true;
+ case Null:
+ return QJsonValue();
+
case Double:
return fpToJson(fp_helper());
@@ -372,12 +385,12 @@ QJsonValue QCborValue::toJsonValue() const
case Undefined:
case Invalid:
- return QJsonValue(QJsonValue::Undefined);
+ return QJsonValue::Undefined;
case ByteArray:
case String:
// empty strings
- return QString();
+ return QJsonValue::String;
case Array:
// empty array
@@ -392,16 +405,16 @@ QJsonValue QCborValue::toJsonValue() const
case Url:
case RegularExpression:
case Uuid:
- Q_UNREACHABLE();
+ // Reachable, but invalid in Json
return QJsonValue::Undefined;
}
- return simpleTypeString(type());
+ return QJsonPrivate::Value::fromTrustedCbor(simpleTypeString(type()));
}
QJsonValue QCborValueRef::toJsonValue() const
{
- return convertToJson(d, i);
+ return qt_convertToJson(d, i);
}
/*!
@@ -540,8 +553,10 @@ QVariant QCborValue::toVariant() const
case DateTime:
return toDateTime();
+#ifndef QT_BOOTSTRAPPED
case Url:
return toUrl();
+#endif
#if QT_CONFIG(regularexpression)
case RegularExpression:
@@ -597,12 +612,11 @@ QCborValue QCborValue::fromJsonValue(const QJsonValue &v)
{
switch (v.type()) {
case QJsonValue::Bool:
- return v.b;
+ return v.toBool();
case QJsonValue::Double: {
- qint64 i;
- if (convertDoubleTo(v.dbl, &i))
- return i;
- return v.dbl;
+ if (v.t == Integer)
+ return v.toInteger();
+ return v.toDouble();
}
case QJsonValue::String:
return v.toString();
@@ -650,9 +664,7 @@ static void appendVariant(QCborContainerPrivate *d, const QVariant &variant)
\row \li \c bool \li Bool
\row \li \c std::nullptr_t \li Null
\row \li \c short, \c ushort, \c int, \c uint, \l qint64 \li Integer
- \row \li \l quint64 \li Integer, but they are cast to \c qint64 first so
- values higher than 2\sup{63}-1 (\c INT64_MAX) will
- be wrapped to negative
+ \row \li \l quint64 \li Integer, or Double if outside the range of qint64
\row \li \c float, \c double \li Double
\row \li \l QByteArray \li ByteArray
\row \li \l QDateTime \li DateTime
@@ -696,9 +708,12 @@ QCborValue QCborValue::fromVariant(const QVariant &variant)
case QMetaType::UShort:
case QVariant::Int:
case QVariant::LongLong:
- case QVariant::ULongLong:
case QVariant::UInt:
return variant.toLongLong();
+ case QVariant::ULongLong:
+ if (variant.toULongLong() <= static_cast<uint64_t>(std::numeric_limits<qint64>::max()))
+ return variant.toLongLong();
+ Q_FALLTHROUGH();
case QMetaType::Float:
case QVariant::Double:
return variant.toDouble();
@@ -710,8 +725,10 @@ QCborValue QCborValue::fromVariant(const QVariant &variant)
return variant.toByteArray();
case QVariant::DateTime:
return QCborValue(variant.toDateTime());
+#ifndef QT_BOOTSTRAPPED
case QVariant::Url:
return QCborValue(variant.toUrl());
+#endif
case QVariant::Uuid:
return QCborValue(variant.toUuid());
case QVariant::List:
@@ -824,15 +841,9 @@ QCborArray QCborArray::fromVariantList(const QVariantList &list)
*/
QCborArray QCborArray::fromJsonArray(const QJsonArray &array)
{
- QCborArray a;
- a.detach(array.size());
- for (const QJsonValue &v : array) {
- if (v.isString())
- a.d->append(v.toString());
- else
- a.d->append(QCborValue::fromJsonValue(v));
- }
- return a;
+ QCborArray result;
+ result.d = array.a;
+ return result;
}
/*!
@@ -944,20 +955,9 @@ QCborMap QCborMap::fromVariantHash(const QVariantHash &hash)
*/
QCborMap QCborMap::fromJsonObject(const QJsonObject &obj)
{
- QCborMap m;
- m.detach(obj.size());
- QCborContainerPrivate *d = m.d.data();
-
- auto it = obj.begin();
- auto end = obj.end();
- for ( ; it != end; ++it) {
- d->append(it.key());
- if (it.value().isString())
- d->append(it.value().toString());
- else
- d->append(QCborValue::fromJsonValue(it.value()));
- }
- return m;
+ QCborMap result;
+ result.d = obj.o;
+ return result;
}
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qjsondocument.cpp b/src/corelib/serialization/qjsondocument.cpp
index 8c3818caff..b9b1902f34 100644
--- a/src/corelib/serialization/qjsondocument.cpp
+++ b/src/corelib/serialization/qjsondocument.cpp
@@ -44,11 +44,22 @@
#include <qstringlist.h>
#include <qvariant.h>
#include <qdebug.h>
+#include <qcbormap.h>
+#include <qcborarray.h>
+#include "qcborvalue_p.h"
#include "qjsonwriter_p.h"
#include "qjsonparser_p.h"
#include "qjson_p.h"
#include "qdatastream.h"
+#if QT_CONFIG(binaryjson)
+#include "qbinaryjson_p.h"
+#include "qbinaryjsonobject_p.h"
+#include "qbinaryjsonarray_p.h"
+#endif
+
+#include <private/qmemory_p.h>
+
QT_BEGIN_NAMESPACE
/*! \class QJsonDocument
@@ -80,6 +91,33 @@ QT_BEGIN_NAMESPACE
\sa {JSON Support in Qt}, {JSON Save Game Example}
*/
+
+class QJsonDocumentPrivate
+{
+ Q_DISABLE_COPY_MOVE(QJsonDocumentPrivate);
+public:
+ QJsonDocumentPrivate() = default;
+ QJsonDocumentPrivate(QCborValue data) : value(std::move(data)) {}
+ ~QJsonDocumentPrivate()
+ {
+ if (rawData)
+ free(rawData);
+ }
+
+ QCborValue value;
+ char *rawData = nullptr;
+ uint rawDataSize = 0;
+
+ void clearRawData()
+ {
+ if (rawData) {
+ free(rawData);
+ rawData = nullptr;
+ rawDataSize = 0;
+ }
+ }
+};
+
/*!
* Constructs an empty and invalid document.
*/
@@ -109,11 +147,10 @@ QJsonDocument::QJsonDocument(const QJsonArray &array)
/*!
\internal
*/
-QJsonDocument::QJsonDocument(QJsonPrivate::Data *data)
- : d(data)
+QJsonDocument::QJsonDocument(const QCborValue &data)
+ : d(qt_make_unique<QJsonDocumentPrivate>(data))
{
Q_ASSERT(d);
- d->ref.ref();
}
/*!
@@ -121,20 +158,30 @@ QJsonDocument::QJsonDocument(QJsonPrivate::Data *data)
Binary data set with fromRawData is not freed.
*/
-QJsonDocument::~QJsonDocument()
-{
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonDocument::~QJsonDocument() = default;
/*!
* Creates a copy of the \a other document.
*/
QJsonDocument::QJsonDocument(const QJsonDocument &other)
{
- d = other.d;
- if (d)
- d->ref.ref();
+ if (other.d) {
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ d->value = other.d->value;
+ } else {
+ d.reset();
+ }
+}
+
+QJsonDocument::QJsonDocument(QJsonDocument &&other) noexcept
+ : d(std::move(other.d))
+{
+}
+
+void QJsonDocument::swap(QJsonDocument &other) noexcept
+{
+ qSwap(d, other.d);
}
/*!
@@ -143,14 +190,17 @@ QJsonDocument::QJsonDocument(const QJsonDocument &other)
*/
QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
+ if (this != &other) {
+ if (other.d) {
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
+ d->value = other.d->value;
+ } else {
+ d.reset();
+ }
}
-
return *this;
}
@@ -187,12 +237,13 @@ QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
the application.
*/
+#if QT_CONFIG(binaryjson)
/*!
Creates a QJsonDocument that uses the first \a size bytes from
\a data. It assumes \a data contains a binary encoded JSON document.
- The created document does not take ownership of \a data and the caller
- has to guarantee that \a data will not be deleted or modified as long as
- any QJsonDocument, QJsonObject or QJsonArray still references the data.
+ The created document does not take ownership of \a data. The data is
+ copied into a different data structure, and the original data can be
+ deleted or modified afterwards.
\a data has to be aligned to a 4 byte boundary.
@@ -202,7 +253,18 @@ QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
Returns a QJsonDocument representing the data.
- \sa rawData(), fromBinaryData(), isNull(), DataValidation
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \note Before Qt 5.15, the caller had to guarantee that \a data would not be
+ deleted or modified as long as any QJsonDocument, QJsonObject or QJsonArray
+ still referenced the data. From Qt 5.15 on, this is not necessary anymore.
+
+ \sa rawData(), fromBinaryData(), isNull(), DataValidation, QCborValue
*/
QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidation validation)
{
@@ -211,18 +273,15 @@ QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidat
return QJsonDocument();
}
- if (size < (int)(sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base)))
+ if (size < 0 || uint(size) < sizeof(QBinaryJsonPrivate::Header) + sizeof(QBinaryJsonPrivate::Base))
return QJsonDocument();
- QJsonPrivate::Data *d = new QJsonPrivate::Data((char *)data, size);
- d->ownsData = false;
+ std::unique_ptr<QBinaryJsonPrivate::ConstData> binaryData
+ = qt_make_unique<QBinaryJsonPrivate::ConstData>(data, size);
- if (validation != BypassValidation && !d->valid()) {
- delete d;
- return QJsonDocument();
- }
-
- return QJsonDocument(d);
+ return (validation == BypassValidation || binaryData->isValid())
+ ? binaryData->toJsonDocument()
+ : QJsonDocument();
}
/*!
@@ -230,7 +289,16 @@ QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidat
\a size will contain the size of the returned data.
This method is useful to e.g. stream the JSON document
- in it's binary form to a file.
+ in its binary form to a file.
+
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \sa QCborValue
*/
const char *QJsonDocument::rawData(int *size) const
{
@@ -238,7 +306,21 @@ const char *QJsonDocument::rawData(int *size) const
*size = 0;
return nullptr;
}
- *size = d->alloc;
+
+ if (!d->rawData) {
+ if (isObject()) {
+ QBinaryJsonObject o = QBinaryJsonObject::fromJsonObject(object());
+ d->rawData = o.takeRawData(&(d->rawDataSize));
+ } else {
+ QBinaryJsonArray a = QBinaryJsonArray::fromJsonArray(array());
+ d->rawData = a.takeRawData(&(d->rawDataSize));
+ }
+ }
+
+ // It would be quite miraculous if not, as we should have hit the 128MB limit then.
+ Q_ASSERT(d->rawDataSize <= uint(std::numeric_limits<int>::max()));
+
+ *size = d->rawDataSize;
return d->rawData;
}
@@ -249,38 +331,64 @@ const char *QJsonDocument::rawData(int *size) const
By default the data is validated. If the \a data is not valid, the method returns
a null document.
- \sa toBinaryData(), fromRawData(), isNull(), DataValidation
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
+
+ \sa toBinaryData(), fromRawData(), isNull(), DataValidation, QCborValue
*/
QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidation validation)
{
- if (data.size() < (int)(sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base)))
+ if (uint(data.size()) < sizeof(QBinaryJsonPrivate::Header) + sizeof(QBinaryJsonPrivate::Base))
return QJsonDocument();
- QJsonPrivate::Header h;
- memcpy(&h, data.constData(), sizeof(QJsonPrivate::Header));
- QJsonPrivate::Base root;
- memcpy(&root, data.constData() + sizeof(QJsonPrivate::Header), sizeof(QJsonPrivate::Base));
+ QBinaryJsonPrivate::Header h;
+ memcpy(&h, data.constData(), sizeof(QBinaryJsonPrivate::Header));
+ QBinaryJsonPrivate::Base root;
+ memcpy(&root, data.constData() + sizeof(QBinaryJsonPrivate::Header),
+ sizeof(QBinaryJsonPrivate::Base));
- // do basic checks here, so we don't try to allocate more memory than we can.
- if (h.tag != QJsonDocument::BinaryFormatTag || h.version != 1u ||
- sizeof(QJsonPrivate::Header) + root.size > (uint)data.size())
+ const uint size = sizeof(QBinaryJsonPrivate::Header) + root.size;
+ if (h.tag != QJsonDocument::BinaryFormatTag || h.version != 1U || size > uint(data.size()))
return QJsonDocument();
- const uint size = sizeof(QJsonPrivate::Header) + root.size;
- char *raw = (char *)malloc(size);
- if (!raw)
- return QJsonDocument();
+ std::unique_ptr<QBinaryJsonPrivate::ConstData> d
+ = qt_make_unique<QBinaryJsonPrivate::ConstData>(data.constData(), size);
- memcpy(raw, data.constData(), size);
- QJsonPrivate::Data *d = new QJsonPrivate::Data(raw, size);
+ return (validation == BypassValidation || d->isValid())
+ ? d->toJsonDocument()
+ : QJsonDocument();
+}
- if (validation != BypassValidation && !d->valid()) {
- delete d;
- return QJsonDocument();
- }
+/*!
+ Returns a binary representation of the document.
+
+ The binary representation is also the native format used internally in Qt,
+ and is very efficient and fast to convert to and from.
+
+ The binary format can be stored on disk and interchanged with other applications
+ or computers. fromBinaryData() can be used to convert it back into a
+ JSON document.
+
+ \deprecated in Qt 5.15. The binary JSON encoding is only retained for backwards
+ compatibility. It is undocumented and restrictive in the maximum size of JSON
+ documents that can be encoded. Qt JSON types can be converted to Qt CBOR types,
+ which can in turn be serialized into the CBOR binary format and vice versa. The
+ CBOR format is a well-defined and less restrictive binary representation for a
+ superset of JSON.
- return QJsonDocument(d);
+ \sa fromBinaryData(), QCborValue
+ */
+QByteArray QJsonDocument::toBinaryData() const
+{
+ int size = 0;
+ const char *raw = rawData(&size);
+ return QByteArray(raw, size);
}
+#endif // QT_CONFIG(binaryjson)
/*!
Creates a QJsonDocument from the QVariant \a variant.
@@ -293,6 +401,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati
QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
{
QJsonDocument doc;
+
switch (variant.type()) {
case QVariant::Map:
doc.setObject(QJsonObject::fromVariantMap(variant.toMap()));
@@ -304,7 +413,8 @@ QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
doc.setArray(QJsonArray::fromVariantList(variant.toList()));
break;
case QVariant::StringList:
- doc.setArray(QJsonArray::fromStringList(variant.toStringList()));
+ doc.d = qt_make_unique<QJsonDocumentPrivate>();
+ doc.d->value = QCborArray::fromStringList(variant.toStringList());
break;
default:
break;
@@ -325,10 +435,10 @@ QVariant QJsonDocument::toVariant() const
if (!d)
return QVariant();
- if (d->header->root()->isArray())
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root())).toVariantList();
- else
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root())).toVariantMap();
+ QCborContainerPrivate *container = QJsonPrivate::Value::container(d->value);
+ if (d->value.isArray())
+ return QJsonArray(container).toVariantList();
+ return QJsonObject(container).toVariantMap();
}
/*!
@@ -370,10 +480,11 @@ QByteArray QJsonDocument::toJson(JsonFormat format) const
if (!d)
return json;
- if (d->header->root()->isArray())
- QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(d->header->root()), json, 0, (format == Compact));
+ const QCborContainerPrivate *container = QJsonPrivate::Value::container(d->value);
+ if (d->value.isArray())
+ QJsonPrivate::Writer::arrayToJson(container, json, 0, (format == Compact));
else
- QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(d->header->root()), json, 0, (format == Compact));
+ QJsonPrivate::Writer::objectToJson(container, json, 0, (format == Compact));
return json;
}
@@ -392,7 +503,13 @@ QByteArray QJsonDocument::toJson(JsonFormat format) const
QJsonDocument QJsonDocument::fromJson(const QByteArray &json, QJsonParseError *error)
{
QJsonPrivate::Parser parser(json.constData(), json.length());
- return parser.parse(error);
+ QJsonDocument result;
+ const QCborValue val = parser.parse(error);
+ if (val.isArray() || val.isMap()) {
+ result.d = qt_make_unique<QJsonDocumentPrivate>();
+ result.d->value = val;
+ }
+ return result;
}
/*!
@@ -407,26 +524,6 @@ bool QJsonDocument::isEmpty() const
}
/*!
- Returns a binary representation of the document.
-
- The binary representation is also the native format used internally in Qt,
- and is very efficient and fast to convert to and from.
-
- The binary format can be stored on disk and interchanged with other applications
- or computers. fromBinaryData() can be used to convert it back into a
- JSON document.
-
- \sa fromBinaryData()
- */
-QByteArray QJsonDocument::toBinaryData() const
-{
- if (!d || !d->rawData)
- return QByteArray();
-
- return QByteArray(d->rawData, d->header->root()->size + sizeof(QJsonPrivate::Header));
-}
-
-/*!
Returns \c true if the document contains an array.
\sa array(), isObject()
@@ -436,8 +533,7 @@ bool QJsonDocument::isArray() const
if (!d)
return false;
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
- return h->root()->isArray();
+ return d->value.isArray();
}
/*!
@@ -450,8 +546,7 @@ bool QJsonDocument::isObject() const
if (!d)
return false;
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
- return h->root()->isObject();
+ return d->value.isMap();
}
/*!
@@ -464,10 +559,9 @@ bool QJsonDocument::isObject() const
*/
QJsonObject QJsonDocument::object() const
{
- if (d) {
- QJsonPrivate::Base *b = d->header->root();
- if (b->isObject())
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(b));
+ if (isObject()) {
+ if (auto container = QJsonPrivate::Value::container(d->value))
+ return QJsonObject(container);
}
return QJsonObject();
}
@@ -482,10 +576,9 @@ QJsonObject QJsonDocument::object() const
*/
QJsonArray QJsonDocument::array() const
{
- if (d) {
- QJsonPrivate::Base *b = d->header->root();
- if (b->isArray())
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(b));
+ if (isArray()) {
+ if (auto container = QJsonPrivate::Value::container(d->value))
+ return QJsonArray(container);
}
return QJsonArray();
}
@@ -497,24 +590,12 @@ QJsonArray QJsonDocument::array() const
*/
void QJsonDocument::setObject(const QJsonObject &object)
{
- if (d && !d->ref.deref())
- delete d;
-
- d = object.d;
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
- if (!d) {
- d = new QJsonPrivate::Data(0, QJsonValue::Object);
- } else if (d->compactionCounter || object.o != d->header->root()) {
- QJsonObject o(object);
- if (d->compactionCounter)
- o.compact();
- else
- o.detach2();
- d = o.d;
- d->ref.ref();
- return;
- }
- d->ref.ref();
+ d->value = QCborValue::fromJsonValue(object);
}
/*!
@@ -524,24 +605,12 @@ void QJsonDocument::setObject(const QJsonObject &object)
*/
void QJsonDocument::setArray(const QJsonArray &array)
{
- if (d && !d->ref.deref())
- delete d;
-
- d = array.d;
+ if (!d)
+ d = qt_make_unique<QJsonDocumentPrivate>();
+ else
+ d->clearRawData();
- if (!d) {
- d = new QJsonPrivate::Data(0, QJsonValue::Array);
- } else if (d->compactionCounter || array.a != d->header->root()) {
- QJsonArray a(array);
- if (d->compactionCounter)
- a.compact();
- else
- a.detach2();
- d = a.d;
- d->ref.ref();
- return;
- }
- d->ref.ref();
+ d->value = QCborValue::fromJsonValue(array);
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -572,7 +641,7 @@ const QJsonValue QJsonDocument::operator[](QStringView key) const
if (!isObject())
return QJsonValue(QJsonValue::Undefined);
- return object().value(key);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toMap().value(key));
}
/*!
@@ -584,7 +653,7 @@ const QJsonValue QJsonDocument::operator[](QLatin1String key) const
if (!isObject())
return QJsonValue(QJsonValue::Undefined);
- return object().value(key);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toMap().value(key));
}
/*!
@@ -604,7 +673,7 @@ const QJsonValue QJsonDocument::operator[](int i) const
if (!isArray())
return QJsonValue(QJsonValue::Undefined);
- return array().at(i);
+ return QJsonPrivate::Value::fromTrustedCbor(d->value.toArray().at(i));
}
/*!
@@ -612,21 +681,7 @@ const QJsonValue QJsonDocument::operator[](int i) const
*/
bool QJsonDocument::operator==(const QJsonDocument &other) const
{
- if (d == other.d)
- return true;
-
- if (!d || !other.d)
- return false;
-
- if (d->header->root()->isArray() != other.d->header->root()->isArray())
- return false;
-
- if (d->header->root()->isObject())
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root()))
- == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.d->header->root()));
- else
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root()))
- == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.d->header->root()));
+ return (!d) ? (!other.d) : (d->value == other.d->value);
}
/*!
@@ -658,10 +713,11 @@ QDebug operator<<(QDebug dbg, const QJsonDocument &o)
return dbg;
}
QByteArray json;
- if (o.d->header->root()->isArray())
- QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(o.d->header->root()), json, 0, true);
+ const QCborContainerPrivate *container = QJsonPrivate::Value::container(o.d->value);
+ if (o.d->value.isArray())
+ QJsonPrivate::Writer::arrayToJson(container, json, 0, true);
else
- QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(o.d->header->root()), json, 0, true);
+ QJsonPrivate::Writer::objectToJson(container, json, 0, true);
dbg.nospace() << "QJsonDocument("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ')';
diff --git a/src/corelib/serialization/qjsondocument.h b/src/corelib/serialization/qjsondocument.h
index a8e7485f5d..325e47b531 100644
--- a/src/corelib/serialization/qjsondocument.h
+++ b/src/corelib/serialization/qjsondocument.h
@@ -41,14 +41,16 @@
#define QJSONDOCUMENT_H
#include <QtCore/qjsonvalue.h>
+#include <QtCore/qscopedpointer.h>
+
+#include <memory>
QT_BEGIN_NAMESPACE
class QDebug;
+class QCborValue;
-namespace QJsonPrivate {
- class Parser;
-}
+namespace QJsonPrivate { class Parser; }
struct Q_CORE_EXPORT QJsonParseError
{
@@ -76,6 +78,7 @@ struct Q_CORE_EXPORT QJsonParseError
ParseError error;
};
+class QJsonDocumentPrivate;
class Q_CORE_EXPORT QJsonDocument
{
public:
@@ -93,11 +96,7 @@ public:
QJsonDocument(const QJsonDocument &other);
QJsonDocument &operator =(const QJsonDocument &other);
- QJsonDocument(QJsonDocument &&other) noexcept
- : d(other.d)
- {
- other.d = nullptr;
- }
+ QJsonDocument(QJsonDocument &&other) noexcept;
QJsonDocument &operator =(QJsonDocument &&other) noexcept
{
@@ -105,21 +104,20 @@ public:
return *this;
}
- void swap(QJsonDocument &other) noexcept
- {
- qSwap(d, other.d);
- }
+ void swap(QJsonDocument &other) noexcept;
enum DataValidation {
Validate,
BypassValidation
};
+#if QT_CONFIG(binaryjson)
static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate);
const char *rawData(int *size) const;
static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate);
QByteArray toBinaryData() const;
+#endif // QT_CONFIG(binaryjson)
static QJsonDocument fromVariant(const QVariant &variant);
QVariant toVariant() const;
@@ -160,13 +158,12 @@ public:
private:
friend class QJsonValue;
- friend class QJsonPrivate::Data;
friend class QJsonPrivate::Parser;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
- QJsonDocument(QJsonPrivate::Data *data);
+ QJsonDocument(const QCborValue &data);
- QJsonPrivate::Data *d;
+ std::unique_ptr<QJsonDocumentPrivate> d;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonDocument)
diff --git a/src/corelib/serialization/qjsonobject.cpp b/src/corelib/serialization/qjsonobject.cpp
index 8b095db915..ae37481f31 100644
--- a/src/corelib/serialization/qjsonobject.cpp
+++ b/src/corelib/serialization/qjsonobject.cpp
@@ -40,11 +40,17 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qstringlist.h>
#include <qdebug.h>
#include <qvariant.h>
-#include "qjson_p.h"
+#include <qcbormap.h>
+
+#include <private/qcborvalue_p.h>
#include "qjsonwriter_p.h"
+#include "qjson_p.h"
+
+#include <algorithm>
QT_BEGIN_NAMESPACE
@@ -109,10 +115,7 @@ QT_BEGIN_NAMESPACE
\sa isEmpty()
*/
-QJsonObject::QJsonObject()
- : d(nullptr), o(nullptr)
-{
-}
+QJsonObject::QJsonObject() = default;
/*!
\fn QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
@@ -131,12 +134,10 @@ QJsonObject::QJsonObject()
/*!
\internal
*/
-QJsonObject::QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object)
- : d(data), o(object)
+QJsonObject::QJsonObject(QCborContainerPrivate *object)
+ : o(object)
{
- Q_ASSERT(d);
Q_ASSERT(o);
- d->ref.ref();
}
/*!
@@ -149,17 +150,19 @@ QJsonObject::QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object)
void QJsonObject::initialize()
{
- d = nullptr;
o = nullptr;
}
/*!
Destroys the object.
*/
-QJsonObject::~QJsonObject()
+QJsonObject::~QJsonObject() = default;
+
+QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
{
- if (d && !d->ref.deref())
- delete d;
+ initialize();
+ for (const auto &arg : args)
+ insert(arg.first, arg.second);
}
/*!
@@ -170,10 +173,13 @@ QJsonObject::~QJsonObject()
*/
QJsonObject::QJsonObject(const QJsonObject &other)
{
- d = other.d;
o = other.o;
- if (d)
- d->ref.ref();
+}
+
+QJsonObject::QJsonObject(QJsonObject &&other) noexcept
+ : o(other.o)
+{
+ other.o = nullptr;
}
/*!
@@ -181,15 +187,7 @@ QJsonObject::QJsonObject(const QJsonObject &other)
*/
QJsonObject &QJsonObject::operator =(const QJsonObject &other)
{
- if (d != other.d) {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
- }
o = other.o;
-
return *this;
}
@@ -225,55 +223,7 @@ QJsonObject &QJsonObject::operator =(const QJsonObject &other)
*/
QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
{
- QJsonObject object;
- if (map.isEmpty())
- return object;
-
- object.detach2(1024);
-
- QVector<QJsonPrivate::offset> offsets;
- QJsonPrivate::offset currentOffset;
- currentOffset = sizeof(QJsonPrivate::Base);
-
- // the map is already sorted, so we can simply append one entry after the other and
- // write the offset table at the end
- for (QVariantMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it) {
- QString key = it.key();
- QJsonValue val = QJsonValue::fromVariant(it.value());
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- bool latinKey = QJsonPrivate::useCompressed(key);
- int valueOffset = sizeof(QJsonPrivate::Entry) + QJsonPrivate::qStringSize(key, latinKey);
- int requiredSize = valueOffset + valueSize;
-
- if (!object.detach2(requiredSize + sizeof(QJsonPrivate::offset))) // offset for the new index entry
- return QJsonObject();
-
- QJsonPrivate::Entry *e = reinterpret_cast<QJsonPrivate::Entry *>(reinterpret_cast<char *>(object.o) + currentOffset);
- e->value.type = val.t;
- e->value.latinKey = latinKey;
- e->value.latinOrIntValue = latinOrIntValue;
- e->value.value = QJsonPrivate::Value::valueToStore(val, (char *)e - (char *)object.o + valueOffset);
- QJsonPrivate::copyString((char *)(e + 1), key, latinKey);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)e + valueOffset, latinOrIntValue);
-
- offsets << currentOffset;
- currentOffset += requiredSize;
- object.o->size = currentOffset;
- }
-
- // write table
- object.o->tableOffset = currentOffset;
- if (!object.detach2(sizeof(QJsonPrivate::offset)*offsets.size()))
- return QJsonObject();
- memcpy(object.o->table(), offsets.constData(), offsets.size()*sizeof(uint));
- object.o->length = offsets.size();
- object.o->size = currentOffset + sizeof(QJsonPrivate::offset)*offsets.size();
-
- return object;
+ return QCborMap::fromVariantMap(map).toJsonObject();
}
/*!
@@ -285,14 +235,7 @@ QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
*/
QVariantMap QJsonObject::toVariantMap() const
{
- QVariantMap map;
- if (o) {
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- map.insert(e->key(), QJsonValue(d, o, e->value).toVariant());
- }
- }
- return map;
+ return QCborMap::fromJsonObject(*this).toVariantMap();
}
/*!
@@ -324,15 +267,7 @@ QJsonObject QJsonObject::fromVariantHash(const QVariantHash &hash)
*/
QVariantHash QJsonObject::toVariantHash() const
{
- QVariantHash hash;
- if (o) {
- hash.reserve(o->length);
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- hash.insert(e->key(), QJsonValue(d, o, e->value).toVariant());
- }
- }
- return hash;
+ return QCborMap::fromJsonObject(*this).toVariantHash();
}
/*!
@@ -344,11 +279,9 @@ QStringList QJsonObject::keys() const
{
QStringList keys;
if (o) {
- keys.reserve(o->length);
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- keys.append(e->key());
- }
+ keys.reserve(o->elements.length() / 2);
+ for (int i = 0, end = o->elements.length(); i < end; i += 2)
+ keys.append(o->stringAt(i));
}
return keys;
}
@@ -358,10 +291,7 @@ QStringList QJsonObject::keys() const
*/
int QJsonObject::size() const
{
- if (!d)
- return 0;
-
- return o->length;
+ return o ? o->elements.length() / 2 : 0;
}
/*!
@@ -371,10 +301,24 @@ int QJsonObject::size() const
*/
bool QJsonObject::isEmpty() const
{
- if (!d)
- return true;
+ return !o || o->elements.isEmpty();
+}
- return !o->length;
+template<typename String>
+static int indexOf(const QExplicitlySharedDataPointer<QCborContainerPrivate> &o,
+ String key, bool *keyExists)
+{
+ const auto begin = QJsonPrivate::ConstKeyIterator(o->elements.constBegin());
+ const auto end = QJsonPrivate::ConstKeyIterator(o->elements.constEnd());
+
+ const auto it = std::lower_bound(
+ begin, end, key,
+ [&](const QJsonPrivate::ConstKeyIterator::value_type &e, const String &key) {
+ return o->stringCompareElement(e.key(), key) < 0;
+ });
+
+ *keyExists = (it != end) && o->stringEqualsElement((*it).key(), key);
+ return (it - begin) * 2;
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -415,14 +359,14 @@ QJsonValue QJsonObject::value(QLatin1String key) const
template <typename T>
QJsonValue QJsonObject::valueImpl(T key) const
{
- if (!d)
+ if (!o)
return QJsonValue(QJsonValue::Undefined);
bool keyExists;
- int i = o->indexOf(key, &keyExists);
+ int i = indexOf(o, key, &keyExists);
if (!keyExists)
return QJsonValue(QJsonValue::Undefined);
- return QJsonValue(d, o, o->entryAt(i)->value);
+ return QJsonPrivate::Value::fromTrustedCbor(o->valueAt(i + 1));
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -497,13 +441,16 @@ QJsonValueRef QJsonObject::operator [](QLatin1String key)
template <typename T>
QJsonValueRef QJsonObject::atImpl(T key)
{
+ if (!o)
+ o = new QCborContainerPrivate;
+
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = indexOf(o, key, &keyExists);
if (!keyExists) {
- iterator i = insertAt(index, key, QJsonValue(), false);
- index = i.i;
+ o->insertAt(index, key);
+ o->insertAt(index + 1, QCborValue::fromJsonValue(QJsonValue()));
}
- return QJsonValueRef(this, index);
+ return QJsonValueRef(this, index / 2);
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -550,12 +497,12 @@ QJsonObject::iterator QJsonObject::insert(QLatin1String key, const QJsonValue &v
template <typename T>
QJsonObject::iterator QJsonObject::insertImpl(T key, const QJsonValue &value)
{
- if (value.t == QJsonValue::Undefined) {
+ if (value.type() == QJsonValue::Undefined) {
remove(key);
return end();
}
bool keyExists = false;
- int pos = o ? o->indexOf(key, &keyExists) : 0;
+ int pos = o ? indexOf(o, key, &keyExists) : 0;
return insertAt(pos, key, value, keyExists);
}
@@ -565,40 +512,18 @@ QJsonObject::iterator QJsonObject::insertImpl(T key, const QJsonValue &value)
template <typename T>
QJsonObject::iterator QJsonObject::insertAt(int pos, T key, const QJsonValue &value, bool keyExists)
{
- QJsonValue val = value;
-
- bool latinOrIntValue;
- int valueSize = QJsonPrivate::Value::requiredStorage(val, &latinOrIntValue);
-
- bool latinKey = QJsonPrivate::useCompressed(key);
- int valueOffset = sizeof(QJsonPrivate::Entry) + QJsonPrivate::qStringSize(key, latinKey);
- int requiredSize = valueOffset + valueSize;
-
- if (!detach2(requiredSize + sizeof(QJsonPrivate::offset))) // offset for the new index entry
- return iterator();
-
- if (!o->length)
- o->tableOffset = sizeof(QJsonPrivate::Object);
-
- if (keyExists)
- ++d->compactionCounter;
-
- uint off = o->reserveSpace(requiredSize, pos, 1, keyExists);
- if (!off)
- return end();
-
- QJsonPrivate::Entry *e = o->entryAt(pos);
- e->value.type = val.t;
- e->value.latinKey = latinKey;
- e->value.latinOrIntValue = latinOrIntValue;
- e->value.value = QJsonPrivate::Value::valueToStore(val, (char *)e - (char *)o + valueOffset);
- QJsonPrivate::copyString((char *)(e + 1), key, latinKey);
- if (valueSize)
- QJsonPrivate::Value::copyData(val, (char *)e + valueOffset, latinOrIntValue);
-
- compactIfNeeded();
+ if (o)
+ detach2(o->elements.length() / 2 + (keyExists ? 0 : 1));
+ else
+ o = new QCborContainerPrivate;
- return iterator(this, pos);
+ if (keyExists) {
+ o->replaceAt(pos + 1, QCborValue::fromJsonValue(value));
+ } else {
+ o->insertAt(pos, key);
+ o->insertAt(pos + 1, QCborValue::fromJsonValue(value));
+ }
+ return {this, pos / 2};
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -637,11 +562,11 @@ void QJsonObject::remove(QLatin1String key)
template <typename T>
void QJsonObject::removeImpl(T key)
{
- if (!d)
+ if (!o)
return;
bool keyExists;
- int index = o->indexOf(key, &keyExists);
+ int index = indexOf(o, key, &keyExists);
if (!keyExists)
return;
@@ -692,13 +617,12 @@ QJsonValue QJsonObject::takeImpl(T key)
return QJsonValue(QJsonValue::Undefined);
bool keyExists;
- int index = o->indexOf(key, &keyExists);
+ int index = indexOf(o, key, &keyExists);
if (!keyExists)
return QJsonValue(QJsonValue::Undefined);
- QJsonValue v(d, o, o->entryAt(index)->value);
+ const QJsonValue v = QJsonPrivate::Value::fromTrustedCbor(o->extractAt(index + 1));
removeAt(index);
-
return v;
}
@@ -742,7 +666,7 @@ bool QJsonObject::containsImpl(T key) const
return false;
bool keyExists;
- o->indexOf(key, &keyExists);
+ indexOf(o, key, &keyExists);
return keyExists;
}
@@ -755,16 +679,14 @@ bool QJsonObject::operator==(const QJsonObject &other) const
return true;
if (!o)
- return !other.o->length;
+ return !other.o->elements.length();
if (!other.o)
- return !o->length;
- if (o->length != other.o->length)
+ return !o->elements.length();
+ if (o->elements.length() != other.o->elements.length())
return false;
- for (uint i = 0; i < o->length; ++i) {
- QJsonPrivate::Entry *e = o->entryAt(i);
- QJsonValue v(d, o, e->value);
- if (other.value(e->key()) != v)
+ for (int i = 0, end = o->elements.length(); i < end; ++i) {
+ if (o->valueAt(i) != other.o->valueAt(i))
return false;
}
@@ -788,9 +710,8 @@ bool QJsonObject::operator!=(const QJsonObject &other) const
*/
QJsonObject::iterator QJsonObject::erase(QJsonObject::iterator it)
{
- Q_ASSERT(d && d->ref.loadRelaxed() == 1);
- if (it.o != this || it.i < 0 || it.i >= (int)o->length)
- return iterator(this, o->length);
+ if (it.o != this || it.i < 0 || it.i >= o->elements.length())
+ return {this, o->elements.length()};
int index = it.i;
@@ -839,11 +760,11 @@ template <typename T>
QJsonObject::iterator QJsonObject::findImpl(T key)
{
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = o ? indexOf(o, key, &keyExists) : 0;
if (!keyExists)
return end();
detach2();
- return iterator(this, index);
+ return {this, index / 2};
}
#if QT_STRINGVIEW_LEVEL < 2
@@ -904,10 +825,10 @@ template <typename T>
QJsonObject::const_iterator QJsonObject::constFindImpl(T key) const
{
bool keyExists = false;
- int index = o ? o->indexOf(key, &keyExists) : 0;
+ int index = o ? indexOf(o, key, &keyExists) : 0;
if (!keyExists)
return end();
- return const_iterator(this, index);
+ return {this, index / 2};
}
/*! \fn int QJsonObject::count() const
@@ -1500,28 +1421,10 @@ void QJsonObject::detach(uint reserve)
bool QJsonObject::detach2(uint reserve)
{
- if (!d) {
- if (reserve >= QJsonPrivate::Value::MaxSize) {
- qWarning("QJson: Document too large to store in data structure");
- return false;
- }
- d = new QJsonPrivate::Data(reserve, QJsonValue::Object);
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
- d->ref.ref();
- return true;
- }
- if (reserve == 0 && d->ref.loadRelaxed() == 1)
+ if (!o)
return true;
-
- QJsonPrivate::Data *x = d->clone(o, reserve);
- if (!x)
- return false;
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
- return true;
+ o = QCborContainerPrivate::detach(o.data(), reserve ? reserve * 2 : o->elements.length());
+ return o;
}
/*!
@@ -1529,21 +1432,11 @@ bool QJsonObject::detach2(uint reserve)
*/
void QJsonObject::compact()
{
- if (!d || !d->compactionCounter)
+ if (!o)
return;
detach2();
- d->compact();
- o = static_cast<QJsonPrivate::Object *>(d->header->root());
-}
-
-/*!
- \internal
- */
-void QJsonObject::compactIfNeeded()
-{
- if (d->compactionCounter > 32u && d->compactionCounter >= unsigned(o->length) / 2u)
- compact();
+ o->compact(o->elements.length());
}
/*!
@@ -1551,10 +1444,8 @@ void QJsonObject::compactIfNeeded()
*/
QString QJsonObject::keyAt(int i) const
{
- Q_ASSERT(o && i >= 0 && i < (int)o->length);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- return e->key();
+ Q_ASSERT(o && i >= 0 && i * 2 < o->elements.length());
+ return o->stringAt(i * 2);
}
/*!
@@ -1562,11 +1453,9 @@ QString QJsonObject::keyAt(int i) const
*/
QJsonValue QJsonObject::valueAt(int i) const
{
- if (!o || i < 0 || i >= (int)o->length)
+ if (!o || i < 0 || 2 * i + 1 >= o->elements.length())
return QJsonValue(QJsonValue::Undefined);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- return QJsonValue(d, o, e->value);
+ return QJsonPrivate::Value::fromTrustedCbor(o->valueAt(2 * i + 1));
}
/*!
@@ -1574,13 +1463,13 @@ QJsonValue QJsonObject::valueAt(int i) const
*/
void QJsonObject::setValueAt(int i, const QJsonValue &val)
{
- Q_ASSERT(o && i >= 0 && i < (int)o->length);
-
- QJsonPrivate::Entry *e = o->entryAt(i);
- if (val.t == QJsonValue::Undefined)
- removeAt(i);
- else
- insertAt(i, e->key(), val, true);
+ Q_ASSERT(o && i >= 0 && 2 * i + 1 < o->elements.length());
+ if (val.isUndefined()) {
+ o->removeAt(2 * i + 1);
+ o->removeAt(2 * i);
+ } else {
+ o->replaceAt(2 * i + 1, QCborValue::fromJsonValue(val));
+ }
}
/*!
@@ -1589,9 +1478,8 @@ void QJsonObject::setValueAt(int i, const QJsonValue &val)
void QJsonObject::removeAt(int index)
{
detach2();
- o->removeItems(index, 1);
- ++d->compactionCounter;
- compactIfNeeded();
+ o->removeAt(index + 1);
+ o->removeAt(index);
}
uint qHash(const QJsonObject &object, uint seed)
@@ -1614,7 +1502,7 @@ QDebug operator<<(QDebug dbg, const QJsonObject &o)
return dbg;
}
QByteArray json;
- QJsonPrivate::Writer::objectToJson(o.o, json, 0, true);
+ QJsonPrivate::Writer::objectToJson(o.o.data(), json, 0, true);
dbg.nospace() << "QJsonObject("
<< json.constData() // print as utf-8 string without extra quotation marks
<< ")";
diff --git a/src/corelib/serialization/qjsonobject.h b/src/corelib/serialization/qjsonobject.h
index 53db1e1c08..cfb44c9c55 100644
--- a/src/corelib/serialization/qjsonobject.h
+++ b/src/corelib/serialization/qjsonobject.h
@@ -43,6 +43,7 @@
#include <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
#include <QtCore/qpair.h>
+#include <QtCore/qshareddata.h>
#include <initializer_list>
QT_BEGIN_NAMESPACE
@@ -53,29 +54,21 @@ typedef QMap<QString, QVariant> QVariantMap;
template <class Key, class T> class QHash;
typedef QHash<QString, QVariant> QVariantHash;
+class QCborContainerPrivate;
+
class Q_CORE_EXPORT QJsonObject
{
public:
QJsonObject();
- QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)
- {
- initialize();
- for (std::initializer_list<QPair<QString, QJsonValue> >::const_iterator i = args.begin(); i != args.end(); ++i)
- insert(i->first, i->second);
- }
+ QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args);
~QJsonObject();
QJsonObject(const QJsonObject &other);
QJsonObject &operator =(const QJsonObject &other);
- QJsonObject(QJsonObject &&other) noexcept
- : d(other.d), o(other.o)
- {
- other.d = nullptr;
- other.o = nullptr;
- }
+ QJsonObject(QJsonObject &&other) noexcept;
QJsonObject &operator =(QJsonObject &&other) noexcept
{
@@ -85,7 +78,6 @@ public:
void swap(QJsonObject &other) noexcept
{
- qSwap(d, other.d);
qSwap(o, other.o);
}
@@ -275,20 +267,18 @@ public:
inline bool empty() const { return isEmpty(); }
private:
- friend class QJsonPrivate::Data;
friend class QJsonValue;
friend class QJsonDocument;
friend class QJsonValueRef;
-
+ friend class QCborMap;
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &);
- QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object);
+ QJsonObject(QCborContainerPrivate *object);
void initialize();
// ### Qt 6: remove me and merge with detach2
void detach(uint reserve = 0);
bool detach2(uint reserve = 0);
void compact();
- void compactIfNeeded();
template <typename T> QJsonValue valueImpl(T key) const;
template <typename T> QJsonValueRef atImpl(T key);
@@ -305,8 +295,9 @@ private:
void removeAt(int i);
template <typename T> iterator insertAt(int i, T key, const QJsonValue &val, bool exists);
- QJsonPrivate::Data *d;
- QJsonPrivate::Object *o;
+ // ### Qt 6: remove
+ void *dead = nullptr;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> o;
};
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QJsonObject)
diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp
index cd36bd5a5b..aab8112d7f 100644
--- a/src/corelib/serialization/qjsonparser.cpp
+++ b/src/corelib/serialization/qjsonparser.cpp
@@ -45,6 +45,8 @@
#include "qjsonparser_p.h"
#include "qjson_p.h"
#include "private/qutfcodec_p.h"
+#include "private/qcborvalue_p.h"
+#include "private/qnumeric_p.h"
//#define PARSER_DEBUG
#ifdef PARSER_DEBUG
@@ -197,9 +199,32 @@ QString QJsonParseError::errorString() const
using namespace QJsonPrivate;
+class StashedContainer
+{
+ Q_DISABLE_COPY_MOVE(StashedContainer)
+public:
+ StashedContainer(QExplicitlySharedDataPointer<QCborContainerPrivate> *container,
+ QCborValue::Type type)
+ : type(type), stashed(std::move(*container)), current(container)
+ {
+ }
+
+ ~StashedContainer()
+ {
+ stashed->append(QCborContainerPrivate::makeValue(type, -1, current->take(),
+ QCborContainerPrivate::MoveContainer));
+ *current = std::move(stashed);
+ }
+
+private:
+ QCborValue::Type type;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> stashed;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> *current;
+};
+
Parser::Parser(const char *json, int length)
- : head(json), json(json), data(nullptr)
- , dataLength(0), current(0), nestingLevel(0)
+ : head(json), json(json)
+ , nestingLevel(0)
, lastError(QJsonParseError::NoError)
{
end = json + length;
@@ -297,34 +322,30 @@ char Parser::nextToken()
/*
JSON-text = object / array
*/
-QJsonDocument Parser::parse(QJsonParseError *error)
+QCborValue Parser::parse(QJsonParseError *error)
{
#ifdef PARSER_DEBUG
indent = 0;
qDebug(">>>>> parser begin");
#endif
- // allocate some space
- dataLength = qMax(end - json, (ptrdiff_t) 256);
- data = (char *)malloc(dataLength);
- Q_CHECK_PTR(data);
-
- // fill in Header data
- QJsonPrivate::Header *h = (QJsonPrivate::Header *)data;
- h->tag = QJsonDocument::BinaryFormatTag;
- h->version = 1u;
-
- current = sizeof(QJsonPrivate::Header);
-
eatBOM();
char token = nextToken();
+ QCborValue data;
+
DEBUG << Qt::hex << (uint)token;
if (token == BeginArray) {
+ container = new QCborContainerPrivate;
if (!parseArray())
goto error;
+ data = QCborContainerPrivate::makeValue(QCborValue::Array, -1, container.take(),
+ QCborContainerPrivate::MoveContainer);
} else if (token == BeginObject) {
+ container = new QCborContainerPrivate;
if (!parseObject())
goto error;
+ data = QCborContainerPrivate::makeValue(QCborValue::Map, -1, container.take(),
+ QCborContainerPrivate::MoveContainer);
} else {
lastError = QJsonParseError::IllegalValue;
goto error;
@@ -342,44 +363,95 @@ QJsonDocument Parser::parse(QJsonParseError *error)
error->offset = 0;
error->error = QJsonParseError::NoError;
}
- QJsonPrivate::Data *d = new QJsonPrivate::Data(data, current);
- return QJsonDocument(d);
+
+ return data;
}
error:
#ifdef PARSER_DEBUG
qDebug(">>>>> parser error");
#endif
+ container.reset();
if (error) {
error->offset = json - head;
error->error = lastError;
}
- free(data);
- return QJsonDocument();
+ return QCborValue();
}
-void Parser::ParsedObject::insert(uint offset) {
- const QJsonPrivate::Entry *newEntry = reinterpret_cast<const QJsonPrivate::Entry *>(parser->data + objectPosition + offset);
- int min = 0;
- int n = offsets.size();
- while (n > 0) {
- int half = n >> 1;
- int middle = min + half;
- if (*entryAt(middle) >= *newEntry) {
- n = half;
- } else {
- min = middle + 1;
- n -= half + 1;
+
+static void sortContainer(QCborContainerPrivate *container)
+{
+ using Forward = QJsonPrivate::KeyIterator;
+ using Reverse = std::reverse_iterator<Forward>;
+ using Value = Forward::value_type;
+
+ auto compare = [container](const Value &a, const Value &b)
+ {
+ const auto &aKey = a.key();
+ const auto &bKey = b.key();
+
+ Q_ASSERT(aKey.flags & QtCbor::Element::HasByteData);
+ Q_ASSERT(bKey.flags & QtCbor::Element::HasByteData);
+
+ const QtCbor::ByteData *aData = container->byteData(aKey);
+ const QtCbor::ByteData *bData = container->byteData(bKey);
+
+ if (!aData)
+ return bData ? -1 : 0;
+ if (!bData)
+ return 1;
+
+ // If StringIsAscii is set, we can use either the UTF-8 or the latin1 comparison
+ // for the string as ASCII is a subset of both. If nothing is set, that means UTF-8.
+
+ // We are currently missing an efficient comparison between UTF-8 and UTF-16 strings.
+ // Therefore, we need to convert the UTF-8 string if we encounter such a case.
+
+ if (aKey.flags & QtCbor::Element::StringIsAscii) {
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QtPrivate::compareStrings(aData->asLatin1(), bData->asLatin1());
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->asLatin1(), bData->asStringView());
+
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
}
- }
- if (min < offsets.size() && *entryAt(min) == *newEntry) {
- offsets[min] = offset;
- } else {
- offsets.insert(min, offset);
- }
+
+ if (aKey.flags & QtCbor::Element::StringIsUtf16) {
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QtPrivate::compareStrings(aData->asStringView(), bData->asLatin1());
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->asStringView(), bData->asStringView());
+
+ // Nasty case. a is UTF-16 and b is UTF-8
+ return QtPrivate::compareStrings(aData->asStringView(), bData->toUtf8String());
+ }
+
+ if (bKey.flags & QtCbor::Element::StringIsAscii)
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
+
+ // Nasty case. a is UTF-8 and b is UTF-16
+ if (bKey.flags & QtCbor::Element::StringIsUtf16)
+ return QtPrivate::compareStrings(aData->toUtf8String(), bData->asStringView());
+
+ return QCborContainerPrivate::compareUtf8(aData, bData->asLatin1());
+ };
+
+ std::sort(Forward(container->elements.begin()), Forward(container->elements.end()),
+ [&compare](const Value &a, const Value &b) { return compare(a, b) < 0; });
+
+ // We need to retain the _last_ value for any duplicate keys. Therefore the reverse dance here.
+ auto it = std::unique(Reverse(container->elements.end()), Reverse(container->elements.begin()),
+ [&compare](const Value &a, const Value &b) {
+ return compare(a, b) == 0;
+ }).base().elementsIterator();
+
+ // The erase from beginning is expensive but hopefully rare.
+ container->elements.erase(container->elements.begin(), it);
}
+
/*
object = begin-object [ member *( value-separator member ) ]
end-object
@@ -392,19 +464,14 @@ bool Parser::parseObject()
return false;
}
- int objectOffset = reserveSpace(sizeof(QJsonPrivate::Object));
- if (objectOffset < 0)
- return false;
- BEGIN << "parseObject pos=" << objectOffset << current << json;
-
- ParsedObject parsedObject(this, objectOffset);
+ BEGIN << "parseObject" << json;
char token = nextToken();
while (token == Quote) {
- int off = current - objectOffset;
- if (!parseMember(objectOffset))
+ if (!container)
+ container = new QCborContainerPrivate;
+ if (!parseMember())
return false;
- parsedObject.insert(off);
token = nextToken();
if (token != ValueSeparator)
break;
@@ -421,50 +488,23 @@ bool Parser::parseObject()
return false;
}
- DEBUG << "numEntries" << parsedObject.offsets.size();
- int table = objectOffset;
- // finalize the object
- if (parsedObject.offsets.size()) {
- int tableSize = parsedObject.offsets.size()*sizeof(uint);
- table = reserveSpace(tableSize);
- if (table < 0)
- return false;
-
-#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
- memcpy(data + table, parsedObject.offsets.constData(), tableSize);
-#else
- offset *o = (offset *)(data + table);
- for (int i = 0; i < parsedObject.offsets.size(); ++i)
- o[i] = parsedObject.offsets[i];
-
-#endif
- }
-
- QJsonPrivate::Object *o = (QJsonPrivate::Object *)(data + objectOffset);
- o->tableOffset = table - objectOffset;
- o->size = current - objectOffset;
- o->is_object = true;
- o->length = parsedObject.offsets.size();
-
- DEBUG << "current=" << current;
END;
--nestingLevel;
+
+ if (container)
+ sortContainer(container.data());
return true;
}
/*
member = string name-separator value
*/
-bool Parser::parseMember(int baseOffset)
+bool Parser::parseMember()
{
- int entryOffset = reserveSpace(sizeof(QJsonPrivate::Entry));
- if (entryOffset < 0)
- return false;
- BEGIN << "parseMember pos=" << entryOffset;
+ BEGIN << "parseMember";
- bool latin1;
- if (!parseString(&latin1))
+ if (!parseString())
return false;
char token = nextToken();
if (token != NameSeparator) {
@@ -475,56 +515,13 @@ bool Parser::parseMember(int baseOffset)
lastError = QJsonParseError::UnterminatedObject;
return false;
}
- QJsonPrivate::Value val;
- if (!parseValue(&val, baseOffset))
+ if (!parseValue())
return false;
- // finalize the entry
- QJsonPrivate::Entry *e = (QJsonPrivate::Entry *)(data + entryOffset);
- e->value = val;
- e->value.latinKey = latin1;
-
END;
return true;
}
-namespace {
- struct ValueArray {
- static const int prealloc = 128;
- ValueArray() : data(stackValues), alloc(prealloc), size(0) {}
- ~ValueArray() { if (data != stackValues) free(data); }
-
- inline bool grow() {
- alloc *= 2;
- if (data == stackValues) {
- QJsonPrivate::Value *newValues = static_cast<QJsonPrivate::Value *>(malloc(alloc*sizeof(QJsonPrivate::Value)));
- if (!newValues)
- return false;
- memcpy(newValues, data, size*sizeof(QJsonPrivate::Value));
- data = newValues;
- } else {
- void *newValues = realloc(data, alloc * sizeof(QJsonPrivate::Value));
- if (!newValues)
- return false;
- data = static_cast<QJsonPrivate::Value *>(newValues);
- }
- return true;
- }
- bool append(const QJsonPrivate::Value &v) {
- if (alloc == size && !grow())
- return false;
- data[size] = v;
- ++size;
- return true;
- }
-
- QJsonPrivate::Value stackValues[prealloc];
- QJsonPrivate::Value *data;
- int alloc;
- int size;
- };
-}
-
/*
array = begin-array [ value *( value-separator value ) ] end-array
*/
@@ -537,12 +534,6 @@ bool Parser::parseArray()
return false;
}
- int arrayOffset = reserveSpace(sizeof(QJsonPrivate::Array));
- if (arrayOffset < 0)
- return false;
-
- ValueArray values;
-
if (!eatSpace()) {
lastError = QJsonParseError::UnterminatedArray;
return false;
@@ -555,13 +546,10 @@ bool Parser::parseArray()
lastError = QJsonParseError::UnterminatedArray;
return false;
}
- QJsonPrivate::Value val;
- if (!parseValue(&val, arrayOffset))
- return false;
- if (!values.append(val)) {
- lastError = QJsonParseError::DocumentTooLarge;
+ if (!container)
+ container = new QCborContainerPrivate;
+ if (!parseValue())
return false;
- }
char token = nextToken();
if (token == EndArray)
break;
@@ -575,27 +563,11 @@ bool Parser::parseArray()
}
}
- DEBUG << "size =" << values.size;
- int table = arrayOffset;
- // finalize the object
- if (values.size) {
- int tableSize = values.size*sizeof(QJsonPrivate::Value);
- table = reserveSpace(tableSize);
- if (table < 0)
- return false;
- memcpy(data + table, values.data, tableSize);
- }
-
- QJsonPrivate::Array *a = (QJsonPrivate::Array *)(data + arrayOffset);
- a->tableOffset = table - arrayOffset;
- a->size = current - arrayOffset;
- a->is_object = false;
- a->length = values.size;
-
- DEBUG << "current=" << current;
+ DEBUG << "size =" << (container ? container->elements.length() : 0);
END;
--nestingLevel;
+
return true;
}
@@ -604,10 +576,9 @@ value = false / null / true / object / array / number / string
*/
-bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
+bool Parser::parseValue()
{
BEGIN << "parse Value" << json;
- val->_dummy = 0;
switch (*json++) {
case 'n':
@@ -618,7 +589,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
if (*json++ == 'u' &&
*json++ == 'l' &&
*json++ == 'l') {
- val->type = QJsonValue::Null;
+ container->append(QCborValue(QCborValue::Null));
DEBUG << "value: null";
END;
return true;
@@ -633,8 +604,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
if (*json++ == 'r' &&
*json++ == 'u' &&
*json++ == 'e') {
- val->type = QJsonValue::Bool;
- val->value = true;
+ container->append(QCborValue(true));
DEBUG << "value: true";
END;
return true;
@@ -650,8 +620,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
*json++ == 'l' &&
*json++ == 's' &&
*json++ == 'e') {
- val->type = QJsonValue::Bool;
- val->value = false;
+ container->append(QCborValue(false));
DEBUG << "value: false";
END;
return true;
@@ -659,44 +628,28 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
lastError = QJsonParseError::IllegalValue;
return false;
case Quote: {
- val->type = QJsonValue::String;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
+ if (!parseString())
return false;
- }
- val->value = current - baseOffset;
- bool latin1;
- if (!parseString(&latin1))
- return false;
- val->latinOrIntValue = latin1;
DEBUG << "value: string";
END;
return true;
}
- case BeginArray:
- val->type = QJsonValue::Array;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = current - baseOffset;
+ case BeginArray: {
+ StashedContainer stashedContainer(&container, QCborValue::Array);
if (!parseArray())
return false;
DEBUG << "value: array";
END;
return true;
- case BeginObject:
- val->type = QJsonValue::Object;
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = current - baseOffset;
+ }
+ case BeginObject: {
+ StashedContainer stashedContainer(&container, QCborValue::Map);
if (!parseObject())
return false;
DEBUG << "value: object";
END;
return true;
+ }
case ValueSeparator:
// Essentially missing value, but after a colon, not after a comma
// like the other MissingObject errors.
@@ -708,7 +661,7 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
return false;
default:
--json;
- if (!parseNumber(val, baseOffset))
+ if (!parseNumber())
return false;
DEBUG << "value: number";
END;
@@ -735,10 +688,9 @@ bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
*/
-bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
+bool Parser::parseNumber()
{
BEGIN << "parseNumber" << json;
- val->type = QJsonValue::Double;
const char *start = json;
bool isInt = true;
@@ -757,10 +709,11 @@ bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
// frac = decimal-point 1*DIGIT
if (json < end && *json == '.') {
- isInt = false;
++json;
- while (json < end && *json >= '0' && *json <= '9')
+ while (json < end && *json >= '0' && *json <= '9') {
+ isInt = isInt && *json == '0';
++json;
+ }
}
// exp = e [ minus / plus ] 1*DIGIT
@@ -778,42 +731,32 @@ bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
return false;
}
- QByteArray number(start, json - start);
+ const QByteArray number = QByteArray::fromRawData(start, json - start);
DEBUG << "numberstring" << number;
if (isInt) {
bool ok;
- int n = number.toInt(&ok);
- if (ok && n < (1<<25) && n > -(1<<25)) {
- val->int_value = n;
- val->latinOrIntValue = true;
+ qlonglong n = number.toLongLong(&ok);
+ if (ok) {
+ container->append(QCborValue(n));
END;
return true;
}
}
bool ok;
- union {
- quint64 ui;
- double d;
- };
- d = number.toDouble(&ok);
+ double d = number.toDouble(&ok);
if (!ok) {
lastError = QJsonParseError::IllegalNumber;
return false;
}
- int pos = reserveSpace(sizeof(double));
- if (pos < 0)
- return false;
- qToLittleEndian(ui, data + pos);
- if (current - baseOffset >= Value::MaxSize) {
- lastError = QJsonParseError::DocumentTooLarge;
- return false;
- }
- val->value = pos - baseOffset;
- val->latinOrIntValue = false;
+ qint64 n;
+ if (convertDoubleTo(d, &n))
+ container->append(QCborValue(n));
+ else
+ container->append(QCborValue(d));
END;
return true;
@@ -902,58 +845,45 @@ static inline bool scanEscapeSequence(const char *&json, const char *end, uint *
static inline bool scanUtf8Char(const char *&json, const char *end, uint *result)
{
- const uchar *&src = reinterpret_cast<const uchar *&>(json);
- const uchar *uend = reinterpret_cast<const uchar *>(end);
- uchar b = *src++;
- int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, result, src, uend);
- if (res < 0) {
- // decoding error, backtrack the character we read above
- --json;
+ const auto *usrc = reinterpret_cast<const uchar *>(json);
+ const auto *uend = reinterpret_cast<const uchar *>(end);
+ const uchar b = *usrc++;
+ int res = QUtf8Functions::fromUtf8<QUtf8BaseTraits>(b, result, usrc, uend);
+ if (res < 0)
return false;
- }
+ json = reinterpret_cast<const char *>(usrc);
return true;
}
-bool Parser::parseString(bool *latin1)
+bool Parser::parseString()
{
- *latin1 = true;
-
const char *start = json;
- int outStart = current;
- // try to write out a latin1 string
+ // try to parse a utf-8 string without escape sequences, and note whether it's 7bit ASCII.
- int stringPos = reserveSpace(2);
- if (stringPos < 0)
- return false;
-
- BEGIN << "parse string stringPos=" << stringPos << json;
+ BEGIN << "parse string" << json;
+ bool isUtf8 = true;
+ bool isAscii = true;
while (json < end) {
uint ch = 0;
if (*json == '"')
break;
- else if (*json == '\\') {
- if (!scanEscapeSequence(json, end, &ch)) {
- lastError = QJsonParseError::IllegalEscapeSequence;
- return false;
- }
- } else {
- if (!scanUtf8Char(json, end, &ch)) {
- lastError = QJsonParseError::IllegalUTF8String;
- return false;
- }
- }
- // bail out if the string is not pure latin1 or too long to hold as a latin1string (which has only 16 bit for the length)
- if (ch > 0xff || json - start >= 0x8000) {
- *latin1 = false;
+ if (*json == '\\') {
+ isAscii = false;
+ // If we find escape sequences, we store UTF-16 as there are some
+ // escape sequences which are hard to represent in UTF-8.
+ // (plain "\\ud800" for example)
+ isUtf8 = false;
break;
}
- int pos = reserveSpace(1);
- if (pos < 0)
+ if (!scanUtf8Char(json, end, &ch)) {
+ lastError = QJsonParseError::IllegalUTF8String;
return false;
- DEBUG << " " << ch << (char)ch;
- data[pos] = (uchar)ch;
+ }
+ if (ch > 0x7f)
+ isAscii = false;
+ DEBUG << " " << ch << char(ch);
}
++json;
DEBUG << "end of string";
@@ -962,25 +892,20 @@ bool Parser::parseString(bool *latin1)
return false;
}
- // no unicode string, we are done
- if (*latin1) {
- // write string length
- *(QJsonPrivate::qle_ushort *)(data + stringPos) = ushort(current - outStart - sizeof(ushort));
- int pos = reserveSpace((4 - current) & 3);
- if (pos < 0)
- return false;
- while (pos & 3)
- data[pos++] = 0;
+ // no escape sequences, we are done
+ if (isUtf8) {
+ container->appendByteData(start, json - start - 1, QCborValue::String,
+ isAscii ? QtCbor::Element::StringIsAscii
+ : QtCbor::Element::ValueFlags {});
END;
return true;
}
- *latin1 = false;
- DEBUG << "not latin";
+ DEBUG << "has escape sequences";
json = start;
- current = outStart + sizeof(int);
+ QString ucs4;
while (json < end) {
uint ch = 0;
if (*json == '"')
@@ -997,16 +922,10 @@ bool Parser::parseString(bool *latin1)
}
}
if (QChar::requiresSurrogates(ch)) {
- int pos = reserveSpace(4);
- if (pos < 0)
- return false;
- *(QJsonPrivate::qle_ushort *)(data + pos) = QChar::highSurrogate(ch);
- *(QJsonPrivate::qle_ushort *)(data + pos + 2) = QChar::lowSurrogate(ch);
+ ucs4.append(QChar::highSurrogate(ch));
+ ucs4.append(QChar::lowSurrogate(ch));
} else {
- int pos = reserveSpace(2);
- if (pos < 0)
- return false;
- *(QJsonPrivate::qle_ushort *)(data + pos) = (ushort)ch;
+ ucs4.append(QChar(ushort(ch)));
}
}
++json;
@@ -1016,13 +935,8 @@ bool Parser::parseString(bool *latin1)
return false;
}
- // write string length
- *(QJsonPrivate::qle_int *)(data + stringPos) = (current - outStart - sizeof(int))/2;
- int pos = reserveSpace((4 - current) & 3);
- if (pos < 0)
- return false;
- while (pos & 3)
- data[pos++] = 0;
+ container->appendByteData(reinterpret_cast<const char *>(ucs4.utf16()), ucs4.size() * 2,
+ QCborValue::String, QtCbor::Element::StringIsUtf16);
END;
return true;
}
diff --git a/src/corelib/serialization/qjsonparser_p.h b/src/corelib/serialization/qjsonparser_p.h
index 379256847f..14d9705447 100644
--- a/src/corelib/serialization/qjsonparser_p.h
+++ b/src/corelib/serialization/qjsonparser_p.h
@@ -52,8 +52,8 @@
//
#include <QtCore/private/qglobal_p.h>
-#include <qjsondocument.h>
-#include <qvarlengtharray.h>
+#include <QtCore/private/qcborvalue_p.h>
+#include <QtCore/qjsondocument.h>
QT_BEGIN_NAMESPACE
@@ -64,25 +64,7 @@ class Parser
public:
Parser(const char *json, int length);
- QJsonDocument parse(QJsonParseError *error);
-
- class ParsedObject
- {
- public:
- ParsedObject(Parser *p, int pos) : parser(p), objectPosition(pos) {
- offsets.reserve(64);
- }
- void insert(uint offset);
-
- Parser *parser;
- int objectPosition;
- QVector<uint> offsets;
-
- inline QJsonPrivate::Entry *entryAt(int i) const {
- return reinterpret_cast<QJsonPrivate::Entry *>(parser->data + objectPosition + offsets[i]);
- }
- };
-
+ QCborValue parse(QJsonParseError *error);
private:
inline void eatBOM();
@@ -91,34 +73,17 @@ private:
bool parseObject();
bool parseArray();
- bool parseMember(int baseOffset);
- bool parseString(bool *latin1);
- bool parseValue(QJsonPrivate::Value *val, int baseOffset);
- bool parseNumber(QJsonPrivate::Value *val, int baseOffset);
+ bool parseMember();
+ bool parseString();
+ bool parseValue();
+ bool parseNumber();
const char *head;
const char *json;
const char *end;
- char *data;
- int dataLength;
- int current;
int nestingLevel;
QJsonParseError::ParseError lastError;
-
- inline int reserveSpace(int space) {
- if (current + space >= dataLength) {
- dataLength = 2*dataLength + space;
- char *newData = (char *)realloc(data, dataLength);
- if (!newData) {
- lastError = QJsonParseError::DocumentTooLarge;
- return -1;
- }
- data = newData;
- }
- int pos = current;
- current += space;
- return pos;
- }
+ QExplicitlySharedDataPointer<QCborContainerPrivate> container;
};
}
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp
index 5f07a6a03e..db06a33a9f 100644
--- a/src/corelib/serialization/qjsonvalue.cpp
+++ b/src/corelib/serialization/qjsonvalue.cpp
@@ -40,6 +40,7 @@
#include <qjsonobject.h>
#include <qjsonvalue.h>
#include <qjsonarray.h>
+#include <qjsondocument.h>
#include <qurl.h>
#include <quuid.h>
#include <qvariant.h>
@@ -47,10 +48,11 @@
#include <qdebug.h>
#include "qdatastream.h"
-#ifndef QT_BOOTSTRAPPED
-# include <qcborarray.h>
-# include <qcbormap.h>
-#endif
+#include <private/qnumeric_p.h>
+#include <private/qcborvalue_p.h>
+
+#include <qcborarray.h>
+#include <qcbormap.h>
#include "qjson_p.h"
@@ -112,70 +114,63 @@ QT_BEGIN_NAMESPACE
The default is to create a Null value.
*/
QJsonValue::QJsonValue(Type type)
- : ui(0), d(nullptr), t(type)
+ : d(nullptr), t(QCborValue::Undefined)
{
-}
-
-/*!
- \internal
- */
-QJsonValue::QJsonValue(QJsonPrivate::Data *data, QJsonPrivate::Base *base, const QJsonPrivate::Value &v)
- : d(nullptr)
-{
- t = (Type)(uint)v.type;
- switch (t) {
- case Undefined:
+ switch (type) {
case Null:
- dbl = 0;
+ t = QCborValue::Null;
break;
case Bool:
- b = v.toBoolean();
+ t = QCborValue::False;
break;
case Double:
- dbl = v.toDouble(base);
+ t = QCborValue::Double;
break;
- case String: {
- QString s = v.toString(base);
- stringData = s.data_ptr();
- stringData->ref.ref();
+ case String:
+ t = QCborValue::String;
break;
- }
case Array:
+ t = QCborValue::Array;
+ break;
case Object:
- d = data;
- this->base = v.base(base);
+ t = QCborValue::Map;
+ break;
+ case Undefined:
break;
}
- if (d)
- d->ref.ref();
}
/*!
Creates a value of type Bool, with value \a b.
*/
QJsonValue::QJsonValue(bool b)
- : d(nullptr), t(Bool)
+ : t(b ? QCborValue::True : QCborValue::False)
{
- this->b = b;
}
/*!
Creates a value of type Double, with value \a n.
*/
-QJsonValue::QJsonValue(double n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(double v)
+ : d(nullptr)
{
- this->dbl = n;
+ // Convert to integer if the number is an integer and changing wouldn't
+ // introduce additional digit precision not present in the double.
+ if (convertDoubleTo<qint64>(v, &n, false /* allow_precision_upgrade */)) {
+ t = QCborValue::Integer;
+ } else {
+ memcpy(&n, &v, sizeof(n));
+ t = QCborValue::Double;
+ }
}
/*!
\overload
Creates a value of type Double, with value \a n.
*/
-QJsonValue::QJsonValue(int n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(int v)
+ : n(v), t(QCborValue::Integer)
{
- this->dbl = n;
}
/*!
@@ -184,19 +179,17 @@ QJsonValue::QJsonValue(int n)
NOTE: the integer limits for IEEE 754 double precision data is 2^53 (-9007199254740992 to +9007199254740992).
If you pass in values outside this range expect a loss of precision to occur.
*/
-QJsonValue::QJsonValue(qint64 n)
- : d(nullptr), t(Double)
+QJsonValue::QJsonValue(qint64 v)
+ : n(v), t(QCborValue::Integer)
{
- this->dbl = double(n);
}
/*!
Creates a value of type String, with value \a s.
*/
QJsonValue::QJsonValue(const QString &s)
- : d(nullptr), t(String)
+ : QJsonValue(QJsonPrivate::Value::fromTrustedCbor(s))
{
- stringDataFromQStringHelper(s);
}
/*!
@@ -211,71 +204,50 @@ QJsonValue::QJsonValue(const QString &s)
\since 5.3
*/
+// ### Qt6: remove
void QJsonValue::stringDataFromQStringHelper(const QString &string)
{
- stringData = *(QStringData **)(&string);
- stringData->ref.ref();
+ *this = QJsonValue(string);
}
/*!
Creates a value of type String, with value \a s.
*/
QJsonValue::QJsonValue(QLatin1String s)
- : d(nullptr), t(String)
+ : QJsonValue(QJsonPrivate::Value::fromTrustedCbor(s))
{
- // ### FIXME: Avoid creating the temp QString below
- QString str(s);
- stringDataFromQStringHelper(str);
}
/*!
Creates a value of type Array, with value \a a.
*/
QJsonValue::QJsonValue(const QJsonArray &a)
- : d(a.d), t(Array)
+ : n(-1), d(a.a), t(QCborValue::Array)
{
- base = a.a;
- if (d)
- d->ref.ref();
}
/*!
Creates a value of type Object, with value \a o.
*/
QJsonValue::QJsonValue(const QJsonObject &o)
- : d(o.d), t(Object)
+ : n(-1), d(o.o), t(QCborValue::Map)
{
- base = o.o;
- if (d)
- d->ref.ref();
}
/*!
Destroys the value.
*/
-QJsonValue::~QJsonValue()
-{
- if (t == String && stringData && !stringData->ref.deref())
- free(stringData);
-
- if (d && !d->ref.deref())
- delete d;
-}
+QJsonValue::~QJsonValue() = default;
/*!
Creates a copy of \a other.
*/
QJsonValue::QJsonValue(const QJsonValue &other)
{
+ n = other.n;
t = other.t;
d = other.d;
- ui = other.ui;
- if (d)
- d->ref.ref();
-
- if (t == String && stringData)
- stringData->ref.ref();
}
/*!
@@ -288,6 +260,23 @@ QJsonValue &QJsonValue::operator =(const QJsonValue &other)
return *this;
}
+QJsonValue::QJsonValue(QJsonValue &&other) noexcept :
+ n(other.n),
+ d(other.d),
+ t(other.t)
+{
+ other.n = 0;
+ other.d = nullptr;
+ other.t = QCborValue::Null;
+}
+
+void QJsonValue::swap(QJsonValue &other) noexcept
+{
+ qSwap(n, other.n);
+ qSwap(d, other.d);
+ qSwap(t, other.t);
+}
+
/*!
\fn QJsonValue::QJsonValue(QJsonValue &&other)
\since 5.10
@@ -462,12 +451,18 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant)
return QJsonValue(Null);
case QVariant::Bool:
return QJsonValue(variant.toBool());
+ case QMetaType::Short:
+ case QMetaType::UShort:
case QVariant::Int:
- case QMetaType::Float:
- case QVariant::Double:
+ case QVariant::UInt:
case QVariant::LongLong:
+ return QJsonValue(variant.toLongLong());
case QVariant::ULongLong:
- case QVariant::UInt:
+ if (variant.toULongLong() <= static_cast<uint64_t>(std::numeric_limits<qint64>::max()))
+ return QJsonValue(variant.toLongLong());
+ Q_FALLTHROUGH();
+ case QMetaType::Float:
+ case QVariant::Double:
return QJsonValue(variant.toDouble());
case QVariant::String:
return QJsonValue(variant.toString());
@@ -517,7 +512,7 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant)
\value Null QMetaType::Nullptr
\value Bool QMetaType::Bool
- \value Double QMetaType::Double
+ \value Double QMetaType::Double or QMetaType::LongLong
\value String QString
\value Array QVariantList
\value Object QVariantMap
@@ -528,23 +523,28 @@ QJsonValue QJsonValue::fromVariant(const QVariant &variant)
QVariant QJsonValue::toVariant() const
{
switch (t) {
- case Bool:
- return b;
- case Double:
- return dbl;
- case String:
+ case QCborValue::True:
+ return true;
+ case QCborValue::False:
+ return false;
+ case QCborValue::Integer:
+ return toInteger();
+ case QCborValue::Double:
+ return toDouble();
+ case QCborValue::String:
return toString();
- case Array:
+ case QCborValue::Array:
return d ?
- QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList() :
+ QJsonArray(d.data()).toVariantList() :
QVariantList();
- case Object:
+ case QCborValue::Map:
return d ?
- QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap() :
+ QJsonObject(d.data()).toVariantMap() :
QVariantMap();
- case Null:
+ case QCborValue::Null:
return QVariant::fromValue(nullptr);
- case Undefined:
+ case QCborValue::Undefined:
+ default:
break;
}
return QVariant();
@@ -557,7 +557,8 @@ QVariant QJsonValue::toVariant() const
\value Null A Null value
\value Bool A boolean value. Use toBool() to convert to a bool.
- \value Double A double. Use toDouble() to convert to a double.
+ \value Double A number value. Use toDouble() to convert to a double,
+ or toInteger() to convert to a qint64.
\value String A string. Use toString() to convert to a QString.
\value Array An array. Use toArray() to convert to a QJsonArray.
\value Object An object. Use toObject() to convert to a QJsonObject.
@@ -573,7 +574,25 @@ QVariant QJsonValue::toVariant() const
*/
QJsonValue::Type QJsonValue::type() const
{
- return t;
+ switch (t) {
+ case QCborValue::Null:
+ return QJsonValue::Null;
+ case QCborValue::True:
+ case QCborValue::False:
+ return QJsonValue::Bool;
+ case QCborValue::Double:
+ case QCborValue::Integer:
+ return QJsonValue::Double;
+ case QCborValue::String:
+ return QJsonValue::String;
+ case QCborValue::Array:
+ return QJsonValue::Array;
+ case QCborValue::Map:
+ return QJsonValue::Object;
+ case QCborValue::Undefined:
+ default:
+ return QJsonValue::Undefined;
+ }
}
/*!
@@ -583,9 +602,14 @@ QJsonValue::Type QJsonValue::type() const
*/
bool QJsonValue::toBool(bool defaultValue) const
{
- if (t != Bool)
+ switch (t) {
+ case QCborValue::True:
+ return true;
+ case QCborValue::False:
+ return false;
+ default:
return defaultValue;
- return b;
+ }
}
/*!
@@ -597,8 +621,44 @@ bool QJsonValue::toBool(bool defaultValue) const
*/
int QJsonValue::toInt(int defaultValue) const
{
- if (t == Double && int(dbl) == dbl)
- return int(dbl);
+ switch (t) {
+ case QCborValue::Double: {
+ int dblInt;
+ if (convertDoubleTo<int>(toDouble(), &dblInt))
+ return dblInt;
+ break;
+ }
+ case QCborValue::Integer:
+ if (qint64(int(n)) == n)
+ return int(n);
+ break;
+ default:
+ break;
+ }
+ return defaultValue;
+}
+
+/*!
+ \since 6.0
+ Converts the value to an integer and returns it.
+
+ If type() is not Double or the value is not a whole number
+ representable as qint64, the \a defaultValue will be returned.
+ */
+qint64 QJsonValue::toInteger(qint64 defaultValue) const
+{
+ switch (t) {
+ case QCborValue::Integer:
+ return n;
+ case QCborValue::Double: {
+ qint64 dblInt;
+ if (convertDoubleTo<qint64>(toDouble(), &dblInt))
+ return dblInt;
+ break;
+ }
+ default:
+ break;
+ }
return defaultValue;
}
@@ -609,9 +669,17 @@ int QJsonValue::toInt(int defaultValue) const
*/
double QJsonValue::toDouble(double defaultValue) const
{
- if (t != Double)
+ switch (t) {
+ case QCborValue::Double: {
+ double d;
+ memcpy(&d, &n, sizeof(d));
+ return d;
+ }
+ case QCborValue::Integer:
+ return double(n);
+ default:
return defaultValue;
- return dbl;
+ }
}
/*!
@@ -621,11 +689,7 @@ double QJsonValue::toDouble(double defaultValue) const
*/
QString QJsonValue::toString(const QString &defaultValue) const
{
- if (t != String)
- return defaultValue;
- stringData->ref.ref(); // the constructor below doesn't add a ref.
- QStringDataPtr holder = { stringData };
- return QString(holder);
+ return (t == QCborValue::String && d) ? d->stringAt(n) : defaultValue;
}
/*!
@@ -637,11 +701,7 @@ QString QJsonValue::toString(const QString &defaultValue) const
*/
QString QJsonValue::toString() const
{
- if (t != String)
- return QString();
- stringData->ref.ref(); // the constructor below doesn't add a ref.
- QStringDataPtr holder = { stringData };
- return QString(holder);
+ return (t == QCborValue::String && d) ? d->stringAt(n) : QString();
}
/*!
@@ -651,10 +711,10 @@ QString QJsonValue::toString() const
*/
QJsonArray QJsonValue::toArray(const QJsonArray &defaultValue) const
{
- if (!d || t != Array)
+ if (t != QCborValue::Array || n >= 0 || !d)
return defaultValue;
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base));
+ return QJsonArray(d.data());
}
/*!
@@ -676,10 +736,10 @@ QJsonArray QJsonValue::toArray() const
*/
QJsonObject QJsonValue::toObject(const QJsonObject &defaultValue) const
{
- if (!d || t != Object)
+ if (t != QCborValue::Map || n >= 0 || !d)
return defaultValue;
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base));
+ return QJsonObject(d.data());
}
/*!
@@ -762,37 +822,40 @@ const QJsonValue QJsonValue::operator[](int i) const
*/
bool QJsonValue::operator==(const QJsonValue &other) const
{
- if (t != other.t)
+ if (t != other.t) {
+ if (isDouble() && other.isDouble()) {
+ // One value Cbor integer, one Cbor double, should interact as doubles.
+ return toDouble() == other.toDouble();
+ }
return false;
+ }
switch (t) {
- case Undefined:
- case Null:
+ case QCborValue::Undefined:
+ case QCborValue::Null:
+ case QCborValue::True:
+ case QCborValue::False:
break;
- case Bool:
- return b == other.b;
- case Double:
- return dbl == other.dbl;
- case String:
+ case QCborValue::Double:
+ return toDouble() == other.toDouble();
+ case QCborValue::Integer:
+ return n == other.n;
+ case QCborValue::String:
return toString() == other.toString();
- case Array:
- if (base == other.base)
- return true;
- if (!base)
- return !other.base->length;
- if (!other.base)
- return !base->length;
- return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base))
- == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base));
- case Object:
- if (base == other.base)
- return true;
- if (!base)
- return !other.base->length;
- if (!other.base)
- return !base->length;
- return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base))
- == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base));
+ case QCborValue::Array:
+ if (!d)
+ return !other.d || other.d->elements.length() == 0;
+ if (!other.d)
+ return d->elements.length() == 0;
+ return QJsonArray(d.data()) == QJsonArray(other.d.data());
+ case QCborValue::Map:
+ if (!d)
+ return !other.d || other.d->elements.length() == 0;
+ if (!other.d)
+ return d->elements.length() == 0;
+ return QJsonObject(d.data()) == QJsonObject(other.d.data());
+ default:
+ return false;
}
return true;
}
@@ -810,15 +873,7 @@ bool QJsonValue::operator!=(const QJsonValue &other) const
*/
void QJsonValue::detach()
{
- if (!d)
- return;
-
- QJsonPrivate::Data *x = d->clone(base);
- x->ref.ref();
- if (!d->ref.deref())
- delete d;
- d = x;
- base = static_cast<QJsonPrivate::Object *>(d->header->root());
+ d.detach();
}
@@ -915,31 +970,37 @@ QDebug operator<<(QDebug dbg, const QJsonValue &o)
{
QDebugStateSaver saver(dbg);
switch (o.t) {
- case QJsonValue::Undefined:
+ case QCborValue::Undefined:
dbg << "QJsonValue(undefined)";
break;
- case QJsonValue::Null:
+ case QCborValue::Null:
dbg << "QJsonValue(null)";
break;
- case QJsonValue::Bool:
+ case QCborValue::True:
+ case QCborValue::False:
dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ')';
break;
- case QJsonValue::Double:
+ case QCborValue::Integer:
+ dbg.nospace() << "QJsonValue(double, " << o.toInteger() << ')';
+ break;
+ case QCborValue::Double:
dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ')';
break;
- case QJsonValue::String:
+ case QCborValue::String:
dbg.nospace() << "QJsonValue(string, " << o.toString() << ')';
break;
- case QJsonValue::Array:
+ case QCborValue::Array:
dbg.nospace() << "QJsonValue(array, ";
dbg << o.toArray();
dbg << ')';
break;
- case QJsonValue::Object:
+ case QCborValue::Map:
dbg.nospace() << "QJsonValue(object, ";
dbg << o.toObject();
dbg << ')';
break;
+ default:
+ Q_UNREACHABLE();
}
return dbg;
}
@@ -948,7 +1009,7 @@ QDebug operator<<(QDebug dbg, const QJsonValue &o)
#ifndef QT_NO_DATASTREAM
QDataStream &operator<<(QDataStream &stream, const QJsonValue &v)
{
- quint8 type = v.t;
+ quint8 type = v.type();
stream << type;
switch (type) {
case QJsonValue::Undefined:
diff --git a/src/corelib/serialization/qjsonvalue.h b/src/corelib/serialization/qjsonvalue.h
index 8ade18509b..bd8bf14baf 100644
--- a/src/corelib/serialization/qjsonvalue.h
+++ b/src/corelib/serialization/qjsonvalue.h
@@ -42,22 +42,18 @@
#include <QtCore/qglobal.h>
#include <QtCore/qstring.h>
+#include <QtCore/qshareddata.h>
+#include <QtCore/qcborvalue.h>
QT_BEGIN_NAMESPACE
-class QDebug;
class QVariant;
class QJsonArray;
class QJsonObject;
+class QCborContainerPrivate;
namespace QJsonPrivate {
- class Data;
- class Base;
- class Object;
- class Header;
- class Array;
- class Value;
- class Entry;
+class Value;
}
class Q_CORE_EXPORT QJsonValue
@@ -77,12 +73,12 @@ public:
QJsonValue(bool b);
QJsonValue(double n);
QJsonValue(int n);
- QJsonValue(qint64 n);
+ QJsonValue(qint64 v);
QJsonValue(const QString &s);
QJsonValue(QLatin1String s);
#ifndef QT_NO_CAST_FROM_ASCII
inline QT_ASCII_CAST_WARN QJsonValue(const char *s)
- : d(nullptr), t(String) { stringDataFromQStringHelper(QString::fromUtf8(s)); }
+ : QJsonValue(QString::fromUtf8(s)) {}
#endif
QJsonValue(const QJsonArray &a);
QJsonValue(const QJsonObject &o);
@@ -92,15 +88,7 @@ public:
QJsonValue(const QJsonValue &other);
QJsonValue &operator =(const QJsonValue &other);
- QJsonValue(QJsonValue &&other) noexcept
- : ui(other.ui),
- d(other.d),
- t(other.t)
- {
- other.ui = 0;
- other.d = nullptr;
- other.t = Null;
- }
+ QJsonValue(QJsonValue &&other) noexcept;
QJsonValue &operator =(QJsonValue &&other) noexcept
{
@@ -108,12 +96,7 @@ public:
return *this;
}
- void swap(QJsonValue &other) noexcept
- {
- qSwap(ui, other.ui);
- qSwap(d, other.d);
- qSwap(t, other.t);
- }
+ void swap(QJsonValue &other) noexcept;
static QJsonValue fromVariant(const QVariant &variant);
QVariant toVariant() const;
@@ -129,6 +112,7 @@ public:
bool toBool(bool defaultValue = false) const;
int toInt(int defaultValue = 0) const;
+ qint64 toInteger(qint64 defaultValue = 0) const;
double toDouble(double defaultValue = 0) const;
QString toString() const;
QString toString(const QString &defaultValue) const;
@@ -149,7 +133,7 @@ public:
private:
// avoid implicit conversions from char * to bool
- inline QJsonValue(const void *) {}
+ QJsonValue(const void *) = delete;
friend class QJsonPrivate::Value;
friend class QJsonArray;
friend class QJsonObject;
@@ -157,20 +141,19 @@ private:
friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &);
friend Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QJsonValue &);
- QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v);
+ // ### Qt6: Remove this.
void stringDataFromQStringHelper(const QString &string);
void detach();
- union {
- quint64 ui;
- bool b;
- double dbl;
- QStringData *stringData;
- QJsonPrivate::Base *base;
- };
- QJsonPrivate::Data *d; // needed for Objects and Arrays
- Type t;
+ // ### Qt6: change to an actual QCborValue
+ qint64 n = 0;
+ QExplicitlySharedDataPointer<QCborContainerPrivate> d; // needed for Objects, Arrays, Strings
+ QCborValue::Type t;
+
+ // Assert binary compatibility with pre-5.15 QJsonValue
+ Q_STATIC_ASSERT(sizeof(QExplicitlySharedDataPointer<QCborContainerPrivate>) == sizeof(void *));
+ Q_STATIC_ASSERT(sizeof(QCborValue::Type) == sizeof(QJsonValue::Type));
};
class Q_CORE_EXPORT QJsonValueRef
diff --git a/src/corelib/serialization/qjsonwriter.cpp b/src/corelib/serialization/qjsonwriter.cpp
index 012d3bea86..31fb16c112 100644
--- a/src/corelib/serialization/qjsonwriter.cpp
+++ b/src/corelib/serialization/qjsonwriter.cpp
@@ -44,13 +44,14 @@
#include "qjson_p.h"
#include "private/qutfcodec_p.h"
#include <private/qnumeric_p.h>
+#include <private/qcborvalue_p.h>
QT_BEGIN_NAMESPACE
using namespace QJsonPrivate;
-static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact);
-static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact);
+static void objectContentToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact);
+static void arrayContentToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact);
static inline uchar hexdig(uint u)
{
@@ -126,60 +127,65 @@ static QByteArray escapedString(const QString &s)
return ba;
}
-static void valueToJson(const QJsonPrivate::Base *b, const QJsonPrivate::Value &v, QByteArray &json, int indent, bool compact)
+static void valueToJson(const QCborValue &v, QByteArray &json, int indent, bool compact)
{
- QJsonValue::Type type = (QJsonValue::Type)(uint)v.type;
+ QCborValue::Type type = v.type();
switch (type) {
- case QJsonValue::Bool:
- json += v.toBoolean() ? "true" : "false";
+ case QCborValue::True:
+ json += "true";
break;
- case QJsonValue::Double: {
- const double d = v.toDouble(b);
- if (qIsFinite(d)) { // +2 to format to ensure the expected precision
- quint64 absInt;
- json += QByteArray::number(d, convertDoubleTo(std::abs(d), &absInt) ? 'f' : 'g',
- QLocale::FloatingPointShortest);
- } else {
+ case QCborValue::False:
+ json += "false";
+ break;
+ case QCborValue::Integer:
+ json += QByteArray::number(v.toInteger());
+ break;
+ case QCborValue::Double: {
+ const double d = v.toDouble();
+ if (qIsFinite(d))
+ json += QByteArray::number(d, 'g', QLocale::FloatingPointShortest);
+ else
json += "null"; // +INF || -INF || NaN (see RFC4627#section2.4)
- }
break;
}
- case QJsonValue::String:
+ case QCborValue::String:
json += '"';
- json += escapedString(v.toString(b));
+ json += escapedString(v.toString());
json += '"';
break;
- case QJsonValue::Array:
+ case QCborValue::Array:
json += compact ? "[" : "[\n";
- arrayContentToJson(static_cast<QJsonPrivate::Array *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ arrayContentToJson(
+ QJsonPrivate::Value::container(v), json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += ']';
break;
- case QJsonValue::Object:
+ case QCborValue::Map:
json += compact ? "{" : "{\n";
- objectContentToJson(static_cast<QJsonPrivate::Object *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ objectContentToJson(
+ QJsonPrivate::Value::container(v), json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += '}';
break;
- case QJsonValue::Null:
+ case QCborValue::Null:
default:
json += "null";
}
}
-static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+static void arrayContentToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact)
{
- if (!a || !a->length)
+ if (!a || a->elements.empty())
return;
QByteArray indentString(4*indent, ' ');
- uint i = 0;
- while (1) {
+ qsizetype i = 0;
+ while (true) {
json += indentString;
- valueToJson(a, a->at(i), json, indent, compact);
+ valueToJson(a->valueAt(i), json, indent, compact);
- if (++i == a->length) {
+ if (++i == a->elements.size()) {
if (!compact)
json += '\n';
break;
@@ -190,23 +196,23 @@ static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, i
}
-static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+static void objectContentToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact)
{
- if (!o || !o->length)
+ if (!o || o->elements.empty())
return;
QByteArray indentString(4*indent, ' ');
- uint i = 0;
- while (1) {
- QJsonPrivate::Entry *e = o->entryAt(i);
+ qsizetype i = 0;
+ while (true) {
+ QCborValue e = o->valueAt(i);
json += indentString;
json += '"';
- json += escapedString(e->key());
+ json += escapedString(o->valueAt(i).toString());
json += compact ? "\":" : "\": ";
- valueToJson(o, e->value, json, indent, compact);
+ valueToJson(o->valueAt(i + 1), json, indent, compact);
- if (++i == o->length) {
+ if ((i += 2) == o->elements.size()) {
if (!compact)
json += '\n';
break;
@@ -216,18 +222,18 @@ static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json,
}
}
-void Writer::objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+void Writer::objectToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact)
{
- json.reserve(json.size() + (o ? (int)o->size : 16));
+ json.reserve(json.size() + (o ? (int)o->elements.size() : 16));
json += compact ? "{" : "{\n";
objectContentToJson(o, json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
json += compact ? "}" : "}\n";
}
-void Writer::arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+void Writer::arrayToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact)
{
- json.reserve(json.size() + (a ? (int)a->size : 16));
+ json.reserve(json.size() + (a ? (int)a->elements.size() : 16));
json += compact ? "[" : "[\n";
arrayContentToJson(a, json, indent + (compact ? 0 : 1), compact);
json += QByteArray(4*indent, ' ');
diff --git a/src/corelib/serialization/qjsonwriter_p.h b/src/corelib/serialization/qjsonwriter_p.h
index 76a8460449..8c263bb7c3 100644
--- a/src/corelib/serialization/qjsonwriter_p.h
+++ b/src/corelib/serialization/qjsonwriter_p.h
@@ -62,8 +62,8 @@ namespace QJsonPrivate
class Writer
{
public:
- static void objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact = false);
- static void arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact = false);
+ static void objectToJson(const QCborContainerPrivate *o, QByteArray &json, int indent, bool compact = false);
+ static void arrayToJson(const QCborContainerPrivate *a, QByteArray &json, int indent, bool compact = false);
};
}
diff --git a/src/corelib/serialization/qtextstream.h b/src/corelib/serialization/qtextstream.h
index 4efa84f1f1..935ec16536 100644
--- a/src/corelib/serialization/qtextstream.h
+++ b/src/corelib/serialization/qtextstream.h
@@ -279,9 +279,12 @@ namespace Qt {
using namespace QTextStreamFunctions;
}
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_CLANG("-Wheader-hygiene")
// We use 'using namespace' as that doesn't cause
// conflicting definitions compiler errors.
using namespace QTextStreamFunctions;
+QT_WARNING_POP
#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && !defined(Q_QDOC)
inline QTextStreamManipulator qSetFieldWidth(int width)
diff --git a/src/corelib/serialization/serialization.pri b/src/corelib/serialization/serialization.pri
index 5310fddd67..7407e20d9e 100644
--- a/src/corelib/serialization/serialization.pri
+++ b/src/corelib/serialization/serialization.pri
@@ -25,7 +25,6 @@ SOURCES += \
serialization/qcbordiagnostic.cpp \
serialization/qcborvalue.cpp \
serialization/qdatastream.cpp \
- serialization/qjson.cpp \
serialization/qjsoncbor.cpp \
serialization/qjsondocument.cpp \
serialization/qjsonobject.cpp \
@@ -45,6 +44,20 @@ qtConfig(cborstream): {
serialization/qcborstream.h
}
+qtConfig(binaryjson): {
+ HEADERS += \
+ serialization/qbinaryjson_p.h \
+ serialization/qbinaryjsonarray_p.h \
+ serialization/qbinaryjsonobject_p.h \
+ serialization/qbinaryjsonvalue_p.h
+
+ SOURCES += \
+ serialization/qbinaryjson.cpp \
+ serialization/qbinaryjsonarray.cpp \
+ serialization/qbinaryjsonobject.cpp \
+ serialization/qbinaryjsonvalue.cpp \
+}
+
false: SOURCES += \
serialization/qcborarray.cpp \
serialization/qcbormap.cpp
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 0ed92514f9..009659d998 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1498,7 +1498,7 @@ void QStateMachinePrivate::setError(QStateMachine::Error errorCode, QAbstractSta
case QStateMachine::StateMachineChildModeSetToParallelError:
Q_ASSERT(currentContext != nullptr);
- errorString = QStateMachine::tr("Child mode of state machine '%1' is not 'ExclusiveStates'!")
+ errorString = QStateMachine::tr("Child mode of state machine '%1' is not 'ExclusiveStates'.")
.arg(currentContext->objectName());
break;
@@ -2469,7 +2469,7 @@ QStateMachine::QStateMachine(QObject *parent)
and \a parent.
\warning Do not set the \a childMode to anything else than \l{ExclusiveStates}, otherwise the
- state machine is invalid, and might work incorrectly!
+ state machine is invalid, and might work incorrectly.
*/
QStateMachine::QStateMachine(QState::ChildMode childMode, QObject *parent)
: QState(*new QStateMachinePrivate, /*parentState=*/0)
@@ -2599,7 +2599,7 @@ void QStateMachine::setGlobalRestorePolicy(QState::RestorePolicy restorePolicy)
/*!
Adds the given \a state to this state machine. The state becomes a top-level
- state.
+ state and the state machine takes ownership of the state.
If the state is already in a different machine, it will first be removed
from its old machine, and then added to this machine.
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp
index 444980e9c0..4a00c664c0 100644
--- a/src/corelib/text/qbytearray.cpp
+++ b/src/corelib/text/qbytearray.cpp
@@ -556,28 +556,13 @@ static const quint16 crc_tbl[16] = {
/*!
\relates QByteArray
-
- Returns the CRC-16 checksum of the first \a len bytes of \a data.
-
- The checksum is independent of the byte order (endianness) and will be
- calculated accorded to the algorithm published in ISO 3309 (Qt::ChecksumIso3309).
-
- \note This function is a 16-bit cache conserving (16 entry table)
- implementation of the CRC-16-CCITT algorithm.
-*/
-quint16 qChecksum(const char *data, uint len)
-{
- return qChecksum(data, len, Qt::ChecksumIso3309);
-}
-
-/*!
- \relates QByteArray
\since 5.9
Returns the CRC-16 checksum of the first \a len bytes of \a data.
The checksum is independent of the byte order (endianness) and will
be calculated accorded to the algorithm published in \a standard.
+ By default the algorithm published in ISO 3309 (Qt::ChecksumIso3309) is used.
\note This function is a 16-bit cache conserving (16 entry table)
implementation of the CRC-16-CCITT algorithm.
@@ -4093,26 +4078,11 @@ float QByteArray::toFloat(bool *ok) const
}
/*!
- Returns a copy of the byte array, encoded as Base64.
-
- \snippet code/src_corelib_tools_qbytearray.cpp 39
-
- The algorithm used to encode Base64-encoded data is defined in \l{RFC 4648}.
-
- \sa fromBase64()
-*/
-QByteArray QByteArray::toBase64() const
-{
- return toBase64(Base64Encoding);
-}
-
-/*!
\since 5.2
- \overload
Returns a copy of the byte array, encoded using the options \a options.
- \snippet code/src_corelib_tools_qbytearray.cpp 39bis
+ \snippet code/src_corelib_tools_qbytearray.cpp 39
The algorithm used to encode Base64-encoded data is defined in \l{RFC 4648}.
@@ -4514,26 +4484,7 @@ QByteArray &QByteArray::setRawData(const char *data, uint size)
}
/*!
- Returns a decoded copy of the Base64 array \a base64. Input is not checked
- for validity; invalid characters in the input are skipped, enabling the
- decoding process to continue with subsequent characters.
-
- For example:
-
- \snippet code/src_corelib_tools_qbytearray.cpp 44
-
- The algorithm used to decode Base64-encoded data is defined in \l{RFC 4648}.
-
- \sa toBase64()
-*/
-QByteArray QByteArray::fromBase64(const QByteArray &base64)
-{
- return fromBase64(base64, Base64Encoding);
-}
-
-/*!
\since 5.2
- \overload
Returns a decoded copy of the Base64 array \a base64, using the alphabet
defined by \a options. Input is not checked for validity; invalid
@@ -4542,7 +4493,7 @@ QByteArray QByteArray::fromBase64(const QByteArray &base64)
For example:
- \snippet code/src_corelib_tools_qbytearray.cpp 44bis
+ \snippet code/src_corelib_tools_qbytearray.cpp 44
The algorithm used to decode Base64-encoded data is defined in \l{RFC 4648}.
@@ -4627,21 +4578,7 @@ QByteArray QByteArray::fromHex(const QByteArray &hexEncoded)
return res;
}
-/*!
- Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and
- the letters a-f.
-
- \sa fromHex()
-*/
-QByteArray QByteArray::toHex() const
-{
- return toHex('\0');
-}
-
-/*! \overload
- \since 5.9
-
- Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and
+/*! Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and
the letters a-f.
If \a separator is not '\0', the separator character is inserted between the hex bytes.
@@ -4649,6 +4586,7 @@ QByteArray QByteArray::toHex() const
Example:
\snippet code/src_corelib_tools_qbytearray.cpp 50
+ \since 5.9
\sa fromHex()
*/
QByteArray QByteArray::toHex(char separator) const
diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h
index 03d842e9bc..1376e26260 100644
--- a/src/corelib/text/qbytearray.h
+++ b/src/corelib/text/qbytearray.h
@@ -107,8 +107,8 @@ Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap);
Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt, ...);
// qChecksum: Internet checksum
-Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len); // ### Qt 6: Remove
-Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len, Qt::ChecksumType standard); // ### Qt 6: Use Qt::ChecksumType standard = Qt::ChecksumIso3309
+Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len,
+ Qt::ChecksumType standard = Qt::ChecksumIso3309);
class QByteRef;
class QString;
@@ -355,10 +355,8 @@ public:
qulonglong toULongLong(bool *ok = nullptr, int base = 10) const;
float toFloat(bool *ok = nullptr) const;
double toDouble(bool *ok = nullptr) const;
- QByteArray toBase64(Base64Options options) const;
- QByteArray toBase64() const; // ### Qt6 merge with previous
- QByteArray toHex() const;
- QByteArray toHex(char separator) const; // ### Qt6 merge with previous
+ QByteArray toBase64(Base64Options options = Base64Encoding) const;
+ QByteArray toHex(char separator = '\0') const;
QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(),
const QByteArray &include = QByteArray(),
char percent = '%') const;
@@ -379,8 +377,8 @@ public:
Q_REQUIRED_RESULT static QByteArray number(qulonglong, int base = 10);
Q_REQUIRED_RESULT static QByteArray number(double, char f = 'g', int prec = 6);
Q_REQUIRED_RESULT static QByteArray fromRawData(const char *, int size);
- Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64, Base64Options options);
- Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64); // ### Qt6 merge with previous
+ Q_REQUIRED_RESULT static QByteArray fromBase64(const QByteArray &base64,
+ Base64Options options = Base64Encoding);
Q_REQUIRED_RESULT static QByteArray fromHex(const QByteArray &hexEncoded);
Q_REQUIRED_RESULT static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%');
diff --git a/src/corelib/text/qbytearraylist.h b/src/corelib/text/qbytearraylist.h
index 0250b649b8..4b6c926960 100644
--- a/src/corelib/text/qbytearraylist.h
+++ b/src/corelib/text/qbytearraylist.h
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include <QtCore/qlist.h>
+#include <QtCore/qvector.h>
#ifndef QBYTEARRAYLIST_H
#define QBYTEARRAYLIST_H
@@ -49,12 +49,12 @@
QT_BEGIN_NAMESPACE
#if !defined(QT_NO_JAVA_STYLE_ITERATORS)
-typedef QListIterator<QByteArray> QByteArrayListIterator;
-typedef QMutableListIterator<QByteArray> QMutableByteArrayListIterator;
+typedef QVectorIterator<QByteArray> QByteArrayListIterator;
+typedef QMutableVectorIterator<QByteArray> QMutableByteArrayListIterator;
#endif
#ifndef Q_CLANG_QDOC
-typedef QList<QByteArray> QByteArrayList;
+typedef QVector<QByteArray> QByteArrayList;
namespace QtPrivate {
QByteArray Q_CORE_EXPORT QByteArrayList_join(const QByteArrayList *that, const char *separator, int separatorLength);
@@ -63,14 +63,14 @@ namespace QtPrivate {
#endif
#ifdef Q_CLANG_QDOC
-class QByteArrayList : public QList<QByteArray>
+class QByteArrayList : public QVector<QByteArray>
#else
-template <> struct QListSpecialMethods<QByteArray>
+template <> struct QVectorSpecialMethods<QByteArray>
#endif
{
#ifndef Q_CLANG_QDOC
protected:
- ~QListSpecialMethods() = default;
+ ~QVectorSpecialMethods() = default;
#endif
public:
inline QByteArray join() const
@@ -84,7 +84,7 @@ public:
{ return QtPrivate::QByteArrayList_indexOf(self(), needle, from); }
private:
- typedef QList<QByteArray> Self;
+ typedef QVector<QByteArray> Self;
Self *self() { return static_cast<Self *>(this); }
const Self *self() const { return static_cast<const Self *>(this); }
};
diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h
index 0eedfc1d20..7cc5037095 100644
--- a/src/corelib/text/qbytearraymatcher.h
+++ b/src/corelib/text/qbytearraymatcher.h
@@ -85,7 +85,7 @@ private:
class QStaticByteArrayMatcherBase
{
- Q_DECL_ALIGN(16)
+ alignas(16)
struct Skiptable {
uchar data[256];
} m_skiptable;
diff --git a/src/corelib/text/qchar.h b/src/corelib/text/qchar.h
index f67a7ea90a..85a380e7cf 100644
--- a/src/corelib/text/qchar.h
+++ b/src/corelib/text/qchar.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -328,6 +328,19 @@ public:
Script_Soyombo,
Script_ZanabazarSquare,
+ // Unicode 12.1 additions
+ Script_Dogra,
+ Script_GunjalaGondi,
+ Script_HanifiRohingya,
+ Script_Makasar,
+ Script_Medefaidrin,
+ Script_OldSogdian,
+ Script_Sogdian,
+ Script_Elymaic,
+ Script_Nandinagari,
+ Script_NyiakengPuachueHmong,
+ Script_Wancho,
+
ScriptCount
};
@@ -421,7 +434,10 @@ public:
Unicode_7_0,
Unicode_8_0,
Unicode_9_0,
- Unicode_10_0
+ Unicode_10_0,
+ Unicode_11_0,
+ Unicode_12_0,
+ Unicode_12_1,
};
// ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO
diff --git a/src/corelib/text/qlocale.h b/src/corelib/text/qlocale.h
index 87966b266b..8b73eb5493 100644
--- a/src/corelib/text/qlocale.h
+++ b/src/corelib/text/qlocale.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2018 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -443,6 +443,9 @@ public:
WesternBalochi = 364,
Cebuano = 365,
Erzya = 366,
+ Chickasaw = 367,
+ Muscogee = 368,
+ Silesian = 369,
Afan = Oromo,
Bhutani = Dzongkha,
@@ -459,7 +462,7 @@ public:
Twi = Akan,
Uigur = Uighur,
- LastLanguage = Erzya
+ LastLanguage = Silesian
};
enum Script {
diff --git a/src/corelib/text/qlocale.qdoc b/src/corelib/text/qlocale.qdoc
index 426cb9dbeb..6c9d6f9d11 100644
--- a/src/corelib/text/qlocale.qdoc
+++ b/src/corelib/text/qlocale.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -92,7 +92,7 @@
\note For the current keyboard input locale take a look at
QInputMethod::locale().
- QLocale's data is based on Common Locale Data Repository v35.1.
+ QLocale's data is based on Common Locale Data Repository v36.
\sa QString::arg(), QString::toInt(), QString::toDouble(),
QInputMethod::locale()
@@ -172,6 +172,7 @@
\value Chechen
\value Cherokee
\value Chewa Obsolete, please use Nyanja
+ \value Chickasaw Since Qt 5.14
\value Chiga
\value Chinese
\value Church
@@ -333,6 +334,7 @@
\value Morisyen
\value Mru Since Qt 5.7
\value Mundang
+ \value Muscogee Since Qt 5.14
\value Nama
\value NauruLanguage
\value Navaho
@@ -406,6 +408,7 @@
\value SichuanYi
\value Sicilian Since Qt 5.12
\value Sidamo
+ \value Silesian Since Qt 5.14
\value Sindhi
\value Sinhala
\value SkoltSami Since Qt 5.5
diff --git a/src/corelib/text/qlocale_data_p.h b/src/corelib/text/qlocale_data_p.h
index b846f0b768..5f29a74d37 100644
--- a/src/corelib/text/qlocale_data_p.h
+++ b/src/corelib/text/qlocale_data_p.h
@@ -77,8 +77,8 @@ static const int ImperialMeasurementSystemsCount =
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2019-05-27 from the
- Common Locale Data Repository v35.1
+ This part of the file was generated on 2019-10-24 from the
+ Common Locale Data Repository v36
http://www.unicode.org/cldr/
@@ -97,6 +97,7 @@ static const QLocaleId likely_subtags[] = {
{ 146, 0, 0 }, { 146, 7, 83 }, // ak -> ak_Latn_GH
{ 262, 0, 0 }, { 262, 94, 103 }, // akk -> akk_Xsux_IQ
{ 7, 0, 0 }, { 7, 14, 69 }, // am -> am_Ethi_ET
+ { 261, 0, 0 }, { 261, 7, 197 }, // an -> an_Latn_ES
{ 8, 0, 0 }, { 8, 1, 64 }, // ar -> ar_Arab_EG
{ 265, 0, 0 }, { 265, 57, 102 }, // arc -> arc_Armi_IR
{ 265, 119, 0 }, { 265, 119, 109 }, // arc_Nbat -> arc_Nbat_JO
@@ -145,6 +146,7 @@ static const QLocaleId likely_subtags[] = {
{ 211, 0, 0 }, { 211, 7, 221 }, // cgg -> cgg_Latn_UG
{ 217, 0, 0 }, { 217, 7, 89 }, // ch -> ch_Latn_GU
{ 190, 0, 0 }, { 190, 12, 225 }, // chr -> chr_Cher_US
+ { 367, 0, 0 }, { 367, 7, 225 }, // cic -> cic_Latn_US
{ 276, 0, 0 }, { 276, 47, 232 }, // cjm -> cjm_Cham_VN
{ 316, 0, 0 }, { 316, 1, 103 }, // ckb -> ckb_Arab_IQ
{ 26, 0, 0 }, { 26, 7, 74 }, // co -> co_Latn_FR
@@ -327,6 +329,7 @@ static const QLocaleId likely_subtags[] = {
{ 76, 0, 101 }, { 76, 1, 101 }, // ms_ID -> ms_Arab_ID
{ 78, 0, 0 }, { 78, 7, 133 }, // mt -> mt_Latn_MT
{ 245, 0, 0 }, { 245, 7, 37 }, // mua -> mua_Latn_CM
+ { 368, 0, 0 }, { 368, 7, 225 }, // mus -> mus_Latn_US
{ 21, 0, 0 }, { 21, 25, 147 }, // my -> my_Mymr_MM
{ 366, 0, 0 }, { 366, 2, 178 }, // myv -> myv_Cyrl_RU
{ 273, 0, 0 }, { 273, 71, 102 }, // myz -> myz_Mand_IR
@@ -431,6 +434,7 @@ static const QLocaleId likely_subtags[] = {
{ 250, 0, 0 }, { 250, 7, 49 }, // swc -> swc_Latn_CD
{ 307, 0, 0 }, { 307, 11, 18 }, // syl -> syl_Beng_BD
{ 151, 0, 0 }, { 151, 33, 103 }, // syr -> syr_Syrc_IQ
+ { 369, 0, 0 }, { 369, 7, 172 }, // szl -> szl_Latn_PL
{ 117, 0, 0 }, { 117, 27, 100 }, // ta -> ta_Taml_IN
{ 308, 0, 0 }, { 308, 7, 170 }, // tbw -> tbw_Latn_PH
{ 310, 0, 0 }, { 310, 99, 44 }, // tdd -> tdd_Tale_CN
@@ -957,169 +961,169 @@ static const quint16 locale_index[] = {
260, // Inuktitut
0, // Inupiak
262, // Irish
- 263, // Italian
- 267, // Japanese
- 268, // Javanese
- 269, // Kannada
- 270, // Kashmiri
- 271, // Kazakh
- 272, // Kinyarwanda
- 273, // Kirghiz
- 274, // Korean
- 276, // Kurdish
- 277, // Rundi
- 278, // Lao
+ 264, // Italian
+ 268, // Japanese
+ 269, // Javanese
+ 270, // Kannada
+ 271, // Kashmiri
+ 272, // Kazakh
+ 273, // Kinyarwanda
+ 274, // Kirghiz
+ 275, // Korean
+ 277, // Kurdish
+ 278, // Rundi
+ 279, // Lao
0, // Latin
- 279, // Latvian
- 280, // Lingala
- 284, // Lithuanian
- 285, // Macedonian
- 286, // Malagasy
- 287, // Malay
- 291, // Malayalam
- 292, // Maltese
- 293, // Maori
- 294, // Marathi
+ 280, // Latvian
+ 281, // Lingala
+ 285, // Lithuanian
+ 286, // Macedonian
+ 287, // Malagasy
+ 288, // Malay
+ 292, // Malayalam
+ 293, // Maltese
+ 294, // Maori
+ 295, // Marathi
0, // Marshallese
- 295, // Mongolian
+ 296, // Mongolian
0, // Nauru
- 297, // Nepali
- 299, // Norwegian Bokmal
- 301, // Occitan
- 302, // Oriya
- 303, // Pashto
- 305, // Persian
- 307, // Polish
- 308, // Portuguese
- 320, // Punjabi
- 322, // Quechua
- 325, // Romansh
- 326, // Romanian
- 328, // Russian
+ 298, // Nepali
+ 300, // Norwegian Bokmal
+ 302, // Occitan
+ 303, // Oriya
+ 304, // Pashto
+ 306, // Persian
+ 308, // Polish
+ 309, // Portuguese
+ 321, // Punjabi
+ 323, // Quechua
+ 326, // Romansh
+ 327, // Romanian
+ 329, // Russian
0, // Samoan
- 334, // Sango
- 335, // Sanskrit
- 336, // Serbian
- 344, // Ossetic
- 346, // Southern Sotho
- 347, // Tswana
- 348, // Shona
- 349, // Sindhi
- 350, // Sinhala
- 351, // Swati
- 352, // Slovak
- 353, // Slovenian
- 354, // Somali
- 358, // Spanish
- 0, // Sundanese
- 386, // Swahili
- 390, // Swedish
- 393, // Sardinian
- 394, // Tajik
- 395, // Tamil
- 399, // Tatar
- 400, // Telugu
- 401, // Thai
- 402, // Tibetan
- 404, // Tigrinya
- 406, // Tongan
- 407, // Tsonga
- 408, // Turkish
- 410, // Turkmen
+ 335, // Sango
+ 336, // Sanskrit
+ 337, // Serbian
+ 345, // Ossetic
+ 347, // Southern Sotho
+ 348, // Tswana
+ 349, // Shona
+ 350, // Sindhi
+ 351, // Sinhala
+ 352, // Swati
+ 353, // Slovak
+ 354, // Slovenian
+ 355, // Somali
+ 359, // Spanish
+ 387, // Sundanese
+ 388, // Swahili
+ 392, // Swedish
+ 395, // Sardinian
+ 396, // Tajik
+ 397, // Tamil
+ 401, // Tatar
+ 402, // Telugu
+ 403, // Thai
+ 404, // Tibetan
+ 406, // Tigrinya
+ 408, // Tongan
+ 409, // Tsonga
+ 410, // Turkish
+ 412, // Turkmen
0, // Tahitian
- 411, // Uighur
- 412, // Ukrainian
- 413, // Urdu
- 415, // Uzbek
- 418, // Vietnamese
- 419, // Volapuk
- 420, // Welsh
- 421, // Wolof
- 422, // Xhosa
- 423, // Yiddish
- 424, // Yoruba
+ 413, // Uighur
+ 414, // Ukrainian
+ 415, // Urdu
+ 417, // Uzbek
+ 420, // Vietnamese
+ 421, // Volapuk
+ 422, // Welsh
+ 423, // Wolof
+ 424, // Xhosa
+ 425, // Yiddish
+ 426, // Yoruba
0, // Zhuang
- 426, // Zulu
- 427, // Norwegian Nynorsk
- 428, // Bosnian
- 430, // Divehi
- 431, // Manx
- 432, // Cornish
- 433, // Akan
- 434, // Konkani
- 435, // Ga
- 436, // Igbo
- 437, // Kamba
- 438, // Syriac
- 439, // Blin
- 440, // Geez
+ 428, // Zulu
+ 429, // Norwegian Nynorsk
+ 430, // Bosnian
+ 432, // Divehi
+ 433, // Manx
+ 434, // Cornish
+ 435, // Akan
+ 436, // Konkani
+ 437, // Ga
+ 438, // Igbo
+ 439, // Kamba
+ 440, // Syriac
+ 441, // Blin
+ 442, // Geez
0, // Koro
- 441, // Sidamo
- 442, // Atsam
- 443, // Tigre
- 444, // Jju
- 445, // Friulian
- 446, // Venda
- 447, // Ewe
- 449, // Walamo
- 450, // Hawaiian
- 451, // Tyap
- 452, // Nyanja
- 453, // Filipino
- 454, // Swiss German
- 457, // Sichuan Yi
- 458, // Kpelle
- 459, // Low German
- 461, // South Ndebele
- 462, // Northern Sotho
- 463, // Northern Sami
- 466, // Taroko
- 467, // Gusii
- 468, // Taita
- 469, // Fulah
- 482, // Kikuyu
- 483, // Samburu
- 484, // Sena
- 485, // North Ndebele
- 486, // Rombo
- 487, // Tachelhit
- 489, // Kabyle
- 490, // Nyankole
- 491, // Bena
- 492, // Vunjo
- 493, // Bambara
- 495, // Embu
- 496, // Cherokee
- 497, // Morisyen
- 498, // Makonde
- 499, // Langi
- 500, // Ganda
- 501, // Bemba
- 502, // Kabuverdianu
- 503, // Meru
- 504, // Kalenjin
- 505, // Nama
- 506, // Machame
- 507, // Colognian
- 508, // Masai
- 510, // Soga
- 511, // Luyia
- 512, // Asu
- 513, // Teso
- 515, // Saho
- 516, // Koyra Chiini
- 517, // Rwa
- 518, // Luo
- 519, // Chiga
- 520, // Central Morocco Tamazight
- 521, // Koyraboro Senni
- 522, // Shambala
- 523, // Bodo
+ 443, // Sidamo
+ 444, // Atsam
+ 445, // Tigre
+ 446, // Jju
+ 447, // Friulian
+ 448, // Venda
+ 449, // Ewe
+ 451, // Walamo
+ 452, // Hawaiian
+ 453, // Tyap
+ 454, // Nyanja
+ 455, // Filipino
+ 456, // Swiss German
+ 459, // Sichuan Yi
+ 460, // Kpelle
+ 461, // Low German
+ 463, // South Ndebele
+ 464, // Northern Sotho
+ 465, // Northern Sami
+ 468, // Taroko
+ 469, // Gusii
+ 470, // Taita
+ 471, // Fulah
+ 484, // Kikuyu
+ 485, // Samburu
+ 486, // Sena
+ 487, // North Ndebele
+ 488, // Rombo
+ 489, // Tachelhit
+ 491, // Kabyle
+ 492, // Nyankole
+ 493, // Bena
+ 494, // Vunjo
+ 495, // Bambara
+ 497, // Embu
+ 498, // Cherokee
+ 499, // Morisyen
+ 500, // Makonde
+ 501, // Langi
+ 502, // Ganda
+ 503, // Bemba
+ 504, // Kabuverdianu
+ 505, // Meru
+ 506, // Kalenjin
+ 507, // Nama
+ 508, // Machame
+ 509, // Colognian
+ 510, // Masai
+ 512, // Soga
+ 513, // Luyia
+ 514, // Asu
+ 515, // Teso
+ 517, // Saho
+ 518, // Koyra Chiini
+ 519, // Rwa
+ 520, // Luo
+ 521, // Chiga
+ 522, // Central Morocco Tamazight
+ 523, // Koyraboro Senni
+ 524, // Shambala
+ 525, // Bodo
0, // Avaric
0, // Chamorro
- 524, // Chechen
- 525, // Church
- 526, // Chuvash
+ 526, // Chechen
+ 527, // Church
+ 528, // Chuvash
0, // Cree
0, // Haitian
0, // Herero
@@ -1129,38 +1133,38 @@ static const quint16 locale_index[] = {
0, // Kongo
0, // Kwanyama
0, // Limburgish
- 527, // Luba Katanga
- 528, // Luxembourgish
+ 529, // Luba Katanga
+ 530, // Luxembourgish
0, // Navaho
0, // Ndonga
0, // Ojibwa
0, // Pali
- 529, // Walloon
- 530, // Aghem
- 531, // Basaa
- 532, // Zarma
- 533, // Duala
- 534, // Jola Fonyi
- 535, // Ewondo
- 536, // Bafia
- 537, // Makhuwa Meetto
- 538, // Mundang
- 539, // Kwasio
- 540, // Nuer
- 541, // Sakha
- 542, // Sangu
+ 531, // Walloon
+ 532, // Aghem
+ 533, // Basaa
+ 534, // Zarma
+ 535, // Duala
+ 536, // Jola Fonyi
+ 537, // Ewondo
+ 538, // Bafia
+ 539, // Makhuwa Meetto
+ 540, // Mundang
+ 541, // Kwasio
+ 542, // Nuer
+ 543, // Sakha
+ 544, // Sangu
0, // Congo Swahili
- 543, // Tasawaq
- 544, // Vai
- 546, // Walser
- 547, // Yangben
+ 545, // Tasawaq
+ 546, // Vai
+ 548, // Walser
+ 549, // Yangben
0, // Avestan
- 548, // Asturian
- 549, // Ngomba
- 550, // Kako
- 551, // Meta
- 552, // Ngiemboon
- 0, // Aragonese
+ 550, // Asturian
+ 551, // Ngomba
+ 552, // Kako
+ 553, // Meta
+ 554, // Ngiemboon
+ 555, // Aragonese
0, // Akkadian
0, // Ancient Egyptian
0, // Ancient Greek
@@ -1189,7 +1193,7 @@ static const quint16 locale_index[] = {
0, // Lycian
0, // Lydian
0, // Mandingo
- 553, // Manipuri
+ 556, // Manipuri
0, // Meroitic
0, // Northern Thai
0, // Old Irish
@@ -1208,26 +1212,26 @@ static const quint16 locale_index[] = {
0, // Sora
0, // Sylheti
0, // Tagbanwa
- 554, // Tai Dam
+ 557, // Tai Dam
0, // Tai Nua
0, // Ugaritic
- 555, // Akoose
- 556, // Lakota
- 557, // Standard Moroccan Tamazight
- 558, // Mapuche
- 559, // Central Kurdish
- 561, // Lower Sorbian
- 562, // Upper Sorbian
- 563, // Kenyang
- 564, // Mohawk
- 565, // Nko
- 566, // Prussian
- 567, // Kiche
- 568, // Southern Sami
- 569, // Lule Sami
- 570, // Inari Sami
- 571, // Skolt Sami
- 572, // Warlpiri
+ 558, // Akoose
+ 559, // Lakota
+ 560, // Standard Moroccan Tamazight
+ 561, // Mapuche
+ 562, // Central Kurdish
+ 564, // Lower Sorbian
+ 565, // Upper Sorbian
+ 566, // Kenyang
+ 567, // Mohawk
+ 568, // Nko
+ 569, // Prussian
+ 570, // Kiche
+ 571, // Southern Sami
+ 572, // Lule Sami
+ 573, // Inari Sami
+ 574, // Skolt Sami
+ 575, // Warlpiri
0, // Manichaean Middle Persian
0, // Mende
0, // Ancient North Arabian
@@ -1245,10 +1249,10 @@ static const quint16 locale_index[] = {
0, // Bhojpuri
0, // Hieroglyphic Luwian
0, // Literary Chinese
- 573, // Mazanderani
+ 576, // Mazanderani
0, // Mru
0, // Newari
- 574, // Northern Luri
+ 577, // Northern Luri
0, // Palauan
0, // Papiamento
0, // Saraiki
@@ -1256,16 +1260,19 @@ static const quint16 locale_index[] = {
0, // Tok Pisin
0, // Tuvalu
0, // Uncoded Languages
- 576, // Cantonese
- 0, // Osage
+ 579, // Cantonese
+ 581, // Osage
0, // Tangut
- 578, // Ido
- 579, // Lojban
- 580, // Sicilian
- 581, // Southern Kurdish
- 582, // Western Balochi
- 583, // Cebuano
- 584, // Erzya
+ 582, // Ido
+ 583, // Lojban
+ 584, // Sicilian
+ 585, // Southern Kurdish
+ 586, // Western Balochi
+ 587, // Cebuano
+ 588, // Erzya
+ 589, // Chickasaw
+ 590, // Muscogee
+ 591, // Silesian
0 // trailing 0
};
@@ -1281,637 +1288,645 @@ static const QLocaleData locale_data[] = {
{ 6, 7, 127, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 113,6 , 10,17 , 37,5 , 8,10 , 310,28 , 338,58 , 396,15 , 411,28 , 338,58 , 396,15 , 7,11 , 7,10 , 54,4 , 5,17 , 22,23 , {77,75,68}, 11,3 , 198,54 , 13,5 , 4,0 , 51,5 , 64,18 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Macedonia
{ 6, 7, 257, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 14,9 , 14,9 , 113,6 , 10,17 , 37,5 , 8,10 , 310,28 , 338,58 , 396,15 , 411,28 , 338,58 , 396,15 , 7,11 , 7,10 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 252,21 , 13,5 , 4,0 , 51,5 , 82,6 , 2, 1, 1, 6, 7 }, // Albanian/Latin/Kosovo
{ 7, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 23,6 , 23,6 , 29,9 , 38,8 , 119,10 , 63,17 , 18,7 , 25,12 , 439,27 , 466,28 , 494,14 , 439,27 , 466,28 , 494,14 , 18,3 , 17,4 , 58,3 , 61,23 , 22,23 , {69,84,66}, 15,2 , 273,34 , 4,4 , 4,0 , 88,4 , 92,5 , 2, 1, 7, 6, 7 }, // Amharic/Ethiopic/Ethiopia
- { 8, 1, 64, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,71,80}, 17,5 , 307,81 , 13,5 , 4,0 , 97,7 , 104,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Egypt
- { 8, 1, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,90,68}, 22,5 , 388,102 , 13,5 , 4,0 , 97,7 , 107,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Algeria
- { 8, 1, 17, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {66,72,68}, 27,5 , 490,91 , 13,5 , 4,0 , 97,7 , 114,7 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Bahrain
- { 8, 1, 42, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {88,65,70}, 32,4 , 581,112 , 13,5 , 4,0 , 97,7 , 121,4 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Chad
- { 8, 1, 48, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,77,70}, 36,2 , 693,105 , 13,5 , 4,0 , 97,7 , 125,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Comoros
- { 8, 1, 59, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,74,70}, 38,3 , 798,84 , 13,5 , 4,0 , 97,7 , 134,6 , 0, 0, 6, 6, 7 }, // Arabic/Arabic/Djibouti
- { 8, 1, 67, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,82,78}, 41,3 , 882,91 , 13,5 , 4,0 , 97,7 , 140,7 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Eritrea
- { 8, 1, 103, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,81,68}, 44,5 , 973,84 , 13,5 , 4,0 , 97,7 , 147,6 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Iraq
- { 8, 1, 105, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 55,4 , 59,9 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 13,5 , 4,0 , 97,7 , 153,7 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Israel
- { 8, 1, 109, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {74,79,68}, 50,5 , 1190,84 , 13,5 , 4,0 , 97,7 , 160,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Jordan
- { 8, 1, 115, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,87,68}, 55,5 , 1274,84 , 13,5 , 4,0 , 97,7 , 166,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Kuwait
- { 8, 1, 119, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,66,80}, 60,5 , 1358,84 , 13,5 , 4,0 , 97,7 , 172,5 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Lebanon
- { 8, 1, 122, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,89,68}, 65,5 , 1442,88 , 13,5 , 4,0 , 97,7 , 177,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Libya
- { 8, 1, 136, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,82,85}, 70,4 , 1530,112 , 13,5 , 4,0 , 97,7 , 182,9 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Mauritania
- { 8, 1, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 13,5 , 4,0 , 97,7 , 191,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Morocco
- { 8, 1, 162, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {79,77,82}, 79,5 , 1729,77 , 13,5 , 4,0 , 97,7 , 197,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Oman
- { 8, 1, 165, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 13,5 , 4,0 , 97,7 , 202,18 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Palestinian Territories
- { 8, 1, 175, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {81,65,82}, 84,5 , 1806,70 , 13,5 , 4,0 , 97,7 , 220,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Qatar
- { 8, 1, 186, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,65,82}, 89,5 , 1876,77 , 13,5 , 4,0 , 97,7 , 223,24 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Saudi Arabia
- { 8, 1, 194, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,79,83}, 94,1 , 1953,77 , 13,5 , 4,0 , 97,7 , 247,7 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Somalia
- { 8, 1, 201, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,68,71}, 95,4 , 2030,91 , 13,5 , 4,0 , 97,7 , 254,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Sudan
- { 8, 1, 207, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,89,80}, 99,5 , 2121,77 , 13,5 , 4,0 , 97,7 , 261,5 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Syria
- { 8, 1, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {84,78,68}, 104,5 , 2198,95 , 13,5 , 4,0 , 97,7 , 266,4 , 3, 0, 1, 6, 7 }, // Arabic/Arabic/Tunisia
- { 8, 1, 223, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {65,69,68}, 109,5 , 2293,91 , 13,5 , 4,0 , 97,7 , 270,24 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/United Arab Emirates
- { 8, 1, 236, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 13,5 , 4,0 , 97,7 , 294,15 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Western Sahara
- { 8, 1, 237, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {89,69,82}, 114,5 , 2384,70 , 13,5 , 4,0 , 97,7 , 309,5 , 0, 0, 7, 5, 6 }, // Arabic/Arabic/Yemen
- { 8, 1, 254, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,83,80}, 119,1 , 2454,132 , 13,5 , 4,0 , 97,7 , 314,12 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/South Sudan
- { 8, 1, 260, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 52,7 , 59,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 326,23 , 349,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/World
- { 9, 10, 11, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 65,7 , 65,7 , 156,8 , 164,20 , 37,5 , 8,10 , 574,28 , 602,62 , 664,14 , 574,28 , 602,62 , 664,14 , 0,2 , 0,2 , 135,6 , 141,17 , 22,23 , {65,77,68}, 120,1 , 2586,46 , 13,5 , 4,0 , 355,7 , 362,8 , 2, 0, 1, 6, 7 }, // Armenian/Armenian/Armenia
- { 10, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 72,9 , 72,9 , 184,8 , 192,18 , 68,7 , 75,12 , 678,32 , 710,58 , 768,14 , 678,32 , 710,58 , 768,14 , 22,9 , 22,7 , 158,4 , 162,37 , 22,23 , {73,78,82}, 121,1 , 2632,43 , 8,5 , 4,0 , 370,7 , 377,4 , 2, 1, 7, 7, 7 }, // Assamese/Bengali/India
- { 12, 7, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 81,8 , 81,8 , 156,8 , 210,17 , 37,5 , 8,10 , 782,27 , 809,67 , 99,14 , 782,27 , 809,67 , 99,14 , 0,2 , 0,2 , 199,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2675,58 , 13,5 , 4,0 , 381,10 , 391,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Latin/Azerbaijan
+ { 8, 1, 64, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,71,80}, 17,5 , 307,81 , 13,5 , 4,0 , 97,7 , 104,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Egypt
+ { 8, 1, 3, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,90,68}, 22,5 , 388,102 , 13,5 , 4,0 , 97,7 , 107,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Algeria
+ { 8, 1, 17, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {66,72,68}, 27,5 , 490,91 , 13,5 , 4,0 , 97,7 , 114,7 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Bahrain
+ { 8, 1, 42, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {88,65,70}, 32,4 , 581,112 , 13,5 , 4,0 , 97,7 , 121,4 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Chad
+ { 8, 1, 48, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,77,70}, 36,2 , 693,105 , 13,5 , 4,0 , 97,7 , 125,9 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Comoros
+ { 8, 1, 59, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {68,74,70}, 38,3 , 798,84 , 13,5 , 4,0 , 97,7 , 134,6 , 0, 0, 6, 6, 7 }, // Arabic/Arabic/Djibouti
+ { 8, 1, 67, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {69,82,78}, 41,3 , 882,91 , 13,5 , 4,0 , 97,7 , 140,7 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Eritrea
+ { 8, 1, 103, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,81,68}, 44,5 , 973,84 , 13,5 , 4,0 , 97,7 , 147,6 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Iraq
+ { 8, 1, 105, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 55,4 , 59,9 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 13,5 , 4,0 , 97,7 , 153,7 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Israel
+ { 8, 1, 109, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {74,79,68}, 50,5 , 1190,84 , 13,5 , 4,0 , 97,7 , 160,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Jordan
+ { 8, 1, 115, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {75,87,68}, 55,5 , 1274,84 , 13,5 , 4,0 , 97,7 , 166,6 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Kuwait
+ { 8, 1, 119, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,66,80}, 60,5 , 1358,84 , 13,5 , 4,0 , 97,7 , 172,5 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Lebanon
+ { 8, 1, 122, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {76,89,68}, 65,5 , 1442,88 , 13,5 , 4,0 , 97,7 , 177,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Libya
+ { 8, 1, 136, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,82,85}, 70,4 , 1530,112 , 13,5 , 4,0 , 97,7 , 182,9 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Mauritania
+ { 8, 1, 145, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 37,5 , 8,10 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 13,5 , 4,0 , 97,7 , 191,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Morocco
+ { 8, 1, 162, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {79,77,82}, 79,5 , 1729,77 , 13,5 , 4,0 , 97,7 , 197,5 , 3, 0, 6, 5, 6 }, // Arabic/Arabic/Oman
+ { 8, 1, 165, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {73,76,83}, 49,1 , 1057,133 , 13,5 , 4,0 , 97,7 , 202,18 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Palestinian Territories
+ { 8, 1, 175, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {81,65,82}, 84,5 , 1806,70 , 13,5 , 4,0 , 97,7 , 220,3 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Qatar
+ { 8, 1, 186, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,65,82}, 89,5 , 1876,77 , 13,5 , 4,0 , 97,7 , 223,24 , 2, 1, 7, 5, 6 }, // Arabic/Arabic/Saudi Arabia
+ { 8, 1, 194, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,79,83}, 94,1 , 1953,77 , 13,5 , 4,0 , 97,7 , 247,7 , 0, 0, 1, 6, 7 }, // Arabic/Arabic/Somalia
+ { 8, 1, 201, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,68,71}, 95,4 , 2030,91 , 13,5 , 4,0 , 97,7 , 254,7 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/Sudan
+ { 8, 1, 207, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,89,80}, 99,5 , 2121,77 , 13,5 , 4,0 , 97,7 , 261,5 , 0, 0, 6, 5, 6 }, // Arabic/Arabic/Syria
+ { 8, 1, 216, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {84,78,68}, 104,5 , 2198,95 , 13,5 , 4,0 , 97,7 , 266,4 , 3, 0, 1, 6, 7 }, // Arabic/Arabic/Tunisia
+ { 8, 1, 223, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {65,69,68}, 109,5 , 2293,91 , 13,5 , 4,0 , 97,7 , 270,24 , 2, 1, 6, 5, 6 }, // Arabic/Arabic/United Arab Emirates
+ { 8, 1, 236, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {77,65,68}, 74,5 , 1642,87 , 13,5 , 4,0 , 97,7 , 294,15 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/Western Sahara
+ { 8, 1, 237, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {89,69,82}, 114,5 , 2384,70 , 13,5 , 4,0 , 97,7 , 309,5 , 0, 0, 7, 5, 6 }, // Arabic/Arabic/Yemen
+ { 8, 1, 254, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {83,83,80}, 119,1 , 2454,132 , 13,5 , 4,0 , 97,7 , 314,12 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/South Sudan
+ { 8, 1, 260, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 46,6 , 46,6 , 129,10 , 139,17 , 18,7 , 25,12 , 508,52 , 508,52 , 560,14 , 508,52 , 508,52 , 560,14 , 21,1 , 21,1 , 84,4 , 88,47 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 326,22 , 348,6 , 2, 1, 1, 6, 7 }, // Arabic/Arabic/World
+ { 9, 10, 11, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 52,7 , 52,7 , 156,8 , 164,20 , 37,5 , 8,10 , 574,28 , 602,62 , 664,14 , 574,28 , 602,62 , 664,14 , 0,2 , 0,2 , 135,6 , 141,17 , 22,23 , {65,77,68}, 120,1 , 2586,46 , 13,5 , 4,0 , 354,7 , 361,8 , 2, 0, 1, 6, 7 }, // Armenian/Armenian/Armenia
+ { 10, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 59,9 , 59,9 , 184,8 , 192,18 , 68,7 , 75,12 , 678,32 , 710,58 , 768,14 , 678,32 , 710,58 , 768,14 , 22,9 , 22,7 , 158,4 , 162,37 , 22,23 , {73,78,82}, 121,1 , 2632,43 , 8,5 , 4,0 , 369,7 , 376,4 , 2, 1, 7, 7, 7 }, // Assamese/Bengali/India
+ { 12, 7, 15, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 68,8 , 68,8 , 156,8 , 210,17 , 37,5 , 8,10 , 782,27 , 809,67 , 99,14 , 876,27 , 809,67 , 99,14 , 0,2 , 0,2 , 199,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2675,58 , 13,5 , 4,0 , 380,10 , 390,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Latin/Azerbaijan
{ 12, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Azerbaijani/Arabic/Iran
- { 12, 2, 15, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 156,8 , 210,17 , 37,5 , 8,10 , 876,27 , 903,67 , 99,14 , 876,27 , 903,67 , 99,14 , 31,2 , 29,2 , 45,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2733,12 , 13,5 , 4,0 , 401,10 , 411,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Cyrillic/Azerbaijan
+ { 12, 2, 15, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 156,8 , 210,17 , 37,5 , 8,10 , 903,27 , 930,67 , 99,14 , 903,27 , 930,67 , 99,14 , 31,2 , 29,2 , 45,4 , 5,17 , 22,23 , {65,90,78}, 122,1 , 2733,12 , 13,5 , 4,0 , 400,10 , 410,10 , 2, 1, 1, 6, 7 }, // Azerbaijani/Cyrillic/Azerbaijan
{ 13, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Bashkir/Cyrillic/Russia
- { 14, 7, 197, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 89,9 , 89,9 , 227,6 , 233,36 , 37,5 , 87,12 , 970,28 , 998,68 , 1066,14 , 970,28 , 998,68 , 1066,14 , 0,2 , 0,2 , 203,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 2745,20 , 13,5 , 4,0 , 421,7 , 428,8 , 2, 1, 1, 6, 7 }, // Basque/Latin/Spain
- { 15, 11, 18, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 98,9 , 98,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1080,37 , 1117,58 , 1175,18 , 1080,37 , 1117,58 , 1175,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {66,68,84}, 124,1 , 2765,49 , 0,4 , 4,0 , 436,5 , 441,8 , 2, 1, 7, 6, 7 }, // Bengali/Bengali/Bangladesh
- { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 98,9 , 98,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1080,37 , 1117,58 , 1175,18 , 1080,37 , 1117,58 , 1175,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 2814,43 , 0,4 , 4,0 , 436,5 , 449,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India
- { 16, 31, 25, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 107,9 , 107,9 , 107,9 , 107,9 , 53,10 , 275,30 , 99,22 , 121,27 , 1193,34 , 1227,79 , 1306,27 , 1193,34 , 1227,79 , 1306,27 , 33,5 , 31,6 , 45,4 , 5,17 , 22,23 , {66,84,78}, 125,3 , 2857,15 , 4,4 , 4,0 , 453,6 , 459,5 , 2, 1, 7, 6, 7 }, // Dzongkha/Tibetan/Bhutan
- { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 1333,33 , 1366,43 , 1409,18 , 1333,33 , 1366,43 , 1409,18 , 38,4 , 37,4 , 210,7 , 217,17 , 22,23 , {69,85,82}, 14,1 , 2872,36 , 13,5 , 4,0 , 464,9 , 473,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France
- { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 305,12 , 317,22 , 148,9 , 157,14 , 1427,21 , 1448,55 , 1503,14 , 1427,21 , 1448,55 , 1503,14 , 42,6 , 41,6 , 234,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 13,5 , 4,0 , 478,9 , 487,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria
- { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 123,5 , 123,5 , 128,10 , 128,10 , 339,8 , 347,18 , 171,6 , 177,10 , 1517,54 , 1517,54 , 1571,14 , 1517,54 , 1517,54 , 1571,14 , 48,5 , 47,3 , 241,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 13,5 , 4,0 , 495,6 , 495,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar
- { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 138,7 , 138,7 , 365,7 , 317,22 , 37,5 , 187,11 , 1585,21 , 1606,56 , 1662,14 , 1585,21 , 1606,56 , 1662,14 , 0,2 , 0,2 , 246,5 , 251,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 13,5 , 4,0 , 501,10 , 511,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus
- { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 145,9 , 154,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1676,40 , 1716,46 , 1762,14 , 1676,40 , 1776,47 , 1762,14 , 0,2 , 0,2 , 268,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 4,0 , 519,5 , 524,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia
- { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 163,7 , 163,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1823,28 , 1851,60 , 1911,21 , 1823,28 , 1851,60 , 1911,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 531,6 , 537,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain
- { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 163,7 , 163,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1823,28 , 1851,60 , 1911,21 , 1823,28 , 1851,60 , 1911,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 531,6 , 544,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra
- { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 163,7 , 163,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1823,28 , 1851,60 , 1911,21 , 1823,28 , 1851,60 , 1911,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 531,6 , 551,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France
- { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 163,7 , 163,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1823,28 , 1851,60 , 1911,21 , 1823,28 , 1851,60 , 1911,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 531,6 , 557,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy
- { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 170,5 , 170,5 , 175,5 , 175,5 , 394,8 , 402,13 , 198,6 , 204,11 , 1932,21 , 1953,28 , 1981,14 , 1932,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 270,2 , 272,21 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 4,0 , 563,4 , 567,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China
- { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 170,5 , 170,5 , 175,5 , 175,5 , 269,6 , 402,13 , 198,6 , 204,11 , 1932,21 , 1953,28 , 1981,14 , 1932,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 270,2 , 272,21 , 22,23 , {72,75,68}, 6,1 , 3135,11 , 4,4 , 4,0 , 563,4 , 569,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong
- { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 170,5 , 170,5 , 175,5 , 175,5 , 269,6 , 402,13 , 198,6 , 204,11 , 1932,21 , 1953,28 , 1981,14 , 1932,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 270,2 , 272,21 , 22,23 , {77,79,80}, 134,4 , 3146,13 , 4,4 , 4,0 , 563,4 , 578,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau
- { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 170,5 , 170,5 , 175,5 , 175,5 , 27,8 , 402,13 , 198,6 , 204,11 , 1932,21 , 1953,28 , 1981,14 , 1932,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 270,2 , 272,21 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 4,0 , 563,4 , 587,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore
- { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 170,5 , 170,5 , 180,5 , 180,5 , 415,8 , 402,13 , 198,6 , 215,13 , 1995,21 , 1953,28 , 1981,14 , 1995,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 293,3 , 5,17 , 22,23 , {72,75,68}, 6,1 , 3135,11 , 18,5 , 4,0 , 590,4 , 594,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong
- { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 170,5 , 170,5 , 180,5 , 180,5 , 415,8 , 402,13 , 198,6 , 215,13 , 1995,21 , 1953,28 , 1981,14 , 1995,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 293,3 , 5,17 , 22,23 , {77,79,80}, 134,4 , 3174,13 , 18,5 , 4,0 , 590,4 , 603,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau
- { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 170,5 , 170,5 , 175,5 , 175,5 , 394,8 , 423,14 , 198,6 , 215,13 , 1995,21 , 1953,28 , 1981,14 , 1995,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 13,5 , 4,0 , 590,4 , 612,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan
+ { 14, 7, 197, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 76,9 , 76,9 , 227,6 , 233,36 , 37,5 , 87,12 , 997,28 , 1025,68 , 1093,14 , 997,28 , 1025,68 , 1093,14 , 0,2 , 0,2 , 203,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 2745,20 , 13,5 , 4,0 , 420,7 , 427,8 , 2, 1, 1, 6, 7 }, // Basque/Latin/Spain
+ { 15, 11, 18, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {66,68,84}, 124,1 , 2765,49 , 0,4 , 4,0 , 435,5 , 440,8 , 2, 1, 7, 6, 7 }, // Bengali/Bengali/Bangladesh
+ { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 2814,43 , 0,4 , 4,0 , 435,5 , 448,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India
+ { 16, 31, 25, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 94,9 , 94,9 , 94,9 , 94,9 , 53,10 , 275,30 , 99,22 , 121,27 , 1220,34 , 1254,79 , 1333,27 , 1220,34 , 1254,79 , 1333,27 , 33,5 , 31,6 , 45,4 , 5,17 , 22,23 , {66,84,78}, 125,3 , 2857,15 , 4,4 , 4,0 , 452,6 , 458,5 , 2, 1, 7, 6, 7 }, // Dzongkha/Tibetan/Bhutan
+ { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 103,8 , 103,8 , 119,10 , 97,16 , 37,5 , 8,10 , 1360,33 , 1393,43 , 1436,18 , 1360,33 , 1393,43 , 1436,18 , 38,4 , 37,4 , 210,7 , 217,17 , 234,23 , {69,85,82}, 14,1 , 2872,36 , 13,5 , 4,0 , 463,9 , 472,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France
+ { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 305,12 , 317,22 , 55,4 , 59,9 , 1454,21 , 1475,55 , 1530,14 , 1454,21 , 1475,55 , 1530,14 , 42,6 , 41,6 , 257,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 13,5 , 4,0 , 477,9 , 486,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria
+ { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 118,5 , 118,5 , 123,10 , 123,10 , 339,8 , 347,18 , 148,6 , 154,10 , 1544,54 , 1544,54 , 1598,14 , 1544,54 , 1544,54 , 1598,14 , 48,5 , 47,3 , 264,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 13,5 , 4,0 , 494,6 , 494,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar
+ { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 133,7 , 133,7 , 365,7 , 317,22 , 37,5 , 164,11 , 1612,21 , 1633,56 , 1689,14 , 1612,21 , 1633,56 , 1689,14 , 0,2 , 0,2 , 269,5 , 274,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 13,5 , 4,0 , 500,10 , 510,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus
+ { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 140,9 , 149,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1703,40 , 1743,46 , 1789,14 , 1703,40 , 1803,47 , 1789,14 , 0,2 , 0,2 , 291,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 4,0 , 518,5 , 523,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia
+ { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 530,6 , 536,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain
+ { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 530,6 , 543,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra
+ { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 530,6 , 550,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France
+ { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 530,6 , 556,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy
+ { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 394,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 4,0 , 562,4 , 566,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China
+ { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 269,6 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 4,0 , 562,4 , 568,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong
+ { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 269,6 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {77,79,80}, 137,4 , 3146,13 , 4,4 , 4,0 , 562,4 , 577,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau
+ { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 27,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 4,0 , 562,4 , 586,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore
+ { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 175,5 , 175,5 , 415,8 , 402,13 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 316,3 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 18,5 , 4,0 , 589,4 , 593,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong
+ { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 175,5 , 175,5 , 415,8 , 402,13 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 316,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 18,5 , 4,0 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau
+ { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 170,5 , 170,5 , 394,8 , 423,14 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 4,4 , 4,0 , 589,4 , 611,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan
{ 26, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Corsican/Latin/France
- { 27, 7, 54, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2016,28 , 2044,58 , 2102,14 , 2016,28 , 2044,58 , 2116,14 , 0,2 , 0,2 , 296,7 , 5,17 , 22,23 , {72,82,75}, 138,2 , 3200,60 , 13,5 , 4,0 , 614,8 , 622,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia
- { 27, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2016,28 , 2044,58 , 2116,14 , 2016,28 , 2044,58 , 2116,14 , 0,2 , 0,2 , 296,7 , 5,17 , 22,23 , {66,65,77}, 140,2 , 3260,85 , 13,5 , 4,0 , 614,8 , 630,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina
- { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 185,7 , 185,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2130,21 , 2151,49 , 2200,14 , 2130,21 , 2151,49 , 2200,14 , 60,4 , 57,4 , 303,5 , 5,17 , 22,23 , {67,90,75}, 142,2 , 3345,68 , 13,5 , 4,0 , 649,7 , 656,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic
- { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 495,10 , 505,23 , 228,5 , 233,10 , 2214,28 , 2242,51 , 2293,14 , 2307,35 , 2242,51 , 2293,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 144,3 , 3413,42 , 13,5 , 4,0 , 661,5 , 666,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark
- { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 495,10 , 505,23 , 228,5 , 233,10 , 2214,28 , 2242,51 , 2293,14 , 2307,35 , 2242,51 , 2293,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 144,3 , 3413,42 , 13,5 , 4,0 , 661,5 , 673,8 , 2, 0, 1, 6, 7 }, // Danish/Latin/Greenland
- { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 23,6 , 681,10 , 691,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands
- { 30, 7, 12, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,87,71}, 147,4 , 3474,55 , 8,5 , 23,6 , 681,10 , 700,5 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Aruba
- { 30, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 538,9 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 23,6 , 681,10 , 705,6 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Belgium
- { 30, 7, 152, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 151,4 , 3529,97 , 8,5 , 23,6 , 681,10 , 711,7 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Cura Sao
- { 30, 7, 202, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {83,82,68}, 6,1 , 3626,58 , 8,5 , 23,6 , 681,10 , 718,8 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Suriname
- { 30, 7, 255, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3684,61 , 8,5 , 23,6 , 681,10 , 726,19 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Bonaire
- { 30, 7, 256, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2342,21 , 2363,59 , 2422,14 , 2342,21 , 2363,59 , 2422,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 151,4 , 3529,97 , 8,5 , 23,6 , 681,10 , 745,12 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Sint Maarten
- { 31, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 757,16 , 773,13 , 2, 1, 7, 6, 7 }, // English/Latin/United States
- { 31, 3, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 155,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // English/Deseret/United States
- { 31, 7, 4, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 793,14 , 2, 1, 7, 6, 7 }, // English/Latin/American Samoa
- { 31, 7, 7, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 807,8 , 2, 1, 1, 6, 7 }, // English/Latin/Anguilla
- { 31, 7, 9, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 815,17 , 2, 1, 7, 6, 7 }, // English/Latin/Antigua And Barbuda
- { 31, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,9 , 210,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 2436,25 , 0,28 , 28,57 , 2436,25 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 832,18 , 850,9 , 2, 1, 7, 6, 7 }, // English/Latin/Australia
- { 31, 7, 14, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 4,0 , 786,7 , 859,7 , 2, 1, 1, 6, 7 }, // English/Latin/Austria
- { 31, 7, 16, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,83,68}, 6,1 , 3930,53 , 4,4 , 4,0 , 786,7 , 866,7 , 2, 1, 7, 6, 7 }, // English/Latin/Bahamas
- { 31, 7, 19, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,66,68}, 6,1 , 3983,56 , 4,4 , 4,0 , 786,7 , 873,8 , 2, 1, 1, 6, 7 }, // English/Latin/Barbados
- { 31, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 27,8 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 786,7 , 881,7 , 2, 1, 1, 6, 7 }, // English/Latin/Belgium
- { 31, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 4039,47 , 4,4 , 4,0 , 786,7 , 888,6 , 2, 1, 7, 6, 7 }, // English/Latin/Belize
- { 31, 7, 24, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,77,68}, 6,1 , 4086,53 , 4,4 , 4,0 , 786,7 , 894,7 , 2, 1, 1, 6, 7 }, // English/Latin/Bermuda
- { 31, 7, 28, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,87,80}, 158,1 , 4139,50 , 4,4 , 4,0 , 786,7 , 901,8 , 2, 1, 7, 6, 7 }, // English/Latin/Botswana
- { 31, 7, 31, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 909,30 , 2, 1, 1, 6, 7 }, // English/Latin/British Indian Ocean Territory
- { 31, 7, 35, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,73,70}, 159,3 , 4189,53 , 4,4 , 4,0 , 786,7 , 939,7 , 0, 0, 1, 6, 7 }, // English/Latin/Burundi
- { 31, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 4242,83 , 4,4 , 4,0 , 786,7 , 946,8 , 0, 0, 1, 6, 7 }, // English/Latin/Cameroon
- { 31, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 53,10 , 35,18 , 18,7 , 25,12 , 2461,35 , 28,57 , 85,14 , 2461,35 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,65,68}, 6,1 , 4325,53 , 4,4 , 4,0 , 954,16 , 970,6 , 2, 0, 7, 6, 7 }, // English/Latin/Canada
- { 31, 7, 40, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,89,68}, 6,1 , 4378,71 , 4,4 , 4,0 , 786,7 , 976,14 , 2, 1, 1, 6, 7 }, // English/Latin/Cayman Islands
- { 31, 7, 45, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 990,16 , 2, 1, 1, 6, 7 }, // English/Latin/Christmas Island
- { 31, 7, 46, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 1006,23 , 2, 1, 1, 6, 7 }, // English/Latin/Cocos Islands
- { 31, 7, 51, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 786,7 , 1029,12 , 2, 1, 1, 6, 7 }, // English/Latin/Cook Islands
- { 31, 7, 56, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 786,7 , 1041,6 , 2, 1, 1, 6, 7 }, // English/Latin/Cyprus
- { 31, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 228,5 , 233,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 144,3 , 4511,44 , 13,5 , 4,0 , 786,7 , 1047,7 , 2, 0, 1, 6, 7 }, // English/Latin/Denmark
- { 31, 7, 60, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1054,8 , 2, 1, 7, 6, 7 }, // English/Latin/Dominica
- { 31, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,82,78}, 41,3 , 4555,50 , 4,4 , 4,0 , 786,7 , 1062,7 , 2, 1, 1, 6, 7 }, // English/Latin/Eritrea
- { 31, 7, 70, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,75,80}, 119,1 , 4605,74 , 4,4 , 4,0 , 786,7 , 1069,16 , 2, 1, 1, 6, 7 }, // English/Latin/Falkland Islands
- { 31, 7, 72, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,74,68}, 6,1 , 4679,47 , 4,4 , 4,0 , 786,7 , 1085,4 , 2, 1, 1, 6, 7 }, // English/Latin/Fiji
- { 31, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 243,4 , 247,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 786,7 , 1089,7 , 2, 1, 1, 6, 7 }, // English/Latin/Finland
- { 31, 7, 75, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 786,7 , 1096,8 , 2, 1, 1, 6, 7 }, // English/Latin/Guernsey
- { 31, 7, 80, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,77,68}, 162,1 , 4758,50 , 4,4 , 4,0 , 786,7 , 1104,6 , 2, 1, 1, 6, 7 }, // English/Latin/Gambia
- { 31, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 786,7 , 1110,7 , 2, 1, 1, 6, 7 }, // English/Latin/Germany
- { 31, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,72,83}, 163,3 , 4808,47 , 4,4 , 4,0 , 786,7 , 1117,5 , 2, 1, 1, 6, 7 }, // English/Latin/Ghana
- { 31, 7, 84, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,73,80}, 119,1 , 4855,53 , 4,4 , 4,0 , 786,7 , 1122,9 , 2, 1, 1, 6, 7 }, // English/Latin/Gibraltar
- { 31, 7, 87, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1131,7 , 2, 1, 1, 6, 7 }, // English/Latin/Grenada
- { 31, 7, 89, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1138,4 , 2, 1, 7, 6, 7 }, // English/Latin/Guam
- { 31, 7, 93, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,89,68}, 6,1 , 4908,56 , 4,4 , 4,0 , 786,7 , 1142,6 , 2, 0, 1, 6, 7 }, // English/Latin/Guyana
- { 31, 7, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 415,8 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {72,75,68}, 166,3 , 4964,56 , 4,4 , 4,0 , 786,7 , 1148,19 , 2, 1, 7, 6, 7 }, // English/Latin/Hong Kong
- { 31, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 27,8 , 192,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 5020,44 , 8,5 , 4,0 , 786,7 , 1167,5 , 2, 1, 7, 7, 7 }, // English/Latin/India
- { 31, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 97,16 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 786,7 , 1172,7 , 2, 1, 1, 6, 7 }, // English/Latin/Ireland
- { 31, 7, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 55,4 , 59,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,76,83}, 49,1 , 5064,62 , 4,4 , 4,0 , 786,7 , 1179,6 , 2, 1, 7, 5, 6 }, // English/Latin/Israel
- { 31, 7, 107, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {74,77,68}, 6,1 , 5126,53 , 4,4 , 4,0 , 786,7 , 1185,7 , 2, 1, 7, 6, 7 }, // English/Latin/Jamaica
- { 31, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,69,83}, 2,3 , 5179,53 , 4,4 , 4,0 , 786,7 , 1192,5 , 2, 1, 7, 6, 7 }, // English/Latin/Kenya
- { 31, 7, 112, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 1197,8 , 2, 1, 1, 6, 7 }, // English/Latin/Kiribati
- { 31, 7, 120, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 4,0 , 786,7 , 1205,7 , 2, 1, 1, 6, 7 }, // English/Latin/Lesotho
- { 31, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {76,82,68}, 6,1 , 5293,53 , 4,4 , 4,0 , 786,7 , 1212,7 , 2, 1, 1, 6, 7 }, // English/Latin/Liberia
- { 31, 7, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,79,80}, 134,4 , 5346,53 , 4,4 , 4,0 , 786,7 , 1219,15 , 2, 1, 7, 6, 7 }, // English/Latin/Macau
- { 31, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,71,65}, 169,2 , 5399,54 , 4,4 , 4,0 , 786,7 , 1234,10 , 0, 0, 1, 6, 7 }, // English/Latin/Madagascar
- { 31, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,87,75}, 171,2 , 5453,53 , 4,4 , 4,0 , 786,7 , 1244,6 , 2, 1, 1, 6, 7 }, // English/Latin/Malawi
- { 31, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,89,82}, 173,2 , 5506,59 , 4,4 , 4,0 , 786,7 , 1250,8 , 2, 1, 1, 6, 7 }, // English/Latin/Malaysia
- { 31, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 786,7 , 1258,5 , 2, 1, 7, 6, 7 }, // English/Latin/Malta
- { 31, 7, 134, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1263,16 , 2, 1, 7, 6, 7 }, // English/Latin/Marshall Islands
- { 31, 7, 137, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,85,82}, 175,2 , 5565,53 , 4,4 , 4,0 , 786,7 , 1279,9 , 2, 0, 1, 6, 7 }, // English/Latin/Mauritius
- { 31, 7, 140, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1288,10 , 2, 1, 1, 6, 7 }, // English/Latin/Micronesia
- { 31, 7, 144, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1298,10 , 2, 1, 1, 6, 7 }, // English/Latin/Montserrat
- { 31, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,65,68}, 6,1 , 5618,53 , 4,4 , 4,0 , 786,7 , 1308,7 , 2, 1, 1, 6, 7 }, // English/Latin/Namibia
- { 31, 7, 149, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 1315,5 , 2, 1, 1, 6, 7 }, // English/Latin/Nauru
- { 31, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 23,6 , 786,7 , 1320,11 , 2, 1, 1, 6, 7 }, // English/Latin/Netherlands
- { 31, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 571,7 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 786,7 , 1331,11 , 2, 1, 1, 6, 7 }, // English/Latin/New Zealand
- { 31, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,71,78}, 177,1 , 5671,50 , 4,4 , 4,0 , 786,7 , 1342,7 , 2, 1, 1, 6, 7 }, // English/Latin/Nigeria
- { 31, 7, 158, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 786,7 , 1349,4 , 2, 1, 1, 6, 7 }, // English/Latin/Niue
- { 31, 7, 159, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 1353,14 , 2, 1, 1, 6, 7 }, // English/Latin/Norfolk Island
- { 31, 7, 160, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1367,24 , 2, 1, 1, 6, 7 }, // English/Latin/Northern Mariana Islands
- { 31, 7, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,75,82}, 175,2 , 5721,53 , 4,4 , 4,0 , 786,7 , 1391,8 , 2, 0, 7, 6, 7 }, // English/Latin/Pakistan
- { 31, 7, 164, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1399,5 , 2, 1, 1, 6, 7 }, // English/Latin/Palau
- { 31, 7, 167, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,71,75}, 131,1 , 5774,73 , 4,4 , 4,0 , 786,7 , 1404,16 , 2, 1, 1, 6, 7 }, // English/Latin/Papua New Guinea
- { 31, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 178,1 , 5847,53 , 4,4 , 4,0 , 786,7 , 1420,11 , 2, 1, 7, 6, 7 }, // English/Latin/Philippines
- { 31, 7, 171, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 786,7 , 1431,16 , 2, 1, 1, 6, 7 }, // English/Latin/Pitcairn
- { 31, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1447,11 , 2, 1, 7, 6, 7 }, // English/Latin/Puerto Rico
- { 31, 7, 179, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {82,87,70}, 179,2 , 5900,47 , 4,4 , 4,0 , 786,7 , 1458,6 , 0, 0, 1, 6, 7 }, // English/Latin/Rwanda
- { 31, 7, 180, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1464,17 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Kitts And Nevis
- { 31, 7, 181, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1481,9 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Lucia
- { 31, 7, 182, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 786,7 , 1490,24 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Vincent And The Grenadines
- { 31, 7, 183, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {87,83,84}, 181,3 , 5947,40 , 4,4 , 4,0 , 786,7 , 1514,5 , 2, 1, 7, 6, 7 }, // English/Latin/Samoa
- { 31, 7, 188, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,67,82}, 184,2 , 5987,59 , 4,4 , 4,0 , 786,7 , 1519,10 , 2, 1, 1, 6, 7 }, // English/Latin/Seychelles
- { 31, 7, 189, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,76,76}, 186,2 , 6046,68 , 4,4 , 4,0 , 786,7 , 1529,12 , 0, 0, 1, 6, 7 }, // English/Latin/Sierra Leone
- { 31, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,71,68}, 6,1 , 6114,56 , 4,4 , 4,0 , 786,7 , 1541,9 , 2, 1, 7, 6, 7 }, // English/Latin/Singapore
- { 31, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 29,7 , 786,7 , 1550,8 , 2, 1, 1, 6, 7 }, // English/Latin/Slovenia
- { 31, 7, 193, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,66,68}, 6,1 , 6170,74 , 4,4 , 4,0 , 786,7 , 1558,15 , 2, 1, 1, 6, 7 }, // English/Latin/Solomon Islands
- { 31, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 578,10 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 4,0 , 786,7 , 1573,12 , 2, 1, 7, 6, 7 }, // English/Latin/South Africa
- { 31, 7, 199, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,72,80}, 119,1 , 6244,56 , 4,4 , 4,0 , 786,7 , 1585,10 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Helena
- { 31, 7, 201, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,68,71}, 0,0 , 6300,50 , 4,4 , 4,0 , 786,7 , 1595,5 , 2, 1, 6, 5, 6 }, // English/Latin/Sudan
- { 31, 7, 204, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,90,76}, 188,1 , 6350,53 , 4,4 , 4,0 , 786,7 , 1600,8 , 2, 1, 1, 6, 7 }, // English/Latin/Swaziland
- { 31, 7, 205, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 53,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,69,75}, 189,2 , 6403,47 , 13,5 , 4,0 , 786,7 , 1608,6 , 2, 0, 1, 6, 7 }, // English/Latin/Sweden
- { 31, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 0,0 , 6450,41 , 8,5 , 36,5 , 786,7 , 1614,11 , 2, 0, 1, 6, 7 }, // English/Latin/Switzerland
- { 31, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,90,83}, 191,3 , 6491,62 , 4,4 , 4,0 , 786,7 , 1625,8 , 2, 0, 1, 6, 7 }, // English/Latin/Tanzania
- { 31, 7, 213, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 786,7 , 1633,7 , 2, 1, 1, 6, 7 }, // English/Latin/Tokelau
- { 31, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,79,80}, 194,2 , 6553,49 , 4,4 , 4,0 , 786,7 , 1640,5 , 2, 1, 1, 6, 7 }, // English/Latin/Tonga
- { 31, 7, 215, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,84,68}, 6,1 , 6602,80 , 4,4 , 4,0 , 786,7 , 1645,17 , 2, 1, 7, 6, 7 }, // English/Latin/Trinidad And Tobago
- { 31, 7, 219, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1662,22 , 2, 1, 1, 6, 7 }, // English/Latin/Turks And Caicos Islands
- { 31, 7, 220, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 786,7 , 1684,6 , 2, 1, 1, 6, 7 }, // English/Latin/Tuvalu
- { 31, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,71,88}, 196,3 , 6682,56 , 4,4 , 4,0 , 786,7 , 1690,6 , 0, 0, 1, 6, 7 }, // English/Latin/Uganda
- { 31, 7, 223, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {65,69,68}, 199,3 , 6738,55 , 4,4 , 4,0 , 786,7 , 1696,20 , 2, 1, 6, 5, 6 }, // English/Latin/United Arab Emirates
- { 31, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 210,9 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 6793,47 , 4,4 , 4,0 , 1716,15 , 1731,14 , 2, 1, 1, 6, 7 }, // English/Latin/United Kingdom
- { 31, 7, 226, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1745,21 , 2, 1, 7, 6, 7 }, // English/Latin/United States Minor Outlying Islands
- { 31, 7, 229, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {86,85,86}, 202,2 , 6840,44 , 4,4 , 4,0 , 786,7 , 1766,7 , 0, 0, 1, 6, 7 }, // English/Latin/Vanuatu
- { 31, 7, 233, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1773,22 , 2, 1, 1, 6, 7 }, // English/Latin/British Virgin Islands
- { 31, 7, 234, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 786,7 , 1795,19 , 2, 1, 7, 6, 7 }, // English/Latin/United States Virgin Islands
- { 31, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,77,87}, 131,1 , 6884,50 , 4,4 , 4,0 , 786,7 , 1814,6 , 2, 1, 1, 6, 7 }, // English/Latin/Zambia
- { 31, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 415,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1820,8 , 2, 1, 7, 6, 7 }, // English/Latin/Zimbabwe
- { 31, 7, 249, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 3745,35 , 4,4 , 4,0 , 786,7 , 1828,12 , 2, 1, 1, 6, 7 }, // English/Latin/Diego Garcia
- { 31, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 786,7 , 1840,11 , 2, 1, 1, 6, 7 }, // English/Latin/Isle Of Man
- { 31, 7, 252, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 786,7 , 1851,6 , 2, 1, 1, 6, 7 }, // English/Latin/Jersey
- { 31, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,83,80}, 119,1 , 6934,68 , 4,4 , 4,0 , 786,7 , 1857,11 , 2, 1, 1, 6, 7 }, // English/Latin/South Sudan
- { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,78,71}, 151,4 , 7002,95 , 4,4 , 4,0 , 786,7 , 1868,12 , 2, 1, 1, 6, 7 }, // English/Latin/Sint Maarten
- { 31, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 786,7 , 1880,5 , 2, 1, 1, 6, 7 }, // English/Latin/World
- { 31, 7, 261, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 200,10 , 210,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 786,7 , 1885,6 , 2, 1, 1, 6, 7 }, // English/Latin/Europe
- { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 219,9 , 219,9 , 588,8 , 596,26 , 37,5 , 256,25 , 2496,21 , 2517,51 , 2568,14 , 2496,21 , 2517,51 , 2568,14 , 70,3 , 67,3 , 308,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 41,6 , 4,0 , 1891,9 , 1900,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World
- { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 228,8 , 228,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2582,14 , 2596,63 , 2582,14 , 2582,14 , 2596,63 , 2582,14 , 0,2 , 0,2 , 314,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7097,20 , 13,5 , 4,0 , 1905,5 , 1910,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia
- { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2659,28 , 2687,74 , 2761,14 , 2775,35 , 2687,74 , 2761,14 , 0,2 , 0,2 , 320,3 , 5,17 , 22,23 , {68,75,75}, 189,2 , 7117,43 , 13,5 , 4,0 , 1915,8 , 1923,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands
- { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2659,28 , 2687,74 , 2761,14 , 2775,35 , 2687,74 , 2761,14 , 0,2 , 0,2 , 320,3 , 5,17 , 22,23 , {68,75,75}, 144,3 , 7117,43 , 13,5 , 4,0 , 1915,8 , 666,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark
- { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 228,8 , 228,8 , 640,8 , 478,17 , 243,4 , 247,9 , 2810,21 , 2831,67 , 2898,14 , 2810,21 , 2912,81 , 2898,14 , 73,3 , 70,3 , 323,5 , 328,17 , 345,23 , {69,85,82}, 14,1 , 7160,20 , 13,5 , 4,0 , 1930,5 , 1935,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland
- { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 1948,6 , 2, 1, 1, 6, 7 }, // French/Latin/France
- { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {68,90,68}, 204,2 , 7180,51 , 13,5 , 4,0 , 1940,8 , 1954,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria
- { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 571,7 , 97,16 , 37,5 , 281,23 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 1961,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium
- { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 1969,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin
- { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 1974,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso
- { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {66,73,70}, 159,3 , 7290,53 , 13,5 , 4,0 , 1940,8 , 939,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi
- { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 76,5 , 73,4 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 1986,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon
- { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 236,8 , 236,8 , 588,8 , 97,16 , 304,9 , 313,24 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 64,4 , 61,4 , 368,6 , 374,17 , 391,23 , {67,65,68}, 6,1 , 7399,54 , 47,6 , 4,0 , 1994,17 , 970,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada
- { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 2011,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic
- { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 2036,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad
- { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {75,77,70}, 36,2 , 7453,51 , 13,5 , 4,0 , 1940,8 , 2041,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros
- { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {67,68,70}, 209,2 , 7504,53 , 13,5 , 4,0 , 1940,8 , 2048,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa
- { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 2062,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville
- { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 2079,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast
- { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {68,74,70}, 38,3 , 7557,57 , 13,5 , 4,0 , 1940,8 , 2092,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti
- { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 2100,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea
- { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2118,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana
- { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,80,70}, 211,4 , 7614,35 , 13,5 , 4,0 , 1940,8 , 2134,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia
- { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,65,70}, 32,4 , 7343,56 , 13,5 , 4,0 , 1940,8 , 2153,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon
- { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2158,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe
- { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {71,78,70}, 215,2 , 7649,48 , 13,5 , 4,0 , 1940,8 , 2168,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea
- { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {72,84,71}, 217,1 , 7697,57 , 13,5 , 4,0 , 1940,8 , 2174,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti
- { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2179,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg
- { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {77,71,65}, 169,2 , 7754,54 , 13,5 , 4,0 , 1940,8 , 1234,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar
- { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 2189,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali
- { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2193,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique
- { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {77,82,85}, 218,2 , 7808,66 , 13,5 , 4,0 , 1940,8 , 2203,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania
- { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {77,85,82}, 175,2 , 7874,63 , 13,5 , 4,0 , 1940,8 , 2213,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius
- { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2220,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte
- { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2227,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco
- { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 64,4 , 61,4 , 368,6 , 374,17 , 391,23 , {77,65,68}, 0,0 , 7937,54 , 13,5 , 4,0 , 1940,8 , 2233,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco
- { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,80,70}, 211,4 , 7614,35 , 13,5 , 4,0 , 1940,8 , 2238,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia
- { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 2256,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger
- { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2261,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion
- { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {82,87,70}, 179,2 , 7991,50 , 13,5 , 4,0 , 1940,8 , 1458,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda
- { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 2271,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal
- { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {83,67,82}, 184,2 , 8041,71 , 13,5 , 4,0 , 1940,8 , 1519,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles
- { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2278,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon
- { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 236,8 , 236,8 , 156,8 , 10,17 , 37,5 , 337,14 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {67,72,70}, 0,0 , 8112,45 , 13,5 , 4,0 , 2302,15 , 2317,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland
- { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {83,89,80}, 220,2 , 8157,51 , 13,5 , 4,0 , 1940,8 , 2323,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria
- { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,79,70}, 206,3 , 7231,59 , 13,5 , 4,0 , 1940,8 , 2328,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo
- { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {84,78,68}, 222,2 , 8208,51 , 13,5 , 4,0 , 1940,8 , 2332,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia
- { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 18,7 , 25,12 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {86,85,86}, 202,2 , 8259,51 , 13,5 , 4,0 , 1940,8 , 1766,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu
- { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {88,80,70}, 211,4 , 7614,35 , 13,5 , 4,0 , 1940,8 , 2339,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands
- { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2355,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy
- { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 236,8 , 236,8 , 119,10 , 97,16 , 37,5 , 8,10 , 2993,35 , 3028,52 , 3080,14 , 2993,35 , 3028,52 , 3080,14 , 0,2 , 0,2 , 368,6 , 374,17 , 391,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1940,8 , 2371,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin
- { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 339,8 , 97,16 , 37,5 , 8,10 , 3094,21 , 3115,54 , 85,14 , 3094,21 , 3115,54 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 53,6 , 2383,5 , 2388,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands
- { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 244,10 , 244,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3169,28 , 3197,69 , 3266,14 , 3169,28 , 3197,69 , 3266,14 , 81,1 , 77,1 , 414,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8310,86 , 4,4 , 4,0 , 2396,8 , 2404,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom
- { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 3280,35 , 3315,49 , 3364,14 , 3378,35 , 3413,49 , 3462,21 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 2426,6 , 2432,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain
- { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 261,8 , 261,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3483,28 , 3511,62 , 3573,14 , 3483,28 , 3511,62 , 3573,14 , 0,2 , 0,2 , 420,5 , 425,37 , 22,23 , {71,69,76}, 224,1 , 8396,43 , 13,5 , 4,0 , 2438,7 , 2445,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia
- { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 2455,7 , 2462,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany
- { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 8,5 , 4,0 , 2473,24 , 2497,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria
- { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 2455,7 , 2507,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium
- { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 2455,7 , 2514,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy
- { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {67,72,70}, 0,0 , 8458,58 , 8,5 , 4,0 , 2455,7 , 2521,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein
- { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 2455,7 , 2534,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg
- { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3587,21 , 3608,60 , 3668,14 , 3682,28 , 3608,60 , 3668,14 , 0,2 , 0,2 , 462,5 , 5,17 , 22,23 , {67,72,70}, 225,3 , 8458,58 , 8,5 , 36,5 , 2543,21 , 2564,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland
- { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 278,9 , 278,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3710,28 , 3738,55 , 3793,14 , 3710,28 , 3738,55 , 3793,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8516,19 , 13,5 , 4,0 , 2571,8 , 2579,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece
- { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 278,9 , 278,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3710,28 , 3738,55 , 3793,14 , 3710,28 , 3738,55 , 3793,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8516,19 , 13,5 , 4,0 , 2571,8 , 2585,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus
- { 44, 7, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 287,11 , 287,11 , 53,10 , 80,17 , 228,5 , 233,10 , 3807,28 , 3835,98 , 3933,14 , 3807,28 , 3835,98 , 3933,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {68,75,75}, 144,3 , 8535,62 , 4,4 , 59,5 , 2591,11 , 2602,16 , 2, 0, 1, 6, 7 }, // Greenlandic/Latin/Greenland
- { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 228,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay
- { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 298,9 , 298,9 , 269,6 , 192,18 , 351,8 , 359,13 , 3947,32 , 3979,53 , 4032,19 , 3947,32 , 3979,53 , 4032,19 , 0,2 , 0,2 , 467,4 , 471,19 , 22,23 , {73,78,82}, 121,1 , 8597,46 , 4,4 , 4,0 , 2618,7 , 2625,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India
- { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 307,8 , 307,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4051,28 , 4079,52 , 4131,14 , 4051,28 , 4079,52 , 4131,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 8643,12 , 8,5 , 4,0 , 2629,5 , 2634,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria
- { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria
- { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 307,8 , 307,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4051,28 , 4079,52 , 4131,14 , 4051,28 , 4079,52 , 4131,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 163,3 , 0,7 , 8,5 , 4,0 , 2629,5 , 2642,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana
- { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 307,8 , 307,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4051,28 , 4079,52 , 4131,14 , 4051,28 , 4079,52 , 4131,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 8655,36 , 8,5 , 4,0 , 2629,5 , 2646,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger
- { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 315,6 , 315,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4145,46 , 4191,65 , 4256,21 , 4145,46 , 4191,65 , 4256,21 , 92,6 , 87,5 , 490,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8691,54 , 64,6 , 70,8 , 2651,5 , 2656,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel
- { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 321,9 , 330,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4277,32 , 4309,53 , 4362,19 , 4277,32 , 4309,53 , 4362,19 , 68,2 , 65,2 , 494,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8745,42 , 4,4 , 4,0 , 2661,6 , 2667,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India
- { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 338,8 , 338,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4381,19 , 4400,52 , 4452,17 , 4381,19 , 4400,52 , 4452,17 , 98,3 , 92,3 , 498,4 , 5,17 , 22,23 , {72,85,70}, 229,2 , 8787,46 , 13,5 , 4,0 , 2671,6 , 2677,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary
- { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 192,8 , 192,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4469,35 , 4504,81 , 4585,14 , 4469,35 , 4504,81 , 4585,14 , 101,4 , 95,4 , 502,4 , 5,17 , 22,23 , {73,83,75}, 189,2 , 8833,49 , 13,5 , 4,0 , 2689,8 , 2697,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland
- { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 346,10 , 356,9 , 27,8 , 553,18 , 228,5 , 233,10 , 4599,28 , 4627,43 , 4670,14 , 4599,28 , 4627,43 , 4670,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 231,2 , 8882,39 , 4,4 , 4,0 , 2703,9 , 2703,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia
- { 53, 7, 260, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 528,10 , 782,26 , 37,5 , 8,10 , 4684,28 , 4712,57 , 4769,14 , 4684,28 , 4712,57 , 4769,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 2712,11 , 2723,5 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/World
- { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 233,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada
- { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 233,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada
- { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 365,11 , 244,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4783,37 , 4820,75 , 4895,14 , 4783,37 , 4820,75 , 4895,14 , 105,4 , 99,4 , 506,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8921,31 , 4,4 , 4,0 , 2728,7 , 2735,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland
- { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4909,28 , 4937,57 , 4994,14 , 4909,28 , 4937,57 , 4994,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8952,19 , 13,5 , 4,0 , 2739,8 , 2747,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy
- { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4909,28 , 4937,57 , 4994,14 , 4909,28 , 4937,57 , 4994,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8952,19 , 13,5 , 4,0 , 2739,8 , 2753,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/San Marino
- { 58, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 254,7 , 254,7 , 156,8 , 10,17 , 37,5 , 8,10 , 4909,28 , 4937,57 , 4994,14 , 4909,28 , 4937,57 , 4994,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 8971,53 , 8,5 , 36,5 , 2739,8 , 2763,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland
- { 58, 7, 230, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4909,28 , 4937,57 , 4994,14 , 4909,28 , 4937,57 , 4994,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8952,19 , 13,5 , 4,0 , 2739,8 , 2771,18 , 2, 1, 1, 6, 7 }, // Italian/Latin/Vatican City State
- { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 170,5 , 170,5 , 170,5 , 170,5 , 578,10 , 402,13 , 55,4 , 372,10 , 5008,14 , 5022,28 , 5008,14 , 5008,14 , 5022,28 , 5008,14 , 109,2 , 103,2 , 512,3 , 5,17 , 22,23 , {74,80,89}, 133,1 , 9024,11 , 4,4 , 4,0 , 2789,3 , 2792,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan
- { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 376,10 , 386,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5050,28 , 5078,41 , 5119,14 , 5050,28 , 5078,41 , 5119,14 , 111,4 , 105,5 , 515,4 , 5,17 , 22,23 , {73,68,82}, 231,2 , 8882,39 , 8,5 , 4,0 , 2794,4 , 2798,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia
- { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 395,12 , 407,11 , 269,6 , 35,18 , 351,8 , 359,13 , 5133,33 , 5166,54 , 5220,20 , 5133,33 , 5166,54 , 5220,20 , 115,9 , 110,7 , 519,8 , 527,35 , 22,23 , {73,78,82}, 121,1 , 9035,49 , 4,4 , 4,0 , 2807,5 , 2812,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India
- { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 5240,50 , 5290,52 , 5342,14 , 5240,50 , 5290,52 , 5342,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9084,23 , 8,5 , 4,0 , 2816,5 , 2821,9 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India
- { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 418,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5356,21 , 5377,56 , 5433,14 , 5356,21 , 5377,56 , 5433,14 , 0,2 , 0,2 , 562,4 , 566,17 , 583,23 , {75,90,84}, 236,1 , 9107,58 , 13,5 , 4,0 , 2830,10 , 2840,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan
- { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 5447,35 , 5482,84 , 85,14 , 5447,35 , 5482,84 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,87,70}, 179,2 , 0,7 , 8,5 , 4,0 , 2849,11 , 2860,8 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda
- { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 428,10 , 428,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5566,38 , 5604,57 , 5661,14 , 5566,38 , 5604,57 , 5661,14 , 124,5 , 117,14 , 562,4 , 606,18 , 22,23 , {75,71,83}, 237,3 , 9165,52 , 13,5 , 4,0 , 2868,8 , 2876,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan
- { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,7 , 438,7 , 853,9 , 862,16 , 382,7 , 389,13 , 5675,14 , 5689,28 , 5675,14 , 5675,14 , 5689,28 , 5675,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,82,87}, 240,1 , 9217,19 , 4,4 , 4,0 , 2886,3 , 2889,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea
- { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 438,7 , 438,7 , 853,9 , 862,16 , 382,7 , 389,13 , 5675,14 , 5689,28 , 5675,14 , 5675,14 , 5689,28 , 5675,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,80,87}, 240,1 , 9236,39 , 4,4 , 4,0 , 2886,3 , 2893,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea
- { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 445,7 , 445,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5717,20 , 5737,42 , 5779,14 , 5717,20 , 5737,42 , 5779,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 241,1 , 0,7 , 13,5 , 4,0 , 2904,5 , 2909,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey
- { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 5793,34 , 5827,89 , 85,14 , 5793,34 , 5827,89 , 85,14 , 131,5 , 133,5 , 45,4 , 5,17 , 22,23 , {66,73,70}, 159,3 , 9275,27 , 0,4 , 4,0 , 2916,8 , 2924,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi
- { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 452,9 , 415,8 , 878,19 , 55,4 , 402,24 , 5916,36 , 5952,57 , 6009,17 , 5916,36 , 5952,57 , 6009,17 , 136,8 , 138,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 242,1 , 9302,21 , 4,4 , 36,5 , 2932,3 , 2932,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos
- { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 461,8 , 461,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6026,51 , 6077,72 , 6149,14 , 6163,51 , 6214,72 , 6149,14 , 144,14 , 146,11 , 627,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9323,23 , 13,5 , 4,0 , 2935,8 , 2943,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia
- { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 469,9 , 469,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6286,28 , 6314,100 , 6414,14 , 6286,28 , 6314,100 , 6414,14 , 158,8 , 157,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 209,2 , 9346,23 , 13,5 , 4,0 , 2950,7 , 2957,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa
- { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 469,9 , 469,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6286,28 , 6314,100 , 6414,14 , 6286,28 , 6314,100 , 6414,14 , 158,8 , 157,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 243,2 , 9369,23 , 13,5 , 4,0 , 2950,7 , 2987,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola
- { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 469,9 , 469,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6286,28 , 6314,100 , 6414,14 , 6286,28 , 6314,100 , 6414,14 , 158,8 , 157,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9392,23 , 13,5 , 4,0 , 2950,7 , 2993,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Central African Republic
- { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 469,9 , 469,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6286,28 , 6314,100 , 6414,14 , 6286,28 , 6314,100 , 6414,14 , 158,8 , 157,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9392,23 , 13,5 , 4,0 , 2950,7 , 3019,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Congo Brazzaville
- { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 478,8 , 478,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6428,21 , 6449,89 , 6538,14 , 6428,21 , 6449,89 , 6538,14 , 166,9 , 163,6 , 632,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9415,30 , 13,5 , 4,0 , 3024,8 , 3032,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania
- { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 950,7 , 553,18 , 37,5 , 8,10 , 6552,35 , 6587,54 , 1503,14 , 6641,34 , 6587,54 , 1503,14 , 175,10 , 169,8 , 638,5 , 5,17 , 22,23 , {77,75,68}, 245,3 , 9445,56 , 13,5 , 4,0 , 3039,10 , 3049,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia
- { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 97,16 , 37,5 , 8,10 , 6675,34 , 6709,60 , 6769,14 , 6675,34 , 6709,60 , 6769,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,71,65}, 169,2 , 9501,13 , 8,5 , 4,0 , 3067,8 , 3075,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar
- { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 356,9 , 356,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6783,28 , 6811,43 , 6854,14 , 6783,28 , 6811,43 , 6854,14 , 185,2 , 177,3 , 643,4 , 5,17 , 22,23 , {77,89,82}, 173,2 , 9514,39 , 4,4 , 4,0 , 3087,6 , 1250,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia
- { 76, 1, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,89,82}, 173,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Malay/Arabic/Malaysia
- { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 356,9 , 356,9 , 571,7 , 957,12 , 18,7 , 25,12 , 6783,28 , 6811,43 , 6854,14 , 6783,28 , 6811,43 , 6854,14 , 185,2 , 177,3 , 643,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9553,31 , 8,5 , 4,0 , 3087,6 , 3093,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei
- { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 356,9 , 356,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6783,28 , 6811,43 , 6854,14 , 6783,28 , 6811,43 , 6854,14 , 185,2 , 177,3 , 643,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9584,37 , 4,4 , 4,0 , 3087,6 , 3099,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore
- { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 486,13 , 499,12 , 269,6 , 969,18 , 18,7 , 25,12 , 6868,41 , 6909,77 , 6986,22 , 6868,41 , 7008,76 , 7084,21 , 0,2 , 0,2 , 647,6 , 653,27 , 22,23 , {73,78,82}, 121,1 , 9621,40 , 4,4 , 4,0 , 3108,6 , 3114,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India
- { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 511,8 , 519,7 , 119,10 , 987,23 , 37,5 , 8,10 , 7105,28 , 7133,63 , 7196,21 , 7105,28 , 7133,63 , 7217,20 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9661,27 , 4,4 , 4,0 , 3120,5 , 1258,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta
- { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 426,4 , 25,12 , 7237,27 , 7264,47 , 7311,14 , 7237,27 , 7264,47 , 7311,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,90,68}, 6,1 , 9688,41 , 8,5 , 4,0 , 3125,5 , 3130,8 , 2, 1, 1, 6, 7 }, // Maori/Latin/New Zealand
- { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 526,9 , 526,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7325,32 , 7357,53 , 4362,19 , 7325,32 , 7357,53 , 4362,19 , 187,5 , 180,4 , 494,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9729,43 , 4,4 , 4,0 , 3138,5 , 2667,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India
- { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1010,10 , 1020,16 , 37,5 , 87,12 , 7410,21 , 7431,43 , 7410,21 , 7410,21 , 7474,43 , 7410,21 , 192,4 , 184,4 , 562,4 , 680,17 , 22,23 , {77,78,84}, 248,1 , 9772,25 , 8,5 , 4,0 , 3143,6 , 3149,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia
- { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 249,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China
- { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 535,5 , 0,6 , 540,7 , 540,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7517,33 , 7550,54 , 7604,18 , 7517,33 , 7550,54 , 7604,18 , 196,9 , 188,7 , 494,4 , 697,19 , 22,23 , {78,80,82}, 252,4 , 9797,49 , 8,5 , 4,0 , 3155,6 , 3161,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal
- { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 535,5 , 0,6 , 540,7 , 540,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7517,33 , 7550,54 , 7604,18 , 7517,33 , 7550,54 , 7604,18 , 196,9 , 188,7 , 494,4 , 697,19 , 22,23 , {73,78,82}, 121,1 , 9846,49 , 8,5 , 4,0 , 3155,6 , 2667,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India
- { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 495,10 , 478,17 , 228,5 , 233,10 , 2307,35 , 2242,51 , 2293,14 , 2307,35 , 2242,51 , 2293,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 189,2 , 9895,44 , 8,5 , 4,0 , 3166,12 , 3178,5 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Norway
- { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 495,10 , 478,17 , 228,5 , 233,10 , 2307,35 , 2242,51 , 2293,14 , 2307,35 , 2242,51 , 2293,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 189,2 , 9895,44 , 8,5 , 4,0 , 3166,12 , 3183,21 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
+ { 27, 7, 54, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 319,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 13,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia
+ { 27, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 13,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina
+ { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 326,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 13,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic
+ { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 505,23 , 205,5 , 210,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 13,5 , 4,0 , 660,5 , 665,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark
+ { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 505,23 , 205,5 , 210,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 13,5 , 4,0 , 660,5 , 672,8 , 2, 0, 1, 6, 7 }, // Danish/Latin/Greenland
+ { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 13,5 , 4,0 , 680,10 , 690,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands
+ { 30, 7, 12, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,87,71}, 151,4 , 3474,55 , 13,5 , 4,0 , 680,10 , 699,5 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Aruba
+ { 30, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 538,9 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 13,5 , 4,0 , 680,10 , 704,6 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Belgium
+ { 30, 7, 152, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 13,5 , 4,0 , 680,10 , 710,7 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Cura Sao
+ { 30, 7, 202, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {83,82,68}, 6,1 , 3626,58 , 13,5 , 4,0 , 680,10 , 717,8 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Suriname
+ { 30, 7, 255, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3684,61 , 13,5 , 4,0 , 680,10 , 725,19 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Bonaire
+ { 30, 7, 256, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 13,5 , 4,0 , 680,10 , 744,12 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Sint Maarten
+ { 31, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 756,16 , 772,13 , 2, 1, 7, 6, 7 }, // English/Latin/United States
+ { 31, 3, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // English/Deseret/United States
+ { 31, 7, 4, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 792,14 , 2, 1, 7, 6, 7 }, // English/Latin/American Samoa
+ { 31, 7, 7, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 806,8 , 2, 1, 1, 6, 7 }, // English/Latin/Anguilla
+ { 31, 7, 9, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 814,17 , 2, 1, 7, 6, 7 }, // English/Latin/Antigua And Barbuda
+ { 31, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 2463,25 , 0,28 , 28,57 , 2463,25 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 831,18 , 849,9 , 2, 1, 7, 6, 7 }, // English/Latin/Australia
+ { 31, 7, 14, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 4,0 , 785,7 , 858,7 , 2, 1, 1, 6, 7 }, // English/Latin/Austria
+ { 31, 7, 16, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,83,68}, 6,1 , 3930,53 , 4,4 , 4,0 , 785,7 , 865,7 , 2, 1, 7, 6, 7 }, // English/Latin/Bahamas
+ { 31, 7, 19, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,66,68}, 6,1 , 3983,56 , 4,4 , 4,0 , 785,7 , 872,8 , 2, 1, 1, 6, 7 }, // English/Latin/Barbados
+ { 31, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 785,7 , 880,7 , 2, 1, 1, 6, 7 }, // English/Latin/Belgium
+ { 31, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 4039,47 , 4,4 , 4,0 , 785,7 , 887,6 , 2, 1, 7, 6, 7 }, // English/Latin/Belize
+ { 31, 7, 24, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,77,68}, 6,1 , 4086,53 , 4,4 , 4,0 , 785,7 , 893,7 , 2, 1, 1, 6, 7 }, // English/Latin/Bermuda
+ { 31, 7, 28, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,87,80}, 162,1 , 4139,50 , 4,4 , 4,0 , 785,7 , 900,8 , 2, 1, 7, 6, 7 }, // English/Latin/Botswana
+ { 31, 7, 31, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 908,30 , 2, 1, 1, 6, 7 }, // English/Latin/British Indian Ocean Territory
+ { 31, 7, 35, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,73,70}, 163,3 , 4189,53 , 4,4 , 4,0 , 785,7 , 938,7 , 0, 0, 1, 6, 7 }, // English/Latin/Burundi
+ { 31, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 4242,83 , 4,4 , 4,0 , 785,7 , 945,8 , 0, 0, 1, 6, 7 }, // English/Latin/Cameroon
+ { 31, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 53,10 , 35,18 , 18,7 , 25,12 , 2488,35 , 28,57 , 85,14 , 2488,35 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,65,68}, 6,1 , 4325,53 , 4,4 , 4,0 , 953,16 , 969,6 , 2, 0, 7, 6, 7 }, // English/Latin/Canada
+ { 31, 7, 40, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,89,68}, 6,1 , 4378,71 , 4,4 , 4,0 , 785,7 , 975,14 , 2, 1, 1, 6, 7 }, // English/Latin/Cayman Islands
+ { 31, 7, 45, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 989,16 , 2, 1, 1, 6, 7 }, // English/Latin/Christmas Island
+ { 31, 7, 46, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 1005,23 , 2, 1, 1, 6, 7 }, // English/Latin/Cocos Islands
+ { 31, 7, 51, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 785,7 , 1028,12 , 2, 1, 1, 6, 7 }, // English/Latin/Cook Islands
+ { 31, 7, 56, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 785,7 , 1040,6 , 2, 1, 1, 6, 7 }, // English/Latin/Cyprus
+ { 31, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 205,5 , 210,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 4511,44 , 13,5 , 4,0 , 785,7 , 1046,7 , 2, 0, 1, 6, 7 }, // English/Latin/Denmark
+ { 31, 7, 60, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1053,8 , 2, 1, 7, 6, 7 }, // English/Latin/Dominica
+ { 31, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,82,78}, 41,3 , 4555,50 , 4,4 , 4,0 , 785,7 , 1061,7 , 2, 1, 1, 6, 7 }, // English/Latin/Eritrea
+ { 31, 7, 70, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,75,80}, 119,1 , 4605,74 , 4,4 , 4,0 , 785,7 , 1068,16 , 2, 1, 1, 6, 7 }, // English/Latin/Falkland Islands
+ { 31, 7, 72, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,74,68}, 6,1 , 4679,47 , 4,4 , 4,0 , 785,7 , 1084,4 , 2, 1, 1, 6, 7 }, // English/Latin/Fiji
+ { 31, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 220,4 , 224,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 785,7 , 1088,7 , 2, 1, 1, 6, 7 }, // English/Latin/Finland
+ { 31, 7, 75, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 785,7 , 1095,8 , 2, 1, 1, 6, 7 }, // English/Latin/Guernsey
+ { 31, 7, 80, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,77,68}, 166,1 , 4758,50 , 4,4 , 4,0 , 785,7 , 1103,6 , 2, 1, 1, 6, 7 }, // English/Latin/Gambia
+ { 31, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 4,0 , 785,7 , 1109,7 , 2, 1, 1, 6, 7 }, // English/Latin/Germany
+ { 31, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,72,83}, 167,3 , 4808,47 , 4,4 , 4,0 , 785,7 , 1116,5 , 2, 1, 1, 6, 7 }, // English/Latin/Ghana
+ { 31, 7, 84, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,73,80}, 119,1 , 4855,53 , 4,4 , 4,0 , 785,7 , 1121,9 , 2, 1, 1, 6, 7 }, // English/Latin/Gibraltar
+ { 31, 7, 87, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1130,7 , 2, 1, 1, 6, 7 }, // English/Latin/Grenada
+ { 31, 7, 89, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1137,4 , 2, 1, 7, 6, 7 }, // English/Latin/Guam
+ { 31, 7, 93, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,89,68}, 6,1 , 4908,56 , 4,4 , 4,0 , 785,7 , 1141,6 , 2, 0, 1, 6, 7 }, // English/Latin/Guyana
+ { 31, 7, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 415,8 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {72,75,68}, 134,3 , 4964,56 , 4,4 , 4,0 , 785,7 , 1147,19 , 2, 1, 7, 6, 7 }, // English/Latin/Hong Kong
+ { 31, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 27,8 , 192,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 5020,44 , 4,4 , 4,0 , 785,7 , 1166,5 , 2, 1, 7, 7, 7 }, // English/Latin/India
+ { 31, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 97,16 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 785,7 , 1171,7 , 2, 1, 1, 6, 7 }, // English/Latin/Ireland
+ { 31, 7, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 55,4 , 59,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,76,83}, 49,1 , 5064,62 , 4,4 , 4,0 , 785,7 , 1178,6 , 2, 1, 7, 5, 6 }, // English/Latin/Israel
+ { 31, 7, 107, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {74,77,68}, 6,1 , 5126,53 , 4,4 , 4,0 , 785,7 , 1184,7 , 2, 1, 7, 6, 7 }, // English/Latin/Jamaica
+ { 31, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,69,83}, 2,3 , 5179,53 , 4,4 , 4,0 , 785,7 , 1191,5 , 2, 1, 7, 6, 7 }, // English/Latin/Kenya
+ { 31, 7, 112, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 1196,8 , 2, 1, 1, 6, 7 }, // English/Latin/Kiribati
+ { 31, 7, 120, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 4,0 , 785,7 , 1204,7 , 2, 1, 1, 6, 7 }, // English/Latin/Lesotho
+ { 31, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {76,82,68}, 6,1 , 5293,53 , 4,4 , 4,0 , 785,7 , 1211,7 , 2, 1, 1, 6, 7 }, // English/Latin/Liberia
+ { 31, 7, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 5346,53 , 4,4 , 4,0 , 785,7 , 1218,15 , 2, 1, 7, 6, 7 }, // English/Latin/Macau
+ { 31, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,71,65}, 170,2 , 5399,54 , 4,4 , 4,0 , 785,7 , 1233,10 , 0, 0, 1, 6, 7 }, // English/Latin/Madagascar
+ { 31, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,87,75}, 172,2 , 5453,53 , 4,4 , 4,0 , 785,7 , 1243,6 , 2, 1, 1, 6, 7 }, // English/Latin/Malawi
+ { 31, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,89,82}, 174,2 , 5506,59 , 4,4 , 4,0 , 785,7 , 1249,8 , 2, 1, 1, 6, 7 }, // English/Latin/Malaysia
+ { 31, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 4,0 , 785,7 , 1257,5 , 2, 1, 7, 6, 7 }, // English/Latin/Malta
+ { 31, 7, 134, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1262,16 , 2, 1, 7, 6, 7 }, // English/Latin/Marshall Islands
+ { 31, 7, 137, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,85,82}, 176,2 , 5565,53 , 4,4 , 4,0 , 785,7 , 1278,9 , 2, 0, 1, 6, 7 }, // English/Latin/Mauritius
+ { 31, 7, 140, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1287,10 , 2, 1, 1, 6, 7 }, // English/Latin/Micronesia
+ { 31, 7, 144, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1297,10 , 2, 1, 1, 6, 7 }, // English/Latin/Montserrat
+ { 31, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,65,68}, 6,1 , 5618,53 , 4,4 , 4,0 , 785,7 , 1307,7 , 2, 1, 1, 6, 7 }, // English/Latin/Namibia
+ { 31, 7, 149, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 1314,5 , 2, 1, 1, 6, 7 }, // English/Latin/Nauru
+ { 31, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 23,6 , 785,7 , 1319,11 , 2, 1, 1, 6, 7 }, // English/Latin/Netherlands
+ { 31, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 571,7 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 785,7 , 1330,11 , 2, 1, 1, 6, 7 }, // English/Latin/New Zealand
+ { 31, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,71,78}, 178,1 , 5671,50 , 4,4 , 4,0 , 785,7 , 1341,7 , 2, 1, 1, 6, 7 }, // English/Latin/Nigeria
+ { 31, 7, 158, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 785,7 , 1348,4 , 2, 1, 1, 6, 7 }, // English/Latin/Niue
+ { 31, 7, 159, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 1352,14 , 2, 1, 1, 6, 7 }, // English/Latin/Norfolk Island
+ { 31, 7, 160, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1366,24 , 2, 1, 1, 6, 7 }, // English/Latin/Northern Mariana Islands
+ { 31, 7, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 5721,53 , 4,4 , 4,0 , 785,7 , 1390,8 , 2, 0, 7, 6, 7 }, // English/Latin/Pakistan
+ { 31, 7, 164, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1398,5 , 2, 1, 1, 6, 7 }, // English/Latin/Palau
+ { 31, 7, 167, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,71,75}, 131,1 , 5774,73 , 4,4 , 4,0 , 785,7 , 1403,16 , 2, 1, 1, 6, 7 }, // English/Latin/Papua New Guinea
+ { 31, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 5847,53 , 4,4 , 4,0 , 785,7 , 1419,11 , 2, 1, 7, 6, 7 }, // English/Latin/Philippines
+ { 31, 7, 171, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 785,7 , 1430,16 , 2, 1, 1, 6, 7 }, // English/Latin/Pitcairn
+ { 31, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1446,11 , 2, 1, 7, 6, 7 }, // English/Latin/Puerto Rico
+ { 31, 7, 179, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {82,87,70}, 180,2 , 5900,47 , 4,4 , 4,0 , 785,7 , 1457,6 , 0, 0, 1, 6, 7 }, // English/Latin/Rwanda
+ { 31, 7, 180, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1463,16 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Kitts And Nevis
+ { 31, 7, 181, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1479,8 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Lucia
+ { 31, 7, 182, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 4,0 , 785,7 , 1487,23 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Vincent And The Grenadines
+ { 31, 7, 183, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {87,83,84}, 182,3 , 5947,40 , 4,4 , 4,0 , 785,7 , 1510,5 , 2, 1, 7, 6, 7 }, // English/Latin/Samoa
+ { 31, 7, 188, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,67,82}, 185,2 , 5987,59 , 4,4 , 4,0 , 785,7 , 1515,10 , 2, 1, 1, 6, 7 }, // English/Latin/Seychelles
+ { 31, 7, 189, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,76,76}, 187,2 , 6046,68 , 4,4 , 4,0 , 785,7 , 1525,12 , 0, 0, 1, 6, 7 }, // English/Latin/Sierra Leone
+ { 31, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,71,68}, 6,1 , 6114,56 , 4,4 , 4,0 , 785,7 , 1537,9 , 2, 1, 7, 6, 7 }, // English/Latin/Singapore
+ { 31, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 13,5 , 29,7 , 785,7 , 1546,8 , 2, 1, 1, 6, 7 }, // English/Latin/Slovenia
+ { 31, 7, 193, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,66,68}, 6,1 , 6170,74 , 4,4 , 4,0 , 785,7 , 1554,15 , 2, 1, 1, 6, 7 }, // English/Latin/Solomon Islands
+ { 31, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 578,10 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 4,0 , 785,7 , 1569,12 , 2, 1, 7, 6, 7 }, // English/Latin/South Africa
+ { 31, 7, 199, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,72,80}, 119,1 , 6244,53 , 4,4 , 4,0 , 785,7 , 1581,9 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Helena
+ { 31, 7, 201, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,68,71}, 0,0 , 6297,50 , 4,4 , 4,0 , 785,7 , 1590,5 , 2, 1, 6, 5, 6 }, // English/Latin/Sudan
+ { 31, 7, 204, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,90,76}, 189,1 , 6347,53 , 4,4 , 4,0 , 785,7 , 1595,8 , 2, 1, 1, 6, 7 }, // English/Latin/Swaziland
+ { 31, 7, 205, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 53,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,69,75}, 190,2 , 6400,47 , 13,5 , 4,0 , 785,7 , 1603,6 , 2, 0, 1, 6, 7 }, // English/Latin/Sweden
+ { 31, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 0,0 , 6447,41 , 8,5 , 36,5 , 785,7 , 1609,11 , 2, 0, 1, 6, 7 }, // English/Latin/Switzerland
+ { 31, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,90,83}, 192,3 , 6488,62 , 4,4 , 4,0 , 785,7 , 1620,8 , 2, 0, 1, 6, 7 }, // English/Latin/Tanzania
+ { 31, 7, 213, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 4,0 , 785,7 , 1628,7 , 2, 1, 1, 6, 7 }, // English/Latin/Tokelau
+ { 31, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,79,80}, 195,2 , 6550,49 , 4,4 , 4,0 , 785,7 , 1635,5 , 2, 1, 1, 6, 7 }, // English/Latin/Tonga
+ { 31, 7, 215, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,84,68}, 6,1 , 6599,80 , 4,4 , 4,0 , 785,7 , 1640,17 , 2, 1, 7, 6, 7 }, // English/Latin/Trinidad And Tobago
+ { 31, 7, 219, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1657,22 , 2, 1, 1, 6, 7 }, // English/Latin/Turks And Caicos Islands
+ { 31, 7, 220, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 4,0 , 785,7 , 1679,6 , 2, 1, 1, 6, 7 }, // English/Latin/Tuvalu
+ { 31, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,71,88}, 197,3 , 6679,56 , 4,4 , 4,0 , 785,7 , 1685,6 , 0, 0, 1, 7, 7 }, // English/Latin/Uganda
+ { 31, 7, 223, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {65,69,68}, 200,3 , 6735,55 , 4,4 , 4,0 , 785,7 , 1691,20 , 2, 1, 6, 5, 6 }, // English/Latin/United Arab Emirates
+ { 31, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 6790,47 , 4,4 , 4,0 , 1711,15 , 1726,14 , 2, 1, 1, 6, 7 }, // English/Latin/United Kingdom
+ { 31, 7, 226, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1740,21 , 2, 1, 7, 6, 7 }, // English/Latin/United States Minor Outlying Islands
+ { 31, 7, 229, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {86,85,86}, 203,2 , 6837,44 , 4,4 , 4,0 , 785,7 , 1761,7 , 0, 0, 1, 6, 7 }, // English/Latin/Vanuatu
+ { 31, 7, 233, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1768,22 , 2, 1, 1, 6, 7 }, // English/Latin/British Virgin Islands
+ { 31, 7, 234, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 4,0 , 785,7 , 1790,19 , 2, 1, 7, 6, 7 }, // English/Latin/United States Virgin Islands
+ { 31, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,77,87}, 131,1 , 6881,50 , 4,4 , 4,0 , 785,7 , 1809,6 , 2, 1, 1, 6, 7 }, // English/Latin/Zambia
+ { 31, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 415,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1815,8 , 2, 1, 7, 6, 7 }, // English/Latin/Zimbabwe
+ { 31, 7, 249, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 4,0 , 785,7 , 1823,12 , 2, 1, 1, 6, 7 }, // English/Latin/Diego Garcia
+ { 31, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 785,7 , 1835,11 , 2, 1, 1, 6, 7 }, // English/Latin/Isle Of Man
+ { 31, 7, 252, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 4,0 , 785,7 , 1846,6 , 2, 1, 1, 6, 7 }, // English/Latin/Jersey
+ { 31, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,83,80}, 119,1 , 6931,68 , 4,4 , 4,0 , 785,7 , 1852,11 , 2, 1, 1, 6, 7 }, // English/Latin/South Sudan
+ { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,78,71}, 155,4 , 6999,95 , 4,4 , 4,0 , 785,7 , 1863,12 , 2, 1, 1, 6, 7 }, // English/Latin/Sint Maarten
+ { 31, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 785,7 , 1875,5 , 2, 1, 1, 6, 7 }, // English/Latin/World
+ { 31, 7, 261, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 785,7 , 1880,6 , 2, 1, 1, 6, 7 }, // English/Latin/Europe
+ { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 214,9 , 214,9 , 588,8 , 596,26 , 37,5 , 233,25 , 2523,21 , 2544,51 , 2595,14 , 2523,21 , 2544,51 , 2595,14 , 70,3 , 67,3 , 331,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 41,6 , 4,0 , 1886,9 , 1895,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World
+ { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 223,8 , 223,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2609,14 , 2623,63 , 2609,14 , 2609,14 , 2623,63 , 2609,14 , 0,2 , 0,2 , 337,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7094,20 , 13,5 , 4,0 , 1900,5 , 1905,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia
+ { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 343,3 , 5,17 , 22,23 , {68,75,75}, 190,2 , 7114,43 , 13,5 , 4,0 , 1910,8 , 1918,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands
+ { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 343,3 , 5,17 , 22,23 , {68,75,75}, 148,3 , 7114,43 , 13,5 , 4,0 , 1910,8 , 665,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark
+ { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 640,8 , 478,17 , 220,4 , 224,9 , 2837,21 , 2858,67 , 2925,14 , 2837,21 , 2939,81 , 2925,14 , 73,3 , 70,3 , 346,5 , 351,17 , 368,23 , {69,85,82}, 14,1 , 7157,20 , 13,5 , 4,0 , 1925,5 , 1930,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland
+ { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 1943,6 , 2, 1, 1, 6, 7 }, // French/Latin/France
+ { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {68,90,68}, 205,2 , 7177,51 , 13,5 , 4,0 , 1935,8 , 1949,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria
+ { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 571,7 , 97,16 , 37,5 , 258,23 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 1956,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium
+ { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 1964,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin
+ { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 1969,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso
+ { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {66,73,70}, 163,3 , 7287,53 , 13,5 , 4,0 , 1935,8 , 938,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi
+ { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 76,5 , 73,4 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 1981,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon
+ { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 231,8 , 231,8 , 53,10 , 97,16 , 281,9 , 290,24 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 391,6 , 217,17 , 234,23 , {67,65,68}, 6,1 , 7396,54 , 47,6 , 4,0 , 1989,17 , 969,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada
+ { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 2006,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic
+ { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 2031,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad
+ { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {75,77,70}, 36,2 , 7450,51 , 13,5 , 4,0 , 1935,8 , 2036,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros
+ { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {67,68,70}, 210,2 , 7501,53 , 13,5 , 4,0 , 1935,8 , 2043,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa
+ { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 2057,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville
+ { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 2074,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast
+ { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {68,74,70}, 38,3 , 7554,57 , 13,5 , 4,0 , 1935,8 , 2087,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti
+ { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 2095,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea
+ { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2113,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana
+ { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 13,5 , 4,0 , 1935,8 , 2129,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia
+ { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 13,5 , 4,0 , 1935,8 , 2148,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon
+ { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2153,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe
+ { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {71,78,70}, 216,2 , 7646,48 , 13,5 , 4,0 , 1935,8 , 2163,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea
+ { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {72,84,71}, 218,1 , 7694,57 , 13,5 , 4,0 , 1935,8 , 2169,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti
+ { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2174,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg
+ { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,71,65}, 170,2 , 7751,54 , 13,5 , 4,0 , 1935,8 , 1233,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar
+ { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 2184,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali
+ { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2188,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique
+ { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,82,85}, 219,2 , 7805,66 , 13,5 , 4,0 , 1935,8 , 2198,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania
+ { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,85,82}, 176,2 , 7871,63 , 13,5 , 4,0 , 1935,8 , 2208,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius
+ { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2215,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte
+ { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2222,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco
+ { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 391,6 , 217,17 , 234,23 , {77,65,68}, 221,3 , 7934,54 , 13,5 , 4,0 , 1935,8 , 2228,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco
+ { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 13,5 , 4,0 , 1935,8 , 2233,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia
+ { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 2251,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger
+ { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2256,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion
+ { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {82,87,70}, 180,2 , 7988,50 , 13,5 , 4,0 , 1935,8 , 1457,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda
+ { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 2266,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal
+ { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {83,67,82}, 185,2 , 8038,71 , 13,5 , 4,0 , 1935,8 , 1515,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles
+ { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2273,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon
+ { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 231,8 , 231,8 , 156,8 , 10,17 , 37,5 , 314,14 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {67,72,70}, 224,3 , 8109,45 , 13,5 , 4,0 , 2297,15 , 2312,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland
+ { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {83,89,80}, 227,2 , 8154,51 , 13,5 , 4,0 , 1935,8 , 2318,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria
+ { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 13,5 , 4,0 , 1935,8 , 2323,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo
+ { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {84,78,68}, 229,2 , 8205,51 , 13,5 , 4,0 , 1935,8 , 2327,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia
+ { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {86,85,86}, 203,2 , 8256,51 , 13,5 , 4,0 , 1935,8 , 1761,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu
+ { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 13,5 , 4,0 , 1935,8 , 2334,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands
+ { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2350,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy
+ { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 1935,8 , 2366,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin
+ { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 339,8 , 97,16 , 37,5 , 8,10 , 3121,21 , 3142,54 , 85,14 , 3121,21 , 3142,54 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 53,6 , 2378,5 , 2383,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands
+ { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 239,10 , 239,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3196,28 , 3224,69 , 3293,14 , 3196,28 , 3224,69 , 3293,14 , 81,1 , 77,1 , 397,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8307,86 , 4,4 , 4,0 , 2391,8 , 2399,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom
+ { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 3307,35 , 3342,49 , 3391,14 , 3405,35 , 3440,49 , 3489,21 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 2421,6 , 2427,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain
+ { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 256,8 , 256,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3510,28 , 3538,62 , 3600,14 , 3510,28 , 3538,62 , 3600,14 , 0,2 , 0,2 , 403,5 , 408,37 , 22,23 , {71,69,76}, 231,1 , 8393,43 , 13,5 , 4,0 , 2433,7 , 2440,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia
+ { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 2450,7 , 2457,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany
+ { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 8,5 , 4,0 , 2468,24 , 2492,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria
+ { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 2450,7 , 2502,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium
+ { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 2450,7 , 2509,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy
+ { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 8455,58 , 8,5 , 4,0 , 2450,7 , 2516,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein
+ { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 2450,7 , 2529,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg
+ { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 8455,58 , 8,5 , 36,5 , 2538,21 , 2559,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland
+ { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 273,9 , 273,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 13,5 , 4,0 , 2566,8 , 2574,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece
+ { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 273,9 , 273,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 13,5 , 4,0 , 2566,8 , 2580,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus
+ { 44, 7, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 282,11 , 282,11 , 53,10 , 80,17 , 205,5 , 210,10 , 3834,28 , 3862,98 , 3960,14 , 3834,28 , 3862,98 , 3960,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {68,75,75}, 148,3 , 8532,62 , 4,4 , 59,5 , 2586,11 , 2597,16 , 2, 0, 1, 6, 7 }, // Greenlandic/Latin/Greenland
+ { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 232,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay
+ { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 293,9 , 293,9 , 269,6 , 192,18 , 328,8 , 336,13 , 3974,32 , 4006,53 , 4059,19 , 3974,32 , 4006,53 , 4059,19 , 0,2 , 0,2 , 450,4 , 454,19 , 22,23 , {73,78,82}, 121,1 , 8594,46 , 4,4 , 4,0 , 2613,7 , 2620,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India
+ { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 8640,54 , 64,6 , 4,0 , 2624,5 , 2629,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria
+ { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria
+ { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 64,6 , 4,0 , 2624,5 , 2637,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana
+ { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 8694,36 , 64,6 , 4,0 , 2624,5 , 2641,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger
+ { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 310,6 , 310,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4172,46 , 4218,65 , 4283,21 , 4172,46 , 4218,65 , 4283,21 , 92,6 , 87,5 , 473,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8730,54 , 70,6 , 76,8 , 2646,5 , 2651,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel
+ { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 316,9 , 325,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 477,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8784,42 , 4,4 , 4,0 , 2656,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India
+ { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 333,8 , 333,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4408,19 , 4427,52 , 4479,17 , 4408,19 , 4427,52 , 4479,17 , 98,3 , 92,3 , 481,4 , 5,17 , 22,23 , {72,85,70}, 233,2 , 8826,46 , 13,5 , 4,0 , 2666,6 , 2672,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary
+ { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 187,8 , 187,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4496,35 , 4531,81 , 4612,14 , 4496,35 , 4531,81 , 4612,14 , 101,4 , 95,4 , 485,4 , 5,17 , 22,23 , {73,83,75}, 235,3 , 8872,49 , 13,5 , 4,0 , 2684,8 , 2692,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland
+ { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 341,10 , 351,9 , 27,8 , 553,18 , 205,5 , 210,10 , 4626,28 , 4654,43 , 4697,14 , 4626,28 , 4654,43 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 8921,39 , 4,4 , 4,0 , 2698,9 , 2698,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia
+ { 53, 7, 260, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 528,10 , 782,26 , 37,5 , 8,10 , 4711,28 , 4739,57 , 4796,14 , 4711,28 , 4739,57 , 4796,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 2707,11 , 2718,5 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/World
+ { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada
+ { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada
+ { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 360,11 , 239,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 489,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8960,31 , 4,4 , 4,0 , 2723,7 , 2730,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland
+ { 57, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 360,11 , 239,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 489,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8991,95 , 4,4 , 4,0 , 2723,7 , 2734,19 , 2, 1, 1, 6, 7 }, // Irish/Latin/United Kingdom
+ { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9086,19 , 13,5 , 4,0 , 2753,8 , 2761,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy
+ { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9086,19 , 13,5 , 4,0 , 2753,8 , 2767,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/San Marino
+ { 58, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 249,7 , 249,7 , 156,8 , 10,17 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 9105,53 , 8,5 , 36,5 , 2753,8 , 2777,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland
+ { 58, 7, 230, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9086,19 , 13,5 , 4,0 , 2753,8 , 2785,18 , 2, 1, 1, 6, 7 }, // Italian/Latin/Vatican City State
+ { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 165,5 , 165,5 , 578,10 , 402,13 , 55,4 , 349,10 , 5035,14 , 5049,28 , 5035,14 , 5035,14 , 5049,28 , 5035,14 , 109,2 , 103,2 , 495,3 , 498,17 , 22,23 , {74,80,89}, 243,1 , 9158,11 , 4,4 , 4,0 , 2803,3 , 2806,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan
+ { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 371,10 , 381,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5077,29 , 5106,41 , 5147,14 , 5077,29 , 5106,41 , 5147,14 , 111,4 , 105,5 , 515,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 8921,39 , 8,5 , 4,0 , 2808,4 , 2812,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia
+ { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 390,12 , 402,11 , 269,6 , 35,18 , 328,8 , 336,13 , 5161,33 , 5194,54 , 5248,20 , 5161,33 , 5194,54 , 5248,20 , 115,9 , 110,7 , 519,8 , 527,35 , 22,23 , {73,78,82}, 121,1 , 9169,49 , 4,4 , 4,0 , 2821,5 , 2826,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India
+ { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 5268,50 , 5318,52 , 5370,14 , 5268,50 , 5318,52 , 5370,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9218,23 , 8,5 , 4,0 , 2830,5 , 2835,9 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India
+ { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 413,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5384,21 , 5405,56 , 5461,14 , 5384,21 , 5405,56 , 5461,14 , 0,2 , 0,2 , 562,4 , 566,17 , 583,23 , {75,90,84}, 244,1 , 9241,58 , 13,5 , 4,0 , 2844,10 , 2854,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan
+ { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 5475,35 , 5510,84 , 85,14 , 5475,35 , 5510,84 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,87,70}, 180,2 , 0,7 , 8,5 , 4,0 , 2863,11 , 2874,8 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda
+ { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 423,10 , 423,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5594,38 , 5632,57 , 5689,14 , 5594,38 , 5632,57 , 5689,14 , 124,5 , 117,14 , 562,4 , 606,18 , 22,23 , {75,71,83}, 245,3 , 9299,52 , 13,5 , 4,0 , 2882,8 , 2890,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan
+ { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 433,7 , 433,7 , 853,9 , 862,16 , 359,7 , 366,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,82,87}, 248,1 , 9351,19 , 4,4 , 4,0 , 2900,3 , 2903,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea
+ { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 433,7 , 433,7 , 853,9 , 862,16 , 359,7 , 366,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,80,87}, 249,3 , 9370,39 , 4,4 , 4,0 , 2900,3 , 2907,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea
+ { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 440,7 , 440,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5745,20 , 5765,42 , 5807,14 , 5745,20 , 5765,42 , 5807,14 , 131,2 , 133,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 252,1 , 0,7 , 13,5 , 4,0 , 2918,5 , 2923,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey
+ { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 5821,34 , 5855,89 , 85,14 , 5821,34 , 5855,89 , 85,14 , 133,5 , 135,5 , 45,4 , 5,17 , 22,23 , {66,73,70}, 163,3 , 9409,27 , 0,4 , 4,0 , 2930,8 , 2938,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi
+ { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 447,9 , 415,8 , 878,19 , 55,4 , 379,24 , 5944,36 , 5980,57 , 6037,17 , 5944,36 , 5980,57 , 6037,17 , 138,8 , 140,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 253,1 , 9436,21 , 4,4 , 36,5 , 2946,3 , 2946,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos
+ { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 456,8 , 456,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6054,51 , 6105,72 , 6177,14 , 6191,51 , 6242,72 , 6177,14 , 146,14 , 148,11 , 627,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9457,23 , 13,5 , 4,0 , 2949,8 , 2957,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia
+ { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 210,2 , 9480,23 , 13,5 , 4,0 , 2964,7 , 2971,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa
+ { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 254,2 , 9503,23 , 13,5 , 4,0 , 2964,7 , 3001,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola
+ { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9526,23 , 13,5 , 4,0 , 2964,7 , 3007,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Central African Republic
+ { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9526,23 , 13,5 , 4,0 , 2964,7 , 3033,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Congo Brazzaville
+ { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 473,8 , 473,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6456,21 , 6477,89 , 6566,14 , 6456,21 , 6477,89 , 6566,14 , 168,9 , 165,6 , 632,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9549,30 , 13,5 , 4,0 , 3038,8 , 3046,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania
+ { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 113,6 , 10,17 , 37,5 , 8,10 , 6580,35 , 6615,54 , 1530,14 , 6669,34 , 6615,54 , 1530,14 , 177,10 , 171,8 , 638,5 , 5,17 , 22,23 , {77,75,68}, 256,4 , 9579,56 , 13,5 , 4,0 , 3053,10 , 3063,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia
+ { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 97,16 , 37,5 , 8,10 , 6703,34 , 6737,60 , 6797,14 , 6703,34 , 6737,60 , 6797,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,71,65}, 170,2 , 9635,13 , 8,5 , 4,0 , 3081,8 , 3089,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar
+ { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 9648,39 , 4,4 , 4,0 , 3101,6 , 1249,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia
+ { 76, 1, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Malay/Arabic/Malaysia
+ { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 950,12 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9687,31 , 8,5 , 4,0 , 3101,6 , 3107,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei
+ { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9718,37 , 4,4 , 4,0 , 3101,6 , 3113,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore
+ { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 481,13 , 494,12 , 269,6 , 962,18 , 18,7 , 25,12 , 6896,41 , 6937,77 , 7014,22 , 6896,41 , 7036,76 , 7112,21 , 0,2 , 0,2 , 647,6 , 653,27 , 22,23 , {73,78,82}, 121,1 , 9755,40 , 4,4 , 4,0 , 3122,6 , 3128,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India
+ { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 506,8 , 514,7 , 119,10 , 980,23 , 37,5 , 8,10 , 7133,28 , 7161,63 , 7224,21 , 7133,28 , 7161,63 , 7245,20 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9795,27 , 4,4 , 4,0 , 3134,5 , 1257,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta
+ { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 10,17 , 18,7 , 25,12 , 7265,27 , 7292,47 , 7339,14 , 7265,27 , 7292,47 , 7339,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,90,68}, 6,1 , 9822,37 , 8,5 , 4,0 , 3139,5 , 3144,8 , 2, 1, 1, 6, 7 }, // Maori/Latin/New Zealand
+ { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 521,9 , 521,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7353,32 , 7385,53 , 4389,19 , 7353,32 , 7385,53 , 4389,19 , 189,5 , 182,4 , 477,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9859,43 , 4,4 , 4,0 , 3152,5 , 2662,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India
+ { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1003,10 , 1013,35 , 37,5 , 87,12 , 7438,21 , 7459,43 , 7438,21 , 7438,21 , 7502,43 , 7438,21 , 194,4 , 186,4 , 562,4 , 680,17 , 22,23 , {77,78,84}, 260,1 , 9902,46 , 8,5 , 4,0 , 3157,6 , 3163,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia
+ { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 261,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China
+ { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 530,5 , 0,6 , 535,7 , 535,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 198,9 , 190,7 , 477,4 , 697,19 , 22,23 , {78,80,82}, 264,4 , 9948,49 , 8,5 , 4,0 , 3169,6 , 3175,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal
+ { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 530,5 , 0,6 , 535,7 , 535,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 198,9 , 190,7 , 477,4 , 697,19 , 22,23 , {73,78,82}, 121,1 , 9997,49 , 8,5 , 4,0 , 3169,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India
+ { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10046,44 , 8,5 , 4,0 , 3180,12 , 3192,5 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Norway
+ { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10046,44 , 8,5 , 4,0 , 3180,12 , 3197,21 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
{ 86, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Occitan/Latin/France
- { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 547,8 , 555,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7622,33 , 7655,54 , 7709,18 , 7622,33 , 7655,54 , 7709,18 , 0,2 , 0,2 , 716,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9939,43 , 4,4 , 4,0 , 3204,5 , 3209,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India
- { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 46,6 , 46,6 , 562,9 , 571,8 , 394,8 , 1036,20 , 55,4 , 430,11 , 7727,39 , 7727,39 , 85,14 , 7727,39 , 7727,39 , 85,14 , 205,4 , 195,4 , 721,5 , 5,17 , 22,23 , {65,70,78}, 256,1 , 9982,25 , 13,5 , 4,0 , 3213,4 , 3217,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan
- { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 46,6 , 46,6 , 562,9 , 571,8 , 394,8 , 1036,20 , 18,7 , 25,12 , 7727,39 , 7727,39 , 85,14 , 7727,39 , 7727,39 , 85,14 , 205,4 , 195,4 , 721,5 , 5,17 , 22,23 , {80,75,82}, 175,2 , 10007,52 , 13,5 , 4,0 , 3213,4 , 3226,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan
- { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 430,11 , 7766,49 , 7766,49 , 7815,14 , 7766,49 , 7766,49 , 7815,14 , 209,9 , 199,8 , 726,4 , 730,44 , 22,23 , {73,82,82}, 257,4 , 10059,37 , 78,5 , 4,0 , 3233,5 , 3238,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran
- { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 430,11 , 7766,49 , 7766,49 , 7815,14 , 7766,49 , 7766,49 , 7815,14 , 209,9 , 199,8 , 726,4 , 730,44 , 22,23 , {65,70,78}, 256,1 , 10096,55 , 8,5 , 4,0 , 3243,3 , 3217,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan
- { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 163,7 , 163,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7829,34 , 7863,59 , 7922,14 , 7829,34 , 7863,59 , 7936,14 , 0,2 , 0,2 , 303,5 , 5,17 , 22,23 , {80,76,78}, 261,2 , 10151,77 , 13,5 , 4,0 , 3246,6 , 3252,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland
- { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 254,7 , 254,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7950,28 , 7978,79 , 8057,14 , 7950,28 , 7978,79 , 8057,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 263,2 , 10228,54 , 8,5 , 4,0 , 3258,9 , 3267,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil
- { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 243,2 , 10282,54 , 13,5 , 4,0 , 3258,9 , 3273,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola
- { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 265,1 , 10336,69 , 13,5 , 4,0 , 3258,9 , 3279,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde
- { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {85,83,68}, 155,3 , 10405,81 , 13,5 , 4,0 , 3258,9 , 3289,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/East Timor
- { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 10486,59 , 13,5 , 4,0 , 3258,9 , 3300,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Equatorial Guinea
- { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 206,3 , 10545,62 , 13,5 , 4,0 , 3258,9 , 3316,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau
- { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3258,9 , 3328,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg
- { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 18,7 , 25,12 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {77,79,80}, 134,4 , 10607,53 , 13,5 , 4,0 , 3258,9 , 3338,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau
- { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 266,3 , 10660,66 , 13,5 , 4,0 , 3258,9 , 3357,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique
- { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3367,17 , 3384,8 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Portugal
- { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 269,2 , 10726,92 , 13,5 , 4,0 , 3258,9 , 3392,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe
- { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8071,49 , 7978,79 , 8057,14 , 8071,49 , 7978,79 , 8057,14 , 218,8 , 207,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 225,3 , 10818,45 , 13,5 , 4,0 , 3258,9 , 3411,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland
- { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 601,9 , 601,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8120,36 , 8156,57 , 8213,23 , 8120,36 , 8156,57 , 8213,23 , 226,6 , 215,6 , 774,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10863,39 , 4,4 , 4,0 , 3416,6 , 3422,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India
- { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8236,37 , 8236,37 , 85,14 , 8236,37 , 8236,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 271,1 , 10902,13 , 41,6 , 4,0 , 3426,6 , 3226,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan
- { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8273,28 , 8301,53 , 8354,14 , 8273,28 , 8301,53 , 8354,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 272,2 , 0,7 , 8,5 , 4,0 , 3432,8 , 3440,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru
- { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8273,28 , 8301,53 , 8354,14 , 8273,28 , 8301,53 , 8354,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 274,2 , 0,7 , 8,5 , 4,0 , 3432,8 , 3444,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia
- { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8273,28 , 8301,53 , 8354,14 , 8273,28 , 8301,53 , 8354,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 8,5 , 4,0 , 3432,8 , 3451,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador
- { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 339,8 , 1056,28 , 37,5 , 8,10 , 8368,23 , 8391,56 , 8447,14 , 8368,23 , 8391,56 , 8447,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 225,3 , 10915,46 , 13,5 , 4,0 , 3458,9 , 3467,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland
- { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8461,34 , 8495,48 , 3080,14 , 8461,34 , 8495,48 , 3080,14 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {82,79,78}, 276,3 , 10961,57 , 13,5 , 4,0 , 3473,6 , 3479,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania
- { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8543,28 , 8495,48 , 8571,16 , 8543,28 , 8495,48 , 8571,16 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {77,68,76}, 279,1 , 11018,69 , 13,5 , 4,0 , 3473,6 , 3486,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova
- { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {82,85,66}, 123,1 , 11087,89 , 13,5 , 4,0 , 3503,7 , 3510,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia
- { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {66,89,78}, 0,2 , 11176,94 , 13,5 , 4,0 , 3503,7 , 511,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus
- { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {75,90,84}, 236,1 , 11270,83 , 13,5 , 4,0 , 3503,7 , 3516,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan
- { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {75,71,83}, 237,3 , 11353,82 , 13,5 , 4,0 , 3503,7 , 3525,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan
- { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {77,68,76}, 279,1 , 11435,79 , 13,5 , 4,0 , 3503,7 , 3533,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova
- { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 116,7 , 116,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8587,21 , 8608,62 , 8670,14 , 8587,21 , 8608,62 , 8587,21 , 0,2 , 0,2 , 246,5 , 680,17 , 22,23 , {85,65,72}, 280,1 , 11514,92 , 13,5 , 4,0 , 3503,7 , 3540,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine
- { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 8684,28 , 8712,66 , 8778,14 , 8684,28 , 8712,66 , 8778,14 , 232,2 , 221,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 11606,25 , 4,4 , 36,5 , 3547,5 , 3552,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/Central African Republic
+ { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 542,8 , 550,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7650,33 , 7683,54 , 7737,18 , 7650,33 , 7683,54 , 7737,18 , 0,2 , 0,2 , 716,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10090,43 , 4,4 , 4,0 , 3218,5 , 3223,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India
+ { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 557,6 , 557,6 , 563,9 , 572,8 , 394,8 , 1048,20 , 55,4 , 403,11 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 207,4 , 197,4 , 721,5 , 5,17 , 22,23 , {65,70,78}, 268,1 , 10133,25 , 13,5 , 4,0 , 3227,4 , 3231,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan
+ { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 557,6 , 557,6 , 563,9 , 572,8 , 394,8 , 1048,20 , 18,7 , 25,12 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 207,4 , 197,4 , 721,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 10158,52 , 13,5 , 4,0 , 3227,4 , 3240,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan
+ { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 580,7 , 580,7 , 587,8 , 595,7 , 394,8 , 97,16 , 55,4 , 403,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 211,9 , 201,8 , 726,4 , 730,44 , 22,23 , {73,82,82}, 269,4 , 10210,37 , 84,5 , 4,0 , 3247,5 , 3252,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran
+ { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 580,7 , 580,7 , 587,8 , 595,7 , 394,8 , 97,16 , 55,4 , 403,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 211,9 , 201,8 , 726,4 , 730,44 , 22,23 , {65,70,78}, 268,1 , 10247,55 , 8,5 , 4,0 , 3257,3 , 3231,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan
+ { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 158,7 , 158,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7857,34 , 7891,59 , 7950,14 , 7857,34 , 7891,59 , 7964,14 , 0,2 , 0,2 , 326,5 , 5,17 , 22,23 , {80,76,78}, 273,2 , 10302,77 , 13,5 , 4,0 , 3260,6 , 3266,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland
+ { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 249,7 , 249,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7978,35 , 8013,79 , 8092,14 , 7978,35 , 8013,79 , 8092,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 275,2 , 10379,54 , 8,5 , 4,0 , 3272,9 , 3281,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil
+ { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 254,2 , 10433,54 , 13,5 , 4,0 , 3272,9 , 3287,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola
+ { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 277,1 , 10487,69 , 13,5 , 4,0 , 3272,9 , 3293,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde
+ { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 10556,81 , 13,5 , 4,0 , 3272,9 , 3303,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/East Timor
+ { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 10637,59 , 13,5 , 4,0 , 3272,9 , 3314,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Equatorial Guinea
+ { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 207,3 , 10696,62 , 13,5 , 4,0 , 3272,9 , 3330,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau
+ { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3272,9 , 3342,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg
+ { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 18,7 , 25,12 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 10758,54 , 13,5 , 4,0 , 3272,9 , 3352,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau
+ { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 278,3 , 10812,66 , 13,5 , 4,0 , 3272,9 , 3371,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique
+ { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3381,17 , 3398,8 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Portugal
+ { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 281,2 , 10878,92 , 13,5 , 4,0 , 3272,9 , 3406,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe
+ { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 10970,45 , 13,5 , 4,0 , 3272,9 , 3425,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland
+ { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 602,9 , 602,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8155,36 , 8191,57 , 8248,23 , 8155,36 , 8191,57 , 8248,23 , 228,6 , 217,6 , 774,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11015,39 , 4,4 , 4,0 , 3430,6 , 3436,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India
+ { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8271,37 , 8271,37 , 85,14 , 8271,37 , 8271,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 283,1 , 11054,13 , 41,6 , 4,0 , 3440,6 , 3240,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan
+ { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 611,11 , 622,10 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 284,2 , 11067,29 , 8,5 , 4,0 , 3446,8 , 3454,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru
+ { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 611,11 , 622,10 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 286,2 , 11096,25 , 8,5 , 4,0 , 3446,8 , 3458,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia
+ { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 611,11 , 622,10 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 11121,37 , 8,5 , 4,0 , 3446,8 , 3465,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador
+ { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 339,8 , 1068,23 , 37,5 , 8,10 , 8403,23 , 8426,56 , 8482,14 , 8403,23 , 8426,56 , 8482,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 11158,46 , 13,5 , 4,0 , 3472,9 , 3481,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland
+ { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 632,8 , 632,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8496,34 , 8530,48 , 3107,14 , 8496,34 , 8530,48 , 3107,14 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {82,79,78}, 288,3 , 11204,57 , 13,5 , 4,0 , 3487,6 , 3493,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania
+ { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 632,8 , 632,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8578,28 , 8530,48 , 8606,16 , 8578,28 , 8530,48 , 8606,16 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {77,68,76}, 291,1 , 11261,69 , 13,5 , 4,0 , 3487,6 , 3500,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova
+ { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {82,85,66}, 123,1 , 11330,89 , 13,5 , 4,0 , 3517,7 , 3524,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia
+ { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {66,89,78}, 0,2 , 11419,94 , 13,5 , 4,0 , 3517,7 , 510,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus
+ { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {75,90,84}, 244,1 , 11513,83 , 13,5 , 4,0 , 3517,7 , 3530,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan
+ { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {75,71,83}, 245,3 , 11596,82 , 13,5 , 4,0 , 3517,7 , 3539,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan
+ { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {77,68,76}, 291,1 , 11678,79 , 13,5 , 4,0 , 3517,7 , 3547,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova
+ { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {85,65,72}, 292,1 , 11757,92 , 13,5 , 4,0 , 3517,7 , 3554,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine
+ { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 8719,28 , 8747,66 , 8813,14 , 8719,28 , 8747,66 , 8813,14 , 234,2 , 223,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 11849,25 , 4,4 , 36,5 , 3561,5 , 3566,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/Central African Republic
{ 99, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Sanskrit/Devanagari/India
- { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8792,28 , 8820,52 , 8872,14 , 8792,28 , 8820,52 , 8872,14 , 234,9 , 223,8 , 782,7 , 5,17 , 22,23 , {82,83,68}, 0,0 , 11631,58 , 13,5 , 4,0 , 3574,6 , 3580,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia
- { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8886,26 , 8912,57 , 2102,14 , 8886,26 , 8912,57 , 2102,14 , 243,11 , 231,8 , 296,7 , 5,17 , 22,23 , {66,65,77}, 140,2 , 11689,174 , 13,5 , 4,0 , 3586,6 , 630,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina
- { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8969,33 , 8912,57 , 2102,14 , 8969,33 , 8912,57 , 2102,14 , 243,11 , 231,8 , 296,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 11863,23 , 13,5 , 4,0 , 3586,6 , 3592,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro
- { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 9002,28 , 9030,54 , 2102,14 , 9002,28 , 9030,54 , 2102,14 , 254,9 , 231,8 , 296,7 , 5,17 , 22,23 , {82,83,68}, 0,0 , 11886,58 , 13,5 , 4,0 , 3586,6 , 3601,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia
- { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 9084,26 , 9110,55 , 8872,14 , 9084,26 , 9110,55 , 8872,14 , 263,11 , 223,8 , 782,7 , 5,17 , 22,23 , {66,65,77}, 281,2 , 11944,174 , 13,5 , 4,0 , 3574,6 , 3607,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina
- { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8792,28 , 9110,55 , 8872,14 , 8792,28 , 9110,55 , 8872,14 , 263,11 , 223,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12118,23 , 13,5 , 4,0 , 3574,6 , 3626,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro
- { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8792,28 , 8820,52 , 8872,14 , 8792,28 , 8820,52 , 8872,14 , 234,9 , 223,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12118,23 , 13,5 , 4,0 , 3574,6 , 3635,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo
- { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 163,7 , 163,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 8969,33 , 9030,54 , 2102,14 , 8969,33 , 9030,54 , 2102,14 , 254,9 , 231,8 , 296,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 11863,23 , 13,5 , 4,0 , 3586,6 , 3641,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo
- { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 618,9 , 618,9 , 156,8 , 1111,23 , 37,5 , 8,10 , 9165,28 , 9193,61 , 9254,14 , 9268,28 , 9296,61 , 9254,14 , 274,15 , 239,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 224,1 , 12141,17 , 8,5 , 4,0 , 3647,4 , 3651,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia
- { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 618,9 , 618,9 , 156,8 , 1111,23 , 37,5 , 8,10 , 9165,28 , 9193,61 , 9254,14 , 9268,28 , 9296,61 , 9254,14 , 274,15 , 239,15 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 12158,17 , 8,5 , 4,0 , 3647,4 , 3662,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia
+ { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 8855,52 , 8907,14 , 8827,28 , 8855,52 , 8907,14 , 236,9 , 225,8 , 782,7 , 5,17 , 22,23 , {82,83,68}, 293,3 , 11874,58 , 13,5 , 4,0 , 3588,6 , 3594,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia
+ { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8921,26 , 8947,55 , 8907,14 , 8921,26 , 8947,55 , 8907,14 , 245,11 , 225,8 , 782,7 , 5,17 , 22,23 , {66,65,77}, 296,2 , 11932,174 , 13,5 , 4,0 , 3588,6 , 3600,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina
+ { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 8947,55 , 8907,14 , 8827,28 , 8947,55 , 8907,14 , 245,11 , 225,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12106,23 , 13,5 , 4,0 , 3588,6 , 3619,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro
+ { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 8855,52 , 8907,14 , 8827,28 , 8855,52 , 8907,14 , 236,9 , 225,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12106,23 , 13,5 , 4,0 , 3588,6 , 3628,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo
+ { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9002,26 , 9028,57 , 2129,14 , 9002,26 , 9028,57 , 2129,14 , 256,11 , 233,8 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12129,174 , 13,5 , 4,0 , 3634,6 , 629,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina
+ { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9085,28 , 9028,57 , 2129,14 , 9085,28 , 9028,57 , 2129,14 , 256,11 , 233,8 , 319,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12303,23 , 13,5 , 4,0 , 3634,6 , 3640,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro
+ { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9085,28 , 9113,54 , 2129,14 , 9085,28 , 9113,54 , 2129,14 , 267,9 , 233,8 , 319,7 , 5,17 , 22,23 , {82,83,68}, 293,3 , 12326,58 , 13,5 , 4,0 , 3634,6 , 3649,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia
+ { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9085,28 , 9113,54 , 2129,14 , 9085,28 , 9113,54 , 2129,14 , 267,9 , 233,8 , 319,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12303,23 , 13,5 , 4,0 , 3634,6 , 3655,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo
+ { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 640,9 , 640,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9167,28 , 9195,61 , 9256,14 , 9270,28 , 9298,61 , 9256,14 , 276,15 , 241,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 231,1 , 12384,17 , 8,5 , 4,0 , 3661,4 , 3665,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia
+ { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 640,9 , 640,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9167,28 , 9195,61 , 9256,14 , 9270,28 , 9298,61 , 9256,14 , 276,15 , 241,15 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 12401,17 , 8,5 , 4,0 , 3661,4 , 3676,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia
{ 102, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Southern Sotho/Latin/South Africa
{ 103, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tswana/Latin/South Africa
- { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 9357,28 , 9385,55 , 9440,14 , 9357,28 , 9385,55 , 9440,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 155,3 , 12175,22 , 4,4 , 4,0 , 3668,8 , 1820,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe
- { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 627,8 , 635,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9454,35 , 9454,35 , 9489,31 , 9454,35 , 9454,35 , 9489,31 , 289,11 , 254,11 , 789,6 , 795,61 , 22,23 , {80,75,82}, 175,2 , 12197,43 , 8,5 , 4,0 , 3676,4 , 3680,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan
- { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 642,9 , 651,8 , 53,10 , 63,17 , 228,5 , 233,10 , 9520,39 , 9559,62 , 9621,19 , 9520,39 , 9559,62 , 9621,19 , 300,5 , 265,4 , 856,5 , 861,42 , 22,23 , {76,75,82}, 283,3 , 12240,58 , 4,4 , 4,0 , 3687,5 , 3692,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka
+ { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 9359,28 , 9387,55 , 9442,14 , 9359,28 , 9387,55 , 9442,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 12418,22 , 4,4 , 4,0 , 3682,8 , 1815,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe
+ { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 649,8 , 657,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9456,35 , 9456,35 , 9491,31 , 9456,35 , 9456,35 , 9491,31 , 291,11 , 256,11 , 789,6 , 795,61 , 22,23 , {80,75,82}, 176,2 , 12440,43 , 8,5 , 4,0 , 3690,4 , 3694,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan
+ { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 664,9 , 673,8 , 53,10 , 63,17 , 205,5 , 210,10 , 9522,39 , 9561,62 , 9623,19 , 9522,39 , 9561,62 , 9623,19 , 302,5 , 267,4 , 856,5 , 861,42 , 22,23 , {76,75,82}, 298,3 , 12483,58 , 4,4 , 4,0 , 3701,5 , 3706,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka
{ 107, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Swati/Latin/South Africa
- { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 185,7 , 659,7 , 1134,10 , 478,17 , 55,4 , 59,9 , 9640,21 , 9661,52 , 9713,14 , 9640,21 , 9661,52 , 9713,14 , 0,2 , 0,2 , 303,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12298,26 , 13,5 , 4,0 , 3703,10 , 3713,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia
- { 109, 7, 192, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 666,8 , 666,8 , 1144,9 , 1153,19 , 37,5 , 8,10 , 9727,35 , 9762,52 , 9814,14 , 9727,35 , 9762,52 , 9814,14 , 60,4 , 269,4 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12324,28 , 13,5 , 4,0 , 3722,11 , 3733,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia
- { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 674,9 , 674,9 , 27,8 , 1172,19 , 18,7 , 25,12 , 9828,32 , 9860,47 , 9907,15 , 9828,32 , 9860,47 , 9907,15 , 305,2 , 273,2 , 903,6 , 909,17 , 22,23 , {83,79,83}, 94,1 , 12352,27 , 4,4 , 4,0 , 3742,8 , 3750,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia
- { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 674,9 , 674,9 , 27,8 , 1172,19 , 18,7 , 25,12 , 9828,32 , 9860,47 , 9907,15 , 9828,32 , 9860,47 , 9907,15 , 305,2 , 273,2 , 903,6 , 909,17 , 22,23 , {68,74,70}, 38,3 , 12379,50 , 4,4 , 4,0 , 3742,8 , 3760,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti
- { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 674,9 , 674,9 , 27,8 , 1172,19 , 18,7 , 25,12 , 9828,32 , 9860,47 , 9907,15 , 9828,32 , 9860,47 , 9907,15 , 305,2 , 273,2 , 903,6 , 909,17 , 22,23 , {69,84,66}, 0,2 , 12429,52 , 4,4 , 4,0 , 3742,8 , 3767,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia
- { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 674,9 , 674,9 , 27,8 , 1172,19 , 37,5 , 8,10 , 9828,32 , 9860,47 , 9907,15 , 9828,32 , 9860,47 , 9907,15 , 305,2 , 273,2 , 903,6 , 909,17 , 22,23 , {75,69,83}, 2,3 , 12481,52 , 4,4 , 4,0 , 3742,8 , 1192,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya
- { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 55,4 , 430,11 , 9922,35 , 9957,53 , 8354,14 , 9922,35 , 9957,53 , 8354,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3775,17 , 2432,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain
- { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 3080,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {65,82,83}, 6,1 , 12533,51 , 8,5 , 4,0 , 3792,7 , 3799,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Argentina
- { 111, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 12584,52 , 4,4 , 4,0 , 3792,7 , 3808,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Belize
- { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 274,2 , 12636,35 , 4,4 , 4,0 , 3792,7 , 3444,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia
- { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,82,76}, 263,2 , 12671,52 , 4,4 , 4,0 , 3792,7 , 3267,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil
- { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 339,8 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,76,80}, 6,1 , 12723,45 , 4,4 , 36,5 , 3792,7 , 3814,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile
- { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 571,7 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 4769,14 , 9922,35 , 9957,53 , 3080,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,79,80}, 6,1 , 12768,54 , 8,5 , 4,0 , 3792,7 , 3819,8 , 2, 0, 7, 6, 7 }, // Spanish/Latin/Colombia
- { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 286,1 , 12822,67 , 4,4 , 4,0 , 3792,7 , 3827,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica
- { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,85,80}, 6,1 , 12889,42 , 4,4 , 4,0 , 3792,7 , 3837,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba
- { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 3080,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 287,3 , 12931,54 , 4,4 , 83,6 , 3792,7 , 3841,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic
- { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 12985,70 , 4,4 , 36,5 , 3792,7 , 3451,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador
- { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 12985,70 , 4,4 , 4,0 , 3792,7 , 3861,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/El Salvador
- { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 55,4 , 430,11 , 9922,35 , 9957,53 , 8354,14 , 9922,35 , 9957,53 , 8354,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 13055,92 , 4,4 , 4,0 , 3792,7 , 3872,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Equatorial Guinea
- { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 571,7 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 290,1 , 13147,30 , 18,5 , 4,0 , 3792,7 , 3889,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala
- { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 1191,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 279,1 , 13177,60 , 4,4 , 4,0 , 3792,7 , 3898,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras
- { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 27,8 , 669,27 , 55,4 , 59,9 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 3080,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {77,88,78}, 6,1 , 13237,48 , 47,6 , 4,0 , 3906,17 , 3923,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico
- { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 291,2 , 13285,69 , 4,4 , 4,0 , 3792,7 , 3929,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua
- { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 1218,8 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 293,3 , 13354,54 , 4,4 , 4,0 , 3792,7 , 3938,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama
- { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 296,3 , 13408,61 , 8,5 , 23,6 , 3792,7 , 3944,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay
- { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 571,7 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 272,2 , 13469,43 , 8,5 , 4,0 , 3792,7 , 3440,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru
- { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 8354,14 , 9922,35 , 9957,53 , 8354,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,72,80}, 178,1 , 13512,48 , 13,5 , 4,0 , 3792,7 , 3952,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines
- { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 1218,8 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 12985,70 , 4,4 , 4,0 , 3792,7 , 1447,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Puerto Rico
- { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 415,8 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 3080,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 12985,70 , 89,7 , 4,0 , 3792,7 , 3961,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/United States
- { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,89,85}, 6,1 , 13560,48 , 8,5 , 4,0 , 3792,7 , 3975,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay
- { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 299,4 , 13608,58 , 4,4 , 36,5 , 3792,7 , 3982,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela
- { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 55,4 , 430,11 , 9922,35 , 9957,53 , 8354,14 , 9922,35 , 9957,53 , 8354,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3792,7 , 3991,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Canary Islands
- { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9922,35 , 9957,53 , 3080,14 , 9922,35 , 9957,53 , 4769,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 3999,23 , 4022,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Latin America
- { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 669,27 , 55,4 , 430,11 , 9922,35 , 9957,53 , 8354,14 , 9922,35 , 9957,53 , 8354,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3792,7 , 4035,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ceuta And Melilla
- { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 690,8 , 690,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10010,60 , 10010,60 , 85,14 , 10010,60 , 10010,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {84,90,83}, 191,3 , 13666,67 , 8,5 , 4,0 , 4050,9 , 1625,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania
- { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 690,8 , 690,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10010,60 , 10010,60 , 85,14 , 10010,60 , 10010,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {67,68,70}, 209,2 , 13733,55 , 8,5 , 4,0 , 4050,9 , 4059,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa
- { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 690,8 , 690,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10010,60 , 10010,60 , 85,14 , 10010,60 , 10010,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {75,69,83}, 2,3 , 13788,58 , 8,5 , 4,0 , 4050,9 , 1192,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya
- { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 690,8 , 690,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10010,60 , 10010,60 , 85,14 , 10010,60 , 10010,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {85,71,88}, 196,3 , 13846,61 , 8,5 , 4,0 , 4050,9 , 1690,6 , 0, 0, 1, 6, 7 }, // Swahili/Latin/Uganda
- { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 698,9 , 698,9 , 53,10 , 97,16 , 228,5 , 441,16 , 10070,29 , 10099,50 , 2293,14 , 10070,29 , 10099,50 , 2293,14 , 307,2 , 275,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 189,2 , 13907,45 , 13,5 , 4,0 , 4091,7 , 4098,7 , 2, 0, 1, 6, 7 }, // Swedish/Latin/Sweden
- { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 698,9 , 698,9 , 528,10 , 97,16 , 228,5 , 441,16 , 10070,29 , 10099,50 , 2293,14 , 10070,29 , 10099,50 , 2293,14 , 307,2 , 275,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8952,19 , 13,5 , 4,0 , 4091,7 , 1089,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland
- { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 698,9 , 698,9 , 53,10 , 97,16 , 228,5 , 441,16 , 10070,29 , 10099,50 , 2293,14 , 10070,29 , 10099,50 , 2293,14 , 307,2 , 275,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8952,19 , 13,5 , 4,0 , 4091,7 , 4105,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Aland Islands
+ { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 681,7 , 1141,10 , 478,17 , 55,4 , 59,9 , 9642,21 , 9663,52 , 9715,14 , 9642,21 , 9663,52 , 9715,14 , 0,2 , 0,2 , 326,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12541,26 , 13,5 , 4,0 , 3717,10 , 3727,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia
+ { 109, 7, 192, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 688,8 , 688,8 , 1151,9 , 1160,19 , 37,5 , 8,10 , 9729,35 , 9764,52 , 9816,14 , 9729,35 , 9764,52 , 9816,14 , 60,4 , 271,4 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12567,28 , 13,5 , 4,0 , 3736,11 , 3747,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia
+ { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 696,9 , 696,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9830,32 , 9862,47 , 9909,15 , 9830,32 , 9862,47 , 9909,15 , 307,2 , 275,2 , 903,6 , 909,17 , 22,23 , {83,79,83}, 94,1 , 12595,27 , 4,4 , 4,0 , 3756,8 , 3764,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia
+ { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 696,9 , 696,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9830,32 , 9862,47 , 9909,15 , 9830,32 , 9862,47 , 9909,15 , 307,2 , 275,2 , 903,6 , 909,17 , 22,23 , {68,74,70}, 38,3 , 12622,50 , 4,4 , 4,0 , 3756,8 , 3774,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti
+ { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 696,9 , 696,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9830,32 , 9862,47 , 9909,15 , 9830,32 , 9862,47 , 9909,15 , 307,2 , 275,2 , 903,6 , 909,17 , 22,23 , {69,84,66}, 0,2 , 12672,52 , 4,4 , 4,0 , 3756,8 , 3781,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia
+ { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 696,9 , 696,9 , 27,8 , 1179,19 , 37,5 , 8,10 , 9830,32 , 9862,47 , 9909,15 , 9830,32 , 9862,47 , 9909,15 , 307,2 , 275,2 , 903,6 , 909,17 , 22,23 , {75,69,83}, 2,3 , 12724,52 , 4,4 , 4,0 , 3756,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya
+ { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 55,4 , 403,11 , 9924,35 , 9959,53 , 8389,14 , 9924,35 , 9959,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3789,17 , 2427,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain
+ { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {65,82,83}, 6,1 , 12776,51 , 8,5 , 4,0 , 3806,7 , 3813,9 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Argentina
+ { 111, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 12827,52 , 4,4 , 4,0 , 3806,7 , 3822,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Belize
+ { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 286,2 , 12879,35 , 4,4 , 4,0 , 3806,7 , 3458,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia
+ { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,82,76}, 275,2 , 12914,52 , 4,4 , 4,0 , 3806,7 , 3281,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil
+ { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 339,8 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,76,80}, 6,1 , 12966,45 , 4,4 , 36,5 , 3806,7 , 3828,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile
+ { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 571,7 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 4796,14 , 9924,35 , 9959,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,79,80}, 6,1 , 13011,54 , 8,5 , 4,0 , 3806,7 , 3833,8 , 2, 0, 7, 6, 7 }, // Spanish/Latin/Colombia
+ { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 301,1 , 13065,67 , 4,4 , 4,0 , 3806,7 , 3841,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica
+ { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,85,80}, 6,1 , 13132,42 , 4,4 , 4,0 , 3806,7 , 3851,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba
+ { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 302,3 , 13174,54 , 4,4 , 89,6 , 3806,7 , 3855,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic
+ { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13228,70 , 4,4 , 36,5 , 3806,7 , 3465,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador
+ { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13228,70 , 4,4 , 4,0 , 3806,7 , 3875,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/El Salvador
+ { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 55,4 , 403,11 , 9924,35 , 9959,53 , 8389,14 , 9924,35 , 9959,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 13298,92 , 4,4 , 4,0 , 3806,7 , 3886,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Equatorial Guinea
+ { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 571,7 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 305,1 , 13390,30 , 18,5 , 4,0 , 3806,7 , 3903,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala
+ { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 1198,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 291,1 , 13420,60 , 4,4 , 4,0 , 3806,7 , 3912,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras
+ { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 27,8 , 669,27 , 55,4 , 59,9 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {77,88,78}, 6,1 , 13480,48 , 47,6 , 4,0 , 3920,17 , 3937,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico
+ { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 306,2 , 13528,69 , 4,4 , 4,0 , 3806,7 , 3943,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua
+ { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 308,3 , 13597,54 , 4,4 , 4,0 , 3806,7 , 3952,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama
+ { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 311,3 , 13651,61 , 8,5 , 23,6 , 3806,7 , 3958,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay
+ { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 571,7 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 284,2 , 13712,43 , 8,5 , 4,0 , 3806,7 , 3454,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru
+ { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 8389,14 , 9924,35 , 9959,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 13755,48 , 13,5 , 4,0 , 3806,7 , 3966,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines
+ { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13228,70 , 4,4 , 4,0 , 3806,7 , 1446,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Puerto Rico
+ { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 415,8 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13228,70 , 95,7 , 4,0 , 3806,7 , 3975,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/United States
+ { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,89,85}, 6,1 , 13803,48 , 8,5 , 4,0 , 3806,7 , 3989,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay
+ { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 18,7 , 25,12 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 314,4 , 13851,58 , 4,4 , 36,5 , 3806,7 , 3996,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela
+ { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 55,4 , 403,11 , 9924,35 , 9959,53 , 8389,14 , 9924,35 , 9959,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3806,7 , 4005,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Canary Islands
+ { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 37,5 , 8,10 , 9924,35 , 9959,53 , 3107,14 , 9924,35 , 9959,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 4013,23 , 4036,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Latin America
+ { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 669,27 , 55,4 , 403,11 , 9924,35 , 9959,53 , 8389,14 , 9924,35 , 9959,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 3806,7 , 4049,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ceuta And Melilla
+ { 112, 7, 101, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Sundanese/Latin/Indonesia
+ { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 712,8 , 712,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10012,60 , 10012,60 , 85,14 , 10012,60 , 10012,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {84,90,83}, 192,3 , 13909,67 , 8,5 , 4,0 , 4064,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania
+ { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 712,8 , 712,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10012,60 , 10012,60 , 85,14 , 10012,60 , 10012,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {67,68,70}, 210,2 , 13976,55 , 8,5 , 4,0 , 4064,9 , 4073,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa
+ { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 712,8 , 712,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10012,60 , 10012,60 , 85,14 , 10012,60 , 10012,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {75,69,83}, 2,3 , 14031,58 , 102,6 , 108,6 , 4064,9 , 1191,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya
+ { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 712,8 , 712,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10012,60 , 10012,60 , 85,14 , 10012,60 , 10012,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {85,71,88}, 197,3 , 14089,61 , 8,5 , 4,0 , 4064,9 , 1685,6 , 0, 0, 1, 7, 7 }, // Swahili/Latin/Uganda
+ { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 720,9 , 720,9 , 53,10 , 97,16 , 37,5 , 414,16 , 10072,29 , 10101,50 , 2320,14 , 10072,29 , 10101,50 , 2320,14 , 309,2 , 277,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 14150,45 , 13,5 , 4,0 , 4105,7 , 4112,7 , 2, 0, 1, 6, 7 }, // Swedish/Latin/Sweden
+ { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 720,9 , 720,9 , 53,10 , 97,16 , 37,5 , 414,16 , 10072,29 , 10101,50 , 2320,14 , 10072,29 , 10101,50 , 2320,14 , 309,2 , 277,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9086,19 , 13,5 , 4,0 , 4105,7 , 1088,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland
+ { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 720,9 , 720,9 , 53,10 , 97,16 , 37,5 , 414,16 , 10072,29 , 10101,50 , 2320,14 , 10072,29 , 10101,50 , 2320,14 , 309,2 , 277,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9086,19 , 13,5 , 4,0 , 4105,7 , 4119,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Aland Islands
{ 115, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sardinian/Latin/Italy
- { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10149,28 , 10177,55 , 10232,14 , 10149,28 , 10177,55 , 10232,14 , 309,7 , 277,7 , 45,4 , 5,17 , 22,23 , {84,74,83}, 303,4 , 13952,19 , 13,5 , 4,0 , 4110,6 , 4116,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan
- { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 707,13 , 707,13 , 269,6 , 192,18 , 382,7 , 457,12 , 10246,39 , 10285,49 , 10334,20 , 10246,39 , 10285,49 , 10334,20 , 316,8 , 284,8 , 977,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 13971,49 , 8,5 , 4,0 , 4126,5 , 4131,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India
- { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 707,13 , 707,13 , 269,6 , 192,18 , 382,7 , 457,12 , 10246,39 , 10285,49 , 10334,20 , 10246,39 , 10285,49 , 10334,20 , 316,8 , 284,8 , 977,7 , 5,17 , 22,23 , {77,89,82}, 173,2 , 14020,61 , 8,5 , 4,0 , 4126,5 , 4138,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia
- { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 707,13 , 707,13 , 269,6 , 192,18 , 382,7 , 457,12 , 10246,39 , 10285,49 , 10334,20 , 10246,39 , 10285,49 , 10334,20 , 316,8 , 284,8 , 977,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14081,61 , 8,5 , 4,0 , 4126,5 , 4145,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore
- { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 707,13 , 707,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10246,39 , 10285,49 , 10334,20 , 10246,39 , 10285,49 , 10334,20 , 316,8 , 284,8 , 977,7 , 5,17 , 22,23 , {76,75,82}, 307,3 , 14142,49 , 8,5 , 4,0 , 4126,5 , 4156,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka
- { 118, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 720,9 , 720,9 , 495,10 , 1226,23 , 55,4 , 59,9 , 10354,36 , 10390,56 , 10446,14 , 10354,36 , 10390,56 , 10446,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 14191,21 , 0,4 , 4,0 , 4162,5 , 3510,6 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia
- { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 729,11 , 729,11 , 339,8 , 1249,18 , 18,7 , 25,12 , 10460,32 , 10492,60 , 10552,18 , 10460,32 , 10492,60 , 10552,18 , 0,2 , 0,2 , 984,7 , 991,29 , 22,23 , {73,78,82}, 121,1 , 14212,26 , 4,4 , 4,0 , 4167,6 , 4173,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India
- { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 123,5 , 123,5 , 740,8 , 748,7 , 269,6 , 1267,19 , 37,5 , 469,28 , 10570,23 , 10593,68 , 10661,16 , 10570,23 , 10593,68 , 10661,16 , 324,10 , 292,10 , 1020,4 , 5,17 , 22,23 , {84,72,66}, 310,1 , 14238,16 , 4,4 , 4,0 , 4181,3 , 4181,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand
- { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1286,23 , 18,7 , 25,12 , 10677,51 , 10728,79 , 10807,27 , 10677,51 , 10728,79 , 10807,27 , 334,7 , 302,8 , 45,4 , 5,17 , 22,23 , {67,78,89}, 311,1 , 14254,13 , 8,5 , 4,0 , 4184,8 , 4192,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China
- { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1286,23 , 18,7 , 25,12 , 10677,51 , 10728,79 , 10807,27 , 10677,51 , 10728,79 , 10807,27 , 334,7 , 302,8 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14267,19 , 8,5 , 4,0 , 4184,8 , 4198,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India
- { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1309,23 , 18,7 , 25,12 , 10834,21 , 10855,29 , 10884,14 , 10834,21 , 10855,29 , 10898,14 , 341,7 , 310,7 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,2 , 14286,16 , 4,4 , 4,0 , 4205,4 , 92,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia
- { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1309,23 , 18,7 , 25,12 , 10834,21 , 10855,29 , 10898,14 , 10834,21 , 10855,29 , 10898,14 , 341,7 , 310,7 , 45,4 , 5,17 , 22,23 , {69,82,78}, 41,3 , 0,7 , 4,4 , 4,0 , 4205,4 , 4209,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea
- { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 755,8 , 755,8 , 755,8 , 755,8 , 269,6 , 97,16 , 18,7 , 25,12 , 10912,29 , 10941,60 , 11001,14 , 10912,29 , 10941,60 , 11001,14 , 348,10 , 317,6 , 1024,5 , 1029,59 , 1088,65 , {84,79,80}, 194,2 , 14302,41 , 13,5 , 4,0 , 4213,13 , 1640,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga
+ { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10151,28 , 10179,55 , 10234,14 , 10151,28 , 10179,55 , 10234,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,74,83}, 318,4 , 14195,19 , 13,5 , 4,0 , 4124,6 , 4130,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan
+ { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 729,13 , 729,13 , 269,6 , 192,18 , 359,7 , 430,12 , 10248,39 , 10287,49 , 10336,20 , 10248,39 , 10287,49 , 10336,20 , 311,8 , 279,8 , 977,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14214,49 , 8,5 , 4,0 , 4140,5 , 4145,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India
+ { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 729,13 , 729,13 , 269,6 , 192,18 , 359,7 , 430,12 , 10248,39 , 10287,49 , 10336,20 , 10248,39 , 10287,49 , 10336,20 , 311,8 , 279,8 , 977,7 , 5,17 , 22,23 , {77,89,82}, 174,2 , 14263,61 , 8,5 , 4,0 , 4140,5 , 4152,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia
+ { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 729,13 , 729,13 , 269,6 , 192,18 , 359,7 , 430,12 , 10248,39 , 10287,49 , 10336,20 , 10248,39 , 10287,49 , 10336,20 , 311,8 , 279,8 , 977,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14324,61 , 8,5 , 4,0 , 4140,5 , 4159,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore
+ { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 729,13 , 729,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10248,39 , 10287,49 , 10336,20 , 10248,39 , 10287,49 , 10336,20 , 311,8 , 279,8 , 977,7 , 5,17 , 22,23 , {76,75,82}, 322,3 , 14385,49 , 8,5 , 4,0 , 4140,5 , 4170,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka
+ { 118, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 495,10 , 1233,23 , 55,4 , 59,9 , 10356,36 , 10392,56 , 10448,14 , 10356,36 , 10392,56 , 10448,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 14434,21 , 0,4 , 4,0 , 4176,5 , 3524,6 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia
+ { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,11 , 751,11 , 339,8 , 1256,18 , 18,7 , 25,12 , 10462,32 , 10494,60 , 10554,18 , 10462,32 , 10494,60 , 10554,18 , 0,2 , 0,2 , 984,7 , 991,29 , 22,23 , {73,78,82}, 121,1 , 14455,26 , 4,4 , 4,0 , 4181,6 , 4187,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India
+ { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 118,5 , 118,5 , 762,8 , 770,7 , 269,6 , 1274,19 , 37,5 , 442,28 , 10572,23 , 10595,68 , 10663,16 , 10572,23 , 10595,68 , 10663,16 , 319,10 , 287,10 , 1020,4 , 5,17 , 22,23 , {84,72,66}, 325,1 , 14481,16 , 4,4 , 4,0 , 4195,3 , 4195,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand
+ { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 10679,51 , 10730,79 , 10809,27 , 10679,51 , 10730,79 , 10809,27 , 329,7 , 297,8 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 14497,13 , 8,5 , 4,0 , 4198,8 , 4206,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China
+ { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 10679,51 , 10730,79 , 10809,27 , 10679,51 , 10730,79 , 10809,27 , 329,7 , 297,8 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14510,19 , 8,5 , 4,0 , 4198,8 , 4212,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India
+ { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 10836,21 , 10857,29 , 10886,14 , 10836,21 , 10857,29 , 10900,14 , 336,7 , 305,7 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,2 , 14529,16 , 4,4 , 4,0 , 4219,4 , 92,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia
+ { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 10836,21 , 10857,29 , 10900,14 , 10836,21 , 10857,29 , 10900,14 , 336,7 , 305,7 , 45,4 , 5,17 , 22,23 , {69,82,78}, 41,3 , 0,7 , 4,4 , 4,0 , 4219,4 , 4223,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea
+ { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 777,8 , 777,8 , 777,8 , 777,8 , 269,6 , 97,16 , 18,7 , 25,12 , 10914,29 , 10943,60 , 11003,14 , 10914,29 , 10943,60 , 11003,14 , 343,10 , 312,6 , 1024,5 , 1029,59 , 1088,65 , {84,79,80}, 195,2 , 14545,41 , 13,5 , 4,0 , 4227,13 , 1635,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga
{ 124, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tsonga/Latin/South Africa
- { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 763,8 , 763,8 , 1332,9 , 1341,16 , 37,5 , 8,10 , 11015,28 , 11043,54 , 11097,14 , 11015,28 , 11043,54 , 11097,14 , 358,2 , 323,2 , 199,4 , 5,17 , 22,23 , {84,82,89}, 241,1 , 14343,40 , 4,4 , 4,0 , 4226,6 , 4232,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey
- { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 763,8 , 763,8 , 1332,9 , 1341,16 , 18,7 , 25,12 , 11015,28 , 11043,54 , 11097,14 , 11015,28 , 11043,54 , 11097,14 , 358,2 , 323,2 , 199,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 4,4 , 4,0 , 4226,6 , 4239,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus
- { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 771,8 , 771,8 , 495,10 , 1341,16 , 37,5 , 8,10 , 11111,28 , 11139,54 , 11193,14 , 11207,28 , 11235,54 , 11193,14 , 360,13 , 325,14 , 1153,4 , 5,17 , 22,23 , {84,77,84}, 312,3 , 14383,49 , 13,5 , 4,0 , 4245,12 , 4257,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan
- { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 200,10 , 210,9 , 53,10 , 1357,17 , 18,7 , 25,12 , 11289,21 , 11310,55 , 11365,14 , 11289,21 , 11310,55 , 11365,14 , 373,12 , 339,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 14432,40 , 4,4 , 4,0 , 4269,8 , 4277,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China
- { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 138,7 , 138,7 , 156,8 , 1374,22 , 37,5 , 8,10 , 1427,21 , 11379,56 , 11435,14 , 1427,21 , 11379,56 , 11435,14 , 385,2 , 351,2 , 1157,5 , 680,17 , 22,23 , {85,65,72}, 280,1 , 14472,49 , 13,5 , 4,0 , 4282,10 , 4292,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine
- { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 779,10 , 789,9 , 269,6 , 1396,18 , 18,7 , 25,12 , 11449,36 , 11449,36 , 85,14 , 11449,36 , 11449,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {80,75,82}, 175,2 , 14521,49 , 4,4 , 4,0 , 4299,4 , 3226,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan
- { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 46,6 , 46,6 , 798,6 , 798,6 , 269,6 , 1396,18 , 18,7 , 25,12 , 11449,36 , 11449,36 , 85,14 , 11449,36 , 11449,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {73,78,82}, 121,1 , 14570,42 , 8,5 , 4,0 , 4299,4 , 4303,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India
- { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 804,8 , 804,8 , 27,8 , 1414,18 , 37,5 , 430,11 , 11485,32 , 11517,61 , 11578,14 , 11485,32 , 11517,61 , 11578,14 , 387,2 , 353,2 , 199,4 , 5,17 , 22,23 , {85,90,83}, 315,4 , 14612,58 , 13,5 , 4,0 , 4308,6 , 4314,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan
- { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1432,33 , 55,4 , 430,11 , 11592,21 , 7766,49 , 85,14 , 11592,21 , 7766,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 256,1 , 14670,13 , 13,5 , 4,0 , 4325,6 , 3217,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan
- { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11613,28 , 11641,53 , 11694,14 , 11613,28 , 11641,53 , 11694,14 , 389,2 , 355,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 319,3 , 14683,49 , 13,5 , 4,0 , 4331,7 , 4338,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan
- { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 119,10 , 192,18 , 37,5 , 8,10 , 11708,33 , 11741,55 , 11796,21 , 11708,33 , 11741,55 , 11796,21 , 391,2 , 357,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 322,1 , 14732,33 , 13,5 , 4,0 , 4348,10 , 4358,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam
- { 133, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1465,23 , 37,5 , 8,10 , 11817,21 , 11838,43 , 11881,14 , 11895,28 , 11838,43 , 11881,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4366,7 , 0,0 , 2, 1, 1, 6, 7 }, // Volapuk/Latin/World
- { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 820,11 , 831,10 , 27,8 , 10,17 , 37,5 , 8,10 , 11923,29 , 11952,77 , 12029,15 , 12044,30 , 11952,77 , 12029,15 , 393,2 , 359,2 , 1186,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 14765,92 , 4,4 , 4,0 , 4373,7 , 4380,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom
- { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1488,17 , 37,5 , 8,10 , 12074,28 , 12102,50 , 12074,28 , 12074,28 , 12102,50 , 12074,28 , 395,3 , 361,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 14857,65 , 8,5 , 4,0 , 4396,5 , 4401,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal
- { 136, 7, 195, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 12152,28 , 12180,61 , 85,14 , 12152,28 , 12180,61 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 14922,79 , 4,4 , 4,0 , 4409,8 , 4417,15 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/South Africa
- { 137, 18, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 841,9 , 841,9 , 27,8 , 1505,19 , 37,5 , 8,10 , 12241,54 , 12241,54 , 85,14 , 12241,54 , 12241,54 , 85,14 , 398,11 , 364,10 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 41,6 , 4,0 , 4432,6 , 4438,5 , 2, 1, 1, 6, 7 }, // Yiddish/Hebrew/World
- { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1524,16 , 497,3 , 8,10 , 12295,33 , 12328,44 , 12372,14 , 12295,33 , 12386,69 , 12372,14 , 409,5 , 374,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 15001,35 , 4,4 , 4,0 , 4443,10 , 4453,19 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria
- { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1524,16 , 497,3 , 8,10 , 12455,33 , 12488,44 , 12532,14 , 12455,33 , 12546,69 , 12532,14 , 414,5 , 379,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15036,34 , 4,4 , 4,0 , 4443,10 , 4472,16 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin
- { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 850,9 , 859,8 , 547,6 , 35,18 , 37,5 , 8,10 , 12615,28 , 12643,74 , 12717,14 , 12615,28 , 12643,74 , 12717,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15070,67 , 4,4 , 4,0 , 4488,7 , 4495,17 , 2, 1, 7, 6, 7 }, // Zulu/Latin/South Africa
- { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 192,8 , 192,8 , 495,10 , 478,17 , 37,5 , 441,16 , 12731,28 , 12759,51 , 2293,14 , 12810,28 , 12759,51 , 2293,14 , 419,9 , 384,11 , 45,4 , 5,17 , 22,23 , {78,79,75}, 189,2 , 9895,44 , 13,5 , 4,0 , 4512,7 , 4519,5 , 2, 0, 1, 6, 7 }, // Norwegian Nynorsk/Latin/Norway
- { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 163,7 , 163,7 , 1540,11 , 450,19 , 37,5 , 8,10 , 2016,28 , 2044,58 , 2102,14 , 2016,28 , 2044,58 , 2116,14 , 428,10 , 395,7 , 296,7 , 5,17 , 22,23 , {66,65,77}, 140,2 , 15137,170 , 13,5 , 4,0 , 4524,8 , 630,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina
- { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 116,7 , 116,7 , 1084,7 , 1091,20 , 37,5 , 8,10 , 12838,28 , 12866,56 , 8872,14 , 12838,28 , 12866,56 , 8872,14 , 234,9 , 402,7 , 45,4 , 5,17 , 22,23 , {66,65,77}, 281,2 , 15307,151 , 13,5 , 4,0 , 4532,8 , 3607,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina
+ { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 785,8 , 785,8 , 1339,9 , 1348,16 , 37,5 , 8,10 , 11017,28 , 11045,54 , 11099,14 , 11017,28 , 11045,54 , 11099,14 , 353,2 , 318,2 , 199,4 , 5,17 , 22,23 , {84,82,89}, 252,1 , 14586,40 , 4,4 , 4,0 , 4240,6 , 4246,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey
+ { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 785,8 , 785,8 , 1339,9 , 1348,16 , 18,7 , 25,12 , 11017,28 , 11045,54 , 11099,14 , 11017,28 , 11045,54 , 11099,14 , 353,2 , 318,2 , 199,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 4,4 , 4,0 , 4240,6 , 4253,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus
+ { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 793,8 , 793,8 , 495,10 , 1348,16 , 37,5 , 8,10 , 11113,28 , 11141,54 , 11195,14 , 11209,28 , 11237,54 , 11195,14 , 355,13 , 320,14 , 1153,4 , 5,17 , 22,23 , {84,77,84}, 326,3 , 14626,49 , 13,5 , 4,0 , 4259,12 , 4271,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan
+ { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 195,10 , 205,9 , 53,10 , 1364,17 , 18,7 , 25,12 , 11291,21 , 11312,55 , 11367,14 , 11291,21 , 11312,55 , 11367,14 , 368,12 , 334,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 243,1 , 14675,40 , 4,4 , 4,0 , 4283,8 , 4291,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China
+ { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 133,7 , 133,7 , 156,8 , 1381,22 , 37,5 , 8,10 , 1454,21 , 11381,56 , 11437,14 , 1454,21 , 11381,56 , 11437,14 , 380,2 , 346,2 , 1157,5 , 680,17 , 22,23 , {85,65,72}, 292,1 , 14715,49 , 13,5 , 4,0 , 4296,10 , 4306,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine
+ { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 557,6 , 557,6 , 801,10 , 811,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11451,36 , 11451,36 , 85,14 , 11451,36 , 11451,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {80,75,82}, 176,2 , 14764,49 , 4,4 , 4,0 , 4313,4 , 3240,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan
+ { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 557,6 , 557,6 , 820,6 , 820,6 , 269,6 , 1403,18 , 18,7 , 25,12 , 11451,36 , 11451,36 , 85,14 , 11451,36 , 11451,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {73,78,82}, 121,1 , 14813,42 , 8,5 , 4,0 , 4313,4 , 4317,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India
+ { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 826,8 , 826,8 , 27,8 , 1421,18 , 37,5 , 403,11 , 11487,32 , 11519,61 , 11580,14 , 11487,32 , 11519,61 , 11580,14 , 382,2 , 348,2 , 199,4 , 5,17 , 22,23 , {85,90,83}, 329,4 , 14855,58 , 13,5 , 4,0 , 4322,6 , 4328,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan
+ { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1439,33 , 55,4 , 403,11 , 11594,21 , 7794,49 , 85,14 , 11594,21 , 7794,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 268,1 , 14913,13 , 13,5 , 4,0 , 4339,6 , 3231,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan
+ { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11615,28 , 11643,53 , 11696,14 , 11615,28 , 11643,53 , 11696,14 , 384,2 , 350,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 333,3 , 14926,49 , 13,5 , 4,0 , 4345,7 , 4352,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan
+ { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 834,8 , 834,8 , 119,10 , 192,18 , 37,5 , 8,10 , 11710,33 , 11743,55 , 11798,21 , 11710,33 , 11743,55 , 11798,21 , 386,2 , 352,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 336,1 , 14975,33 , 13,5 , 4,0 , 4362,10 , 4372,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam
+ { 133, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1472,23 , 37,5 , 8,10 , 11819,21 , 11840,43 , 11883,14 , 11897,28 , 11840,43 , 11883,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4380,7 , 0,0 , 2, 1, 1, 6, 7 }, // Volapuk/Latin/World
+ { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 842,11 , 853,10 , 27,8 , 10,17 , 37,5 , 8,10 , 11925,29 , 11954,77 , 12031,15 , 12046,30 , 11954,77 , 12031,15 , 388,2 , 354,2 , 1186,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 15008,91 , 4,4 , 4,0 , 4387,7 , 4394,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom
+ { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1495,17 , 37,5 , 8,10 , 12076,28 , 12104,50 , 12076,28 , 12076,28 , 12104,50 , 12076,28 , 390,3 , 356,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15099,65 , 8,5 , 4,0 , 4410,5 , 4415,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal
+ { 136, 7, 195, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 12154,28 , 12182,61 , 85,14 , 12154,28 , 12182,61 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15164,79 , 4,4 , 4,0 , 4423,8 , 4431,15 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/South Africa
+ { 137, 18, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 863,9 , 863,9 , 27,8 , 1512,19 , 37,5 , 8,10 , 12243,54 , 12243,54 , 85,14 , 12243,54 , 12243,54 , 85,14 , 393,11 , 359,10 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 41,6 , 4,0 , 4446,6 , 4452,5 , 2, 1, 1, 6, 7 }, // Yiddish/Hebrew/World
+ { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1531,16 , 470,3 , 8,10 , 12297,33 , 12330,44 , 12374,14 , 12297,33 , 12388,69 , 12374,14 , 404,5 , 369,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15243,49 , 4,4 , 4,0 , 4457,10 , 4467,19 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria
+ { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1531,16 , 470,3 , 8,10 , 12457,33 , 12490,44 , 12534,14 , 12457,33 , 12548,69 , 12534,14 , 409,5 , 374,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15292,34 , 4,4 , 4,0 , 4457,10 , 4486,16 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin
+ { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 872,9 , 881,8 , 547,6 , 35,18 , 37,5 , 8,10 , 12617,28 , 12645,74 , 12719,14 , 12617,28 , 12645,74 , 12719,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15326,67 , 4,4 , 4,0 , 4502,7 , 4509,17 , 2, 1, 7, 6, 7 }, // Zulu/Latin/South Africa
+ { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 414,16 , 12733,28 , 12761,51 , 2320,14 , 12812,28 , 12761,51 , 2320,14 , 414,9 , 379,11 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10046,44 , 13,5 , 4,0 , 4526,7 , 4533,5 , 2, 0, 1, 6, 7 }, // Norwegian Nynorsk/Latin/Norway
+ { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 158,7 , 158,7 , 1547,11 , 450,19 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 423,10 , 390,7 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 15393,170 , 13,5 , 4,0 , 4538,8 , 629,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina
+ { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 12840,28 , 12868,56 , 8907,14 , 12840,28 , 12868,56 , 8907,14 , 245,11 , 397,13 , 45,4 , 5,17 , 22,23 , {66,65,77}, 296,2 , 15563,152 , 13,5 , 4,0 , 4546,8 , 3600,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina
{ 143, 29, 131, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,86,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 5, 6, 7 }, // Divehi/Thaana/Maldives
- { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 80,17 , 37,5 , 8,10 , 12922,30 , 12952,57 , 85,14 , 12922,30 , 12952,57 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4540,5 , 4545,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/Isle Of Man
- { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 13009,28 , 13037,61 , 85,14 , 13009,28 , 13037,61 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4557,8 , 4565,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/United Kingdom
- { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1551,8 , 1559,18 , 18,7 , 25,12 , 13098,28 , 13126,49 , 13175,14 , 13098,28 , 13126,49 , 13175,14 , 438,2 , 409,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 163,3 , 15458,17 , 4,4 , 4,0 , 4579,4 , 4583,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana
- { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1577,6 , 97,16 , 18,7 , 25,12 , 13189,49 , 13189,49 , 13238,20 , 13189,49 , 13189,49 , 13238,20 , 187,5 , 411,5 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15475,13 , 8,5 , 4,0 , 4588,6 , 2667,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India
+ { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 80,17 , 37,5 , 8,10 , 12924,30 , 12954,57 , 85,14 , 12924,30 , 12954,57 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4554,5 , 4559,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/Isle Of Man
+ { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 13011,28 , 13039,61 , 85,14 , 13011,28 , 13039,61 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4571,8 , 4579,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/United Kingdom
+ { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1558,8 , 1566,18 , 18,7 , 25,12 , 13100,28 , 13128,49 , 13177,14 , 13100,28 , 13128,49 , 13177,14 , 433,2 , 410,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15715,17 , 4,4 , 4,0 , 4593,4 , 4597,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana
+ { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1584,6 , 97,16 , 18,7 , 25,12 , 13191,49 , 13191,49 , 13240,20 , 13191,49 , 13191,49 , 13240,20 , 0,2 , 0,2 , 1193,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15732,31 , 4,4 , 4,0 , 4602,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India
{ 148, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/Latin/Ghana
- { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 867,9 , 690,8 , 269,6 , 10,17 , 37,5 , 8,10 , 13258,33 , 13291,58 , 85,14 , 13258,33 , 13291,58 , 85,14 , 440,7 , 416,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 15488,12 , 4,4 , 4,0 , 4594,10 , 4604,8 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria
- { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 13349,28 , 13377,74 , 13451,14 , 13349,28 , 13377,74 , 13451,14 , 447,9 , 423,7 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15500,23 , 4,4 , 4,0 , 4612,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya
+ { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 889,9 , 712,8 , 269,6 , 10,17 , 37,5 , 8,10 , 13260,29 , 13289,54 , 85,14 , 13260,29 , 13289,54 , 85,14 , 435,7 , 412,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15763,12 , 4,4 , 4,0 , 4608,10 , 4618,8 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria
+ { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 13343,28 , 13371,74 , 13445,14 , 13343,28 , 13371,74 , 13445,14 , 442,9 , 419,7 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15775,23 , 4,4 , 4,0 , 4626,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya
{ 151, 33, 103, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 6 }, // Syriac/Syriac/Iraq
{ 152, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Blin/Ethiopic/Eritrea
{ 153, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Geez/Ethiopic/Ethiopia
{ 155, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Sidamo/Latin/Ethiopia
- { 156, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/Latin/Nigeria
+ { 156, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/Latin/Nigeria
{ 157, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tigre/Ethiopic/Eritrea
- { 158, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/Latin/Nigeria
- { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 254,7 , 254,7 , 27,8 , 1583,27 , 37,5 , 8,10 , 13465,28 , 13493,50 , 3080,14 , 13465,28 , 13493,50 , 3080,14 , 456,2 , 430,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 8,5 , 4,0 , 4619,6 , 4625,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy
+ { 158, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/Latin/Nigeria
+ { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 1590,27 , 37,5 , 8,10 , 13459,28 , 13487,50 , 3107,14 , 13459,28 , 13487,50 , 3107,14 , 451,2 , 426,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 8,5 , 4,0 , 4633,6 , 4639,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy
{ 160, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Venda/Latin/South Africa
- { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 876,11 , 887,10 , 547,6 , 1610,23 , 500,12 , 512,17 , 13543,28 , 13571,44 , 13615,14 , 13543,28 , 13571,44 , 13615,14 , 458,3 , 432,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 163,3 , 15523,37 , 4,4 , 4,0 , 4631,6 , 4637,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana
- { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 876,11 , 887,10 , 547,6 , 1610,23 , 37,5 , 8,10 , 13543,28 , 13571,44 , 13615,14 , 13543,28 , 13571,44 , 13615,14 , 458,3 , 432,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15560,106 , 4,4 , 4,0 , 4631,6 , 4649,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo
+ { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 898,11 , 909,10 , 547,6 , 1617,23 , 473,12 , 485,17 , 13537,28 , 13565,44 , 13609,14 , 13537,28 , 13565,44 , 13609,14 , 453,3 , 428,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15798,37 , 4,4 , 4,0 , 4645,6 , 4651,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana
+ { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 898,11 , 909,10 , 547,6 , 1617,23 , 37,5 , 8,10 , 13537,28 , 13565,44 , 13609,14 , 13537,28 , 13565,44 , 13609,14 , 453,3 , 428,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15835,106 , 4,4 , 4,0 , 4645,6 , 4663,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo
{ 162, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Walamo/Ethiopic/Ethiopia
- { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 13629,21 , 13650,57 , 85,14 , 13629,21 , 13650,57 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 4,4 , 4,0 , 4660,14 , 4674,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/United States
- { 164, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/Latin/Nigeria
+ { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 13623,21 , 13644,57 , 85,14 , 13623,21 , 13644,57 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 4,4 , 4,0 , 4674,14 , 4688,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/United States
+ { 164, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/Latin/Nigeria
{ 165, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,87,75}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Nyanja/Latin/Malawi
- { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 897,9 , 906,8 , 547,6 , 35,18 , 18,7 , 25,12 , 13707,28 , 13735,55 , 13707,28 , 13707,28 , 13735,55 , 13707,28 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 178,1 , 15666,58 , 4,4 , 4,0 , 4693,8 , 4701,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines
- { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13790,28 , 13818,63 , 3668,14 , 13790,28 , 13818,63 , 3668,14 , 461,12 , 437,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 225,3 , 15724,55 , 13,5 , 4,0 , 4710,16 , 4726,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland
- { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13790,28 , 13818,63 , 3668,14 , 13790,28 , 13818,63 , 3668,14 , 461,12 , 437,11 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 4710,16 , 4733,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France
- { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 269,9 , 269,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13790,28 , 13818,63 , 3668,14 , 13790,28 , 13818,63 , 3668,14 , 461,12 , 437,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 225,3 , 15724,55 , 13,5 , 4,0 , 4710,16 , 4743,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein
- { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 13881,21 , 13902,28 , 13930,14 , 13881,21 , 13902,28 , 13930,14 , 473,2 , 448,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 311,1 , 0,7 , 8,5 , 4,0 , 4756,3 , 4759,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China
+ { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,9 , 928,8 , 547,6 , 35,18 , 18,7 , 25,12 , 13701,28 , 13729,55 , 13701,28 , 13701,28 , 13729,55 , 13701,28 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 15941,58 , 4,4 , 4,0 , 4707,8 , 4715,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines
+ { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13784,28 , 13812,63 , 3695,14 , 13784,28 , 13812,63 , 3695,14 , 456,12 , 433,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 15999,55 , 13,5 , 4,0 , 4724,16 , 4740,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland
+ { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13784,28 , 13812,63 , 3695,14 , 13784,28 , 13812,63 , 3695,14 , 456,12 , 433,11 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 4724,16 , 4747,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France
+ { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13784,28 , 13812,63 , 3695,14 , 13784,28 , 13812,63 , 3695,14 , 456,12 , 433,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 15999,55 , 13,5 , 4,0 , 4724,16 , 4757,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein
+ { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 13875,21 , 13896,28 , 13924,14 , 13875,21 , 13896,28 , 13924,14 , 468,2 , 444,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 0,7 , 8,5 , 4,0 , 4770,3 , 4773,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China
{ 169, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kpelle/Latin/Liberia
- { 170, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 461,8 , 461,8 , 365,7 , 1633,23 , 529,10 , 539,19 , 13944,28 , 13972,65 , 3668,14 , 13944,28 , 13972,65 , 3668,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 15779,15 , 13,5 , 4,0 , 4761,14 , 4775,11 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany
- { 170, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 461,8 , 461,8 , 365,7 , 1633,23 , 529,10 , 539,19 , 13944,28 , 13972,65 , 3668,14 , 13944,28 , 13972,65 , 3668,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 15779,15 , 13,5 , 4,0 , 4761,14 , 4786,12 , 2, 1, 1, 6, 7 }, // Low German/Latin/Netherlands
+ { 170, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 365,7 , 1640,23 , 502,10 , 512,19 , 13938,28 , 13966,65 , 3695,14 , 13938,28 , 13966,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16054,15 , 13,5 , 4,0 , 4775,14 , 4789,11 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany
+ { 170, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 365,7 , 1640,23 , 502,10 , 512,19 , 13938,28 , 13966,65 , 3695,14 , 13938,28 , 13966,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16054,15 , 13,5 , 4,0 , 4775,14 , 4800,12 , 2, 1, 1, 6, 7 }, // Low German/Latin/Netherlands
{ 171, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // South Ndebele/Latin/South Africa
{ 172, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Northern Sotho/Latin/South Africa
- { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 228,8 , 228,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14037,33 , 14070,75 , 14145,14 , 14037,33 , 14070,75 , 14145,14 , 475,11 , 450,13 , 45,4 , 5,17 , 22,23 , {78,79,75}, 189,2 , 15794,63 , 13,5 , 4,0 , 4798,15 , 4813,5 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Norway
- { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 228,8 , 228,8 , 495,10 , 97,16 , 37,5 , 8,10 , 14159,21 , 14180,70 , 14250,14 , 14159,21 , 14180,70 , 14250,14 , 486,2 , 463,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 15857,23 , 13,5 , 4,0 , 4798,15 , 4818,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland
- { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 228,8 , 228,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14037,33 , 14070,75 , 14145,14 , 14037,33 , 14070,75 , 14145,14 , 475,11 , 450,13 , 45,4 , 5,17 , 22,23 , {83,69,75}, 189,2 , 15880,63 , 13,5 , 4,0 , 4798,15 , 4824,6 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Sweden
- { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 323,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan
- { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14264,28 , 14292,62 , 14354,14 , 14264,28 , 14292,62 , 14354,14 , 488,6 , 465,3 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15943,24 , 4,4 , 4,0 , 4830,8 , 1192,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya
- { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14368,28 , 14396,105 , 14501,14 , 14368,28 , 14396,105 , 14501,14 , 494,10 , 468,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15943,24 , 4,4 , 4,0 , 4838,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya
- { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15967,26 , 13,5 , 4,0 , 4845,6 , 4401,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal
- { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15967,26 , 13,5 , 4,0 , 4845,6 , 4851,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso
- { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 15993,25 , 13,5 , 4,0 , 4845,6 , 4865,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon
- { 177, 7, 80, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {71,77,68}, 162,1 , 16018,20 , 13,5 , 4,0 , 4845,6 , 4873,6 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Gambia
- { 177, 7, 83, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {71,72,83}, 163,3 , 0,7 , 13,5 , 4,0 , 4845,6 , 4879,5 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Ghana
- { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 215,2 , 0,7 , 13,5 , 4,0 , 4845,6 , 4884,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea
- { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15967,26 , 13,5 , 4,0 , 4845,6 , 4888,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau
- { 177, 7, 121, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 16038,23 , 13,5 , 4,0 , 4845,6 , 4900,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Liberia
- { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 218,2 , 16061,22 , 13,5 , 4,0 , 4845,6 , 4909,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania
- { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 15967,26 , 13,5 , 4,0 , 4845,6 , 4917,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger
- { 177, 7, 157, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 177,1 , 16083,23 , 13,5 , 4,0 , 4845,6 , 4923,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Nigeria
- { 177, 7, 189, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14515,28 , 14543,59 , 14602,14 , 14515,28 , 14543,59 , 14602,14 , 504,6 , 478,7 , 45,4 , 5,17 , 22,23 , {83,76,76}, 186,2 , 16106,25 , 13,5 , 4,0 , 4845,6 , 4932,11 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Sierra Leone
- { 177, 134, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 215,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Fulah/Adlam/Guinea
- { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14616,28 , 14644,63 , 14707,14 , 14616,28 , 14644,63 , 14707,14 , 510,6 , 485,8 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16131,23 , 4,4 , 4,0 , 4943,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya
- { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14721,28 , 14749,105 , 14854,14 , 14721,28 , 14749,105 , 14854,14 , 516,7 , 493,5 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16154,25 , 4,4 , 4,0 , 4949,8 , 1192,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya
- { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 14868,28 , 14896,55 , 14951,14 , 14868,28 , 14896,55 , 14951,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 266,3 , 16179,28 , 0,4 , 4,0 , 4957,4 , 3357,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique
- { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14965,28 , 14993,50 , 15043,14 , 14965,28 , 14993,50 , 15043,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 155,3 , 16207,24 , 4,4 , 4,0 , 4961,10 , 1820,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe
- { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15057,29 , 15086,65 , 15151,14 , 15057,29 , 15086,65 , 15151,14 , 523,8 , 498,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16231,25 , 4,4 , 4,0 , 4971,9 , 1625,8 , 2, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania
- { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15165,30 , 15195,47 , 85,14 , 15165,30 , 15195,47 , 85,14 , 531,6 , 505,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16256,21 , 0,4 , 4,0 , 4980,7 , 4987,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Tifinagh/Morocco
- { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15242,30 , 15272,48 , 85,14 , 15242,30 , 15272,48 , 85,14 , 537,6 , 513,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16277,21 , 0,4 , 4,0 , 4993,10 , 5003,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Latin/Morocco
- { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 122, 171, 187, 8220, 8221, 0,6 , 0,6 , 914,12 , 926,11 , 415,8 , 97,16 , 18,7 , 25,12 , 15320,28 , 15348,34 , 15382,14 , 15396,30 , 15426,51 , 15477,14 , 543,7 , 521,9 , 1193,7 , 1200,21 , 22,23 , {68,90,68}, 204,2 , 16298,53 , 0,4 , 4,0 , 5009,9 , 5018,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria
- { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15491,28 , 15519,74 , 15593,14 , 15491,28 , 15519,74 , 15593,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 196,3 , 16351,26 , 4,4 , 4,0 , 5026,10 , 1690,6 , 0, 0, 1, 6, 7 }, // Nyankole/Latin/Uganda
- { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15607,28 , 15635,82 , 15717,14 , 15607,28 , 15635,82 , 15717,14 , 550,7 , 530,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16377,29 , 0,4 , 4,0 , 5036,6 , 5042,10 , 2, 0, 1, 6, 7 }, // Bena/Latin/Tanzania
- { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15731,28 , 15759,62 , 15821,14 , 15731,28 , 15759,62 , 15821,14 , 557,5 , 537,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16406,27 , 4,4 , 4,0 , 5052,8 , 1625,8 , 2, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania
- { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15835,28 , 15863,44 , 15907,14 , 15835,28 , 15863,44 , 15907,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 16433,24 , 4,4 , 4,0 , 5060,9 , 2189,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali
- { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali
- { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15921,28 , 15949,64 , 16013,14 , 15921,28 , 15949,64 , 16013,14 , 562,2 , 546,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15943,24 , 4,4 , 4,0 , 5069,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya
- { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 937,9 , 946,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16027,28 , 16055,49 , 16104,14 , 16027,28 , 16055,49 , 16104,14 , 564,3 , 548,6 , 1221,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16457,25 , 4,4 , 4,0 , 5075,3 , 5078,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States
- { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16118,27 , 16145,48 , 16193,14 , 16118,27 , 16145,48 , 16193,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,85,82}, 175,2 , 16482,21 , 41,6 , 4,0 , 5093,14 , 5107,5 , 2, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius
- { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16207,28 , 16235,133 , 15151,14 , 16207,28 , 16235,133 , 15151,14 , 567,4 , 554,5 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16406,27 , 4,4 , 4,0 , 5112,10 , 1625,8 , 2, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania
- { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16368,36 , 16404,63 , 16467,14 , 16368,36 , 16404,63 , 16467,14 , 571,3 , 559,3 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16503,29 , 41,6 , 4,0 , 5122,8 , 5130,9 , 2, 0, 1, 6, 7 }, // Langi/Latin/Tanzania
- { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16481,28 , 16509,66 , 16575,14 , 16481,28 , 16509,66 , 16575,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 196,3 , 16532,26 , 0,4 , 4,0 , 5139,7 , 5146,7 , 0, 0, 1, 6, 7 }, // Ganda/Latin/Uganda
- { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 16589,80 , 16589,80 , 85,14 , 16589,80 , 16589,80 , 85,14 , 574,8 , 562,7 , 45,4 , 5,17 , 22,23 , {90,77,87}, 131,1 , 0,7 , 4,4 , 4,0 , 5153,9 , 1814,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia
- { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 163,7 , 163,7 , 415,8 , 1656,27 , 37,5 , 8,10 , 16669,28 , 16697,73 , 16770,14 , 16669,28 , 16784,73 , 16770,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 265,1 , 16558,43 , 13,5 , 4,0 , 5162,12 , 5174,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde
- { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16857,28 , 16885,51 , 16936,14 , 16857,28 , 16885,51 , 16936,14 , 582,2 , 569,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15943,24 , 4,4 , 4,0 , 5184,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya
- { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16950,28 , 16978,53 , 17031,14 , 16950,28 , 16978,53 , 17031,14 , 584,6 , 571,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16601,26 , 4,4 , 4,0 , 5190,8 , 5198,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya
- { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 17045,23 , 17068,92 , 17160,14 , 17045,23 , 17068,92 , 17160,14 , 590,7 , 581,5 , 45,4 , 5,17 , 22,23 , {78,65,68}, 6,1 , 16627,22 , 4,4 , 4,0 , 5210,13 , 5223,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia
- { 200, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15731,28 , 15759,62 , 15821,14 , 15731,28 , 15759,62 , 15821,14 , 557,5 , 537,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16406,27 , 4,4 , 4,0 , 5231,9 , 1625,8 , 2, 0, 1, 6, 7 }, // Machame/Latin/Tanzania
- { 201, 7, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 461,8 , 461,8 , 1134,10 , 1683,23 , 37,5 , 8,10 , 17174,28 , 17202,72 , 3668,14 , 17174,28 , 17202,72 , 3668,14 , 597,16 , 586,16 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16649,11 , 13,5 , 4,0 , 5240,6 , 5246,11 , 2, 1, 1, 6, 7 }, // Colognian/Latin/Germany
- { 202, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15731,28 , 17274,58 , 15151,14 , 15731,28 , 17274,58 , 15151,14 , 613,9 , 602,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16660,25 , 4,4 , 4,0 , 5257,3 , 1192,5 , 2, 1, 7, 6, 7 }, // Masai/Latin/Kenya
- { 202, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15731,28 , 17274,58 , 15151,14 , 15731,28 , 17274,58 , 15151,14 , 613,9 , 602,6 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16685,28 , 4,4 , 4,0 , 5257,3 , 5260,8 , 2, 0, 1, 6, 7 }, // Masai/Latin/Tanzania
- { 203, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17332,35 , 17367,65 , 17432,14 , 17332,35 , 17367,65 , 17432,14 , 622,6 , 608,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 196,3 , 16532,26 , 13,5 , 4,0 , 5268,7 , 5146,7 , 0, 0, 1, 6, 7 }, // Soga/Latin/Uganda
- { 204, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17446,21 , 17467,75 , 85,14 , 17446,21 , 17467,75 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16713,23 , 4,4 , 96,6 , 5275,7 , 1192,5 , 2, 1, 7, 6, 7 }, // Luyia/Latin/Kenya
- { 205, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17542,28 , 10010,60 , 15821,14 , 17542,28 , 10010,60 , 15821,14 , 628,9 , 614,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16736,28 , 13,5 , 4,0 , 5282,6 , 5288,8 , 2, 0, 1, 6, 7 }, // Asu/Latin/Tanzania
- { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17570,28 , 17598,69 , 17667,14 , 17570,28 , 17598,69 , 17667,14 , 637,9 , 622,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 196,3 , 16764,28 , 4,4 , 4,0 , 5296,6 , 1690,6 , 0, 0, 1, 6, 7 }, // Teso/Latin/Uganda
- { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17570,28 , 17598,69 , 17667,14 , 17570,28 , 17598,69 , 17667,14 , 637,9 , 622,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16792,27 , 4,4 , 4,0 , 5296,6 , 5302,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya
+ { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14031,33 , 14064,75 , 14139,14 , 14031,33 , 14064,75 , 14139,14 , 470,11 , 446,13 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 16069,63 , 13,5 , 4,0 , 4812,15 , 4827,5 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Norway
+ { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 495,10 , 97,16 , 37,5 , 8,10 , 14153,21 , 14174,70 , 14244,14 , 14153,21 , 14174,70 , 14244,14 , 481,2 , 459,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16132,23 , 13,5 , 4,0 , 4812,15 , 4832,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland
+ { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14031,33 , 14064,75 , 14139,14 , 14031,33 , 14064,75 , 14139,14 , 470,11 , 446,13 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 16155,63 , 13,5 , 4,0 , 4812,15 , 4838,6 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Sweden
+ { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 337,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan
+ { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14258,28 , 14286,62 , 14348,14 , 14258,28 , 14286,62 , 14348,14 , 483,6 , 461,3 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16218,24 , 4,4 , 4,0 , 4844,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya
+ { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14362,28 , 14390,105 , 14495,14 , 14362,28 , 14390,105 , 14495,14 , 489,10 , 464,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16218,24 , 4,4 , 4,0 , 4852,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya
+ { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16242,26 , 13,5 , 4,0 , 4859,6 , 4415,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal
+ { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16242,26 , 13,5 , 4,0 , 4859,6 , 4865,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso
+ { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 16268,25 , 13,5 , 4,0 , 4859,6 , 4879,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon
+ { 177, 7, 80, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {71,77,68}, 166,1 , 16293,20 , 13,5 , 4,0 , 4859,6 , 4887,6 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Gambia
+ { 177, 7, 83, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 13,5 , 4,0 , 4859,6 , 4893,5 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Ghana
+ { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 216,2 , 0,7 , 13,5 , 4,0 , 4859,6 , 4898,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea
+ { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16242,26 , 13,5 , 4,0 , 4859,6 , 4902,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau
+ { 177, 7, 121, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 16313,23 , 13,5 , 4,0 , 4859,6 , 4914,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Liberia
+ { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 219,2 , 16336,22 , 13,5 , 4,0 , 4859,6 , 4923,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania
+ { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16242,26 , 13,5 , 4,0 , 4859,6 , 4931,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger
+ { 177, 7, 157, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 16358,23 , 13,5 , 4,0 , 4859,6 , 4937,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Nigeria
+ { 177, 7, 189, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14509,28 , 14537,59 , 14596,14 , 14509,28 , 14537,59 , 14596,14 , 499,6 , 474,7 , 45,4 , 5,17 , 22,23 , {83,76,76}, 187,2 , 16381,25 , 13,5 , 4,0 , 4859,6 , 4946,11 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Sierra Leone
+ { 177, 134, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 216,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Fulah/Adlam/Guinea
+ { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14610,28 , 14638,63 , 14701,14 , 14610,28 , 14638,63 , 14701,14 , 505,6 , 481,8 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16406,23 , 4,4 , 4,0 , 4957,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya
+ { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14715,28 , 14743,105 , 14848,14 , 14715,28 , 14743,105 , 14848,14 , 511,7 , 489,5 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16429,25 , 4,4 , 4,0 , 4963,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya
+ { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 14862,28 , 14890,55 , 14945,14 , 14862,28 , 14890,55 , 14945,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 278,3 , 16454,28 , 0,4 , 4,0 , 4971,4 , 3371,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique
+ { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14959,28 , 14987,50 , 15037,14 , 14959,28 , 14987,50 , 15037,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 16482,24 , 4,4 , 4,0 , 4975,10 , 1815,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe
+ { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15051,29 , 15080,65 , 15145,14 , 15051,29 , 15080,65 , 15145,14 , 518,8 , 494,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16506,25 , 4,4 , 4,0 , 4985,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania
+ { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15159,30 , 15189,47 , 85,14 , 15159,30 , 15189,47 , 85,14 , 526,6 , 501,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16531,21 , 0,4 , 4,0 , 4994,7 , 5001,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Tifinagh/Morocco
+ { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15236,30 , 15266,48 , 85,14 , 15236,30 , 15266,48 , 85,14 , 532,6 , 509,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16552,21 , 0,4 , 4,0 , 5007,10 , 5017,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Latin/Morocco
+ { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 122, 171, 187, 8220, 8221, 0,6 , 0,6 , 936,12 , 948,11 , 415,8 , 97,16 , 18,7 , 25,12 , 15314,28 , 15342,34 , 15376,14 , 15390,30 , 15420,51 , 15471,14 , 538,7 , 517,9 , 1197,7 , 1204,21 , 22,23 , {68,90,68}, 205,2 , 16573,53 , 0,4 , 4,0 , 5023,9 , 5032,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria
+ { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15485,28 , 15513,74 , 15587,14 , 15485,28 , 15513,74 , 15587,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16626,26 , 4,4 , 4,0 , 5040,10 , 1685,6 , 0, 0, 1, 7, 7 }, // Nyankole/Latin/Uganda
+ { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15601,28 , 15629,82 , 15711,14 , 15601,28 , 15629,82 , 15711,14 , 545,7 , 526,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16652,29 , 0,4 , 4,0 , 5050,6 , 5056,10 , 2, 0, 1, 6, 7 }, // Bena/Latin/Tanzania
+ { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15725,28 , 15753,62 , 15815,14 , 15725,28 , 15753,62 , 15815,14 , 552,5 , 533,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16681,27 , 4,4 , 4,0 , 5066,8 , 1620,8 , 2, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania
+ { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15829,28 , 15857,44 , 15901,14 , 15829,28 , 15857,44 , 15901,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16708,24 , 4,4 , 4,0 , 5074,9 , 2184,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali
+ { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali
+ { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,64 , 16007,14 , 15915,28 , 15943,64 , 16007,14 , 557,2 , 542,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16218,24 , 4,4 , 4,0 , 5083,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya
+ { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 959,9 , 968,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16021,28 , 16049,49 , 16098,14 , 16021,28 , 16049,49 , 16098,14 , 559,3 , 544,6 , 1225,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16732,25 , 4,4 , 4,0 , 5089,3 , 5092,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States
+ { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16112,27 , 16139,48 , 16187,14 , 16112,27 , 16139,48 , 16187,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,85,82}, 176,2 , 16757,21 , 41,6 , 4,0 , 5107,14 , 5121,5 , 2, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius
+ { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16201,28 , 16229,133 , 15145,14 , 16201,28 , 16229,133 , 15145,14 , 562,4 , 550,5 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16681,27 , 4,4 , 4,0 , 5126,10 , 1620,8 , 2, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania
+ { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16362,36 , 16398,63 , 16461,14 , 16362,36 , 16398,63 , 16461,14 , 566,3 , 555,3 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16778,29 , 41,6 , 4,0 , 5136,8 , 5144,9 , 2, 0, 1, 6, 7 }, // Langi/Latin/Tanzania
+ { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16475,28 , 16503,66 , 16569,14 , 16475,28 , 16503,66 , 16569,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16807,26 , 0,4 , 4,0 , 5153,7 , 5160,7 , 0, 0, 1, 7, 7 }, // Ganda/Latin/Uganda
+ { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 16583,80 , 16583,80 , 85,14 , 16583,80 , 16583,80 , 85,14 , 569,8 , 558,7 , 45,4 , 5,17 , 22,23 , {90,77,87}, 131,1 , 0,7 , 4,4 , 4,0 , 5167,9 , 1809,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia
+ { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 158,7 , 158,7 , 119,10 , 1663,27 , 37,5 , 8,10 , 16663,28 , 16691,73 , 16764,14 , 16663,28 , 16778,73 , 16764,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 277,1 , 16833,43 , 13,5 , 4,0 , 5176,12 , 5188,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde
+ { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16851,28 , 16879,51 , 16930,14 , 16851,28 , 16879,51 , 16930,14 , 577,2 , 565,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16218,24 , 4,4 , 4,0 , 5198,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya
+ { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16944,28 , 16972,53 , 17025,14 , 16944,28 , 16972,53 , 17025,14 , 579,6 , 567,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16876,26 , 4,4 , 4,0 , 5204,8 , 5212,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya
+ { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 17039,23 , 17062,92 , 17154,14 , 17039,23 , 17062,92 , 17154,14 , 585,7 , 577,5 , 45,4 , 5,17 , 22,23 , {78,65,68}, 6,1 , 16902,22 , 4,4 , 4,0 , 5224,13 , 5237,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia
+ { 200, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15725,28 , 15753,62 , 15815,14 , 15725,28 , 15753,62 , 15815,14 , 552,5 , 533,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16681,27 , 4,4 , 4,0 , 5245,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Machame/Latin/Tanzania
+ { 201, 7, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 1141,10 , 1690,23 , 37,5 , 8,10 , 17168,28 , 17196,72 , 3695,14 , 17168,28 , 17196,72 , 3695,14 , 592,16 , 582,16 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16924,11 , 13,5 , 4,0 , 5254,6 , 5260,11 , 2, 1, 1, 6, 7 }, // Colognian/Latin/Germany
+ { 202, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15725,28 , 17268,58 , 15145,14 , 15725,28 , 17268,58 , 15145,14 , 608,9 , 598,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16935,25 , 4,4 , 4,0 , 5271,3 , 1191,5 , 2, 1, 7, 6, 7 }, // Masai/Latin/Kenya
+ { 202, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15725,28 , 17268,58 , 15145,14 , 15725,28 , 17268,58 , 15145,14 , 608,9 , 598,6 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16960,28 , 4,4 , 4,0 , 5271,3 , 5274,8 , 2, 0, 1, 6, 7 }, // Masai/Latin/Tanzania
+ { 203, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17326,35 , 17361,65 , 17426,14 , 17326,35 , 17361,65 , 17426,14 , 617,6 , 604,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16807,26 , 13,5 , 4,0 , 5282,7 , 5160,7 , 0, 0, 1, 7, 7 }, // Soga/Latin/Uganda
+ { 204, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17440,21 , 17461,75 , 85,14 , 17440,21 , 17461,75 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16988,23 , 4,4 , 114,6 , 5289,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Luyia/Latin/Kenya
+ { 205, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17536,28 , 10012,60 , 15815,14 , 17536,28 , 10012,60 , 15815,14 , 623,9 , 610,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17011,28 , 13,5 , 4,0 , 5296,6 , 5302,8 , 2, 0, 1, 6, 7 }, // Asu/Latin/Tanzania
+ { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17564,28 , 17592,69 , 17661,14 , 17564,28 , 17592,69 , 17661,14 , 632,9 , 618,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 17039,28 , 4,4 , 4,0 , 5310,6 , 1685,6 , 0, 0, 1, 7, 7 }, // Teso/Latin/Uganda
+ { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17564,28 , 17592,69 , 17661,14 , 17564,28 , 17592,69 , 17661,14 , 632,9 , 618,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17067,27 , 4,4 , 4,0 , 5310,6 , 5316,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya
{ 207, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Saho/Latin/Eritrea
- { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17681,28 , 17709,53 , 17762,14 , 17681,28 , 17709,53 , 17762,14 , 646,6 , 628,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 16819,23 , 0,4 , 4,0 , 5307,11 , 5318,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali
- { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15731,28 , 15759,62 , 15821,14 , 15731,28 , 15759,62 , 15821,14 , 557,5 , 537,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16406,27 , 0,4 , 4,0 , 5323,6 , 1625,8 , 2, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania
- { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17776,28 , 17804,69 , 17873,14 , 17776,28 , 17804,69 , 17873,14 , 652,2 , 634,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16842,23 , 0,4 , 4,0 , 5329,6 , 1192,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya
- { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15491,28 , 15519,74 , 15593,14 , 15491,28 , 15519,74 , 15593,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 196,3 , 16351,26 , 4,4 , 4,0 , 5335,6 , 1690,6 , 0, 0, 1, 6, 7 }, // Chiga/Latin/Uganda
- { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17887,28 , 17915,48 , 17963,14 , 17887,28 , 17915,48 , 17963,14 , 654,9 , 636,10 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16865,22 , 13,5 , 4,0 , 5341,17 , 5358,6 , 2, 1, 1, 6, 7 }, // Central Morocco Tamazight/Latin/Morocco
- { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17977,28 , 18005,54 , 17762,14 , 17977,28 , 18005,54 , 17762,14 , 646,6 , 628,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 16819,23 , 0,4 , 4,0 , 5364,15 , 5318,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali
- { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18059,28 , 18087,63 , 18150,14 , 18059,28 , 18087,63 , 18150,14 , 663,5 , 646,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 16887,27 , 0,4 , 4,0 , 5379,9 , 1625,8 , 2, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania
- { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 18164,33 , 18197,54 , 18251,19 , 18164,33 , 18197,54 , 18251,19 , 668,3 , 654,6 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 16914,10 , 8,5 , 4,0 , 5388,4 , 2667,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India
- { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 18270,25 , 18295,45 , 18340,17 , 18270,25 , 18295,45 , 18270,25 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 16924,43 , 13,5 , 4,0 , 5392,7 , 5399,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia
- { 219, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 954,8 , 954,8 , 1010,10 , 1706,23 , 37,5 , 8,10 , 18357,37 , 18394,68 , 11435,14 , 18357,37 , 18394,68 , 11435,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 16967,44 , 13,5 , 4,0 , 5404,19 , 5423,7 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia
+ { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17675,28 , 17703,53 , 17756,14 , 17675,28 , 17703,53 , 17756,14 , 641,6 , 624,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17094,23 , 0,4 , 4,0 , 5321,11 , 5332,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali
+ { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15725,28 , 15753,62 , 15815,14 , 15725,28 , 15753,62 , 15815,14 , 552,5 , 533,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16681,27 , 0,4 , 4,0 , 5337,6 , 1620,8 , 2, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania
+ { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17770,28 , 17798,69 , 17867,14 , 17770,28 , 17798,69 , 17867,14 , 647,2 , 630,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17117,23 , 0,4 , 4,0 , 5343,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya
+ { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15485,28 , 15513,74 , 15587,14 , 15485,28 , 15513,74 , 15587,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16626,26 , 4,4 , 4,0 , 5349,6 , 1685,6 , 0, 0, 1, 7, 7 }, // Chiga/Latin/Uganda
+ { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17881,28 , 17909,48 , 17957,14 , 17881,28 , 17909,48 , 17957,14 , 649,9 , 632,10 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 17140,22 , 13,5 , 4,0 , 5355,17 , 5372,6 , 2, 1, 1, 6, 7 }, // Central Morocco Tamazight/Latin/Morocco
+ { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17971,28 , 17999,54 , 17756,14 , 17971,28 , 17999,54 , 17756,14 , 641,6 , 624,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17094,23 , 0,4 , 4,0 , 5378,15 , 5332,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali
+ { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18053,28 , 18081,63 , 18144,14 , 18053,28 , 18081,63 , 18144,14 , 658,5 , 642,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17162,27 , 0,4 , 4,0 , 5393,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania
+ { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 18158,33 , 18191,54 , 18245,19 , 18158,33 , 18191,54 , 18245,19 , 663,3 , 650,6 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17189,10 , 8,5 , 4,0 , 5402,4 , 2662,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India
+ { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 18264,25 , 18289,45 , 18334,17 , 18264,25 , 18289,45 , 18264,25 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17199,43 , 13,5 , 4,0 , 5406,7 , 5413,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia
+ { 219, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 976,8 , 976,8 , 1003,10 , 1713,23 , 37,5 , 8,10 , 18351,37 , 18388,68 , 11437,14 , 18351,37 , 18388,68 , 11437,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17242,44 , 13,5 , 4,0 , 5418,19 , 5437,7 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia
{ 220, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Chuvash/Cyrillic/Russia
- { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18462,28 , 18490,50 , 18540,14 , 18462,28 , 18490,50 , 18540,14 , 671,5 , 660,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 209,2 , 17011,24 , 0,4 , 4,0 , 5430,8 , 5438,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa
- { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 962,10 , 962,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18554,28 , 18582,65 , 3668,14 , 18647,35 , 18582,65 , 3668,14 , 676,5 , 666,8 , 462,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8439,19 , 13,5 , 4,0 , 5454,14 , 5468,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg
+ { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18456,28 , 18484,50 , 18534,14 , 18456,28 , 18484,50 , 18534,14 , 666,5 , 656,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 210,2 , 17286,24 , 0,4 , 4,0 , 5444,8 , 5452,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa
+ { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 984,10 , 984,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18548,28 , 18576,65 , 3695,14 , 18641,35 , 18576,65 , 3695,14 , 671,5 , 662,8 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 13,5 , 4,0 , 5468,14 , 5482,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg
{ 236, 7, 21, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Walloon/Latin/Belgium
- { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18682,28 , 18710,72 , 18782,14 , 18682,28 , 18710,72 , 18782,14 , 681,3 , 674,3 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17035,21 , 0,4 , 4,0 , 5478,5 , 5483,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon
- { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18796,28 , 18824,70 , 18894,14 , 18796,28 , 18824,70 , 18894,14 , 684,10 , 677,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17056,22 , 13,5 , 4,0 , 5490,5 , 5495,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon
- { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17977,28 , 18908,53 , 18961,14 , 17977,28 , 18908,53 , 18961,14 , 694,8 , 686,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 16819,23 , 0,4 , 4,0 , 5503,10 , 5513,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger
- { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18975,28 , 19003,45 , 19048,14 , 18975,28 , 19003,45 , 19048,14 , 702,5 , 696,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5518,5 , 1986,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon
- { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19062,28 , 19090,50 , 19140,14 , 19062,28 , 19090,50 , 19140,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 17078,23 , 13,5 , 4,0 , 5523,5 , 5528,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal
- { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19154,30 , 19184,85 , 19269,14 , 19154,30 , 19184,85 , 19269,14 , 707,7 , 702,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17101,23 , 13,5 , 4,0 , 5535,6 , 5541,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon
- { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19283,29 , 19312,45 , 19357,14 , 19283,29 , 19312,45 , 19357,14 , 714,6 , 711,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17124,11 , 13,5 , 4,0 , 5548,5 , 5553,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon
- { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19371,28 , 19399,59 , 19458,14 , 19371,28 , 19399,59 , 19458,14 , 720,8 , 718,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 266,3 , 0,7 , 41,6 , 4,0 , 5560,5 , 5565,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique
- { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19472,28 , 19500,74 , 19574,14 , 19472,28 , 19500,74 , 19574,14 , 728,5 , 728,5 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17135,17 , 4,4 , 4,0 , 5575,6 , 5581,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon
- { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19588,30 , 19618,89 , 19707,14 , 19588,30 , 19618,89 , 19707,14 , 733,4 , 733,4 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17152,20 , 13,5 , 4,0 , 5588,6 , 5594,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon
- { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,9 , 97,16 , 18,7 , 558,12 , 19721,38 , 19759,79 , 19838,14 , 19721,38 , 19759,79 , 19838,14 , 737,2 , 737,2 , 45,4 , 5,17 , 22,23 , {83,83,80}, 119,1 , 0,7 , 4,4 , 4,0 , 5601,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/South Sudan
- { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 972,11 , 972,11 , 227,6 , 1729,30 , 37,5 , 8,10 , 19852,21 , 19873,71 , 19944,14 , 19852,21 , 19873,71 , 19944,14 , 739,2 , 739,2 , 1227,5 , 1232,17 , 22,23 , {82,85,66}, 123,1 , 17172,47 , 13,5 , 4,0 , 5610,9 , 5619,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia
- { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19958,28 , 19986,60 , 20046,14 , 19958,28 , 19986,60 , 20046,14 , 741,9 , 741,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 191,3 , 17219,25 , 0,4 , 4,0 , 5628,9 , 5637,9 , 2, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania
- { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17977,28 , 18005,54 , 17762,14 , 17977,28 , 18005,54 , 17762,14 , 694,8 , 686,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 206,3 , 16819,23 , 0,4 , 4,0 , 5646,13 , 5513,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger
- { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20060,30 , 20060,30 , 85,14 , 20060,30 , 20060,30 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17244,15 , 4,4 , 4,0 , 5659,2 , 5661,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia
- { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20090,48 , 20090,48 , 85,14 , 20090,48 , 20090,48 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17259,20 , 4,4 , 4,0 , 5665,3 , 5668,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia
- { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 269,9 , 269,9 , 53,10 , 622,18 , 37,5 , 8,10 , 20138,28 , 20166,53 , 20219,14 , 20138,28 , 20166,53 , 20219,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 0,7 , 41,6 , 4,0 , 5676,6 , 5682,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland
- { 254, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 20233,21 , 20254,71 , 20325,14 , 20233,21 , 20254,71 , 20325,14 , 750,8 , 750,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5688,6 , 5694,7 , 0, 0, 1, 6, 7 }, // Yangben/Latin/Cameroon
- { 256, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 683,7 , 683,7 , 269,6 , 372,22 , 37,5 , 8,10 , 20339,28 , 20367,54 , 3364,14 , 20339,28 , 20367,54 , 3364,14 , 758,12 , 758,11 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 5701,9 , 2432,6 , 2, 1, 1, 6, 7 }, // Asturian/Latin/Spain
- { 257, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 983,11 , 983,11 , 994,16 , 1010,9 , 53,10 , 1559,18 , 37,5 , 8,10 , 20421,60 , 20421,60 , 20481,25 , 20421,60 , 20421,60 , 20481,25 , 770,8 , 769,13 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17279,12 , 8,5 , 4,0 , 5710,5 , 5715,7 , 0, 0, 1, 6, 7 }, // Ngomba/Latin/Cameroon
- { 258, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 1759,10 , 80,17 , 37,5 , 8,10 , 20506,54 , 20506,54 , 20560,21 , 20506,54 , 20506,54 , 20560,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17291,16 , 41,6 , 4,0 , 5722,4 , 5726,7 , 0, 0, 1, 6, 7 }, // Kako/Latin/Cameroon
- { 259, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1559,18 , 37,5 , 8,10 , 20581,49 , 20581,49 , 20630,21 , 20581,49 , 20581,49 , 20630,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17307,12 , 8,5 , 4,0 , 5733,5 , 5738,7 , 0, 0, 1, 6, 7 }, // Meta/Latin/Cameroon
- { 260, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1769,32 , 37,5 , 8,10 , 20651,111 , 20651,111 , 85,14 , 20651,111 , 20651,111 , 85,14 , 778,9 , 782,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17319,16 , 8,5 , 4,0 , 5745,16 , 5761,7 , 0, 0, 1, 6, 7 }, // Ngiemboon/Latin/Cameroon
+ { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18676,28 , 18704,72 , 18776,14 , 18676,28 , 18704,72 , 18776,14 , 676,3 , 670,3 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17310,21 , 0,4 , 4,0 , 5492,5 , 5497,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon
+ { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18790,28 , 18818,70 , 18888,14 , 18790,28 , 18818,70 , 18888,14 , 679,10 , 673,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17331,22 , 13,5 , 4,0 , 5504,5 , 5509,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon
+ { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17971,28 , 18902,53 , 18955,14 , 17971,28 , 18902,53 , 18955,14 , 689,8 , 682,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17094,23 , 0,4 , 4,0 , 5517,10 , 5527,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger
+ { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18969,28 , 18997,45 , 19042,14 , 18969,28 , 18997,45 , 19042,14 , 697,5 , 692,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5532,5 , 1981,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon
+ { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19056,28 , 19084,50 , 19134,14 , 19056,28 , 19084,50 , 19134,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17353,23 , 13,5 , 4,0 , 5537,5 , 5542,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal
+ { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19148,30 , 19178,85 , 19263,14 , 19148,30 , 19178,85 , 19263,14 , 702,7 , 698,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17376,23 , 13,5 , 4,0 , 5549,6 , 5555,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon
+ { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19277,29 , 19306,45 , 19351,14 , 19277,29 , 19306,45 , 19351,14 , 709,6 , 707,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17399,11 , 13,5 , 4,0 , 5562,5 , 5567,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon
+ { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19365,28 , 19393,59 , 19452,14 , 19365,28 , 19393,59 , 19452,14 , 715,8 , 714,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 278,3 , 0,7 , 41,6 , 4,0 , 5574,5 , 5579,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique
+ { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19466,28 , 19494,74 , 19568,14 , 19466,28 , 19494,74 , 19568,14 , 723,5 , 724,5 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17410,17 , 4,4 , 4,0 , 5589,6 , 5595,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon
+ { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19582,30 , 19612,89 , 19701,14 , 19582,30 , 19612,89 , 19701,14 , 728,4 , 729,4 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17427,20 , 13,5 , 4,0 , 5602,6 , 5608,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon
+ { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,9 , 97,16 , 18,7 , 531,12 , 19715,38 , 19753,79 , 19832,14 , 19715,38 , 19753,79 , 19832,14 , 732,2 , 733,2 , 45,4 , 5,17 , 22,23 , {83,83,80}, 119,1 , 0,7 , 4,4 , 4,0 , 5615,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/South Sudan
+ { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 994,11 , 994,11 , 227,6 , 1736,30 , 37,5 , 8,10 , 19846,21 , 19867,71 , 19938,14 , 19846,21 , 19867,71 , 19938,14 , 734,2 , 735,2 , 1231,5 , 1236,17 , 22,23 , {82,85,66}, 123,1 , 17447,47 , 13,5 , 4,0 , 5624,9 , 5633,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia
+ { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19952,28 , 19980,60 , 20040,14 , 19952,28 , 19980,60 , 20040,14 , 736,9 , 737,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17494,25 , 0,4 , 4,0 , 5642,9 , 5651,9 , 2, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania
+ { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17971,28 , 17999,54 , 17756,14 , 17971,28 , 17999,54 , 17756,14 , 689,8 , 682,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17094,23 , 0,4 , 4,0 , 5660,13 , 5527,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger
+ { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20054,30 , 20054,30 , 85,14 , 20054,30 , 20054,30 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17519,15 , 4,4 , 4,0 , 5673,2 , 5675,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia
+ { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20084,48 , 20084,48 , 85,14 , 20084,48 , 20084,48 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17534,20 , 4,4 , 4,0 , 5679,3 , 5682,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia
+ { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 53,10 , 622,18 , 37,5 , 8,10 , 20132,28 , 20160,53 , 20213,14 , 20132,28 , 20160,53 , 20213,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 0,7 , 41,6 , 4,0 , 5690,6 , 5696,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland
+ { 254, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 20227,21 , 20248,71 , 20319,14 , 20227,21 , 20248,71 , 20319,14 , 745,8 , 746,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 13,5 , 4,0 , 5702,6 , 5708,7 , 0, 0, 1, 6, 7 }, // Yangben/Latin/Cameroon
+ { 256, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 705,7 , 705,7 , 269,6 , 372,22 , 37,5 , 8,10 , 20333,28 , 20361,54 , 3391,14 , 20333,28 , 20361,54 , 3391,14 , 753,12 , 754,11 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 13,5 , 4,0 , 5715,9 , 2427,6 , 2, 1, 1, 6, 7 }, // Asturian/Latin/Spain
+ { 257, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 1005,11 , 1005,11 , 1016,16 , 1032,9 , 53,10 , 1566,18 , 37,5 , 8,10 , 20415,60 , 20415,60 , 20475,25 , 20415,60 , 20415,60 , 20475,25 , 765,8 , 765,13 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17554,12 , 8,5 , 4,0 , 5724,5 , 5729,7 , 0, 0, 1, 6, 7 }, // Ngomba/Latin/Cameroon
+ { 258, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 1766,10 , 80,17 , 37,5 , 8,10 , 20500,54 , 20500,54 , 20554,21 , 20500,54 , 20500,54 , 20554,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17566,16 , 41,6 , 4,0 , 5736,4 , 5740,7 , 0, 0, 1, 6, 7 }, // Kako/Latin/Cameroon
+ { 259, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1566,18 , 37,5 , 8,10 , 20575,49 , 20575,49 , 20624,21 , 20575,49 , 20575,49 , 20624,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17582,12 , 8,5 , 4,0 , 5747,5 , 5752,7 , 0, 0, 1, 6, 7 }, // Meta/Latin/Cameroon
+ { 260, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1776,32 , 37,5 , 8,10 , 20645,111 , 20645,111 , 85,14 , 20645,111 , 20645,111 , 85,14 , 773,9 , 778,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17594,16 , 8,5 , 4,0 , 5759,16 , 5775,7 , 0, 0, 1, 6, 7 }, // Ngiemboon/Latin/Cameroon
+ { 261, 7, 197, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Aragonese/Latin/Spain
{ 290, 11, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Manipuri/Bengali/India
- { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 322,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam
+ { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 336,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam
{ 312, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Akoose/Latin/Cameroon
- { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 20762,87 , 20762,87 , 85,14 , 20762,87 , 20762,87 , 20849,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 41,6 , 4,0 , 5768,12 , 5780,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/United States
- { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15165,30 , 20863,48 , 85,14 , 15165,30 , 20863,48 , 85,14 , 531,6 , 505,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16256,21 , 0,4 , 4,0 , 5802,8 , 4987,6 , 2, 1, 1, 6, 7 }, // Standard Moroccan Tamazight/Tifinagh/Morocco
+ { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 20756,87 , 20756,87 , 85,14 , 20756,87 , 20756,87 , 20843,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 41,6 , 4,0 , 5782,12 , 5794,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/United States
+ { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15159,30 , 20857,48 , 85,14 , 15159,30 , 20857,48 , 85,14 , 526,6 , 501,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16531,21 , 0,4 , 4,0 , 5816,8 , 5001,6 , 2, 1, 1, 6, 7 }, // Standard Moroccan Tamazight/Tifinagh/Morocco
{ 315, 7, 43, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,76,80}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Mapuche/Latin/Chile
- { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 20911,58 , 20911,58 , 20969,14 , 20911,58 , 20911,58 , 20969,14 , 787,3 , 790,3 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 17335,20 , 13,5 , 4,0 , 5810,14 , 5824,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq
- { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 20911,58 , 20911,58 , 20969,14 , 20911,58 , 20911,58 , 20969,14 , 787,3 , 790,3 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 17355,19 , 13,5 , 4,0 , 5810,14 , 5829,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran
- { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 185,7 , 185,7 , 113,6 , 622,18 , 55,4 , 59,9 , 20983,28 , 21011,53 , 21064,14 , 20983,28 , 21011,53 , 21064,14 , 790,9 , 793,10 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17374,27 , 13,5 , 4,0 , 5834,14 , 5848,6 , 2, 1, 1, 6, 7 }, // Lower Sorbian/Latin/Germany
- { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 185,7 , 185,7 , 113,6 , 622,18 , 570,12 , 59,9 , 21078,28 , 21106,53 , 21159,14 , 21078,28 , 21106,53 , 21159,14 , 790,9 , 803,9 , 1249,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17401,29 , 13,5 , 4,0 , 5854,15 , 5869,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany
+ { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 20905,58 , 20905,58 , 20963,14 , 20905,58 , 20905,58 , 20963,14 , 782,3 , 786,3 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 17610,20 , 13,5 , 4,0 , 5824,14 , 5838,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq
+ { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 20905,58 , 20905,58 , 20963,14 , 20905,58 , 20905,58 , 20963,14 , 782,3 , 786,3 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 17630,19 , 13,5 , 4,0 , 5824,14 , 5843,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran
+ { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 113,6 , 622,18 , 55,4 , 59,9 , 20977,28 , 21005,53 , 21058,14 , 20977,28 , 21005,53 , 21058,14 , 785,9 , 789,10 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17649,27 , 13,5 , 4,0 , 5848,14 , 5862,6 , 2, 1, 1, 6, 7 }, // Lower Sorbian/Latin/Germany
+ { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 113,6 , 622,18 , 543,12 , 59,9 , 21072,28 , 21100,53 , 21153,14 , 21072,28 , 21100,53 , 21153,14 , 785,9 , 799,9 , 1253,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17676,29 , 13,5 , 4,0 , 5868,15 , 5883,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany
{ 319, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kenyang/Latin/Cameroon
- { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 233,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada
- { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 215,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea
- { 322, 7, 260, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 1019,8 , 1019,8 , 156,8 , 1801,27 , 37,5 , 8,10 , 21173,28 , 21201,69 , 21270,14 , 21173,28 , 21201,69 , 21270,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 5875,9 , 5884,6 , 2, 1, 1, 6, 7 }, // Prussian/Latin/World
- { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 290,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala
- { 324, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 189,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Southern Sami/Latin/Sweden
- { 325, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 189,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Lule Sami/Latin/Sweden
- { 326, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 640,8 , 1828,18 , 243,4 , 247,9 , 21284,28 , 21312,70 , 85,14 , 21284,28 , 21382,73 , 21455,14 , 799,3 , 812,3 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17430,11 , 13,5 , 4,0 , 5890,11 , 5901,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland
+ { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada
+ { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 216,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea
+ { 322, 7, 260, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 1041,8 , 1041,8 , 156,8 , 1808,27 , 37,5 , 8,10 , 21167,28 , 21195,69 , 21264,14 , 21167,28 , 21195,69 , 21264,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 13,5 , 4,0 , 5889,9 , 5898,6 , 2, 1, 1, 6, 7 }, // Prussian/Latin/World
+ { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 305,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala
+ { 324, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Southern Sami/Latin/Sweden
+ { 325, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Lule Sami/Latin/Sweden
+ { 326, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 640,8 , 1835,18 , 220,4 , 224,9 , 21278,28 , 21306,70 , 85,14 , 21278,28 , 21376,73 , 21449,14 , 794,3 , 808,3 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17705,11 , 13,5 , 4,0 , 5904,11 , 5915,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland
{ 327, 7, 73, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Skolt Sami/Latin/Finland
- { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 326,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia
- { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 726,4 , 1254,39 , 22,23 , {73,82,82}, 328,3 , 17441,27 , 8,5 , 4,0 , 5906,7 , 3238,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran
- { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5913,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran
- { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 0,7 , 8,5 , 4,0 , 5913,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq
- { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 170,5 , 170,5 , 1027,5 , 1027,5 , 394,8 , 423,14 , 198,6 , 215,13 , 1953,28 , 1953,28 , 1981,14 , 1953,28 , 1953,28 , 1981,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {72,75,68}, 166,3 , 17468,11 , 4,4 , 4,0 , 5924,2 , 5926,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/Hong Kong
- { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 170,5 , 170,5 , 1027,5 , 1027,5 , 394,8 , 402,13 , 198,6 , 204,11 , 1932,21 , 1953,28 , 1981,14 , 1932,21 , 1953,28 , 1981,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 4,0 , 5940,2 , 5942,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China
+ { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 340,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia
+ { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 726,4 , 1258,39 , 22,23 , {73,82,82}, 342,3 , 17716,27 , 8,5 , 4,0 , 5920,7 , 3252,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran
+ { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5927,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran
+ { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 0,7 , 8,5 , 4,0 , 5927,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq
+ { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 1049,5 , 1049,5 , 394,8 , 423,14 , 175,6 , 192,13 , 1980,28 , 1980,28 , 2008,14 , 1980,28 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {72,75,68}, 134,3 , 17743,11 , 4,4 , 4,0 , 5938,2 , 5940,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/Hong Kong
+ { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 1049,5 , 1049,5 , 394,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 243,1 , 3122,13 , 4,4 , 4,0 , 5954,2 , 5956,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China
+ { 358, 138, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Osage/Osage/United States
{ 360, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ido/Latin/World
{ 361, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Lojban/Latin/World
{ 362, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sicilian/Latin/Italy
{ 363, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Southern Kurdish/Arabic/Iran
- { 364, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 175,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Western Balochi/Arabic/Pakistan
- { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 897,9 , 906,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21469,25 , 21494,56 , 21550,14 , 21469,25 , 21494,56 , 21550,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,72,80}, 178,1 , 0,7 , 4,4 , 4,0 , 5949,7 , 4701,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines
+ { 364, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 176,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Western Balochi/Arabic/Pakistan
+ { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,9 , 928,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21463,25 , 21488,56 , 21544,14 , 21463,25 , 21488,56 , 21544,14 , 0,2 , 0,2 , 1297,8 , 5,17 , 22,23 , {80,72,80}, 179,1 , 17754,56 , 4,4 , 4,0 , 5963,8 , 4715,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines
{ 366, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Erzya/Cyrillic/Russia
+ { 367, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Chickasaw/Latin/United States
+ { 368, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Muscogee/Latin/United States
+ { 369, 7, 172, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,76,78}, 273,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Silesian/Latin/Poland
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, {0,0,0}, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0, 0, 0, 0, 0 } // trailing 0s
};
static const ushort list_pattern_part_data[] = {
0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x68, 0x65,
0x20, 0x25, 0x32, 0x25, 0x31, 0x1363, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x648, 0x25, 0x32, 0x25, 0x31, 0x20, 0x587, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x986, 0x9f0, 0x9c1, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x76, 0x259, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xf51, 0xf44, 0xf0b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x25, 0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x456, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784,
-0x200b, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32,
-0x25, 0x31, 0x53ca, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x6b, 0x61, 0x6a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65,
-0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x10d3, 0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x3ba, 0x3b1, 0x3b9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0xa85, 0xaa8, 0xac7, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25,
-0x32, 0x25, 0x31, 0x2c, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0xe9, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64,
-0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
-0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae,
-0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x436, 0x4d9, 0x43d, 0x435, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0xbc0f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xfb, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x69, 0x72, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25,
-0x31, 0x20, 0xd15, 0xd42, 0xd1f, 0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32,
-0x25, 0x31, 0x20, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6fd, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x61, 0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x79, 0x6f,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
-0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, 0xbc1, 0xbae, 0xbcd, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, 0xc41, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x6f,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x77, 0x65, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x32,
-0x60c, 0x20, 0x25, 0x31, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0xe0, 0x20, 0x25, 0x32,
-0x25, 0x31, 0x2c, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25,
-0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
-0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c,
-0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6b,
-0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6b, 0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c,
-0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438, 0x486, 0x20,
-0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x443, 0x43e, 0x43d, 0x43d, 0x430,
-0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x1e3f, 0x62,
-0x25b, 0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x70, 0x254, 0x70, 0x20, 0x25, 0x32, 0x25,
-0x31, 0x20, 0x62, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25, 0x32
+0x20, 0x12a5, 0x1293, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x25, 0x32, 0x25, 0x31, 0x20, 0x587, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x986, 0x9f0, 0x9c1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x259, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65,
+0x74, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xf51, 0xf44, 0xf0b,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x68, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x456, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25, 0x31,
+0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61,
+0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x6a,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x10d3,
+0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1, 0x3b9, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
+0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe9, 0x73, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x2c, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9, 0x43d, 0x435,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbc0f, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0xfb, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75,
+0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42, 0xd1f,
+0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32, 0x25, 0x31, 0x20, 0x930, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x74, 0x61, 0x71, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x74, 0x61, 0x71, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xdc3, 0xdc4, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x61, 0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69,
+0x79, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32,
+0x25, 0x31, 0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, 0xbc1, 0xbae, 0xbcd, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, 0xc41, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0x20,
+0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x77, 0x65, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32,
+0x25, 0x32, 0x60c, 0x20, 0x25, 0x31, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0xe0, 0x20,
+0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x63, 0x29,
+0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31,
+0x2c, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
+0x61, 0x6b, 0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6b, 0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25,
+0x31, 0x2c, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438,
+0x486, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x443, 0x43e, 0x43d,
+0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20,
+0x1e3f, 0x62, 0x25b, 0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x70, 0x254, 0x70, 0x20, 0x25,
+0x32, 0x25, 0x31, 0x20, 0x62, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25, 0x32
};
static const ushort date_format_data[] = {
@@ -1962,52 +1977,52 @@ static const ushort date_format_data[] = {
0x64, 0x64, 0x20, 0xe97, 0xeb5, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x20, 0x27, 0x67, 0x61, 0x64, 0x61, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d,
0x4d, 0x4d, 0x4d, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x6d, 0x27, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20,
-0x27, 0x64, 0x27, 0x2e, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x64, 0x64, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x74, 0x61, 0x27, 0x2019,
-0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64,
-0x79, 0x79, 0x79, 0x79, 0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
-0x20, 0x62f, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x62f, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64,
-0x2c, 0x20, 0x27, 0x69, 0x6c, 0x73, 0x27, 0x20, 0x64, 0x20, 0x27, 0x64, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x2e,
-0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d,
-0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x430, 0x437, 0x27, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20,
-0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64,
-0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x27,
-0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d,
-0x2f, 0x64, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27,
-0x435, 0x43b, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79,
-0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35, 0xe48, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0xf60, 0xf72, 0xf0b, 0xf5a, 0xf7a,
-0xf66, 0xf0b, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x1363, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d,
-0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79,
-0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79,
-0x79, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
-0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x440, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64,
-0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20,
-0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x646, 0x686, 0x6cc,
-0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64,
-0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64,
-0x27, 0x2e, 0x20, 0x64, 0x27, 0x69, 0x64, 0x27, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x2c,
-0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x5d8, 0x5df, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79,
-0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x64,
-0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x2d, 0x4d,
-0x2d, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20,
-0x27, 0x64, 0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
-0x20, 0x64, 0x20, 0x27, 0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27,
-0x64, 0x65, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64,
-0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x79,
-0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0xe4, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d,
-0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27,
-0x43b, 0x27, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20,
-0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64,
-0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, 0x25b,
-0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79,
-0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x6d, 0x65, 0x74, 0x74, 0x61, 0x73, 0x27,
-0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64,
-0x2e, 0x20, 0x79, 0x79, 0x79, 0x79
+0x27, 0x64, 0x27, 0x2e, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x74, 0x61, 0x27, 0x2019, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x4d, 0x4d, 0x2e, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x43e,
+0x43d, 0x44b, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x27, 0x44b, 0x43d, 0x27, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64,
+0x20, 0x27, 0x433, 0x430, 0x440, 0x430, 0x433, 0x27, 0x64, 0x64, 0x64, 0x64, 0x20, 0x62f, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20,
+0x62f, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x69, 0x6c, 0x73, 0x27, 0x20,
+0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x4d, 0x2e, 0x79, 0x79, 0x2e, 0x64, 0x64,
+0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x64, 0x64,
+0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x430, 0x437,
+0x27, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x2e, 0x20, 0x79, 0x79,
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64,
+0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64,
+0x64, 0x64, 0x20, 0x64, 0x64, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x65, 0x27,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x2f, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c,
+0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x435, 0x43b, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d,
+0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xe17, 0xe35,
+0xe48, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0xf60, 0xf72, 0xf0b, 0xf5a, 0xf7a, 0xf66, 0xf0b, 0x64, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
+0x1363, 0x20, 0x64, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x1218, 0x12d3, 0x120d, 0x1272, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64,
+0x2e, 0x4d, 0x4d, 0x2e, 0x79, 0x79, 0x79, 0x79, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20,
+0x64, 0x64, 0x64, 0x64, 0x79, 0x79, 0x79, 0x79, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x64, 0x64, 0x64,
+0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27,
+0x440, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79,
+0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79,
+0x79, 0x79, 0x79, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x20, 0x64, 0x27, 0x69, 0x64, 0x27, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x5d8,
+0x5df, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d,
+0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79,
+0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d,
+0x4d, 0x20, 0x64, 0x64, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69,
+0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64,
+0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79,
+0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79,
+0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d,
+0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0xe4, 0x27,
+0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x43b, 0x27, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x79, 0x79,
+0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, 0x27,
+0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64,
+0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, 0x25b, 0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d,
+0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27,
+0x6d, 0x65, 0x74, 0x74, 0x61, 0x73, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x64, 0x64, 0x64, 0x64, 0x2c,
+0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79
};
static const ushort time_format_data[] = {
@@ -2018,29 +2033,27 @@ static const ushort time_format_data[] = {
0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0xf46,
0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x20, 0x41,
0x50, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d,
-0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x48, 0x3a, 0x6d,
-0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x20, 0x74, 0x42, 0x20, 0x48, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x48,
-0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x41, 0x50,
-0x68, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d,
-0x6d, 0x3a, 0x73, 0x73, 0x20, 0x5b, 0x74, 0x5d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73,
-0x73, 0x20, 0x74, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x2d, 0x27, 0x61,
-0x27, 0x20, 0x27, 0x68, 0x6f, 0x72, 0x6f, 0x27, 0x20, 0x27, 0x6b, 0x61, 0x6a, 0x27, 0x20, 0x6d, 0x3a, 0x73, 0x73, 0x20,
-0x74, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27,
-0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20,
-0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e,
-0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x68, 0x27, 0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68,
-0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2,
-0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08,
-0x20, 0x74, 0x48, 0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4,
-0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x74, 0x68, 0x3a, 0x6d, 0x6d, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74,
-0x29, 0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20,
-0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d, 0x6d,
-0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73, 0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x48, 0x3a, 0x6d,
-0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20,
-0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x27,
-0x4b, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x74, 0x20,
-0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a,
-0x27, 0x2e
+0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x42, 0x20, 0x48, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x48, 0x48, 0x3a, 0x6d,
+0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x41, 0x50, 0x68, 0x3a, 0x6d,
+0x6d, 0x74, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73,
+0x73, 0x20, 0x5b, 0x74, 0x5d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74,
+0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27,
+0x68, 0x6f, 0x72, 0x6f, 0x27, 0x20, 0x27, 0x6b, 0x61, 0x6a, 0x27, 0x20, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20,
+0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20,
+0x74, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20,
+0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x3a,
+0x73, 0x73, 0x20, 0x27, 0x68, 0x27, 0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x68, 0x3a, 0x6d,
+0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2, 0x20, 0x74, 0x41,
+0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, 0x74, 0x48,
+0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, 0xeb2, 0xe97,
+0xeb5, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20,
+0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73,
+0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d, 0x6d, 0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73,
+0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27,
+0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73,
+0x20, 0x74, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x27, 0x4b, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x20,
+0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x74, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73,
+0x20, 0x41, 0x50, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, 0x2e
};
static const ushort days_data[] = {
@@ -2087,1048 +2100,1047 @@ static const ushort days_data[] = {
0x41, 0x2e, 0x3b, 0x43, 0x2e, 0x3b, 0x15e, 0x2e, 0x3b, 0x62, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x62, 0x61, 0x7a, 0x61, 0x72,
0x20, 0x65, 0x72, 0x74, 0x259, 0x73, 0x69, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x20, 0x61, 0x78, 0x15f,
0x61, 0x6d, 0x131, 0x3b, 0xe7, 0x259, 0x72, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x20, 0x61, 0x78,
-0x15f, 0x61, 0x6d, 0x131, 0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x3b, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x3b, 0x411, 0x2e, 0x3b, 0x411,
-0x2e, 0x415, 0x2e, 0x3b, 0x427, 0x2e, 0x410, 0x2e, 0x3b, 0x427, 0x2e, 0x3b, 0x4b8, 0x2e, 0x410, 0x2e, 0x3b, 0x4b8, 0x2e, 0x3b,
-0x428, 0x2e, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x20, 0x435, 0x440, 0x442, 0x4d9, 0x441,
-0x438, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x447, 0x4d9,
-0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x20, 0x430, 0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x4b9,
-0x4af, 0x43c, 0x4d9, 0x3b, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x69, 0x67, 0x2e, 0x3b, 0x61, 0x6c, 0x2e, 0x3b, 0x61, 0x72,
-0x2e, 0x3b, 0x61, 0x7a, 0x2e, 0x3b, 0x6f, 0x67, 0x2e, 0x3b, 0x6f, 0x72, 0x2e, 0x3b, 0x6c, 0x72, 0x2e, 0x3b, 0x69, 0x67,
-0x61, 0x6e, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x6c, 0x65, 0x68, 0x65, 0x6e, 0x61, 0x3b, 0x61, 0x73, 0x74,
-0x65, 0x61, 0x72, 0x74, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x7a, 0x6b, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x73,
-0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b, 0x6f, 0x73, 0x74, 0x69, 0x72, 0x61, 0x6c, 0x61, 0x3b, 0x6c, 0x61, 0x72, 0x75,
-0x6e, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x4c, 0x3b,
-0x9b0, 0x9ac, 0x9bf, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3,
-0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x3b, 0x9b0, 0x9ac, 0x9bf,
-0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b,
-0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6,
-0x9c1, 0x995, 0x9cd, 0x9b0, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x3b,
-0x9ae, 0x3b, 0x9ac, 0x9c1, 0x3b, 0x9ac, 0x9c3, 0x3b, 0x9b6, 0x9c1, 0x3b, 0x9b6, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf62,
-0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0x3b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a,
-0xf53, 0xf0b, 0x3b, 0xf49, 0xf72, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60,
-0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b,
-0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66,
-0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b,
-0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf62, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62,
-0x3b, 0xf66, 0xf44, 0xfb6, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0xf49, 0xf72, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e,
-0x3b, 0x4d, 0x65, 0x75, 0x2e, 0x3b, 0x4d, 0x65, 0x72, 0x2e, 0x3b, 0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x2e,
-0x3b, 0x53, 0x61, 0x64, 0x2e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x7a, 0x68,
-0x3b, 0x4d, 0x65, 0x72, 0x63, 0x2bc, 0x68, 0x65, 0x72, 0x3b, 0x59, 0x61, 0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x65,
-0x72, 0x3b, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x3b, 0x4c, 0x3b, 0x4d, 0x7a, 0x3b, 0x4d, 0x63, 0x3b,
-0x59, 0x3b, 0x47, 0x3b, 0x53, 0x61, 0x3b, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447,
-0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434,
-0x435, 0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x44f, 0x434, 0x430, 0x3b,
-0x447, 0x435, 0x442, 0x432, 0x44a, 0x440, 0x442, 0x44a, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x44a, 0x43a, 0x3b, 0x441, 0x44a, 0x431, 0x43e,
-0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x432, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x1010, 0x1014, 0x1004,
-0x103a, 0x1039, 0x1002, 0x1014, 0x103d, 0x1031, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x101c, 0x102c, 0x3b, 0x1021, 0x1004, 0x103a, 0x1039, 0x1002,
-0x102b, 0x3b, 0x1017, 0x102f, 0x1012, 0x1039, 0x1013, 0x101f, 0x1030, 0x1038, 0x3b, 0x1000, 0x103c, 0x102c, 0x101e, 0x1015, 0x1010, 0x1031, 0x1038, 0x3b,
-0x101e, 0x1031, 0x102c, 0x1000, 0x103c, 0x102c, 0x3b, 0x1005, 0x1014, 0x1031, 0x3b, 0x1010, 0x3b, 0x1010, 0x3b, 0x1021, 0x3b, 0x1017, 0x3b, 0x1000,
-0x3b, 0x101e, 0x3b, 0x1005, 0x3b, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x430, 0x45e, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x446, 0x3b,
-0x43f, 0x442, 0x3b, 0x441, 0x431, 0x3b, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x44f, 0x3b, 0x43f, 0x430, 0x43d, 0x44f, 0x434, 0x437,
-0x435, 0x43b, 0x430, 0x43a, 0x3b, 0x430, 0x45e, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x430, 0x434, 0x430, 0x3b,
-0x447, 0x430, 0x446, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x456, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442,
-0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7,
-0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b,
-0x1796, 0x17d2, 0x179a, 0x17a0, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7,
-0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b,
-0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a,
-0x17cd, 0x3b, 0x17a2, 0x3b, 0x1785, 0x3b, 0x17a2, 0x3b, 0x1796, 0x3b, 0x1796, 0x3b, 0x179f, 0x3b, 0x179f, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7,
-0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x17d0, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792,
-0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5,
-0x179a, 0x17cd, 0x3b, 0x64, 0x67, 0x2e, 0x3b, 0x64, 0x6c, 0x2e, 0x3b, 0x64, 0x74, 0x2e, 0x3b, 0x64, 0x63, 0x2e, 0x3b, 0x64,
-0x6a, 0x2e, 0x3b, 0x64, 0x76, 0x2e, 0x3b, 0x64, 0x73, 0x2e, 0x3b, 0x64, 0x69, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x65, 0x3b,
-0x64, 0x69, 0x6c, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x65,
-0x63, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6a, 0x6f, 0x75, 0x73, 0x3b, 0x64, 0x69, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65,
-0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, 0x61, 0x62, 0x74, 0x65, 0x3b, 0x64, 0x67, 0x3b, 0x64, 0x6c, 0x3b, 0x64, 0x74, 0x3b,
-0x64, 0x63, 0x3b, 0x64, 0x6a, 0x3b, 0x64, 0x76, 0x3b, 0x64, 0x73, 0x3b, 0x5468, 0x65e5, 0x3b, 0x5468, 0x4e00, 0x3b, 0x5468, 0x4e8c,
-0x3b, 0x5468, 0x4e09, 0x3b, 0x5468, 0x56db, 0x3b, 0x5468, 0x4e94, 0x3b, 0x5468, 0x516d, 0x3b, 0x661f, 0x671f, 0x65e5, 0x3b, 0x661f, 0x671f, 0x4e00,
-0x3b, 0x661f, 0x671f, 0x4e8c, 0x3b, 0x661f, 0x671f, 0x4e09, 0x3b, 0x661f, 0x671f, 0x56db, 0x3b, 0x661f, 0x671f, 0x4e94, 0x3b, 0x661f, 0x671f, 0x516d,
-0x3b, 0x65e5, 0x3b, 0x4e00, 0x3b, 0x4e8c, 0x3b, 0x4e09, 0x3b, 0x56db, 0x3b, 0x4e94, 0x3b, 0x516d, 0x3b, 0x9031, 0x65e5, 0x3b, 0x9031, 0x4e00,
-0x3b, 0x9031, 0x4e8c, 0x3b, 0x9031, 0x4e09, 0x3b, 0x9031, 0x56db, 0x3b, 0x9031, 0x4e94, 0x3b, 0x9031, 0x516d, 0x3b, 0x6e, 0x65, 0x64, 0x3b,
-0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x69, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b,
-0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x6a, 0x65,
-0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b,
-0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74,
-0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x4e, 0x3b, 0x50, 0x3b,
-0x55, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0xfa, 0x74, 0x3b, 0x73,
-0x74, 0x3b, 0x10d, 0x74, 0x3b, 0x70, 0xe1, 0x3b, 0x73, 0x6f, 0x3b, 0x6e, 0x65, 0x64, 0x11b, 0x6c, 0x65, 0x3b, 0x70, 0x6f,
-0x6e, 0x64, 0x11b, 0x6c, 0xed, 0x3b, 0xfa, 0x74, 0x65, 0x72, 0xfd, 0x3b, 0x73, 0x74, 0x159, 0x65, 0x64, 0x61, 0x3b, 0x10d,
-0x74, 0x76, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0xe1, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b,
-0x4e, 0x3b, 0x50, 0x3b, 0xda, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0x61,
-0x6e, 0x3b, 0x74, 0x69, 0x72, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf8,
-0x72, 0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x72, 0x73,
-0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66,
-0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf8, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4f,
-0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x6e, 0x2e, 0x3b, 0x74, 0x69, 0x72,
-0x2e, 0x3b, 0x6f, 0x6e, 0x73, 0x2e, 0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x66, 0x72, 0x65, 0x2e, 0x3b, 0x6c, 0xf8, 0x72,
-0x2e, 0x3b, 0x7a, 0x6f, 0x3b, 0x6d, 0x61, 0x3b, 0x64, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x64, 0x6f, 0x3b, 0x76, 0x72, 0x3b,
-0x7a, 0x61, 0x3b, 0x7a, 0x6f, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x69,
-0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x77, 0x6f, 0x65, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x6f, 0x6e, 0x64, 0x65,
-0x72, 0x64, 0x61, 0x67, 0x3b, 0x76, 0x72, 0x69, 0x6a, 0x64, 0x61, 0x67, 0x3b, 0x7a, 0x61, 0x74, 0x65, 0x72, 0x64, 0x61,
-0x67, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56, 0x3b, 0x5a, 0x3b, 0x53, 0x75, 0x2e, 0x3b,
-0x4d, 0x2e, 0x3b, 0x54, 0x75, 0x2e, 0x3b, 0x57, 0x2e, 0x3b, 0x54, 0x68, 0x2e, 0x3b, 0x46, 0x2e, 0x3b, 0x53, 0x61, 0x2e,
-0x3b, 0x53, 0x75, 0x6e, 0x2e, 0x3b, 0x4d, 0x6f, 0x6e, 0x2e, 0x3b, 0x54, 0x75, 0x65, 0x2e, 0x3b, 0x57, 0x65, 0x64, 0x2e,
-0x3b, 0x54, 0x68, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x69, 0x2e, 0x3b, 0x53, 0x61, 0x74, 0x2e, 0x3b, 0x64, 0x69, 0x3b, 0x6c,
-0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x135, 0x61, 0x3b, 0x76, 0x65, 0x3b, 0x73, 0x61, 0x3b, 0x64, 0x69, 0x6d,
-0x61, 0x6e, 0x109, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x6f, 0x3b, 0x6d, 0x65, 0x72,
-0x6b, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x135, 0x61, 0x16d, 0x64, 0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x6f,
-0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x134, 0x3b, 0x56, 0x3b,
-0x53, 0x3b, 0x50, 0x3b, 0x45, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x4c, 0x3b, 0x70, 0xfc, 0x68, 0x61,
-0x70, 0xe4, 0x65, 0x76, 0x3b, 0x65, 0x73, 0x6d, 0x61, 0x73, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x74, 0x65, 0x69, 0x73, 0x69,
-0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6b, 0x6f, 0x6c, 0x6d, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6e, 0x65, 0x6c, 0x6a, 0x61,
-0x70, 0xe4, 0x65, 0x76, 0x3b, 0x72, 0x65, 0x65, 0x64, 0x65, 0x3b, 0x6c, 0x61, 0x75, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x73,
-0x75, 0x6e, 0x3b, 0x6d, 0xe1, 0x6e, 0x3b, 0x74, 0xfd, 0x73, 0x3b, 0x6d, 0x69, 0x6b, 0x3b, 0x68, 0xf3, 0x73, 0x3b, 0x66,
-0x72, 0xed, 0x3b, 0x6c, 0x65, 0x79, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1,
-0x6e, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x74, 0xfd, 0x73, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0x6b,
-0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x68, 0xf3, 0x73, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0x72, 0xed, 0x67,
-0x67, 0x6a, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x65, 0x79, 0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72,
-0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x73, 0x75, 0x6e, 0x2e, 0x3b,
-0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0x74, 0xfd, 0x73, 0x2e, 0x3b, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x68, 0xf3, 0x73, 0x2e, 0x3b,
-0x66, 0x72, 0xed, 0x2e, 0x3b, 0x6c, 0x65, 0x79, 0x2e, 0x3b, 0x73, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x74, 0x69, 0x3b, 0x6b,
-0x65, 0x3b, 0x74, 0x6f, 0x3b, 0x70, 0x65, 0x3b, 0x6c, 0x61, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69,
-0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x6b,
-0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x70,
-0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6c, 0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x53, 0x3b,
-0x4d, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61,
-0x69, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x74, 0x69, 0x69, 0x73,
-0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x6e, 0x61, 0x3b,
-0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-0x61, 0x3b, 0x6c, 0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x64, 0x69, 0x6d, 0x2e, 0x3b, 0x6c, 0x75,
-0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, 0x3b, 0x6a, 0x65, 0x75, 0x2e, 0x3b, 0x76, 0x65,
-0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x6d, 0x2e, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x3b, 0x6c, 0x75, 0x6e,
-0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x6a, 0x65,
-0x75, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x65, 0x64, 0x69, 0x3b,
-0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x73, 0x69, 0x3b, 0x6d, 0x6f, 0x3b,
-0x74, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x74, 0x6f, 0x3b, 0x66, 0x72, 0x3b, 0x73, 0x6f, 0x3b, 0x73, 0x6e, 0x65, 0x69, 0x6e,
-0x3b, 0x6d, 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x77, 0x6f, 0x61,
-0x6e, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x66, 0x72, 0x65,
-0x65, 0x64, 0x3b, 0x73, 0x6e, 0x65, 0x6f, 0x6e, 0x3b, 0x44, 0x69, 0x44, 0x3b, 0x44, 0x69, 0x4c, 0x3b, 0x44, 0x69, 0x4d,
-0x3b, 0x44, 0x69, 0x43, 0x3b, 0x44, 0x69, 0x61, 0x3b, 0x44, 0x69, 0x68, 0x3b, 0x44, 0x69, 0x53, 0x3b, 0x44, 0x69, 0x44,
-0xf2, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x4c, 0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x4d,
-0xe0, 0x69, 0x72, 0x74, 0x3b, 0x44, 0x69, 0x43, 0x69, 0x61, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x61, 0x72, 0x44,
-0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x44, 0x69, 0x53, 0x61, 0x74, 0x68,
-0x61, 0x69, 0x72, 0x6e, 0x65, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x53, 0x3b,
-0x44, 0x6f, 0x6d, 0x2e, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x4d, 0xe9, 0x72, 0x2e, 0x3b,
-0x58, 0x6f, 0x76, 0x2e, 0x3b, 0x56, 0x65, 0x6e, 0x2e, 0x3b, 0x53, 0xe1, 0x62, 0x2e, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e,
-0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0xe9, 0x72, 0x63, 0x6f,
-0x72, 0x65, 0x73, 0x3b, 0x58, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62,
-0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x6f,
-0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0xe9, 0x72, 0x2e, 0x3b, 0x78, 0x6f,
-0x76, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f,
-0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65,
-0x73, 0x3b, 0x78, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64,
-0x6f, 0x3b, 0x64, 0x2e, 0x3b, 0x6c, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x76, 0x2e, 0x3b,
-0x73, 0x2e, 0x3b, 0x10d9, 0x10d5, 0x10d8, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x3b, 0x10ee,
-0x10e3, 0x10d7, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x3b, 0x10d9, 0x10d5, 0x10d8, 0x10e0, 0x10d0, 0x3b, 0x10dd, 0x10e0, 0x10e8,
-0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x10e8,
-0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x10d0,
-0x10e1, 0x10d9, 0x10d4, 0x10d5, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10d9, 0x3b, 0x10dd, 0x3b, 0x10e1, 0x3b, 0x10dd,
-0x3b, 0x10ee, 0x3b, 0x10de, 0x3b, 0x10e8, 0x3b, 0x53, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b, 0x44, 0x69, 0x3b, 0x4d, 0x69, 0x3b, 0x44,
-0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x6f, 0x6e, 0x74,
-0x61, 0x67, 0x3b, 0x44, 0x69, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68,
-0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x74, 0x61, 0x67, 0x3b,
-0x53, 0x61, 0x6d, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x46, 0x3b,
-0x53, 0x3b, 0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x6f,
-0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x39a, 0x3c5, 0x3c1, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3b, 0x3a4, 0x3c1,
-0x3af, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b, 0x39a, 0x3c5,
-0x3c1, 0x3b9, 0x3b1, 0x3ba, 0x3ae, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3c4, 0x3ad, 0x3c1, 0x3b1, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3c4, 0x3b7, 0x3b,
-0x3a4, 0x3b5, 0x3c4, 0x3ac, 0x3c1, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3c0, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b1, 0x3c3,
-0x3ba, 0x3b5, 0x3c5, 0x3ae, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b2, 0x3b1, 0x3c4, 0x3bf, 0x3b, 0x39a, 0x3b, 0x394, 0x3b, 0x3a4, 0x3b, 0x3a4,
-0x3b, 0x3a0, 0x3b, 0x3a0, 0x3b, 0x3a3, 0x3b, 0x73, 0x61, 0x70, 0x3b, 0x61, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x70,
-0x69, 0x6e, 0x3b, 0x73, 0x69, 0x73, 0x3b, 0x74, 0x61, 0x6c, 0x3b, 0x61, 0x72, 0x66, 0x3b, 0x73, 0x61, 0x70, 0x61, 0x61,
-0x74, 0x3b, 0x61, 0x74, 0x61, 0x61, 0x73, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x6d, 0x61, 0x72,
-0x6c, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x73, 0x75, 0x6e, 0x6e,
-0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x73, 0x69, 0x73, 0x61, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65,
-0x71, 0x3b, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x61, 0x72,
-0x66, 0x69, 0x6e, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x50,
-0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0xab0, 0xab5, 0xabf, 0x3b, 0xab8, 0xacb, 0xaae, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0x3b,
-0xaac, 0xac1, 0xaa7, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0x3b, 0xab0,
-0xab5, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab8, 0xacb, 0xaae, 0xab5, 0xabe, 0xab0, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0xab5, 0xabe, 0xab0,
-0x3b, 0xaac, 0xac1, 0xaa7, 0xab5, 0xabe, 0xab0, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd,
-0xab0, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab0, 0x3b, 0xab8, 0xacb, 0x3b, 0xaae, 0xa82, 0x3b,
-0xaac, 0xac1, 0x3b, 0xa97, 0xac1, 0x3b, 0xab6, 0xac1, 0x3b, 0xab6, 0x3b, 0x4c, 0x61, 0x68, 0x3b, 0x4c, 0x69, 0x74, 0x3b, 0x54,
-0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x72, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x3b, 0x4c,
-0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x4c, 0x69, 0x74, 0x69, 0x6e, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61,
-0x3b, 0x4c, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x6d,
-0x61, 0x2bc, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x41,
-0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d9,
-0x5d5, 0x5dd, 0x20, 0x5d2, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d3, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d4, 0x5f3, 0x3b,
-0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d0, 0x5e9, 0x5d5, 0x5df,
-0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5dc, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d7, 0x5de, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0x5d0, 0x5f3, 0x3b, 0x5d1,
-0x5f3, 0x3b, 0x5d2, 0x5f3, 0x3b, 0x5d3, 0x5f3, 0x3b, 0x5d4, 0x5f3, 0x3b, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5f3, 0x3b, 0x930, 0x935, 0x93f,
-0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936,
-0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935,
-0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941,
-0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e,
-0x930, 0x3b, 0x930, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936,
-0x3b, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x65, 0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x6f, 0x3b,
-0x76, 0x61, 0x73, 0xe1, 0x72, 0x6e, 0x61, 0x70, 0x3b, 0x68, 0xe9, 0x74, 0x66, 0x151, 0x3b, 0x6b, 0x65, 0x64, 0x64, 0x3b,
-0x73, 0x7a, 0x65, 0x72, 0x64, 0x61, 0x3b, 0x63, 0x73, 0xfc, 0x74, 0xf6, 0x72, 0x74, 0xf6, 0x6b, 0x3b, 0x70, 0xe9, 0x6e,
-0x74, 0x65, 0x6b, 0x3b, 0x73, 0x7a, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x3b, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a,
-0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x3b, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0xfe,
-0x72, 0x69, 0x2e, 0x3b, 0x6d, 0x69, 0xf0, 0x2e, 0x3b, 0x66, 0x69, 0x6d, 0x2e, 0x3b, 0x66, 0xf6, 0x73, 0x2e, 0x3b, 0x6c,
-0x61, 0x75, 0x2e, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x75, 0x64,
-0x61, 0x67, 0x75, 0x72, 0x3b, 0xfe, 0x72, 0x69, 0xf0, 0x6a, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0xf0,
-0x76, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0x69, 0x6d, 0x6d, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75,
-0x72, 0x3b, 0x66, 0xf6, 0x73, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x61, 0x75, 0x67, 0x61, 0x72, 0x64,
-0x61, 0x67, 0x75, 0x72, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0xde, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x4d,
-0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a,
-0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b,
-0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75,
-0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b,
-0x4a, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b,
-0x6a, 0x6f, 0x76, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61,
-0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63,
-0x75, 0x72, 0x69, 0x64, 0x69, 0x3b, 0x6a, 0x6f, 0x76, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e, 0x65, 0x72, 0x64, 0x69,
-0x3b, 0x73, 0x61, 0x62, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x76,
-0x3b, 0x73, 0x3b, 0x44, 0x6f, 0x6d, 0x68, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x3b, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x43,
-0xe9, 0x61, 0x64, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x3b, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x68, 0x3b,
-0x44, 0xe9, 0x20, 0x44, 0x6f, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x67, 0x68, 0x3b, 0x44, 0xe9, 0x20, 0x4c, 0x75, 0x61, 0x69,
-0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x44, 0xe9, 0x20, 0x43, 0xe9, 0x61, 0x64, 0x61, 0x6f,
-0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x68, 0x41, 0x6f, 0x69,
-0x6e, 0x65, 0x3b, 0x44, 0xe9, 0x20, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d,
-0x3b, 0x43, 0x3b, 0x44, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72,
-0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x67, 0x69, 0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d,
-0x65, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0xec, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0xec,
-0x3b, 0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec, 0x3b, 0x67, 0x69, 0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x76,
-0x65, 0x6e, 0x65, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b,
-0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x65e5, 0x3b, 0x6708, 0x3b, 0x706b, 0x3b, 0x6c34, 0x3b, 0x6728, 0x3b, 0x91d1, 0x3b,
-0x571f, 0x3b, 0x65e5, 0x66dc, 0x65e5, 0x3b, 0x6708, 0x66dc, 0x65e5, 0x3b, 0x706b, 0x66dc, 0x65e5, 0x3b, 0x6c34, 0x66dc, 0x65e5, 0x3b, 0x6728, 0x66dc,
-0x65e5, 0x3b, 0x91d1, 0x66dc, 0x65e5, 0x3b, 0x571f, 0x66dc, 0x65e5, 0x3b, 0x41, 0x68, 0x64, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65,
-0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x41, 0x68,
-0x61, 0x64, 0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75,
-0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x41,
-0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0x3b, 0xcb8, 0xccb,
-0xcae, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0x3b, 0xcac, 0xcc1, 0xca7, 0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd,
-0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb8, 0xccb, 0xcae, 0xcb5, 0xcbe, 0xcb0,
-0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcac, 0xcc1, 0xca7, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1,
-0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0xcb5, 0xcbe, 0xcb0, 0x3b,
-0xcad, 0xcbe, 0x3b, 0xcb8, 0xccb, 0x3b, 0xcae, 0xc82, 0x3b, 0xcac, 0xcc1, 0x3b, 0xc97, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0x3b, 0xcb6, 0x3b,
-0x622, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645,
-0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c,
-0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x3b, 0x627, 0x64e, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654,
-0x646, 0x62f, 0x631, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648,
-0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627,
-0x631, 0x3b, 0x627, 0x3b, 0x698, 0x3b, 0x628, 0x3b, 0x628, 0x3b, 0x628, 0x3b, 0x62c, 0x3b, 0x628, 0x3b, 0x436, 0x441, 0x3b, 0x434,
-0x441, 0x3b, 0x441, 0x441, 0x3b, 0x441, 0x440, 0x3b, 0x431, 0x441, 0x3b, 0x436, 0x43c, 0x3b, 0x441, 0x431, 0x3b, 0x436, 0x435, 0x43a,
-0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x434, 0x4af, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441, 0x435, 0x439, 0x441, 0x435,
-0x43d, 0x431, 0x456, 0x3b, 0x441, 0x4d9, 0x440, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x431, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431,
-0x456, 0x3b, 0x436, 0x4b1, 0x43c, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x421,
-0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x421, 0x3b, 0x63, 0x79, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62,
-0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64,
-0x2e, 0x3b, 0x4b, 0x75, 0x20, 0x63, 0x79, 0x75, 0x6d, 0x77, 0x65, 0x72, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6d,
-0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x77,
-0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b,
-0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61,
-0x6e, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x436, 0x435, 0x43a, 0x2e, 0x3b, 0x434, 0x4af, 0x439, 0x2e, 0x3b, 0x448, 0x435, 0x439, 0x448,
-0x2e, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x2e, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438,
-0x448, 0x43c, 0x2e, 0x3b, 0x436, 0x435, 0x43a, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x434, 0x4af, 0x439, 0x448, 0x4e9, 0x43c, 0x431,
-0x4af, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b,
-0x431, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x435, 0x43c, 0x431, 0x438,
-0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x428, 0x3b, 0x428, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x418, 0x3b, 0xc77c, 0x3b, 0xc6d4, 0x3b, 0xd654,
-0x3b, 0xc218, 0x3b, 0xbaa9, 0x3b, 0xae08, 0x3b, 0xd1a0, 0x3b, 0xc77c, 0xc694, 0xc77c, 0x3b, 0xc6d4, 0xc694, 0xc77c, 0x3b, 0xd654, 0xc694, 0xc77c,
-0x3b, 0xc218, 0xc694, 0xc77c, 0x3b, 0xbaa9, 0xc694, 0xc77c, 0x3b, 0xae08, 0xc694, 0xc77c, 0x3b, 0xd1a0, 0xc694, 0xc77c, 0x3b, 0x79, 0x15f, 0x3b,
-0x64, 0x15f, 0x3b, 0x73, 0x15f, 0x3b, 0xe7, 0x15f, 0x3b, 0x70, 0x15f, 0x3b, 0xee, 0x6e, 0x3b, 0x15f, 0x3b, 0x79, 0x65, 0x6b,
-0x15f, 0x65, 0x6d, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6d, 0x3b, 0x73, 0xea, 0x15f, 0x65, 0x6d, 0x3b, 0xe7, 0x61, 0x72, 0x15f,
-0x65, 0x6d, 0x3b, 0x70, 0xea, 0x6e, 0x63, 0x15f, 0x65, 0x6d, 0x3b, 0xee, 0x6e, 0x3b, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x59,
-0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0xce, 0x3b, 0x15e, 0x3b, 0x63, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65,
-0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75,
-0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x2019, 0x69, 0x6e, 0x64, 0x77, 0x69, 0x3b, 0x4b, 0x75,
-0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69,
-0x72, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77,
-0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b,
-0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x75, 0x3b, 0xead, 0xeb2, 0xe97, 0xeb4,
-0xe94, 0x3b, 0xe88, 0xeb1, 0xe99, 0x3b, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xe9e, 0xeb0, 0xeab,
-0xeb1, 0xe94, 0x3b, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xec0, 0xeaa, 0xebb, 0xeb2, 0x3b, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94,
-0x3b, 0xea7, 0xeb1, 0xe99, 0xe88, 0xeb1, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xea7, 0xeb1,
-0xe99, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xeaa, 0xeb8, 0xe81,
-0x3b, 0xea7, 0xeb1, 0xe99, 0xec0, 0xeaa, 0xebb, 0xeb2, 0x3b, 0xead, 0xeb2, 0x3b, 0xe88, 0x3b, 0xead, 0x3b, 0xe9e, 0x3b, 0xe9e, 0xeab,
-0x3b, 0xeaa, 0xeb8, 0x3b, 0xeaa, 0x3b, 0x53, 0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x2e, 0x3b,
-0x4f, 0x74, 0x72, 0x64, 0x2e, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64,
-0x2e, 0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x2e, 0x3b, 0x53, 0x76, 0x113,
-0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x4f, 0x74, 0x72,
-0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x43, 0x65, 0x74, 0x75,
-0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x53,
-0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x43, 0x3b, 0x50,
-0x3b, 0x53, 0x3b, 0x73, 0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x64, 0x2e, 0x3b, 0x6f, 0x74, 0x72,
-0x64, 0x2e, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x70,
-0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64, 0x2e, 0x3b, 0x73, 0x76, 0x113, 0x74, 0x64, 0x69,
-0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x69, 0x65,
-0x6e, 0x61, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64,
-0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74,
-0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x65, 0x79, 0x65, 0x3b, 0x79, 0x62, 0x6f, 0x3b, 0x6d, 0x62, 0x6c, 0x3b, 0x6d, 0x73,
-0x74, 0x3b, 0x6d, 0x69, 0x6e, 0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x70, 0x73, 0x3b, 0x65, 0x79, 0x65, 0x6e, 0x67, 0x61,
-0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x6d, 0x6f,
-0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x6d, 0x6f, 0x6b, 0x254,
-0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254,
-0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0xe9, 0x69, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, 0x61, 0x20,
-0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x6d, 0x70, 0x254, 0x301, 0x73, 0x254, 0x3b, 0x65, 0x3b, 0x79, 0x3b, 0x6d, 0x3b,
-0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x70, 0x3b, 0x73, 0x6b, 0x3b, 0x70, 0x72, 0x3b, 0x61, 0x6e, 0x3b, 0x74, 0x72, 0x3b,
-0x6b, 0x74, 0x3b, 0x70, 0x6e, 0x3b, 0x161, 0x74, 0x3b, 0x73, 0x65, 0x6b, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
-0x3b, 0x70, 0x69, 0x72, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x64, 0x69,
-0x65, 0x6e, 0x69, 0x73, 0x3b, 0x74, 0x72, 0x65, 0x10d, 0x69, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x6b, 0x65,
-0x74, 0x76, 0x69, 0x72, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x70, 0x65, 0x6e, 0x6b, 0x74, 0x61, 0x64,
-0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x161, 0x65, 0x161, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x53, 0x3b,
-0x50, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x160, 0x3b, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d,
-0x2e, 0x3b, 0x432, 0x442, 0x43e, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b, 0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442,
-0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435,
-0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447,
-0x435, 0x442, 0x432, 0x440, 0x442, 0x43e, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x43e, 0x43a, 0x3b, 0x441, 0x430, 0x431, 0x43e, 0x442, 0x430,
-0x3b, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d, 0x2e, 0x3b, 0x432, 0x442, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b,
-0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442, 0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x3b,
-0x41, 0x6c, 0x61, 0x74, 0x73, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x3b,
-0x5a, 0x6f, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x79, 0x3b, 0x41, 0x6c, 0x61,
-0x74, 0x73, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x79, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72,
-0x6f, 0x62, 0x69, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x61, 0x6d, 0x69, 0x73, 0x79, 0x3b, 0x5a, 0x6f, 0x6d, 0x61, 0x3b,
-0x41, 0x73, 0x61, 0x62, 0x6f, 0x74, 0x73, 0x79, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x5a,
-0x3b, 0x41, 0x3b, 0x41, 0x68, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b,
-0x68, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69,
-0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x73,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x53, 0x3b,
-0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd7c, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd7e, 0x3b,
-0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd7b, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd02, 0x3b, 0xd35, 0xd46,
-0xd33, 0xd4d, 0xd33, 0xd3f, 0x3b, 0xd36, 0xd28, 0xd3f, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24,
-0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0x200c,
-0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d,
-0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f,
-0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0xd3e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d,
-0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f,
-0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0xd1a, 0x3b,
-0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a,
-0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34,
-0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b,
-0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0x126, 0x61, 0x64, 0x3b, 0x54, 0x6e, 0x65, 0x3b, 0x54, 0x6c, 0x69, 0x3b, 0x45, 0x72, 0x62,
-0x3b, 0x126, 0x61, 0x6d, 0x3b, 0x120, 0x69, 0x6d, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x49, 0x6c, 0x2d, 0x126, 0x61, 0x64, 0x64,
-0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6e, 0x65, 0x6a, 0x6e, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6c, 0x69, 0x65, 0x74, 0x61, 0x3b,
-0x4c, 0x2d, 0x45, 0x72, 0x62, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x6c, 0x2d, 0x126, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x49, 0x6c,
-0x2d, 0x120, 0x69, 0x6d, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x73, 0x2d, 0x53, 0x69, 0x62, 0x74, 0x3b, 0x126, 0x64, 0x3b, 0x54,
-0x6e, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x3b, 0x126, 0x64, 0x3b,
-0x54, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120, 0x6d, 0x3b, 0x53, 0x62, 0x3b, 0x54, 0x61, 0x70,
-0x3b, 0x48, 0x69, 0x6e, 0x3b, 0x54, 0x16b, 0x3b, 0x41, 0x70, 0x61, 0x3b, 0x50, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x72, 0x3b,
-0x48, 0x6f, 0x72, 0x3b, 0x52, 0x101, 0x74, 0x61, 0x70, 0x75, 0x3b, 0x52, 0x101, 0x68, 0x69, 0x6e, 0x61, 0x3b, 0x52, 0x101,
-0x74, 0x16b, 0x3b, 0x52, 0x101, 0x61, 0x70, 0x61, 0x3b, 0x52, 0x101, 0x70, 0x61, 0x72, 0x65, 0x3b, 0x52, 0x101, 0x6d, 0x65,
-0x72, 0x65, 0x3b, 0x52, 0x101, 0x68, 0x6f, 0x72, 0x6f, 0x69, 0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x50,
-0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x3b, 0x92c, 0x941,
-0x927, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f,
-0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x935, 0x93e, 0x930, 0x3b, 0x92c,
-0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935,
-0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x41d, 0x44f, 0x3b, 0x414, 0x430, 0x3b, 0x41c, 0x44f, 0x3b, 0x41b,
-0x445, 0x3b, 0x41f, 0x4af, 0x3b, 0x411, 0x430, 0x3b, 0x411, 0x44f, 0x3b, 0x41d, 0x44f, 0x43c, 0x3b, 0x414, 0x430, 0x432, 0x430, 0x430,
-0x3b, 0x41c, 0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x41b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x41f, 0x4af, 0x440, 0x44d, 0x432,
-0x3b, 0x411, 0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x411, 0x44f, 0x43c, 0x431, 0x430, 0x3b, 0x43d, 0x44f, 0x43c, 0x3b, 0x434, 0x430,
-0x432, 0x430, 0x430, 0x3b, 0x43c, 0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x43b, 0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x43f, 0x4af,
-0x440, 0x44d, 0x432, 0x3b, 0x431, 0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x431, 0x44f, 0x43c, 0x431, 0x430, 0x3b, 0x906, 0x907, 0x924,
-0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x3b,
-0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x906, 0x907, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e,
-0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b,
-0x92c, 0x93f, 0x939, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f,
-0x92c, 0x93e, 0x930, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b,
-0x936, 0x3b, 0xb30, 0xb2c, 0xb3f, 0x3b, 0xb38, 0xb4b, 0xb2e, 0x3b, 0xb2e, 0xb19, 0xb4d, 0xb17, 0xb33, 0x3b, 0xb2c, 0xb41, 0xb27, 0x3b,
-0xb17, 0xb41, 0xb30, 0xb41, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0x3b, 0xb30, 0xb2c, 0xb3f, 0xb2c, 0xb3e,
-0xb30, 0x3b, 0xb38, 0xb4b, 0xb2e, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2e, 0xb19, 0xb4d, 0xb17, 0xb33, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2c, 0xb41,
-0xb27, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0xb2c, 0xb3e,
-0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb30, 0x3b, 0xb38, 0xb4b, 0x3b, 0xb2e, 0x3b, 0xb2c, 0xb41, 0x3b, 0xb17,
-0xb41, 0x3b, 0xb36, 0xb41, 0x3b, 0xb36, 0x3b, 0x64a, 0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x631, 0x6d0,
-0x646, 0x6cd, 0x3b, 0x685, 0x644, 0x631, 0x646, 0x6cd, 0x3b, 0x67e, 0x64a, 0x646, 0x681, 0x646, 0x6cd, 0x3b, 0x62c, 0x645, 0x639, 0x647,
-0x3b, 0x627, 0x648, 0x646, 0x6cd, 0x3b, 0x6cc, 0x6a9, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62f, 0x648, 0x634, 0x646, 0x628, 0x647, 0x3b,
-0x633, 0x647, 0x200c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x686, 0x647, 0x627, 0x631, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x67e, 0x646, 0x62c,
-0x634, 0x646, 0x628, 0x647, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633,
-0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e,
-0x3b, 0x77, 0x74, 0x2e, 0x3b, 0x15b, 0x72, 0x2e, 0x3b, 0x63, 0x7a, 0x77, 0x2e, 0x3b, 0x70, 0x74, 0x2e, 0x3b, 0x73, 0x6f,
-0x62, 0x2e, 0x3b, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x69, 0x65, 0x64, 0x7a,
-0x69, 0x61, 0x142, 0x65, 0x6b, 0x3b, 0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x15b, 0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63,
-0x7a, 0x77, 0x61, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0x69, 0x105, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74,
-0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x15a, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x6e, 0x3b, 0x70, 0x3b,
-0x77, 0x3b, 0x15b, 0x3b, 0x63, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x73, 0x65, 0x67, 0x3b, 0x74, 0x65,
-0x72, 0x3b, 0x71, 0x75, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x3b, 0x73, 0x65, 0x78, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f,
-0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
-0x74, 0x65, 0x72, 0xe7, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66,
-0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65,
-0x78, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x53,
-0x3b, 0x54, 0x3b, 0x51, 0x3b, 0x51, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73,
-0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x3b,
-0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b,
-0xa10, 0xa24, 0x3b, 0xa38, 0xa4b, 0xa2e, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0x3b, 0xa35, 0xa40, 0xa30,
-0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0x3b, 0xa10, 0xa24, 0xa35, 0xa3e,
-0xa30, 0x3b, 0xa38, 0xa4b, 0xa2e, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa71,
-0xa27, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa35, 0xa40, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0xa35, 0xa3e,
-0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa10, 0x3b, 0xa38, 0xa4b, 0x3b, 0xa2e, 0xa70,
-0x3b, 0xa2c, 0xa41, 0xa71, 0x3b, 0xa35, 0xa40, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0x3b, 0xa38, 0xa3c, 0x3b, 0x627, 0x62a, 0x648, 0x627,
-0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x64f, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631,
-0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e,
-0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0xe9, 0x3b, 0x4a, 0x75, 0x65, 0x3b, 0x56, 0x69, 0x65, 0x3b, 0x53, 0x61, 0x62,
-0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65,
-0x73, 0x3b, 0x4d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x4a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x56,
-0x69, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b,
-0x58, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x75, 0x3b, 0x67, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65,
-0x3b, 0x67, 0x69, 0x65, 0x3b, 0x76, 0x65, 0x3b, 0x73, 0x6f, 0x3b, 0x64, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x69, 0x61, 0x3b,
-0x67, 0x6c, 0x69, 0x6e, 0x64, 0x65, 0x73, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x73, 0x65,
-0x6d, 0x6e, 0x61, 0x3b, 0x67, 0x69, 0x65, 0x76, 0x67, 0x69, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x69,
-0x3b, 0x73, 0x6f, 0x6e, 0x64, 0x61, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53,
-0x3b, 0x64, 0x75, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, 0x65, 0x2e,
-0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x2e, 0x3b, 0x73, 0xe2, 0x6d, 0x2e, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e,
-0x69, 0x63, 0x103, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x21b, 0x69, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63,
-0x75, 0x72, 0x69, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x65, 0x72, 0x69, 0x3b, 0x73, 0xe2, 0x6d, 0x62, 0x103,
-0x74, 0x103, 0x3b, 0x44, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x65, 0x3b, 0x4a,
-0x6f, 0x69, 0x3b, 0x56, 0x69, 0x6e, 0x3b, 0x53, 0xe2, 0x6d, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x61, 0x3b, 0x4d, 0x69,
-0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x432, 0x441, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447,
-0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x3b, 0x432, 0x43e, 0x441, 0x43a, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x435, 0x3b,
-0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b,
-0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x433, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x438, 0x446,
-0x430, 0x3b, 0x441, 0x443, 0x431, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x412, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b,
-0x41f, 0x3b, 0x421, 0x3b, 0x42, 0x6b, 0x31, 0x3b, 0x42, 0x6b, 0x32, 0x3b, 0x42, 0x6b, 0x33, 0x3b, 0x42, 0x6b, 0x34, 0x3b,
-0x42, 0x6b, 0x35, 0x3b, 0x4c, 0xe2, 0x70, 0x3b, 0x4c, 0xe2, 0x79, 0x3b, 0x42, 0x69, 0x6b, 0x75, 0x61, 0x2d, 0xf4, 0x6b,
-0x6f, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x70, 0x74,
-0xe2, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x6f,
-0x6b, 0xfc, 0x3b, 0x4c, 0xe2, 0x70, 0xf4, 0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x3b,
-0x53, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b,
-0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b,
-0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e,
-0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f,
-0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b,
-0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x3b,
-0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61,
-0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73,
+0x15f, 0x61, 0x6d, 0x131, 0x3b, 0x63, 0xfc, 0x6d, 0x259, 0x3b, 0x15f, 0x259, 0x6e, 0x62, 0x259, 0x3b, 0x42, 0x2e, 0x3b, 0x42,
+0x2e, 0x65, 0x2e, 0x3b, 0xc7, 0x2e, 0x61, 0x2e, 0x3b, 0xc7, 0x2e, 0x3b, 0x43, 0x2e, 0x61, 0x2e, 0x3b, 0x43, 0x2e, 0x3b,
+0x15e, 0x2e, 0x3b, 0x411, 0x2e, 0x3b, 0x411, 0x2e, 0x415, 0x2e, 0x3b, 0x427, 0x2e, 0x410, 0x2e, 0x3b, 0x427, 0x2e, 0x3b, 0x4b8,
+0x2e, 0x410, 0x2e, 0x3b, 0x4b8, 0x2e, 0x3b, 0x428, 0x2e, 0x3b, 0x431, 0x430, 0x437, 0x430, 0x440, 0x3b, 0x431, 0x430, 0x437, 0x430,
+0x440, 0x20, 0x435, 0x440, 0x442, 0x4d9, 0x441, 0x438, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x20, 0x430, 0x445,
+0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x20, 0x430,
+0x445, 0x448, 0x430, 0x43c, 0x44b, 0x3b, 0x4b9, 0x4af, 0x43c, 0x4d9, 0x3b, 0x448, 0x4d9, 0x43d, 0x431, 0x4d9, 0x3b, 0x69, 0x67, 0x2e,
+0x3b, 0x61, 0x6c, 0x2e, 0x3b, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x7a, 0x2e, 0x3b, 0x6f, 0x67, 0x2e, 0x3b, 0x6f, 0x72, 0x2e,
+0x3b, 0x6c, 0x72, 0x2e, 0x3b, 0x69, 0x67, 0x61, 0x6e, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x6c, 0x65, 0x68,
+0x65, 0x6e, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x72, 0x74, 0x65, 0x61, 0x3b, 0x61, 0x73, 0x74, 0x65, 0x61, 0x7a,
+0x6b, 0x65, 0x6e, 0x61, 0x3b, 0x6f, 0x73, 0x74, 0x65, 0x67, 0x75, 0x6e, 0x61, 0x3b, 0x6f, 0x73, 0x74, 0x69, 0x72, 0x61,
+0x6c, 0x61, 0x3b, 0x6c, 0x61, 0x72, 0x75, 0x6e, 0x62, 0x61, 0x74, 0x61, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x4c, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x3b, 0x9ae, 0x999, 0x9cd, 0x997, 0x9b2,
+0x3b, 0x9ac, 0x9c1, 0x9a7, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa, 0x9a4, 0x9bf, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x3b,
+0x9b6, 0x9a8, 0x9bf, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x9ae, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ae, 0x999,
+0x9cd, 0x997, 0x9b2, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c1, 0x9a7, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9ac, 0x9c3, 0x9b9, 0x9b8, 0x9cd, 0x9aa,
+0x9a4, 0x9bf, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9c1, 0x995, 0x9cd, 0x9b0, 0x9ac, 0x9be, 0x9b0, 0x3b, 0x9b6, 0x9a8, 0x9bf, 0x9ac, 0x9be,
+0x9b0, 0x3b, 0x9b0, 0x3b, 0x9b8, 0x9cb, 0x3b, 0x9ae, 0x3b, 0x9ac, 0x9c1, 0x3b, 0x9ac, 0x9c3, 0x3b, 0x9b6, 0x9c1, 0x3b, 0x9b6, 0x3b,
+0xf5f, 0xfb3, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0x3b, 0xf66,
+0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0x3b, 0xf49, 0xf72, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3,
+0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60,
+0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b,
+0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b,
+0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf62, 0x3b,
+0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xfb6, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0xf49, 0xf72, 0x3b,
+0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x65, 0x75, 0x2e, 0x3b, 0x4d, 0x65, 0x72, 0x2e, 0x3b, 0x59, 0x61,
+0x6f, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x64, 0x2e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e,
+0x3b, 0x4d, 0x65, 0x75, 0x72, 0x7a, 0x68, 0x3b, 0x4d, 0x65, 0x72, 0x63, 0x2bc, 0x68, 0x65, 0x72, 0x3b, 0x59, 0x61, 0x6f,
+0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x3b, 0x4c,
+0x3b, 0x4d, 0x7a, 0x3b, 0x4d, 0x63, 0x3b, 0x59, 0x3b, 0x47, 0x3b, 0x53, 0x61, 0x3b, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b,
+0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b,
+0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a,
+0x3b, 0x441, 0x440, 0x44f, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x44a, 0x440, 0x442, 0x44a, 0x43a, 0x3b, 0x43f, 0x435, 0x442,
+0x44a, 0x43a, 0x3b, 0x441, 0x44a, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x432, 0x3b, 0x441, 0x3b, 0x447, 0x3b,
+0x43f, 0x3b, 0x441, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x1002, 0x1014, 0x103d, 0x1031, 0x3b, 0x1010, 0x1014, 0x1004, 0x103a, 0x1039, 0x101c,
+0x102c, 0x3b, 0x1021, 0x1004, 0x103a, 0x1039, 0x1002, 0x102b, 0x3b, 0x1017, 0x102f, 0x1012, 0x1039, 0x1013, 0x101f, 0x1030, 0x1038, 0x3b, 0x1000, 0x103c,
+0x102c, 0x101e, 0x1015, 0x1010, 0x1031, 0x1038, 0x3b, 0x101e, 0x1031, 0x102c, 0x1000, 0x103c, 0x102c, 0x3b, 0x1005, 0x1014, 0x1031, 0x3b, 0x1010, 0x3b,
+0x1010, 0x3b, 0x1021, 0x3b, 0x1017, 0x3b, 0x1000, 0x3b, 0x101e, 0x3b, 0x1005, 0x3b, 0x43d, 0x434, 0x3b, 0x43f, 0x43d, 0x3b, 0x430, 0x45e,
+0x3b, 0x441, 0x440, 0x3b, 0x447, 0x446, 0x3b, 0x43f, 0x442, 0x3b, 0x441, 0x431, 0x3b, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x44f,
+0x3b, 0x43f, 0x430, 0x43d, 0x44f, 0x434, 0x437, 0x435, 0x43b, 0x430, 0x43a, 0x3b, 0x430, 0x45e, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b,
+0x441, 0x435, 0x440, 0x430, 0x434, 0x430, 0x3b, 0x447, 0x430, 0x446, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x456, 0x446,
+0x430, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f,
+0x3b, 0x441, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782,
+0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x3b, 0x179f, 0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5,
+0x179a, 0x17cd, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2, 0x1782,
+0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f, 0x17bb,
+0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x3b, 0x17a2, 0x3b, 0x1785, 0x3b, 0x17a2, 0x3b, 0x1796, 0x3b, 0x1796, 0x3b, 0x179f,
+0x3b, 0x179f, 0x3b, 0x17a2, 0x17b6, 0x1791, 0x17b7, 0x178f, 0x17d2, 0x1799, 0x3b, 0x1785, 0x17d0, 0x1793, 0x17d2, 0x1791, 0x3b, 0x17a2, 0x1784, 0x17d2,
+0x1782, 0x17b6, 0x179a, 0x3b, 0x1796, 0x17bb, 0x1792, 0x3b, 0x1796, 0x17d2, 0x179a, 0x17a0, 0x179f, 0x17d2, 0x1794, 0x178f, 0x17b7, 0x17cd, 0x3b, 0x179f,
+0x17bb, 0x1780, 0x17d2, 0x179a, 0x3b, 0x179f, 0x17c5, 0x179a, 0x17cd, 0x3b, 0x64, 0x67, 0x2e, 0x3b, 0x64, 0x6c, 0x2e, 0x3b, 0x64, 0x74,
+0x2e, 0x3b, 0x64, 0x63, 0x2e, 0x3b, 0x64, 0x6a, 0x2e, 0x3b, 0x64, 0x76, 0x2e, 0x3b, 0x64, 0x73, 0x2e, 0x3b, 0x64, 0x69,
+0x75, 0x6d, 0x65, 0x6e, 0x67, 0x65, 0x3b, 0x64, 0x69, 0x6c, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x72,
+0x74, 0x73, 0x3b, 0x64, 0x69, 0x6d, 0x65, 0x63, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6a, 0x6f, 0x75, 0x73, 0x3b, 0x64,
+0x69, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x73, 0x73, 0x61, 0x62, 0x74, 0x65, 0x3b, 0x64, 0x67,
+0x3b, 0x64, 0x6c, 0x3b, 0x64, 0x74, 0x3b, 0x64, 0x63, 0x3b, 0x64, 0x6a, 0x3b, 0x64, 0x76, 0x3b, 0x64, 0x73, 0x3b, 0x5468,
+0x65e5, 0x3b, 0x5468, 0x4e00, 0x3b, 0x5468, 0x4e8c, 0x3b, 0x5468, 0x4e09, 0x3b, 0x5468, 0x56db, 0x3b, 0x5468, 0x4e94, 0x3b, 0x5468, 0x516d, 0x3b,
+0x661f, 0x671f, 0x65e5, 0x3b, 0x661f, 0x671f, 0x4e00, 0x3b, 0x661f, 0x671f, 0x4e8c, 0x3b, 0x661f, 0x671f, 0x4e09, 0x3b, 0x661f, 0x671f, 0x56db, 0x3b,
+0x661f, 0x671f, 0x4e94, 0x3b, 0x661f, 0x671f, 0x516d, 0x3b, 0x65e5, 0x3b, 0x4e00, 0x3b, 0x4e8c, 0x3b, 0x4e09, 0x3b, 0x56db, 0x3b, 0x4e94, 0x3b,
+0x516d, 0x3b, 0x9031, 0x65e5, 0x3b, 0x9031, 0x4e00, 0x3b, 0x9031, 0x4e8c, 0x3b, 0x9031, 0x4e09, 0x3b, 0x9031, 0x56db, 0x3b, 0x9031, 0x4e94, 0x3b,
+0x9031, 0x516d, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x69, 0x3b, 0x10d,
+0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b,
+0x70, 0x6f, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73,
0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61,
-0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x75,
-0x74, 0x2e, 0x3b, 0x73, 0x72, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73, 0x75, 0x62,
-0x2e, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b, 0x10d, 0x65,
-0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f,
-0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64,
-0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62,
-0x6f, 0x74, 0x61, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x435,
-0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e,
-0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435,
-0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443,
-0x431, 0x43e, 0x442, 0x430, 0x3b, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4, 0x440, 0x442,
-0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x3b, 0x425, 0x443, 0x44b, 0x446, 0x430, 0x443, 0x431,
-0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b,
-0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x41c, 0x430,
-0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x425, 0x3b, 0x41a, 0x3b, 0x414, 0x3b,
-0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x3b, 0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, 0x433, 0x3b,
-0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x3b, 0x445, 0x443, 0x44b, 0x446,
-0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, 0x446, 0x446,
-0x4d5, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c,
-0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x53, 0x76, 0x6f,
-0x3b, 0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68, 0x6e, 0x3b, 0x43, 0x68, 0x73,
-0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75, 0x72, 0x6f, 0x3b,
-0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e,
-0x61, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x3b,
-0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648,
-0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633, 0x3b, 0x62c,
-0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648, 0x3b, 0x627, 0x6b1, 0x627, 0x631,
-0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x3b,
-0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf,
-0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0x3b, 0xd89,
-0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf, 0xdaf, 0xdcf,
-0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, 0xdca, 0xdaf,
-0xdcf, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf,
-0x3b, 0xd89, 0x3b, 0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3, 0xdd9, 0x3b,
-0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69, 0x3b, 0x73, 0x6f,
-0x3b, 0x6e, 0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, 0x74, 0x6f,
-0x72, 0x6f, 0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b, 0x3b, 0x70,
-0x69, 0x61, 0x74, 0x6f, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73,
-0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x72,
-0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62,
-0x2e, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x65, 0x6b,
-0x3b, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74, 0x65, 0x6b,
-0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x74, 0x3b,
-0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x53, 0x6c, 0x73, 0x61,
-0x3b, 0x41, 0x72, 0x62, 0x63, 0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63, 0x3b, 0x53, 0x62, 0x74, 0x69, 0x3b,
-0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x61, 0x61, 0x73, 0x61, 0x3b,
-0x41, 0x72, 0x62, 0x61, 0x63, 0x61, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, 0x63, 0x65,
-0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4b, 0x68, 0x3b, 0x4a, 0x3b,
-0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, 0xe9,
-0x2e, 0x3b, 0x6a, 0x75, 0x65, 0x2e, 0x3b, 0x76, 0x69, 0x65, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64, 0x6f, 0x6d,
-0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69,
-0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x72, 0x6e,
-0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
-0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61,
-0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x69,
-0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6, 0x72, 0x3b, 0x73,
-0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x73, 0x64, 0x61, 0x67, 0x3b,
-0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61,
-0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421, 0x448, 0x431,
-0x3b, 0x427, 0x448, 0x431, 0x3b, 0x41f, 0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b, 0x428, 0x43d, 0x431, 0x3b, 0x42f, 0x43a, 0x448,
-0x430, 0x43d, 0x431, 0x435, 0x3b, 0x414, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x435,
-0x3b, 0x427, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b,
-0x4b6, 0x443, 0x43c, 0x44a, 0x430, 0x3b, 0x428, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b,
-0x41f, 0x3b, 0x4b6, 0x3b, 0x428, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xbc6,
-0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, 0xba4, 0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0x2e,
-0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b,
-0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0xbb4,
-0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0x3b, 0xba4, 0xbbf, 0x3b,
-0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x3b, 0x44f, 0x43a, 0x448, 0x2e, 0x3b, 0x434,
-0x4af, 0x448, 0x2e, 0x3b, 0x441, 0x438, 0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x2e, 0x3b,
-0x497, 0x43e, 0x43c, 0x2e, 0x3b, 0x448, 0x438, 0x43c, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x434, 0x4af,
-0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43c,
-0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x435, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x497, 0x43e, 0x43c, 0x433, 0x430, 0x3b,
-0x448, 0x438, 0x43c, 0x431, 0x4d9, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x496, 0x3b, 0x428, 0x3b,
-0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, 0xc30,
-0xc41, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0x3b, 0xc06, 0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b,
-0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, 0xc27,
-0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0xc35,
-0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc06, 0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e, 0x3b, 0xc2c,
-0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, 0xc41, 0x3b, 0xc36, 0x3b, 0xe2d, 0xe32, 0x2e, 0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, 0x3b,
-0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, 0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, 0xe34,
-0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe31, 0xe07,
-0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a, 0xe1a,
-0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, 0xe4c,
-0x3b, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, 0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0x3b, 0xf49, 0xf72, 0xf0b,
-0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7,
-0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b,
-0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, 0xf5f,
-0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b,
-0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b,
-0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66,
-0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, 0xf42,
-0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0x1230, 0x1295, 0x3b, 0x1230, 0x1291, 0x3b,
-0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, 0x1213, 0x1219, 0x3b, 0x12d3, 0x122d, 0x3b, 0x1240, 0x12f3, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b,
-0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b,
-0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, 0x3b,
-0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, 0x3b,
-0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54, 0x6f, 0x6b,
-0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, 0x74,
-0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c, 0x65, 0x6c,
-0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, 0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, 0x69,
-0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x3b, 0x50, 0x61, 0x7a, 0x3b, 0x50,
-0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, 0x43,
-0x6d, 0x74, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x53,
-0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, 0x62,
-0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x50,
-0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f, 0x3b, 0x53,
-0x69, 0x15f, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e, 0x3b, 0x15e, 0x65, 0x6e, 0x3b, 0xdd,
-0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x53, 0x69, 0x15f, 0x65,
-0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x50, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62,
-0x65, 0x3b, 0x41, 0x6e, 0x6e, 0x61, 0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xdd, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7,
-0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, 0x3b, 0xfd, 0x65, 0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b, 0x73, 0x69, 0x15f, 0x3b, 0xe7,
-0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, 0x3b, 0x61, 0x6e, 0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0x3b, 0xfd, 0x65, 0x6b, 0x15f, 0x65,
-0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b,
-0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x61, 0x6e,
-0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b, 0x686, 0x627,
-0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x3b, 0x634, 0x6d5, 0x3b, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62f,
-0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686, 0x627, 0x631, 0x634,
-0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645, 0x6d5, 0x3b, 0x634,
-0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x64a, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, 0x43d,
-0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, 0x442,
-0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, 0x43f,
-0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x41d, 0x3b, 0x41f, 0x3b, 0x412,
-0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645,
-0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b,
-0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x59, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68, 0x3b, 0x53, 0x65, 0x73, 0x68, 0x3b, 0x43,
-0x68, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x3b, 0x79, 0x61, 0x6b,
-0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x68,
-0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x79, 0x73,
-0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x59, 0x3b,
-0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b, 0x633, 0x2e,
-0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, 0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x3b, 0x434, 0x443, 0x448,
-0x3b, 0x441, 0x435, 0x448, 0x3b, 0x447, 0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b, 0x448, 0x430, 0x43d,
-0x3b, 0x44f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x441, 0x435, 0x448,
-0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439, 0x448, 0x430, 0x43d,
-0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b,
-0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, 0x428, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x20, 0x33,
-0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x20, 0x37,
-0x3b, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, 0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b, 0x54, 0x68,
-0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103, 0x6d, 0x3b,
-0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, 0x3b, 0x43, 0x4e, 0x3b, 0x54,
-0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, 0x37, 0x3b, 0x53, 0x75, 0x3b,
-0x4d, 0x75, 0x3b, 0x54, 0x75, 0x3b, 0x56, 0x65, 0x3b, 0x44, 0xf6, 0x3b, 0x46, 0x72, 0x3b, 0x5a, 0xe4, 0x3b, 0x73, 0x75,
-0x64, 0x65, 0x6c, 0x3b, 0x6d, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x74, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x76, 0x65, 0x64, 0x65,
-0x6c, 0x3b, 0x64, 0xf6, 0x64, 0x65, 0x6c, 0x3b, 0x66, 0x72, 0x69, 0x64, 0x65, 0x6c, 0x3b, 0x7a, 0xe4, 0x64, 0x65, 0x6c,
-0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x5a, 0x3b, 0x73, 0x75, 0x2e, 0x3b, 0x6d,
-0x75, 0x2e, 0x3b, 0x74, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x2e, 0x3b, 0x64, 0xf6, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x7a,
-0xe4, 0x2e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b,
-0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x75, 0x6c,
-0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72,
-0x74, 0x68, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64,
-0x20, 0x49, 0x61, 0x75, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64,
-0x64, 0x20, 0x53, 0x61, 0x64, 0x77, 0x72, 0x6e, 0x3b, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b,
-0x47, 0x3b, 0x53, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72,
-0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x69, 0x62, 0x3b, 0x41, 0x6c,
-0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0, 0x6a, 0x6a, 0x3b, 0x41, 0x73,
-0x65, 0x3b, 0x44, 0x69, 0x62, 0xe9, 0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74, 0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6c, 0x61,
-0x61, 0x74, 0x61, 0x3b, 0xc0, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0xc0,
-0x6a, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x65, 0x65, 0x72, 0x3b, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76, 0x75, 0x3b,
-0x42, 0x69, 0x6e, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b,
-0x43, 0x61, 0x77, 0x65, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6e, 0x69,
-0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65,
-0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f,
-0x3b, 0x5d6, 0x5d5, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9, 0x5e0, 0x5e1,
-0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d9, 0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0, 0x5e2, 0x5e8, 0x5e9, 0x5d8, 0x5d9,
-0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8, 0x5f2, 0x5b7, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41,
-0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x3b,
-0x1eb8, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x1eb9,
-0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1eb8,
-0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x1ecc, 0x3b,
-0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301,
-0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a,
-0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec,
-0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41,
-0x6a, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x3b,
-0x190, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b,
-0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x190,
-0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x186, 0x3b,
-0x186, 0x3b, 0x190, 0x3b, 0xc0, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301,
-0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a,
-0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x190, 0x74, 0xec,
-0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d,
-0x73, 0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d,
-0x67, 0x71, 0x3b, 0x49, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75, 0x6c, 0x75, 0x6b,
-0x6f, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74,
-0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73,
-0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d,
-0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74,
-0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61, 0x75, 0x3b, 0x73,
-0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, 0x64, 0x61, 0x67, 0x3b,
-0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61,
-0x67, 0x3b, 0x6c, 0x61, 0x75, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, 0x2e, 0x3b, 0x74, 0x79,
-0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x3b, 0x43d, 0x435,
-0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435,
-0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x458,
+0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70,
+0x3b, 0x73, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x6e, 0x65, 0x3b,
+0x70, 0x6f, 0x3b, 0xfa, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x10d, 0x74, 0x3b, 0x70, 0xe1, 0x3b, 0x73, 0x6f, 0x3b, 0x6e, 0x65,
+0x64, 0x11b, 0x6c, 0x65, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x11b, 0x6c, 0xed, 0x3b, 0xfa, 0x74, 0x65, 0x72, 0xfd, 0x3b, 0x73,
+0x74, 0x159, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x74, 0x76, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0xe1, 0x74, 0x65, 0x6b, 0x3b,
+0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0xda, 0x3b, 0x53, 0x3b, 0x10c, 0x3b, 0x50, 0x3b, 0x53,
+0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0x61, 0x6e, 0x3b, 0x74, 0x69, 0x72, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72,
+0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf8, 0x72, 0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x6e, 0x64,
+0x61, 0x67, 0x3b, 0x74, 0x69, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f,
+0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf8, 0x72, 0x64, 0x61, 0x67, 0x3b,
+0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x73, 0xf8, 0x6e, 0x2e, 0x3b, 0x6d,
+0x61, 0x6e, 0x2e, 0x3b, 0x74, 0x69, 0x72, 0x2e, 0x3b, 0x6f, 0x6e, 0x73, 0x2e, 0x3b, 0x74, 0x6f, 0x72, 0x2e, 0x3b, 0x66,
+0x72, 0x65, 0x2e, 0x3b, 0x6c, 0xf8, 0x72, 0x2e, 0x3b, 0x7a, 0x6f, 0x3b, 0x6d, 0x61, 0x3b, 0x64, 0x69, 0x3b, 0x77, 0x6f,
+0x3b, 0x64, 0x6f, 0x3b, 0x76, 0x72, 0x3b, 0x7a, 0x61, 0x3b, 0x7a, 0x6f, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0x61, 0x61,
+0x6e, 0x64, 0x61, 0x67, 0x3b, 0x64, 0x69, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x77, 0x6f, 0x65, 0x6e, 0x73, 0x64, 0x61,
+0x67, 0x3b, 0x64, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x76, 0x72, 0x69, 0x6a, 0x64, 0x61, 0x67, 0x3b,
+0x7a, 0x61, 0x74, 0x65, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x56,
+0x3b, 0x5a, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x2e, 0x3b, 0x54, 0x75, 0x2e, 0x3b, 0x57, 0x2e, 0x3b, 0x54, 0x68, 0x2e,
+0x3b, 0x46, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x2e, 0x3b, 0x4d, 0x6f, 0x6e, 0x2e, 0x3b, 0x54, 0x75,
+0x65, 0x2e, 0x3b, 0x57, 0x65, 0x64, 0x2e, 0x3b, 0x54, 0x68, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x69, 0x2e, 0x3b, 0x53, 0x61,
+0x74, 0x2e, 0x3b, 0x64, 0x69, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x135, 0x61, 0x3b, 0x76, 0x65,
+0x3b, 0x73, 0x61, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x109, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x6f, 0x3b, 0x6d, 0x61,
+0x72, 0x64, 0x6f, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x135, 0x61, 0x16d, 0x64, 0x6f, 0x3b, 0x76,
+0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x6f, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d,
+0x3b, 0x4d, 0x3b, 0x134, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x45, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x52,
+0x3b, 0x4c, 0x3b, 0x70, 0xfc, 0x68, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x65, 0x73, 0x6d, 0x61, 0x73, 0x70, 0xe4, 0x65,
+0x76, 0x3b, 0x74, 0x65, 0x69, 0x73, 0x69, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x6b, 0x6f, 0x6c, 0x6d, 0x61, 0x70, 0xe4, 0x65,
+0x76, 0x3b, 0x6e, 0x65, 0x6c, 0x6a, 0x61, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x72, 0x65, 0x65, 0x64, 0x65, 0x3b, 0x6c, 0x61,
+0x75, 0x70, 0xe4, 0x65, 0x76, 0x3b, 0x73, 0x75, 0x6e, 0x3b, 0x6d, 0xe1, 0x6e, 0x3b, 0x74, 0xfd, 0x73, 0x3b, 0x6d, 0x69,
+0x6b, 0x3b, 0x68, 0xf3, 0x73, 0x3b, 0x66, 0x72, 0xed, 0x3b, 0x6c, 0x65, 0x79, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64,
+0x61, 0x67, 0x75, 0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x74, 0xfd, 0x73, 0x64, 0x61,
+0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x68, 0xf3, 0x73, 0x64, 0x61, 0x67,
+0x75, 0x72, 0x3b, 0x66, 0x72, 0xed, 0x67, 0x67, 0x6a, 0x61, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x6c, 0x65, 0x79, 0x67,
+0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x46, 0x3b,
+0x4c, 0x3b, 0x73, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0x74, 0xfd, 0x73, 0x2e, 0x3b, 0x6d, 0x69, 0x6b,
+0x2e, 0x3b, 0x68, 0xf3, 0x73, 0x2e, 0x3b, 0x66, 0x72, 0xed, 0x2e, 0x3b, 0x6c, 0x65, 0x79, 0x2e, 0x3b, 0x73, 0x75, 0x3b,
+0x6d, 0x61, 0x3b, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x3b, 0x74, 0x6f, 0x3b, 0x70, 0x65, 0x3b, 0x6c, 0x61, 0x3b, 0x73, 0x75,
+0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x74, 0x69,
+0x69, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69, 0x69, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x6f,
+0x72, 0x73, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x65, 0x72, 0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x3b, 0x6c, 0x61, 0x75, 0x61,
+0x6e, 0x74, 0x61, 0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, 0x73,
+0x75, 0x6e, 0x6e, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6e, 0x61, 0x6e, 0x74, 0x61, 0x69,
+0x6e, 0x61, 0x3b, 0x74, 0x69, 0x69, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0x6b, 0x69, 0x76, 0x69,
+0x69, 0x6b, 0x6b, 0x6f, 0x6e, 0x61, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x70, 0x65, 0x72,
+0x6a, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x6c, 0x61, 0x75, 0x61, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x61, 0x3b,
+0x64, 0x69, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x72, 0x2e, 0x3b,
+0x6a, 0x65, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0x61, 0x6d, 0x2e, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e,
+0x63, 0x68, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63,
+0x72, 0x65, 0x64, 0x69, 0x3b, 0x6a, 0x65, 0x75, 0x64, 0x69, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b,
+0x73, 0x61, 0x6d, 0x65, 0x64, 0x69, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x53,
+0x3b, 0x73, 0x69, 0x3b, 0x6d, 0x6f, 0x3b, 0x74, 0x69, 0x3b, 0x77, 0x6f, 0x3b, 0x74, 0x6f, 0x3b, 0x66, 0x72, 0x3b, 0x73,
+0x6f, 0x3b, 0x73, 0x6e, 0x65, 0x69, 0x6e, 0x3b, 0x6d, 0x6f, 0x61, 0x6e, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x69, 0x69, 0x73,
+0x64, 0x65, 0x69, 0x3b, 0x77, 0x6f, 0x61, 0x6e, 0x73, 0x64, 0x65, 0x69, 0x3b, 0x74, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x73,
+0x64, 0x65, 0x69, 0x3b, 0x66, 0x72, 0x65, 0x65, 0x64, 0x3b, 0x73, 0x6e, 0x65, 0x6f, 0x6e, 0x3b, 0x44, 0x69, 0x44, 0x3b,
+0x44, 0x69, 0x4c, 0x3b, 0x44, 0x69, 0x4d, 0x3b, 0x44, 0x69, 0x43, 0x3b, 0x44, 0x69, 0x61, 0x3b, 0x44, 0x69, 0x68, 0x3b,
+0x44, 0x69, 0x53, 0x3b, 0x44, 0x69, 0x44, 0xf2, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x4c, 0x75,
+0x61, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x4d, 0xe0, 0x69, 0x72, 0x74, 0x3b, 0x44, 0x69, 0x43, 0x69, 0x61, 0x64, 0x61, 0x69,
+0x6e, 0x3b, 0x44, 0x69, 0x61, 0x72, 0x44, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0x69, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65,
+0x3b, 0x44, 0x69, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72, 0x6e, 0x65, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43,
+0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x53, 0x3b, 0x44, 0x6f, 0x6d, 0x2e, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72,
+0x2e, 0x3b, 0x4d, 0xe9, 0x72, 0x2e, 0x3b, 0x58, 0x6f, 0x76, 0x2e, 0x3b, 0x56, 0x65, 0x6e, 0x2e, 0x3b, 0x53, 0xe1, 0x62,
+0x2e, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65,
+0x73, 0x3b, 0x4d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x3b, 0x58, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x65, 0x6e,
+0x72, 0x65, 0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x58,
+0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b,
+0x6d, 0xe9, 0x72, 0x2e, 0x3b, 0x78, 0x6f, 0x76, 0x2e, 0x3b, 0x76, 0x65, 0x6e, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b,
+0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
+0x6d, 0xe9, 0x72, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x3b, 0x78, 0x6f, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x65, 0x6e, 0x72, 0x65,
+0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x64, 0x2e, 0x3b, 0x6c, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x6d, 0x2e,
+0x3b, 0x78, 0x2e, 0x3b, 0x76, 0x2e, 0x3b, 0x73, 0x2e, 0x3b, 0x10d9, 0x10d5, 0x10d8, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x3b, 0x10e1, 0x10d0,
+0x10db, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x3b, 0x10d9, 0x10d5,
+0x10d8, 0x10e0, 0x10d0, 0x3b, 0x10dd, 0x10e0, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10db, 0x10e8, 0x10d0, 0x10d1, 0x10d0,
+0x10d7, 0x10d8, 0x3b, 0x10dd, 0x10d7, 0x10ee, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b, 0x10ee, 0x10e3, 0x10d7, 0x10e8, 0x10d0, 0x10d1, 0x10d0,
+0x10d7, 0x10d8, 0x3b, 0x10de, 0x10d0, 0x10e0, 0x10d0, 0x10e1, 0x10d9, 0x10d4, 0x10d5, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10d7, 0x10d8, 0x3b,
+0x10d9, 0x3b, 0x10dd, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b, 0x10ee, 0x3b, 0x10de, 0x3b, 0x10e8, 0x3b, 0x53, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b,
+0x44, 0x69, 0x3b, 0x4d, 0x69, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x74,
+0x61, 0x67, 0x3b, 0x4d, 0x6f, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x4d,
+0x69, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x46,
+0x72, 0x65, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44,
+0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e,
+0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x6f, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x39a, 0x3c5, 0x3c1,
+0x3b, 0x394, 0x3b5, 0x3c5, 0x3b, 0x3a4, 0x3c1, 0x3af, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3b, 0x3a0, 0x3b1, 0x3c1,
+0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b, 0x39a, 0x3c5, 0x3c1, 0x3b9, 0x3b1, 0x3ba, 0x3ae, 0x3b, 0x394, 0x3b5, 0x3c5, 0x3c4, 0x3ad, 0x3c1, 0x3b1,
+0x3b, 0x3a4, 0x3c1, 0x3af, 0x3c4, 0x3b7, 0x3b, 0x3a4, 0x3b5, 0x3c4, 0x3ac, 0x3c1, 0x3c4, 0x3b7, 0x3b, 0x3a0, 0x3ad, 0x3bc, 0x3c0, 0x3c4,
+0x3b7, 0x3b, 0x3a0, 0x3b1, 0x3c1, 0x3b1, 0x3c3, 0x3ba, 0x3b5, 0x3c5, 0x3ae, 0x3b, 0x3a3, 0x3ac, 0x3b2, 0x3b2, 0x3b1, 0x3c4, 0x3bf, 0x3b,
+0x39a, 0x3b, 0x394, 0x3b, 0x3a4, 0x3b, 0x3a4, 0x3b, 0x3a0, 0x3b, 0x3a0, 0x3b, 0x3a3, 0x3b, 0x73, 0x61, 0x70, 0x3b, 0x61, 0x74,
+0x61, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x70, 0x69, 0x6e, 0x3b, 0x73, 0x69, 0x73, 0x3b, 0x74, 0x61, 0x6c, 0x3b, 0x61, 0x72,
+0x66, 0x3b, 0x73, 0x61, 0x70, 0x61, 0x61, 0x74, 0x3b, 0x61, 0x74, 0x61, 0x61, 0x73, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72,
+0x6e, 0x65, 0x71, 0x3b, 0x6d, 0x61, 0x72, 0x6c, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x70, 0x69,
+0x6e, 0x67, 0x61, 0x73, 0x75, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x73, 0x69, 0x73, 0x61, 0x6d, 0x61,
+0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6d, 0x61, 0x6e, 0x6e, 0x67, 0x6f,
+0x72, 0x6e, 0x65, 0x71, 0x3b, 0x61, 0x72, 0x66, 0x69, 0x6e, 0x69, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6e, 0x65, 0x71, 0x3b,
+0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0xab0, 0xab5, 0xabf, 0x3b, 0xab8, 0xacb,
+0xaae, 0x3b, 0xaae, 0xa82, 0xa97, 0xab3, 0x3b, 0xaac, 0xac1, 0xaa7, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd,
+0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0x3b, 0xab0, 0xab5, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab8, 0xacb, 0xaae, 0xab5, 0xabe, 0xab0, 0x3b,
+0xaae, 0xa82, 0xa97, 0xab3, 0xab5, 0xabe, 0xab0, 0x3b, 0xaac, 0xac1, 0xaa7, 0xab5, 0xabe, 0xab0, 0x3b, 0xa97, 0xac1, 0xab0, 0xac1, 0xab5,
+0xabe, 0xab0, 0x3b, 0xab6, 0xac1, 0xa95, 0xacd, 0xab0, 0xab5, 0xabe, 0xab0, 0x3b, 0xab6, 0xaa8, 0xabf, 0xab5, 0xabe, 0xab0, 0x3b, 0xab0,
+0x3b, 0xab8, 0xacb, 0x3b, 0xaae, 0xa82, 0x3b, 0xaac, 0xac1, 0x3b, 0xa97, 0xac1, 0x3b, 0xab6, 0xac1, 0x3b, 0xab6, 0x3b, 0x4c, 0x61,
+0x68, 0x3b, 0x4c, 0x69, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x72, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x4a, 0x75,
+0x6d, 0x3b, 0x41, 0x73, 0x61, 0x3b, 0x4c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x4c, 0x69, 0x74, 0x69, 0x6e, 0x69, 0x6e,
+0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x4c, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d,
+0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x6d, 0x61, 0x2bc, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x61, 0x72, 0x3b, 0x4c, 0x3b,
+0x4c, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5d9,
+0x5d5, 0x5dd, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d2, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d3, 0x5f3, 0x3b,
+0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d4, 0x5f3, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5d5, 0x5f3, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0x5d9, 0x5d5,
+0x5dd, 0x20, 0x5e8, 0x5d0, 0x5e9, 0x5d5, 0x5df, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20,
+0x5e9, 0x5dc, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20,
+0x5d7, 0x5de, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9, 0x5d9, 0x5e9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dd, 0x20, 0x5e9,
+0x5d1, 0x5ea, 0x3b, 0x5d0, 0x5f3, 0x3b, 0x5d1, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x3b, 0x5d3, 0x5f3, 0x3b, 0x5d4, 0x5f3, 0x3b, 0x5d5, 0x5f3,
+0x3b, 0x5e9, 0x5f3, 0x3b, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x927,
+0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f, 0x935,
+0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941,
+0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e,
+0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x930, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b,
+0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x3b, 0x56, 0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x65, 0x3b, 0x43, 0x73,
+0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0xe1, 0x72, 0x6e, 0x61, 0x70, 0x3b, 0x68, 0xe9, 0x74, 0x66,
+0x151, 0x3b, 0x6b, 0x65, 0x64, 0x64, 0x3b, 0x73, 0x7a, 0x65, 0x72, 0x64, 0x61, 0x3b, 0x63, 0x73, 0xfc, 0x74, 0xf6, 0x72,
+0x74, 0xf6, 0x6b, 0x3b, 0x70, 0xe9, 0x6e, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x7a, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x3b, 0x56,
+0x3b, 0x48, 0x3b, 0x4b, 0x3b, 0x53, 0x7a, 0x3b, 0x43, 0x73, 0x3b, 0x50, 0x3b, 0x53, 0x7a, 0x3b, 0x73, 0x75, 0x6e, 0x2e,
+0x3b, 0x6d, 0xe1, 0x6e, 0x2e, 0x3b, 0xfe, 0x72, 0x69, 0x2e, 0x3b, 0x6d, 0x69, 0xf0, 0x2e, 0x3b, 0x66, 0x69, 0x6d, 0x2e,
+0x3b, 0x66, 0xf6, 0x73, 0x2e, 0x3b, 0x6c, 0x61, 0x75, 0x2e, 0x3b, 0x73, 0x75, 0x6e, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75,
+0x72, 0x3b, 0x6d, 0xe1, 0x6e, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0xfe, 0x72, 0x69, 0xf0, 0x6a, 0x75, 0x64, 0x61,
+0x67, 0x75, 0x72, 0x3b, 0x6d, 0x69, 0xf0, 0x76, 0x69, 0x6b, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0x69, 0x6d,
+0x6d, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x66, 0xf6, 0x73, 0x74, 0x75, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b,
+0x6c, 0x61, 0x75, 0x67, 0x61, 0x72, 0x64, 0x61, 0x67, 0x75, 0x72, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0xde, 0x3b, 0x4d, 0x3b,
+0x46, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x4d, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61,
+0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75,
+0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b,
+0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x4d, 0x3b, 0x53,
+0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d,
+0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x6a, 0x6f, 0x76, 0x3b, 0x76, 0x65, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64,
+0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65,
+0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x64, 0x69, 0x3b, 0x6a, 0x6f, 0x76, 0x65, 0x64, 0x69, 0x3b,
+0x76, 0x65, 0x6e, 0x65, 0x72, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x62, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x64, 0x3b, 0x6c, 0x3b,
+0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x44, 0x6f, 0x6d, 0x68, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x3b,
+0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x43, 0xe9, 0x61, 0x64, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x3b, 0x41, 0x6f, 0x69, 0x6e,
+0x65, 0x3b, 0x53, 0x61, 0x74, 0x68, 0x3b, 0x44, 0xe9, 0x20, 0x44, 0x6f, 0x6d, 0x68, 0x6e, 0x61, 0x69, 0x67, 0x68, 0x3b,
+0x44, 0xe9, 0x20, 0x4c, 0x75, 0x61, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x20, 0x4d, 0xe1, 0x69, 0x72, 0x74, 0x3b, 0x44, 0xe9,
+0x20, 0x43, 0xe9, 0x61, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b, 0x44, 0xe9, 0x61, 0x72, 0x64, 0x61, 0x6f, 0x69, 0x6e, 0x3b,
+0x44, 0xe9, 0x20, 0x68, 0x41, 0x6f, 0x69, 0x6e, 0x65, 0x3b, 0x44, 0xe9, 0x20, 0x53, 0x61, 0x74, 0x68, 0x61, 0x69, 0x72,
+0x6e, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x44, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b,
+0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x67, 0x69, 0x6f, 0x3b, 0x76, 0x65, 0x6e, 0x3b,
+0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x63, 0x61, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x64, 0xec, 0x3b,
+0x6d, 0x61, 0x72, 0x74, 0x65, 0x64, 0xec, 0x3b, 0x6d, 0x65, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x64, 0xec, 0x3b, 0x67, 0x69,
+0x6f, 0x76, 0x65, 0x64, 0xec, 0x3b, 0x76, 0x65, 0x6e, 0x65, 0x72, 0x64, 0xec, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f,
+0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x65e5, 0x3b, 0x6708, 0x3b, 0x706b,
+0x3b, 0x6c34, 0x3b, 0x6728, 0x3b, 0x91d1, 0x3b, 0x571f, 0x3b, 0x65e5, 0x66dc, 0x65e5, 0x3b, 0x6708, 0x66dc, 0x65e5, 0x3b, 0x706b, 0x66dc, 0x65e5,
+0x3b, 0x6c34, 0x66dc, 0x65e5, 0x3b, 0x6728, 0x66dc, 0x65e5, 0x3b, 0x91d1, 0x66dc, 0x65e5, 0x3b, 0x571f, 0x66dc, 0x65e5, 0x3b, 0x41, 0x68, 0x61,
+0x64, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75,
+0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c,
+0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62, 0x75, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74,
+0x3b, 0x53, 0x61, 0x62, 0x74, 0x75, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53,
+0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0x3b, 0xcb8, 0xccb, 0xcae, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0x3b, 0xcac, 0xcc1, 0xca7, 0x3b, 0xc97,
+0xcc1, 0xcb0, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0x3b, 0xcb6, 0xca8, 0xcbf, 0x3b, 0xcad, 0xcbe, 0xca8, 0xcc1, 0xcb5, 0xcbe,
+0xcb0, 0x3b, 0xcb8, 0xccb, 0xcae, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcae, 0xc82, 0xc97, 0xcb3, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcac, 0xcc1, 0xca7,
+0xcb5, 0xcbe, 0xcb0, 0x3b, 0xc97, 0xcc1, 0xcb0, 0xcc1, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcb6, 0xcc1, 0xc95, 0xccd, 0xcb0, 0xcb5, 0xcbe, 0xcb0,
+0x3b, 0xcb6, 0xca8, 0xcbf, 0xcb5, 0xcbe, 0xcb0, 0x3b, 0xcad, 0xcbe, 0x3b, 0xcb8, 0xccb, 0x3b, 0xcae, 0xc82, 0x3b, 0xcac, 0xcc1, 0x3b,
+0xc97, 0xcc1, 0x3b, 0xcb6, 0xcc1, 0x3b, 0xcb6, 0x3b, 0x622, 0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f, 0x655,
+0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628,
+0x631, 0x620, 0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c, 0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x3b, 0x627, 0x64e,
+0x62a, 0x6be, 0x648, 0x627, 0x631, 0x3b, 0x698, 0x654, 0x646, 0x62f, 0x631, 0x655, 0x631, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x6c6, 0x645,
+0x648, 0x627, 0x631, 0x3b, 0x628, 0x648, 0x62f, 0x648, 0x627, 0x631, 0x3b, 0x628, 0x631, 0x620, 0x633, 0x648, 0x627, 0x631, 0x3b, 0x62c,
+0x64f, 0x645, 0x6c1, 0x3b, 0x628, 0x679, 0x648, 0x627, 0x631, 0x3b, 0x627, 0x3b, 0x698, 0x3b, 0x628, 0x3b, 0x628, 0x3b, 0x628, 0x3b,
+0x62c, 0x3b, 0x628, 0x3b, 0x436, 0x441, 0x3b, 0x434, 0x441, 0x3b, 0x441, 0x441, 0x3b, 0x441, 0x440, 0x3b, 0x431, 0x441, 0x3b, 0x436,
+0x43c, 0x3b, 0x441, 0x431, 0x3b, 0x436, 0x435, 0x43a, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x434, 0x4af, 0x439, 0x441, 0x435, 0x43d,
+0x431, 0x456, 0x3b, 0x441, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x441, 0x4d9, 0x440, 0x441, 0x435, 0x43d, 0x431, 0x456,
+0x3b, 0x431, 0x435, 0x439, 0x441, 0x435, 0x43d, 0x431, 0x456, 0x3b, 0x436, 0x4b1, 0x43c, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x431, 0x456,
+0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x421, 0x3b, 0x411, 0x3b, 0x416, 0x3b, 0x421, 0x3b, 0x63, 0x79, 0x75, 0x2e, 0x3b,
+0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b,
+0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x3b, 0x4b, 0x75, 0x20, 0x63, 0x79, 0x75, 0x6d, 0x77, 0x65, 0x72,
+0x75, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x6b, 0x61,
+0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x77,
+0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b,
+0x75, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x436, 0x435, 0x43a, 0x2e, 0x3b, 0x434,
+0x4af, 0x439, 0x2e, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x2e, 0x3b, 0x448, 0x430, 0x440, 0x448, 0x2e, 0x3b, 0x431, 0x435, 0x439, 0x448,
+0x2e, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x438, 0x448, 0x43c, 0x2e, 0x3b, 0x436, 0x435, 0x43a, 0x448, 0x435, 0x43c, 0x431, 0x438,
+0x3b, 0x434, 0x4af, 0x439, 0x448, 0x4e9, 0x43c, 0x431, 0x4af, 0x3b, 0x448, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x448,
+0x430, 0x440, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x431, 0x435, 0x439, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x436, 0x443, 0x43c,
+0x430, 0x3b, 0x438, 0x448, 0x435, 0x43c, 0x431, 0x438, 0x3b, 0x416, 0x3b, 0x414, 0x3b, 0x428, 0x3b, 0x428, 0x3b, 0x411, 0x3b, 0x416,
+0x3b, 0x418, 0x3b, 0xc77c, 0x3b, 0xc6d4, 0x3b, 0xd654, 0x3b, 0xc218, 0x3b, 0xbaa9, 0x3b, 0xae08, 0x3b, 0xd1a0, 0x3b, 0xc77c, 0xc694, 0xc77c,
+0x3b, 0xc6d4, 0xc694, 0xc77c, 0x3b, 0xd654, 0xc694, 0xc77c, 0x3b, 0xc218, 0xc694, 0xc77c, 0x3b, 0xbaa9, 0xc694, 0xc77c, 0x3b, 0xae08, 0xc694, 0xc77c,
+0x3b, 0xd1a0, 0xc694, 0xc77c, 0x3b, 0x79, 0x15f, 0x3b, 0x64, 0x15f, 0x3b, 0x73, 0x15f, 0x3b, 0xe7, 0x15f, 0x3b, 0x70, 0x15f, 0x3b,
+0xee, 0x6e, 0x3b, 0x15f, 0x3b, 0x79, 0x65, 0x6b, 0x15f, 0x65, 0x6d, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6d, 0x3b, 0x73, 0xea,
+0x15f, 0x65, 0x6d, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6d, 0x3b, 0x70, 0xea, 0x6e, 0x63, 0x15f, 0x65, 0x6d, 0x3b, 0xee,
+0x6e, 0x3b, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0xce, 0x3b, 0x15e,
+0x3b, 0x63, 0x75, 0x2e, 0x3b, 0x6d, 0x62, 0x65, 0x2e, 0x3b, 0x6b, 0x61, 0x62, 0x2e, 0x3b, 0x67, 0x74, 0x75, 0x2e, 0x3b,
+0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x67, 0x6e, 0x75, 0x2e, 0x3b, 0x67, 0x6e, 0x64, 0x2e, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x2019,
+0x69, 0x6e, 0x64, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4b, 0x75,
+0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74,
+0x61, 0x74, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x65, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61,
+0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x75, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64,
+0x61, 0x74, 0x75, 0x3b, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xe88, 0xeb1, 0xe99, 0x3b, 0xead, 0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99,
+0x3b, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xe9e, 0xeb0, 0xeab, 0xeb1, 0xe94, 0x3b, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xec0, 0xeaa, 0xebb, 0xeb2, 0x3b,
+0xea7, 0xeb1, 0xe99, 0xead, 0xeb2, 0xe97, 0xeb4, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe88, 0xeb1, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99, 0xead,
+0xeb1, 0xe87, 0xe84, 0xeb2, 0xe99, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb8, 0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xe9e, 0xeb0, 0xeab, 0xeb1,
+0xe94, 0x3b, 0xea7, 0xeb1, 0xe99, 0xeaa, 0xeb8, 0xe81, 0x3b, 0xea7, 0xeb1, 0xe99, 0xec0, 0xeaa, 0xebb, 0xeb2, 0x3b, 0xead, 0xeb2, 0x3b,
+0xe88, 0x3b, 0xead, 0x3b, 0xe9e, 0x3b, 0xe9e, 0xeab, 0x3b, 0xeaa, 0xeb8, 0x3b, 0xeaa, 0x3b, 0x53, 0x76, 0x113, 0x74, 0x64, 0x2e,
+0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64, 0x2e, 0x3b, 0x4f, 0x74, 0x72, 0x64, 0x2e, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x2e,
+0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x50, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x53, 0x65,
+0x73, 0x74, 0x64, 0x2e, 0x3b, 0x53, 0x76, 0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x72, 0x6d, 0x64,
+0x69, 0x65, 0x6e, 0x61, 0x3b, 0x4f, 0x74, 0x72, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x54, 0x72, 0x65, 0x161, 0x64, 0x69,
+0x65, 0x6e, 0x61, 0x3b, 0x43, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x50, 0x69, 0x65, 0x6b,
+0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x53, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x53, 0x3b, 0x50,
+0x3b, 0x4f, 0x3b, 0x54, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x73, 0x76, 0x113, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69,
+0x72, 0x6d, 0x64, 0x2e, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x2e, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x2e, 0x3b, 0x63, 0x65,
+0x74, 0x75, 0x72, 0x74, 0x64, 0x2e, 0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x2e, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64,
+0x2e, 0x3b, 0x73, 0x76, 0x113, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x64, 0x69, 0x65, 0x6e,
+0x61, 0x3b, 0x6f, 0x74, 0x72, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x74, 0x72, 0x65, 0x161, 0x64, 0x69, 0x65, 0x6e, 0x61,
+0x3b, 0x63, 0x65, 0x74, 0x75, 0x72, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x70, 0x69, 0x65, 0x6b, 0x74, 0x64, 0x69,
+0x65, 0x6e, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x64, 0x69, 0x65, 0x6e, 0x61, 0x3b, 0x65, 0x79, 0x65, 0x3b, 0x79, 0x62,
+0x6f, 0x3b, 0x6d, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x74, 0x3b, 0x6d, 0x69, 0x6e, 0x3b, 0x6d, 0x74, 0x6e, 0x3b, 0x6d, 0x70,
+0x73, 0x3b, 0x65, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20,
+0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x62,
+0x61, 0x6c, 0xe9, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x6d, 0x77, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74,
+0x6f, 0x3b, 0x6d, 0x6f, 0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0xe9, 0x69, 0x3b, 0x6d, 0x6f,
+0x6b, 0x254, 0x6c, 0x254, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x6d, 0x70, 0x254, 0x301, 0x73,
+0x254, 0x3b, 0x65, 0x3b, 0x79, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x70, 0x3b, 0x73, 0x6b, 0x3b, 0x70,
+0x72, 0x3b, 0x61, 0x6e, 0x3b, 0x74, 0x72, 0x3b, 0x6b, 0x74, 0x3b, 0x70, 0x6e, 0x3b, 0x161, 0x74, 0x3b, 0x73, 0x65, 0x6b,
+0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x70, 0x69, 0x72, 0x6d, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
+0x3b, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x74, 0x72, 0x65, 0x10d, 0x69, 0x61, 0x64,
+0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x6b, 0x65, 0x74, 0x76, 0x69, 0x72, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73,
+0x3b, 0x70, 0x65, 0x6e, 0x6b, 0x74, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x161, 0x65, 0x161, 0x74, 0x61, 0x64,
+0x69, 0x65, 0x6e, 0x69, 0x73, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x160, 0x3b,
+0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d, 0x2e, 0x3b, 0x432, 0x442, 0x43e, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b,
+0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442, 0x2e, 0x3b, 0x441, 0x430, 0x431, 0x2e, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x43b,
+0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x43b, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a,
+0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x43e, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x43e,
+0x43a, 0x3b, 0x441, 0x430, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x435, 0x434, 0x2e, 0x3b, 0x43f, 0x43e, 0x43d, 0x2e, 0x3b, 0x432,
+0x442, 0x2e, 0x3b, 0x441, 0x440, 0x435, 0x2e, 0x3b, 0x447, 0x435, 0x442, 0x2e, 0x3b, 0x43f, 0x435, 0x442, 0x2e, 0x3b, 0x441, 0x430,
+0x431, 0x2e, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c,
+0x61, 0x72, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x3b, 0x5a, 0x6f, 0x6d, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x3b, 0x41, 0x6c, 0x61,
+0x68, 0x61, 0x64, 0x79, 0x3b, 0x41, 0x6c, 0x61, 0x74, 0x73, 0x69, 0x6e, 0x61, 0x69, 0x6e, 0x79, 0x3b, 0x54, 0x61, 0x6c,
+0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x6f, 0x62, 0x69, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x6b, 0x61, 0x6d, 0x69,
+0x73, 0x79, 0x3b, 0x5a, 0x6f, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x61, 0x62, 0x6f, 0x74, 0x73, 0x79, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x5a, 0x3b, 0x41, 0x3b, 0x41, 0x68, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x53,
+0x65, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x3b, 0x4b, 0x68, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x41,
+0x68, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x6e, 0x3b, 0x53, 0x65, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x61, 0x62,
+0x75, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x74,
+0x75, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd7c,
+0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd7e, 0x3b, 0xd1a, 0xd4a, 0xd35, 0xd4d, 0xd35, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd7b, 0x3b, 0xd35,
+0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd02, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0x3b, 0xd36, 0xd28, 0xd3f, 0x3b, 0xd1e, 0xd3e, 0xd2f,
+0xd31, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a,
+0xd4a, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b,
+0xd35, 0xd4d, 0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34,
+0xd4d, 0x200c, 0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0xd3e, 0x3b, 0xd24, 0xd3f, 0x3b,
+0xd1a, 0xd4a, 0x3b, 0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0xd1e, 0xd3e, 0xd2f, 0xd31,
+0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd24, 0xd3f, 0xd19, 0xd4d, 0xd15, 0xd33, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1a, 0xd4a,
+0xd35, 0xd4d, 0xd35, 0xd3e, 0xd34, 0xd4d, 0xd1a, 0x3b, 0xd2c, 0xd41, 0xd27, 0xd28, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd4d,
+0xd2f, 0xd3e, 0xd34, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd35, 0xd46, 0xd33, 0xd4d, 0xd33, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c,
+0xd1a, 0x3b, 0xd36, 0xd28, 0xd3f, 0xd2f, 0xd3e, 0xd34, 0xd4d, 0x200c, 0xd1a, 0x3b, 0xd1e, 0x3b, 0xd24, 0xd3f, 0x3b, 0xd1a, 0xd4a, 0x3b,
+0xd2c, 0xd41, 0x3b, 0xd35, 0xd4d, 0xd2f, 0xd3e, 0x3b, 0xd35, 0xd46, 0x3b, 0xd36, 0x3b, 0x126, 0x61, 0x64, 0x3b, 0x54, 0x6e, 0x65,
+0x3b, 0x54, 0x6c, 0x69, 0x3b, 0x45, 0x72, 0x62, 0x3b, 0x126, 0x61, 0x6d, 0x3b, 0x120, 0x69, 0x6d, 0x3b, 0x53, 0x69, 0x62,
+0x3b, 0x49, 0x6c, 0x2d, 0x126, 0x61, 0x64, 0x64, 0x3b, 0x49, 0x74, 0x2d, 0x54, 0x6e, 0x65, 0x6a, 0x6e, 0x3b, 0x49, 0x74,
+0x2d, 0x54, 0x6c, 0x69, 0x65, 0x74, 0x61, 0x3b, 0x4c, 0x2d, 0x45, 0x72, 0x62, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x6c, 0x2d,
+0x126, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x49, 0x6c, 0x2d, 0x120, 0x69, 0x6d, 0x67, 0x127, 0x61, 0x3b, 0x49, 0x73, 0x2d, 0x53,
+0x69, 0x62, 0x74, 0x3b, 0x126, 0x64, 0x3b, 0x54, 0x6e, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120,
+0x6d, 0x3b, 0x53, 0x62, 0x3b, 0x126, 0x64, 0x3b, 0x54, 0x3b, 0x54, 0x6c, 0x3b, 0x45, 0x72, 0x3b, 0x126, 0x6d, 0x3b, 0x120,
+0x6d, 0x3b, 0x53, 0x62, 0x3b, 0x54, 0x61, 0x70, 0x3b, 0x48, 0x69, 0x6e, 0x3b, 0x54, 0x16b, 0x3b, 0x41, 0x70, 0x61, 0x3b,
+0x50, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x48, 0x6f, 0x72, 0x3b, 0x52, 0x101, 0x74, 0x61, 0x70, 0x75, 0x3b, 0x52,
+0x101, 0x68, 0x69, 0x6e, 0x61, 0x3b, 0x52, 0x101, 0x74, 0x16b, 0x3b, 0x52, 0x101, 0x61, 0x70, 0x61, 0x3b, 0x52, 0x101, 0x70,
+0x61, 0x72, 0x65, 0x3b, 0x52, 0x101, 0x6d, 0x65, 0x72, 0x65, 0x3b, 0x52, 0x101, 0x68, 0x6f, 0x72, 0x6f, 0x69, 0x3b, 0x54,
+0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x930, 0x935, 0x93f, 0x3b, 0x938, 0x94b, 0x92e,
+0x3b, 0x92e, 0x902, 0x917, 0x933, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930,
+0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x935, 0x93e, 0x930, 0x3b, 0x92e,
+0x902, 0x917, 0x933, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e,
+0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x930, 0x3b, 0x41d, 0x44f,
+0x3b, 0x414, 0x430, 0x3b, 0x41c, 0x44f, 0x3b, 0x41b, 0x445, 0x3b, 0x41f, 0x4af, 0x3b, 0x411, 0x430, 0x3b, 0x411, 0x44f, 0x3b, 0x41d,
+0x44f, 0x43c, 0x3b, 0x414, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x41c, 0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x41b, 0x445, 0x430, 0x433,
+0x432, 0x430, 0x3b, 0x41f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x411, 0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x411, 0x44f, 0x43c, 0x431,
+0x430, 0x3b, 0x43d, 0x44f, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x430, 0x430, 0x3b, 0x43c, 0x44f, 0x433, 0x43c, 0x430, 0x440, 0x3b, 0x43b,
+0x445, 0x430, 0x433, 0x432, 0x430, 0x3b, 0x43f, 0x4af, 0x440, 0x44d, 0x432, 0x3b, 0x431, 0x430, 0x430, 0x441, 0x430, 0x43d, 0x3b, 0x431,
+0x44f, 0x43c, 0x431, 0x430, 0x3b, 0x906, 0x907, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x3b, 0x92c,
+0x941, 0x927, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x906, 0x907,
+0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x919, 0x94d, 0x917, 0x932, 0x92c, 0x93e, 0x930,
+0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x939, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d,
+0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x3b, 0x92c,
+0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x3b, 0xb30, 0xb2c, 0xb3f, 0x3b, 0xb38, 0xb4b, 0xb2e, 0x3b, 0xb2e, 0xb19,
+0xb4d, 0xb17, 0xb33, 0x3b, 0xb2c, 0xb41, 0xb27, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0x3b, 0xb36,
+0xb28, 0xb3f, 0x3b, 0xb30, 0xb2c, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb38, 0xb4b, 0xb2e, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2e, 0xb19, 0xb4d,
+0xb17, 0xb33, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb2c, 0xb41, 0xb27, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb17, 0xb41, 0xb30, 0xb41, 0xb2c, 0xb3e, 0xb30,
+0x3b, 0xb36, 0xb41, 0xb15, 0xb4d, 0xb30, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb36, 0xb28, 0xb3f, 0xb2c, 0xb3e, 0xb30, 0x3b, 0xb30, 0x3b, 0xb38,
+0xb4b, 0x3b, 0xb2e, 0x3b, 0xb2c, 0xb41, 0x3b, 0xb17, 0xb41, 0x3b, 0xb36, 0xb41, 0x3b, 0xb36, 0x3b, 0x64a, 0x648, 0x646, 0x6cd, 0x3b,
+0x62f, 0x648, 0x646, 0x6cd, 0x3b, 0x62f, 0x631, 0x6d0, 0x646, 0x6cd, 0x3b, 0x685, 0x644, 0x631, 0x646, 0x6cd, 0x3b, 0x67e, 0x64a, 0x646,
+0x681, 0x646, 0x6cd, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b, 0x627, 0x648, 0x646, 0x6cd, 0x3b, 0x6cc, 0x6a9, 0x634, 0x646, 0x628, 0x647,
+0x3b, 0x62f, 0x648, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x633, 0x647, 0x200c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x686, 0x647, 0x627, 0x631,
+0x634, 0x646, 0x628, 0x647, 0x3b, 0x67e, 0x646, 0x62c, 0x634, 0x646, 0x628, 0x647, 0x3b, 0x62c, 0x645, 0x639, 0x647, 0x3b, 0x634, 0x646,
+0x628, 0x647, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, 0x6e, 0x69, 0x65,
+0x64, 0x7a, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x77, 0x74, 0x2e, 0x3b, 0x15b, 0x72, 0x2e, 0x3b, 0x63, 0x7a, 0x77,
+0x2e, 0x3b, 0x70, 0x74, 0x2e, 0x3b, 0x73, 0x6f, 0x62, 0x2e, 0x3b, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x65, 0x6c, 0x61,
+0x3b, 0x70, 0x6f, 0x6e, 0x69, 0x65, 0x64, 0x7a, 0x69, 0x61, 0x142, 0x65, 0x6b, 0x3b, 0x77, 0x74, 0x6f, 0x72, 0x65, 0x6b,
+0x3b, 0x15b, 0x72, 0x6f, 0x64, 0x61, 0x3b, 0x63, 0x7a, 0x77, 0x61, 0x72, 0x74, 0x65, 0x6b, 0x3b, 0x70, 0x69, 0x105, 0x74,
+0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x15a, 0x3b, 0x43, 0x3b,
+0x50, 0x3b, 0x53, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x15b, 0x3b, 0x63, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x64, 0x6f,
+0x6d, 0x2e, 0x3b, 0x73, 0x65, 0x67, 0x2e, 0x3b, 0x74, 0x65, 0x72, 0x2e, 0x3b, 0x71, 0x75, 0x61, 0x2e, 0x3b, 0x71, 0x75,
+0x69, 0x2e, 0x3b, 0x73, 0x65, 0x78, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f,
+0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7, 0x61,
+0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b,
+0x71, 0x75, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x2d, 0x66,
+0x65, 0x69, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x51, 0x3b,
+0x51, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x67, 0x75, 0x6e, 0x64,
+0x61, 0x3b, 0x74, 0x65, 0x72, 0xe7, 0x61, 0x3b, 0x71, 0x75, 0x61, 0x72, 0x74, 0x61, 0x3b, 0x71, 0x75, 0x69, 0x6e, 0x74,
+0x61, 0x3b, 0x73, 0x65, 0x78, 0x74, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0xa10, 0xa24, 0x3b, 0xa38, 0xa4b,
+0xa2e, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0x3b, 0xa35, 0xa40, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71,
+0xa15, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28, 0xa3f, 0xa71, 0xa1a, 0xa30, 0x3b, 0xa10, 0xa24, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa4b, 0xa2e,
+0xa35, 0xa3e, 0xa30, 0x3b, 0xa2e, 0xa70, 0xa17, 0xa32, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa2c, 0xa41, 0xa71, 0xa27, 0xa35, 0xa3e, 0xa30, 0x3b,
+0xa35, 0xa40, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0xa15, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa38, 0xa3c, 0xa28,
+0xa3f, 0xa71, 0xa1a, 0xa30, 0xa35, 0xa3e, 0xa30, 0x3b, 0xa10, 0x3b, 0xa38, 0xa4b, 0x3b, 0xa2e, 0xa70, 0x3b, 0xa2c, 0xa41, 0xa71, 0x3b,
+0xa35, 0xa40, 0x3b, 0xa38, 0xa3c, 0xa41, 0xa71, 0x3b, 0xa38, 0xa3c, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631,
+0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x64f, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645,
+0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b,
+0x4d, 0x69, 0xe9, 0x3b, 0x4a, 0x75, 0x65, 0x3b, 0x56, 0x69, 0x65, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x6f, 0x6d, 0x69,
+0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0xe9,
+0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x4a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x56, 0x69, 0x65, 0x72, 0x6e, 0x65,
+0x73, 0x3b, 0x53, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x4a, 0x3b, 0x56,
+0x3b, 0x53, 0x3b, 0x64, 0x75, 0x3b, 0x67, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x65, 0x3b, 0x67, 0x69, 0x65, 0x3b,
+0x76, 0x65, 0x3b, 0x73, 0x6f, 0x3b, 0x64, 0x75, 0x6d, 0x65, 0x6e, 0x67, 0x69, 0x61, 0x3b, 0x67, 0x6c, 0x69, 0x6e, 0x64,
+0x65, 0x73, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x73, 0x65, 0x6d, 0x6e, 0x61, 0x3b, 0x67,
+0x69, 0x65, 0x76, 0x67, 0x69, 0x61, 0x3b, 0x76, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x64, 0x69, 0x3b, 0x73, 0x6f, 0x6e, 0x64,
+0x61, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x64, 0x75, 0x6d, 0x2e,
+0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, 0x69, 0x65, 0x2e, 0x3b, 0x6a, 0x6f, 0x69, 0x3b,
+0x76, 0x69, 0x6e, 0x2e, 0x3b, 0x73, 0xe2, 0x6d, 0x2e, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x103, 0x3b, 0x6c,
+0x75, 0x6e, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x21b, 0x69, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x72, 0x69, 0x3b, 0x6a,
+0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x65, 0x72, 0x69, 0x3b, 0x73, 0xe2, 0x6d, 0x62, 0x103, 0x74, 0x103, 0x3b, 0x44, 0x75,
+0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x65, 0x3b, 0x4a, 0x6f, 0x69, 0x3b, 0x56, 0x69,
+0x6e, 0x3b, 0x53, 0xe2, 0x6d, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x61, 0x3b, 0x4d, 0x69, 0x3b, 0x4a, 0x3b, 0x56, 0x3b,
+0x53, 0x3b, 0x432, 0x441, 0x3b, 0x43f, 0x43d, 0x3b, 0x432, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x442, 0x3b, 0x43f, 0x442, 0x3b,
+0x441, 0x431, 0x3b, 0x432, 0x43e, 0x441, 0x43a, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x435, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434,
+0x435, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x3b, 0x432, 0x442, 0x43e, 0x440, 0x43d, 0x438, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430,
+0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x433, 0x3b, 0x43f, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x430, 0x3b, 0x441, 0x443, 0x431,
+0x431, 0x43e, 0x442, 0x430, 0x3b, 0x412, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x3b, 0x42,
+0x6b, 0x31, 0x3b, 0x42, 0x6b, 0x32, 0x3b, 0x42, 0x6b, 0x33, 0x3b, 0x42, 0x6b, 0x34, 0x3b, 0x42, 0x6b, 0x35, 0x3b, 0x4c,
+0xe2, 0x70, 0x3b, 0x4c, 0xe2, 0x79, 0x3b, 0x42, 0x69, 0x6b, 0x75, 0x61, 0x2d, 0xf4, 0x6b, 0x6f, 0x3b, 0x42, 0xef, 0x6b,
+0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x70, 0x74, 0xe2, 0x3b, 0x42, 0xef, 0x6b,
+0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x6f, 0x6b, 0xfc, 0x3b, 0x4c, 0xe2,
+0x70, 0xf4, 0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x53,
+0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441,
+0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x459,
+0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441,
+0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b,
+0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441,
+0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x3b, 0x441, 0x440, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f,
+0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434,
0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b,
0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442,
-0x430, 0x3b, 0x4a, 0x65, 0x64, 0x3b, 0x4a, 0x65, 0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x3b, 0x4a,
-0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68, 0x3b, 0x4a, 0x65, 0x73, 0x3b, 0x4a, 0x65, 0x64, 0x6f, 0x6f, 0x6e, 0x65, 0x65,
-0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a, 0x65, 0x72,
-0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69, 0x6e, 0x65,
-0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x74, 0x68,
-0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x64, 0x79, 0x20,
-0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, 0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68,
-0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77, 0x3b, 0x64, 0x79,
-0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, 0x4b, 0x77,
-0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e, 0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b, 0x46, 0x69,
-0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x3b, 0x4b, 0x77, 0x65, 0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77, 0x64, 0x61,
-0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57, 0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, 0x64, 0x61,
-0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x65, 0x6e, 0x65, 0x64, 0x61, 0x3b, 0x4b, 0x3b, 0x44, 0x3b, 0x42,
-0x3b, 0x57, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x906, 0x92f, 0x924, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x93e, 0x930,
-0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935,
-0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947, 0x928, 0x935, 0x93e, 0x930, 0x3b, 0x906, 0x3b,
-0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b, 0x1ee4, 0x6b,
-0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72,
-0x61, 0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x3b, 0x1ee4, 0x62, 0x1ecd, 0x63, 0x68, 0x1ecb, 0x20, 0x1ee4, 0x6b,
-0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65,
-0x7a, 0x64, 0x65, 0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x64, 0x65, 0x65,
-0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x6b, 0x79, 0x3b, 0x57, 0x6b, 0x77, 0x3b, 0x57, 0x6b, 0x6c,
-0x3b, 0x57, 0x74, 0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74, 0x68, 0x3b, 0x57, 0x61, 0x20,
-0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6d, 0x62, 0x129, 0x6c, 0x129, 0x6c, 0x79,
-0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b,
-0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x57, 0x61,
-0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x59, 0x3b, 0x57, 0x3b, 0x45, 0x3b, 0x41, 0x3b, 0x41,
-0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0x65,
-0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x65,
-0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63,
-0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x69,
-0x64, 0x65, 0x3b, 0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x3b, 0x79,
-0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b, 0x6d, 0x65, 0x6d, 0x3b, 0x6b, 0x254, 0x73, 0x69, 0x256, 0x61, 0x3b, 0x64, 0x7a,
-0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61, 0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, 0x61, 0x77, 0x6f, 0x256,
-0x61, 0x3b, 0x66, 0x69, 0x256, 0x61, 0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61, 0x3b, 0x6b, 0x3b, 0x64, 0x3b, 0x62,
-0x3b, 0x6b, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x4c, 0x50, 0x3b, 0x50, 0x31, 0x3b, 0x50, 0x32, 0x3b, 0x50, 0x33,
-0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35, 0x3b, 0x50, 0x36, 0x3b, 0x4c, 0x101, 0x70, 0x75, 0x6c, 0x65, 0x3b, 0x50, 0x6f, 0x2bb,
-0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x6f,
-0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x69, 0x6d, 0x61, 0x3b, 0x50,
-0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d,
-0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4c, 0x69, 0x6e, 0x67, 0x67,
-0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72,
-0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e,
-0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, 0x2e, 0x3b, 0x5a, 0x69,
-0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75,
-0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, 0x69, 0x73, 0x63, 0x68,
-0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x74,
-0x69, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67,
-0x3b, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, 0xa18f, 0xa1d6, 0x3b, 0xa18f, 0xa26c, 0x3b, 0xa18f,
-0xa0d8, 0x3b, 0xa46d, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa315, 0x3b, 0xa18f, 0xa282,
-0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b, 0xa18f, 0xa282, 0xa0d8, 0x3b, 0xa18f, 0x3b, 0xa2cd, 0x3b, 0xa44d, 0x3b, 0xa315, 0x3b, 0xa1d6, 0x3b,
-0xa26c, 0x3b, 0xa0d8, 0x3b, 0x53, 0xfc, 0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b,
-0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x64, 0x61, 0x67, 0x3b,
-0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x6e, 0x67, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x64,
-0x64, 0x65, 0x77, 0x65, 0x6b, 0x65, 0x6e, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x46,
-0x72, 0x65, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, 0x65, 0x6e, 0x64, 0x3b, 0x73, 0x6f, 0x74,
-0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72,
-0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76,
-0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72,
-0x67, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61,
-0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61,
-0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x73,
-0x6f, 0x3b, 0x6d, 0xe1, 0x3b, 0x64, 0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, 0x3b, 0x62, 0x65, 0x3b, 0x6c, 0xe1, 0x3b,
-0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x6d, 0xe1, 0x6e, 0x6e, 0x6f, 0x64, 0x61, 0x74,
-0x3b, 0x64, 0x69, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b,
-0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x74, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b,
-0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b,
-0x42, 0x3b, 0x4c, 0x3b, 0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b, 0x43, 0x6d, 0x74, 0x3b,
-0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72,
-0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65,
-0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49,
-0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b,
-0x43, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x45, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x77, 0x3b,
-0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x49, 0x74, 0x75, 0x6b,
-0x75, 0x20, 0x6a, 0x61, 0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20,
-0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x77,
-0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x75,
-0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61,
-0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, 0x67, 0x75, 0x77, 0x6f,
-0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x64, 0x65, 0x77, 0x3b, 0x61,
-0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, 0x77, 0x64, 0x3b, 0x68,
-0x62, 0x69, 0x3b, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x62, 0x61,
-0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a, 0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x73, 0x61, 0x61,
-0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e, 0x64, 0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, 0x2d, 0x62, 0x69, 0x69,
-0x72, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, 0x4b, 0x4d, 0x41, 0x3b,
-0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, 0x4e, 0x4d, 0x41, 0x3b,
-0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x169,
-0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x61, 0x3b,
-0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d,
-0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4e, 0x3b, 0x4e,
-0x3b, 0x41, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x49, 0x6c, 0x65,
-0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x61,
-0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4d, 0x64,
-0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4d, 0x64, 0x65, 0x72,
-0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65,
-0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, 0x61, 0x70, 0x61, 0x3b,
-0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, 0x3b, 0x41, 0x3b, 0x4b, 0x3b, 0x4f, 0x3b,
-0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b, 0x50, 0x69, 0x72, 0x3b,
-0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x69,
-0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b,
-0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68,
-0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e,
-0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x53, 0x69, 0x74,
-0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x4d,
-0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75,
-0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65,
-0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x49, 0x6a, 0x70,
-0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a,
-0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d,
-0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61,
-0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61,
-0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36,
-0x3b, 0x37, 0x3b, 0x31, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x3b, 0x2d30, 0x2d3d, 0x2d55,
-0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30,
-0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59,
-0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30,
-0x2d59, 0x3b, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, 0x3b, 0x61, 0x6b, 0x1e5b, 0x3b, 0x61, 0x6b,
-0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x3b, 0x61, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x61,
-0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x1e5b, 0x61, 0x73, 0x3b, 0x61, 0x6b,
-0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b,
-0x41, 0x63, 0x65, 0x3b, 0x41, 0x72, 0x69, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x68, 0x61, 0x3b, 0x41, 0x6d, 0x68, 0x3b,
-0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x41, 0x63, 0x65, 0x72, 0x3b, 0x41, 0x72, 0x69, 0x6d, 0x3b, 0x41, 0x72,
-0x61, 0x6d, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65,
-0x64, 0x3b, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x59, 0x61, 0x6e, 0x3b,
-0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d, 0x69,
-0x73, 0x3b, 0x53, 0x61, 0x79, 0x3b, 0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b,
-0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x61, 0x73,
-0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x61, 0x73, 0x73, 0x3b, 0x43, 0x3b, 0x52,
-0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, 0x41, 0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f,
-0x4b, 0x42, 0x3b, 0x4f, 0x4b, 0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4f, 0x4d, 0x4b, 0x3b, 0x53,
-0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77,
-0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b,
-0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f,
-0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x52, 0x3b, 0x53,
-0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x48, 0x69, 0x76, 0x3b, 0x48,
-0x69, 0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, 0x6d, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x75,
-0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61,
-0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x64, 0x61, 0x74, 0x75,
-0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61, 0x79, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75,
-0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d, 0x62, 0x65, 0x6c, 0x61, 0x3b, 0x4d, 0x3b, 0x4a,
-0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a,
-0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x41, 0x6c, 0x68, 0x61,
-0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69,
-0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x6b, 0x61, 0x72, 0x3b, 0x6e,
-0x74, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x3b, 0x73,
-0x69, 0x62, 0x3b, 0x6b, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x61, 0x74, 0x61,
-0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b,
-0x73, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53,
-0x3b, 0x4b, 0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6e, 0x3b, 0x41, 0x72, 0x6d,
-0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d,
-0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61,
-0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61,
-0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e,
-0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x3b, 0x13e6,
-0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6,
-0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e6, 0x13a2, 0x13c1,
-0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x13b6, 0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3,
-0x13c8, 0x13d5, 0x13be, 0x3b, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, 0x13c5, 0x3b, 0x13e7, 0x3b, 0x13a4, 0x3b, 0x64, 0x69,
-0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e,
-0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, 0x69, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61,
-0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x7a, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61,
-0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, 0x3b, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d,
-0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x4c, 0x6c, 0x32, 0x3b, 0x4c, 0x6c, 0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c,
-0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36, 0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, 0x31, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76,
-0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61,
-0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x63,
-0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b,
+0x430, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x3b, 0x10d, 0x65, 0x74, 0x3b,
+0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e,
+0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65,
+0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75,
+0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65,
+0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61,
+0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73,
+0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b,
+0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4,
+0x440, 0x442, 0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x3b, 0x425, 0x443, 0x44b, 0x446, 0x430,
+0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5,
+0x433, 0x3b, 0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b,
+0x41c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x425, 0x3b, 0x41a, 0x3b,
+0x414, 0x3b, 0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x3b, 0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446,
+0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x3b, 0x445, 0x443,
+0x44b, 0x446, 0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b,
+0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440,
+0x4d5, 0x43c, 0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x53,
+0x76, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68, 0x6e, 0x3b, 0x43,
+0x68, 0x73, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75, 0x72,
+0x6f, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68,
+0x69, 0x6e, 0x61, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, 0x65, 0x72,
+0x61, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x622, 0x686, 0x631, 0x3b,
+0x633, 0x648, 0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633,
+0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648, 0x3b, 0x627, 0x6b1,
+0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687,
+0x631, 0x3b, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf,
+0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1,
+0x3b, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf,
+0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1,
+0xdca, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf,
+0xdaf, 0xdcf, 0x3b, 0xd89, 0x3b, 0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3,
+0xdd9, 0x3b, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69, 0x3b,
+0x73, 0x6f, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75,
+0x74, 0x6f, 0x72, 0x6f, 0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b,
+0x3b, 0x70, 0x69, 0x61, 0x74, 0x6f, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75,
+0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74,
+0x6f, 0x72, 0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73,
+0x6f, 0x62, 0x2e, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a,
+0x65, 0x6b, 0x3b, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74,
+0x65, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b,
+0x74, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x54, 0x6c,
+0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x63, 0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63, 0x3b, 0x53, 0x62, 0x74,
+0x69, 0x3b, 0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x64,
+0x6f, 0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d,
+0x63, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x68, 0x3b,
+0x4a, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d,
+0x69, 0xe9, 0x2e, 0x3b, 0x6a, 0x75, 0x65, 0x2e, 0x3b, 0x76, 0x69, 0x65, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64,
+0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b,
+0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65,
+0x72, 0x6e, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d,
+0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b,
+0x74, 0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6, 0x72,
+0x3b, 0x73, 0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x73, 0x64, 0x61,
+0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65,
+0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421,
+0x448, 0x431, 0x3b, 0x427, 0x448, 0x431, 0x3b, 0x41f, 0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b, 0x428, 0x43d, 0x431, 0x3b, 0x42f,
+0x43a, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x414, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435, 0x448, 0x430, 0x43d,
+0x431, 0x435, 0x3b, 0x427, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431,
+0x435, 0x3b, 0x4b6, 0x443, 0x43c, 0x44a, 0x430, 0x3b, 0x428, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b,
+0x427, 0x3b, 0x41f, 0x3b, 0x4b6, 0x3b, 0x428, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b,
+0xb9a, 0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, 0xba4, 0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3,
+0xbcd, 0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3,
+0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf, 0xbaf,
+0xbbe, 0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0x3b, 0xba4,
+0xbbf, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x3b, 0x44f, 0x43a, 0x448, 0x2e,
+0x3b, 0x434, 0x4af, 0x448, 0x2e, 0x3b, 0x441, 0x438, 0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497,
+0x2e, 0x3b, 0x497, 0x43e, 0x43c, 0x2e, 0x3b, 0x448, 0x438, 0x43c, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b,
+0x434, 0x4af, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447, 0x4d9, 0x440, 0x448,
+0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x435, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x497, 0x43e, 0x43c, 0x433,
+0x430, 0x3b, 0x448, 0x438, 0x43c, 0x431, 0x4d9, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x496, 0x3b,
+0x428, 0x3b, 0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17,
+0xc41, 0xc30, 0xc41, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0x3b, 0xc06, 0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30,
+0xc02, 0x3b, 0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c,
+0xc41, 0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d,
+0xc30, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc06, 0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e,
+0x3b, 0xc2c, 0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, 0xc41, 0x3b, 0xc36, 0x3b, 0xe2d, 0xe32, 0x2e, 0x3b, 0xe08, 0x2e, 0x3b, 0xe2d,
+0x2e, 0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, 0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32,
+0xe17, 0xe34, 0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d,
+0xe31, 0xe07, 0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31,
+0xe2a, 0xe1a, 0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32,
+0xe23, 0xe4c, 0x3b, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, 0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0x3b, 0xf49,
+0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b,
+0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66,
+0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b,
+0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58,
+0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74,
+0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60,
+0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf42, 0x3b, 0xf63,
+0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0x1230, 0x1295, 0x3b, 0x1230,
+0x1291, 0x3b, 0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, 0x1213, 0x1219, 0x3b, 0x12d3, 0x122d, 0x3b, 0x1240, 0x12f3, 0x3b, 0x1230, 0x1295, 0x1260,
+0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d,
+0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b,
+0x1230, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d,
+0x6e, 0x3b, 0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54,
+0x6f, 0x6b, 0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73,
+0x69, 0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c,
+0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, 0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61,
+0x6b, 0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x3b, 0x50, 0x61, 0x7a,
+0x3b, 0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d,
+0x3b, 0x43, 0x6d, 0x74, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69,
+0x3b, 0x53, 0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65,
+0x6d, 0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x50,
+0x3b, 0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f,
+0x3b, 0x53, 0x69, 0x15f, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e, 0x3b, 0x15e, 0x65, 0x6e,
+0x3b, 0xdd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x53, 0x69,
+0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x50, 0x65, 0x6e, 0x15f, 0x65,
+0x6e, 0x62, 0x65, 0x3b, 0x41, 0x6e, 0x6e, 0x61, 0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xdd, 0x3b, 0x44, 0x3b, 0x53,
+0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, 0x3b, 0xfd, 0x65, 0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b, 0x73, 0x69, 0x15f,
+0x3b, 0xe7, 0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, 0x3b, 0x61, 0x6e, 0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0x3b, 0xfd, 0x65, 0x6b,
+0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62,
+0x65, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b,
+0x61, 0x6e, 0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b,
+0x686, 0x627, 0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x3b, 0x634, 0x6d5, 0x3b, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5,
+0x3b, 0x62f, 0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686, 0x627,
+0x631, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645, 0x6d5,
+0x3b, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x64a, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634,
+0x3b, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456,
+0x432, 0x442, 0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440,
+0x3b, 0x43f, 0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x41d, 0x3b, 0x41f,
+0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631,
+0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639,
+0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x59, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68, 0x3b, 0x53, 0x65, 0x73, 0x68,
+0x3b, 0x43, 0x68, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x3b, 0x79,
+0x61, 0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73, 0x65,
+0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70, 0x61,
+0x79, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b,
+0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b,
+0x633, 0x2e, 0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, 0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x3b, 0x434,
+0x443, 0x448, 0x3b, 0x441, 0x435, 0x448, 0x3b, 0x447, 0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b, 0x448,
+0x430, 0x43d, 0x3b, 0x44f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x441,
+0x435, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439, 0x448,
+0x430, 0x43d, 0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x42f, 0x3b, 0x414, 0x3b,
+0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, 0x428, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68,
+0x20, 0x33, 0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68,
+0x20, 0x37, 0x3b, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, 0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b,
+0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103,
+0x6d, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, 0x3b, 0x43, 0x4e,
+0x3b, 0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, 0x37, 0x3b, 0x53,
+0x75, 0x3b, 0x4d, 0x75, 0x3b, 0x54, 0x75, 0x3b, 0x56, 0x65, 0x3b, 0x44, 0xf6, 0x3b, 0x46, 0x72, 0x3b, 0x5a, 0xe4, 0x3b,
+0x73, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x6d, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x74, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x76, 0x65,
+0x64, 0x65, 0x6c, 0x3b, 0x64, 0xf6, 0x64, 0x65, 0x6c, 0x3b, 0x66, 0x72, 0x69, 0x64, 0x65, 0x6c, 0x3b, 0x7a, 0xe4, 0x64,
+0x65, 0x6c, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x5a, 0x3b, 0x73, 0x75, 0x2e,
+0x3b, 0x6d, 0x75, 0x2e, 0x3b, 0x74, 0x75, 0x2e, 0x3b, 0x76, 0x65, 0x2e, 0x3b, 0x64, 0xf6, 0x2e, 0x3b, 0x66, 0x72, 0x2e,
+0x3b, 0x7a, 0xe4, 0x2e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65,
+0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53,
+0x75, 0x6c, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61,
+0x77, 0x72, 0x74, 0x68, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79,
+0x64, 0x64, 0x20, 0x49, 0x61, 0x75, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44,
+0x79, 0x64, 0x64, 0x20, 0x53, 0x61, 0x64, 0x77, 0x72, 0x6e, 0x3b, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b,
+0x49, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d,
+0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x69, 0x62, 0x3b,
+0x41, 0x6c, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0, 0x6a, 0x6a, 0x3b,
+0x41, 0x73, 0x65, 0x3b, 0x44, 0x69, 0x62, 0xe9, 0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74, 0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61,
+0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0xc0, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x61, 0x6d, 0x69, 0x73,
+0x3b, 0xc0, 0x6a, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x65, 0x65, 0x72, 0x3b, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76,
+0x75, 0x3b, 0x42, 0x69, 0x6e, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67,
+0x71, 0x3b, 0x43, 0x61, 0x77, 0x65, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69,
+0x6e, 0x69, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69,
+0x6e, 0x65, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65,
+0x6c, 0x6f, 0x3b, 0x5d6, 0x5d5, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9,
+0x5e0, 0x5e1, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d9, 0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0, 0x5e2, 0x5e8, 0x5e9,
+0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8, 0x5f2, 0x5b7, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0xc0, 0xec, 0x6b,
+0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301,
+0x62, 0x3b, 0x1eb8, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc,
+0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd,
+0x3b, 0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b,
+0x1ecc, 0x3b, 0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x1ecc, 0x6a,
+0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b,
+0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8,
+0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0xec, 0x6b,
+0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301,
+0x62, 0x3b, 0x190, 0x74, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc,
+0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254,
+0x3b, 0x190, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b,
+0x186, 0x3b, 0x186, 0x3b, 0x190, 0x3b, 0xc0, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x186, 0x6a,
+0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b,
+0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x190,
+0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x53, 0x6f, 0x6e,
+0x3b, 0x4d, 0x73, 0x6f, 0x3b, 0x42, 0x69, 0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61,
+0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x49, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75, 0x6c,
+0x75, 0x6b, 0x6f, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73,
+0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c, 0x77,
+0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53,
+0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e,
+0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61, 0x75,
+0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, 0x64, 0x61,
+0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65,
+0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61, 0x75, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, 0x2e, 0x3b,
+0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x3b,
+0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b, 0x447, 0x435, 0x442, 0x3b,
+0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435,
+0x434, 0x458, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434,
+0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431,
+0x43e, 0x442, 0x430, 0x3b, 0x4a, 0x65, 0x64, 0x3b, 0x4a, 0x65, 0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63,
+0x3b, 0x4a, 0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68, 0x3b, 0x4a, 0x65, 0x73, 0x3b, 0x4a, 0x65, 0x64, 0x6f, 0x6f, 0x6e,
+0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a,
+0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69,
+0x6e, 0x65, 0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d,
+0x74, 0x68, 0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x64,
+0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, 0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72,
+0x74, 0x68, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77, 0x3b,
+0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b,
+0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e, 0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b,
+0x46, 0x69, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x3b, 0x4b, 0x77, 0x65, 0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77,
+0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57, 0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77,
+0x64, 0x61, 0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x65, 0x6e, 0x65, 0x64, 0x61, 0x3b, 0x4b, 0x3b, 0x44,
+0x3b, 0x42, 0x3b, 0x57, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x906, 0x92f, 0x924, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e,
+0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x917, 0x941, 0x930,
+0x941, 0x935, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947, 0x928, 0x935, 0x93e, 0x930, 0x3b,
+0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x917, 0x941, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b,
+0x1ee4, 0x6b, 0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b,
+0x46, 0x72, 0x61, 0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, 0x1ecd, 0x6e, 0x64, 0x65, 0x65, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64,
+0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x54,
+0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x64, 0x65, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64,
+0x65, 0x65, 0x3b, 0x57, 0x6b, 0x79, 0x3b, 0x57, 0x6b, 0x77, 0x3b, 0x57, 0x6b, 0x6c, 0x3b, 0x57, 0x74, 0x169, 0x3b, 0x57,
+0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74, 0x68, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61,
+0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6d, 0x62, 0x129, 0x6c, 0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b,
+0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e,
+0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x57, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74,
+0x68, 0x61, 0x74, 0x169, 0x3b, 0x59, 0x3b, 0x57, 0x3b, 0x45, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x64,
+0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76,
+0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73,
+0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69,
+0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x69, 0x64, 0x65, 0x3b, 0x6b, 0x254, 0x73,
+0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256,
+0x3b, 0x6d, 0x65, 0x6d, 0x3b, 0x6b, 0x254, 0x73, 0x69, 0x256, 0x61, 0x3b, 0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c,
+0x61, 0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, 0x61, 0x77, 0x6f, 0x256, 0x61, 0x3b, 0x66, 0x69, 0x256, 0x61,
+0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61, 0x3b, 0x6b, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x6b, 0x3b, 0x79, 0x3b, 0x66,
+0x3b, 0x6d, 0x3b, 0x4c, 0x50, 0x3b, 0x50, 0x31, 0x3b, 0x50, 0x32, 0x3b, 0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35,
+0x3b, 0x50, 0x36, 0x3b, 0x4c, 0x101, 0x70, 0x75, 0x6c, 0x65, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b,
+0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb,
+0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x69, 0x6d, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f,
+0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77,
+0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4c, 0x69, 0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65,
+0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b,
+0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62,
+0x61, 0x64, 0x6f, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, 0x2e, 0x3b, 0x5a, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b,
+0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b,
+0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, 0x69, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69,
+0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72, 0x69,
+0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd,
+0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, 0xa18f, 0xa1d6, 0x3b, 0xa18f, 0xa26c, 0x3b, 0xa18f, 0xa0d8, 0x3b, 0xa46d, 0xa18f, 0xa44d, 0x3b,
+0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa315, 0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b,
+0xa18f, 0xa282, 0xa0d8, 0x3b, 0xa18f, 0x3b, 0xa2cd, 0x3b, 0xa44d, 0x3b, 0xa315, 0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x3b, 0x53, 0xfc,
+0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72,
+0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61,
+0x67, 0x3b, 0x44, 0x69, 0x6e, 0x67, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x64, 0x64, 0x65, 0x77, 0x65, 0x6b, 0x65,
+0x6e, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x65, 0x64, 0x61, 0x67,
+0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, 0x65, 0x6e, 0x64, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73,
+0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b,
+0x6c, 0xe1, 0x76, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73,
+0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61, 0x73,
+0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62,
+0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53,
+0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x73, 0x6f, 0x3b, 0x6d, 0xe1, 0x3b, 0x64,
+0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, 0x3b, 0x62, 0x65, 0x3b, 0x6c, 0xe1, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62,
+0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x6d, 0xe1, 0x6e, 0x6e, 0x6f, 0x64, 0x61, 0x74, 0x3b, 0x64, 0x69, 0x73, 0x64, 0x61,
+0x74, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73,
+0x74, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72,
+0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x43, 0x70,
+0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b, 0x43, 0x6d, 0x74, 0x3b, 0x41, 0x72, 0x73, 0x3b, 0x49, 0x63,
+0x6d, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d,
+0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61,
+0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b,
+0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x49, 0x3b,
+0x45, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61,
+0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x49, 0x74, 0x75, 0x6b, 0x75, 0x20, 0x6a, 0x61, 0x20, 0x6a,
+0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72,
+0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61,
+0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61,
+0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e,
+0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, 0x67, 0x75, 0x77, 0x6f, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b,
+0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x64, 0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77,
+0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, 0x77, 0x64, 0x3b, 0x68, 0x62, 0x69, 0x3b, 0x64, 0x65, 0x77,
+0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a,
+0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61,
+0x77, 0x6e, 0x64, 0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, 0x2d, 0x62, 0x69, 0x69, 0x72, 0x3b, 0x64, 0x3b, 0x61, 0x3b,
+0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, 0x4b, 0x4d, 0x41, 0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d,
+0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, 0x4e, 0x4d, 0x41, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69,
+0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61,
+0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74,
+0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69,
+0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x72, 0x65, 0x3b, 0x4b,
+0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b,
+0x77, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65,
+0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65,
+0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20,
+0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d,
+0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, 0x61, 0x70, 0x61, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74,
+0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, 0x3b, 0x41, 0x3b, 0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b,
+0x4b, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b, 0x50, 0x69, 0x72, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61,
+0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68,
+0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74,
+0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61,
+0x62, 0x75, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53,
+0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53,
+0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53,
+0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b,
+0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d,
+0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x49, 0x6a, 0x70, 0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49,
+0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x3b,
+0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b,
+0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41,
+0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61,
+0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x31, 0x3b, 0x2d30,
+0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30,
+0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30,
+0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59,
+0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x61, 0x73, 0x61, 0x3b,
+0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, 0x3b, 0x61, 0x6b, 0x1e5b, 0x3b, 0x61, 0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d,
+0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x3b, 0x61, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61,
+0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x1e5b, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73,
+0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x63, 0x65, 0x3b, 0x41, 0x72,
+0x69, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x68, 0x61, 0x3b, 0x41, 0x6d, 0x68, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65,
+0x64, 0x3b, 0x41, 0x63, 0x65, 0x72, 0x3b, 0x41, 0x72, 0x69, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x3b, 0x41, 0x68, 0x61,
+0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x59, 0x3b, 0x53, 0x3b,
+0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72,
+0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x3b,
+0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73,
+0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73,
+0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x61, 0x73, 0x73, 0x3b, 0x43, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x4d,
+0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, 0x41, 0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42, 0x3b, 0x4f, 0x4b, 0x53,
+0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4f, 0x4d, 0x4b, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4f,
+0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72,
+0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61,
+0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6d,
+0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d,
+0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x48, 0x69, 0x76, 0x3b, 0x48, 0x69, 0x64, 0x3b, 0x48, 0x69, 0x74,
+0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, 0x6d, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b,
+0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69,
+0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69,
+0x74, 0x61, 0x79, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68,
+0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d, 0x62, 0x65, 0x6c, 0x61, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x48,
+0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e,
+0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c,
+0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49,
+0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a,
+0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x6b, 0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b, 0x74, 0x61, 0x72,
+0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x62, 0x3b, 0x6b, 0x61, 0x72,
+0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x72, 0x61, 0x62, 0x61,
+0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69, 0x72, 0x69,
+0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x4b, 0x6d, 0x61, 0x3b, 0x54,
+0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6e, 0x3b, 0x41, 0x72, 0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e,
+0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b,
+0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41,
+0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61,
+0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4e,
+0x3b, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1,
+0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9,
+0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1,
+0x13a2, 0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x13b6, 0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13c6, 0x3b,
+0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, 0x13c5, 0x3b, 0x13e7, 0x3b, 0x13a4, 0x3b, 0x64, 0x69, 0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b,
+0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x64,
+0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, 0x69, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65,
+0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x7a, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69,
+0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, 0x3b, 0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73,
+0x3b, 0x4c, 0x6c, 0x32, 0x3b, 0x4c, 0x6c, 0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36,
+0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, 0x31, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70,
+0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c,
+0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64,
+0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61,
+0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b,
0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20,
-0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61,
-0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20,
-0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x50, 0xed, 0x69, 0x6c, 0x69, 0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b,
-0xcd, 0x6e, 0x65, 0x3b, 0x54, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4d, 0xf3,
-0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1,
-0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f,
-0x3b, 0x41, 0x6c, 0x61, 0x6d, 0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d,
-0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x45, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d,
-0x3b, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, 0x3b, 0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34,
-0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x3b, 0x53, 0x61, 0x62, 0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61,
-0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75,
-0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74, 0x61,
-0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x4c,
-0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x50, 0x61, 0x20, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b,
-0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c,
-0x69, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68,
-0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68,
-0x69, 0x62, 0x65, 0x6c, 0x75, 0x73, 0x68, 0x69, 0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x67, 0x3b, 0x74, 0x65, 0x72,
-0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x75, 0x6d,
-0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65,
-0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61,
-0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65,
-0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b,
-0x53, 0x3b, 0x53, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d,
-0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72,
-0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73,
-0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x49, 0x55,
-0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41, 0x49, 0x3b, 0x57, 0x45, 0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54, 0x4e,
-0x3b, 0x4a, 0x55, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x6f,
-0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65, 0x74, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b,
-0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b,
-0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4b, 0x74, 0x73, 0x3b, 0x4b, 0x6f, 0x74, 0x3b, 0x4b, 0x6f,
-0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61, 0x3b, 0x4b, 0x6f, 0x6d, 0x3b, 0x4b, 0x6f, 0x6c, 0x3b, 0x4b, 0x6f,
-0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74, 0x61, 0x61, 0x69, 0x3b, 0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019,
-0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, 0x4b, 0x6f, 0x61, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b,
-0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x4b, 0x6f, 0x6c, 0x6f, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41,
-0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x61, 0x3b, 0x44, 0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f,
-0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, 0x6f, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b,
-0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74,
-0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f,
-0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x69, 0x74, 0x61, 0x78,
-0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x74, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b,
-0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f,
-0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61,
-0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, 0x6f, 0x68, 0x6e, 0x64, 0x61, 0x61, 0x63,
-0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68,
-0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61,
-0x61, 0x63, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed,
-0x6c, 0xed, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e, 0x254, 0x3b, 0x41, 0x6c, 0x61, 0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d,
-0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c,
-0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69, 0x3b, 0x4b, 0x75, 0x73, 0x61, 0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74,
-0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a,
-0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74,
-0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75,
-0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x53, 0x3b,
-0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4a, 0x32, 0x3b, 0x4a, 0x33, 0x3b, 0x4a, 0x34, 0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c,
-0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
-0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e,
-0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72,
-0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73,
-0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c,
-0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61,
-0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b, 0x55, 0x6e, 0x67, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61,
-0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b,
-0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61,
-0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61,
-0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x4a, 0x3b, 0x42, 0x3b, 0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53,
-0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d,
-0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e,
-0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68,
-0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x73, 0x61, 0x62, 0x64,
-0x75, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x4a, 0x4d, 0x50, 0x3b,
-0x57, 0x55, 0x54, 0x3b, 0x54, 0x41, 0x52, 0x3b, 0x54, 0x41, 0x44, 0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b,
-0x4e, 0x47, 0x53, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63,
-0x68, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x64,
-0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63, 0x68,
-0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, 0x65, 0x73, 0x6f, 0x3b, 0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54,
-0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x41, 0x73, 0x61, 0x3b, 0x41, 0x79, 0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41,
-0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b, 0x41, 0x73, 0x6d, 0x3b, 0x41, 0x73, 0x1e0d, 0x3b, 0x41, 0x73, 0x61, 0x6d, 0x61,
-0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73,
-0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x1e0d, 0x79,
-0x61, 0x73, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6c, 0x68,
-0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a,
-0x3b, 0x41, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41,
-0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d,
-0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x4a,
-0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49,
-0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
-0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74,
-0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b,
-0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b,
-0x49, 0x3b, 0x31, 0x3b, 0x930, 0x92c, 0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b,
-0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f,
-0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941,
-0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c,
-0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941,
-0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, 0x3b, 0x43a, 0x4c0, 0x438, 0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b,
-0x43a, 0x445, 0x430, 0x3b, 0x435, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x3b, 0x448, 0x443, 0x43e, 0x3b, 0x43a, 0x4c0, 0x438, 0x440, 0x430,
-0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442, 0x3b, 0x448, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x430,
-0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x440, 0x430, 0x441, 0x43a, 0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x3b,
-0x43a, 0x4c0, 0x3b, 0x43e, 0x3b, 0x448, 0x3b, 0x43a, 0x445, 0x3b, 0x435, 0x3b, 0x43f, 0x4c0, 0x3b, 0x448, 0x3b, 0x43d, 0x434, 0x2de7,
-0x487, 0x467, 0x3b, 0x43f, 0x43d, 0x2de3, 0x435, 0x3b, 0x432, 0x442, 0x43e, 0x2dec, 0x487, 0x3b, 0x441, 0x440, 0x2de3, 0x435, 0x3b, 0x447,
-0x435, 0x2de6, 0x487, 0x3b, 0x43f, 0x467, 0x2de6, 0x487, 0x3b, 0x441, 0xa64b, 0x2de0, 0x487, 0x3b, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b,
-0x467, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x432, 0x442, 0x43e, 0x301,
-0x440, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x300, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x442,
-0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x43f, 0x467, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x441, 0xa64b, 0x431, 0x431, 0x461, 0x301, 0x442,
-0x430, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, 0x3b, 0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a,
-0x77, 0x3b, 0x4e, 0x67, 0x76, 0x3b, 0x4c, 0x75, 0x62, 0x3b, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b,
-0x6f, 0x64, 0x79, 0x61, 0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, 0x64, 0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e,
-0x6a, 0xf2, 0x77, 0x61, 0x3b, 0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75, 0x62, 0x69, 0x6e, 0x67, 0x75, 0x3b,
-0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0xe9,
-0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b, 0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x65, 0x3b, 0x53, 0x61,
-0x6d, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xe9, 0x69, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb,
-0x6e, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e,
-0x6e, 0x65, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d,
-0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, 0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e,
-0x2e, 0x3b, 0x4d, 0xeb, 0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, 0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d,
-0x2e, 0x3b, 0x6e, 0x74, 0x73, 0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, 0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d,
-0x65, 0x3b, 0x67, 0x68, 0x268, 0x3b, 0x64, 0x7a, 0x6b, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74,
-0x73, 0x75, 0x294, 0x75, 0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x254, 0x65, 0x3b, 0x74, 0x73,
-0x75, 0x294, 0x75, 0x74, 0x254, 0x300, 0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73,
-0x75, 0x294, 0x75, 0x67, 0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294,
-0x254, 0x3b, 0x6e, 0x3b, 0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b, 0x64, 0x3b, 0x6e, 0x254, 0x79, 0x3b,
-0x6e, 0x6a, 0x61, 0x3b, 0x75, 0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, 0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b,
-0x6a, 0x6f, 0x6e, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e,
-0x6a, 0x61, 0x14b, 0x67, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77,
-0xe0, 0x20, 0x14b, 0x67, 0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, 0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0,
-0x20, 0x6b, 0x254, 0x254, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x75, 0x3b,
-0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6a, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e,
-0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c,
-0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69,
-0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53, 0x3b, 0xe9, 0x74, 0x3b, 0x6d, 0x254,
-0x301, 0x73, 0x3b, 0x6b, 0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, 0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65,
-0x73, 0x61, 0x3b, 0xe9, 0x74, 0x69, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, 0x77, 0x61, 0x73, 0xfa, 0x3b, 0x6d,
-0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, 0x257, 0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b,
-0x65, 0x73, 0x61, 0x253, 0x61, 0x73, 0xfa, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b,
-0x65, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72,
-0x61, 0x3b, 0x41, 0x72, 0x6a, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x61, 0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65,
-0x14b, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x61,
-0x6d, 0x69, 0x73, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x74, 0x69, 0x3b,
-0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d,
-0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b,
-0x73, 0xe9, 0x72, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254,
-0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, 0x25b, 0x30c, 0x3b, 0x73, 0x254, 0x301,
-0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, 0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e,
-0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, 0x69, 0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64,
-0xe9, 0x3b, 0x73, 0xe9, 0x72, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66,
-0x3b, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, 0x61, 0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b,
-0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c,
-0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x61, 0x64, 0xed, 0x3b, 0x6d, 0x25b, 0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a,
-0x1dd, 0x1dd, 0x64, 0xed, 0x3b, 0x6a, 0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0xed, 0x3b, 0x73, 0x3b, 0x6c,
-0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a,
-0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x53,
-0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e,
-0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73,
-0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x3b,
-0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x43, 0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b,
-0x43, 0x7a, 0x69, 0x3b, 0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, 0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x3b,
-0x43, 0x6f, 0x6d, 0x2019, 0x79, 0x61, 0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b,
-0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b,
-0x43, 0x6f, 0x6d, 0x6b, 0x61, 0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73,
-0x75, 0x75, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, 0x3b, 0x59, 0x3b, 0x4c, 0x3b, 0x5a, 0x3b,
-0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x45, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d,
-0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, 0x3b, 0x73, 0x61, 0x73, 0x3b, 0x73, 0x254,
-0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d,
-0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa,
-0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d,
-0xe1, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, 0x20, 0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b,
-0x73, 0xe1, 0x73, 0x61, 0x64, 0x69, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73,
-0x3b, 0x43, 0xe4, 0x14b, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b,
-0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x3b, 0x43,
-0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52,
-0x25b, 0x77, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69,
-0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20,
-0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x43, 0x3b,
-0x4a, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x431, 0x441, 0x3b, 0x431, 0x43d, 0x3b, 0x43e, 0x43f,
-0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f, 0x3b, 0x431, 0x44d, 0x3b, 0x441, 0x431, 0x3b, 0x431, 0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b,
-0x430, 0x43d, 0x43d, 0x44c, 0x430, 0x3b, 0x431, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x43e,
-0x43f, 0x442, 0x443, 0x43e, 0x440, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x441, 0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447,
-0x44d, 0x43f, 0x43f, 0x438, 0x44d, 0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, 0x44d, 0x3b, 0x441, 0x443, 0x431, 0x443,
-0x43e, 0x442, 0x430, 0x3b, 0x411, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x411, 0x3b, 0x421, 0x3b, 0x4d, 0x75,
-0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a,
-0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61,
-0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b,
-0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d,
-0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b,
-0xa55e, 0xa54c, 0xa535, 0x3b, 0xa5f3, 0xa5e1, 0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562,
-0x3b, 0xa549, 0xa524, 0xa540, 0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x3b, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b,
-0x6e, 0x25b, 0x25b, 0x3b, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d,
-0x69, 0x73, 0x61, 0x3b, 0x61, 0x69, 0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x253, 0x69, 0x74, 0x69, 0x3b, 0x53, 0x75,
-0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b, 0x5a, 0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72,
-0x69, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67,
-0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e,
-0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x53,
-0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d,
-0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x69,
-0x25b, 0x3b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, 0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64,
-0x69, 0x65, 0x3b, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, 0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69,
-0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9,
-0x73, 0x65, 0x6c, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x64,
-0x6f, 0x6d, 0x3b, 0x6c, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76,
-0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65,
-0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78,
-0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75,
-0x3b, 0x53, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20,
-0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301,
-0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b, 0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b,
-0x3b, 0x53, 0x254, 0x301, 0x3b, 0x4d, 0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b, 0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b,
-0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x3b, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61,
-0x72, 0x64, 0x69, 0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x79, 0x65, 0x64, 0x69, 0x3b, 0x76,
-0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b,
-0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, 0x65, 0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73,
-0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20,
-0x33, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67,
-0x20, 0x36, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x3b, 0x41, 0x31, 0x3b, 0x41, 0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41,
-0x34, 0x3b, 0x41, 0x35, 0x3b, 0x41, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x6c, 0x79, 0x25b, 0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85,
-0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301,
-0x254, 0x6e, 0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74,
-0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20,
-0x74, 0x73, 0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20,
-0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c,
-0x2bc, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74,
-0x75, 0x77, 0x61, 0x14b, 0x17e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41,
-0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79, 0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70,
-0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67,
-0x79, 0x75, 0x17e, 0x61, 0x17e, 0x61, 0x70, 0x69, 0x3b, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a,
-0x3b, 0x4f, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f,
-0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61,
-0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b,
-0x62f, 0x648, 0x648, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627,
-0x631, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc,
-0x646, 0x6cc, 0x3b, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be,
-0x3b, 0x634, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73,
-0x74, 0x77, 0x3b, 0x70, 0x11b, 0x74, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70,
-0xf3, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a,
-0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62,
-0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x6a,
-0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a,
-0x61, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a,
-0x65, 0x6c, 0x61, 0x3b, 0x77, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74,
-0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e,
-0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x61, 0x64, 0x3b, 0x70, 0x61, 0x6e,
-0x3b, 0x77, 0x69, 0x73, 0x3b, 0x70, 0x75, 0x73, 0x3b, 0x6b, 0x65, 0x74, 0x3b, 0x70, 0x113, 0x6e, 0x3b, 0x73, 0x61, 0x62,
-0x3b, 0x6e, 0x61, 0x64, 0x12b, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x6e, 0x61, 0x64, 0x12b, 0x6c, 0x69, 0x3b, 0x77, 0x69, 0x73,
-0x61, 0x73, 0x12b, 0x64, 0x69, 0x73, 0x3b, 0x70, 0x75, 0x73, 0x73, 0x69, 0x73, 0x61, 0x77, 0x61, 0x69, 0x74, 0x69, 0x3b,
-0x6b, 0x65, 0x74, 0x77, 0x69, 0x72, 0x74, 0x69, 0x6b, 0x73, 0x3b, 0x70, 0x113, 0x6e, 0x74, 0x6e, 0x69, 0x6b, 0x73, 0x3b,
-0x73, 0x61, 0x62, 0x61, 0x74, 0x74, 0x69, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4b, 0x3b,
-0x50, 0x3b, 0x53, 0x3b, 0x70, 0x61, 0x73, 0x3b, 0x76, 0x75, 0x6f, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b,
-0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1, 0x73, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69, 0x76,
-0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67,
-0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0xe2, 0x68,
-0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0xe2,
-0x68, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61,
-0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f,
-0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70,
-0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0x75, 0x76, 0x3b, 0x70, 0x3b, 0x56, 0x3b, 0x4d,
-0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x4c, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72,
-0x3b, 0x4d, 0x6b, 0x73, 0x3b, 0x48, 0x75, 0x3b, 0x42, 0x69, 0x3b, 0x53, 0x61, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67,
-0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72,
-0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e,
-0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x48, 0x3b,
-0x42, 0x3b, 0x53, 0x3b
+0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64,
+0x69, 0x3b, 0x50, 0xed, 0x69, 0x6c, 0x69, 0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65, 0x3b, 0x54, 0xe1,
+0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x6d, 0xed,
+0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69,
+0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x45, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x42,
+0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, 0x3b, 0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34, 0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c,
+0x77, 0x36, 0x3b, 0x53, 0x61, 0x62, 0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c,
+0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c,
+0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77,
+0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c,
+0x3b, 0x4c, 0x3b, 0x50, 0x61, 0x20, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68,
+0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50, 0x61, 0x6c, 0x69,
+0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61,
+0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6c, 0x75, 0x73,
+0x68, 0x69, 0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b,
+0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73,
+0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65,
+0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61,
+0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62,
+0x61, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x75,
+0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x74,
+0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72,
+0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66,
+0x65, 0x72, 0x61, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57,
+0x41, 0x49, 0x3b, 0x57, 0x45, 0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54, 0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x3b, 0x4b,
+0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69,
+0x3b, 0x57, 0x65, 0x74, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b, 0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b,
+0x57, 0x3b, 0x4a, 0x3b, 0x4b, 0x74, 0x73, 0x3b, 0x4b, 0x6f, 0x74, 0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b,
+0x4b, 0x6f, 0x61, 0x3b, 0x4b, 0x6f, 0x6d, 0x3b, 0x4b, 0x6f, 0x6c, 0x3b, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b,
+0x4b, 0x6f, 0x74, 0x61, 0x61, 0x69, 0x3b, 0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d,
+0x6f, 0x6b, 0x3b, 0x4b, 0x6f, 0x61, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b,
+0x4b, 0x6f, 0x6c, 0x6f, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x53,
+0x6f, 0x6e, 0x3b, 0x4d, 0x61, 0x3b, 0x44, 0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61,
+0x74, 0x3b, 0x53, 0x6f, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78,
+0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57,
+0x75, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61,
+0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x69, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b,
+0x53, 0x61, 0x74, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b,
+0x57, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b,
+0x4d, 0x65, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e,
+0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, 0x6f, 0x68, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e,
+0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65,
+0x72, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61,
+0x6d, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e,
+0x254, 0x3b, 0x41, 0x6c, 0x61, 0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x6d, 0xf3, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69,
+0x3b, 0x4b, 0x75, 0x73, 0x61, 0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61,
+0x3b, 0x53, 0x61, 0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b,
+0x75, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b,
+0x75, 0x6e, 0x61, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75,
+0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b,
+0x4a, 0x32, 0x3b, 0x4a, 0x33, 0x3b, 0x4a, 0x34, 0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77,
+0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20,
+0x4b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b,
+0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b,
+0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b,
+0x55, 0x6e, 0x67, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d,
+0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72,
+0x65, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e,
+0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69,
+0x3b, 0x4a, 0x3b, 0x42, 0x3b, 0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41,
+0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41,
+0x73, 0x73, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c,
+0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61,
+0x3b, 0x41, 0x6c, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x3b, 0x48, 0x3b, 0x54, 0x3b,
+0x54, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54, 0x3b, 0x54, 0x41,
+0x52, 0x3b, 0x54, 0x41, 0x44, 0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b, 0x4e, 0x47, 0x53, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x70, 0x69, 0x6c, 0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63, 0x68, 0x3b, 0x54, 0x69, 0x63, 0x68,
+0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63,
+0x68, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68,
+0x3b, 0x4e, 0x67, 0x65, 0x73, 0x6f, 0x3b, 0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e,
+0x3b, 0x41, 0x73, 0x61, 0x3b, 0x41, 0x79, 0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77,
+0x3b, 0x41, 0x73, 0x6d, 0x3b, 0x41, 0x73, 0x1e0d, 0x3b, 0x41, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61,
+0x73, 0x3b, 0x41, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73,
+0x3b, 0x41, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x3b, 0x41,
+0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41,
+0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41, 0x73, 0x69, 0x3b, 0x41,
+0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74,
+0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41,
+0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74,
+0x3b, 0x4a, 0x6d, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f,
+0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c,
+0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d,
+0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x31, 0x3b, 0x930, 0x92c,
+0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b,
+0x938, 0x941, 0x916, 0x941, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e,
+0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c,
+0x93f, 0x938, 0x925, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928,
+0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941,
+0x3b, 0x938, 0x941, 0x3b, 0x43a, 0x4c0, 0x438, 0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b, 0x43a, 0x445, 0x430, 0x3b, 0x435, 0x430,
+0x3b, 0x43f, 0x4c0, 0x435, 0x3b, 0x448, 0x443, 0x43e, 0x3b, 0x43a, 0x4c0, 0x438, 0x440, 0x430, 0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442,
+0x3b, 0x448, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x430, 0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b,
+0x43f, 0x4c0, 0x435, 0x440, 0x430, 0x441, 0x43a, 0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x3b, 0x43a, 0x4c0, 0x3b, 0x43e, 0x3b, 0x448,
+0x3b, 0x43a, 0x445, 0x3b, 0x435, 0x3b, 0x43f, 0x4c0, 0x3b, 0x448, 0x3b, 0x43d, 0x434, 0x2de7, 0x487, 0x467, 0x3b, 0x43f, 0x43d, 0x2de3,
+0x435, 0x3b, 0x432, 0x442, 0x43e, 0x2dec, 0x487, 0x3b, 0x441, 0x440, 0x2de3, 0x435, 0x3b, 0x447, 0x435, 0x2de6, 0x487, 0x3b, 0x43f, 0x467,
+0x2de6, 0x487, 0x3b, 0x441, 0xa64b, 0x2de0, 0x487, 0x3b, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x467, 0x3b, 0x43f, 0x43e, 0x43d, 0x435,
+0x434, 0x463, 0x301, 0x43b, 0x44c, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x432, 0x442, 0x43e, 0x301, 0x440, 0x43d, 0x438, 0x43a, 0x44a, 0x3b,
+0x441, 0x440, 0x435, 0x434, 0x430, 0x300, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x43f,
+0x467, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x441, 0xa64b, 0x431, 0x431, 0x461, 0x301, 0x442, 0x430, 0x3b, 0x4c, 0x75, 0x6d, 0x3b,
+0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, 0x3b, 0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67, 0x76, 0x3b,
+0x4c, 0x75, 0x62, 0x3b, 0x4c, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f, 0x64, 0x79, 0x61, 0x3b, 0x4e,
+0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, 0x64, 0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, 0x3b, 0x4e,
+0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75, 0x62, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b,
+0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b,
+0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, 0x46, 0x72, 0x65, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x6f, 0x6e, 0x6e,
+0x64, 0x65, 0x67, 0x3b, 0x4d, 0xe9, 0x69, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb, 0x6e, 0x73, 0x63, 0x68, 0x64, 0x65,
+0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63, 0x68, 0x64,
+0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67,
+0x3b, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, 0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e, 0x2e, 0x3b, 0x4d, 0xeb, 0x74, 0x2e,
+0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, 0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x74, 0x73, 0x3b,
+0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, 0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, 0x268, 0x3b,
+0x64, 0x7a, 0x6b, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6b, 0x70,
+0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x254, 0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74, 0x254, 0x300,
+0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x268,
+0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x3b, 0x6e, 0x3b, 0x6b, 0x3b,
+0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b, 0x64, 0x3b, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61, 0x3b, 0x75, 0x75,
+0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, 0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x3b, 0x14b, 0x67,
+0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x6a, 0x61, 0x14b, 0x67, 0x75, 0x6d,
+0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x14b, 0x67, 0xea, 0x3b,
+0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, 0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b, 0x254, 0x254, 0x3b, 0x14b,
+0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b,
+0x6a, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c,
+0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69,
+0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54,
+0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53, 0x3b, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b, 0x6b, 0x77, 0x61,
+0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, 0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x3b, 0xe9, 0x74, 0x69,
+0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, 0x77, 0x61, 0x73, 0xfa, 0x3b, 0x6d, 0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa,
+0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, 0x257, 0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61, 0x253, 0x61, 0x73,
+0xfa, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x3b, 0x44, 0x69, 0x6d, 0x3b,
+0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x72, 0x6a, 0x3b,
+0x53, 0x69, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x61, 0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65, 0x14b, 0x3b, 0x54, 0x61, 0x6c, 0x61,
+0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x79, 0x3b,
+0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b,
+0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d,
+0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72, 0x3b, 0x73, 0x254,
+0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d,
+0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, 0x25b, 0x30c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259,
+0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, 0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c,
+0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, 0x69, 0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9, 0x72, 0x61,
+0x64, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x73, 0x254, 0x301,
+0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, 0x61, 0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a, 0xfa,
+0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d,
+0x61, 0x61, 0x64, 0xed, 0x3b, 0x6d, 0x25b, 0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x64, 0xed, 0x3b, 0x6a,
+0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0xed, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a,
+0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e,
+0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d,
+0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b,
+0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x43, 0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b, 0x43, 0x7a, 0x69, 0x3b, 0x43, 0x6b,
+0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, 0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x2019, 0x79, 0x61,
+0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x69,
+0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x61, 0x6c,
+0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73, 0x75, 0x75, 0x3b, 0x43, 0x6f, 0x6d,
+0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, 0x3b, 0x59, 0x3b, 0x4c, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b,
+0x45, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b,
+0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, 0x3b, 0x73, 0x61, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d,
+0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1,
+0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c,
+0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e, 0x61, 0x3b, 0x6d, 0x61,
+0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, 0x20, 0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, 0x64, 0x69,
+0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x43, 0xe4, 0x14b, 0x3b, 0x4a,
+0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b,
+0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x3b, 0x43, 0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254,
+0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c, 0xe4, 0x74,
+0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e,
+0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b,
+0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b, 0x44, 0x3b,
+0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x431, 0x441, 0x3b, 0x431, 0x43d, 0x3b, 0x43e, 0x43f, 0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f,
+0x3b, 0x431, 0x44d, 0x3b, 0x441, 0x431, 0x3b, 0x431, 0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, 0x430, 0x3b,
+0x431, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x43e, 0x43f, 0x442, 0x443, 0x43e, 0x440, 0x443,
+0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x441, 0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447, 0x44d, 0x43f, 0x43f, 0x438, 0x44d, 0x440,
+0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, 0x44d, 0x3b, 0x441, 0x443, 0x431, 0x443, 0x43e, 0x442, 0x430, 0x3b, 0x411, 0x3b,
+0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x411, 0x3b, 0x421, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b,
+0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b,
+0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d,
+0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d,
+0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b,
+0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0xa55e, 0xa54c, 0xa535, 0x3b, 0xa5f3, 0xa5e1,
+0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562, 0x3b, 0xa549, 0xa524, 0xa540, 0xa56e, 0x3b,
+0xa53b, 0xa52c, 0xa533, 0x3b, 0x6c, 0x61, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x74, 0x61,
+0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x61, 0x69,
+0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x253, 0x69, 0x74, 0x69, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b,
+0x5a, 0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x6d, 0x3b,
+0x53, 0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61,
+0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72,
+0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x4d,
+0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d, 0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b,
+0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x25b, 0x3b, 0x6d, 0xf3, 0x6e, 0x64,
+0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, 0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x65, 0x74,
+0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, 0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70,
+0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9, 0x73, 0x65, 0x6c, 0xe9, 0x3b, 0x73,
+0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x6c, 0x75,
+0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62,
+0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74,
+0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b,
+0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x53, 0x254, 0x301, 0x6e, 0x64,
+0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69,
+0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x46,
+0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b, 0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x3b, 0x53, 0x254, 0x301, 0x3b, 0x4d,
+0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b, 0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b, 0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x3b,
+0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x25b,
+0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x79, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b,
+0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b,
+0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, 0x65, 0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20,
+0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x33, 0x3b, 0x41, 0x6e, 0x65, 0x67,
+0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36, 0x3b, 0x41, 0x6e, 0x65,
+0x67, 0x20, 0x37, 0x3b, 0x41, 0x31, 0x3b, 0x41, 0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, 0x41, 0x35, 0x3b, 0x41,
+0x36, 0x3b, 0x41, 0x37, 0x3b, 0x6c, 0x79, 0x25b, 0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85, 0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d,
+0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x6d,
+0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c,
+0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0x25b,
+0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c,
+0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x41, 0x14b, 0x70, 0xe9,
+0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x14b, 0x17e, 0x69,
+0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79,
+0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9,
+0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67, 0x79, 0x75, 0x17e, 0x61, 0x17e, 0x61,
+0x70, 0x69, 0x3b, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x2d30, 0x2d59, 0x2d30,
+0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55,
+0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49,
+0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x62f, 0x648, 0x648, 0x634, 0x6d5, 0x645,
+0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627, 0x631, 0x634, 0x6d5, 0x645, 0x645, 0x6d5,
+0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, 0x646, 0x6cc, 0x3b, 0x634, 0x6d5, 0x645,
+0x645, 0x6d5, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be, 0x3b, 0x634, 0x3b, 0x6e, 0x6a, 0x65,
+0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73, 0x74, 0x77, 0x3b, 0x70, 0x11b, 0x74,
+0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x6a, 0x65, 0x17a, 0x65,
+0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74,
+0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b,
+0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b,
+0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a, 0x61, 0x3b, 0x73, 0x6f, 0x62, 0x3b,
+0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x77, 0x75,
+0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b,
+0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73,
+0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x61, 0x64, 0x3b, 0x70, 0x61, 0x6e, 0x3b, 0x77, 0x69, 0x73, 0x3b, 0x70,
+0x75, 0x73, 0x3b, 0x6b, 0x65, 0x74, 0x3b, 0x70, 0x113, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x6e, 0x61, 0x64, 0x12b, 0x6c,
+0x69, 0x3b, 0x70, 0x61, 0x6e, 0x61, 0x64, 0x12b, 0x6c, 0x69, 0x3b, 0x77, 0x69, 0x73, 0x61, 0x73, 0x12b, 0x64, 0x69, 0x73,
+0x3b, 0x70, 0x75, 0x73, 0x73, 0x69, 0x73, 0x61, 0x77, 0x61, 0x69, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x74, 0x77, 0x69, 0x72,
+0x74, 0x69, 0x6b, 0x73, 0x3b, 0x70, 0x113, 0x6e, 0x74, 0x6e, 0x69, 0x6b, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x74,
+0x69, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x70, 0x61,
+0x73, 0x3b, 0x76, 0x75, 0x6f, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b, 0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1,
+0x73, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73,
+0x73, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b,
+0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0xe2, 0x68, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75,
+0x70, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0xe2, 0x68, 0x3b, 0x70, 0x61, 0x73, 0x65,
+0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61,
+0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f,
+0x72, 0xe2, 0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b,
+0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0x75, 0x76, 0x3b, 0x70, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56,
+0x3b, 0x4c, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x6b, 0x73, 0x3b, 0x48,
+0x75, 0x3b, 0x42, 0x69, 0x3b, 0x53, 0x61, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65,
+0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b,
+0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62,
+0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x42, 0x3b, 0x53, 0x3b
};
static const ushort byte_unit_data[] = {
0x62, 0x79, 0x74, 0x65, 0x73, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b,
0x45, 0x42, 0x4b, 0x69, 0x42, 0x3b, 0x4d, 0x69, 0x42, 0x3b, 0x47, 0x69, 0x42, 0x3b, 0x54, 0x69, 0x42, 0x3b, 0x50, 0x69,
-0x42, 0x3b, 0x45, 0x69, 0x42, 0x62, 0x79, 0x74, 0x65, 0x67, 0x72, 0x65, 0x70, 0x65, 0x62, 0x61, 0x6a, 0x74, 0x1263, 0x12ed,
+0x42, 0x3b, 0x45, 0x69, 0x42, 0x62, 0x79, 0x74, 0x65, 0x67, 0x72, 0x65, 0x65, 0x70, 0x62, 0x61, 0x6a, 0x74, 0x1263, 0x12ed,
0x1275, 0x12aa, 0x1263, 0x3b, 0x121c, 0x130b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x130a, 0x1263, 0x3b, 0x1274, 0x122b, 0x1263, 0x12ed, 0x1275, 0x3b, 0x1354,
0x1263, 0x3b, 0x45, 0x42, 0x628, 0x627, 0x64a, 0x62a, 0x643, 0x64a, 0x644, 0x648, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x645, 0x64a, 0x63a,
0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x63a, 0x64a, 0x63a, 0x627, 0x628, 0x627, 0x64a, 0x62a, 0x3b, 0x62a, 0x64a, 0x631, 0x627, 0x628,
@@ -3137,21 +3149,21 @@ static const ushort byte_unit_data[] = {
0x987, 0x99f, 0x995, 0x9bf, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x9ae, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x997, 0x9bf,
0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x99f, 0x9c7, 0x983, 0x20, 0x9ac, 0x9be, 0x983, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62,
0x61, 0x79, 0x74, 0x62, 0x79, 0x74, 0x65, 0x2d, 0x61, 0x6b, 0x6f, 0x6b, 0x74, 0x65, 0x64, 0x6f, 0xf9, 0x6b, 0x6f, 0x3b,
-0x4d, 0x6f, 0x3b, 0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x431, 0x430, 0x439, 0x442, 0x43e, 0x432,
-0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x431, 0x430, 0x439, 0x442, 0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b,
-0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, 0x17c3, 0x5b57, 0x8282, 0x5343, 0x5b57, 0x8282, 0x3b, 0x5146, 0x5b57, 0x8282, 0x3b,
-0x5409, 0x5b57, 0x8282, 0x3b, 0x592a, 0x5b57, 0x8282, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x4f4d, 0x5143, 0x7d44, 0x62, 0x61, 0x6a, 0x74,
-0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69, 0x64, 0x69, 0x64,
-0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, 0x74, 0x3b,
-0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, 0x69, 0x74,
-0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x6b, 0x6f, 0x3b, 0x4d, 0x6f, 0x3b,
-0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69, 0x6f, 0x3b, 0x47,
-0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x62, 0x61, 0x69, 0x64, 0x68, 0x74,
-0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10db, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10d2,
-0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b,
-0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b,
-0x54, 0x42, 0x3b, 0xaaa, 0xac0, 0xaac, 0xac0, 0x3b, 0x45, 0x42, 0x5d1, 0x5d9, 0x5d9, 0x5d8, 0x92c, 0x93e, 0x907, 0x91f, 0x62, 0xe1,
-0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x62, 0x65, 0x61, 0x72, 0x74, 0x61, 0x30d0, 0x30a4, 0x30c8, 0x62, 0x69, 0x74, 0x65, 0xcac,
+0x4d, 0x6f, 0x3b, 0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69,
+0x6f, 0x3b, 0x47, 0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439,
+0x442, 0x43e, 0x432, 0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x431, 0x430, 0x439, 0x442, 0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b,
+0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, 0x17c3, 0x5b57, 0x8282, 0x5343, 0x5b57, 0x8282, 0x3b, 0x5146,
+0x5b57, 0x8282, 0x3b, 0x5409, 0x5b57, 0x8282, 0x3b, 0x592a, 0x5b57, 0x8282, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x4f4d, 0x5143, 0x7d44, 0x62,
+0x61, 0x6a, 0x74, 0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69,
+0x64, 0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b,
+0x54, 0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b,
+0x54, 0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x62, 0x61, 0x69,
+0x64, 0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10db, 0x10d1, 0x10d0, 0x10d8, 0x10e2,
+0x10d8, 0x3b, 0x10d2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8,
+0x10e2, 0x10d8, 0x3b, 0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b,
+0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0xaaa, 0xac0, 0xaac, 0xac0, 0x3b, 0x45, 0x42, 0x5d1, 0x5d9, 0x5d9, 0x5d8, 0x92c, 0x93e, 0x907,
+0x91f, 0x62, 0xe1, 0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x62, 0x65, 0x61, 0x72, 0x74, 0x61, 0x30d0, 0x30a4, 0x30c8, 0x4b, 0x42,
+0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x69, 0x74, 0x65, 0xcac,
0xcc8, 0xc9f, 0xccd, 0x200c, 0xc97, 0xcb3, 0xcc1, 0xc95, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcae, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e,
0x3b, 0xc97, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc9f, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcaa, 0xcc6, 0xcac, 0xcc8, 0x3b,
0x45, 0x42, 0x431, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x4d, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x54, 0x411, 0x3b, 0x41f, 0x411,
@@ -3185,12 +3197,13 @@ static const ushort byte_unit_data[] = {
0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b,
0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439,
0x442, 0x438, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc,
-0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61, 0x75, 0x61, 0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e,
-0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, 0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42, 0x3b, 0x45,
-0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x47, 0x42,
-0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc, 0x644, 0x648, 0x628, 0x627,
-0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b,
-0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42
+0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61, 0x75, 0x92c, 0x93e, 0x92f, 0x91f, 0x61, 0x1e6d, 0x61,
+0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, 0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b,
+0x50, 0x42, 0x3b, 0x45, 0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c,
+0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc,
+0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628,
+0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x6d, 0x67, 0x61,
+0x20, 0x62, 0x79, 0x74, 0x65
};
static const ushort am_data[] = {
@@ -3200,41 +3213,40 @@ static const ushort am_data[] = {
0x64, 0x6f, 0x70, 0x2e, 0x61, 0x2e, 0x6d, 0x2e, 0x61, 0x6d, 0x61, 0x74, 0x6d, 0x61, 0x70, 0x2e, 0x6d, 0x61, 0x74, 0x69,
0x6e, 0x6d, 0x3c0, 0x2e, 0x3bc, 0x2e, 0x53, 0x61, 0x66, 0x69, 0x79, 0x61, 0x5dc, 0x5e4, 0x5e0, 0x5d4, 0x5f4, 0x5e6, 0x64, 0x65,
0x2e, 0x66, 0x2e, 0x68, 0x2e, 0x72, 0x2e, 0x6e, 0x2e, 0x5348, 0x524d, 0x49, 0x73, 0x75, 0x6b, 0xcaa, 0xcc2, 0xcb0, 0xccd, 0xcb5,
-0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x430, 0x4a3, 0x43a, 0x44b, 0xc624, 0xc804, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0xe81, 0xec8, 0xead, 0xe99,
-0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x72, 0x69, 0x65, 0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6e, 0x74,
-0x254, 0x301, 0x6e, 0x67, 0x254, 0x301, 0x70, 0x72, 0x69, 0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x440, 0x435, 0x442, 0x43f,
-0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, 0x47, 0x92e, 0x2e, 0x92a, 0x942, 0x2e, 0x4af, 0x2e, 0x4e9, 0x2e, 0x92a, 0x942, 0x930, 0x94d,
-0x935, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61,
-0x20, 0x6d, 0x61, 0x6e, 0x68, 0xe3, 0xa2a, 0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x4e, 0x44, 0x43f, 0x440, 0x435, 0x20, 0x43f, 0x43e,
-0x434, 0x43d, 0x435, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x70, 0x72, 0x65, 0x20, 0x70, 0x6f,
-0x64, 0x6e, 0x65, 0x43f, 0x440, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431,
-0x43e, 0x43d, 0x44b, 0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f,
-0xdb4, 0xdd9, 0x2e, 0xdc0, 0x2e, 0x47, 0x48, 0x66, 0x6d, 0x43f, 0x435, 0x2e, 0xa0, 0x447, 0x43e, 0x2e, 0xbae, 0xbc1, 0xbb1, 0xbcd,
-0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf66, 0xf94, 0xf0b, 0xf51, 0xfb2, 0xf7c,
-0xf0b, 0x1295, 0x1309, 0x1206, 0x20, 0x1230, 0x12d3, 0x1270, 0x68, 0x65, 0x6e, 0x67, 0x69, 0x68, 0x65, 0x6e, 0x67, 0x69, 0xd6, 0xd6,
-0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0xf6, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20,
-0x628, 0x6c7, 0x631, 0x6c7, 0x646, 0x434, 0x43f, 0x54, 0x4f, 0x422, 0x41e, 0x53, 0x41, 0x79, 0x62, 0x53, 0x75, 0x62, 0x5e4, 0x5bf,
-0x5d0, 0x5b7, 0x5e8, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0xc0, 0xe1, 0x72, 0x1ecd, 0x300, 0xc0, 0xe1, 0x72, 0x254, 0x300, 0x66,
-0x6f, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x67, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x41, 0x4e,
-0x4e, 0x2019, 0x1ee5, 0x74, 0x1ee5, 0x74, 0x1ee5, 0x128, 0x79, 0x61, 0x6b, 0x77, 0x61, 0x6b, 0x79, 0x61, 0x61, 0x2e, 0x14b, 0x64,
-0x69, 0x61, 0x6d, 0x20, 0x56, 0x6f, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0xa3b8, 0xa111, 0x69, 0x111, 0x69, 0x74, 0x62,
-0x65, 0x61, 0x69, 0x76, 0x65, 0x74, 0x69, 0x62, 0x4d, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x4c, 0x75, 0x6d, 0x61, 0x20, 0x6c,
-0x77, 0x61, 0x20, 0x4b, 0x73, 0x75, 0x62, 0x61, 0x6b, 0x61, 0x4b, 0x69, 0x72, 0x6f, 0x6b, 0x6f, 0x54, 0x65, 0x73, 0x69,
-0x72, 0x61, 0x6e, 0x6b, 0x61, 0x6e, 0x67, 0x2019, 0x61, 0x6d, 0x61, 0x2d5c, 0x2d49, 0x2d3c, 0x2d30, 0x2d61, 0x2d5c, 0x74, 0x69, 0x66,
-0x61, 0x77, 0x74, 0x6e, 0x20, 0x74, 0x75, 0x66, 0x61, 0x74, 0x70, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x75, 0x75, 0x74, 0x75,
-0x6b, 0x6f, 0x4b, 0x49, 0x13cc, 0x13be, 0x13b4, 0x4d, 0x75, 0x68, 0x69, 0x54, 0x4f, 0x4f, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65,
-0x6c, 0x6f, 0x52, 0x168, 0x6b, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x1c1, 0x67, 0x6f, 0x61, 0x67, 0x61, 0x73, 0x55, 0x68, 0x72,
-0x20, 0x76, 0xf6, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e, 0x6b, 0x61, 0x6b, 0x25b, 0x6e,
-0x79, 0xe1, 0x4d, 0x75, 0x6e, 0x6b, 0x79, 0x6f, 0x69, 0x63, 0x68, 0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x54, 0x61, 0x70,
-0x61, 0x72, 0x61, 0x63, 0x68, 0x75, 0x41, 0x64, 0x64, 0x75, 0x68, 0x61, 0x4f, 0x44, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61,
-0x7a, 0x61, 0x6c, 0x6d, 0x61, 0x6b, 0x65, 0x6f, 0x92b, 0x941, 0x902, 0x44, 0x69, 0x6e, 0x64, 0x61, 0x6d, 0x6f, 0x69, 0x65,
-0x73, 0x61, 0x2e, 0x67, 0x49, 0x20, 0x62, 0x69, 0x6b, 0x25b, 0x302, 0x67, 0x6c, 0xe0, 0x53, 0x75, 0x62, 0x62, 0x61, 0x61,
-0x68, 0x69, 0x69, 0x64, 0x69, 0x253, 0x61, 0x6b, 0xed, 0x6b, 0xed, 0x72, 0xed, 0x67, 0x73, 0xe1, 0x72, 0xfa, 0x77, 0xe1,
-0x77, 0x69, 0x63, 0x68, 0x69, 0x73, 0x68, 0x75, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6d, 0x61, 0x6e, 0xe1, 0x52, 0x57, 0x42d,
-0x418, 0x4c, 0x77, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x77, 0x75, 0x6b, 0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d, 0x64, 0x65,
-0x20, 0x6c, 0x61, 0x20, 0x6d, 0x61, 0xf1, 0x61, 0x6e, 0x61, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62,
-0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x628, 0x2e, 0x646, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x69,
-0x70, 0x2e
+0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x430, 0x4a3, 0x43a, 0x44b, 0xc624, 0xc804, 0x42, 0x4e, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0xe81, 0xec8,
+0xead, 0xe99, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x72, 0x69, 0x65, 0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101,
+0x6e, 0x74, 0x254, 0x301, 0x6e, 0x67, 0x254, 0x301, 0x70, 0x72, 0x69, 0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x440, 0x435,
+0x442, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, 0x47, 0x92e, 0x2e, 0x92a, 0x942, 0x2e, 0x4af, 0x2e, 0x4e9, 0x2e, 0x92a, 0x942,
+0x930, 0x94d, 0x935, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, 0x627, 0x632, 0x638, 0x647, 0x631,
+0x64, 0x61, 0x20, 0x6d, 0x61, 0x6e, 0x68, 0xe3, 0xa2a, 0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x4e, 0x44, 0x43f, 0x440, 0x435, 0x20,
+0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x43f, 0x440, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x72, 0x69, 0x6a,
+0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x70, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x4d5, 0x43c, 0x431, 0x438,
+0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647,
+0x646, 0x62f, 0xdb4, 0xdd9, 0x2e, 0xdc0, 0x2e, 0x47, 0x48, 0x66, 0x6d, 0xbae, 0xbc1, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe01,
+0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf66, 0xf94, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x1295, 0x1309, 0x1206, 0x20,
+0x1230, 0x12d3, 0x1270, 0x68, 0x65, 0x6e, 0x67, 0x69, 0x68, 0x65, 0x6e, 0x67, 0x69, 0xd6, 0xd6, 0x67, 0xfc, 0x6e, 0x6f, 0x72,
+0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0xf6, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x628, 0x6c7, 0x631, 0x6c7, 0x646,
+0x434, 0x43f, 0x54, 0x4f, 0x422, 0x41e, 0x53, 0x41, 0x79, 0x62, 0x53, 0x75, 0x62, 0x5e4, 0x5bf, 0x5d0, 0x5b7, 0x5e8, 0x5de, 0x5d9,
+0x5d8, 0x5d0, 0x5b8, 0x5d2, 0xc0, 0xe1, 0x72, 0x1ecd, 0x300, 0xc0, 0xe1, 0x72, 0x254, 0x300, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x64,
+0x64, 0x61, 0x67, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x41, 0x4e, 0x4e, 0x2019, 0x1ee5, 0x74, 0x1ee5,
+0x74, 0x1ee5, 0x128, 0x79, 0x61, 0x6b, 0x77, 0x61, 0x6b, 0x79, 0x61, 0x61, 0x2e, 0x14b, 0x64, 0x69, 0x61, 0x6d, 0x20, 0x56,
+0x6f, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0xa3b8, 0xa111, 0x69, 0x111, 0x69, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65,
+0x74, 0x69, 0x62, 0x4d, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x4c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x4b, 0x73,
+0x75, 0x62, 0x61, 0x6b, 0x61, 0x4b, 0x69, 0x72, 0x6f, 0x6b, 0x6f, 0x54, 0x65, 0x73, 0x69, 0x72, 0x61, 0x6e, 0x6b, 0x61,
+0x6e, 0x67, 0x2019, 0x61, 0x6d, 0x61, 0x2d5c, 0x2d49, 0x2d3c, 0x2d30, 0x2d61, 0x2d5c, 0x74, 0x69, 0x66, 0x61, 0x77, 0x74, 0x6e, 0x20,
+0x74, 0x75, 0x66, 0x61, 0x74, 0x70, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x75, 0x75, 0x74, 0x75, 0x6b, 0x6f, 0x4b, 0x49, 0x13cc,
+0x13be, 0x13b4, 0x4d, 0x75, 0x68, 0x69, 0x54, 0x4f, 0x4f, 0x75, 0x6c, 0x75, 0x63, 0x68, 0x65, 0x6c, 0x6f, 0x52, 0x168, 0x6b,
+0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x1c1, 0x67, 0x6f, 0x61, 0x67, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x76, 0xf6, 0x72, 0x6d,
+0x69, 0x64, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e, 0x6b, 0x61, 0x6b, 0x25b, 0x6e, 0x79, 0xe1, 0x4d, 0x75, 0x6e,
+0x6b, 0x79, 0x6f, 0x69, 0x63, 0x68, 0x65, 0x68, 0x65, 0x61, 0x76, 0x6f, 0x54, 0x61, 0x70, 0x61, 0x72, 0x61, 0x63, 0x68,
+0x75, 0x41, 0x64, 0x64, 0x75, 0x68, 0x61, 0x4f, 0x44, 0x5a, 0x64, 0x61, 0x74, 0x20, 0x61, 0x7a, 0x61, 0x6c, 0x6d, 0x61,
+0x6b, 0x65, 0x6f, 0x92b, 0x941, 0x902, 0x44, 0x69, 0x6e, 0x64, 0x61, 0x6d, 0x6f, 0x69, 0x65, 0x73, 0x61, 0x2e, 0x67, 0x49,
+0x20, 0x62, 0x69, 0x6b, 0x25b, 0x302, 0x67, 0x6c, 0xe0, 0x53, 0x75, 0x62, 0x62, 0x61, 0x61, 0x68, 0x69, 0x69, 0x64, 0x69,
+0x253, 0x61, 0x6b, 0xed, 0x6b, 0xed, 0x72, 0xed, 0x67, 0x73, 0xe1, 0x72, 0xfa, 0x77, 0xe1, 0x77, 0x69, 0x63, 0x68, 0x69,
+0x73, 0x68, 0x75, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6d, 0x61, 0x6e, 0xe1, 0x52, 0x57, 0x42d, 0x418, 0x4c, 0x77, 0x61, 0x6d,
+0x69, 0x6c, 0x61, 0x77, 0x75, 0x6b, 0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x6d,
+0x61, 0xf1, 0x61, 0x6e, 0x61, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62,
+0x61, 0x2bc, 0x628, 0x2e, 0x646, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x69, 0x70, 0x2e
};
static const ushort pm_data[] = {
@@ -3244,41 +3256,41 @@ static const ushort pm_data[] = {
0x2e, 0x70, 0x2e, 0x6d, 0x2e, 0x70, 0x6d, 0x70, 0x74, 0x6d, 0x69, 0x70, 0x2e, 0x73, 0x6f, 0x69, 0x72, 0x66, 0x3bc, 0x2e,
0x3bc, 0x2e, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x5d0, 0x5d7, 0x5d4, 0x5f4, 0x5e6, 0x64, 0x75, 0x2e, 0x65, 0x2e, 0x68, 0x2e, 0x69,
0x2e, 0x6e, 0x2e, 0x5348, 0x5f8c, 0x57, 0x65, 0x6e, 0x67, 0x69, 0xc85, 0xcaa, 0xcb0, 0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x4af, 0x448,
-0x442, 0x4e9, 0x43d, 0x20, 0x43a, 0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0xc624, 0xd6c4, 0x5a, 0x2e, 0x4d, 0x57, 0x2e, 0xeab, 0xebc,
-0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6d, 0x70, 0xf3,
-0x6b, 0x77, 0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x43e, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, 0x54, 0x47,
-0x92e, 0x2e, 0x909, 0x2e, 0x4af, 0x2e, 0x445, 0x2e, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x648, 0x2e, 0x628,
-0x639, 0x62f, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0xa2c, 0xa3e, 0x2e, 0xa26, 0xa41,
-0x2e, 0x4c, 0x4b, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x4d5,
-0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f,
-0x60c, 0x20, 0x634, 0x627, 0x645, 0xdb4, 0x2e, 0xdc0, 0x2e, 0x70, 0x6f, 0x70, 0x2e, 0x47, 0x44, 0x65, 0x6d, 0x43f, 0x430, 0x2e,
-0xa0, 0x447, 0x43e, 0x2e, 0xbaa, 0xbbf, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe2b, 0xe25, 0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48,
-0xe22, 0xe07, 0xf55, 0xfb1, 0xf72, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x1215, 0x122d, 0x20, 0x1230, 0x12d3, 0x1275, 0x65, 0x66, 0x69,
-0x61, 0x66, 0x69, 0xd6, 0x53, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x686,
-0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x43f, 0x43f, 0x54, 0x4b, 0x422, 0x41a, 0x43, 0x48, 0x79,
-0x68, 0x4e, 0x67, 0x6f, 0x5e0, 0x5d0, 0x5b8, 0x5db, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186,
-0x300, 0x73, 0xe1, 0x6e, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x64,
-0x6e, 0x65, 0x43f, 0x43e, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x45, 0x57, 0x92e, 0x2e, 0x928, 0x902, 0x2e, 0x4e, 0x2019, 0x61, 0x62,
-0x61, 0x6c, 0x69, 0x128, 0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, 0x70, 0x2e, 0x263, 0x65, 0x74, 0x72, 0x254, 0x61, 0x6d, 0x20,
-0x4e, 0x61, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0xa06f, 0xa2d2, 0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69,
-0x76, 0x65, 0x74, 0x65, 0x62, 0x4d, 0x6f, 0x67, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0x6b, 0x69,
-0x6b, 0x69, 0x69, 0x257, 0x65, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, 0x6e, 0x129, 0x54, 0x65, 0x69, 0x70, 0x61, 0x6b, 0x69,
-0x6e, 0x67, 0x6f, 0x74, 0x6f, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, 0x2d30, 0x2d5c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61,
-0x74, 0x6e, 0x20, 0x74, 0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x70, 0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x6b, 0x79, 0x69,
-0x75, 0x6b, 0x6f, 0x6e, 0x79, 0x69, 0x55, 0x54, 0x13d2, 0x13af, 0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x43, 0x68, 0x69, 0x6c, 0x6f, 0x4d,
-0x55, 0x55, 0x61, 0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x168, 0x47, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e,
-0x79, 0x1c3, 0x75, 0x69, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63,
-0x68, 0x73, 0x190, 0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, 0x67, 0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74,
-0x68, 0x69, 0x45, 0x62, 0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, 0x75, 0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66,
-0x69, 0x72, 0x20, 0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, 0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947,
-0x44, 0x69, 0x6c, 0x6f, 0x6c, 0x6f, 0x6e, 0x6f, 0x6d, 0xeb, 0x74, 0x74, 0x65, 0x73, 0x61, 0x2e, 0x6b, 0x49, 0x20, 0x253,
-0x75, 0x67, 0x61, 0x6a, 0x254, 0x70, 0x5a, 0x61, 0x61, 0x72, 0x69, 0x6b, 0x61, 0x79, 0x20, 0x62, 0x65, 0x62, 0x79, 0xe1,
-0x6d, 0x75, 0x6e, 0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f, 0x6d, 0x63,
-0x68, 0x6f, 0x63, 0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x6c, 0x69, 0x6c, 0x6c, 0x69, 0x6b, 0x75, 0x67, 0xfa, 0x54, 0x14a, 0x42d,
-0x41a, 0x50, 0x61, 0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, 0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x64, 0x65,
-0x20, 0x6c, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0x14b, 0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e,
-0x6a, 0x69, 0x6e, 0x63, 0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, 0x62f, 0x2e, 0x646, 0x77, 0xf3, 0x74, 0x70, 0x6f, 0x142, 0x64,
-0x6e, 0x6a, 0x61, 0x70, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x75, 0x65, 0x70, 0x2e
+0x442, 0x4e9, 0x43d, 0x20, 0x43a, 0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0xc624, 0xd6c4, 0x50, 0x4e, 0x5a, 0x2e, 0x4d, 0x57, 0x2e,
+0xeab, 0xebc, 0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6d,
+0x70, 0xf3, 0x6b, 0x77, 0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x43e, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50,
+0x54, 0x47, 0x92e, 0x2e, 0x909, 0x2e, 0x4af, 0x2e, 0x445, 0x2e, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x648,
+0x2e, 0x628, 0x639, 0x62f, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0xa2c, 0xa3e, 0x2e,
+0xa26, 0xa41, 0x2e, 0x4c, 0x4b, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e,
+0x65, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5, 0x645, 0x646, 0x62c, 0x647,
+0x646, 0x62f, 0x60c, 0x20, 0x634, 0x627, 0x645, 0xdb4, 0x2e, 0xdc0, 0x2e, 0x70, 0x6f, 0x70, 0x2e, 0x47, 0x44, 0x65, 0x6d, 0xbaa,
+0xbbf, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe2b, 0xe25, 0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf55, 0xfb1, 0xf72,
+0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x1215, 0x122d, 0x20, 0x1230, 0x12d3, 0x1275, 0x65, 0x66, 0x69, 0x61, 0x66, 0x69, 0xd6, 0x53,
+0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646,
+0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x43f, 0x43f, 0x54, 0x4b, 0x422, 0x41a, 0x43, 0x48, 0x79, 0x68, 0x4e, 0x67, 0x6f, 0x5e0,
+0x5d0, 0x5b8, 0x5db, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e, 0x65,
+0x74, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x64, 0x64, 0x61, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x441,
+0x43b, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x45, 0x57, 0x4e, 0x2019, 0x61, 0x62, 0x61, 0x6c, 0x69, 0x128,
+0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, 0x70, 0x2e, 0x263, 0x65, 0x74, 0x72, 0x254, 0x61, 0x6d, 0x20, 0x4e, 0x61, 0x6d, 0x69,
+0x74, 0x74, 0x61, 0x67, 0xa06f, 0xa2d2, 0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65, 0x74, 0x65,
+0x62, 0x4d, 0x6f, 0x67, 0x6c, 0x75, 0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0x6b, 0x69, 0x6b, 0x69, 0x69, 0x257,
+0x65, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, 0x6e, 0x129, 0x54, 0x65, 0x69, 0x70, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x74,
+0x6f, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, 0x2d30, 0x2d5c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74, 0x6e, 0x20, 0x74,
+0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x70, 0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f, 0x6e,
+0x79, 0x69, 0x55, 0x54, 0x13d2, 0x13af, 0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x43, 0x68, 0x69, 0x6c, 0x6f, 0x4d, 0x55, 0x55, 0x61, 0x6b,
+0x61, 0x73, 0x75, 0x62, 0x61, 0x168, 0x47, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e, 0x79, 0x1c3, 0x75, 0x69,
+0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e,
+0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, 0x67, 0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x45, 0x62,
+0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, 0x75, 0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, 0x61,
+0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, 0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x44, 0x69, 0x6c, 0x6f,
+0x6c, 0x6f, 0x6e, 0x6f, 0x6d, 0xeb, 0x74, 0x74, 0x65, 0x73, 0x61, 0x2e, 0x6b, 0x49, 0x20, 0x253, 0x75, 0x67, 0x61, 0x6a,
+0x254, 0x70, 0x5a, 0x61, 0x61, 0x72, 0x69, 0x6b, 0x61, 0x79, 0x20, 0x62, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0x6e, 0x67,
+0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f, 0x6d, 0x63, 0x68, 0x6f, 0x63, 0x68,
+0x69, 0x6c, 0x2019, 0x6c, 0x6c, 0x69, 0x6c, 0x6c, 0x69, 0x6b, 0x75, 0x67, 0xfa, 0x54, 0x14a, 0x42d, 0x41a, 0x50, 0x61, 0x73,
+0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, 0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20,
+0x74, 0x61, 0x72, 0x64, 0x65, 0x14b, 0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e, 0x6a, 0x69, 0x6e, 0x63,
+0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, 0x62f, 0x2e, 0x646, 0x77, 0xf3, 0x74, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x70,
+0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x75, 0x65, 0x70, 0x2e
};
static const ushort currency_symbol_data[] = {
@@ -3288,17 +3300,18 @@ static const ushort currency_symbol_data[] = {
0x644, 0x2e, 0x644, 0x2e, 0x200f, 0x62f, 0x2e, 0x644, 0x2e, 0x200f, 0x623, 0x2e, 0x645, 0x2e, 0x62f, 0x2e, 0x645, 0x2e, 0x200f, 0x631,
0x2e, 0x639, 0x2e, 0x200f, 0x631, 0x2e, 0x642, 0x2e, 0x200f, 0x631, 0x2e, 0x633, 0x2e, 0x200f, 0x53, 0x62c, 0x2e, 0x633, 0x2e, 0x644,
0x2e, 0x633, 0x2e, 0x200f, 0x62f, 0x2e, 0x62a, 0x2e, 0x200f, 0x62f, 0x2e, 0x625, 0x2e, 0x200f, 0x631, 0x2e, 0x64a, 0x2e, 0x200f, 0xa3,
-0x58f, 0x20b9, 0x20bc, 0x20bd, 0x9f3, 0x4e, 0x75, 0x2e, 0x43b, 0x432, 0x2e, 0x4b, 0x17db, 0xffe5, 0x4d, 0x4f, 0x50, 0x24, 0x6b, 0x6e,
-0x4b, 0x4d, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x41, 0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x55, 0x53, 0x24, 0x50, 0x46,
-0x42, 0x75, 0x44, 0x47, 0x48, 0x20b5, 0x48, 0x4b, 0x24, 0x41, 0x72, 0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x20a6, 0x20b1, 0x52,
-0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x4c, 0x65, 0x45, 0x6b, 0x72, 0x54, 0x53, 0x68, 0x54, 0x24, 0x55, 0x53, 0x68, 0x41,
-0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x46, 0x43, 0x46, 0x43, 0x46, 0x50, 0x46, 0x47, 0x47, 0x55, 0x4d,
-0x4c, 0x53, 0x44, 0x54, 0x20be, 0x43, 0x48, 0x46, 0x20b2, 0x46, 0x74, 0x52, 0x70, 0x43, 0x41, 0x24, 0x20b8, 0x441, 0x43e, 0x43c,
-0x20a9, 0x20ba, 0x20ad, 0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627,
-0x644, 0x7a, 0x142, 0x52, 0x24, 0x200b, 0x4d, 0x54, 0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x6c, 0x65, 0x69, 0x4c,
-0x20b4, 0x41a, 0x41c, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42,
-0x73, 0x2e, 0x53, 0x441, 0x43e, 0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0xa5, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441,
-0x45e, 0x43c, 0x20ab, 0x4e, 0x54, 0x24, 0x41, 0x24, 0x49, 0x52, 0x52
+0x58f, 0x20b9, 0x20bc, 0x20bd, 0x9f3, 0x4e, 0x75, 0x2e, 0x43b, 0x432, 0x2e, 0x4b, 0x17db, 0xa5, 0x48, 0x4b, 0x24, 0x4d, 0x4f, 0x50,
+0x24, 0x48, 0x52, 0x4b, 0x4b, 0x4d, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x41, 0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x55,
+0x53, 0x24, 0x50, 0x46, 0x42, 0x75, 0x44, 0x47, 0x48, 0x20b5, 0x41, 0x72, 0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x20a6, 0x20b1,
+0x52, 0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x4c, 0x65, 0x45, 0x6b, 0x72, 0x54, 0x53, 0x68, 0x54, 0x24, 0x55, 0x53, 0x68,
+0x41, 0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x46, 0x43, 0x46, 0x43, 0x46, 0x50, 0x46, 0x47, 0x47, 0x55,
+0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, 0x46, 0x74, 0x49, 0x53, 0x4b, 0x52, 0x70,
+0x43, 0x41, 0x24, 0xffe5, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, 0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x2e,
+0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, 0x142, 0x52, 0x24, 0x200b, 0x4d, 0x54,
+0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x4c, 0x20b4, 0x52, 0x53, 0x44, 0x41a, 0x41c, 0xdbb, 0xdd4,
+0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42, 0x73, 0x2e, 0x53, 0x441, 0x43e,
+0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, 0x45e, 0x43c, 0x20ab, 0x4e, 0x54, 0x24,
+0x41, 0x24, 0x49, 0x52, 0x52
};
static const ushort currency_display_name_data[] = {
@@ -3614,279 +3627,301 @@ static const ushort currency_display_name_data[] = {
0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f,
0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b,
0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c,
-0x61, 0x72, 0x73, 0x3b, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64,
-0x3b, 0x3b, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b,
-0x3b, 0x3b, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b,
-0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61,
-0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65,
-0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61,
-0x6e, 0x67, 0x65, 0x6e, 0x69, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x6c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65,
-0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x65,
-0x6e, 0x69, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x77,
-0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69,
-0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e,
-0x63, 0x3b, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77,
-0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e,
-0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e,
-0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69,
-0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20,
-0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61,
-0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67,
-0x61, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20,
-0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54,
-0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e,
-0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72,
-0x73, 0x3b, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b,
-0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b,
-0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x55, 0x6e,
-0x69, 0x74, 0x65, 0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x44,
-0x69, 0x72, 0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x55, 0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x3b,
-0x3b, 0x55, 0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68,
-0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e,
-0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b,
-0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74,
-0x75, 0x20, 0x76, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61,
-0x74, 0x75, 0x73, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b,
-0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x5a, 0x61,
-0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20,
-0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74,
-0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b,
-0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64,
-0x73, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c,
-0x65, 0x61, 0x6e, 0x20, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c,
-0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, 0x69, 0x6c, 0x64,
-0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e,
-0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x3b, 0x65, 0x75, 0x72,
-0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x74, 0x3b, 0x64, 0x6f, 0x6e,
-0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x64, 0x6f, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e,
-0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x75, 0x72, 0x3b,
-0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x61, 0x3b,
-0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61,
-0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73,
-0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41,
-0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20,
-0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46,
-0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, 0x75, 0x72, 0x75,
-0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61,
-0x69, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61,
-0x69, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b,
-0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b,
-0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x64,
-0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x6f, 0x6c, 0x6c,
-0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, 0x6c, 0x6c, 0x61,
-0x72, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63,
-0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72,
-0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69,
-0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b,
-0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x3b, 0x3b,
-0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, 0x66, 0x72, 0x61,
-0x6e, 0x63, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x73, 0x20, 0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20,
-0x43, 0x46, 0x50, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72,
-0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9,
-0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x3b, 0x3b, 0x3b,
-0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x73, 0x3b, 0x67, 0x6f, 0x75,
-0x72, 0x64, 0x65, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x67, 0x6f, 0x75, 0x72, 0x64,
-0x65, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x6f, 0x75, 0x72, 0x64,
-0x65, 0x73, 0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79,
-0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x20, 0x6d, 0x61,
-0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x73, 0x20, 0x6d, 0x61,
-0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x73, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75, 0x72,
-0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75,
-0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x73,
-0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65,
-0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65,
-0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70,
-0x69, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x72,
-0x68, 0x61, 0x6d, 0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d,
-0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73,
-0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61,
-0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x69,
-0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x69, 0x73,
+0x61, 0x72, 0x73, 0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b,
+0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b,
+0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x75, 0x64,
+0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73,
+0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20,
+0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65,
+0x6e, 0x69, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x6c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, 0x3b,
+0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, 0x3b,
+0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69,
+0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20,
+0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b,
+0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73,
+0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x68,
+0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x73, 0x68,
+0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20,
+0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, 0x2bb,
+0x61, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61,
+0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x54,
+0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, 0x6c,
+0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61,
+0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61,
+0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x55,
+0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x55, 0x67, 0x61,
+0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, 0x61,
+0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x55, 0x6e, 0x69, 0x74, 0x65,
+0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x44, 0x69, 0x72, 0x68,
+0x61, 0x6d, 0x3b, 0x3b, 0x55, 0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x41,
+0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x50, 0x6f,
+0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b,
+0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x56, 0x61, 0x6e,
+0x75, 0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76,
+0x61, 0x74, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x74, 0x75, 0x73,
+0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x5a, 0x61, 0x6d,
+0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69,
+0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64,
+0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53,
+0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x75,
+0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x4e,
+0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e,
+0x20, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64,
+0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x3b,
+0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x41, 0x6e, 0x74, 0x69, 0x6c,
+0x6c, 0x65, 0x61, 0x6e, 0x20, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b,
+0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x74, 0x3b, 0x64, 0x6f, 0x6e, 0x73, 0x6b, 0x20,
+0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x64, 0x6f, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b,
+0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x75, 0x72, 0x3b, 0x65, 0x75, 0x72,
+0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x61, 0x3b, 0x64, 0x69, 0x6e,
+0x61, 0x72, 0x20, 0x61, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x61,
+0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x20, 0x61, 0x6c,
+0x67, 0xe9, 0x72, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42,
+0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43,
+0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28,
+0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61,
+0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b,
+0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b,
+0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x64, 0x6f, 0x6c, 0x6c,
+0x61, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x20,
+0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x20,
+0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6d, 0x6f,
+0x72, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e,
+0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x73,
+0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61,
+0x6e, 0x63, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x69, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20,
+0x64, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x64, 0x6a,
+0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x64,
+0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50,
+0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
+0x73, 0x20, 0x43, 0x46, 0x50, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x3b,
+0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x73, 0x20, 0x67, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x6e, 0x73, 0x3b, 0x67, 0x6f, 0x75, 0x72, 0x64, 0x65,
+0x20, 0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x67, 0x6f, 0x75, 0x72, 0x64, 0x65, 0x20, 0x68,
+0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x6f, 0x75, 0x72, 0x64, 0x65, 0x73, 0x20,
+0x68, 0x61, 0xef, 0x74, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x20, 0x6d, 0x61,
+0x6c, 0x67, 0x61, 0x63, 0x68, 0x65, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61,
+0x63, 0x68, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x73, 0x20, 0x6d, 0x61, 0x6c, 0x67, 0x61,
+0x63, 0x68, 0x65, 0x73, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61,
+0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x74,
+0x61, 0x6e, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x6f, 0x75, 0x67, 0x75, 0x69, 0x79, 0x61, 0x73, 0x20, 0x6d, 0x61,
+0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x6d, 0x61,
+0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x6d, 0x61,
+0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x73,
+0x20, 0x6d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d,
+0x20, 0x6d, 0x61, 0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x20, 0x6d, 0x61,
+0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73, 0x20, 0x6d, 0x61,
+0x72, 0x6f, 0x63, 0x61, 0x69, 0x6e, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61,
+0x69, 0x73, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x3b,
+0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x69, 0x73, 0x3b, 0x72, 0x6f,
+0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b,
0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c,
-0x65, 0x73, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65, 0x79, 0x63, 0x68,
-0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x73, 0x20, 0x64, 0x65, 0x73,
-0x20, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75,
-0x69, 0x73, 0x73, 0x65, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x3b, 0x3b,
-0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x73, 0x3b, 0x6c, 0x69, 0x76,
-0x72, 0x65, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x20, 0x73,
-0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x73, 0x20, 0x73, 0x79,
-0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69,
-0x65, 0x6e, 0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b,
-0x3b, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x76,
-0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x76, 0x61, 0x74, 0x75, 0x20,
-0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x76, 0x61, 0x74, 0x75, 0x73, 0x20, 0x76,
-0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x73, 0x3b, 0x50, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61,
-0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e,
-0x61, 0x63, 0x68, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68,
-0x3b, 0x70, 0x75, 0x69, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x68, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x3b,
-0x70, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7,
-0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0,
-0x10e0, 0x10d8, 0x3b, 0x3b, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x45,
-0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x53, 0x63,
-0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, 0x53, 0x63, 0x68,
-0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x63,
-0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x395, 0x3c5, 0x3c1, 0x3ce,
-0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x64, 0x61, 0x6e, 0x6d, 0x61,
-0x72, 0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x73,
-0x6b, 0x69, 0x6e, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x61, 0x6e,
-0x6d, 0x61, 0x72, 0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0xaad, 0xabe, 0xab0,
-0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0,
-0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf,
-0xaaf, 0xabe, 0x3b, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x75, 0x257, 0x69, 0x6e,
-0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, 0x61, 0x20, 0x59,
-0x61, 0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x3b,
-0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b,
-0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7,
-0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d,
-0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940,
-0x92f, 0x20, 0x930, 0x942, 0x92a, 0x90f, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74,
-0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x6d,
-0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b,
-0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e,
-0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x75,
-0x72, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61,
-0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72,
-0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75,
-0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76,
-0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a,
-0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a,
-0x65, 0x72, 0x69, 0x3b, 0x65e5, 0x672c, 0x5186, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5186, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0,
-0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa,
-0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf,
-0xc97, 0xcb3, 0xcc1, 0x3b, 0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3,
-0x433, 0x435, 0x441, 0x456, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433,
-0x435, 0x441, 0x456, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3,
-0x433, 0x435, 0x441, 0x456, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443,
-0x3b, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x3b,
-0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0xb300, 0xd55c, 0xbbfc,
-0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc,
-0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xc870, 0xc120,
-0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x49, 0x66, 0x61, 0x72, 0x61,
-0x6e, 0x67, 0x61, 0x20, 0x72, 0x79, 0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81,
-0xeb5, 0xe9a, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b,
-0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e,
-0x67, 0xf3, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x79, 0x61, 0x20, 0x41,
-0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20,
-0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x61, 0x73,
-0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x69, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b,
-0x65, 0x75, 0x72, 0x173, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430,
-0x440, 0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b,
-0x3b, 0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x438,
-0x3b, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69,
-0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67,
-0x67, 0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42,
-0x72, 0x75, 0x6e, 0x65, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75,
-0x6e, 0x65, 0x69, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61,
-0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f,
-0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a,
-0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77,
-0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x54, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61,
-0x72, 0x6f, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x67, 0x101, 0x20, 0x74, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20,
-0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f,
-0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d,
-0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x947, 0x3b, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b,
-0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x3b, 0x3b, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x928, 0x947, 0x92a,
-0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20,
-0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942,
-0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e,
-0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b,
-0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b,
-0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e,
-0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0xb2d,
-0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20,
-0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x3b, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15,
-0xb3e, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x3b, 0x3b,
-0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627,
-0x631, 0x647, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b,
-0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x6d2, 0x3b, 0x631,
-0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627,
-0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x627, 0x641, 0x63a, 0x627,
-0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc,
-0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc,
-0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c,
-0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a,
-0x142, 0x6f, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x63, 0x68,
-0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x63, 0x68, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x20, 0x70, 0x6f,
-0x6c, 0x73, 0x6b, 0x69, 0x65, 0x67, 0x6f, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65,
-0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f,
-0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f,
-0x73, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6b,
-0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6b, 0x77,
-0x61, 0x6e, 0x7a, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x65, 0x73, 0x63, 0x75,
-0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x65, 0x73,
-0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b,
-0x3b, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x73, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69,
-0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64,
-0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73,
-0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x64,
-0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55,
-0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45,
-0x41, 0x43, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41,
-0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42,
-0x45, 0x41, 0x43, 0x29, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45,
-0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45,
-0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28,
-0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x63,
-0x61, 0x75, 0x3b, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x3b,
-0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x74, 0x61, 0x63, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x3b,
-0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b,
-0x3b, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f,
-0x3b, 0x3b, 0x3b, 0x3b, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69,
-0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54,
-0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72,
-0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e,
-0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3,
-0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x66, 0x72,
-0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73,
-0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x73, 0x75, 0xed, 0xe7,
-0x6f, 0x73, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24,
-0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a,
-0xa0f, 0x3b, 0x631, 0x648, 0x67e, 0x626, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a,
-0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72,
-0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72,
-0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219,
-0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x6c, 0x65,
-0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d,
-0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64,
-0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76,
-0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443,
-0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b,
-0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b,
-0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x440, 0x43e,
-0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e,
-0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440,
-0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443,
-0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441,
-0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a,
-0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20,
-0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d,
-0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b,
-0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430,
-0x445, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441,
-0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20,
-0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x430,
-0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x43e, 0x432, 0x3b, 0x43a, 0x438,
-0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430,
-0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438,
-0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435,
-0x44f, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x435, 0x432, 0x3b, 0x43c, 0x43e,
-0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d,
-0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441,
-0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a,
-0x438, 0x435, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x445,
-0x20, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x43e, 0x439, 0x20, 0x433,
-0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x66, 0x61, 0x72, 0xe2, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42,
-0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438,
-0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441,
-0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438,
-0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65,
+0x65, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x65, 0x73, 0x20, 0x64, 0x65, 0x73, 0x20, 0x53, 0x65,
+0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73,
+0x65, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x66,
+0x72, 0x61, 0x6e, 0x63, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x73, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x20,
+0x73, 0x79, 0x72, 0x69, 0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x20, 0x73, 0x79, 0x72, 0x69,
+0x65, 0x6e, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x69, 0x76, 0x72, 0x65, 0x73, 0x20, 0x73, 0x79, 0x72, 0x69, 0x65,
+0x6e, 0x6e, 0x65, 0x73, 0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b,
+0x3b, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x64,
+0x69, 0x6e, 0x61, 0x72, 0x73, 0x20, 0x74, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x73, 0x3b, 0x76, 0x61, 0x74, 0x75,
+0x20, 0x76, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x76, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x6e,
+0x75, 0x61, 0x74, 0x75, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x76, 0x61, 0x74, 0x75, 0x73, 0x20, 0x76, 0x61, 0x6e, 0x75,
+0x61, 0x74, 0x75, 0x61, 0x6e, 0x73, 0x3b, 0x50, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61,
+0x63, 0x68, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68,
+0x3b, 0x70, 0x68, 0x75, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x70, 0x75,
+0x69, 0x6e, 0x6e, 0x64, 0x20, 0x53, 0x68, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x3b, 0x70, 0x75, 0x6e,
+0x6e, 0x64, 0x20, 0x53, 0x61, 0x73, 0x61, 0x6e, 0x6e, 0x61, 0x63, 0x68, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8,
+0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b,
+0x3b, 0x3b, 0x3b, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x20, 0x10da, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x45, 0x75, 0x72, 0x6f,
+0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x65,
+0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69,
+0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x65,
+0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x6e, 0x3b, 0x395, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b5,
+0x3c5, 0x3c1, 0x3ce, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b5, 0x3c5, 0x3c1, 0x3ce, 0x3b, 0x64, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x69,
+0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x69, 0x6e,
+0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x61, 0x6e, 0x6d, 0x61, 0x72,
+0x6b, 0x69, 0x6d, 0x75, 0x74, 0x20, 0x6b, 0x6f, 0x72, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf,
+0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf,
+0xaaf, 0xabe, 0x3b, 0x3b, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b,
+0x4e, 0x61, 0x69, 0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x4e, 0x61, 0x69,
+0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x72,
+0x6f, 0x72, 0x69, 0x6e, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x4b, 0x75, 0x257, 0x69, 0x6e, 0x20,
+0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, 0x61, 0x20, 0x59, 0x61,
+0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x3b, 0x5e9,
+0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x3b,
+0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3,
+0x5e9, 0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e,
+0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f,
+0x20, 0x930, 0x941, 0x92a, 0x90f, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b,
+0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x6d, 0x61,
+0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20,
+0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61,
+0x3b, 0x3b, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x75, 0x72,
+0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x3b,
+0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f,
+0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x53, 0x74, 0x65, 0x69,
+0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69,
+0x6e, 0x67, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70,
+0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x62, 0x70, 0x75, 0x6e, 0x74,
+0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69,
+0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x65, 0x75, 0x72, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f,
+0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x3b,
+0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x69, 0x3b, 0x65e5, 0x672c,
+0x5186, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5186, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe,
+0xcaf, 0xcbf, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0x3b,
+0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0xc97, 0xcb3, 0xcc1, 0x3b, 0x6c1, 0x650,
+0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x3b,
+0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x3b, 0x3b,
+0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, 0x456, 0x3b, 0x41a,
+0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x41a, 0x44b, 0x440, 0x433,
+0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x3b, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b,
+0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc,
+0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20,
+0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x49, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x72, 0x79,
+0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20,
+0xe81, 0xeb5, 0xe9a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x65, 0x69, 0x72,
+0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b,
+0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x79, 0x61, 0x20, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45,
+0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61,
+0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x69, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x173, 0x3b, 0x41c,
+0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x41c, 0x430, 0x43a,
+0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x3b, 0x3b, 0x41c, 0x430, 0x43a,
+0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x438, 0x3b, 0x41, 0x72, 0x69, 0x61, 0x72,
+0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61,
+0x79, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x20, 0x4d, 0x61,
+0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x3b, 0x44, 0x6f,
+0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44,
+0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d,
+0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b,
+0x3b, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b,
+0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72,
+0x6f, 0x3b, 0x54, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x74, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x3b, 0x92d,
+0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20,
+0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f,
+0x947, 0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x41c, 0x43e, 0x43d,
+0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x3b, 0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b,
+0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f,
+0x93e, 0x901, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b,
+0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x92d, 0x93e, 0x930,
+0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20,
+0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942,
+0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b,
+0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73,
+0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d,
+0xb15, 0xb3e, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x3b, 0x3b, 0x3b,
+0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b,
+0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x67e, 0x627,
+0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a,
+0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627,
+0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x6d2, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646,
+0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644,
+0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633,
+0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627,
+0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627,
+0x646, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74,
+0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x20, 0x70, 0x6f, 0x6c, 0x73,
+0x6b, 0x69, 0x65, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x63, 0x68,
+0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x67, 0x6f, 0x3b, 0x52,
+0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x6c,
+0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x65, 0x61, 0x69, 0x73,
+0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x73, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20,
+0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67,
+0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x67,
+0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76,
+0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, 0x62, 0x6f,
+0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x73,
+0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61,
+0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73,
+0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20,
+0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x64, 0x6f,
+0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x66, 0x72, 0x61,
+0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e,
+0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61,
+0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x66, 0x72, 0x61, 0x6e,
+0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e,
+0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x70, 0x61,
+0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x70, 0x61, 0x74, 0x61, 0x63,
+0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61,
+0x73, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20,
+0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c,
+0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6d, 0x65, 0x74, 0x69,
+0x63, 0x61, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0x6f,
+0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72,
+0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f,
+0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x3b, 0x3b,
+0x64, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65,
+0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed,
+0xe7, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x73, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40,
+0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b,
+0x3b, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa0f, 0x3b, 0x631, 0x648, 0x67e, 0x626, 0x6cc, 0x6c1,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x50, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x42, 0x6f, 0x6c, 0x69,
+0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f,
+0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73,
+0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a,
+0x7a, 0x65, 0x72, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65,
+0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2,
+0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69,
+0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65,
+0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d,
+0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c,
+0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439,
+0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440,
+0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431,
+0x43b, 0x44f, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439,
+0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x431,
+0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435,
+0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b,
+0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440,
+0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443,
+0x441, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a,
+0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20,
+0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, 0x43d,
+0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a,
+0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x438, 0x440, 0x433,
+0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a,
+0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x441,
+0x43e, 0x43c, 0x430, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x43e, 0x432,
+0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43c, 0x43e,
+0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432,
+0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445,
+0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x435, 0x432,
+0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x443, 0x43a, 0x440,
+0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430,
+0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438,
+0x43d, 0x441, 0x43a, 0x438, 0x435, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441,
+0x43a, 0x438, 0x445, 0x20, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x43e,
+0x439, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x66, 0x61, 0x72, 0xe2, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41,
+0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438,
+0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440,
+0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x3b, 0x441, 0x440, 0x43f,
+0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e,
+0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440,
+0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d,
+0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d,
+0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e,
+0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20,
+0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x65, 0x3b,
+0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447,
+0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c,
+0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x415, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432,
+0x440, 0x430, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65,
0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62,
0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f,
0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72,
@@ -3899,292 +3934,287 @@ static const ushort currency_display_name_data[] = {
0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x3b, 0x3b,
0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x61,
0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x68, 0x20, 0x64, 0x69, 0x6e,
-0x61, 0x72, 0x61, 0x3b, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e,
+0x61, 0x72, 0x61, 0x3b, 0x41b, 0x430, 0x440, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x3b, 0x3b, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x44b,
+0x3b, 0x421, 0x43e, 0x43c, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x44b, 0x3b, 0x44, 0x6f,
+0x72, 0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627,
+0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631,
+0x67e, 0x64a, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd,
+0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b,
+0x3b, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd,
+0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0xe1, 0x3b, 0x65, 0x75,
+0x72, 0x61, 0x3b, 0x65, 0x75, 0x72, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x65, 0x76,
+0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x69, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x76, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69,
+0x6e, 0x67, 0x6b, 0x61, 0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x66, 0x61, 0x72,
+0x61, 0x6e, 0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61,
+0x6e, 0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74,
+0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62,
+0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62,
+0x69, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b,
+0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b,
+0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x70, 0x65, 0x73, 0x6f,
+0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67,
+0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65,
+0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1,
+0x6f, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b,
+0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x62,
+0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b,
+0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62,
+0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69,
+0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x65, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69,
+0x6c, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b,
+0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f,
+0x73, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
+0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69,
+0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69,
+0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63,
+0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69,
+0x63, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x73,
+0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62,
+0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64,
+0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69,
+0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x64, 0x6f, 0x6d, 0x69,
+0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f,
+0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61,
+0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65,
+0x73, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x66, 0x72,
+0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43,
+0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64,
+0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b,
+0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63,
+0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x71,
+0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x65, 0x73, 0x3b,
+0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x6c,
+0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x73, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x73, 0x3b,
+0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20,
+0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x6d, 0x65,
+0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61,
+0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69,
+0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62,
+0x61, 0x73, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x62, 0x61, 0x6c,
+0x62, 0x6f, 0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61,
+0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x73,
+0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70,
+0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61,
+0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x65, 0x73,
+0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75,
+0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
+0x73, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20,
+0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70,
+0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e,
+0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x70, 0x65,
+0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73,
+0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73,
+0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62,
+0x65, 0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, 0x73,
+0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61,
+0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69,
+0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x46, 0x61, 0x72, 0x61,
+0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67,
+0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67,
+0x61, 0x20, 0x7a, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
+0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x7a, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61,
+0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61,
+0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x7a, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f,
+0x6e, 0x61, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b,
+0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d,
+0x4e3, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf,
+0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe,
+0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95,
+0xbb3, 0xbcd, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd,
+0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b,
+0x3b, 0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd,
+0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0,
+0xbcd, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd,
+0x3b, 0x3b, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0,
+0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b,
+0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99,
+0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f,
+0x20, 0x441, 0x443, 0x43c, 0x44b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x443, 0x43c, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f,
+0xc3f, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc32, 0xc41,
+0x3b, 0xe1a, 0xe32, 0xe17, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, 0xe17, 0xe22, 0x3b, 0xf61, 0xf74, 0xf0b,
+0xf68, 0xf53, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c,
+0xf62, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e,
+0x67, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61,
+0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x54,
+0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c,
+0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79,
+0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x3b, 0x3b,
+0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648,
+0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b,
+0x3b, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457,
+0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f,
+0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x433, 0x440, 0x438,
+0x432, 0x43d, 0x456, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b,
+0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627,
+0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20,
+0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b,
+0x3b, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6d2, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65,
+0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b,
+0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65,
+0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c,
+0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b,
+0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20,
+0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56,
+0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e,
+0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50,
+0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b,
+0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72,
+0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x46,
+0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f,
+0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20,
+0x43, 0x46, 0x41, 0x20, 0x79, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a,
+0x61, 0x6e, 0x74, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a,
+0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x59, 0x61, 0x73,
+0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x52,
+0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69,
+0x6b, 0x61, 0x3b, 0x4e, 0xe1, 0xec, 0x72, 0xe0, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x1eb9, 0x300, 0x2d, 0xe8,
+0x64, 0xe8, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0xe1, 0xed,
+0x72, 0xe0, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x20,
+0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, 0x20, 0x42, 0x49, 0x4b, 0x45, 0x41, 0x4f, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20,
+0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b,
+0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72,
+0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e,
+0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76,
+0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73,
+0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x65, 0x20, 0x6b, 0x6f,
+0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x3b, 0x3b, 0x62,
+0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x69, 0x68,
+0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x61,
+0x6b, 0x61, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440,
+0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e,
0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20,
0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446,
-0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b,
-0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445,
-0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438,
-0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x65, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a,
-0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432,
-0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x415, 0x432,
-0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430,
-0x3b, 0x41b, 0x430, 0x440, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x3b, 0x3b, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x44b, 0x3b, 0x421, 0x43e,
-0x43c, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x44b, 0x3b, 0x44, 0x6f, 0x72, 0x61, 0x20,
-0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa,
-0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20,
-0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b,
-0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0xdc1,
-0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0x3b, 0x3b,
-0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x65, 0x75,
-0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0xe1, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b,
-0x65, 0x75, 0x72, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b,
-0x65, 0x76, 0x72, 0x69, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x76, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b,
-0x61, 0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46,
-0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x6b,
-0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x6b, 0x61,
-0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62,
-0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79,
-0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61,
-0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68,
-0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69,
-0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72,
-0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74,
-0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69,
-0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b,
-0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3,
-0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0x69,
-0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b,
-0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73,
-0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1,
-0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x65, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1,
-0x6f, 0x73, 0x3b, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73,
-0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63,
-0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69,
-0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f,
-0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f,
-0x73, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73,
-0x65, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e,
-0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72,
-0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f,
-0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73,
-0x6f, 0x73, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69,
-0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63,
-0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63,
-0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69,
-0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75,
-0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x65,
-0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63,
-0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74,
-0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1,
-0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61,
-0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43,
-0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74,
-0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x65, 0x73, 0x3b, 0x6c, 0x65, 0x6d,
-0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x6c, 0x65, 0x6d, 0x70,
-0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x6d,
-0x70, 0x69, 0x72, 0x61, 0x73, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73,
-0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78,
-0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63,
-0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67,
-0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72,
-0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x73, 0x20,
-0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61,
-0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, 0x70, 0x61,
-0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x73, 0x20, 0x70, 0x61,
-0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61,
-0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67,
-0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x65, 0x73, 0x20, 0x70, 0x61,
-0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f,
-0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c,
-0x65, 0x73, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c,
-0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f,
-0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x73, 0x3b,
-0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20,
-0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x75, 0x72,
-0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62, 0x65,
-0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62, 0x65, 0x72, 0x61,
-0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, 0x73, 0x6f, 0x62, 0x65,
-0x72, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61,
-0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
-0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69,
-0x20, 0x7a, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61,
-0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79,
-0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x7a,
-0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20,
-0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b,
-0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20,
-0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67,
-0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67,
-0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20,
-0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b,
-0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65,
-0x6e, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2,
-0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b,
-0x3b, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b,
-0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0xbae,
-0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b,
-0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd,
-0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b,
-0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0x3b,
-0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb95, 0xbb3,
-0xbcd, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99,
-0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8,
-0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x20, 0x441, 0x443,
-0x43c, 0x44b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x443, 0x43c, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b,
-0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc32, 0xc41, 0x3b, 0xe1a, 0xe32,
-0xe17, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, 0xe17, 0xe22, 0x3b, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53, 0xf0b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c, 0xf62, 0xf0b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e,
-0x67, 0x61, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b,
-0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61,
-0x73, 0x131, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x74,
-0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0xfc, 0x72,
-0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8,
-0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x3b, 0x3b,
-0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c,
-0x43a, 0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433,
-0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456,
-0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9,
-0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a,
-0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e,
-0x6cc, 0x6c1, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b,
-0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6d2, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73,
-0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74,
-0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73,
-0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, 0x40e,
-0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431,
-0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7,
-0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74,
-0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75,
-0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64,
-0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e,
-0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64,
-0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x46, 0x72, 0x61,
-0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f, 0x77, 0x77,
-0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46,
-0x41, 0x20, 0x79, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e,
-0x74, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20,
-0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x59, 0x61, 0x73, 0x65, 0x4d,
-0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e,
-0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61,
-0x3b, 0x4e, 0xe1, 0xec, 0x72, 0xe0, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x1eb9, 0x300, 0x2d, 0xe8, 0x64, 0xe8,
-0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x72, 0x61,
-0x6e, 0x73, 0x69, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, 0x20, 0x42, 0x49, 0x4b,
-0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20,
-0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f,
-0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x42, 0x6f, 0x73,
-0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f,
-0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62,
-0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20,
-0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b,
-0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b,
-0x65, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b,
-0x65, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61,
-0x10d, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20,
-0x6d, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430,
-0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440,
-0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438,
-0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d,
-0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442,
-0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a,
-0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432,
-0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x47, 0x68,
-0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x4e, 0x52, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x4e, 0x52, 0x3b, 0x4e, 0x61, 0x1ecb, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61,
-0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b,
-0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46,
-0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256,
+0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b,
+0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x435, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445,
+0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442,
+0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61,
+0x20, 0x53, 0x69, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930,
+0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a,
+0x92f, 0x93e, 0x3b, 0x4e, 0x61, 0x1ecb, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e,
+0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68,
+0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69,
+0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256,
0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61,
-0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65,
-0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20,
-0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x50, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69,
-0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e,
-0x61, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69,
-0x6e, 0x61, 0x73, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65,
-0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b,
-0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x45,
-0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61,
-0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75,
-0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b,
-0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x65, 0x75, 0x72,
-0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b,
-0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167,
-0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72,
-0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64,
-0x6e, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61,
-0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69, 0x20,
-0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x61,
-0x6c, 0x61, 0x73, 0x69, 0x20, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f,
-0x6c, 0x61, 0x61, 0x72, 0x20, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x79, 0x72, 0x61, 0x61, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x65, 0x77, 0x6f, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x4c,
-0x69, 0x79, 0x6f, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79,
-0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e,
-0x67, 0x69, 0x20, 0x65, 0x65, 0x6c, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d,
-0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65,
-0x6c, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20, 0x73, 0x61,
-0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x2d30, 0x2d37, 0x2d54, 0x2d49,
-0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x64, 0x72,
-0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x64,
-0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a, 0x61, 0x79, 0x72, 0x69, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72,
-0x20, 0x6e, 0x20, 0x5a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x65,
-0x6e, 0x20, 0x6e, 0x20, 0x5a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69,
-0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69,
-0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61,
-0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72,
-0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20,
-0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5,
-0x13b3, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0xed, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e,
-0x73, 0x61, 0x6e, 0xed, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
-0x65, 0x79, 0x61, 0x20, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b,
-0x75, 0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75,
-0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x74, 0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61,
-0x72, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61,
-0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69,
-0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c,
-0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55,
-0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f,
-0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43,
-0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54,
-0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x420, 0x43e, 0x441,
-0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20,
-0x441, 0x43e, 0x44c, 0x43c, 0x430, 0x448, 0x3b, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x457, 0x439, 0x20, 0x440,
-0xa64b, 0x301, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a,
-0x430, 0x433, 0x461, 0x20, 0x440, 0xa64b, 0x431, 0x43b, 0x467, 0x300, 0x3b, 0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61, 0x20,
-0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46,
-0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x1ce, 0x14b,
-0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65,
-0x65, 0x66, 0x61, 0x20, 0x79, 0x61, 0x74, 0x69, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0xe1, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x61, 0x69,
-0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41,
-0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439,
-0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440,
-0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x49,
-0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b,
-0x3b, 0x3b, 0x3b, 0x3b, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20, 0xa55c, 0xa55e, 0xa54c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c,
-0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46,
-0x25b, 0x6c, 0xe2, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41,
-0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x72, 0xe8, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66,
-0x65, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x62f, 0x6cc, 0x646, 0x627, 0x631,
-0x6cc, 0x20, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc,
-0x20, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b,
-0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f,
-0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x6a, 0x3b, 0x65, 0x75,
-0x72, 0x61, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x77, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
-0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631,
-0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e2f, 0x5e63, 0x3b
+0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61,
+0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43,
+0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69,
+0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f,
+0x3b, 0x50, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b,
+0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x3b,
+0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x53,
+0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x53, 0x63, 0x68,
+0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x63, 0x68,
+0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76,
+0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b,
+0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72,
+0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75,
+0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167,
+0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72,
+0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f,
+0x3b, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x53, 0x68,
+0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41,
+0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61,
+0x61, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x20,
+0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x61, 0x72, 0x20,
+0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, 0x69, 0x79,
+0x79, 0x61, 0x20, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61,
+0x79, 0x72, 0x61, 0x61, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x4c, 0x65, 0x77, 0x6f, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x4c, 0x69, 0x79, 0x6f, 0x6e, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e,
+0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65,
+0x6c, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61,
+0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20, 0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a,
+0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x2d30, 0x2d37, 0x2d54, 0x2d49, 0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d,
+0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x64, 0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20,
+0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20,
+0x41, 0x7a, 0x7a, 0x61, 0x79, 0x72, 0x69, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x6e, 0x20, 0x5a, 0x7a,
+0x61, 0x79, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x65, 0x6e, 0x20, 0x6e, 0x20, 0x5a,
+0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55,
+0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69,
+0x20, 0x79, 0x61, 0x20, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69,
+0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42,
+0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b,
+0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x72, 0x6f, 0x75,
+0x70, 0x69, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68,
+0x69, 0x6c, 0xed, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59,
+0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b,
+0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75,
+0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x69, 0x6c, 0x69,
+0x6e, 0x67, 0x69, 0x74, 0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69,
+0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69,
+0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20,
+0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41,
+0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b,
+0x2019, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72,
+0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c,
+0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e,
+0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x420,
+0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20,
+0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x44c, 0x43c, 0x430,
+0x448, 0x3b, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x457, 0x439, 0x20, 0x440, 0xa64b, 0x301, 0x431, 0x43b, 0x44c,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x430, 0x433, 0x461, 0x20, 0x440,
+0xa64b, 0x431, 0x43b, 0x467, 0x300, 0x3b, 0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f,
+0x6e, 0x67, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20,
+0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20,
+0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x65, 0x66, 0x61, 0x20, 0x79,
+0x61, 0x74, 0x69, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x259, 0x6c, 0xe1,
+0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66,
+0x72, 0xe1, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x61, 0x69, 0x20, 0x42, 0x45, 0x41, 0x43,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b,
+0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b,
+0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x49, 0x68, 0x65, 0x6c, 0x61, 0x20,
+0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xa55e,
+0xa524, 0xa52b, 0xa569, 0x20, 0xa55c, 0xa55e, 0xa54c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69,
+0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x14b, 0x3b,
+0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
+0x3b, 0x3b, 0x73, 0x68, 0x69, 0x72, 0xe8, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x65, 0x6c, 0xe1, 0x14b, 0x20,
+0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x62f, 0x6cc, 0x646, 0x627, 0x631, 0x6cc, 0x20, 0x639, 0x6ce, 0x631,
+0x627, 0x642, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627,
+0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b,
+0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f,
+0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x6a, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x65,
+0x75, 0x72, 0x6f, 0x77, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627,
+0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc,
+0x627, 0x644, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70,
+0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x69, 0x73, 0x6f, 0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e,
+0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x67, 0x61, 0x20, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70,
+0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b
};
static const ushort currency_format_data[] = {
0x25, 0x31, 0x25, 0x32, 0x25, 0x32, 0x25, 0x31, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x25, 0x32,
0x25, 0x31, 0x4b, 0x25, 0x32, 0xa0, 0x2d, 0x25, 0x31, 0x28, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x29, 0x25, 0x32, 0x2d, 0x25,
0x31, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x4b, 0x25, 0x31, 0xa0, 0x6b, 0x25, 0x32, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x2d, 0x25,
-0x32, 0x2212, 0x25, 0x31, 0x200f, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x200f, 0x200e, 0x2d, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x200e, 0x25,
-0x32, 0x25, 0x31, 0x28, 0x25, 0x32, 0x25, 0x31, 0x29, 0x25, 0x31, 0xa0, 0x4b, 0xa0, 0x25, 0x32, 0x25, 0x32, 0x2d, 0xa0,
-0x25, 0x31
+0x32, 0x2212, 0x25, 0x31, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x44, 0x200f, 0x25, 0x31, 0xa0, 0x25, 0x32, 0x200f, 0x200e, 0x2d, 0x25,
+0x31, 0xa0, 0x25, 0x32, 0x200e, 0x25, 0x32, 0x25, 0x31, 0x28, 0x25, 0x32, 0x25, 0x31, 0x29, 0x25, 0x31, 0xa0, 0x4b, 0xa0,
+0x25, 0x32, 0x25, 0x32, 0xa0, 0x4d, 0x25, 0x31, 0x25, 0x32, 0x2d, 0x4d, 0x25, 0x31, 0x25, 0x32, 0x2d, 0xa0, 0x25, 0x31
};
static const ushort endonyms_data[] = {
@@ -4204,288 +4234,289 @@ static const ushort endonyms_data[] = {
0x646, 0x633, 0x648, 0x631, 0x64a, 0x627, 0x62a, 0x648, 0x646, 0x633, 0x627, 0x644, 0x625, 0x645, 0x627, 0x631, 0x627, 0x62a, 0x20, 0x627,
0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x645, 0x62a, 0x62d, 0x62f, 0x629, 0x627, 0x644, 0x635, 0x62d, 0x631, 0x627,
0x621, 0x20, 0x627, 0x644, 0x63a, 0x631, 0x628, 0x64a, 0x629, 0x627, 0x644, 0x64a, 0x645, 0x646, 0x62c, 0x646, 0x648, 0x628, 0x20, 0x627,
-0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x631, 0x633, 0x645, 0x64a,
-0x629, 0x20, 0x627, 0x644, 0x62d, 0x62f, 0x64a, 0x62b, 0x629, 0x627, 0x644, 0x639, 0x627, 0x644, 0x645, 0x570, 0x561, 0x575, 0x565, 0x580,
-0x565, 0x576, 0x540, 0x561, 0x575, 0x561, 0x57d, 0x57f, 0x561, 0x576, 0x985, 0x9b8, 0x9ae, 0x9c0, 0x9af, 0x9bc, 0x9be, 0x9ad, 0x9be, 0x9f0,
-0x9a4, 0x61, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x41, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61,
-0x6e, 0x430, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x410, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430,
-0x43d, 0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61, 0x45, 0x73, 0x70, 0x61, 0x69, 0x6e, 0x69, 0x61, 0x9ac, 0x9be, 0x982, 0x9b2,
-0x9be, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0xf62, 0xfab, 0xf7c, 0xf44, 0xf0b, 0xf41, 0xf60,
-0xf56, 0xfb2, 0xf74, 0xf42, 0x62, 0x72, 0x65, 0x7a, 0x68, 0x6f, 0x6e, 0x65, 0x67, 0x46, 0x72, 0x61, 0xf1, 0x73, 0x431, 0x44a,
-0x43b, 0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x411, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x438, 0x44f, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019,
-0x102c, 0x431, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x43a, 0x430, 0x44f, 0x411, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x44c, 0x1781,
-0x17d2, 0x1798, 0x17c2, 0x179a, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x63, 0x61, 0x74, 0x61, 0x6c, 0xe0, 0x45, 0x73, 0x70,
-0x61, 0x6e, 0x79, 0x61, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x49, 0x74, 0xe0,
-0x6c, 0x69, 0x61, 0x7b80, 0x4f53, 0x4e2d, 0x6587, 0x4e2d, 0x56fd, 0x4e2d, 0x56fd, 0x9999, 0x6e2f, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x4e2d, 0x56fd,
-0x6fb3, 0x95e8, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x65b0, 0x52a0, 0x5761, 0x7e41, 0x9ad4, 0x4e2d, 0x6587, 0x4e2d, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225,
-0x884c, 0x653f, 0x5340, 0x4e2d, 0x570b, 0x6fb3, 0x9580, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x53f0, 0x7063, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73,
-0x6b, 0x69, 0x48, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x61, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48, 0x65,
-0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61, 0x10d, 0x65, 0x161, 0x74, 0x69, 0x6e, 0x61, 0x10c, 0x65, 0x73, 0x6b,
-0x6f, 0x64, 0x61, 0x6e, 0x73, 0x6b, 0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x47, 0x72, 0xf8, 0x6e, 0x6c, 0x61, 0x6e,
-0x64, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64,
-0x41, 0x72, 0x75, 0x62, 0x61, 0x42, 0x65, 0x6c, 0x67, 0x69, 0xeb, 0x43, 0x75, 0x72, 0x61, 0xe7, 0x61, 0x6f, 0x53, 0x75,
-0x72, 0x69, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x72, 0x69, 0x62, 0x69, 0x73, 0x63, 0x68, 0x20, 0x4e, 0x65, 0x64, 0x65,
-0x72, 0x6c, 0x61, 0x6e, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20,
-0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x6e, 0x20, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x67,
-0x75, 0x61, 0x20, 0x26, 0x20, 0x42, 0x61, 0x72, 0x62, 0x75, 0x64, 0x61, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69,
-0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x41,
-0x75, 0x73, 0x74, 0x72, 0x69, 0x61, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x61, 0x73, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f,
-0x73, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x75, 0x6d, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64,
-0x61, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x49, 0x6e, 0x64,
-0x69, 0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42,
-0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69,
-0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x43, 0x61, 0x79, 0x6d,
-0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x20,
-0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x20, 0x28, 0x4b, 0x65, 0x65, 0x6c, 0x69, 0x6e, 0x67,
-0x29, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x6f, 0x6f, 0x6b, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64,
-0x73, 0x43, 0x79, 0x70, 0x72, 0x75, 0x73, 0x44, 0x65, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69,
-0x63, 0x61, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73,
-0x6c, 0x61, 0x6e, 0x64, 0x73, 0x46, 0x69, 0x6a, 0x69, 0x46, 0x69, 0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x47, 0x75, 0x65, 0x72,
-0x6e, 0x73, 0x65, 0x79, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x79, 0x47, 0x68, 0x61,
-0x6e, 0x61, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x47, 0x75,
-0x61, 0x6d, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x53, 0x41,
-0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x49, 0x72, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x49,
-0x73, 0x72, 0x61, 0x65, 0x6c, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, 0x69, 0x72,
-0x69, 0x62, 0x61, 0x74, 0x69, 0x4c, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x4d,
-0x61, 0x63, 0x61, 0x6f, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61,
-0x73, 0x63, 0x61, 0x72, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x4d, 0x61,
-0x6c, 0x74, 0x61, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4d,
-0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x4d, 0x6f,
-0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x4e, 0x61, 0x75, 0x72, 0x75,
-0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61,
-0x6e, 0x64, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x4e, 0x69, 0x75, 0x65, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b,
-0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69,
-0x61, 0x6e, 0x61, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x50,
-0x61, 0x6c, 0x61, 0x75, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61,
-0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20,
-0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52, 0x69, 0x63, 0x6f, 0x52, 0x77,
-0x61, 0x6e, 0x64, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69,
-0x73, 0x53, 0x74, 0x2e, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e,
-0x74, 0x20, 0x26, 0x20, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x53,
-0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e,
-0x65, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f,
-0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41,
-0x66, 0x72, 0x69, 0x63, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e,
-0x45, 0x73, 0x77, 0x61, 0x74, 0x69, 0x6e, 0x69, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, 0x65,
-0x72, 0x6c, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6c, 0x61, 0x75,
-0x54, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61,
-0x67, 0x6f, 0x54, 0x75, 0x72, 0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c,
-0x61, 0x6e, 0x64, 0x73, 0x54, 0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x6e, 0x69, 0x74,
-0x65, 0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x69, 0x74,
-0x69, 0x73, 0x68, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69,
-0x6e, 0x67, 0x64, 0x6f, 0x6d, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49,
-0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68,
-0x20, 0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20,
-0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61,
-0x5a, 0x69, 0x6d, 0x62, 0x61, 0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61,
-0x49, 0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, 0x75,
-0x74, 0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e,
-0x57, 0x6f, 0x72, 0x6c, 0x64, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f,
-0x4d, 0x6f, 0x6e, 0x64, 0x6f, 0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79,
-0x73, 0x6b, 0x74, 0x46, 0xf8, 0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69,
-0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x67, 0xe9, 0x72, 0x69,
-0x65, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x6e,
-0x61, 0x20, 0x46, 0x61, 0x73, 0x6f, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61,
-0x69, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75,
-0x65, 0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61,
-0x64, 0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61,
-0x73, 0x61, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43,
-0xf4, 0x74, 0x65, 0x20, 0x64, 0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69,
-0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75,
-0x79, 0x61, 0x6e, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9,
-0x73, 0x69, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f, 0x6e, 0x47, 0x75,
-0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x4c,
-0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x6c, 0x69, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69,
-0x71, 0x75, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65,
-0x4d, 0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f,
-0x75, 0x76, 0x65, 0x6c, 0x6c, 0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4e, 0x69, 0x67, 0x65,
-0x72, 0x4c, 0x61, 0x20, 0x52, 0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x53, 0x61,
-0x69, 0x6e, 0x74, 0x2d, 0x50, 0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c,
-0x6f, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69,
-0x73, 0x73, 0x65, 0x53, 0x79, 0x72, 0x69, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x57,
-0x61, 0x6c, 0x6c, 0x69, 0x73, 0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61, 0x53, 0x61, 0x69, 0x6e, 0x74,
-0x2d, 0x42, 0x61, 0x72, 0x74, 0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72,
-0x74, 0x69, 0x6e, 0x46, 0x72, 0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x47, 0xe0, 0x69, 0x64,
-0x68, 0x6c, 0x69, 0x67, 0x41, 0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e,
-0x61, 0x69, 0x63, 0x68, 0x74, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x10e5, 0x10d0,
-0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, 0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, 0x73,
-0x63, 0x68, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65,
-0x69, 0x63, 0x68, 0x69, 0x73, 0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0xd6, 0x73, 0x74,
-0x65, 0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65,
-0x6e, 0x4c, 0x69, 0x65, 0x63, 0x68, 0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62,
-0x75, 0x72, 0x67, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75,
-0x74, 0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395,
-0x3bb, 0x3bb, 0x3ac, 0x3b4, 0x3b1, 0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73,
-0x75, 0x74, 0x4b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1,
-0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, 0xaad, 0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69,
-0x79, 0x61, 0x47, 0x61, 0x6e, 0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0,
-0x5dc, 0x939, 0x93f, 0x928, 0x94d, 0x926, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67,
-0x79, 0x61, 0x72, 0x6f, 0x72, 0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c,
-0x61, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e,
-0x67, 0x75, 0x61, 0x4d, 0x75, 0x6e, 0x64, 0x6f, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x69,
-0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72,
-0x69, 0x6e, 0x6f, 0x53, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x6c,
-0x20, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x65e5, 0x672c, 0x8a9e, 0x65e5, 0x672c, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e,
-0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, 0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f,
-0x631, 0x6c1, 0x650, 0x646, 0x62f, 0x648, 0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, 0x437, 0x430, 0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456,
-0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x4b, 0x69, 0x6e, 0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61,
-0x55, 0x20, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433,
-0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0xd55c, 0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778,
-0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x6b, 0x75, 0x72, 0x64, 0xee, 0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x49, 0x6b, 0x69, 0x72,
-0x75, 0x6e, 0x64, 0x69, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69,
-0x65, 0x161, 0x75, 0x4c, 0x61, 0x74, 0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70,
-0x75, 0x62, 0x6c, 0xed, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44, 0x65, 0x6d, 0x6f,
-0x6b, 0x72, 0x61, 0x74, 0xed, 0x6b, 0x69, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b,
-0x69, 0x20, 0x79, 0x61, 0x20, 0x41, 0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b,
-0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x43c,
-0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x43a,
-0x435, 0x434, 0x43e, 0x43d, 0x438, 0x458, 0x430, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67,
-0x61, 0x73, 0x69, 0x6b, 0x61, 0x72, 0x61, 0x4d, 0x65, 0x6c, 0x61, 0x79, 0x75, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x53,
-0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f,
-0x4d, 0x61, 0x6c, 0x74, 0x69, 0x4d, 0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x92e, 0x930,
-0x93e, 0x920, 0x940, 0x43c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x928, 0x947, 0x92a, 0x93e, 0x932,
-0x940, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f,
-0x72, 0x67, 0x65, 0x53, 0x76, 0x61, 0x6c, 0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x4d,
-0x61, 0x79, 0x65, 0x6e, 0xb13, 0xb21, 0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a,
-0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641, 0x627, 0x631, 0x633, 0x6cc, 0x627, 0x6cc,
-0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f,
-0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x43,
-0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, 0x72, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x6f, 0x72, 0x2d, 0x4c, 0x65, 0x73, 0x74, 0x65,
-0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6e,
-0xe9, 0x2d, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4d, 0x61,
-0x63, 0x61, 0x75, 0x2c, 0x20, 0x52, 0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x6f, 0xe7,
-0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72,
-0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9,
-0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, 0x61, 0xa2a, 0xa70, 0xa1c, 0xa3e,
-0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627, 0x628, 0x6cc, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69,
-0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x45, 0x63, 0x75, 0x61, 0x64, 0x6f, 0x72, 0x72, 0x75,
-0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52,
-0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64,
-0x6f, 0x76, 0x61, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x41a, 0x430, 0x437, 0x430,
-0x445, 0x441, 0x442, 0x430, 0x43d, 0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434, 0x43e, 0x432, 0x430,
-0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea,
-0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438,
-0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72,
-0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, 0x446, 0x435,
-0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x41a, 0x43e, 0x441, 0x43e, 0x432,
-0x43e, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437, 0x44b, 0x441, 0x442,
-0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, 0x441, 0x435, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0x633, 0x646, 0x68c, 0x64a,
-0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82,
-0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73,
-0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69,
-0x6a, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61,
-0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1,
-0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x41,
-0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x42, 0x65, 0x6c, 0x69, 0x63, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43,
-0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20, 0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62,
-0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e,
-0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45,
-0x63, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f,
-0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9, 0x78,
-0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61,
-0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61,
-0x73, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67, 0x75,
-0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x65,
-0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x43, 0x65, 0x75, 0x74, 0x61,
-0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, 0x69, 0x6c, 0x6c, 0x61, 0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a,
-0x61, 0x6d, 0x68, 0x75, 0x72, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x69, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73,
-0x69, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76,
-0x65, 0x72, 0x69, 0x67, 0x65, 0xc5, 0x6c, 0x61, 0x6e, 0x64, 0x442, 0x43e, 0x4b7, 0x438, 0x43a, 0x4e3, 0x422, 0x43e, 0x4b7, 0x438,
-0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0xba4, 0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2,
-0xbc7, 0xb9a, 0xbbf, 0xbaf, 0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd,
-0xb95, 0xbc8, 0x442, 0x430, 0x442, 0x430, 0x440, 0xc24, 0xc46, 0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36,
-0xc02, 0xe44, 0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, 0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92,
-0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275, 0x130d, 0x122d, 0x129b, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b,
-0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b,
-0x131, 0x62, 0x72, 0x131, 0x73, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x64, 0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72,
-0x6b, 0x6d, 0x65, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x626, 0x6c7, 0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad,
-0x6af, 0x648, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x627,
-0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b,
-0x69, 0x73, 0x74, 0x6f, 0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x45e, 0x437, 0x431, 0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437,
-0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69,
-0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x56, 0x6f, 0x6c, 0x61, 0x70, 0xfc, 0x6b, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67,
-0x59, 0x20, 0x44, 0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, 0x64, 0x69, 0x67, 0x57, 0x6f, 0x6c, 0x6f,
-0x66, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x69, 0x58, 0x68, 0x6f, 0x73, 0x61, 0x65, 0x4d, 0x7a,
-0x61, 0x6e, 0x74, 0x73, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x5d9, 0x5d9, 0x5b4, 0x5d3, 0x5d9, 0x5e9, 0x5d5, 0x5d5,
-0x5e2, 0x5dc, 0x5d8, 0xc8, 0x64, 0xe8, 0x20, 0x59, 0x6f, 0x72, 0xf9, 0x62, 0xe1, 0x4f, 0x72, 0x69, 0x6c, 0x1eb9, 0x300, 0x2d,
-0xe8, 0x64, 0xe8, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64,
-0x65, 0x20, 0x42, 0x25b, 0x300, 0x6e, 0x25b, 0x300, 0x69, 0x73, 0x69, 0x5a, 0x75, 0x6c, 0x75, 0x69, 0x4e, 0x69, 0x6e, 0x67,
-0x69, 0x7a, 0x69, 0x6d, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e,
-0x6f, 0x72, 0x65, 0x67, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x69, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438,
-0x47, 0x61, 0x65, 0x6c, 0x67, 0x45, 0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x6b, 0x65, 0x72,
-0x6e, 0x65, 0x77, 0x65, 0x6b, 0x52, 0x79, 0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x41,
-0x6b, 0x61, 0x6e, 0x47, 0x61, 0x61, 0x6e, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0x41, 0x73, 0x1ee5, 0x73, 0x1ee5, 0x20,
-0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61, 0x1ecb, 0x6a, 0x1ecb, 0x72, 0x1ecb, 0x61, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0x66,
-0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, 0x68, 0x61,
-0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65,
-0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20, 0x48, 0x61, 0x77, 0x61, 0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c, 0x69,
-0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, 0x2bb, 0x49, 0x61, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e,
-0x6f, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x74,
-0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x72, 0x69,
-0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65, 0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0xa188, 0xa320, 0xa259, 0xa34f,
-0xa1e9, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x73, 0x61, 0x73, 0x73, 0x2019, 0x73, 0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73,
-0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x64, 0x61,
-0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x53, 0x75,
-0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69,
-0x74, 0x61, 0x69, 0x74, 0x61, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x62, 0x61, 0x61, 0x20,
-0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x75, 0x6e, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x47,
-0x61, 0x6e, 0x61, 0x61, 0x47, 0x69, 0x6e, 0x65, 0x47, 0x69, 0x6e, 0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61, 0x77, 0x6f,
-0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69, 0x6a,
-0x65, 0x65, 0x72, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x6c, 0x69,
-0x79, 0x6f, 0x6e, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, 0x6e,
-0x61, 0x69, 0x73, 0x69, 0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, 0x6f,
-0x2d5c, 0x2d30, 0x2d5b, 0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25,
-0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x54, 0x61, 0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, 0x65,
-0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x62, 0x65,
-0x6e, 0x61, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, 0x6f,
-0x62, 0x61, 0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4b, 0x129, 0x65, 0x6d, 0x62, 0x75, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca,
-0x20, 0x13a2, 0x13f3, 0x13be, 0x13b5, 0x13cd, 0x13d4, 0x13c5, 0x20, 0x13cd, 0x13a6, 0x13da, 0x13a9, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d,
-0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x4d, 0x6f, 0x72, 0x69, 0x73, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e,
-0x64, 0x65, 0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x4c,
-0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d,
-0x62, 0x61, 0x6b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56,
-0x65, 0x72, 0x64, 0x69, 0x4b, 0x129, 0x6d, 0x129, 0x72, 0x169, 0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d,
-0x65, 0x74, 0x61, 0x62, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f,
-0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x62, 0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65,
-0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68, 0x44, 0x6f, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x61,
-0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x4f, 0x6c, 0x75, 0x73, 0x6f, 0x67, 0x61, 0x4c, 0x75, 0x6c, 0x75, 0x68,
-0x69, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x69, 0x74, 0x65,
-0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x4d, 0x61,
-0x61, 0x6c, 0x69, 0x4b, 0x69, 0x72, 0x75, 0x77, 0x61, 0x44, 0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x52, 0x75, 0x6b, 0x69, 0x67,
-0x61, 0x54, 0x61, 0x6d, 0x61, 0x7a, 0x69, 0x263, 0x74, 0x20, 0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65,
-0x1e5b, 0x1e5b, 0x75, 0x6b, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4b,
-0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x92c, 0x921, 0x93c, 0x94b, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420,
-0x43e, 0x441, 0x441, 0x438, 0x446, 0x435, 0x440, 0x43a, 0x43e, 0x432, 0x43d, 0x43e, 0x441, 0x43b, 0x43e, 0x432, 0x435, 0x301, 0x43d, 0x441,
-0x43a, 0x457, 0x439, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x430, 0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69,
-0x74, 0x75, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62,
-0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x41, 0x67,
-0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, 0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d, 0x25b, 0x300,
-0x72, 0xfb, 0x6e, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69, 0x69, 0x6e, 0x65, 0x4e, 0x69, 0x17e, 0x65, 0x72, 0x64, 0x75,
-0xe1, 0x6c, 0xe1, 0x6a, 0x6f, 0x6f, 0x6c, 0x61, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x77, 0x6f, 0x6e, 0x64,
-0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e, 0x72, 0x69, 0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e,
-0x4d, 0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, 0x6d, 0x62, 0x69, 0x6b, 0x69, 0x4d, 0x55, 0x4e, 0x44, 0x41,
-0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x14b, 0x4b, 0x77, 0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75,
-0x6e, 0x54, 0x68, 0x6f, 0x6b, 0x20, 0x4e, 0x61, 0x74, 0x68, 0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410,
-0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x49, 0x73, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e,
-0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x54, 0x61, 0x73, 0x61, 0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0xa559,
-0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56, 0x61, 0x69, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x57, 0x61, 0x6c, 0x73,
-0x65, 0x72, 0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x6e, 0x75, 0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, 0x65, 0x6c, 0xfa,
-0x6e, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, 0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d, 0x25b, 0x6c,
-0xfb, 0x6e, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, 0x72, 0x75, 0x6e, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61,
-0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x53, 0x68, 0x77, 0xf3, 0x14b, 0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65, 0x6d, 0x62, 0x254, 0x254,
-0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c, 0xfb, 0x6d, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61, 0x70, 0x69,
-0x4d, 0xed, 0x6c, 0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61, 0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d,
-0x68, 0x65, 0x2d5c, 0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49, 0x2d56, 0x2d5c, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648,
-0x6d5, 0x646, 0x62f, 0x6cc, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73,
-0x65, 0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f,
-0x73, 0x65, 0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x70, 0x72, 0x16b, 0x73, 0x69,
-0x73, 0x6b, 0x61, 0x6e, 0x73, 0x77, 0x12b, 0x74, 0x61, 0x69, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, 0x65, 0x6c,
-0xe2, 0x53, 0x75, 0x6f, 0x6d, 0xe2, 0x645, 0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x644, 0x6ca, 0x631, 0x6cc, 0x20, 0x634, 0x648,
-0x645, 0x627, 0x644, 0x6cc, 0x7cb5, 0x8a9e, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340,
-0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x56fd, 0x43, 0x65, 0x62, 0x75, 0x61, 0x6e, 0x6f
+0x644, 0x633, 0x648, 0x62f, 0x627, 0x646, 0x627, 0x644, 0x639, 0x631, 0x628, 0x64a, 0x629, 0x20, 0x627, 0x644, 0x641, 0x635, 0x62d, 0x649,
+0x20, 0x627, 0x644, 0x62d, 0x62f, 0x64a, 0x62b, 0x629, 0x627, 0x644, 0x639, 0x627, 0x644, 0x645, 0x570, 0x561, 0x575, 0x565, 0x580, 0x565,
+0x576, 0x540, 0x561, 0x575, 0x561, 0x57d, 0x57f, 0x561, 0x576, 0x985, 0x9b8, 0x9ae, 0x9c0, 0x9af, 0x9bc, 0x9be, 0x9ad, 0x9be, 0x9f0, 0x9a4,
+0x61, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e, 0x41, 0x7a, 0x259, 0x72, 0x62, 0x61, 0x79, 0x63, 0x61, 0x6e,
+0x430, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d, 0x410, 0x437, 0x4d9, 0x440, 0x431, 0x430, 0x458, 0x4b9, 0x430, 0x43d,
+0x65, 0x75, 0x73, 0x6b, 0x61, 0x72, 0x61, 0x45, 0x73, 0x70, 0x61, 0x69, 0x6e, 0x69, 0x61, 0x9ac, 0x9be, 0x982, 0x9b2, 0x9be,
+0x9ac, 0x9be, 0x982, 0x9b2, 0x9be, 0x9a6, 0x9c7, 0x9b6, 0x9ad, 0x9be, 0x9b0, 0x9a4, 0xf62, 0xfab, 0xf7c, 0xf44, 0xf0b, 0xf41, 0xf60, 0xf56,
+0xfb2, 0xf74, 0xf42, 0x62, 0x72, 0x65, 0x7a, 0x68, 0x6f, 0x6e, 0x65, 0x67, 0x46, 0x72, 0x61, 0xf1, 0x73, 0x431, 0x44a, 0x43b,
+0x433, 0x430, 0x440, 0x441, 0x43a, 0x438, 0x411, 0x44a, 0x43b, 0x433, 0x430, 0x440, 0x438, 0x44f, 0x1019, 0x103c, 0x1014, 0x103a, 0x1019, 0x102c,
+0x431, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x43a, 0x430, 0x44f, 0x411, 0x435, 0x43b, 0x430, 0x440, 0x443, 0x441, 0x44c, 0x1781, 0x17d2,
+0x1798, 0x17c2, 0x179a, 0x1780, 0x1798, 0x17d2, 0x1796, 0x17bb, 0x1787, 0x17b6, 0x63, 0x61, 0x74, 0x61, 0x6c, 0xe0, 0x45, 0x73, 0x70, 0x61,
+0x6e, 0x79, 0x61, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x46, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x49, 0x74, 0xe0, 0x6c,
+0x69, 0x61, 0x7b80, 0x4f53, 0x4e2d, 0x6587, 0x4e2d, 0x56fd, 0x4e2d, 0x56fd, 0x9999, 0x6e2f, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x4e2d, 0x56fd, 0x6fb3,
+0x95e8, 0x7279, 0x522b, 0x884c, 0x653f, 0x533a, 0x65b0, 0x52a0, 0x5761, 0x7e41, 0x9ad4, 0x4e2d, 0x6587, 0x4e2d, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c,
+0x653f, 0x5340, 0x4e2d, 0x570b, 0x6fb3, 0x9580, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x53f0, 0x7063, 0x68, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b,
+0x69, 0x48, 0x72, 0x76, 0x61, 0x74, 0x73, 0x6b, 0x61, 0x42, 0x6f, 0x73, 0x6e, 0x61, 0x20, 0x69, 0x20, 0x48, 0x65, 0x72,
+0x63, 0x65, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x61, 0x10d, 0x65, 0x161, 0x74, 0x69, 0x6e, 0x61, 0x10c, 0x65, 0x73, 0x6b, 0x6f,
+0x64, 0x61, 0x6e, 0x73, 0x6b, 0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x47, 0x72, 0xf8, 0x6e, 0x6c, 0x61, 0x6e, 0x64,
+0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x41,
+0x72, 0x75, 0x62, 0x61, 0x42, 0x65, 0x6c, 0x67, 0x69, 0xeb, 0x43, 0x75, 0x72, 0x61, 0xe7, 0x61, 0x6f, 0x53, 0x75, 0x72,
+0x69, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x72, 0x69, 0x62, 0x69, 0x73, 0x63, 0x68, 0x20, 0x4e, 0x65, 0x64, 0x65, 0x72,
+0x6c, 0x61, 0x6e, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x53,
+0x74, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e,
+0x20, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x41, 0x6e, 0x74, 0x69, 0x67, 0x75,
+0x61, 0x20, 0x26, 0x20, 0x42, 0x61, 0x72, 0x62, 0x75, 0x64, 0x61, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61,
+0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x41, 0x75,
+0x73, 0x74, 0x72, 0x69, 0x61, 0x42, 0x61, 0x68, 0x61, 0x6d, 0x61, 0x73, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73,
+0x42, 0x65, 0x6c, 0x67, 0x69, 0x75, 0x6d, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61,
+0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x69,
+0x61, 0x6e, 0x20, 0x4f, 0x63, 0x65, 0x61, 0x6e, 0x20, 0x54, 0x65, 0x72, 0x72, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x75,
+0x72, 0x75, 0x6e, 0x64, 0x69, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61,
+0x6e, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x61, 0x43, 0x61, 0x79, 0x6d, 0x61,
+0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x20, 0x49,
+0x73, 0x6c, 0x61, 0x6e, 0x64, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x20, 0x28, 0x4b, 0x65, 0x65, 0x6c, 0x69, 0x6e, 0x67, 0x29,
+0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x43, 0x6f, 0x6f, 0x6b, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73,
+0x43, 0x79, 0x70, 0x72, 0x75, 0x73, 0x44, 0x65, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63,
+0x61, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c,
+0x61, 0x6e, 0x64, 0x73, 0x46, 0x69, 0x6a, 0x69, 0x46, 0x69, 0x6e, 0x6c, 0x61, 0x6e, 0x64, 0x47, 0x75, 0x65, 0x72, 0x6e,
+0x73, 0x65, 0x79, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x47, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x79, 0x47, 0x68, 0x61, 0x6e,
+0x61, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x47, 0x75, 0x61,
+0x6d, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x53, 0x41, 0x52,
+0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x49, 0x72, 0x65, 0x6c, 0x61, 0x6e, 0x64, 0x49, 0x73,
+0x72, 0x61, 0x65, 0x6c, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, 0x69, 0x72, 0x69,
+0x62, 0x61, 0x74, 0x69, 0x4c, 0x65, 0x73, 0x6f, 0x74, 0x68, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x4d, 0x61,
+0x63, 0x61, 0x6f, 0x20, 0x53, 0x41, 0x52, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73,
+0x63, 0x61, 0x72, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x4d, 0x61, 0x6c,
+0x74, 0x61, 0x4d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x6c, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4d, 0x61,
+0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x4d, 0x6f, 0x6e,
+0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x4e,
+0x65, 0x74, 0x68, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e,
+0x64, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x4e, 0x69, 0x75, 0x65, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x20,
+0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x61,
+0x6e, 0x61, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x50, 0x61,
+0x6c, 0x61, 0x75, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x50,
+0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20, 0x49,
+0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52, 0x69, 0x63, 0x6f, 0x52, 0x77, 0x61,
+0x6e, 0x64, 0x61, 0x53, 0x74, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, 0x73, 0x53,
+0x74, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x26, 0x20,
+0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x53, 0x65, 0x79, 0x63, 0x68,
+0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x6e,
+0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f,
+0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63,
+0x61, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x45, 0x73, 0x77, 0x61, 0x74,
+0x69, 0x6e, 0x69, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64,
+0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6c, 0x61, 0x75, 0x54, 0x6f, 0x6e, 0x67, 0x61,
+0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x54, 0x75, 0x72,
+0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x54,
+0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x41, 0x72,
+0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x45,
+0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d,
+0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64,
+0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x56, 0x69, 0x72, 0x67,
+0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x56, 0x69, 0x72, 0x67, 0x69,
+0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x5a, 0x69, 0x6d, 0x62, 0x61,
+0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61, 0x49, 0x73, 0x6c, 0x65, 0x20,
+0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75,
+0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x57, 0x6f, 0x72, 0x6c, 0x64,
+0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x4d, 0x6f, 0x6e, 0x64, 0x6f,
+0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46, 0xf8,
+0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, 0x72, 0x61, 0x6e, 0xe7,
+0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x42, 0x65, 0x6c, 0x67,
+0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x6e, 0x61, 0x20, 0x46, 0x61, 0x73,
+0x6f, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x63, 0x61,
+0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, 0x20, 0x63, 0x65, 0x6e,
+0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6f,
+0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x43, 0x6f, 0x6e,
+0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43, 0xf4, 0x74, 0x65, 0x20, 0x64,
+0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x47, 0x75, 0x69, 0x6e, 0xe9,
+0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x65, 0x20,
+0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9, 0x73, 0x69, 0x65, 0x20, 0x66,
+0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f, 0x6e, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f,
+0x75, 0x70, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62,
+0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x6c, 0x69, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4d, 0x61,
+0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x79, 0x6f, 0x74,
+0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f, 0x75, 0x76, 0x65, 0x6c, 0x6c,
+0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x4c, 0x61, 0x20, 0x52,
+0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x50,
+0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x66, 0x72, 0x61,
+0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x79,
+0x72, 0x69, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73,
+0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x42, 0x61, 0x72, 0x74,
+0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x46, 0x72,
+0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x47, 0xe0, 0x69, 0x64, 0x68, 0x6c, 0x69, 0x67, 0x41,
+0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x74,
+0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8,
+0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x44, 0x65, 0x75,
+0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x69, 0x73,
+0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69,
+0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x4c, 0x69, 0x65, 0x63,
+0x68, 0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x53, 0x63,
+0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x53,
+0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, 0x3bb, 0x3ac, 0x3b4, 0x3b1,
+0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b, 0x61, 0x6c,
+0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0,
+0xaad, 0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x47, 0x61, 0x6e,
+0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc, 0x939, 0x93f, 0x928, 0x94d,
+0x926, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x6f, 0x72,
+0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x49, 0x6e,
+0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x4d, 0x75,
+0x6e, 0x64, 0x6f, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x52, 0xed, 0x6f,
+0x63, 0x68, 0x74, 0x20, 0x41, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x74, 0x68, 0x65, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e,
+0x6f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x53, 0x76, 0x69,
+0x7a, 0x7a, 0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x6c, 0x20, 0x56, 0x61, 0x74, 0x69, 0x63,
+0x61, 0x6e, 0x6f, 0x65e5, 0x672c, 0x8a9e, 0x65e5, 0x672c, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69,
+0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, 0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, 0x650, 0x646, 0x62f, 0x648,
+0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, 0x437, 0x430, 0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441,
+0x442, 0x430, 0x43d, 0x4b, 0x69, 0x6e, 0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x20, 0x52, 0x77, 0x61, 0x6e,
+0x64, 0x61, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d,
+0xd55c, 0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778, 0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x6b, 0x75,
+0x72, 0x64, 0xee, 0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x49, 0x6b, 0x69, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x55, 0x62,
+0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65, 0x161, 0x75, 0x4c, 0x61, 0x74,
+0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0xed, 0x6b, 0x69,
+0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x74, 0xed, 0x6b,
+0x69, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x41,
+0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69,
+0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x43c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d,
+0x441, 0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x438, 0x458,
+0x430, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73, 0x69, 0x6b, 0x61, 0x72,
+0x61, 0x4d, 0x65, 0x6c, 0x61, 0x79, 0x75, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75,
+0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x61, 0x6c, 0x74, 0x69, 0x4d,
+0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x92e, 0x930, 0x93e, 0x920, 0x940, 0x43c, 0x43e, 0x43d,
+0x433, 0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x928, 0x947, 0x92a, 0x93e, 0x932,
+0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53, 0x76, 0x61,
+0x6c, 0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0xb13, 0xb21,
+0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646,
+0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641, 0x627, 0x631, 0x633, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc,
+0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea,
+0x73, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65,
+0x72, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x6f, 0x72, 0x2d, 0x4c, 0x65, 0x73, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20,
+0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x2d, 0x42, 0x69, 0x73, 0x73,
+0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x2c, 0x20, 0x52,
+0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75,
+0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f,
+0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed,
+0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, 0x61, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24,
+0x67e, 0x646, 0x62c, 0x627, 0x628, 0x6cc, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f,
+0x6c, 0x69, 0x76, 0x69, 0x61, 0x45, 0x63, 0x75, 0x61, 0x64, 0x6f, 0x72, 0x72, 0x75, 0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63,
+0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61,
+0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x440, 0x443, 0x441,
+0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d, 0x41a,
+0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434, 0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d,
+0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20,
+0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430,
+0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x426,
+0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x41a, 0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69,
+0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x4b, 0x6f, 0x73, 0x6f, 0x76,
+0x6f, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437, 0x44b, 0x441, 0x442, 0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5,
+0x441, 0x435, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0x633, 0x646, 0x68c, 0x64a, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627,
+0x646, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f,
+0x76, 0x65, 0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76,
+0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x6a, 0x61, 0x53, 0x6f, 0x6f, 0x6d,
+0x61, 0x61, 0x6c, 0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74,
+0x69, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20,
+0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69,
+0x6e, 0x61, 0x42, 0x65, 0x6c, 0x69, 0x63, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69,
+0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20, 0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62, 0x61, 0x52, 0x65, 0x70, 0xfa, 0x62,
+0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x61, 0x45, 0x6c, 0x20, 0x53, 0x61,
+0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, 0x63, 0x75, 0x61, 0x74, 0x6f, 0x72,
+0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x61, 0x73,
+0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78,
+0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61,
+0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x45, 0x73, 0x74, 0x61, 0x64,
+0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65,
+0x7a, 0x75, 0x65, 0x6c, 0x61, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c,
+0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69,
+0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c,
+0x69, 0x6c, 0x6c, 0x61, 0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a, 0x61, 0x6d, 0x68, 0x75, 0x72, 0x69,
+0x20, 0x79, 0x61, 0x20, 0x4b, 0x69, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, 0x20, 0x79, 0x61, 0x20,
+0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0xc5,
+0x6c, 0x61, 0x6e, 0x64, 0x442, 0x43e, 0x4b7, 0x438, 0x43a, 0x4e3, 0x422, 0x43e, 0x4b7, 0x438, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d,
+0xba4, 0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2, 0xbc7, 0xb9a, 0xbbf, 0xbaf, 0xbbe, 0xb9a,
+0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x442, 0x430, 0x442, 0x430,
+0x440, 0xc24, 0xc46, 0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0xc02, 0xe44, 0xe17, 0xe22, 0xf56, 0xf7c,
+0xf51, 0xf0b, 0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275,
+0x130d, 0x122d, 0x129b, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61,
+0x54, 0xfc, 0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x131, 0x62, 0x72, 0x131, 0x73, 0x74,
+0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x64, 0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x69, 0x73,
+0x74, 0x61, 0x6e, 0x626, 0x6c7, 0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x443, 0x43a, 0x440, 0x430,
+0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627,
+0x631, 0x62a, 0x6f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x627,
+0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x45e, 0x437, 0x431, 0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442,
+0x43e, 0x43d, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d,
+0x56, 0x6f, 0x6c, 0x61, 0x70, 0xfc, 0x6b, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44, 0x65, 0x79, 0x72,
+0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, 0x64, 0x69, 0x67, 0x57, 0x6f, 0x6c, 0x6f, 0x66, 0x53, 0x65, 0x6e, 0x65, 0x67,
+0x61, 0x61, 0x6c, 0x69, 0x73, 0x69, 0x58, 0x68, 0x6f, 0x73, 0x61, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x74, 0x73, 0x69, 0x20,
+0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x5d9, 0x5d9, 0x5b4, 0x5d3, 0x5d9, 0x5e9, 0x5d5, 0x5d5, 0x5e2, 0x5dc, 0x5d8, 0xc8, 0x64, 0xe8,
+0x20, 0x59, 0x6f, 0x72, 0xf9, 0x62, 0xe1, 0x4f, 0x72, 0x69, 0x6c, 0x1eb9, 0x300, 0x2d, 0xe8, 0x64, 0xe8, 0x20, 0x4e, 0xe0,
+0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, 0x20, 0x42, 0x25b, 0x300, 0x6e,
+0x25b, 0x300, 0x69, 0x73, 0x69, 0x5a, 0x75, 0x6c, 0x75, 0x69, 0x4e, 0x69, 0x6e, 0x67, 0x69, 0x7a, 0x69, 0x6d, 0x75, 0x20,
+0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72, 0x65, 0x67, 0x62, 0x6f,
+0x73, 0x61, 0x6e, 0x73, 0x6b, 0x69, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438, 0x47, 0x61, 0x65, 0x6c, 0x67, 0x45,
+0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, 0x6b, 0x52,
+0x79, 0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x41, 0x6b, 0x61, 0x6e, 0x47, 0x61, 0x61,
+0x6e, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0x41, 0x73, 0x1ee5, 0x73, 0x1ee5, 0x20, 0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61,
+0x1ecb, 0x6a, 0x1ecb, 0x72, 0x1ecb, 0x61, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49,
+0x74, 0x61, 0x6c, 0x69, 0x65, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74,
+0x6f, 0x6d, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f,
+0x20, 0x48, 0x61, 0x77, 0x61, 0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69,
+0x20, 0x50, 0x16b, 0x20, 0x2bb, 0x49, 0x61, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x50, 0x69, 0x6c, 0x69, 0x70,
+0x69, 0x6e, 0x61, 0x73, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68,
+0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x72, 0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4,
+0x63, 0x68, 0x74, 0x65, 0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x4e, 0x65, 0x64, 0x64, 0x65,
+0x72, 0x73, 0x61, 0x73, 0x73, 0x2019, 0x73, 0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64,
+0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d,
+0x65, 0x67, 0x69, 0x65, 0x6c, 0x6c, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75,
+0x6f, 0x167, 0x167, 0x61, 0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x50,
+0x75, 0x6c, 0x61, 0x61, 0x72, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x62, 0x61, 0x61, 0x20, 0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b,
+0x61, 0x6d, 0x65, 0x72, 0x75, 0x75, 0x6e, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x47, 0x61, 0x6e, 0x61, 0x61, 0x47, 0x69,
+0x6e, 0x65, 0x47, 0x69, 0x6e, 0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61, 0x77, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69,
+0x79, 0x61, 0x61, 0x4d, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69, 0x6a, 0x65, 0x65, 0x72, 0x4e, 0x69, 0x6a,
+0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x6c, 0x69, 0x79, 0x6f, 0x6e, 0x47, 0x69, 0x6b,
+0x75, 0x79, 0x75, 0x4b, 0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, 0x6e, 0x61, 0x69, 0x73, 0x69, 0x4e, 0x64,
+0x65, 0x62, 0x65, 0x6c, 0x65, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, 0x6f, 0x2d5c, 0x2d30, 0x2d5b, 0x2d4d, 0x2d43, 0x2d49,
+0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25, 0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263,
+0x72, 0x69, 0x62, 0x54, 0x61, 0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72,
+0x52, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x62, 0x65, 0x6e, 0x61, 0x48, 0x75, 0x74, 0x61,
+0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, 0x6f, 0x62, 0x61, 0x6d, 0x61, 0x6e, 0x61,
+0x6b, 0x61, 0x6e, 0x4b, 0x129, 0x65, 0x6d, 0x62, 0x75, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca, 0x20, 0x13a2, 0x13f3, 0x13be, 0x13b5, 0x13cd,
+0x13d4, 0x13c5, 0x20, 0x13cd, 0x13a6, 0x13da, 0x13a9, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65,
+0x6e, 0x4d, 0x6f, 0x72, 0x69, 0x73, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e, 0x64, 0x65, 0x4b, 0x268, 0x6c, 0x61,
+0x61, 0x6e, 0x67, 0x69, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x4c, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61,
+0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x6b, 0x61, 0x62, 0x75,
+0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x4b, 0x129,
+0x6d, 0x129, 0x72, 0x169, 0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x20, 0x4b,
+0x65, 0x6e, 0x79, 0x61, 0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d,
+0x69, 0x62, 0x69, 0x61, 0x62, 0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68,
+0x44, 0x6f, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x61, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e,
+0x69, 0x61, 0x4f, 0x6c, 0x75, 0x73, 0x6f, 0x67, 0x61, 0x4c, 0x75, 0x6c, 0x75, 0x68, 0x69, 0x61, 0x4b, 0x69, 0x70, 0x61,
+0x72, 0x65, 0x54, 0x61, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x69, 0x74, 0x65, 0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69,
+0x61, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x4d, 0x61, 0x61, 0x6c, 0x69, 0x4b, 0x69, 0x72,
+0x75, 0x77, 0x61, 0x44, 0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x54, 0x61, 0x6d, 0x61, 0x7a,
+0x69, 0x263, 0x74, 0x20, 0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x4b, 0x6f,
+0x79, 0x72, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62,
+0x61, 0x61, 0x92c, 0x921, 0x93c, 0x94b, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x446, 0x435,
+0x440, 0x43a, 0x43e, 0x432, 0x43d, 0x43e, 0x441, 0x43b, 0x43e, 0x432, 0x435, 0x301, 0x43d, 0x441, 0x43a, 0x457, 0x439, 0x440, 0x461, 0x441,
+0x441, 0x456, 0x301, 0x430, 0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x61, 0x20,
+0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73,
+0x63, 0x68, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x41, 0x67, 0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d,
+0xe0, 0x6c, 0xfb, 0x14b, 0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d, 0x25b, 0x300, 0x72, 0xfb, 0x6e, 0x5a, 0x61, 0x72,
+0x6d, 0x61, 0x63, 0x69, 0x69, 0x6e, 0x65, 0x4e, 0x69, 0x17e, 0x65, 0x72, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x6a, 0x6f, 0x6f,
+0x6c, 0x61, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x77, 0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72,
+0xfa, 0x6e, 0x72, 0x69, 0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e, 0x4d, 0x61, 0x6b, 0x75, 0x61, 0x55,
+0x6d, 0x6f, 0x7a, 0x61, 0x6d, 0x62, 0x69, 0x6b, 0x69, 0x4d, 0x55, 0x4e, 0x44, 0x41, 0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72,
+0x75, 0x14b, 0x4b, 0x77, 0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x68, 0x6f, 0x6b, 0x20,
+0x4e, 0x61, 0x74, 0x68, 0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b,
+0x439, 0x430, 0x49, 0x73, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61,
+0x54, 0x61, 0x73, 0x61, 0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56,
+0x61, 0x69, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x57, 0x61, 0x6c, 0x73, 0x65, 0x72, 0x53, 0x63, 0x68, 0x77,
+0x69, 0x7a, 0x6e, 0x75, 0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, 0x65, 0x6c, 0xfa, 0x6e, 0x61, 0x73, 0x74, 0x75, 0x72,
+0x69, 0x61, 0x6e, 0x75, 0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d, 0x25b, 0x6c, 0xfb, 0x6e, 0x6b, 0x61, 0x6b, 0x254,
+0x4b, 0x61, 0x6d, 0x25b, 0x72, 0x75, 0x6e, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61, 0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x53,
+0x68, 0x77, 0xf3, 0x14b, 0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65, 0x6d, 0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c,
+0xfb, 0x6d, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61, 0x70, 0x69, 0x4d, 0xed, 0x6c, 0x61, 0x68, 0x61,
+0x14b, 0x73, 0x6b, 0x61, 0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d, 0x68, 0x65, 0x2d5c, 0x2d30, 0x2d4e, 0x2d30,
+0x2d63, 0x2d49, 0x2d56, 0x2d5c, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648, 0x6d5, 0x646, 0x62f, 0x6cc, 0x639, 0x6ce,
+0x631, 0x627, 0x642, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107, 0x69,
+0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x161, 0x107,
+0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x70, 0x72, 0x16b, 0x73, 0x69, 0x73, 0x6b, 0x61, 0x6e, 0x73, 0x77,
+0x12b, 0x74, 0x61, 0x69, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, 0x65, 0x6c, 0xe2, 0x53, 0x75, 0x6f, 0x6d, 0xe2,
+0x645, 0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x644, 0x6ca, 0x631, 0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x7cb5, 0x8a9e,
+0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11,
+0x5171, 0x548c, 0x56fd, 0x42, 0x69, 0x6e, 0x69, 0x73, 0x61, 0x79, 0x61
};
static const char language_name_list[] =
@@ -4856,6 +4887,9 @@ static const char language_name_list[] =
"Western Balochi\0"
"Cebuano\0"
"Erzya\0"
+"Chickasaw\0"
+"Muscogee\0"
+"Silesian\0"
;
static const quint16 language_name_index[] = {
@@ -5226,6 +5260,9 @@ static const quint16 language_name_index[] = {
3110, // Western Balochi
3126, // Cebuano
3134, // Erzya
+ 3140, // Chickasaw
+ 3150, // Muscogee
+ 3159, // Silesian
};
static const char script_name_list[] =
@@ -6416,6 +6453,9 @@ static const unsigned char language_code_list[] =
"bgn" // Western Balochi
"ceb" // Cebuano
"myv" // Erzya
+"cic" // Chickasaw
+"mus" // Muscogee
+"szl" // Silesian
;
static const unsigned char script_code_list[] =
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
index 51aa0b7512..dcdc87181e 100644
--- a/src/corelib/text/qstring.cpp
+++ b/src/corelib/text/qstring.cpp
@@ -4431,24 +4431,6 @@ int QString::count(const QRegExp& rx) const
#if QT_CONFIG(regularexpression)
/*!
- \overload indexOf()
- \since 5.0
-
- Returns the index position of the first match of the regular
- expression \a re in the string, searching forward from index
- position \a from. Returns -1 if \a re didn't match anywhere.
-
- Example:
-
- \snippet qstring/main.cpp 93
-*/
-int QString::indexOf(const QRegularExpression& re, int from) const
-{
- return indexOf(re, from, nullptr);
-}
-
-/*!
- \overload
\since 5.5
Returns the index position of the first match of the regular
@@ -4461,7 +4443,7 @@ int QString::indexOf(const QRegularExpression& re, int from) const
Example:
- \snippet qstring/main.cpp 99
+ \snippet qstring/main.cpp 93
*/
int QString::indexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const
{
@@ -4482,24 +4464,6 @@ int QString::indexOf(const QRegularExpression &re, int from, QRegularExpressionM
}
/*!
- \overload lastIndexOf()
- \since 5.0
-
- Returns the index position of the last match of the regular
- expression \a re in the string, which starts before the index
- position \a from. Returns -1 if \a re didn't match anywhere.
-
- Example:
-
- \snippet qstring/main.cpp 94
-*/
-int QString::lastIndexOf(const QRegularExpression &re, int from) const
-{
- return lastIndexOf(re, from, nullptr);
-}
-
-/*!
- \overload
\since 5.5
Returns the index position of the last match of the regular
@@ -4512,7 +4476,7 @@ int QString::lastIndexOf(const QRegularExpression &re, int from) const
Example:
- \snippet qstring/main.cpp 100
+ \snippet qstring/main.cpp 94
*/
int QString::lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const
{
@@ -4539,19 +4503,7 @@ int QString::lastIndexOf(const QRegularExpression &re, int from, QRegularExpress
return lastIndex;
}
-/*! \overload contains()
- \since 5.0
-
- Returns \c true if the regular expression \a re matches somewhere in
- this string; otherwise returns \c false.
-*/
-bool QString::contains(const QRegularExpression &re) const
-{
- return contains(re, nullptr);
-}
-
/*!
- \overload contains()
\since 5.1
Returns \c true if the regular expression \a re matches somewhere in this
@@ -10506,7 +10458,7 @@ ownership of it, no memory is freed when instances are destroyed.
*/
QString QStringRef::toString() const {
- if (!m_string)
+ if (isNull())
return QString();
if (m_size && m_position == 0 && m_size == m_string->size())
return *m_string;
diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h
index 5def2c81a1..4635962057 100644
--- a/src/corelib/text/qstring.h
+++ b/src/corelib/text/qstring.h
@@ -425,12 +425,11 @@ public:
#endif
#if QT_CONFIG(regularexpression)
- int indexOf(const QRegularExpression &re, int from = 0) const;
- int indexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; // ### Qt 6: merge overloads
- int lastIndexOf(const QRegularExpression &re, int from = -1) const;
- int lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const; // ### Qt 6: merge overloads
- bool contains(const QRegularExpression &re) const;
- bool contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch) const; // ### Qt 6: merge overloads
+ int indexOf(const QRegularExpression &re, int from = 0,
+ QRegularExpressionMatch *rmatch = nullptr) const;
+ int lastIndexOf(const QRegularExpression &re, int from = -1,
+ QRegularExpressionMatch *rmatch = nullptr) const;
+ bool contains(const QRegularExpression &re, QRegularExpressionMatch *rmatch = nullptr) const;
int count(const QRegularExpression &re) const;
#endif
diff --git a/src/corelib/text/qstringlist.h b/src/corelib/text/qstringlist.h
index a464d443dc..6e0940c488 100644
--- a/src/corelib/text/qstringlist.h
+++ b/src/corelib/text/qstringlist.h
@@ -38,7 +38,7 @@
**
****************************************************************************/
-#include <QtCore/qlist.h>
+#include <QtCore/qvector.h>
#ifndef QSTRINGLIST_H
#define QSTRINGLIST_H
@@ -55,21 +55,21 @@ class QRegExp;
class QRegularExpression;
#if !defined(QT_NO_JAVA_STYLE_ITERATORS)
-typedef QListIterator<QString> QStringListIterator;
-typedef QMutableListIterator<QString> QMutableStringListIterator;
+typedef QVectorIterator<QString> QStringListIterator;
+typedef QMutableVectorIterator<QString> QMutableStringListIterator;
#endif
class QStringList;
#ifdef Q_QDOC
-class QStringList : public QList<QString>
+class QStringList : public QVector<QString>
#else
-template <> struct QListSpecialMethods<QString>
+template <> struct QVectorSpecialMethods<QString>
#endif
{
#ifndef Q_QDOC
protected:
- ~QListSpecialMethods() = default;
+ ~QVectorSpecialMethods() = default;
#endif
public:
inline void sort(Qt::CaseSensitivity cs = Qt::CaseSensitive);
@@ -108,23 +108,23 @@ private:
};
// ### Qt6: check if there's a better way
-class QStringList : public QList<QString>
+class QStringList : public QVector<QString>
{
#endif
public:
inline QStringList() noexcept { }
inline explicit QStringList(const QString &i) { append(i); }
- inline QStringList(const QList<QString> &l) : QList<QString>(l) { }
- inline QStringList(QList<QString> &&l) noexcept : QList<QString>(std::move(l)) { }
- inline QStringList(std::initializer_list<QString> args) : QList<QString>(args) { }
+ inline QStringList(const QVector<QString> &l) : QVector<QString>(l) { }
+ inline QStringList(QVector<QString> &&l) noexcept : QVector<QString>(std::move(l)) { }
+ inline QStringList(std::initializer_list<QString> args) : QVector<QString>(args) { }
template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true>
inline QStringList(InputIterator first, InputIterator last)
- : QList<QString>(first, last) { }
+ : QVector<QString>(first, last) { }
- QStringList &operator=(const QList<QString> &other)
- { QList<QString>::operator=(other); return *this; }
- QStringList &operator=(QList<QString> &&other) noexcept
- { QList<QString>::operator=(std::move(other)); return *this; }
+ QStringList &operator=(const QVector<QString> &other)
+ { QVector<QString>::operator=(other); return *this; }
+ QStringList &operator=(QVector<QString> &&other) noexcept
+ { QVector<QString>::operator=(std::move(other)); return *this; }
#if QT_STRINGVIEW_LEVEL < 2
inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
@@ -138,7 +138,7 @@ public:
{ append(str); return *this; }
inline QStringList &operator<<(const QStringList &l)
{ *this += l; return *this; }
- inline QStringList &operator<<(const QList<QString> &l)
+ inline QStringList &operator<<(const QVector<QString> &l)
{ *this += l; return *this; }
inline int indexOf(QStringView str, int from = 0) const;
@@ -159,16 +159,16 @@ public:
inline int lastIndexOf(const QRegularExpression &re, int from = -1) const;
#endif // QT_CONFIG(regularexpression)
- using QList<QString>::indexOf;
- using QList<QString>::lastIndexOf;
+ using QVector<QString>::indexOf;
+ using QVector<QString>::lastIndexOf;
};
Q_DECLARE_TYPEINFO(QStringList, Q_MOVABLE_TYPE);
#ifndef Q_QDOC
-inline QStringList *QListSpecialMethods<QString>::self()
+inline QStringList *QVectorSpecialMethods<QString>::self()
{ return static_cast<QStringList *>(this); }
-inline const QStringList *QListSpecialMethods<QString>::self() const
+inline const QStringList *QVectorSpecialMethods<QString>::self() const
{ return static_cast<const QStringList *>(this); }
namespace QtPrivate {
@@ -213,45 +213,45 @@ namespace QtPrivate {
#endif // QT_CONFIG(regularexpression)
}
-inline void QListSpecialMethods<QString>::sort(Qt::CaseSensitivity cs)
+inline void QVectorSpecialMethods<QString>::sort(Qt::CaseSensitivity cs)
{
QtPrivate::QStringList_sort(self(), cs);
}
-inline int QListSpecialMethods<QString>::removeDuplicates()
+inline int QVectorSpecialMethods<QString>::removeDuplicates()
{
return QtPrivate::QStringList_removeDuplicates(self());
}
#if QT_STRINGVIEW_LEVEL < 2
-inline QString QListSpecialMethods<QString>::join(const QString &sep) const
+inline QString QVectorSpecialMethods<QString>::join(const QString &sep) const
{
return QtPrivate::QStringList_join(self(), sep.constData(), sep.length());
}
#endif
-inline QString QListSpecialMethods<QString>::join(QStringView sep) const
+inline QString QVectorSpecialMethods<QString>::join(QStringView sep) const
{
return QtPrivate::QStringList_join(self(), sep);
}
-QString QListSpecialMethods<QString>::join(QLatin1String sep) const
+QString QVectorSpecialMethods<QString>::join(QLatin1String sep) const
{
return QtPrivate::QStringList_join(*self(), sep);
}
-inline QString QListSpecialMethods<QString>::join(QChar sep) const
+inline QString QVectorSpecialMethods<QString>::join(QChar sep) const
{
return QtPrivate::QStringList_join(self(), &sep, 1);
}
-inline QStringList QListSpecialMethods<QString>::filter(QStringView str, Qt::CaseSensitivity cs) const
+inline QStringList QVectorSpecialMethods<QString>::filter(QStringView str, Qt::CaseSensitivity cs) const
{
return QtPrivate::QStringList_filter(self(), str, cs);
}
#if QT_STRINGVIEW_LEVEL < 2
-inline QStringList QListSpecialMethods<QString>::filter(const QString &str, Qt::CaseSensitivity cs) const
+inline QStringList QVectorSpecialMethods<QString>::filter(const QString &str, Qt::CaseSensitivity cs) const
{
return QtPrivate::QStringList_filter(self(), str, cs);
}
@@ -274,33 +274,33 @@ inline bool QStringList::contains(QStringView str, Qt::CaseSensitivity cs) const
return QtPrivate::QStringList_contains(this, str, cs);
}
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(QStringView before, QStringView after, Qt::CaseSensitivity cs)
{
QtPrivate::QStringList_replaceInStrings(self(), before, after, cs);
return *self();
}
#if QT_STRINGVIEW_LEVEL < 2
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
{
QtPrivate::QStringList_replaceInStrings(self(), before, after, cs);
return *self();
}
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(QStringView before, const QString &after, Qt::CaseSensitivity cs)
{
QtPrivate::QStringList_replaceInStrings(self(), before, qToStringViewIgnoringNull(after), cs);
return *self();
}
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(const QString &before, QStringView after, Qt::CaseSensitivity cs)
{
QtPrivate::QStringList_replaceInStrings(self(), QStringView(before), after, cs);
return *self();
}
#endif
-inline QStringList operator+(const QList<QString> &one, const QStringList &other)
+inline QStringList operator+(const QVector<QString> &one, const QStringList &other)
{
QStringList n = one;
n += other;
@@ -328,13 +328,13 @@ inline int QStringList::lastIndexOf(QLatin1String string, int from) const
}
#ifndef QT_NO_REGEXP
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QRegExp &rx, const QString &after)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(const QRegExp &rx, const QString &after)
{
QtPrivate::QStringList_replaceInStrings(self(), rx, after);
return *self();
}
-inline QStringList QListSpecialMethods<QString>::filter(const QRegExp &rx) const
+inline QStringList QVectorSpecialMethods<QString>::filter(const QRegExp &rx) const
{
return QtPrivate::QStringList_filter(self(), rx);
}
@@ -361,13 +361,13 @@ inline int QStringList::lastIndexOf(QRegExp &rx, int from) const
#endif
#if QT_CONFIG(regularexpression)
-inline QStringList &QListSpecialMethods<QString>::replaceInStrings(const QRegularExpression &rx, const QString &after)
+inline QStringList &QVectorSpecialMethods<QString>::replaceInStrings(const QRegularExpression &rx, const QString &after)
{
QtPrivate::QStringList_replaceInStrings(self(), rx, after);
return *self();
}
-inline QStringList QListSpecialMethods<QString>::filter(const QRegularExpression &rx) const
+inline QStringList QVectorSpecialMethods<QString>::filter(const QRegularExpression &rx) const
{
return QtPrivate::QStringList_filter(self(), rx);
}
diff --git a/src/corelib/text/qt_attribution.json b/src/corelib/text/qt_attribution.json
index f91742d421..c6ac1d1d95 100644
--- a/src/corelib/text/qt_attribution.json
+++ b/src/corelib/text/qt_attribution.json
@@ -11,7 +11,7 @@
define the Unicode character properties and internal mappings.",
"Homepage": "https://www.unicode.org/ucd/",
"Version": "Don't use the Unicode standard version; UCD has its own 'Revision' numbers",
- "Version": "20",
+ "Version": "24",
"License": "Unicode License Agreement - Data Files and Software (2016)",
"LicenseId": "Unicode-DFS-2016",
"LicenseFile": "UNICODE_LICENSE.txt",
@@ -29,11 +29,11 @@
world's languages, with the largest and most extensive standard repository of locale data
available.",
"Homepage": "http://cldr.unicode.org/",
- "Version": "v35.1",
+ "Version": "v36",
"License": "// as specified in https://spdx.org/licenses/Unicode-DFS-2016.html",
"License": "Unicode License Agreement - Data Files and Software (2016)",
"LicenseId": "Unicode-DFS-2016",
"LicenseFile": "UNICODE_LICENSE.txt",
- "Copyright": "Copyright (C) 1991-2018 Unicode, Inc."
+ "Copyright": "Copyright (C) 1991-2019 Unicode, Inc."
}
]
diff --git a/src/corelib/text/qunicodetables.cpp b/src/corelib/text/qunicodetables.cpp
index 805a5a6e34..96e53967da 100644
--- a/src/corelib/text/qunicodetables.cpp
+++ b/src/corelib/text/qunicodetables.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -37,7 +37,7 @@
**
****************************************************************************/
-/* This file is autogenerated from the Unicode 10.0 database. Do not edit */
+/* This file is autogenerated from the Unicode 12.1 database. Do not edit */
#include "qunicodetables_p.h"
@@ -77,18 +77,18 @@ static const unsigned short uc_property_trie[] = {
11920, 11952, 11984, 12016, 12048, 12080, 12112, 12144,
12176, 12208, 12240, 12272, 12304, 12336, 9936, 9936,
12368, 12400, 12432, 12464, 12496, 12528, 12560, 12592,
- 12624, 12656, 12688, 12720, 12752, 9936, 12784, 12816,
- 12848, 12880, 12912, 12944, 12976, 13008, 13040, 13072,
- 13104, 13104, 13104, 13104, 13136, 13104, 13104, 13168,
- 13200, 13232, 13264, 13296, 13328, 13360, 13392, 13424,
-
- 13456, 13488, 13520, 13552, 13584, 13616, 13648, 13680,
- 13712, 13744, 13776, 13808, 13840, 13872, 13904, 13936,
- 13968, 14000, 14032, 14064, 14096, 14128, 14160, 14192,
- 14224, 14256, 14288, 14320, 14352, 14384, 14416, 14448,
- 14480, 14512, 14544, 14576, 14608, 14640, 14672, 14704,
- 14480, 14480, 14480, 14480, 14736, 14768, 14800, 14832,
- 14864, 14896, 14928, 14960, 14992, 15024, 15056, 15088,
+ 12624, 12656, 12688, 12720, 12752, 12784, 12816, 12848,
+ 12880, 12912, 12944, 12976, 13008, 13040, 13072, 13104,
+ 13136, 13136, 13136, 13136, 13168, 13136, 13136, 13200,
+ 13232, 13264, 13296, 13328, 13360, 13392, 13424, 13456,
+
+ 13488, 13520, 13552, 13584, 13616, 13648, 13680, 13712,
+ 13744, 13776, 13808, 13840, 13872, 13904, 13936, 13968,
+ 14000, 14032, 14064, 14096, 14128, 14160, 14192, 14224,
+ 14256, 14288, 14320, 14352, 14384, 14416, 14448, 14480,
+ 14512, 14544, 14576, 14608, 14640, 14672, 14704, 14736,
+ 14512, 14512, 14512, 14512, 14768, 14800, 14832, 14864,
+ 14896, 14928, 14512, 14960, 14992, 15024, 15056, 15088,
15120, 15152, 15184, 15216, 15248, 15280, 15312, 15344,
15376, 15376, 15376, 15376, 15376, 15376, 15376, 15376,
15408, 15408, 15408, 15408, 15440, 15472, 15504, 15536,
@@ -225,75 +225,58 @@ static const unsigned short uc_property_trie[] = {
17904, 17904, 17904, 17904, 17936, 17968, 18000, 18032,
18064, 18064, 18064, 18064, 18064, 18064, 18064, 18064,
18096, 18128, 18160, 18192, 18224, 18256, 18256, 18288,
- 18320, 18352, 18384, 18416, 18448, 18480, 9936, 18512,
- 18544, 18576, 18608, 18640, 18672, 18704, 18736, 18768,
- 18800, 18832, 18864, 18896, 18928, 18960, 18992, 19024,
- 19056, 19088, 19120, 19152, 19184, 19216, 19248, 19280,
- 19312, 19344, 19376, 19408, 19440, 19472, 19504, 19536,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
-
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
-
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
-
- 19600, 19632, 19664, 19696, 19728, 19760, 19568, 19600,
- 19632, 19664, 19696, 19728, 19760, 19568, 19600, 19632,
- 19664, 19696, 19728, 19760, 19568, 19600, 19632, 19664,
- 19696, 19728, 19760, 19568, 19600, 19632, 19664, 19696,
- 19728, 19760, 19568, 19600, 19632, 19664, 19696, 19728,
- 19760, 19568, 19600, 19632, 19664, 19696, 19728, 19760,
- 19568, 19600, 19632, 19664, 19696, 19728, 19760, 19568,
- 19600, 19632, 19664, 19696, 19728, 19792, 19824, 19856,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
- 19888, 19888, 19888, 19888, 19888, 19888, 19888, 19888,
-
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
+ 18320, 18352, 18384, 18416, 18448, 18480, 18512, 18544,
+ 18576, 18608, 18640, 18672, 18704, 18736, 18768, 18800,
+ 18832, 18864, 18896, 18928, 18960, 18992, 19024, 19056,
+ 19088, 19120, 19152, 19184, 19216, 19248, 19280, 19312,
+ 19344, 19376, 19408, 19440, 19472, 19504, 19536, 19568,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+
+ 19632, 19664, 19696, 19728, 19760, 19792, 19600, 19632,
+ 19664, 19696, 19728, 19760, 19792, 19600, 19632, 19664,
+ 19696, 19728, 19760, 19792, 19600, 19632, 19664, 19696,
+ 19728, 19760, 19792, 19600, 19632, 19664, 19696, 19728,
+ 19760, 19792, 19600, 19632, 19664, 19696, 19728, 19760,
+ 19792, 19600, 19632, 19664, 19696, 19728, 19760, 19792,
+ 19600, 19632, 19664, 19696, 19728, 19760, 19792, 19600,
+ 19632, 19664, 19696, 19728, 19760, 19824, 19856, 19888,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
@@ -303,568 +286,585 @@ static const unsigned short uc_property_trie[] = {
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
- 19920, 19920, 19920, 19920, 19920, 19920, 19920, 19920,
19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
- 19984, 20016, 20048, 20080, 20112, 20112, 20144, 20176,
- 20208, 20240, 20272, 20304, 20304, 20336, 20368, 20304,
- 20304, 20304, 20304, 20304, 20304, 20304, 20304, 20304,
- 20304, 20400, 20432, 20304, 20464, 20304, 20496, 20528,
- 20560, 20592, 20624, 20656, 20304, 20304, 20304, 20688,
- 20720, 20752, 20784, 20816, 20848, 20880, 20912, 20944,
-
- 20976, 21008, 21040, 9936, 21072, 21072, 21072, 21104,
- 21136, 21168, 21200, 21232, 21264, 21296, 21328, 21360,
- 9936, 9936, 9936, 9936, 21392, 21424, 21456, 21488,
- 21520, 21552, 21584, 21616, 21648, 21680, 21712, 9936,
- 21744, 21776, 21808, 21840, 21872, 21904, 21936, 21968,
- 22000, 22032, 22064, 22096, 9936, 9936, 9936, 9936,
- 22128, 22128, 22128, 22128, 22128, 22128, 22128, 22128,
- 22128, 22160, 22192, 22224, 9936, 9936, 9936, 9936,
- 22256, 22288, 22320, 22352, 22384, 22416, 8432, 22448,
- 22480, 22512, 8432, 8432, 22544, 22576, 22608, 22640,
- 22672, 22704, 22736, 22768, 22800, 8432, 22832, 22864,
- 22896, 22928, 22960, 22992, 23024, 23056, 8432, 8432,
- 23088, 23088, 23120, 8432, 23152, 23184, 23216, 23248,
- 8432, 8432, 8432, 8432, 8432, 8432, 8432, 8432,
- 8432, 8432, 8432, 23280, 8432, 8432, 8432, 8432,
- 8432, 8432, 8432, 8432, 8432, 8432, 8432, 8432,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19952, 19952, 19952, 19952, 19952, 19952, 19952, 19952,
+ 19984, 19984, 19984, 19984, 19984, 19984, 19984, 19984,
+ 20016, 20048, 20080, 20112, 20144, 20144, 20176, 20208,
+ 20240, 20272, 20304, 20336, 20336, 20368, 20400, 20336,
+ 20336, 20336, 20336, 20336, 20336, 20336, 20336, 20336,
+ 20336, 20432, 20464, 20336, 20496, 20336, 20528, 20560,
+ 20592, 20624, 20656, 20688, 20336, 20336, 20336, 20720,
+ 20752, 20784, 20816, 20848, 20880, 20912, 20944, 20976,
+
+ 21008, 21040, 21072, 9936, 21104, 21104, 21104, 21136,
+ 21168, 21200, 21232, 21264, 21296, 21328, 21360, 21392,
+ 9936, 9936, 9936, 9936, 21424, 21456, 21488, 21520,
+ 21552, 21584, 21616, 21648, 21680, 21712, 21744, 9936,
+ 21776, 21808, 21840, 21872, 21904, 21936, 21968, 22000,
+ 22032, 22064, 22096, 22128, 9936, 9936, 9936, 9936,
+ 22160, 22160, 22160, 22160, 22160, 22160, 22160, 22160,
+ 22160, 22192, 22224, 22256, 9936, 9936, 9936, 9936,
+ 22288, 22320, 22352, 22384, 22416, 22448, 8432, 22480,
+ 22512, 22544, 8432, 8432, 22576, 22608, 22640, 22672,
+ 22704, 22736, 22768, 22800, 22832, 8432, 22864, 22896,
+ 22928, 22960, 22992, 23024, 23056, 23088, 8432, 8432,
+ 23120, 23120, 23152, 8432, 23184, 23216, 23248, 23280,
+ 23312, 23344, 8432, 8432, 8432, 8432, 8432, 8432,
+ 8432, 8432, 8432, 23376, 8432, 8432, 8432, 8432,
+ 23408, 23440, 23472, 8432, 8432, 8432, 8432, 23504,
// [0x11000..0x110000)
- 23312, 23568, 23824, 24080, 24336, 24592, 24848, 25104,
- 25360, 25616, 25872, 25616, 26128, 26384, 25616, 25616,
- 26640, 26640, 26640, 26896, 27152, 27408, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 27664, 27664, 27920, 28176, 28432, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 28688, 28944, 29200, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 29456, 29456, 29712, 29968, 25616, 25616, 25616, 30224,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30480,
- 30480, 30480, 30480, 30480, 30480, 30480, 30480, 30736,
- 30480, 30480, 30992, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 31248, 31504, 31760, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 32016, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 32272, 32528, 32784, 33040, 33296, 33552, 33808, 34064,
- 34320, 34320, 34576, 25616, 25616, 25616, 25616, 25616,
- 34832, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 35088, 35344, 35600, 35600, 35600, 35600, 35856, 35600,
- 36112, 36368, 36624, 36880, 37136, 37392, 37648, 37904,
- 38160, 38416, 38672, 38672, 38672, 38672, 38672, 38928,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
-
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39184, 39184,
- 39184, 39184, 39184, 39184, 39184, 39184, 39440, 39696,
- 39696, 39696, 39696, 39696, 39696, 39696, 39696, 39696,
- 39696, 39696, 39696, 39696, 39696, 39696, 39696, 39952,
- 40208, 40464, 40464, 40464, 40464, 40464, 40464, 40464,
- 40464, 40464, 40464, 40464, 40464, 40464, 40464, 40464,
- 40464, 40464, 40464, 40464, 40464, 40464, 40720, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 40976, 40976, 40976, 40976, 40976,
- 40976, 40976, 40976, 41232, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 41488, 41488, 41744, 38672, 38672, 38672, 38672, 38928,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
-
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38672,
- 38672, 38672, 38672, 38672, 38672, 38672, 38672, 38928,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 42256, 42512, 42768, 42768, 42768, 42768, 42768, 42768,
- 42768, 42768, 42768, 42768, 42768, 42768, 42768, 42768,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
-
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 25616,
- 25616, 25616, 25616, 25616, 25616, 25616, 25616, 42000,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
-
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43280,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
-
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43024,
- 43024, 43024, 43024, 43024, 43024, 43024, 43024, 43280,
+ 23536, 23792, 24048, 24304, 24560, 24816, 25072, 25328,
+ 25584, 25840, 26096, 26352, 26608, 26864, 27120, 27376,
+ 27632, 27632, 27632, 27888, 28144, 28400, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 28656, 28656, 28912, 29168, 29424, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 29680, 29936, 30192, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 30448, 30448, 30704, 30960, 26352, 26352, 31216, 31472,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31728,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31728,
+ 31728, 31728, 31728, 31728, 31728, 31728, 31728, 31984,
+ 31728, 31728, 32240, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 32496, 32752, 33008, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 33264, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 33520, 33776, 34032, 34288, 34544, 34800, 35056, 35312,
+ 35568, 35568, 35824, 26352, 26352, 26352, 26352, 26352,
+ 36080, 36336, 36592, 26352, 26352, 26352, 26352, 26352,
+ 36848, 37104, 37360, 37360, 37616, 37872, 38128, 37360,
+ 38384, 38640, 38896, 39152, 39408, 39664, 39920, 40176,
+ 40432, 40688, 40944, 41200, 41200, 41200, 41200, 41456,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41712, 41712,
+ 41712, 41712, 41712, 41712, 41712, 41712, 41968, 42224,
+ 42224, 42224, 42224, 42224, 42224, 42224, 42224, 42224,
+ 42224, 42224, 42224, 42224, 42224, 42224, 42224, 42480,
+ 42736, 42992, 42992, 42992, 42992, 42992, 42992, 42992,
+ 42992, 42992, 42992, 42992, 42992, 42992, 42992, 42992,
+ 42992, 42992, 42992, 42992, 42992, 42992, 43248, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43504, 43504, 43504, 43504, 43504,
+ 43504, 43504, 43504, 43760, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 44016, 44016, 44272, 41200, 41200, 41200, 41200, 41456,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41200,
+ 41200, 41200, 41200, 41200, 41200, 41200, 41200, 41456,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 44784, 45040, 45296, 45296, 45296, 45296, 45296, 45296,
+ 45296, 45296, 45296, 45296, 45296, 45296, 45296, 45296,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 26352,
+ 26352, 26352, 26352, 26352, 26352, 26352, 26352, 44528,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45808,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45552,
+ 45552, 45552, 45552, 45552, 45552, 45552, 45552, 45808,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -967,975 +967,980 @@ static const unsigned short uc_property_trie[] = {
78, 146, 147, 78, 78, 148, 78, 78,
78, 78, 78, 78, 78, 149, 78, 78,
- 150, 78, 78, 150, 78, 78, 78, 151,
- 150, 152, 153, 153, 154, 78, 78, 78,
- 78, 78, 155, 78, 100, 78, 78, 78,
- 78, 78, 78, 78, 78, 156, 157, 78,
+ 150, 78, 151, 150, 78, 78, 78, 152,
+ 150, 153, 154, 154, 155, 78, 78, 78,
+ 78, 78, 156, 78, 100, 78, 78, 78,
+ 78, 78, 78, 78, 78, 157, 158, 78,
78, 78, 78, 78, 78, 78, 78, 78,
- 78, 158, 158, 158, 158, 158, 114, 114,
- 159, 159, 159, 159, 159, 159, 159, 159,
- 159, 160, 160, 161, 161, 161, 161, 161,
-
- 162, 162, 163, 163, 163, 163, 160, 160,
- 164, 160, 160, 160, 164, 160, 160, 160,
- 161, 161, 163, 163, 163, 163, 163, 163,
- 52, 52, 52, 52, 52, 52, 163, 165,
-
- 159, 159, 159, 159, 159, 42, 42, 42,
- 42, 42, 166, 166, 167, 168, 169, 170,
- 170, 170, 170, 170, 170, 170, 170, 170,
- 170, 170, 170, 170, 170, 170, 170, 170,
-
- 171, 171, 171, 171, 171, 172, 171, 171,
- 171, 171, 171, 171, 171, 172, 172, 171,
- 172, 171, 172, 171, 171, 173, 174, 174,
- 174, 174, 173, 175, 174, 174, 174, 174,
-
- 174, 176, 176, 177, 177, 177, 177, 178,
- 178, 174, 174, 174, 174, 177, 177, 174,
- 177, 177, 174, 174, 179, 179, 179, 179,
- 180, 174, 174, 174, 174, 172, 172, 172,
-
- 181, 181, 171, 181, 181, 182, 183, 184,
- 184, 184, 183, 183, 183, 184, 184, 185,
- 186, 186, 186, 187, 187, 187, 187, 186,
- 188, 189, 189, 190, 191, 192, 192, 193,
-
- 194, 194, 195, 196, 196, 196, 196, 196,
- 196, 196, 196, 196, 196, 196, 196, 196,
- 197, 198, 197, 198, 199, 200, 197, 198,
- 201, 201, 202, 203, 203, 203, 204, 205,
-
- 201, 201, 201, 201, 206, 207, 208, 209,
- 210, 210, 210, 201, 211, 201, 212, 212,
- 213, 214, 214, 214, 214, 214, 214, 214,
- 214, 214, 214, 214, 214, 214, 214, 214,
-
- 214, 214, 201, 214, 214, 214, 214, 214,
- 214, 214, 215, 215, 216, 217, 217, 217,
- 218, 219, 219, 219, 219, 219, 219, 219,
- 219, 219, 219, 219, 219, 219, 219, 219,
-
- 219, 219, 220, 219, 219, 219, 219, 219,
- 219, 219, 221, 221, 222, 223, 223, 224,
- 225, 226, 227, 228, 228, 229, 230, 231,
- 232, 233, 234, 235, 234, 235, 234, 235,
-
- 234, 235, 236, 237, 236, 237, 236, 237,
- 236, 237, 236, 237, 236, 237, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 245, 246, 248, 249, 249, 249,
-
- 250, 251, 252, 251, 252, 252, 252, 251,
- 252, 252, 252, 252, 251, 250, 251, 252,
- 253, 253, 253, 253, 253, 253, 253, 253,
- 253, 254, 253, 253, 253, 253, 253, 253,
-
- 253, 253, 253, 253, 253, 253, 253, 253,
- 253, 253, 253, 253, 253, 253, 253, 253,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 256, 255, 255, 255, 255, 255, 255,
-
- 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255,
- 257, 258, 259, 258, 259, 259, 259, 258,
- 259, 259, 259, 259, 258, 257, 258, 259,
-
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 262, 263,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 260, 261, 264, 265, 265, 172, 172, 266,
- 267, 267, 268, 269, 270, 271, 270, 271,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
- 260, 261, 260, 261, 260, 261, 260, 261,
-
- 272, 262, 263, 260, 261, 268, 269, 260,
- 261, 268, 269, 260, 261, 268, 269, 273,
- 262, 263, 262, 263, 260, 261, 262, 263,
- 260, 261, 262, 263, 262, 263, 262, 263,
-
- 260, 261, 262, 263, 262, 263, 262, 263,
- 260, 261, 262, 263, 274, 275, 262, 263,
- 262, 263, 262, 263, 262, 263, 276, 277,
- 262, 263, 278, 279, 278, 279, 278, 279,
-
- 268, 269, 268, 269, 268, 269, 268, 269,
- 268, 269, 268, 269, 268, 269, 268, 269,
- 278, 279, 278, 279, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
-
- 280, 281, 280, 281, 282, 283, 284, 285,
- 286, 287, 286, 287, 286, 287, 286, 287,
- 201, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 288,
-
- 288, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 288,
- 288, 288, 288, 288, 288, 288, 288, 201,
- 201, 289, 290, 290, 290, 291, 290, 290,
-
- 201, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
- 292, 292, 292, 292, 292, 292, 292, 292,
-
- 292, 292, 292, 292, 292, 292, 292, 293,
- 201, 294, 295, 201, 201, 296, 296, 297,
- 298, 299, 300, 300, 300, 300, 299, 300,
- 300, 300, 301, 299, 300, 300, 300, 300,
-
- 300, 300, 302, 299, 299, 299, 299, 299,
- 300, 300, 299, 300, 300, 301, 303, 300,
- 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319,
-
- 320, 321, 322, 320, 300, 302, 323, 324,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 325, 325, 325, 325, 325,
-
- 325, 325, 325, 325, 325, 325, 325, 325,
- 325, 325, 325, 298, 298, 298, 298, 298,
- 325, 325, 325, 326, 327, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 328, 328, 328, 328, 329, 330, 331, 331,
- 332, 333, 333, 334, 19, 335, 336, 336,
- 337, 337, 337, 337, 337, 337, 338, 338,
- 339, 340, 341, 342, 343, 344, 345, 346,
-
- 347, 348, 349, 349, 349, 349, 350, 351,
- 352, 351, 352, 352, 352, 352, 352, 351,
- 351, 351, 351, 352, 352, 352, 352, 352,
- 352, 352, 352, 353, 353, 353, 353, 353,
-
- 354, 352, 352, 352, 352, 352, 352, 352,
- 351, 352, 352, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 363, 364, 365, 337,
- 337, 366, 366, 366, 367, 366, 366, 368,
-
- 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 383,
- 384, 351, 351, 351, 348, 385, 385, 385,
- 386, 352, 352, 352, 352, 352, 352, 352,
-
- 352, 352, 352, 352, 352, 352, 352, 352,
- 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 351, 351, 351, 351,
- 351, 351, 352, 352, 352, 352, 352, 352,
-
- 352, 352, 352, 352, 352, 352, 352, 352,
- 352, 352, 352, 352, 352, 352, 352, 352,
- 352, 352, 352, 352, 352, 352, 352, 352,
- 387, 387, 352, 352, 352, 352, 352, 387,
-
- 349, 352, 350, 351, 351, 351, 351, 351,
- 351, 351, 351, 351, 352, 351, 352, 388,
- 352, 352, 351, 349, 389, 351, 390, 390,
- 390, 390, 390, 390, 390, 391, 392, 390,
-
- 390, 390, 390, 393, 390, 394, 394, 390,
- 390, 392, 393, 390, 390, 393, 395, 395,
- 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 387, 387, 387, 406, 406, 407,
-
- 408, 408, 408, 409, 409, 409, 409, 409,
- 409, 409, 409, 409, 409, 409, 344, 410,
- 411, 412, 413, 413, 413, 411, 411, 411,
- 411, 411, 413, 413, 413, 413, 411, 413,
-
- 413, 413, 413, 413, 413, 413, 413, 413,
- 411, 413, 411, 413, 411, 414, 414, 415,
- 416, 417, 416, 416, 417, 416, 416, 417,
- 417, 417, 416, 417, 417, 416, 417, 416,
-
- 416, 416, 417, 416, 417, 416, 417, 416,
- 417, 416, 416, 344, 344, 415, 414, 414,
- 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 419, 419, 419, 418, 418, 418, 418,
-
- 418, 418, 418, 418, 418, 418, 418, 418,
- 418, 418, 418, 419, 419, 418, 353, 353,
- 353, 420, 353, 420, 420, 353, 353, 353,
- 420, 420, 353, 353, 353, 353, 353, 353,
-
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
- 421, 421, 421, 421, 421, 421, 421, 421,
-
- 421, 421, 421, 421, 421, 421, 422, 422,
+ 78, 159, 159, 159, 159, 159, 114, 114,
+ 160, 160, 160, 160, 160, 160, 160, 160,
+ 160, 161, 161, 162, 162, 162, 162, 162,
+
+ 163, 163, 164, 164, 164, 164, 161, 161,
+ 165, 161, 161, 161, 165, 161, 161, 161,
+ 162, 162, 164, 164, 164, 164, 164, 164,
+ 52, 52, 52, 52, 52, 52, 164, 166,
+
+ 160, 160, 160, 160, 160, 42, 42, 42,
+ 42, 42, 167, 167, 168, 169, 170, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171,
+ 171, 171, 171, 171, 171, 171, 171, 171,
+
+ 172, 172, 172, 172, 172, 173, 172, 172,
+ 172, 172, 172, 172, 172, 173, 173, 172,
+ 173, 172, 173, 172, 172, 174, 175, 175,
+ 175, 175, 174, 176, 175, 175, 175, 175,
+
+ 175, 177, 177, 178, 178, 178, 178, 179,
+ 179, 175, 175, 175, 175, 178, 178, 175,
+ 178, 178, 175, 175, 180, 180, 180, 180,
+ 181, 175, 175, 175, 175, 173, 173, 173,
+
+ 182, 182, 172, 182, 182, 183, 184, 185,
+ 185, 185, 184, 184, 184, 185, 185, 186,
+ 187, 187, 187, 188, 188, 188, 188, 187,
+ 189, 190, 190, 191, 192, 193, 193, 194,
+
+ 195, 195, 196, 197, 197, 197, 197, 197,
+ 197, 197, 197, 197, 197, 197, 197, 197,
+ 198, 199, 198, 199, 200, 201, 198, 199,
+ 202, 202, 203, 204, 204, 204, 205, 206,
+
+ 202, 202, 202, 202, 207, 208, 209, 210,
+ 211, 211, 211, 202, 212, 202, 213, 213,
+ 214, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215,
+
+ 215, 215, 202, 215, 215, 215, 215, 215,
+ 215, 215, 216, 216, 217, 218, 218, 218,
+ 219, 220, 220, 220, 220, 220, 220, 220,
+ 220, 220, 220, 220, 220, 220, 220, 220,
+
+ 220, 220, 221, 220, 220, 220, 220, 220,
+ 220, 220, 222, 222, 223, 224, 224, 225,
+ 226, 227, 228, 229, 229, 230, 231, 232,
+ 233, 234, 235, 236, 235, 236, 235, 236,
+
+ 235, 236, 237, 238, 237, 238, 237, 238,
+ 237, 238, 237, 238, 237, 238, 237, 238,
+ 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 246, 247, 249, 250, 250, 250,
+
+ 251, 252, 253, 252, 253, 253, 253, 252,
+ 253, 253, 253, 253, 252, 251, 252, 253,
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 255, 254, 254, 254, 254, 254, 254,
+
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 254, 254, 254, 254, 254, 254, 254, 254,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 257, 256, 256, 256, 256, 256, 256,
+
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 256, 256, 256, 256, 256, 256, 256, 256,
+ 258, 259, 260, 259, 260, 260, 260, 259,
+ 260, 260, 260, 260, 259, 258, 259, 260,
+
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 263, 264,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 261, 262, 265, 266, 266, 173, 173, 267,
+ 268, 268, 269, 270, 271, 272, 271, 272,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+ 261, 262, 261, 262, 261, 262, 261, 262,
+
+ 273, 263, 264, 261, 262, 269, 270, 261,
+ 262, 269, 270, 261, 262, 269, 270, 274,
+ 263, 264, 263, 264, 261, 262, 263, 264,
+ 261, 262, 263, 264, 263, 264, 263, 264,
+
+ 261, 262, 263, 264, 263, 264, 263, 264,
+ 261, 262, 263, 264, 275, 276, 263, 264,
+ 263, 264, 263, 264, 263, 264, 277, 278,
+ 263, 264, 279, 280, 279, 280, 279, 280,
+
+ 269, 270, 269, 270, 269, 270, 269, 270,
+ 269, 270, 269, 270, 269, 270, 269, 270,
+ 279, 280, 279, 280, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+
+ 281, 282, 281, 282, 283, 284, 285, 286,
+ 287, 288, 287, 288, 287, 288, 287, 288,
+ 202, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 289,
+ 289, 289, 289, 289, 289, 289, 289, 202,
+ 202, 290, 291, 292, 292, 293, 292, 291,
+
+ 294, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295,
+
+ 295, 295, 295, 295, 295, 295, 295, 296,
+ 294, 297, 298, 202, 202, 299, 299, 300,
+ 301, 302, 303, 303, 303, 303, 302, 303,
+ 303, 303, 304, 302, 303, 303, 303, 303,
+
+ 303, 303, 305, 302, 302, 302, 302, 302,
+ 303, 303, 302, 303, 303, 304, 306, 303,
+ 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322,
+
+ 323, 324, 325, 323, 303, 305, 326, 327,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 328, 328, 328, 328, 328, 328, 328, 328,
+ 328, 328, 328, 328, 328, 328, 328, 328,
+
+ 328, 328, 328, 328, 328, 328, 328, 328,
+ 328, 328, 328, 301, 301, 301, 301, 329,
+ 328, 328, 328, 330, 331, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 332, 332, 332, 332, 333, 334, 335, 335,
+ 336, 337, 337, 338, 19, 339, 340, 340,
+ 341, 341, 341, 341, 341, 341, 342, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350,
+
+ 351, 352, 353, 353, 353, 353, 354, 355,
+ 356, 355, 356, 356, 356, 356, 356, 355,
+ 355, 355, 355, 356, 356, 356, 356, 356,
+ 356, 356, 356, 357, 357, 357, 357, 357,
+
+ 358, 356, 356, 356, 356, 356, 356, 356,
+ 355, 356, 356, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 367, 368, 369, 341,
+ 341, 370, 370, 370, 371, 370, 370, 372,
+
+ 373, 374, 375, 376, 377, 378, 379, 380,
+ 381, 382, 383, 384, 385, 386, 387, 387,
+ 388, 355, 355, 355, 352, 389, 389, 389,
+ 390, 356, 356, 356, 356, 356, 356, 356,
+
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 355, 355, 355, 355,
+ 355, 355, 356, 356, 356, 356, 356, 356,
+
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 356, 356, 356, 356, 356, 356, 356, 356,
+ 391, 391, 356, 356, 356, 356, 356, 391,
+
+ 353, 356, 354, 355, 355, 355, 355, 355,
+ 355, 355, 355, 355, 356, 355, 356, 392,
+ 356, 356, 355, 353, 393, 355, 394, 394,
+ 394, 394, 394, 394, 394, 395, 396, 394,
+
+ 394, 394, 394, 397, 394, 398, 398, 394,
+ 394, 396, 397, 394, 394, 397, 399, 399,
+ 400, 401, 402, 403, 404, 405, 406, 407,
+ 408, 409, 391, 391, 391, 410, 410, 411,
+
+ 412, 412, 412, 413, 413, 413, 413, 413,
+ 413, 413, 413, 413, 413, 413, 348, 414,
+ 415, 416, 417, 417, 417, 415, 415, 415,
+ 415, 415, 417, 417, 417, 417, 415, 417,
+
+ 417, 417, 417, 417, 417, 417, 417, 417,
+ 415, 417, 415, 417, 415, 418, 418, 419,
+ 420, 421, 420, 420, 421, 420, 420, 421,
+ 421, 421, 420, 421, 421, 420, 421, 420,
+
+ 420, 420, 421, 420, 421, 420, 421, 420,
+ 421, 420, 420, 348, 348, 419, 418, 418,
422, 422, 422, 422, 422, 422, 422, 422,
- 422, 423, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
-
- 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 434, 434, 434, 434, 434,
-
- 434, 434, 434, 434, 434, 434, 434, 434,
- 434, 434, 434, 435, 435, 435, 435, 435,
- 435, 435, 436, 435, 437, 437, 438, 439,
- 440, 441, 442, 298, 298, 298, 298, 298,
-
- 443, 443, 443, 443, 443, 443, 443, 443,
- 443, 443, 443, 443, 443, 443, 443, 443,
- 443, 443, 443, 443, 443, 443, 444, 444,
- 444, 444, 445, 444, 444, 444, 444, 444,
-
- 444, 444, 444, 444, 445, 444, 444, 444,
- 445, 444, 444, 444, 444, 444, 298, 298,
- 446, 446, 446, 446, 446, 446, 446, 446,
- 446, 446, 446, 446, 446, 446, 446, 298,
-
- 447, 448, 448, 448, 448, 448, 447, 447,
- 448, 447, 448, 448, 448, 448, 448, 448,
- 448, 448, 448, 448, 447, 448, 449, 449,
- 449, 450, 450, 450, 298, 298, 451, 298,
-
- 452, 453, 452, 452, 452, 452, 453, 454,
- 452, 454, 454, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 455, 456, 455, 455, 455, 455, 455, 455,
- 455, 455, 457, 457, 457, 458, 459, 456,
- 456, 459, 459, 460, 460, 344, 461, 461,
- 461, 462, 461, 461, 461, 461, 344, 344,
-
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 463, 463, 463, 463,
- 463, 463, 463, 463, 463, 463, 463, 463,
-
- 463, 463, 464, 465, 466, 466, 467, 466,
- 466, 467, 466, 466, 466, 467, 467, 467,
- 468, 469, 470, 466, 466, 466, 467, 466,
- 466, 467, 467, 466, 466, 466, 466, 471,
-
- 472, 473, 473, 474, 475, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 476, 476, 476, 476, 476, 476, 476,
-
- 476, 476, 476, 476, 476, 476, 476, 476,
- 476, 477, 476, 476, 476, 476, 476, 476,
- 476, 477, 476, 476, 477, 476, 476, 476,
- 476, 476, 478, 479, 480, 476, 474, 474,
-
- 474, 473, 473, 473, 473, 473, 473, 473,
- 473, 474, 474, 474, 474, 481, 482, 479,
- 476, 172, 174, 483, 483, 472, 478, 478,
+ 422, 423, 423, 423, 422, 422, 422, 422,
+
+ 422, 422, 422, 422, 422, 422, 422, 422,
+ 422, 422, 422, 423, 423, 422, 357, 357,
+ 357, 424, 357, 424, 424, 357, 357, 357,
+ 424, 424, 357, 357, 357, 357, 357, 357,
+
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+ 425, 425, 425, 425, 425, 425, 425, 425,
+
+ 425, 425, 425, 425, 425, 425, 426, 426,
+ 426, 426, 426, 426, 426, 426, 426, 426,
+ 426, 427, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+
+ 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 438, 438, 438, 438, 438,
+
+ 438, 438, 438, 438, 438, 438, 438, 438,
+ 438, 438, 438, 439, 439, 439, 439, 439,
+ 439, 439, 440, 439, 441, 441, 442, 443,
+ 444, 445, 446, 301, 301, 447, 448, 448,
+
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 449, 449, 449, 449, 450, 450,
+ 450, 450, 451, 450, 450, 450, 450, 450,
+
+ 450, 450, 450, 450, 451, 450, 450, 450,
+ 451, 450, 450, 450, 450, 450, 301, 301,
+ 452, 452, 452, 452, 452, 452, 452, 453,
+ 452, 453, 452, 452, 452, 453, 453, 301,
+
+ 454, 455, 455, 455, 455, 455, 454, 454,
+ 455, 454, 455, 455, 455, 455, 455, 455,
+ 455, 455, 455, 455, 454, 455, 456, 456,
+ 456, 457, 457, 457, 301, 301, 458, 301,
+
+ 459, 460, 459, 459, 459, 459, 460, 461,
+ 459, 461, 461, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 462, 463, 462, 462, 462, 462, 462, 462,
+ 462, 462, 464, 464, 464, 465, 466, 463,
+ 463, 466, 466, 467, 467, 348, 468, 468,
+ 468, 469, 468, 468, 468, 468, 348, 348,
+
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 470, 471, 471, 471, 471,
+ 471, 471, 471, 471, 471, 471, 471, 471,
+
+ 471, 471, 472, 473, 474, 474, 475, 474,
+ 474, 475, 474, 474, 474, 475, 475, 475,
+ 476, 477, 478, 474, 474, 474, 475, 474,
+ 474, 475, 475, 474, 474, 474, 474, 479,
+
+ 480, 481, 481, 482, 483, 484, 484, 484,
+ 484, 484, 484, 484, 484, 484, 484, 484,
+ 484, 484, 484, 484, 484, 484, 484, 484,
484, 484, 484, 484, 484, 484, 484, 484,
- 476, 476, 473, 473, 485, 485, 486, 487,
- 488, 489, 490, 491, 492, 493, 494, 495,
- 496, 497, 498, 499, 499, 499, 499, 499,
- 500, 501, 501, 502, 502, 503, 502, 502,
-
- 504, 505, 506, 506, 201, 507, 507, 507,
- 507, 507, 507, 507, 507, 201, 201, 507,
- 507, 201, 201, 507, 507, 507, 507, 507,
- 507, 507, 507, 507, 507, 507, 507, 507,
-
- 507, 507, 507, 507, 507, 507, 507, 507,
- 507, 201, 507, 507, 507, 507, 507, 507,
- 507, 201, 507, 201, 201, 201, 507, 507,
- 507, 507, 201, 201, 508, 509, 510, 506,
-
- 506, 505, 505, 505, 505, 201, 201, 506,
- 506, 201, 201, 511, 511, 512, 513, 201,
- 201, 201, 201, 201, 201, 201, 201, 510,
- 201, 201, 201, 201, 514, 514, 201, 514,
-
- 507, 507, 505, 505, 201, 201, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524,
- 507, 507, 525, 525, 526, 526, 526, 526,
- 526, 527, 528, 529, 530, 531, 201, 201,
-
- 201, 532, 533, 534, 201, 535, 535, 535,
- 535, 535, 535, 201, 201, 201, 201, 535,
- 535, 201, 201, 535, 535, 535, 535, 535,
- 535, 535, 535, 535, 535, 535, 535, 535,
-
- 535, 535, 535, 535, 535, 535, 535, 535,
- 535, 201, 535, 535, 535, 535, 535, 535,
- 535, 201, 535, 536, 201, 535, 536, 201,
- 535, 535, 201, 201, 537, 201, 538, 538,
-
- 538, 533, 533, 201, 201, 201, 201, 533,
- 533, 201, 201, 533, 533, 539, 201, 201,
- 201, 540, 201, 201, 201, 201, 201, 201,
- 201, 536, 536, 536, 535, 201, 536, 201,
-
- 201, 201, 201, 201, 201, 201, 541, 542,
- 543, 544, 545, 546, 547, 548, 549, 550,
- 533, 533, 535, 535, 535, 540, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 551, 551, 552, 201, 553, 553, 553,
- 553, 553, 553, 553, 554, 553, 201, 553,
- 553, 553, 201, 553, 553, 553, 553, 553,
- 553, 553, 553, 553, 553, 553, 553, 553,
-
- 553, 553, 553, 553, 553, 553, 553, 553,
- 553, 201, 553, 553, 553, 553, 553, 553,
- 553, 201, 553, 553, 201, 553, 553, 553,
- 553, 553, 201, 201, 555, 553, 552, 552,
-
- 552, 551, 551, 551, 551, 551, 201, 551,
- 551, 552, 201, 552, 552, 556, 201, 201,
- 553, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 553, 554, 557, 557, 201, 201, 558, 559,
- 560, 561, 562, 563, 564, 565, 566, 567,
- 568, 569, 201, 201, 201, 201, 201, 201,
- 201, 570, 571, 571, 571, 571, 571, 571,
-
- 201, 572, 573, 573, 201, 574, 574, 574,
- 574, 574, 574, 574, 574, 201, 201, 574,
- 574, 201, 201, 574, 574, 574, 574, 574,
- 574, 574, 574, 574, 574, 574, 574, 574,
-
- 574, 574, 574, 574, 574, 574, 574, 574,
- 574, 201, 574, 574, 574, 574, 574, 574,
- 574, 201, 574, 574, 201, 575, 574, 574,
- 574, 574, 201, 201, 576, 574, 577, 572,
-
- 573, 572, 572, 572, 578, 201, 201, 573,
- 579, 201, 201, 579, 579, 580, 201, 201,
- 201, 201, 201, 201, 201, 201, 581, 577,
- 201, 201, 201, 201, 582, 582, 201, 574,
-
- 574, 574, 578, 578, 201, 201, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 575, 594, 594, 594, 594, 594, 594,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 595, 596, 201, 596, 596, 596,
- 596, 596, 596, 201, 201, 201, 596, 596,
- 596, 201, 596, 596, 597, 596, 201, 201,
- 201, 596, 596, 201, 596, 201, 596, 596,
-
- 201, 201, 201, 596, 596, 201, 201, 201,
- 596, 596, 596, 201, 201, 201, 596, 596,
- 596, 596, 596, 596, 596, 596, 598, 596,
- 596, 596, 201, 201, 201, 201, 599, 600,
-
- 595, 600, 600, 201, 201, 201, 600, 600,
- 600, 201, 601, 601, 601, 602, 201, 201,
- 603, 201, 201, 201, 201, 201, 201, 599,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 604, 605,
- 606, 607, 608, 609, 610, 611, 612, 613,
- 614, 614, 614, 615, 615, 615, 615, 615,
- 615, 616, 615, 201, 201, 201, 201, 201,
-
- 617, 618, 618, 618, 201, 619, 619, 619,
- 619, 619, 619, 619, 619, 201, 619, 619,
- 619, 201, 619, 619, 619, 619, 619, 619,
- 619, 619, 619, 619, 619, 619, 619, 619,
-
- 619, 619, 619, 619, 619, 619, 619, 619,
- 619, 201, 619, 619, 619, 619, 619, 619,
- 619, 619, 619, 619, 620, 619, 619, 619,
- 619, 619, 201, 201, 201, 621, 622, 622,
-
- 622, 618, 618, 618, 618, 201, 622, 622,
- 623, 201, 622, 622, 622, 624, 201, 201,
- 201, 201, 201, 201, 201, 625, 626, 201,
- 621, 621, 627, 201, 201, 201, 201, 201,
-
- 619, 619, 628, 628, 201, 201, 629, 630,
- 631, 632, 633, 634, 635, 636, 637, 638,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 639, 639, 639, 639, 639, 639, 639, 640,
-
- 641, 642, 643, 643, 201, 644, 644, 644,
- 644, 644, 644, 644, 644, 201, 644, 644,
- 644, 201, 644, 644, 644, 644, 644, 644,
- 644, 644, 644, 644, 644, 644, 644, 644,
-
- 644, 644, 644, 644, 644, 644, 644, 644,
- 644, 201, 644, 644, 644, 644, 644, 644,
- 644, 644, 644, 644, 201, 644, 644, 644,
- 644, 644, 201, 201, 645, 646, 643, 647,
-
- 648, 643, 649, 643, 643, 201, 647, 648,
- 648, 201, 648, 648, 650, 651, 201, 201,
- 201, 201, 201, 201, 201, 649, 649, 201,
- 201, 201, 201, 201, 201, 201, 644, 201,
-
- 644, 644, 652, 652, 201, 201, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662,
- 201, 663, 663, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 664, 665, 666, 666, 201, 667, 667, 667,
- 667, 667, 667, 667, 667, 201, 667, 667,
- 667, 201, 667, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 667,
-
- 667, 667, 667, 667, 667, 667, 667, 667,
- 667, 668, 667, 667, 667, 667, 667, 667,
- 667, 667, 667, 667, 667, 667, 667, 667,
- 667, 667, 668, 669, 669, 670, 671, 666,
-
- 666, 672, 672, 672, 673, 201, 666, 666,
- 666, 201, 674, 674, 674, 675, 676, 677,
- 201, 201, 201, 201, 678, 678, 678, 671,
- 679, 679, 679, 679, 679, 679, 679, 680,
-
- 667, 667, 673, 673, 201, 201, 681, 682,
- 683, 684, 685, 686, 687, 688, 689, 690,
- 691, 691, 691, 691, 691, 691, 679, 679,
- 679, 692, 670, 670, 670, 670, 670, 670,
-
- 201, 201, 693, 693, 201, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 201,
- 201, 201, 694, 694, 694, 694, 694, 694,
-
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 694, 694, 694, 694,
- 694, 694, 201, 694, 694, 694, 694, 694,
- 694, 694, 694, 694, 201, 694, 201, 201,
-
- 694, 694, 694, 694, 694, 694, 694, 201,
- 201, 201, 695, 201, 201, 201, 201, 696,
- 693, 693, 697, 697, 697, 201, 697, 201,
- 693, 693, 698, 693, 698, 698, 698, 696,
-
- 201, 201, 201, 201, 201, 201, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708,
- 201, 201, 693, 693, 709, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
-
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 710, 710, 710, 710, 710, 710, 710,
- 710, 711, 710, 712, 711, 711, 711, 711,
- 713, 713, 714, 201, 201, 201, 201, 12,
-
- 710, 710, 710, 710, 710, 710, 715, 711,
- 716, 716, 716, 716, 711, 711, 711, 717,
- 718, 719, 720, 721, 722, 723, 724, 725,
- 726, 727, 728, 728, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 729, 729, 201, 729, 201, 201, 729,
- 729, 201, 729, 201, 201, 729, 201, 201,
- 201, 201, 201, 201, 729, 729, 729, 729,
- 201, 729, 729, 729, 729, 729, 729, 729,
-
- 201, 729, 729, 729, 201, 729, 201, 729,
- 201, 201, 729, 729, 201, 729, 729, 729,
- 729, 730, 729, 731, 730, 730, 730, 730,
- 732, 732, 201, 730, 730, 729, 201, 201,
-
- 729, 729, 729, 729, 729, 201, 733, 201,
- 734, 734, 734, 734, 730, 730, 201, 201,
- 735, 736, 737, 738, 739, 740, 741, 742,
- 743, 744, 201, 201, 745, 745, 746, 746,
-
- 747, 748, 748, 748, 749, 750, 749, 749,
- 751, 749, 749, 752, 753, 754, 754, 754,
- 754, 754, 751, 755, 754, 755, 755, 755,
- 756, 756, 755, 755, 755, 755, 755, 755,
-
- 757, 758, 759, 760, 761, 762, 763, 764,
- 765, 766, 767, 767, 767, 767, 767, 767,
- 767, 767, 767, 767, 768, 756, 755, 756,
- 755, 769, 770, 771, 770, 771, 772, 772,
-
- 747, 747, 747, 773, 747, 747, 747, 747,
- 201, 747, 747, 747, 747, 773, 747, 747,
- 747, 747, 773, 747, 747, 747, 747, 773,
- 747, 747, 747, 747, 773, 747, 747, 747,
-
- 747, 747, 747, 747, 747, 747, 747, 747,
- 747, 773, 774, 775, 775, 201, 201, 201,
- 201, 776, 777, 778, 779, 778, 778, 780,
- 778, 780, 777, 777, 777, 777, 781, 782,
-
- 777, 778, 783, 783, 784, 752, 783, 783,
- 747, 747, 747, 747, 785, 786, 786, 786,
- 781, 781, 781, 778, 781, 781, 787, 781,
- 201, 781, 781, 781, 781, 778, 781, 781,
-
- 781, 781, 778, 781, 781, 781, 781, 778,
- 781, 781, 781, 781, 778, 781, 787, 787,
- 787, 781, 781, 781, 781, 781, 781, 781,
- 787, 778, 787, 787, 787, 201, 788, 788,
-
- 789, 789, 789, 789, 789, 789, 790, 789,
- 789, 789, 789, 789, 789, 201, 791, 789,
- 792, 792, 793, 794, 795, 796, 796, 796,
- 796, 797, 797, 201, 201, 201, 201, 201,
-
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
- 798, 798, 798, 798, 798, 798, 798, 798,
-
- 798, 798, 799, 798, 798, 798, 800, 798,
- 799, 798, 798, 801, 802, 803, 804, 803,
- 803, 805, 803, 806, 806, 806, 803, 807,
- 802, 808, 809, 810, 810, 806, 806, 799,
-
- 811, 812, 813, 814, 815, 816, 817, 818,
- 819, 820, 821, 821, 822, 822, 822, 822,
- 798, 798, 798, 798, 798, 798, 805, 805,
- 803, 803, 799, 799, 799, 799, 806, 806,
-
- 806, 799, 801, 801, 801, 799, 799, 801,
- 801, 801, 801, 801, 801, 801, 799, 799,
- 799, 806, 806, 806, 806, 799, 799, 799,
- 799, 799, 799, 799, 799, 799, 799, 799,
-
- 799, 799, 806, 801, 810, 806, 806, 801,
- 801, 801, 801, 801, 801, 823, 799, 801,
- 824, 825, 826, 827, 828, 829, 830, 831,
- 832, 833, 834, 834, 834, 835, 836, 836,
-
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
- 837, 837, 837, 837, 837, 837, 837, 837,
-
- 837, 837, 837, 837, 837, 837, 201, 838,
- 201, 201, 201, 201, 201, 838, 201, 201,
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 839,
-
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 839,
- 839, 839, 839, 839, 839, 839, 839, 840,
- 840, 841, 841, 842, 843, 844, 844, 844,
-
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
-
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 845, 845, 845, 845, 845, 845,
- 845, 845, 846, 846, 846, 846, 846, 845,
-
- 847, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 848, 848,
- 848, 848, 848, 848, 848, 848, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
-
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
- 847, 847, 847, 847, 847, 847, 847, 847,
-
- 847, 847, 847, 849, 849, 849, 849, 849,
- 850, 850, 850, 850, 850, 850, 850, 850,
- 850, 850, 850, 850, 850, 850, 850, 850,
- 850, 850, 850, 850, 850, 850, 850, 850,
-
- 850, 850, 850, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 851, 851, 851, 851, 851, 851,
+ 484, 484, 484, 484, 484, 484, 484, 484,
+ 484, 485, 484, 484, 484, 484, 484, 484,
+ 484, 485, 484, 484, 485, 484, 484, 484,
+ 484, 484, 486, 487, 488, 484, 482, 482,
+
+ 482, 481, 481, 481, 481, 481, 481, 481,
+ 481, 482, 482, 482, 482, 489, 490, 487,
+ 484, 173, 175, 173, 173, 480, 486, 486,
+ 491, 491, 491, 491, 491, 491, 491, 491,
+
+ 484, 484, 481, 481, 492, 492, 493, 494,
+ 495, 496, 497, 498, 499, 500, 501, 502,
+ 503, 504, 505, 506, 506, 506, 506, 506,
+ 507, 508, 508, 509, 509, 510, 509, 509,
+
+ 511, 512, 513, 513, 202, 514, 514, 514,
+ 514, 514, 514, 514, 514, 202, 202, 514,
+ 514, 202, 202, 514, 514, 514, 514, 514,
+ 514, 514, 514, 514, 514, 514, 514, 514,
+
+ 514, 514, 514, 514, 514, 514, 514, 514,
+ 514, 202, 514, 514, 514, 514, 514, 514,
+ 514, 202, 514, 202, 202, 202, 514, 514,
+ 514, 514, 202, 202, 515, 516, 517, 513,
+
+ 513, 512, 512, 512, 512, 202, 202, 513,
+ 513, 202, 202, 518, 518, 519, 520, 202,
+ 202, 202, 202, 202, 202, 202, 202, 517,
+ 202, 202, 202, 202, 521, 521, 202, 521,
+
+ 514, 514, 512, 512, 202, 202, 522, 523,
+ 524, 525, 526, 527, 528, 529, 530, 531,
+ 514, 514, 532, 532, 533, 533, 533, 533,
+ 533, 534, 535, 536, 537, 538, 539, 202,
+
+ 202, 540, 541, 542, 202, 543, 543, 543,
+ 543, 543, 543, 202, 202, 202, 202, 543,
+ 543, 202, 202, 543, 543, 543, 543, 543,
+ 543, 543, 543, 543, 543, 543, 543, 543,
+
+ 543, 543, 543, 543, 543, 543, 543, 543,
+ 543, 202, 543, 543, 543, 543, 543, 543,
+ 543, 202, 543, 544, 202, 543, 544, 202,
+ 543, 543, 202, 202, 545, 202, 546, 546,
+
+ 546, 541, 541, 202, 202, 202, 202, 541,
+ 541, 202, 202, 541, 541, 547, 202, 202,
+ 202, 548, 202, 202, 202, 202, 202, 202,
+ 202, 544, 544, 544, 543, 202, 544, 202,
+
+ 202, 202, 202, 202, 202, 202, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558,
+ 541, 541, 543, 543, 543, 548, 559, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 560, 560, 561, 202, 562, 562, 562,
+ 562, 562, 562, 562, 563, 562, 202, 562,
+ 562, 562, 202, 562, 562, 562, 562, 562,
+ 562, 562, 562, 562, 562, 562, 562, 562,
+
+ 562, 562, 562, 562, 562, 562, 562, 562,
+ 562, 202, 562, 562, 562, 562, 562, 562,
+ 562, 202, 562, 562, 202, 562, 562, 562,
+ 562, 562, 202, 202, 564, 562, 561, 561,
+
+ 561, 560, 560, 560, 560, 560, 202, 560,
+ 560, 561, 202, 561, 561, 565, 202, 202,
+ 562, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 562, 563, 566, 566, 202, 202, 567, 568,
+ 569, 570, 571, 572, 573, 574, 575, 576,
+ 577, 578, 202, 202, 202, 202, 202, 202,
+ 202, 579, 580, 580, 580, 580, 580, 580,
+
+ 202, 581, 582, 582, 202, 583, 583, 583,
+ 583, 583, 583, 583, 583, 202, 202, 583,
+ 583, 202, 202, 583, 583, 583, 583, 583,
+ 583, 583, 583, 583, 583, 583, 583, 583,
+
+ 583, 583, 583, 583, 583, 583, 583, 583,
+ 583, 202, 583, 583, 583, 583, 583, 583,
+ 583, 202, 583, 583, 202, 584, 583, 583,
+ 583, 583, 202, 202, 585, 583, 586, 581,
+
+ 582, 581, 581, 581, 587, 202, 202, 582,
+ 588, 202, 202, 588, 588, 589, 202, 202,
+ 202, 202, 202, 202, 202, 202, 590, 586,
+ 202, 202, 202, 202, 591, 591, 202, 583,
+
+ 583, 583, 587, 587, 202, 202, 592, 593,
+ 594, 595, 596, 597, 598, 599, 600, 601,
+ 602, 584, 603, 603, 603, 603, 603, 603,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 604, 605, 202, 605, 605, 605,
+ 605, 605, 605, 202, 202, 202, 605, 605,
+ 605, 202, 605, 605, 606, 605, 202, 202,
+ 202, 605, 605, 202, 605, 202, 605, 605,
+
+ 202, 202, 202, 605, 605, 202, 202, 202,
+ 605, 605, 605, 202, 202, 202, 605, 605,
+ 605, 605, 605, 605, 605, 605, 607, 605,
+ 605, 605, 202, 202, 202, 202, 608, 609,
+
+ 604, 609, 609, 202, 202, 202, 609, 609,
+ 609, 202, 610, 610, 610, 611, 202, 202,
+ 612, 202, 202, 202, 202, 202, 202, 608,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 613, 614,
+ 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 623, 623, 624, 624, 624, 624, 624,
+ 624, 625, 624, 202, 202, 202, 202, 202,
+
+ 626, 627, 627, 627, 628, 629, 629, 629,
+ 629, 629, 629, 629, 629, 202, 629, 629,
+ 629, 202, 629, 629, 629, 629, 629, 629,
+ 629, 629, 629, 629, 629, 629, 629, 629,
+
+ 629, 629, 629, 629, 629, 629, 629, 629,
+ 629, 202, 629, 629, 629, 629, 629, 629,
+ 629, 629, 629, 629, 630, 629, 629, 629,
+ 629, 629, 202, 202, 202, 631, 632, 632,
+
+ 632, 627, 627, 627, 627, 202, 632, 632,
+ 633, 202, 632, 632, 632, 634, 202, 202,
+ 202, 202, 202, 202, 202, 635, 636, 202,
+ 631, 631, 637, 202, 202, 202, 202, 202,
+
+ 629, 629, 638, 638, 202, 202, 639, 640,
+ 641, 642, 643, 644, 645, 646, 647, 648,
+ 202, 202, 202, 202, 202, 202, 202, 649,
+ 650, 650, 650, 650, 650, 650, 650, 651,
+
+ 652, 653, 654, 654, 655, 656, 656, 656,
+ 656, 656, 656, 656, 656, 202, 656, 656,
+ 656, 202, 656, 656, 656, 656, 656, 656,
+ 656, 656, 656, 656, 656, 656, 656, 656,
+
+ 656, 656, 656, 656, 656, 656, 656, 656,
+ 656, 202, 656, 656, 656, 656, 656, 656,
+ 656, 656, 656, 656, 202, 656, 656, 656,
+ 656, 656, 202, 202, 657, 658, 654, 659,
+
+ 660, 654, 661, 654, 654, 202, 659, 660,
+ 660, 202, 660, 660, 662, 663, 202, 202,
+ 202, 202, 202, 202, 202, 661, 661, 202,
+ 202, 202, 202, 202, 202, 202, 656, 202,
+
+ 656, 656, 664, 664, 202, 202, 665, 666,
+ 667, 668, 669, 670, 671, 672, 673, 674,
+ 202, 675, 675, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 676, 677, 678, 678, 202, 679, 679, 679,
+ 679, 679, 679, 679, 679, 202, 679, 679,
+ 679, 202, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679,
+
+ 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 680, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 679, 680, 681, 681, 682, 683, 678,
+
+ 678, 684, 684, 684, 685, 202, 678, 678,
+ 678, 202, 686, 686, 686, 687, 688, 689,
+ 202, 202, 202, 202, 690, 690, 690, 683,
+ 691, 691, 691, 691, 691, 691, 691, 692,
+
+ 679, 679, 685, 685, 202, 202, 693, 694,
+ 695, 696, 697, 698, 699, 700, 701, 702,
+ 703, 703, 703, 703, 703, 703, 691, 691,
+ 691, 704, 682, 682, 682, 682, 682, 682,
+
+ 202, 202, 705, 705, 202, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 202,
+ 202, 202, 706, 706, 706, 706, 706, 706,
+
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 706, 706, 706, 706,
+ 706, 706, 202, 706, 706, 706, 706, 706,
+ 706, 706, 706, 706, 202, 706, 202, 202,
+
+ 706, 706, 706, 706, 706, 706, 706, 202,
+ 202, 202, 707, 202, 202, 202, 202, 708,
+ 705, 705, 709, 709, 709, 202, 709, 202,
+ 705, 705, 710, 705, 710, 710, 710, 708,
+
+ 202, 202, 202, 202, 202, 202, 711, 712,
+ 713, 714, 715, 716, 717, 718, 719, 720,
+ 202, 202, 705, 705, 721, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 722, 722, 722, 722, 722, 722, 722,
+ 722, 723, 722, 724, 723, 723, 723, 723,
+ 725, 725, 726, 202, 202, 202, 202, 12,
+
+ 722, 722, 722, 722, 722, 722, 727, 723,
+ 728, 728, 728, 728, 723, 723, 723, 729,
+ 730, 731, 732, 733, 734, 735, 736, 737,
+ 738, 739, 740, 740, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 741, 741, 202, 741, 202, 742, 741,
+ 741, 742, 741, 202, 742, 741, 742, 742,
+ 742, 742, 742, 742, 741, 741, 741, 741,
+ 742, 741, 741, 741, 741, 741, 741, 741,
+
+ 742, 741, 741, 741, 202, 741, 202, 741,
+ 742, 742, 741, 741, 742, 741, 741, 741,
+ 741, 743, 741, 744, 743, 743, 743, 743,
+ 745, 745, 746, 743, 743, 741, 202, 202,
+
+ 741, 741, 741, 741, 741, 202, 747, 202,
+ 748, 748, 748, 748, 743, 743, 202, 202,
+ 749, 750, 751, 752, 753, 754, 755, 756,
+ 757, 758, 202, 202, 759, 759, 760, 760,
+
+ 761, 762, 762, 762, 763, 764, 763, 763,
+ 765, 763, 763, 766, 767, 768, 768, 768,
+ 768, 768, 765, 769, 768, 769, 769, 769,
+ 770, 770, 769, 769, 769, 769, 769, 769,
+
+ 771, 772, 773, 774, 775, 776, 777, 778,
+ 779, 780, 781, 781, 781, 781, 781, 781,
+ 781, 781, 781, 781, 782, 770, 769, 770,
+ 769, 783, 784, 785, 784, 785, 786, 786,
+
+ 761, 761, 761, 787, 761, 761, 761, 761,
+ 202, 761, 761, 761, 761, 787, 761, 761,
+ 761, 761, 787, 761, 761, 761, 761, 787,
+ 761, 761, 761, 761, 787, 761, 761, 761,
+
+ 761, 761, 761, 761, 761, 761, 761, 761,
+ 761, 787, 788, 789, 789, 202, 202, 202,
+ 202, 790, 791, 792, 793, 792, 792, 794,
+ 792, 794, 791, 791, 791, 791, 795, 796,
+
+ 791, 792, 797, 797, 798, 766, 797, 797,
+ 761, 761, 761, 761, 799, 800, 800, 800,
+ 795, 795, 795, 792, 795, 795, 801, 795,
+ 202, 795, 795, 795, 795, 792, 795, 795,
+
+ 795, 795, 792, 795, 795, 795, 795, 792,
+ 795, 795, 795, 795, 792, 795, 801, 801,
+ 801, 795, 795, 795, 795, 795, 795, 795,
+ 801, 792, 801, 801, 801, 202, 802, 802,
+
+ 803, 803, 803, 803, 803, 803, 804, 803,
+ 803, 803, 803, 803, 803, 202, 805, 803,
+ 806, 806, 807, 808, 809, 810, 810, 810,
+ 810, 811, 811, 202, 202, 202, 202, 202,
+
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+ 812, 812, 812, 812, 812, 812, 812, 812,
+
+ 812, 812, 813, 812, 812, 812, 814, 812,
+ 813, 812, 812, 815, 816, 817, 818, 817,
+ 817, 819, 817, 820, 820, 820, 817, 821,
+ 816, 822, 823, 824, 824, 820, 820, 813,
+
+ 825, 826, 827, 828, 829, 830, 831, 832,
+ 833, 834, 835, 835, 836, 836, 836, 836,
+ 812, 812, 812, 812, 812, 812, 819, 819,
+ 817, 817, 813, 813, 813, 813, 820, 820,
+
+ 820, 813, 815, 815, 815, 813, 813, 815,
+ 815, 815, 815, 815, 815, 815, 813, 813,
+ 813, 820, 820, 820, 820, 813, 813, 813,
+ 813, 813, 813, 813, 813, 813, 813, 813,
+
+ 813, 813, 820, 815, 824, 820, 820, 815,
+ 815, 815, 815, 815, 815, 837, 813, 815,
+ 838, 839, 840, 841, 842, 843, 844, 845,
+ 846, 847, 848, 848, 848, 849, 850, 850,
851, 851, 851, 851, 851, 851, 851, 851,
851, 851, 851, 851, 851, 851, 851, 851,
851, 851, 851, 851, 851, 851, 851, 851,
- 851, 851, 852, 852, 852, 852, 852, 852,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 201,
- 853, 201, 853, 853, 853, 853, 201, 201,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
+ 851, 851, 851, 851, 851, 851, 851, 851,
+ 851, 851, 851, 851, 851, 851, 202, 852,
+ 202, 202, 202, 202, 202, 852, 202, 202,
853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 201,
-
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 201,
853, 853, 853, 853, 853, 853, 853, 853,
853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
-
853, 853, 853, 853, 853, 853, 853, 853,
853, 853, 853, 853, 853, 853, 853, 854,
- 853, 201, 853, 853, 853, 853, 201, 201,
- 853, 853, 853, 853, 853, 853, 853, 854,
-
- 853, 853, 853, 853, 853, 853, 853, 854,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 853, 853, 853, 853, 853,
- 853, 853, 853, 201, 201, 855, 855, 856,
-
- 857, 858, 859, 860, 860, 860, 860, 859,
- 859, 861, 862, 863, 864, 865, 866, 867,
- 868, 869, 870, 870, 870, 870, 870, 870,
- 870, 870, 870, 870, 870, 201, 201, 201,
-
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 854,
- 871, 871, 871, 871, 871, 871, 871, 871,
- 871, 871, 201, 201, 201, 201, 201, 201,
-
- 872, 873, 874, 875, 876, 877, 878, 879,
- 880, 881, 882, 883, 884, 885, 886, 887,
- 888, 889, 890, 891, 892, 893, 894, 895,
- 896, 897, 898, 899, 900, 901, 902, 903,
-
- 904, 905, 906, 907, 908, 909, 910, 911,
- 912, 913, 914, 915, 916, 917, 918, 919,
- 920, 921, 922, 923, 924, 925, 926, 927,
- 928, 929, 930, 931, 932, 933, 934, 935,
-
- 936, 937, 938, 939, 940, 941, 942, 943,
- 944, 945, 946, 947, 948, 949, 950, 951,
- 952, 952, 952, 952, 952, 953, 201, 201,
- 954, 954, 954, 954, 954, 954, 201, 201,
-
- 955, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
-
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 956, 956, 956,
-
- 956, 956, 956, 956, 956, 956, 956, 956,
- 956, 956, 956, 956, 956, 957, 958, 956,
- 956, 956, 956, 956, 956, 956, 956, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 960, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 961, 961, 961, 961, 961,
- 961, 961, 961, 962, 963, 201, 201, 201,
-
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 964, 964, 964, 964, 964,
-
- 964, 964, 964, 964, 964, 964, 964, 964,
- 964, 964, 964, 965, 965, 965, 966, 966,
- 966, 967, 967, 967, 967, 967, 967, 967,
- 967, 201, 201, 201, 201, 201, 201, 201,
-
- 968, 968, 968, 968, 968, 968, 968, 968,
- 968, 968, 968, 968, 968, 201, 968, 968,
- 968, 968, 969, 969, 970, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 971, 971, 971, 971, 971, 971, 971, 971,
- 971, 971, 971, 971, 971, 971, 971, 971,
- 971, 971, 972, 972, 973, 974, 974, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
+ 854, 855, 855, 856, 857, 858, 858, 858,
+
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 859, 859, 859, 859, 859, 859,
+ 859, 859, 860, 860, 860, 860, 860, 859,
+
+ 861, 862, 862, 862, 862, 862, 862, 862,
+ 862, 862, 862, 862, 862, 862, 862, 862,
+ 862, 862, 862, 862, 862, 862, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+ 861, 861, 861, 861, 861, 861, 861, 861,
+
+ 861, 861, 861, 863, 863, 863, 863, 863,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+ 864, 864, 864, 864, 864, 864, 864, 864,
+
+ 864, 864, 864, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 865, 865, 865, 865, 865, 865,
+ 865, 865, 866, 866, 866, 866, 866, 866,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 202,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 202, 867, 867, 867, 867, 202, 202,
+ 867, 867, 867, 867, 867, 867, 867, 868,
+
+ 867, 867, 867, 867, 867, 867, 867, 868,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 867, 867, 867, 867, 867,
+ 867, 867, 867, 202, 202, 869, 869, 870,
+
+ 871, 872, 873, 874, 874, 874, 874, 873,
+ 873, 875, 876, 877, 878, 879, 880, 881,
+ 882, 883, 884, 884, 884, 884, 884, 884,
+ 884, 884, 884, 884, 884, 202, 202, 202,
+
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 885, 885, 885, 885, 885, 885, 885, 885,
+ 885, 885, 202, 202, 202, 202, 202, 202,
+
+ 886, 887, 888, 889, 890, 891, 892, 893,
+ 894, 895, 896, 897, 898, 899, 900, 901,
+ 902, 903, 904, 905, 906, 907, 908, 909,
+ 910, 911, 912, 913, 914, 915, 916, 917,
+
+ 918, 919, 920, 921, 922, 923, 924, 925,
+ 926, 927, 928, 929, 930, 931, 932, 933,
+ 934, 935, 936, 937, 938, 939, 940, 941,
+ 942, 943, 944, 945, 946, 947, 948, 949,
+
+ 950, 951, 952, 953, 954, 955, 956, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965,
+ 966, 966, 966, 966, 966, 967, 202, 202,
+ 968, 968, 968, 968, 968, 968, 202, 202,
+
+ 969, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 970, 970, 970,
+
+ 970, 970, 970, 970, 970, 970, 970, 970,
+ 970, 970, 970, 970, 970, 971, 972, 970,
+ 970, 970, 970, 970, 970, 970, 970, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 974, 975, 975, 975, 975, 975, 975, 975,
975, 975, 975, 975, 975, 975, 975, 975,
975, 975, 975, 975, 975, 975, 975, 975,
- 975, 975, 976, 976, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 977, 977, 977, 977, 977, 977, 977, 977,
- 977, 977, 977, 977, 977, 201, 977, 977,
- 977, 201, 978, 978, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
-
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 979, 979, 979, 979,
- 979, 979, 979, 979, 980, 980, 981, 980,
- 980, 980, 980, 980, 980, 980, 981, 981,
-
- 981, 981, 981, 981, 981, 981, 980, 981,
- 981, 980, 980, 980, 980, 980, 980, 980,
- 980, 980, 982, 980, 983, 983, 984, 985,
- 983, 986, 983, 987, 979, 988, 201, 201,
-
- 989, 990, 991, 992, 993, 994, 995, 996,
- 997, 998, 201, 201, 201, 201, 201, 201,
- 999, 999, 999, 999, 999, 999, 999, 999,
- 999, 999, 201, 201, 201, 201, 201, 201,
-
- 1000, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
- 1007, 1008, 1009, 1010, 1010, 1010, 1011, 201,
- 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
- 1020, 1021, 201, 201, 201, 201, 201, 201,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1023, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1024, 1024, 1024, 1024, 1024, 1010, 1010, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
-
- 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022,
- 1022, 1025, 1026, 201, 201, 201, 201, 201,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
-
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 959, 959,
- 959, 959, 959, 959, 959, 959, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
- 1027, 1027, 1027, 1027, 1027, 1028, 1028, 201,
-
- 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1029,
- 1029, 1030, 1030, 1030, 201, 201, 201, 201,
- 1030, 1030, 1029, 1030, 1030, 1030, 1030, 1030,
- 1030, 1031, 1032, 1033, 201, 201, 201, 201,
-
- 1034, 201, 201, 201, 1035, 1035, 1036, 1037,
- 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
-
- 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
- 1046, 1046, 1046, 1046, 1046, 1046, 201, 201,
- 1046, 1046, 1046, 1046, 1046, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1048, 1048, 201, 201, 201, 201,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
- 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
- 1047, 1047, 201, 201, 201, 201, 201, 201,
- 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
- 1057, 1058, 1059, 201, 201, 201, 1060, 1060,
-
- 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+ 975, 975, 975, 976, 977, 202, 202, 202,
+
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 978, 978, 978, 978, 978,
+
+ 978, 978, 978, 978, 978, 978, 978, 978,
+ 978, 978, 978, 979, 979, 979, 980, 980,
+ 980, 981, 981, 981, 981, 981, 981, 981,
+ 981, 202, 202, 202, 202, 202, 202, 202,
+
+ 982, 982, 982, 982, 982, 982, 982, 982,
+ 982, 982, 982, 982, 982, 202, 982, 982,
+ 982, 982, 983, 983, 984, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 985, 985, 985, 985, 985, 985, 985, 985,
+ 985, 985, 985, 985, 985, 985, 985, 985,
+ 985, 985, 986, 986, 987, 988, 988, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 989, 989, 989, 989, 989, 989, 989, 989,
+ 989, 989, 989, 989, 989, 989, 989, 989,
+ 989, 989, 990, 990, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 991, 991, 991, 991, 991, 991, 991, 991,
+ 991, 991, 991, 991, 991, 202, 991, 991,
+ 991, 202, 992, 992, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 993, 993, 993, 993,
+ 993, 993, 993, 993, 994, 994, 995, 994,
+ 994, 994, 994, 994, 994, 994, 995, 995,
+
+ 995, 995, 995, 995, 995, 995, 994, 995,
+ 995, 994, 994, 994, 994, 994, 994, 994,
+ 994, 994, 996, 994, 997, 997, 998, 999,
+ 997, 1000, 997, 1001, 993, 1002, 202, 202,
+
+ 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+ 1011, 1012, 202, 202, 202, 202, 202, 202,
+ 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
+ 1013, 1013, 202, 202, 202, 202, 202, 202,
+
+ 1014, 1014, 1015, 1016, 1017, 1018, 1019, 1020,
+ 1021, 1022, 1023, 1024, 1024, 1024, 1025, 202,
+ 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033,
+ 1034, 1035, 202, 202, 202, 202, 202, 202,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1037, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1038, 202, 202, 202, 202, 202, 202, 202,
+
+ 1039, 1039, 1039, 1039, 1039, 1024, 1024, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+
+ 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
+ 1036, 1040, 1041, 202, 202, 202, 202, 202,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 973, 973,
+ 973, 973, 973, 973, 973, 973, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
+ 1042, 1042, 1042, 1042, 1042, 1043, 1043, 202,
+
+ 1044, 1044, 1044, 1045, 1045, 1045, 1045, 1044,
+ 1044, 1045, 1045, 1045, 202, 202, 202, 202,
+ 1045, 1045, 1044, 1045, 1045, 1045, 1045, 1045,
+ 1045, 1046, 1047, 1048, 202, 202, 202, 202,
+
+ 1049, 202, 202, 202, 1050, 1050, 1051, 1052,
+ 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+ 1061, 1061, 1061, 1061, 1061, 1061, 202, 202,
+ 1061, 1061, 1061, 1061, 1061, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
- 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1063,
- 1064, 1065, 1065, 1066, 201, 201, 1067, 1067,
-
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
-
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
- 1068, 1068, 1068, 1068, 1068, 1069, 1070, 1069,
- 1070, 1070, 1070, 1070, 1070, 1070, 1070, 201,
-
- 1071, 1072, 1070, 1072, 1072, 1070, 1070, 1070,
- 1070, 1070, 1070, 1070, 1070, 1069, 1069, 1069,
- 1069, 1069, 1069, 1070, 1070, 1073, 1073, 1073,
- 1073, 1073, 1073, 1073, 1073, 201, 201, 1074,
-
- 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
- 1083, 1084, 201, 201, 201, 201, 201, 201,
- 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
- 1083, 1084, 201, 201, 201, 201, 201, 201,
-
- 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086,
- 1087, 1087, 1087, 1087, 1085, 1085, 201, 201,
- 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089,
- 1089, 1089, 1089, 1088, 1088, 1089, 1090, 201,
-
- 1091, 1091, 1091, 1091, 1092, 1093, 1094, 1093,
- 1094, 1093, 1094, 1093, 1094, 1093, 1094, 1093,
- 1093, 1093, 1094, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
-
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 1095, 1096, 1091, 1091,
- 1091, 1091, 1091, 1097, 1091, 1097, 1092, 1092,
-
- 1097, 1097, 1091, 1097, 1098, 1093, 1093, 1093,
- 1093, 1093, 1093, 1093, 201, 201, 201, 201,
- 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106,
- 1107, 1108, 1109, 1109, 1110, 1111, 1109, 1109,
-
- 1111, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
- 1112, 1112, 1112, 1113, 1114, 1113, 1113, 1113,
- 1113, 1113, 1113, 1113, 1112, 1112, 1112, 1112,
- 1112, 1112, 1112, 1112, 1112, 201, 201, 201,
-
- 1115, 1115, 1116, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
- 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-
- 1117, 1116, 1115, 1115, 1115, 1115, 1116, 1116,
- 1115, 1115, 1118, 1119, 1120, 1120, 1117, 1117,
- 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
- 1129, 1130, 1131, 1131, 1131, 1131, 1131, 1131,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
- 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1063, 1063, 202, 202, 202, 202,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+
+ 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+ 1062, 1062, 202, 202, 202, 202, 202, 202,
+ 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
+ 1072, 1073, 1074, 202, 202, 202, 1075, 1075,
+
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+ 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+ 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078,
+ 1079, 1080, 1080, 1081, 202, 202, 1082, 1082,
+
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+ 1083, 1083, 1083, 1083, 1083, 1084, 1085, 1084,
+ 1085, 1085, 1085, 1085, 1085, 1085, 1085, 202,
+
+ 1086, 1087, 1085, 1087, 1087, 1085, 1085, 1085,
+ 1085, 1085, 1085, 1085, 1085, 1084, 1084, 1084,
+ 1084, 1084, 1084, 1085, 1085, 1088, 1088, 1088,
+ 1088, 1088, 1088, 1088, 1088, 202, 202, 1089,
+
+ 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
+ 1098, 1099, 202, 202, 202, 202, 202, 202,
+ 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
+ 1098, 1099, 202, 202, 202, 202, 202, 202,
+
+ 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1101,
+ 1102, 1102, 1102, 1102, 1100, 1100, 202, 202,
+ 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104,
+ 1104, 1104, 1104, 1103, 1103, 1104, 1105, 202,
+
+ 1106, 1106, 1106, 1106, 1107, 1108, 1109, 1108,
+ 1109, 1108, 1109, 1108, 1109, 1108, 1109, 1108,
+ 1108, 1108, 1109, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1110, 1111, 1106, 1106,
+ 1106, 1106, 1106, 1112, 1106, 1112, 1107, 1107,
+
+ 1112, 1112, 1106, 1112, 1113, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 202, 202, 202, 202,
+ 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+ 1122, 1123, 1124, 1124, 1125, 1126, 1124, 1124,
+
+ 1126, 1127, 1127, 1127, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1128, 1129, 1128, 1128, 1128,
+ 1128, 1128, 1128, 1128, 1127, 1127, 1127, 1127,
+ 1127, 1127, 1127, 1127, 1127, 202, 202, 202,
+
+ 1130, 1130, 1131, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
- 1132, 1132, 1132, 1132, 1132, 1132, 1133, 1134,
- 1135, 1135, 1134, 1134, 1134, 1135, 1134, 1135,
- 1135, 1135, 1136, 1136, 201, 201, 201, 201,
- 201, 201, 201, 201, 1137, 1137, 1137, 1137,
-
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
- 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-
- 1138, 1138, 1138, 1138, 1139, 1139, 1139, 1139,
- 1139, 1139, 1139, 1139, 1140, 1140, 1140, 1140,
- 1140, 1140, 1140, 1140, 1139, 1139, 1140, 1141,
- 201, 201, 201, 1142, 1142, 1143, 1143, 1143,
-
- 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
- 1152, 1153, 201, 201, 201, 1138, 1138, 1138,
- 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
- 1162, 1163, 1164, 1164, 1164, 1164, 1164, 1164,
-
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
- 1165, 1165, 1165, 1165, 1165, 1165, 1166, 1166,
-
- 1167, 1168, 1169, 1170, 1170, 1171, 1172, 1173,
- 1174, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1176, 1176, 1176, 1177, 1178, 1179, 1179, 1179,
- 1179, 1179, 1176, 1176, 1179, 1179, 1179, 1179,
-
- 1176, 1180, 1178, 1178, 1178, 1178, 1178, 1178,
- 1178, 1181, 1181, 1181, 1181, 1179, 1181, 1181,
- 1181, 1181, 1180, 1182, 1183, 1184, 1184, 1185,
- 1088, 1088, 201, 201, 201, 201, 201, 201,
+ 1132, 1131, 1130, 1130, 1130, 1130, 1131, 1131,
+ 1130, 1130, 1133, 1134, 1135, 1135, 1132, 1132,
+ 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+ 1144, 1145, 1146, 1146, 1146, 1146, 1146, 1146,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+ 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
+
+ 1147, 1147, 1147, 1147, 1147, 1147, 1148, 1149,
+ 1150, 1150, 1149, 1149, 1149, 1150, 1149, 1150,
+ 1150, 1150, 1151, 1151, 202, 202, 202, 202,
+ 202, 202, 202, 202, 1152, 1152, 1152, 1152,
+
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+ 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+
+ 1153, 1153, 1153, 1153, 1154, 1154, 1154, 1154,
+ 1154, 1154, 1154, 1154, 1155, 1155, 1155, 1155,
+ 1155, 1155, 1155, 1155, 1154, 1154, 1155, 1156,
+ 202, 202, 202, 1157, 1157, 1158, 1158, 1158,
+
+ 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
+ 1167, 1168, 202, 202, 202, 1153, 1153, 1153,
+ 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
+ 1177, 1178, 1179, 1179, 1179, 1179, 1179, 1179,
+
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+ 1180, 1180, 1180, 1180, 1180, 1180, 1181, 1181,
+
+ 1182, 1183, 1184, 1185, 1185, 1186, 1187, 1188,
+ 1189, 202, 202, 202, 202, 202, 202, 202,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190,
+ 1190, 1190, 1190, 202, 202, 1190, 1190, 1190,
+
+ 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1192, 1192, 1192, 1193, 1194, 1195, 1195, 1195,
+ 1195, 1195, 1192, 1192, 1195, 1195, 1195, 1195,
+
+ 1192, 1196, 1194, 1194, 1194, 1194, 1194, 1194,
+ 1194, 1197, 1197, 1197, 1197, 1195, 1197, 1197,
+ 1197, 1197, 1197, 1198, 1199, 1198, 1198, 1200,
+ 1103, 1103, 1201, 202, 202, 202, 202, 202,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 1186, 1186,
- 1186, 1186, 1186, 1187, 1188, 1188, 1188, 1189,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1189, 1188, 1188, 1188, 1188,
+ 114, 114, 114, 114, 114, 114, 1202, 1202,
+ 1202, 1202, 1202, 1203, 1204, 1204, 1204, 1205,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1205, 1204, 1204, 1204, 1204,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1188,
- 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
- 1188, 1188, 1188, 1188, 1188, 1190, 1190, 1190,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1205, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+ 1204, 1204, 1204, 1204, 1204, 1206, 1206, 1206,
- 1190, 1190, 1188, 1188, 1188, 1188, 1190, 1190,
- 1190, 1190, 1190, 114, 115, 115, 115, 115,
+ 1206, 1206, 1204, 1204, 1204, 1204, 1206, 1206,
+ 1206, 1206, 1206, 114, 115, 115, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
- 1191, 1192, 115, 115, 115, 1193, 115, 115,
+ 1207, 1208, 115, 115, 115, 1209, 115, 115,
115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 1210, 115,
115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 1194, 1194, 1194, 1194, 1194,
+ 115, 115, 115, 1211, 1211, 1211, 1211, 1211,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
- 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
+ 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212,
- 190, 190, 189, 190, 1196, 1196, 1196, 1196,
- 1196, 1196, 1197, 1198, 1198, 1199, 1200, 1201,
- 1202, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
- 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
+ 191, 191, 190, 191, 1213, 1213, 1213, 1213,
+ 1213, 1213, 1214, 1215, 1215, 1216, 1217, 1218,
+ 1219, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1215,
- 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1088,
- 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
- 1088, 1088, 1088, 1088, 1088, 1088, 1203, 1204,
- 1204, 1205, 201, 1206, 1207, 1179, 1196, 1197,
+ 1215, 1215, 1215, 1215, 1215, 1215, 1215, 1103,
+ 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+ 1103, 1103, 1103, 1103, 1103, 1103, 1220, 1221,
+ 1221, 1222, 202, 1223, 1224, 1195, 1213, 1214,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
@@ -1944,258 +1949,258 @@ static const unsigned short uc_property_trie[] = {
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
- 70, 71, 70, 71, 70, 71, 1208, 1209,
- 1210, 1211, 1212, 1213, 1214, 1214, 1215, 1214,
+ 70, 71, 70, 71, 70, 71, 1225, 1226,
+ 1227, 1228, 1229, 1230, 1231, 1231, 1232, 1231,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
70, 71, 70, 71, 70, 71, 70, 71,
- 70, 71, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1218, 1218, 1218, 1218, 1218, 1218, 201, 201,
- 1219, 1219, 1219, 1219, 1219, 1219, 201, 201,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 201, 201,
- 1219, 1219, 1219, 1219, 1219, 1219, 201, 201,
- 1220, 1218, 1221, 1218, 1222, 1218, 1223, 1218,
- 201, 1219, 201, 1219, 201, 1219, 201, 1219,
-
- 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
- 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
- 1224, 1225, 1226, 1227, 1226, 1227, 1228, 1229,
- 1230, 1231, 1232, 1233, 1234, 1235, 201, 201,
-
- 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
- 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
- 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
- 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267,
-
- 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
- 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283,
- 1218, 1218, 1284, 1285, 1286, 201, 1287, 1288,
- 1219, 1219, 1289, 1290, 1291, 206, 1292, 206,
-
- 206, 1293, 1294, 1295, 1296, 201, 1297, 1298,
- 1299, 1300, 1299, 1300, 1301, 1293, 1293, 1293,
- 1218, 1218, 1302, 1303, 201, 201, 1304, 1305,
- 1219, 1219, 1306, 1307, 201, 1293, 1293, 1293,
-
- 1218, 1218, 1308, 1309, 1310, 1311, 1312, 1313,
- 1219, 1219, 1314, 1315, 1316, 1293, 1317, 1317,
- 201, 201, 1318, 1319, 1320, 201, 1321, 1322,
- 1323, 1324, 1325, 1326, 1327, 1328, 206, 201,
-
- 1329, 1329, 1330, 1330, 1330, 1330, 1330, 1331,
- 1330, 1330, 1330, 1332, 1333, 1334, 1335, 1336,
- 1337, 1338, 1337, 1339, 1340, 1341, 14, 1342,
- 1343, 1344, 1345, 1346, 1346, 1347, 1345, 1346,
-
- 14, 14, 14, 14, 1348, 1349, 1349, 1350,
- 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
- 13, 13, 13, 1359, 1359, 1360, 1361, 1361,
- 14, 1362, 1363, 14, 1364, 1365, 1342, 43,
-
- 43, 14, 14, 14, 1366, 16, 1367, 1368,
- 1369, 1369, 1370, 1370, 1370, 1370, 1371, 1371,
- 1371, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
- 1376, 1376, 1376, 1376, 1375, 1376, 1376, 1378,
-
- 1379, 1380, 1380, 1380, 1381, 1382, 1383, 1384,
- 1385, 1386, 1387, 1387, 1387, 1387, 1387, 1387,
- 1388, 1389, 201, 201, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1396, 1397, 1398, 1399, 159,
-
- 1388, 63, 58, 59, 1390, 1391, 1392, 1393,
- 1394, 1395, 1396, 1396, 1397, 1398, 1399, 201,
- 1194, 1194, 1194, 1194, 1194, 1400, 1400, 1400,
- 1400, 1400, 1400, 1400, 1400, 201, 201, 201,
+ 70, 71, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1235, 1235, 1235, 1235, 1235, 1235, 202, 202,
+ 1236, 1236, 1236, 1236, 1236, 1236, 202, 202,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 202, 202,
+ 1236, 1236, 1236, 1236, 1236, 1236, 202, 202,
+ 1237, 1235, 1238, 1235, 1239, 1235, 1240, 1235,
+ 202, 1236, 202, 1236, 202, 1236, 202, 1236,
+
+ 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235,
+ 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236,
+ 1241, 1242, 1243, 1244, 1243, 1244, 1245, 1246,
+ 1247, 1248, 1249, 1250, 1251, 1252, 202, 202,
+
+ 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
+ 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
+ 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
+ 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+
+ 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
+ 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300,
+ 1235, 1235, 1301, 1302, 1303, 202, 1304, 1305,
+ 1236, 1236, 1306, 1307, 1308, 207, 1309, 207,
+
+ 207, 1310, 1311, 1312, 1313, 202, 1314, 1315,
+ 1316, 1317, 1316, 1317, 1318, 1310, 1310, 1310,
+ 1235, 1235, 1319, 1320, 202, 202, 1321, 1322,
+ 1236, 1236, 1323, 1324, 202, 1310, 1310, 1310,
+
+ 1235, 1235, 1325, 1326, 1327, 1328, 1329, 1330,
+ 1236, 1236, 1331, 1332, 1333, 1310, 1334, 1334,
+ 202, 202, 1335, 1336, 1337, 202, 1338, 1339,
+ 1340, 1341, 1342, 1343, 1344, 1345, 207, 202,
+
+ 1346, 1346, 1347, 1347, 1347, 1347, 1347, 1348,
+ 1347, 1347, 1347, 1349, 1350, 1351, 1352, 1353,
+ 1354, 1355, 1354, 1356, 1357, 1358, 14, 1359,
+ 1360, 1361, 1362, 1363, 1363, 1364, 1362, 1363,
+
+ 14, 14, 14, 14, 1365, 1366, 1366, 1367,
+ 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
+ 13, 13, 13, 1376, 1376, 1377, 1378, 1378,
+ 14, 1379, 1380, 14, 1381, 1382, 1359, 43,
+
+ 43, 14, 14, 14, 1383, 16, 1384, 1385,
+ 1386, 1386, 1387, 1387, 1387, 1387, 1388, 1388,
+ 1388, 1388, 1389, 1390, 1391, 1392, 1393, 1394,
+ 1393, 1393, 1393, 1393, 1392, 1393, 1393, 1395,
+
+ 1396, 1397, 1397, 1397, 1398, 1399, 1400, 1401,
+ 1402, 1403, 1404, 1404, 1404, 1404, 1404, 1404,
+ 1405, 1406, 202, 202, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1413, 1414, 1415, 1416, 160,
+
+ 1405, 63, 58, 59, 1407, 1408, 1409, 1410,
+ 1411, 1412, 1413, 1413, 1414, 1415, 1416, 202,
+ 1211, 1211, 1211, 1211, 1211, 1417, 1417, 1417,
+ 1417, 1417, 1417, 1417, 1417, 202, 202, 202,
12, 12, 12, 12, 12, 12, 12, 50,
- 1401, 12, 12, 1402, 1403, 1404, 1404, 1404,
- 1405, 1405, 1406, 1406, 1406, 1406, 1407, 1408,
- 1408, 1409, 1410, 1411, 1412, 1412, 1413, 1414,
-
- 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
- 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415,
- 172, 172, 179, 179, 172, 172, 172, 172,
- 179, 179, 179, 172, 172, 1416, 1416, 1416,
-
- 1416, 172, 1417, 1417, 1418, 1419, 1419, 196,
- 1420, 196, 1419, 1421, 1197, 1197, 1197, 1197,
- 1198, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1422, 1422, 1423, 1424, 51, 1422, 1422, 1423,
- 51, 1424, 1425, 1423, 1423, 1423, 1425, 1425,
- 1423, 1423, 1423, 1425, 51, 1423, 1426, 51,
- 36, 1423, 1423, 1423, 1423, 1423, 51, 51,
-
- 1422, 1422, 1422, 51, 1423, 51, 1427, 51,
- 1423, 51, 1428, 1429, 1423, 1423, 1430, 1425,
- 1423, 1423, 1431, 1423, 1425, 1432, 1432, 1432,
- 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1438,
-
- 1439, 1372, 1372, 1372, 1372, 1438, 1437, 1437,
- 1437, 1437, 1440, 1372, 1441, 1442, 1443, 1444,
- 1445, 1445, 1445, 65, 65, 65, 65, 65,
+ 1418, 12, 12, 1419, 1420, 1421, 1421, 1421,
+ 1422, 1422, 1423, 1423, 1423, 1423, 1424, 1425,
+ 1425, 1426, 1427, 1428, 1429, 1429, 1430, 1431,
+
+ 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
+ 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
+ 173, 173, 180, 180, 173, 173, 173, 173,
+ 180, 180, 180, 173, 173, 1433, 1433, 1433,
+
+ 1433, 173, 1434, 1434, 1435, 1436, 1436, 197,
+ 1437, 197, 1436, 1438, 1214, 1214, 1214, 1214,
+ 1215, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1439, 1439, 1440, 1441, 51, 1439, 1439, 1440,
+ 51, 1441, 1442, 1440, 1440, 1440, 1442, 1442,
+ 1440, 1440, 1440, 1442, 51, 1440, 1443, 51,
+ 36, 1440, 1440, 1440, 1440, 1440, 51, 51,
+
+ 1439, 1439, 1439, 51, 1440, 51, 1444, 51,
+ 1440, 51, 1445, 1446, 1440, 1440, 1447, 1442,
+ 1440, 1440, 1448, 1440, 1442, 1449, 1449, 1449,
+ 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1455,
+
+ 1456, 1389, 1389, 1389, 1389, 1455, 1454, 1454,
+ 1454, 1454, 1457, 1389, 1458, 1459, 1460, 1461,
+ 1462, 1462, 1462, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
- 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
- 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446,
- 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
- 1447, 1447, 1447, 1447, 1447, 1447, 1447, 1447,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+ 1463, 1463, 1463, 1463, 1463, 1463, 1463, 1463,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
+ 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
- 1448, 1448, 1448, 111, 123, 1449, 1449, 1449,
- 1449, 1445, 1450, 1450, 201, 201, 201, 201,
+ 1465, 1465, 1465, 111, 123, 1466, 1466, 1466,
+ 1466, 1462, 1467, 1467, 202, 202, 202, 202,
36, 36, 36, 36, 36, 51, 51, 51,
- 51, 51, 1451, 1451, 51, 51, 51, 51,
+ 51, 51, 1468, 1468, 51, 51, 51, 51,
36, 51, 51, 36, 51, 51, 36, 51,
- 51, 51, 51, 51, 51, 51, 1451, 51,
+ 51, 51, 51, 51, 51, 51, 1468, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 1452, 1451, 1451,
+ 51, 51, 51, 51, 51, 1469, 1468, 1468,
51, 51, 36, 51, 36, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 36, 36, 36, 36, 1451, 36, 36, 36,
- 1453, 1454, 1453, 1455, 1456, 1455, 36, 36,
- 36, 36, 18, 57, 36, 1457, 36, 36,
+ 51, 51, 51, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 36, 36, 36, 36, 1468, 36, 36, 36,
+ 1470, 1471, 1470, 1472, 1473, 1472, 36, 36,
+ 36, 36, 18, 57, 36, 1474, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 1475,
+
+ 1476, 1477, 1478, 36, 1479, 36, 1468, 36,
+ 36, 36, 36, 36, 1414, 1414, 36, 1414,
+ 1414, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 1480, 1481, 36, 36,
+
+ 36, 1468, 36, 1482, 1468, 1483, 36, 1468,
+ 36, 1468, 36, 36, 1484, 36, 36, 36,
+ 36, 36, 1480, 1481, 1480, 1481, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 1451, 36, 1451, 36,
- 36, 36, 36, 36, 1397, 1397, 36, 1397,
- 1397, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 1458, 1459, 36, 36,
-
- 36, 1451, 36, 1460, 1451, 36, 36, 1451,
- 36, 1451, 36, 36, 36, 36, 36, 36,
- 36, 36, 1458, 1459, 1458, 1459, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36,
+ 1468, 36, 1468, 36, 1480, 1481, 1480, 1481,
+ 1480, 1481, 1480, 1481, 36, 1468, 1485, 1486,
+ 1485, 1486, 1480, 1481, 1485, 1486, 1480, 1481,
+ 1485, 1486, 1480, 1481, 1480, 1481, 1480, 1481,
- 1451, 36, 1451, 36, 1458, 1459, 1458, 1459,
- 1458, 1459, 1458, 1459, 36, 1451, 1461, 1462,
- 1461, 1462, 1458, 1459, 1461, 1462, 1458, 1459,
- 1461, 1462, 1458, 1459, 1458, 1459, 1458, 1459,
+ 1485, 1486, 1480, 1481, 1485, 1486, 1480, 1481,
+ 1485, 1486, 1480, 1481, 36, 36, 36, 1480,
+ 1481, 1480, 1481, 36, 36, 36, 36, 36,
+ 1487, 36, 36, 36, 36, 36, 36, 36,
- 1461, 1462, 1458, 1459, 1461, 1462, 1458, 1459,
- 1461, 1462, 1458, 1459, 36, 36, 36, 1458,
- 1459, 1458, 1459, 36, 36, 36, 36, 36,
- 1463, 36, 36, 36, 36, 36, 36, 36,
-
- 36, 36, 1458, 1459, 36, 36, 1464, 36,
- 1465, 1466, 36, 1466, 1451, 1451, 1451, 1451,
- 1458, 1459, 1458, 1459, 1458, 1459, 1458, 1459,
- 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 1480, 1481, 36, 36, 1488, 36,
+ 1489, 1490, 36, 1490, 1468, 1468, 1468, 1468,
+ 1480, 1481, 1480, 1481, 1480, 1481, 1480, 1481,
+ 1491, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36,
- 36, 1458, 1459, 1458, 1459, 1467, 36, 36,
- 1458, 1459, 36, 36, 36, 36, 1458, 1459,
- 1458, 1459, 1458, 1459, 1458, 1459, 1458, 1459,
+ 36, 1480, 1481, 1480, 1481, 1492, 36, 36,
+ 1480, 1481, 36, 36, 36, 36, 1480, 1481,
+ 1480, 1481, 1480, 1481, 1480, 1481, 1480, 1481,
- 1461, 1462, 1461, 1462, 1458, 1459, 1458, 1459,
- 1458, 1459, 1461, 1462, 1461, 1462, 36, 1468,
- 1458, 1459, 1469, 1469, 1469, 1372, 1470, 1470,
- 1372, 1372, 1471, 1471, 1471, 1472, 1472, 1372,
+ 1485, 1486, 1485, 1486, 1480, 1481, 1480, 1481,
+ 1480, 1481, 1485, 1486, 1485, 1486, 36, 1493,
+ 1480, 1481, 1494, 1494, 1494, 1389, 1495, 1495,
+ 1389, 1389, 1496, 1496, 1496, 1497, 1497, 1389,
- 51, 1434, 51, 51, 51, 51, 51, 51,
- 16, 1367, 16, 1367, 51, 51, 51, 51,
+ 51, 1451, 51, 51, 51, 51, 51, 51,
+ 16, 1384, 16, 1384, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 1473, 1473, 51, 51, 51, 51,
+ 51, 51, 1498, 1498, 51, 51, 51, 51,
36, 36, 51, 51, 51, 51, 51, 51,
- 51, 1474, 1475, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
-
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
-
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1476, 1476, 1476, 1476, 1476,
- 1476, 1476, 1476, 1434, 1372, 1434, 1434, 1434,
-
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1434, 1434, 1434, 1434, 1434, 1477, 1434, 1434,
- 1434, 1434, 1434, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
-
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1478,
- 1478, 1441, 1441, 1441, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1479, 1479, 1479, 1479,
-
- 1479, 1479, 1442, 1442, 1442, 1442, 1442, 1442,
- 1480, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1482, 1482, 1482, 1482, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1484, 1484, 1484, 1484, 1485,
+ 51, 1499, 1500, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1501, 1501, 1501, 1501, 1501,
+ 1501, 1501, 1501, 1451, 1389, 1451, 1451, 1451,
+
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1451, 1451, 1451, 1451, 1451, 1502, 1451, 1451,
+ 1451, 1451, 1451, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1503,
+ 1503, 1458, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1504, 1504, 1504, 1504,
+
+ 1504, 1504, 1459, 1459, 1459, 1459, 1459, 1459,
+ 1505, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1507, 1507, 1507, 1507, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1509, 1509, 1509, 1509, 1510,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 1434, 1434, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 51, 51, 51, 51, 51, 1451, 1451, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 51, 51, 51, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493,
- 1494, 65, 65, 65, 65, 65, 65, 65,
- 65, 65, 65, 65, 1486, 1487, 1488, 1489,
- 1490, 1491, 1492, 1493, 1494, 65, 65, 65,
+ 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518,
+ 1519, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 1511, 1512, 1513, 1514,
+ 1515, 1516, 1517, 1518, 1519, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65,
- 63, 58, 59, 1390, 1391, 1392, 1393, 1394,
- 1395, 1495, 1495, 1495, 1495, 1495, 1495, 1495,
- 1495, 1495, 1495, 1495, 1496, 1496, 1496, 1496,
+ 63, 58, 59, 1407, 1408, 1409, 1410, 1411,
+ 1412, 1520, 1520, 1520, 1520, 1520, 1520, 1520,
+ 1520, 1520, 1520, 1520, 1521, 1521, 1521, 1521,
- 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
- 1496, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
- 1496, 1496, 1496, 1496, 1496, 1496, 1497, 1497,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
+ 1521, 1521, 1521, 1521, 1521, 1521, 1522, 1522,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
- 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
+ 1522, 1522, 1522, 1522, 1522, 1522, 1522, 1522,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1498, 1498, 1498, 1498, 1498, 1498, 1498, 1498,
- 1498, 1498, 1499, 1500, 1500, 1500, 1500, 1500,
- 1500, 1500, 1500, 1500, 1500, 1501, 1502, 1503,
- 1504, 1505, 1506, 1507, 1508, 1509, 1500, 1510,
+ 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
+ 1523, 1523, 1524, 1525, 1525, 1525, 1525, 1525,
+ 1525, 1525, 1525, 1525, 1525, 1526, 1527, 1528,
+ 1529, 1530, 1531, 1532, 1533, 1534, 1525, 1535,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
+ 51, 51, 51, 51, 51, 51, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
@@ -2209,2454 +2214,1713 @@ static const unsigned short uc_property_trie[] = {
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
+ 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
- 1473, 1473, 1473, 1473, 51, 51, 51, 51,
+ 1498, 1498, 1498, 1498, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 1511, 1511, 1440, 1440,
- 1512, 1434, 1473, 1473, 1473, 1513, 1473, 1473,
+ 51, 51, 51, 51, 1536, 1536, 1457, 1457,
+ 1537, 1451, 1498, 1498, 1498, 1538, 1498, 1498,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 1473, 1473, 1473, 51, 51, 51, 51,
+ 51, 1498, 1498, 1498, 51, 51, 51, 51,
- 1514, 51, 1514, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
+ 1498, 51, 51, 51, 51, 51, 51, 36,
+ 1451, 1451, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1457, 1457, 1457, 1457, 1458, 1537,
+
+ 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457,
+ 1457, 1457, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1458, 1539, 1505, 1505,
+
+ 1503, 1503, 1458, 1458, 1458, 1458, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1540, 1458, 1458, 1458,
+ 1458, 1458, 1459, 1539, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 1539, 1541, 1541, 1541,
+
+ 1542, 1542, 1542, 1542, 1541, 1541, 1541, 1541,
+ 1541, 1505, 1505, 1505, 1505, 1541, 1506, 1541,
+ 1541, 1541, 1505, 1541, 1541, 1505, 1505, 1505,
+ 1541, 1541, 1505, 1505, 1541, 1505, 1505, 1541,
+
+ 1541, 1541, 1506, 1505, 1506, 1506, 1506, 1506,
+ 1505, 1505, 1541, 1505, 1505, 1505, 1505, 1505,
+ 1505, 1541, 1541, 1541, 1541, 1541, 1505, 1541,
+ 1541, 1543, 1541, 1505, 1505, 1541, 1541, 1541,
+
+ 1544, 1498, 1498, 1498, 1498, 1506, 51, 51,
+ 1498, 1498, 1545, 1545, 1538, 1538, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1473, 51, 51, 51, 51, 51, 51, 36,
- 1434, 1434, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1440, 1440, 1440, 1440, 1441, 1512,
-
- 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
- 1440, 1440, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1441, 1441, 1441, 1515, 1515, 1441,
- 1441, 1441, 1441, 1441, 1441, 1516, 1480, 1480,
-
- 1478, 1478, 1441, 1441, 1441, 1441, 1441, 1441,
- 1441, 1441, 1441, 1441, 1517, 1441, 1441, 1441,
- 1441, 1441, 1442, 1516, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 1516, 1518, 1518, 1518,
-
- 1519, 1519, 1519, 1519, 1518, 1518, 1518, 1518,
- 1518, 1480, 1480, 1480, 1480, 1518, 1481, 1518,
- 1518, 1518, 1480, 1518, 1518, 1480, 1480, 1480,
- 1518, 1518, 1480, 1480, 1518, 1480, 1480, 1518,
-
- 1518, 1518, 1481, 1480, 1481, 1481, 1481, 1481,
- 1480, 1480, 1518, 1480, 1480, 1480, 1480, 1480,
- 1480, 1518, 1518, 1518, 1518, 1518, 1480, 1518,
- 1518, 1520, 1518, 1480, 1480, 1518, 1518, 1518,
-
- 1521, 1473, 1473, 1473, 1473, 1481, 51, 51,
- 1522, 1473, 1523, 1523, 1513, 1513, 51, 51,
+ 1506, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 1481, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 1506, 51, 1506, 51,
+ 51, 51, 51, 1506, 1506, 1506, 51, 1505,
+ 51, 51, 51, 1546, 1546, 1546, 1546, 1547,
+
+ 1547, 51, 1548, 1548, 1498, 51, 51, 51,
+ 1549, 1550, 1549, 1550, 1549, 1550, 1549, 1550,
+ 1549, 1550, 1549, 1550, 1549, 1550, 1551, 1552,
+ 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
+
+ 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558,
+ 1559, 1560, 1551, 1552, 1553, 1554, 1555, 1556,
+ 1557, 1558, 1559, 1560, 51, 1506, 1506, 1506,
51, 51, 51, 51, 51, 51, 51, 51,
51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 1481, 51, 1481, 51,
- 51, 51, 51, 1481, 1481, 1481, 51, 1480,
- 51, 51, 51, 1524, 1524, 1524, 1524, 1525,
-
- 1525, 51, 1526, 1526, 1522, 51, 51, 51,
- 1527, 1528, 1527, 1528, 1527, 1528, 1527, 1528,
- 1527, 1528, 1527, 1528, 1527, 1528, 1529, 1530,
- 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538,
-
- 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
- 1537, 1538, 1529, 1530, 1531, 1532, 1533, 1534,
- 1535, 1536, 1537, 1538, 51, 1481, 1481, 1481,
51, 51, 51, 51, 51, 51, 51, 51,
-
- 51, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 51,
- 1481, 51, 51, 51, 51, 51, 51, 51,
- 51, 51, 51, 51, 51, 51, 51, 1481,
-
- 1539, 1539, 1539, 1540, 1541, 1542, 1543, 1479,
- 1544, 1545, 1479, 1546, 1547, 1548, 1549, 1549,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1372,
-
- 1372, 1372, 1550, 1551, 1550, 1551, 1527, 1528,
- 1527, 1528, 1527, 1528, 1552, 1553, 1552, 1553,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
- 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1527, 1528, 1527, 1528, 1527,
- 1528, 1527, 1528, 1527, 1528, 1555, 1556, 1557,
- 1558, 1527, 1528, 1527, 1528, 1527, 1528, 1527,
- 1528, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1559, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1550, 1551, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1550,
- 1551, 1550, 1551, 1372, 1550, 1551, 1372, 1372,
- 1527, 1528, 1527, 1528, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1560, 1372, 1372,
- 1550, 1551, 1372, 1372, 1527, 1528, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1439, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
-
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
- 1372, 1372, 1372, 1372, 1439, 1439, 1439, 1372,
- 1372, 1550, 1551, 1372, 1372, 1550, 1551, 1550,
-
- 1551, 1550, 1551, 1550, 1551, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1372, 1372, 1372,
- 1372, 1550, 1551, 1550, 1551, 1550, 1551, 1550,
- 1551, 1550, 1551, 1550, 1551, 1372, 1372, 1372,
-
- 1372, 1550, 1551, 1372, 1372, 1372, 1550, 1551,
- 1550, 1551, 1550, 1551, 1550, 1551, 1372, 1550,
- 1551, 1372, 1372, 1550, 1551, 1372, 1372, 1372,
- 1372, 1372, 1372, 1550, 1551, 1550, 1551, 1550,
-
- 1551, 1550, 1551, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1372, 1550, 1551, 1550,
- 1551, 1550, 1551, 1550, 1551, 1550, 1551, 1372,
- 1372, 1372, 1372, 1372, 1561, 1372, 1562, 1372,
-
- 1372, 1372, 1372, 1563, 1564, 1563, 1372, 1372,
- 1372, 1372, 1372, 1372, 1550, 1551, 1372, 1372,
- 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1550,
- 1551, 1550, 1551, 1372, 1372, 1372, 1372, 1372,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1441, 1441,
- 1441, 1441, 1441, 1441, 1442, 1442, 1442, 1442,
- 1442, 1442, 1442, 1516, 1516, 1516, 1516, 1516,
-
- 1442, 1442, 1442, 1442, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
- 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
- 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-
- 1547, 1547, 1547, 1547, 1547, 1516, 1516, 1547,
- 1547, 1547, 1547, 1547, 1547, 1483, 1483, 1483,
- 1516, 1516, 1516, 1516, 1516, 1480, 1480, 1480,
- 1480, 1480, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 201, 201, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 201, 201,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 201, 201, 201, 1483, 1483, 1483,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 201, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1485, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 1450, 1450, 1450, 1450,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
-
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 1565,
- 1565, 1565, 1565, 1565, 1565, 1565, 1565, 201,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
-
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 1566,
- 1566, 1566, 1566, 1566, 1566, 1566, 1566, 201,
-
- 127, 123, 1567, 1568, 1569, 1570, 1571, 127,
- 123, 127, 123, 127, 123, 1572, 1573, 1574,
- 1575, 1214, 1216, 1217, 1576, 127, 123, 1576,
- 1214, 1214, 1214, 1214, 1577, 1577, 1578, 1579,
-
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
- 1580, 1581, 1580, 1581, 1580, 1581, 1580, 1581,
-
- 1580, 1581, 1580, 1581, 1582, 1583, 1583, 1583,
- 1583, 1583, 1583, 1584, 1585, 1584, 1585, 1586,
- 1586, 1586, 1587, 1588, 201, 201, 201, 201,
- 201, 1589, 1590, 1590, 1590, 1591, 1589, 1590,
-
- 1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+ 1506, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 1506,
+
+ 1561, 1561, 1561, 1562, 1563, 1564, 1565, 1504,
+ 1566, 1567, 1504, 1568, 1569, 1570, 1571, 1571,
+ 1389, 1389, 1389, 1389, 1389, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1574, 1572, 1573, 1389,
+
+ 1389, 1389, 1572, 1573, 1572, 1573, 1549, 1550,
+ 1549, 1550, 1549, 1550, 1575, 1576, 1575, 1576,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+ 1577, 1577, 1577, 1577, 1577, 1577, 1577, 1577,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1549, 1550, 1549, 1550, 1549,
+ 1550, 1549, 1550, 1549, 1550, 1578, 1579, 1580,
+ 1581, 1549, 1550, 1549, 1550, 1549, 1550, 1549,
+ 1550, 1389, 1389, 1582, 1389, 1389, 1389, 1389,
+
+ 1583, 1389, 1389, 1584, 1572, 1573, 1389, 1389,
+ 1572, 1573, 1572, 1573, 1572, 1573, 1572, 1573,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1585, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1572, 1573, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1572,
+ 1573, 1572, 1573, 1389, 1572, 1573, 1389, 1389,
+ 1549, 1550, 1549, 1550, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1572, 1573, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1586, 1389, 1389,
+ 1572, 1573, 1389, 1389, 1549, 1550, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1456, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1572, 1573, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+
+ 1389, 1389, 1389, 1389, 1572, 1573, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1456, 1456, 1456, 1389,
+ 1389, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1389, 1389, 1389, 1572, 1573,
+ 1572, 1573, 1572, 1573, 1572, 1573, 1389, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1572,
+ 1573, 1572, 1573, 1572, 1573, 1572, 1573, 1389,
+ 1389, 1389, 1389, 1389, 1587, 1389, 1588, 1389,
+
+ 1389, 1389, 1389, 1589, 1590, 1589, 1389, 1389,
+ 1389, 1389, 1389, 1389, 1572, 1573, 1591, 1389,
+ 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1572,
+ 1573, 1572, 1573, 1389, 1389, 1389, 1389, 1389,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1458, 1458,
+ 1458, 1458, 1458, 1458, 1459, 1459, 1459, 1459,
+ 1459, 1459, 1459, 1539, 1539, 1539, 1539, 1539,
+
+ 1459, 1459, 1459, 1459, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
+ 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
+ 1569, 1569, 1569, 1569, 1569, 1569, 1569, 1569,
+
+ 1569, 1569, 1569, 1569, 1569, 1539, 1539, 1569,
+ 1569, 1569, 1569, 1569, 1569, 1508, 1508, 1508,
+ 1539, 1539, 1539, 1539, 1539, 1505, 1505, 1505,
+ 1505, 1505, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 202, 202, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 202, 202,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1592, 1592, 1592, 1508, 1508, 1508,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1593, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1510, 1592, 1592, 1592, 1592, 1592,
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
+ 1592, 1592, 1592, 1592, 1467, 1467, 1467, 1467,
1592, 1592, 1592, 1592, 1592, 1592, 1592, 1592,
-
- 1592, 1592, 1592, 1592, 1592, 1592, 201, 1593,
- 201, 201, 201, 201, 201, 1593, 201, 201,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
-
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
- 1594, 1594, 1594, 1594, 1594, 1594, 1594, 1594,
-
- 1594, 1594, 1594, 1594, 1594, 1594, 1595, 1595,
- 201, 201, 201, 201, 201, 201, 201, 1596,
- 1597, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1598,
-
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 854,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
- 854, 854, 854, 854, 854, 854, 854, 201,
-
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
- 266, 266, 266, 266, 266, 266, 266, 266,
-
- 1599, 1599, 1600, 1601, 1600, 1601, 1599, 1599,
- 1599, 1600, 1601, 1599, 1600, 1601, 1376, 1376,
- 1376, 1376, 1376, 1376, 1376, 1376, 1375, 1602,
- 1603, 1604, 1605, 1606, 1600, 1601, 1606, 1606,
-
- 1607, 1608, 1552, 1553, 1552, 1553, 1552, 1553,
- 1552, 1553, 1604, 1604, 1604, 1604, 1609, 1610,
- 1604, 1611, 1612, 1613, 1613, 1612, 1612, 1612,
- 1612, 1612, 1614, 1614, 1615, 1616, 1616, 1617,
-
- 1618, 1616, 1619, 1620, 1620, 1621, 1621, 1621,
- 1621, 1621, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 201, 1622, 1622, 1622, 1622, 1623,
+ 1592, 1592, 1592, 1592, 1592, 1592, 1594, 1593,
+
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 1595,
+ 1595, 1595, 1595, 1595, 1595, 1595, 1595, 202,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596,
+ 1596, 1596, 1596, 1596, 1596, 1596, 1596, 202,
+
+ 127, 123, 1597, 1598, 1599, 1600, 1601, 127,
+ 123, 127, 123, 127, 123, 1602, 1603, 1604,
+ 1605, 1231, 1233, 1234, 1606, 127, 123, 1606,
+ 1231, 1231, 1231, 1231, 1607, 1607, 1608, 1609,
+
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+ 1610, 1611, 1610, 1611, 1610, 1611, 1610, 1611,
+
+ 1610, 1611, 1610, 1611, 1612, 1613, 1613, 1613,
+ 1613, 1613, 1613, 1614, 1615, 1614, 1615, 1616,
+ 1616, 1616, 1617, 1618, 202, 202, 202, 202,
+ 202, 1619, 1620, 1620, 1620, 1621, 1619, 1620,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1622, 1622, 1622, 1622, 1622,
- 1622, 1622, 1622, 1623, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1622, 1622, 1622, 1622, 1622, 1622, 202, 1623,
+ 202, 202, 202, 202, 202, 1623, 202, 202,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 1623, 1623,
- 1623, 1623, 1623, 1623, 1623, 1623, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1624, 1624, 1624, 1624, 1624, 1624, 1625, 1625,
+ 202, 202, 202, 202, 202, 202, 202, 1626,
+ 1627, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1628,
+
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 868,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+ 868, 868, 868, 868, 868, 868, 868, 202,
+
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+ 267, 267, 267, 267, 267, 267, 267, 267,
+
+ 1629, 1629, 1630, 1631, 1630, 1631, 1629, 1629,
+ 1629, 1630, 1631, 1629, 1630, 1631, 1393, 1393,
+ 1393, 1393, 1393, 1393, 1393, 1393, 1392, 1632,
+ 1633, 1634, 1635, 1636, 1630, 1631, 1636, 1636,
+
+ 1637, 1638, 1575, 1576, 1575, 1576, 1575, 1576,
+ 1575, 1576, 1634, 1634, 1634, 1634, 1639, 1640,
+ 1634, 1641, 1642, 1643, 1643, 1642, 1642, 1642,
+ 1642, 1642, 1644, 1644, 1645, 1646, 1646, 1647,
+
+ 1648, 1646, 1649, 1650, 1650, 1651, 1651, 1651,
+ 1651, 1651, 1652, 1653, 1652, 1653, 1652, 1654,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 202, 1655, 1655, 1655, 1655, 1656,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655,
+ 1655, 1655, 1655, 1656, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656,
+ 1656, 1656, 1656, 1656, 1656, 1656, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1657, 1657, 1657, 1657, 1657, 1657, 1657, 1657,
+ 1657, 1657, 1657, 1657, 202, 202, 202, 202,
+
+ 1347, 1658, 1659, 1660, 1498, 1661, 1662, 1663,
+ 16, 1384, 16, 1384, 16, 1384, 16, 1384,
+ 16, 1384, 1498, 1498, 16, 1384, 16, 1384,
+ 16, 1384, 16, 1384, 1664, 1362, 1665, 1665,
+
+ 1498, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
+ 1663, 1663, 1666, 1667, 174, 1668, 1669, 1669,
+ 1670, 1671, 1671, 1671, 1671, 1672, 1673, 1498,
+ 1674, 1674, 1674, 1675, 1676, 1677, 1657, 1498,
+
+ 202, 1678, 1679, 1678, 1679, 1678, 1679, 1678,
+ 1679, 1678, 1679, 1679, 1680, 1679, 1680, 1679,
+ 1680, 1679, 1680, 1679, 1680, 1679, 1680, 1679,
+ 1680, 1679, 1680, 1679, 1680, 1679, 1680, 1679,
+
+ 1680, 1679, 1680, 1678, 1679, 1680, 1679, 1680,
+ 1679, 1680, 1679, 1679, 1679, 1679, 1679, 1679,
+ 1680, 1680, 1679, 1680, 1680, 1679, 1680, 1680,
+ 1679, 1680, 1680, 1679, 1680, 1680, 1679, 1679,
+
+ 1679, 1679, 1679, 1678, 1679, 1678, 1679, 1678,
+ 1679, 1679, 1679, 1679, 1679, 1679, 1678, 1679,
+ 1679, 1679, 1679, 1679, 1680, 1681, 1681, 202,
+ 202, 1682, 1682, 1683, 1683, 1684, 1685, 1686,
+
+ 1687, 1688, 1689, 1688, 1689, 1688, 1689, 1688,
+ 1689, 1688, 1689, 1689, 1690, 1689, 1690, 1689,
+ 1690, 1689, 1690, 1689, 1690, 1689, 1690, 1689,
+ 1690, 1689, 1690, 1689, 1690, 1689, 1690, 1689,
+
+ 1690, 1689, 1690, 1688, 1689, 1690, 1689, 1690,
+ 1689, 1690, 1689, 1689, 1689, 1689, 1689, 1689,
+ 1690, 1690, 1689, 1690, 1690, 1689, 1690, 1690,
+ 1689, 1690, 1690, 1689, 1690, 1690, 1689, 1689,
+
+ 1689, 1689, 1689, 1688, 1689, 1688, 1689, 1688,
+ 1689, 1689, 1689, 1689, 1689, 1689, 1688, 1689,
+ 1689, 1689, 1689, 1689, 1690, 1688, 1688, 1690,
+ 1690, 1690, 1690, 1691, 1692, 1693, 1694, 1695,
+
+ 202, 202, 202, 202, 202, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+
+ 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696,
+ 1696, 1696, 1696, 1696, 1696, 1697, 1698, 1699,
+ 202, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 202,
+ 1701, 1701, 1702, 1702, 1702, 1702, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704,
+ 1705, 1705, 1705, 202, 202, 202, 202, 202,
+
+ 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
+ 1537, 1537, 1537, 1537, 1537, 1537, 1537, 1537,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+
+ 1542, 1542, 1542, 1542, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
+ 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
+
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1708, 1708, 202,
+
+ 1702, 1702, 1702, 1702, 1702, 1702, 1702, 1702,
+ 1702, 1702, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1709, 1709, 1709, 1709,
+ 1710, 1710, 1710, 1710, 1710, 1710, 1710, 1710,
+ 1711, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707,
+ 1707, 1707, 1707, 1707, 1708, 1708, 1713, 1701,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+ 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1711, 1711, 1711, 1711,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1715,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1714, 1714, 1714, 1714, 1714, 1714, 1714, 1714,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1711,
+ 1711, 1711, 1711, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1711, 1711,
+
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1703,
+ 1703, 1703, 1703, 1703, 1703, 1703, 1703, 1711,
+
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1716, 1716,
+ 1716, 1716, 1716, 1716, 1716, 1716, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+ 1718, 1718, 1718, 1718, 1718, 1718, 1718, 1718,
+
+ 1718, 1718, 1718, 1718, 1718, 1718, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1719, 1719, 1719, 1719,
+ 1719, 1719, 1719, 1719, 1720, 1720, 1720, 1720,
+
+ 1720, 1720, 1720, 1720, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1722, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1725, 1725, 1725, 1725, 1725,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
- 1624, 1624, 1624, 1624, 201, 201, 201, 201,
-
- 1330, 1625, 1626, 1627, 1473, 1628, 1629, 1630,
- 16, 1367, 16, 1367, 16, 1367, 16, 1367,
- 16, 1367, 1473, 1473, 16, 1367, 16, 1367,
- 16, 1367, 16, 1367, 1631, 1345, 1632, 1632,
-
- 1473, 1630, 1630, 1630, 1630, 1630, 1630, 1630,
- 1630, 1630, 1633, 1634, 173, 1635, 1636, 1636,
- 1637, 1638, 1638, 1638, 1638, 1639, 1640, 1473,
- 1641, 1641, 1641, 1642, 1643, 1644, 1624, 1473,
-
- 201, 1645, 1646, 1645, 1646, 1645, 1646, 1645,
- 1646, 1645, 1646, 1646, 1647, 1646, 1647, 1646,
- 1647, 1646, 1647, 1646, 1647, 1646, 1647, 1646,
- 1647, 1646, 1647, 1646, 1647, 1646, 1647, 1646,
-
- 1647, 1646, 1647, 1645, 1646, 1647, 1646, 1647,
- 1646, 1647, 1646, 1646, 1646, 1646, 1646, 1646,
- 1647, 1647, 1646, 1647, 1647, 1646, 1647, 1647,
- 1646, 1647, 1647, 1646, 1647, 1647, 1646, 1646,
-
- 1646, 1646, 1646, 1645, 1646, 1645, 1646, 1645,
- 1646, 1646, 1646, 1646, 1646, 1646, 1645, 1646,
- 1646, 1646, 1646, 1646, 1647, 1648, 1648, 201,
- 201, 1649, 1649, 1650, 1650, 1651, 1652, 1653,
-
- 1654, 1655, 1656, 1655, 1656, 1655, 1656, 1655,
- 1656, 1655, 1656, 1656, 1657, 1656, 1657, 1656,
- 1657, 1656, 1657, 1656, 1657, 1656, 1657, 1656,
- 1657, 1656, 1657, 1656, 1657, 1656, 1657, 1656,
-
- 1657, 1656, 1657, 1655, 1656, 1657, 1656, 1657,
- 1656, 1657, 1656, 1656, 1656, 1656, 1656, 1656,
- 1657, 1657, 1656, 1657, 1657, 1656, 1657, 1657,
- 1656, 1657, 1657, 1656, 1657, 1657, 1656, 1656,
-
- 1656, 1656, 1656, 1655, 1656, 1655, 1656, 1655,
- 1656, 1656, 1656, 1656, 1656, 1656, 1655, 1656,
- 1656, 1656, 1656, 1656, 1657, 1655, 1655, 1657,
- 1657, 1657, 1657, 1658, 1659, 1660, 1661, 1662,
-
- 201, 201, 201, 201, 201, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
-
- 1663, 1663, 1663, 1663, 1663, 1663, 1663, 1663,
- 1663, 1663, 1663, 1663, 1663, 1664, 1665, 201,
- 201, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 201,
- 1667, 1667, 1668, 1668, 1668, 1668, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1670, 1670, 1670, 1670, 1670, 1670, 1670, 1670,
- 1671, 1671, 1671, 201, 201, 201, 201, 201,
-
- 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512,
- 1512, 1512, 1512, 1512, 1512, 1512, 1512, 1512,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
-
- 1519, 1519, 1519, 1519, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
- 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
-
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1674, 1674, 201,
-
- 1668, 1668, 1668, 1668, 1668, 1668, 1668, 1668,
- 1668, 1668, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1675, 1675, 1675, 1675,
- 1676, 1676, 1676, 1676, 1676, 1676, 1676, 1676,
- 1677, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
- 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
-
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1673, 1673, 1673, 1673,
- 1673, 1673, 1673, 1673, 1674, 1674, 1679, 1667,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
- 1678, 1678, 1678, 1678, 1678, 1678, 1678, 1678,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1677, 1677, 1677, 1677,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 201,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
-
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1680, 1680, 1680, 1680, 1680, 1680, 1680, 1680,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1677,
- 1677, 1677, 1677, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1677, 1677,
-
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1669,
- 1669, 1669, 1669, 1669, 1669, 1669, 1669, 1677,
-
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
-
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
- 1681, 1681, 1681, 1681, 1681, 1681, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
-
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
- 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683,
-
- 1683, 1683, 1683, 1683, 1683, 1683, 1684, 1684,
- 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684,
- 1684, 1684, 1684, 1684, 1685, 1685, 1685, 1685,
-
- 1685, 1685, 1685, 1685, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1687, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1691, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
-
- 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690,
- 1690, 1690, 1690, 1690, 1690, 201, 201, 201,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
-
- 1692, 1692, 1693, 1693, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1693, 1692, 1692, 1692,
- 1692, 1692, 1692, 1692, 1692, 1692, 1692, 1692,
-
- 1692, 1693, 1692, 1692, 1692, 1693, 1692, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
-
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694,
- 1695, 1695, 1695, 1695, 1695, 1695, 1696, 1697,
-
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
-
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1699, 1700, 1701, 1702,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
- 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
-
- 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
- 1711, 1712, 1698, 1698, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
-
- 284, 285, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 1713, 266,
- 1714, 1714, 1714, 1715, 1716, 1716, 1716, 1716,
- 1716, 1716, 1716, 1716, 266, 266, 1715, 1717,
-
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 280, 281, 280, 281, 280, 281, 280, 281,
- 286, 287, 286, 287, 1718, 1718, 1719, 1716,
-
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
- 1720, 1720, 1720, 1720, 1720, 1720, 1720, 1720,
-
- 1720, 1720, 1720, 1720, 1720, 1720, 1721, 1721,
- 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
- 1722, 1722, 1723, 1724, 1725, 1725, 1725, 1724,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1727, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
- 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1727,
- 1727, 1727, 1727, 1610, 1610, 1610, 1610, 1610,
-
- 1728, 1728, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1214, 1214, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1577, 1214, 1214, 1214, 1214, 1214, 1214, 1214,
- 1214, 1216, 1217, 1216, 1217, 1729, 1216, 1217,
-
- 1216, 1217, 1216, 1217, 1216, 1217, 1216, 1217,
- 1610, 1730, 1730, 1216, 1217, 1731, 1732, 1733,
- 1734, 1735, 1736, 1737, 1738, 1738, 1739, 1740,
- 1739, 1740, 1739, 1740, 1739, 1740, 1739, 1740,
-
- 1734, 1735, 1734, 1735, 1734, 1735, 1734, 1735,
- 1734, 1735, 1741, 1742, 1743, 1744, 1745, 201,
- 1746, 1747, 1748, 1749, 1750, 1751, 1750, 1751,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1752,
- 1753, 1753, 1732, 1754, 1754, 1754, 1754, 1754,
-
- 1755, 1755, 1756, 1755, 1755, 1755, 1757, 1755,
- 1755, 1755, 1755, 1756, 1755, 1755, 1755, 1755,
- 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
- 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755,
-
- 1755, 1755, 1755, 1758, 1758, 1756, 1756, 1758,
- 1759, 1759, 1759, 1759, 201, 201, 201, 201,
- 1676, 1676, 1676, 1676, 1676, 1676, 796, 796,
- 1407, 1760, 201, 201, 201, 201, 201, 201,
-
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
-
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1761, 1761, 1761, 1761, 1761, 1761,
- 1761, 1761, 1762, 1763, 1764, 1764, 1765, 1765,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1766, 1766, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
-
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1767, 1767, 1767, 1767,
- 1767, 1767, 1767, 1767, 1766, 1766, 1766, 1766,
- 1766, 1766, 1766, 1766, 1766, 1766, 1766, 1766,
-
- 1766, 1766, 1766, 1766, 1768, 1769, 201, 201,
- 201, 201, 201, 201, 201, 201, 1770, 1770,
- 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
- 1779, 1780, 201, 201, 201, 201, 201, 201,
-
- 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781,
- 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781,
- 1781, 1781, 501, 501, 501, 501, 501, 501,
- 1782, 1782, 1782, 501, 1783, 1784, 201, 201,
-
- 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792,
- 1793, 1794, 1795, 1795, 1795, 1795, 1795, 1795,
- 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795,
- 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795,
-
- 1795, 1795, 1795, 1795, 1795, 1795, 1796, 1796,
- 1796, 1796, 1796, 1797, 1797, 1797, 1798, 1799,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+
+ 1726, 1726, 1726, 1726, 1726, 1726, 1726, 1726,
+ 1726, 1726, 1726, 1726, 1726, 202, 202, 202,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+
+ 1728, 1728, 1729, 1729, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1729, 1728, 1728, 1728,
+ 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
+
+ 1728, 1729, 1728, 1728, 1728, 1729, 1728, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730,
+ 1731, 1731, 1731, 1731, 1731, 1731, 1732, 1733,
+
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1735, 1736, 1737, 1738,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+ 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734,
+
+ 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746,
+ 1747, 1748, 1734, 1734, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+
+ 285, 286, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 1749, 267,
+ 1750, 1750, 1750, 1751, 1752, 1752, 1752, 1752,
+ 1752, 1752, 1752, 1752, 267, 267, 1751, 1753,
+
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 281, 282, 281, 282, 281, 282, 281, 282,
+ 287, 288, 287, 288, 1754, 1754, 1755, 1752,
+
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+ 1756, 1756, 1756, 1756, 1756, 1756, 1756, 1756,
+
+ 1756, 1756, 1756, 1756, 1756, 1756, 1757, 1757,
+ 1757, 1757, 1757, 1757, 1757, 1757, 1757, 1757,
+ 1758, 1758, 1759, 1760, 1761, 1761, 1761, 1760,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1762,
+ 1762, 1762, 1762, 1762, 1762, 1762, 1762, 1763,
+ 1763, 1763, 1763, 1640, 1640, 1640, 1640, 1640,
+
+ 1764, 1764, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1231, 1231, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1607, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
+ 1231, 1233, 1234, 1233, 1234, 1765, 1233, 1234,
+
+ 1233, 1234, 1233, 1234, 1233, 1234, 1233, 1234,
+ 1640, 1766, 1766, 1233, 1234, 1767, 1768, 1769,
+ 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777,
+ 1776, 1777, 1776, 1777, 1776, 1777, 1776, 1777,
+
+ 1770, 1771, 1770, 1771, 1770, 1771, 1770, 1771,
+ 1770, 1771, 1778, 1779, 1780, 1781, 1782, 1783,
+ 1784, 1785, 1786, 1787, 1788, 1789, 1788, 1789,
+ 1790, 1791, 1792, 1793, 1792, 1793, 1792, 1793,
+
+ 202, 202, 1792, 1793, 1794, 1795, 1796, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1797,
+ 1798, 1798, 1768, 1799, 1799, 1799, 1799, 1799,
+
+ 1800, 1800, 1801, 1800, 1800, 1800, 1802, 1800,
+ 1800, 1800, 1800, 1801, 1800, 1800, 1800, 1800,
1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800,
- 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1801,
- 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801,
- 1801, 1801, 1802, 1803, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 1804,
-
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 846, 846, 846,
- 846, 846, 846, 846, 846, 201, 201, 201,
-
- 1805, 1805, 1805, 1806, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
-
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1807, 1807, 1807, 1807, 1807,
- 1807, 1807, 1807, 1808, 1806, 1806, 1805, 1805,
- 1805, 1805, 1806, 1806, 1805, 1806, 1806, 1806,
-
- 1809, 1810, 1810, 1810, 1810, 1810, 1810, 1811,
- 1812, 1812, 1810, 1810, 1810, 1810, 201, 1813,
- 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821,
- 1822, 1823, 201, 201, 201, 201, 1810, 1810,
-
- 1824, 1824, 1824, 1824, 1824, 1825, 1826, 1824,
- 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824,
- 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
- 1835, 1836, 1824, 1824, 1824, 1824, 1824, 201,
-
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
-
- 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837,
- 1837, 1838, 1838, 1838, 1838, 1838, 1838, 1839,
- 1839, 1838, 1838, 1839, 1839, 1838, 1838, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1837, 1837, 1837, 1838, 1837, 1837, 1837, 1837,
- 1837, 1837, 1837, 1837, 1838, 1839, 201, 201,
- 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847,
- 1848, 1849, 201, 201, 1850, 1851, 1851, 1851,
-
- 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
- 1852, 1852, 1852, 1852, 1852, 1852, 1852, 1852,
- 1853, 1852, 1852, 1852, 1852, 1852, 1852, 1854,
- 1854, 1854, 1852, 834, 1825, 1855, 1824, 1824,
-
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
-
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856,
- 1857, 1856, 1857, 1857, 1858, 1856, 1856, 1857,
- 1857, 1856, 1856, 1856, 1856, 1856, 1857, 1857,
-
- 1856, 1857, 1856, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 1856, 1856, 1859, 1860, 1860,
-
- 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
- 1861, 1861, 1861, 1862, 1863, 1863, 1862, 1862,
- 1864, 1864, 1861, 1865, 1865, 1862, 1866, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1867, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 1867, 1867, 1867, 1867, 1867, 1867, 1867, 201,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
-
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1738, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1868, 1738, 1738, 1738, 1738,
- 1738, 1738, 1738, 1869, 1870, 1870, 1870, 1870,
-
- 1871, 1871, 1871, 1871, 1738, 1872, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880,
- 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888,
-
- 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896,
- 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904,
- 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
- 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920,
-
+ 1800, 1800, 1800, 1803, 1803, 1801, 1801, 1803,
+ 1804, 1804, 1804, 1804, 202, 202, 202, 202,
+ 1710, 1710, 1710, 1710, 1710, 1710, 810, 810,
+ 1424, 1805, 202, 202, 202, 202, 202, 202,
+
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1806, 1806, 1806, 1806, 1806, 1806,
+ 1806, 1806, 1807, 1808, 1809, 1809, 1810, 1810,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1811, 1811, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1812, 1812, 1812, 1812,
+ 1812, 1812, 1812, 1812, 1811, 1811, 1811, 1811,
+ 1811, 1811, 1811, 1811, 1811, 1811, 1811, 1811,
+
+ 1811, 1811, 1811, 1811, 1813, 1814, 202, 202,
+ 202, 202, 202, 202, 202, 202, 1815, 1815,
+ 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
+ 1824, 1825, 202, 202, 202, 202, 202, 202,
+
+ 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+ 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+ 1826, 1826, 508, 508, 508, 508, 508, 508,
+ 1827, 1827, 1827, 508, 1828, 1829, 1830, 1831,
+
+ 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
+ 1840, 1841, 1842, 1842, 1842, 1842, 1842, 1842,
+ 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
+ 1842, 1842, 1842, 1842, 1842, 1842, 1842, 1842,
+
+ 1842, 1842, 1842, 1842, 1842, 1842, 1843, 1843,
+ 1843, 1843, 1843, 1844, 1844, 1844, 1845, 1846,
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
+
+ 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1848,
+ 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+ 1848, 1848, 1849, 1850, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 1851,
+
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 860, 860, 860,
+ 860, 860, 860, 860, 860, 202, 202, 202,
+
+ 1852, 1852, 1852, 1853, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1854, 1854, 1854, 1854, 1854,
+ 1854, 1854, 1854, 1855, 1853, 1853, 1852, 1852,
+ 1852, 1852, 1853, 1853, 1852, 1852, 1853, 1853,
+
+ 1856, 1857, 1857, 1857, 1857, 1857, 1857, 1858,
+ 1859, 1859, 1857, 1857, 1857, 1857, 202, 1860,
+ 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868,
+ 1869, 1870, 202, 202, 202, 202, 1857, 1857,
+
+ 1871, 1871, 1871, 1871, 1871, 1872, 1873, 1871,
+ 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
+ 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881,
+ 1882, 1883, 1871, 1871, 1871, 1871, 1871, 202,
+
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+
+ 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884,
+ 1884, 1885, 1885, 1885, 1885, 1885, 1885, 1886,
+ 1886, 1885, 1885, 1886, 1886, 1885, 1885, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1884, 1884, 1884, 1885, 1884, 1884, 1884, 1884,
+ 1884, 1884, 1884, 1884, 1885, 1886, 202, 202,
+ 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894,
+ 1895, 1896, 202, 202, 1897, 1898, 1898, 1898,
+
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1899, 1899, 1899, 1899, 1899, 1899, 1899, 1899,
+ 1900, 1899, 1899, 1899, 1899, 1899, 1899, 1901,
+ 1901, 1901, 1899, 848, 1872, 1902, 1871, 1871,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+ 1904, 1903, 1904, 1904, 1905, 1903, 1903, 1904,
+ 1904, 1903, 1903, 1903, 1903, 1903, 1904, 1904,
+
+ 1903, 1904, 1903, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 1903, 1903, 1906, 1907, 1907,
+
+ 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908,
+ 1908, 1908, 1908, 1909, 1910, 1910, 1909, 1909,
+ 1911, 1911, 1908, 1912, 1912, 1909, 1913, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 1914, 1914, 1914, 1914, 1914, 1914, 1914, 202,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1775, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1915, 1775, 1775, 1775, 1775,
+ 1775, 1775, 1775, 1916, 1917, 1917, 1917, 1917,
+
+ 1918, 1918, 1918, 1918, 1775, 1919, 1920, 1920,
+ 202, 202, 202, 202, 202, 202, 202, 202,
1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928,
1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936,
+
1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944,
1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952,
-
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
- 1953, 1953, 1953, 1953, 1953, 1953, 1953, 1953,
-
- 1953, 1953, 1953, 1954, 1954, 1955, 1954, 1954,
- 1955, 1954, 1954, 1956, 1954, 1957, 201, 201,
- 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965,
- 1966, 1967, 201, 201, 201, 201, 201, 201,
-
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1968, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 1968, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
- 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969,
-
- 1969, 1969, 1969, 1969, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 849, 849, 849, 849, 849, 849, 849, 849,
- 849, 849, 849, 849, 849, 849, 849, 849,
-
- 849, 849, 849, 849, 849, 849, 849, 201,
- 201, 201, 201, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
-
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 852, 852, 852, 852,
- 852, 852, 852, 852, 201, 201, 201, 201,
-
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
- 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
-
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
- 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971,
-
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
-
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1683, 1683,
- 1972, 1683, 1972, 1683, 1683, 1972, 1972, 1972,
- 1972, 1972, 1972, 1972, 1972, 1972, 1972, 1683,
-
- 1972, 1683, 1972, 1683, 1683, 1972, 1972, 1683,
- 1683, 1683, 1972, 1972, 1972, 1972, 1973, 1973,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
-
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
-
- 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974,
- 1974, 1974, 1974, 1975, 1975, 1975, 1682, 1682,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
-
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
-
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1976, 1976, 1976, 1976, 1976, 1976,
- 1976, 1976, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1977, 1978, 1979, 1980, 1981, 1982, 1982, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 1983, 1984, 1985, 1986, 1987,
- 201, 201, 201, 201, 201, 1988, 1989, 1990,
-
- 1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991,
- 1991, 1992, 1990, 1990, 1990, 1990, 1990, 1990,
- 1990, 1990, 1990, 1990, 1990, 1990, 1990, 298,
- 1990, 1990, 1990, 1990, 1990, 298, 1990, 298,
-
- 1990, 1990, 298, 1990, 1990, 298, 1990, 1990,
- 1990, 1990, 1990, 1990, 1990, 1990, 1990, 1991,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1994, 1994, 1994, 1994, 1994, 1994,
- 1994, 1994, 1994, 1994, 1994, 1994, 1994, 1994,
-
- 1994, 1994, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1632, 1345,
-
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 344, 344, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
-
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1995, 1995, 1995, 1995, 1995, 1995, 1995, 1995,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1996, 336, 344, 344,
-
- 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997,
- 1997, 1997, 1997, 1997, 1997, 1997, 1997, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2003, 2004,
- 2005, 2006, 201, 201, 201, 201, 201, 201,
-
- 172, 172, 172, 172, 1198, 1198, 1198, 1089,
- 1089, 1089, 1089, 1089, 1089, 1089, 1719, 1719,
- 2007, 2008, 2008, 2009, 2009, 2010, 2011, 2010,
- 2011, 2010, 2011, 2010, 2011, 2010, 2011, 2010,
-
- 2011, 2010, 2011, 2010, 2011, 1644, 1644, 2012,
- 2013, 2007, 2007, 2007, 2007, 2009, 2009, 2009,
- 2014, 2015, 2016, 201, 2017, 2018, 2019, 2019,
- 2008, 1398, 1399, 1398, 1399, 1398, 1399, 2020,
-
- 2007, 2007, 2021, 2022, 2023, 2024, 2025, 201,
- 2007, 1401, 1359, 2007, 201, 201, 201, 201,
- 1993, 1993, 1993, 2026, 1993, 344, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
-
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993,
- 1993, 1993, 1993, 1993, 1993, 344, 344, 2027,
-
- 201, 2019, 2007, 2020, 1401, 1359, 2007, 2028,
- 1398, 1399, 2007, 2021, 2014, 2022, 2016, 2029,
- 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037,
- 2038, 2039, 2018, 2017, 2040, 2025, 2041, 2019,
-
- 2007, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
- 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
+ 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960,
+ 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968,
+
+ 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
+ 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
+ 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
+ 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+ 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001,
+
+ 2001, 2001, 2001, 2002, 2002, 2003, 2002, 2002,
+ 2003, 2002, 2002, 2004, 2002, 2005, 202, 202,
+ 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
+ 2014, 2015, 202, 202, 202, 202, 202, 202,
+
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2016, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 2016, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+ 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017,
+
+ 2017, 2017, 2017, 2017, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 863, 863, 863, 863, 863, 863, 863, 863,
+ 863, 863, 863, 863, 863, 863, 863, 863,
+
+ 863, 863, 863, 863, 863, 863, 863, 202,
+ 202, 202, 202, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 866, 866, 866, 866,
+ 866, 866, 866, 866, 202, 202, 202, 202,
+
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+ 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018,
+
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+ 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019,
+
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 1718, 1718,
+ 2020, 1718, 2020, 1718, 1718, 2020, 2020, 2020,
+ 2020, 2020, 2020, 2020, 2020, 2020, 2020, 1718,
+
+ 2020, 1718, 2020, 1718, 1718, 2020, 2020, 1718,
+ 1718, 1718, 2020, 2020, 2020, 2020, 2021, 2021,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+
+ 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022,
+ 2022, 2022, 2022, 2023, 2023, 2023, 1717, 1717,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024,
+ 2024, 2024, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2025, 2026, 2027, 2028, 2029, 2030, 2030, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 2031, 2032, 2033, 2034, 2035,
+ 202, 202, 202, 202, 202, 2036, 2037, 2038,
+
+ 2039, 2039, 2039, 2039, 2039, 2039, 2039, 2039,
+ 2039, 2040, 2038, 2038, 2038, 2038, 2038, 2038,
+ 2038, 2038, 2038, 2038, 2038, 2038, 2038, 301,
+ 2038, 2038, 2038, 2038, 2038, 301, 2038, 301,
+
+ 2038, 2038, 301, 2038, 2038, 301, 2038, 2038,
+ 2038, 2038, 2038, 2038, 2038, 2038, 2038, 2039,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2042, 2042, 2042, 2042, 2042, 2042,
2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
- 2042, 2042, 2042, 2043, 2007, 2044, 2045, 2009,
-
- 2045, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046,
- 2046, 2046, 2046, 2043, 2025, 2044, 2025, 2047,
-
- 2048, 2049, 1398, 1399, 2050, 2051, 2052, 2053,
- 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
- 2054, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
-
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052,
- 2052, 2052, 2052, 2052, 2052, 2052, 2055, 2055,
-
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 1666,
- 1666, 1666, 1666, 1666, 1666, 1666, 1666, 201,
-
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 1666, 1666, 1666,
- 201, 201, 1666, 1666, 1666, 201, 201, 201,
-
- 2056, 1401, 2025, 2045, 1640, 1401, 1401, 201,
- 1422, 1397, 1397, 1397, 1397, 1422, 1422, 201,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 2057, 2057, 2057, 2058, 51, 2059, 2059,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 201, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 201,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 201, 2060, 2060, 201, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 201, 201,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 201, 201,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
-
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 2060, 2060, 2060, 2060, 2060,
- 2060, 2060, 2060, 201, 201, 201, 201, 201,
-
- 2061, 2062, 2061, 201, 201, 201, 201, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
-
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 2063, 2063, 2063, 2063,
- 2063, 2063, 2063, 2063, 201, 201, 201, 2064,
- 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064,
-
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
-
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2065, 2065, 2065,
- 2065, 2065, 2065, 2065, 2065, 2066, 2066, 2066,
- 2066, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
-
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2066, 2068, 2069, 2070, 2070, 201,
- 1516, 1516, 1516, 1516, 1516, 1516, 1516, 1516,
- 1516, 1516, 1516, 1516, 201, 201, 201, 201,
-
- 2069, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
-
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1444, 1444, 1444,
- 1444, 1444, 1444, 1444, 1444, 1201, 201, 201,
-
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 2071, 2071, 2071,
- 2071, 2071, 2071, 2071, 2071, 201, 201, 201,
-
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
-
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 2072, 2072, 2072, 2072, 2072, 2072, 2072,
- 2072, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1089, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073,
- 2073, 2073, 2073, 2073, 201, 201, 201, 201,
-
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074,
- 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2075,
-
- 2076, 2076, 2076, 2076, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 2077, 2077, 2077,
- 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078,
- 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078,
-
- 2078, 2079, 2078, 2078, 2078, 2078, 2078, 2078,
- 2078, 2078, 2079, 201, 201, 201, 201, 201,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
-
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080,
- 2080, 2080, 2080, 2080, 2080, 2080, 2081, 2081,
- 2081, 2081, 2081, 201, 201, 201, 201, 201,
-
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082,
- 2082, 2082, 2082, 2082, 2082, 2082, 201, 2083,
-
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
-
- 2084, 2084, 2084, 2084, 201, 201, 201, 201,
- 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084,
- 2085, 2086, 2086, 2086, 2086, 2086, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
- 2087, 2087, 2087, 2087, 2087, 2087, 2087, 2087,
-
- 2087, 2087, 2087, 2087, 2087, 2087, 2088, 2088,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
-
- 2089, 2089, 2089, 2089, 2089, 2089, 2089, 2089,
- 2089, 2089, 2089, 2089, 2089, 2089, 2090, 2090,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
-
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
- 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
-
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2092,
- 2092, 2092, 2092, 2092, 2092, 2092, 201, 201,
-
- 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100,
- 2101, 2102, 201, 201, 201, 201, 201, 201,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
-
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103,
- 2103, 2103, 2103, 2103, 201, 201, 201, 201,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
-
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 2104, 2104, 2104, 2104,
- 2104, 2104, 2104, 2104, 201, 201, 201, 201,
-
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
-
- 2105, 2105, 2105, 2105, 2105, 2105, 2105, 2105,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
-
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
- 2106, 2106, 2106, 2106, 2106, 2106, 2106, 2106,
-
- 2106, 2106, 2106, 2106, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2107,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+
+ 2042, 2042, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 1665, 1362,
+
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 348, 348, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2043, 2043, 2043, 2043, 2043, 2043, 2043, 2043,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2044, 340, 348, 348,
+
+ 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
+ 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045,
+ 2046, 2047, 2048, 2049, 2050, 2051, 2051, 2052,
+ 2053, 2054, 202, 202, 202, 202, 202, 202,
+
+ 173, 173, 173, 173, 1215, 1215, 1215, 1104,
+ 1104, 1104, 1104, 1104, 1104, 1104, 1755, 1755,
+ 2055, 2056, 2056, 2057, 2057, 2058, 2059, 2058,
+ 2059, 2058, 2059, 2058, 2059, 2058, 2059, 2058,
+
+ 2059, 2058, 2059, 2058, 2059, 1677, 1677, 2060,
+ 2061, 2055, 2055, 2055, 2055, 2057, 2057, 2057,
+ 2062, 2063, 2064, 202, 2065, 2066, 2067, 2067,
+ 2056, 1415, 1416, 1415, 1416, 1415, 1416, 2068,
+
+ 2055, 2055, 2069, 2070, 2071, 2072, 2073, 202,
+ 2055, 1418, 1376, 2055, 202, 202, 202, 202,
+ 2041, 2041, 2041, 2074, 2041, 348, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 2041, 2041, 2041,
+ 2041, 2041, 2041, 2041, 2041, 348, 348, 2075,
+
+ 202, 2067, 2055, 2068, 1418, 1376, 2055, 2076,
+ 1415, 1416, 2055, 2069, 2062, 2070, 2064, 2077,
+ 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085,
+ 2086, 2087, 2066, 2065, 2088, 2073, 2089, 2067,
+
+ 2055, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090,
+ 2090, 2090, 2090, 2091, 2055, 2092, 2093, 2057,
+
+ 2093, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+ 2094, 2094, 2094, 2091, 2073, 2092, 2073, 2095,
+
+ 2096, 2097, 1415, 1416, 2098, 2099, 2100, 2101,
+ 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101,
+ 2102, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2100, 2100,
+ 2100, 2100, 2100, 2100, 2100, 2100, 2103, 2103,
+
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
+ 1700, 1700, 1700, 1700, 1700, 1700, 1700, 202,
+
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 1700, 1700, 1700,
+ 202, 202, 1700, 1700, 1700, 202, 202, 202,
+
+ 2104, 1418, 2073, 2093, 1673, 1418, 1418, 202,
+ 1439, 1414, 1414, 1414, 1414, 1439, 1439, 202,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 2105, 2105, 2105, 2106, 51, 2107, 2107,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 202, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 202,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 202, 2108, 2108, 202, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 202, 202,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 2108, 2108, 2108, 2108, 2108, 2108, 2108, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2108, 2108, 2108, 2108, 2108, 2108, 202, 202,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 2108, 2108, 2108, 2108, 2108, 2108, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2109, 2109, 2109, 2109, 2109, 2109, 298, 298,
- 2109, 298, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
-
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 2109, 2109,
- 2109, 2109, 2109, 2109, 2109, 2109, 298, 2109,
- 2109, 298, 298, 298, 2109, 298, 298, 2109,
-
- 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110,
- 2110, 2110, 2110, 2110, 2110, 2110, 2110, 2110,
- 2110, 2110, 2110, 2110, 2110, 2110, 298, 2111,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 2108, 2108, 2108, 2108, 2108,
+ 2108, 2108, 2108, 202, 202, 202, 202, 202,
+
+ 2109, 2110, 2109, 202, 202, 202, 202, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 2111, 2111, 2111, 2111,
+ 2111, 2111, 2111, 2111, 202, 202, 202, 2112,
2112, 2112, 2112, 2112, 2112, 2112, 2112, 2112,
2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
- 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2114,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2113, 2113, 2113,
+ 2113, 2113, 2113, 2113, 2113, 2114, 2114, 2114,
2114, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 2116,
- 2116, 2116, 2116, 2116, 2116, 2116, 2116, 298,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2114, 2116, 2117, 2118, 2118, 202,
+ 1539, 1539, 1539, 1539, 1539, 1539, 1539, 1539,
+ 1539, 1539, 1539, 1539, 202, 202, 202, 202,
+
+ 2117, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 298, 298, 298, 298, 298, 298, 298, 2117,
- 2117, 2117, 2117, 2117, 2117, 2117, 2117, 2117,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
- 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118,
- 2118, 2118, 2118, 2118, 2118, 2118, 2118, 2118,
- 2118, 2118, 2118, 298, 2118, 2118, 298, 298,
- 298, 298, 298, 2119, 2119, 2119, 2119, 2119,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1461, 1461, 1461,
+ 1461, 1461, 1461, 1461, 1461, 1218, 202, 202,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 2119, 2119, 2119,
+ 2119, 2119, 2119, 2119, 2119, 202, 202, 202,
+
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
- 2120, 2120, 2120, 2120, 2120, 2120, 2121, 2121,
- 2121, 2121, 2122, 2122, 298, 298, 298, 2123,
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+ 2120, 2120, 2120, 2120, 2120, 2120, 2120, 2120,
+ 2120, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 2124, 2124, 2124, 2124, 2124, 2124,
- 2124, 2124, 298, 298, 298, 298, 298, 2125,
+ 1104, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 2121, 2121, 2121, 2121,
+ 2121, 2121, 2121, 2121, 202, 202, 202, 202,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2122,
+ 2122, 2122, 2122, 2122, 2122, 2122, 2122, 2123,
+
+ 2124, 2124, 2124, 2124, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 2125, 2125, 2125,
2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
- 2126, 2126, 2126, 2126, 2126, 2126, 2126, 2126,
-
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 2127, 2127, 2127, 2127, 2127, 2127, 2127, 2127,
- 298, 298, 298, 298, 2128, 2128, 2127, 2127,
+ 2126, 2127, 2126, 2126, 2126, 2126, 2126, 2126,
+ 2126, 2126, 2127, 202, 202, 202, 202, 202,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 298, 298, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
- 2128, 2128, 2128, 2128, 2128, 2128, 2128, 2128,
-
- 2129, 2130, 2130, 2130, 298, 2130, 2130, 298,
- 298, 298, 298, 298, 2130, 2131, 2130, 2132,
- 2129, 2129, 2129, 2129, 298, 2129, 2129, 2129,
- 298, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
-
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 2129, 2129, 2129, 2129,
- 2129, 2129, 2129, 2129, 298, 298, 298, 298,
- 2132, 2133, 2131, 298, 298, 298, 298, 2134,
-
- 2135, 2136, 2137, 2138, 2139, 2139, 2139, 2139,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 2140, 2140, 2140, 2140, 2140, 2140, 2141, 2141,
- 2142, 298, 298, 298, 298, 298, 298, 298,
-
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2143, 2143, 2143,
- 2143, 2143, 2143, 2143, 2143, 2144, 2144, 2145,
-
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2146, 2146, 2146,
- 2146, 2146, 2146, 2146, 2146, 2147, 2147, 2147,
-
- 2148, 2148, 2148, 2148, 2148, 2149, 2150, 2149,
- 2151, 2149, 2149, 2150, 2150, 2152, 2149, 2149,
- 2149, 2149, 2149, 2148, 2148, 2148, 2148, 2152,
- 2148, 2148, 2148, 2148, 2148, 2149, 2148, 2148,
-
- 2148, 2149, 2150, 2150, 2149, 2153, 2154, 298,
- 298, 298, 298, 2155, 2155, 2155, 2155, 2156,
- 2157, 2157, 2157, 2157, 2157, 2157, 2158, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
-
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 2159, 2159,
- 2159, 2159, 2159, 2159, 2159, 2159, 298, 298,
- 298, 2160, 2160, 2160, 2160, 2160, 2160, 2160,
+ 2128, 2128, 2128, 2128, 2128, 2128, 2129, 2129,
+ 2129, 2129, 2129, 202, 202, 202, 202, 202,
+
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 2130, 2130,
+ 2130, 2130, 2130, 2130, 2130, 2130, 202, 2131,
+
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+
+ 2132, 2132, 2132, 2132, 202, 202, 202, 202,
+ 2132, 2132, 2132, 2132, 2132, 2132, 2132, 2132,
+ 2133, 2134, 2134, 2134, 2134, 2134, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+ 2135, 2135, 2135, 2135, 2135, 2135, 2135, 2135,
+
+ 2135, 2135, 2135, 2135, 2135, 2135, 2136, 2136,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+
+ 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137,
+ 2137, 2137, 2137, 2137, 2137, 2137, 2138, 2138,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+ 2139, 2139, 2139, 2139, 2139, 2139, 2139, 2139,
+
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 2140, 2140,
+ 2140, 2140, 2140, 2140, 2140, 2140, 202, 202,
+
+ 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148,
+ 2149, 2150, 202, 202, 202, 202, 202, 202,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151,
+ 2151, 2151, 2151, 2151, 202, 202, 202, 202,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 2152, 2152, 2152, 2152,
+ 2152, 2152, 2152, 2152, 202, 202, 202, 202,
+
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+
+ 2153, 2153, 2153, 2153, 2153, 2153, 2153, 2153,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+ 2154, 2154, 2154, 2154, 2154, 2154, 2154, 2154,
+
+ 2154, 2154, 2154, 2154, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2155,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 2156, 2156, 2156, 2156, 2156, 2156, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2156, 2156, 2156, 2156, 2156, 2156, 2156, 2156,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2157, 2157, 2157, 2157, 2157, 2157, 301, 301,
+ 2157, 301, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
+ 2157, 2157, 2157, 2157, 2157, 2157, 301, 2157,
+ 2157, 301, 301, 301, 2157, 301, 301, 2157,
+
+ 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
+ 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158,
+ 2158, 2158, 2158, 2158, 2158, 2158, 301, 2159,
+ 2160, 2160, 2160, 2160, 2160, 2160, 2160, 2160,
2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161,
2161, 2161, 2161, 2161, 2161, 2161, 2161, 2161,
- 2161, 2161, 2161, 2161, 2161, 2161, 298, 298,
- 2162, 2162, 2162, 2162, 2162, 2162, 2162, 2162,
+ 2161, 2161, 2161, 2161, 2161, 2161, 2161, 2162,
+ 2162, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 2163, 2163, 2163, 2163, 2163,
- 2163, 2163, 2163, 298, 298, 298, 298, 298,
2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164,
+ 2164, 2164, 2164, 2164, 2164, 2164, 2164, 301,
- 2165, 2166, 2165, 2166, 2166, 2166, 2165, 2165,
- 2165, 2166, 2165, 2165, 2166, 2165, 2166, 2166,
- 2165, 2166, 298, 298, 298, 298, 298, 298,
- 298, 2167, 2167, 2167, 2167, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 2168, 2168, 2168, 2168, 2169, 2169, 2170,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 301, 301, 301, 301, 301, 301, 301, 2165,
+ 2165, 2165, 2165, 2165, 2165, 2165, 2165, 2165,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
+ 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166,
+ 2166, 2166, 2166, 2166, 2166, 2166, 2166, 2166,
+ 2166, 2166, 2166, 301, 2166, 2166, 301, 301,
+ 301, 301, 301, 2167, 2167, 2167, 2167, 2167,
- 2171, 2171, 2171, 2171, 2171, 2171, 2171, 2171,
- 2171, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2168, 2168,
+ 2168, 2168, 2168, 2168, 2168, 2168, 2169, 2169,
+ 2169, 2169, 2170, 2170, 301, 301, 301, 2171,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
-
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 2172, 2172, 2172, 2172, 2172,
- 2172, 2172, 2172, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
-
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 2173, 2173, 2173, 2173, 2173,
- 2173, 2173, 2173, 298, 298, 298, 298, 298,
- 298, 298, 2174, 2174, 2174, 2174, 2174, 2174,
-
- 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182,
- 2183, 2184, 2184, 2184, 2184, 2184, 2184, 2184,
- 2184, 2184, 2184, 2184, 2184, 2184, 2184, 2184,
- 2184, 2184, 2184, 2184, 2184, 2184, 2184, 298,
-
- 2185, 2186, 2185, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2187, 2187, 2187, 2187, 2187, 2187, 2187, 2187,
- 2186, 2186, 2186, 2186, 2186, 2186, 2186, 2186,
- 2186, 2186, 2186, 2186, 2186, 2186, 2188, 2189,
- 2189, 2190, 2190, 2190, 2190, 2190, 201, 201,
- 201, 201, 2191, 2192, 2193, 2194, 2195, 2196,
- 2197, 2198, 2199, 2200, 2200, 2200, 2200, 2200,
- 2200, 2200, 2200, 2200, 2200, 2200, 2201, 2202,
- 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2211,
- 2212, 2212, 2213, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2215, 2214, 2215, 2214, 2214, 2214,
+ 2172, 2172, 301, 301, 301, 301, 301, 2173,
+
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+ 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
+
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 2175, 2175, 2175, 2175, 2175, 2175, 2175, 2175,
+ 301, 301, 301, 301, 2176, 2176, 2175, 2175,
+
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 301, 301, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176,
+
+ 2177, 2178, 2178, 2178, 301, 2178, 2178, 301,
+ 301, 301, 301, 301, 2178, 2179, 2178, 2180,
+ 2177, 2177, 2177, 2177, 301, 2177, 2177, 2177,
+ 301, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2177, 2177, 2177, 2177,
+ 2177, 2177, 2177, 2177, 2181, 2181, 301, 301,
+ 2180, 2182, 2179, 301, 301, 301, 301, 2183,
+
+ 2184, 2185, 2186, 2187, 2188, 2188, 2188, 2188,
+ 2189, 301, 301, 301, 301, 301, 301, 301,
+ 2190, 2190, 2190, 2190, 2190, 2190, 2191, 2191,
+ 2192, 301, 301, 301, 301, 301, 301, 301,
+
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2193, 2193, 2193,
+ 2193, 2193, 2193, 2193, 2193, 2194, 2194, 2195,
+
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196,
+ 2196, 2196, 2196, 2196, 2196, 2197, 2197, 2197,
+
+ 2198, 2198, 2198, 2198, 2198, 2199, 2200, 2199,
+ 2201, 2199, 2199, 2200, 2200, 2202, 2199, 2199,
+ 2199, 2199, 2199, 2198, 2198, 2198, 2198, 2202,
+ 2198, 2198, 2198, 2198, 2198, 2199, 2198, 2198,
+
+ 2198, 2199, 2200, 2200, 2199, 2203, 2204, 301,
+ 301, 301, 301, 2205, 2205, 2205, 2205, 2206,
+ 2207, 2207, 2207, 2207, 2207, 2207, 2208, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 2209, 2209,
+ 2209, 2209, 2209, 2209, 2209, 2209, 301, 301,
+ 301, 2210, 2210, 2210, 2210, 2210, 2210, 2210,
+
+ 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
+ 2211, 2211, 2211, 2211, 2211, 2211, 2211, 2211,
+ 2211, 2211, 2211, 2211, 2211, 2211, 301, 301,
+ 2212, 2212, 2212, 2212, 2212, 2212, 2212, 2212,
+
+ 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213,
+ 2213, 2213, 2213, 2213, 2213, 2213, 2213, 2213,
+ 2213, 2213, 2213, 301, 301, 301, 301, 301,
2214, 2214, 2214, 2214, 2214, 2214, 2214, 2214,
- 2214, 2214, 2214, 2215, 2214, 2214, 2214, 2214,
- 2213, 2213, 2213, 2212, 2212, 2212, 2212, 2213,
- 2213, 2216, 2217, 2218, 2218, 2219, 2220, 2220,
- 2220, 2220, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+
+ 2215, 2216, 2215, 2216, 2216, 2216, 2215, 2215,
+ 2215, 2216, 2215, 2215, 2216, 2215, 2216, 2216,
+ 2215, 2216, 301, 301, 301, 301, 301, 301,
+ 301, 2217, 2217, 2217, 2217, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 2218, 2218, 2218, 2218, 2219, 2219, 2220,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
- 2221, 201, 201, 201, 201, 201, 201, 201,
- 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229,
- 2230, 2231, 201, 201, 201, 201, 201, 201,
-
- 2232, 2232, 2232, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2233,
- 2233, 2233, 2233, 2233, 2233, 2233, 2233, 2234,
- 2235, 2235, 2235, 2235, 2236, 2235, 2237, 2237,
- 2235, 2235, 2235, 2238, 2238, 201, 2239, 2240,
- 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248,
- 2249, 2250, 2250, 2250, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+
+ 2221, 2221, 2221, 2221, 2221, 2221, 2221, 2221,
+ 2221, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 2222, 2222, 2222, 2222, 2222,
+ 2222, 2222, 2222, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 2223, 2223, 2223, 2223, 2223,
+ 2223, 2223, 2223, 301, 301, 301, 301, 301,
+ 301, 301, 2224, 2224, 2224, 2224, 2224, 2224,
+
+ 2225, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+ 2226, 2226, 2226, 2226, 2226, 2226, 2226, 2226,
+
+ 2226, 2226, 2227, 2226, 2228, 2228, 2228, 2228,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236,
+ 2237, 2238, 301, 301, 301, 301, 301, 301,
+
+ 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246,
+ 2247, 2248, 2248, 2248, 2248, 2248, 2248, 2248,
+ 2248, 2248, 2248, 2248, 2248, 2248, 2248, 2248,
+ 2248, 2248, 2248, 2248, 2248, 2248, 2248, 301,
+
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2249, 2249, 2249,
+ 2249, 2249, 2249, 2249, 2249, 2250, 2250, 2250,
+
+ 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2249,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 2251, 2251, 2251, 2252, 2251, 2251, 2251, 2251,
2251, 2251, 2251, 2251, 2251, 2251, 2251, 2251,
- 2251, 2251, 2251, 2252, 2253, 2254, 2251, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2255, 2255, 2256, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2257, 2257, 2257, 2257, 2257,
- 2257, 2257, 2257, 2256, 2256, 2256, 2255, 2255,
- 2255, 2255, 2255, 2255, 2255, 2255, 2255, 2256,
- 2258, 2257, 2259, 2259, 2257, 2260, 2260, 2261,
- 2262, 2263, 2264, 2265, 2265, 2266, 201, 201,
- 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274,
- 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2281,
- 201, 2282, 2282, 2282, 2282, 2282, 2282, 2282,
- 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282,
- 2282, 2282, 2282, 2282, 2282, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 201, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283,
- 2283, 2283, 2283, 2283, 2284, 2284, 2284, 2285,
- 2285, 2285, 2284, 2284, 2285, 2286, 2287, 2285,
- 2288, 2288, 2289, 2288, 2288, 2289, 2290, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 201,
- 2291, 201, 2291, 2291, 2291, 2291, 201, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 201, 2291,
- 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
- 2291, 2292, 201, 201, 201, 201, 201, 201,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293,
- 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2294,
- 2295, 2295, 2295, 2294, 2294, 2294, 2294, 2294,
- 2294, 2296, 2297, 201, 201, 201, 201, 201,
+
+ 2251, 2251, 2251, 2251, 2251, 2253, 2254, 2254,
+ 2255, 2255, 2255, 2254, 2255, 2254, 2254, 2254,
+ 2254, 2256, 2256, 2256, 2257, 2258, 2258, 2258,
+ 2258, 2258, 301, 301, 301, 301, 301, 301,
+
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
+ 2259, 2259, 2259, 2259, 2259, 2259, 2259, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2260, 2261, 2260, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262,
+ 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261,
+ 2261, 2261, 2261, 2261, 2261, 2261, 2263, 2264,
+ 2264, 2265, 2265, 2265, 2265, 2265, 202, 202,
+ 202, 202, 2266, 2267, 2268, 2269, 2270, 2271,
+ 2272, 2273, 2274, 2275, 2275, 2275, 2275, 2275,
+ 2275, 2275, 2275, 2275, 2275, 2275, 2276, 2277,
+ 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2286,
+ 2287, 2287, 2288, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2290, 2289, 2290, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
+ 2289, 2289, 2289, 2290, 2289, 2289, 2289, 2289,
+ 2288, 2288, 2288, 2287, 2287, 2287, 2287, 2288,
+ 2288, 2291, 2292, 2293, 2293, 2294, 2295, 2295,
+ 2295, 2295, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 2296, 202, 202,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 2297, 2297, 2297, 2297, 2297, 2297, 2297,
+ 2297, 202, 202, 202, 202, 202, 202, 202,
2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305,
- 2306, 2307, 201, 201, 201, 201, 201, 201,
-
- 2308, 2309, 2310, 2310, 201, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 201, 201, 2311,
- 2311, 201, 201, 2311, 2311, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 2311, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 201, 2311, 2311, 2311, 2311, 2311, 2311,
- 2311, 201, 2311, 2311, 201, 2311, 2311, 2311,
- 2311, 2311, 201, 201, 2312, 2311, 2313, 2310,
- 2309, 2310, 2310, 2310, 2310, 201, 201, 2310,
- 2310, 201, 201, 2314, 2314, 2315, 201, 201,
- 2316, 201, 201, 201, 201, 201, 201, 2313,
- 201, 201, 201, 201, 201, 2311, 2311, 2311,
- 2311, 2311, 2310, 2310, 201, 201, 2317, 2317,
- 2317, 2317, 2317, 2317, 2317, 201, 201, 201,
- 2317, 2317, 2317, 2317, 2317, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2318, 2318, 2318,
- 2318, 2318, 2318, 2318, 2318, 2319, 2319, 2319,
- 2320, 2320, 2320, 2320, 2320, 2320, 2320, 2320,
- 2319, 2319, 2321, 2320, 2320, 2319, 2322, 2318,
- 2318, 2318, 2318, 2323, 2323, 2324, 2324, 2325,
- 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333,
- 2334, 2335, 201, 2324, 201, 2325, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2336, 2336, 2336, 2336, 2336, 2336, 2336, 2336,
- 2337, 2338, 2338, 2339, 2339, 2339, 2339, 2339,
- 2339, 2338, 2340, 2341, 2341, 2337, 2341, 2339,
- 2339, 2338, 2342, 2343, 2336, 2336, 2344, 2336,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352,
- 2353, 2354, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2355,
- 2355, 2355, 2355, 2355, 2355, 2355, 2355, 2356,
- 2357, 2357, 2358, 2358, 2358, 2358, 201, 201,
- 2357, 2357, 2359, 2359, 2358, 2358, 2357, 2360,
- 2361, 2362, 2363, 2363, 2364, 2364, 2365, 2365,
- 2365, 2363, 2366, 2366, 2366, 2366, 2366, 2366,
- 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366,
- 2367, 2367, 2367, 2367, 2368, 2368, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2369, 2369, 2369, 2369, 2369, 2369, 2369, 2369,
- 2370, 2370, 2370, 2371, 2371, 2371, 2371, 2371,
- 2371, 2371, 2371, 2370, 2370, 2371, 2370, 2372,
- 2371, 2373, 2373, 2374, 2369, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2306, 2307, 202, 202, 202, 202, 202, 202,
+
+ 2308, 2308, 2308, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2309,
+ 2309, 2309, 2309, 2309, 2309, 2309, 2309, 2310,
+ 2311, 2311, 2311, 2311, 2312, 2311, 2313, 2313,
+ 2311, 2311, 2311, 2314, 2314, 202, 2315, 2316,
+ 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324,
+ 2325, 2326, 2326, 2326, 2327, 2328, 2328, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2329, 2329, 2329, 2329, 2329,
+ 2329, 2329, 2329, 2330, 2331, 2332, 2329, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2333, 2333, 2334, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2335, 2335, 2335, 2335, 2335,
+ 2335, 2335, 2335, 2334, 2334, 2334, 2333, 2333,
+ 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2334,
+ 2336, 2335, 2337, 2337, 2335, 2338, 2338, 2339,
+ 2340, 2341, 2342, 2341, 2341, 2343, 202, 202,
+ 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351,
+ 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2358,
+ 202, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 2359, 2359, 2359,
+ 2359, 2359, 2359, 2359, 2359, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 202, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2360, 2360, 2360, 2360,
+ 2360, 2360, 2360, 2360, 2361, 2361, 2361, 2362,
+ 2362, 2362, 2361, 2361, 2362, 2363, 2364, 2362,
+ 2365, 2365, 2366, 2365, 2365, 2366, 2367, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 202,
+ 2368, 202, 2368, 2368, 2368, 2368, 202, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 202, 2368,
+ 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368,
+ 2368, 2369, 202, 202, 202, 202, 202, 202,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370,
+ 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2371,
+ 2372, 2372, 2372, 2371, 2371, 2371, 2371, 2371,
+ 2371, 2373, 2374, 202, 202, 202, 202, 202,
2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382,
- 2383, 2384, 201, 201, 201, 201, 201, 201,
- 2385, 2385, 2385, 2385, 2385, 2385, 2385, 2385,
- 2385, 2385, 2385, 2385, 2385, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386,
- 2386, 2386, 2386, 2387, 2388, 2387, 2388, 2388,
- 2387, 2387, 2387, 2387, 2387, 2387, 2389, 2390,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398,
- 2399, 2400, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 2401, 2401, 2401, 2401, 2401, 2401,
- 2401, 2401, 201, 201, 201, 2402, 2402, 2402,
- 2403, 2403, 2402, 2402, 2402, 2402, 2403, 2402,
- 2402, 2402, 2402, 2404, 201, 201, 201, 201,
- 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412,
- 2413, 2414, 2415, 2415, 2416, 2416, 2416, 2417,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2418, 2418, 2418, 2418, 2418, 2418, 2418, 2418,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2419, 2419, 2419, 2419, 2419, 2419, 2419, 2419,
- 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427,
- 2428, 2429, 2430, 2430, 2430, 2430, 2430, 2430,
- 2430, 2430, 2430, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2431,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2432, 2433, 2433, 2433, 2433, 2433, 2433, 2434,
- 2434, 2433, 2433, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2432, 2432, 2432, 2432, 2432,
- 2432, 2432, 2432, 2433, 2435, 2433, 2433, 2433,
- 2433, 2434, 2436, 2433, 2433, 2433, 2433, 2437,
- 2438, 2439, 2440, 2440, 2439, 2437, 2438, 2435,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2441, 2442, 2442, 2442, 2442, 2442, 2442, 2443,
- 2443, 2442, 2442, 2442, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 2441, 2441, 2441, 2441,
- 2441, 2441, 2441, 2441, 201, 201, 2444, 2444,
- 2444, 2444, 2442, 2442, 2442, 2442, 2442, 2442,
- 2442, 2442, 2442, 2442, 2442, 2442, 2442, 2443,
- 2442, 2445, 2446, 2447, 2447, 201, 2448, 2448,
- 2448, 2446, 2446, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
+ 2383, 2384, 202, 202, 202, 202, 202, 202,
+
+ 2385, 2386, 2387, 2387, 202, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 202, 202, 2388,
+ 2388, 202, 202, 2388, 2388, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 2388, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 202, 2388, 2388, 2388, 2388, 2388, 2388,
+ 2388, 202, 2388, 2388, 202, 2388, 2388, 2388,
+ 2388, 2388, 202, 2389, 2390, 2388, 2391, 2387,
+ 2386, 2387, 2387, 2387, 2387, 202, 202, 2387,
+ 2387, 202, 202, 2392, 2392, 2393, 202, 202,
+ 2394, 202, 202, 202, 202, 202, 202, 2391,
+ 202, 202, 202, 202, 202, 2388, 2388, 2388,
+ 2388, 2388, 2387, 2387, 202, 202, 2395, 2395,
+ 2395, 2395, 2395, 2395, 2395, 202, 202, 202,
+ 2395, 2395, 2395, 2395, 2395, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2396, 2396, 2396,
+ 2396, 2396, 2396, 2396, 2396, 2397, 2397, 2397,
+ 2398, 2398, 2398, 2398, 2398, 2398, 2398, 2398,
+ 2397, 2397, 2399, 2398, 2398, 2397, 2400, 2396,
+ 2396, 2396, 2396, 2401, 2401, 2402, 2402, 2403,
+ 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411,
+ 2412, 2413, 202, 2402, 202, 2403, 2414, 2415,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2416, 2416, 2416, 2416, 2416, 2416, 2416, 2416,
+ 2417, 2418, 2418, 2419, 2419, 2419, 2419, 2419,
+ 2419, 2418, 2420, 2421, 2421, 2417, 2421, 2419,
+ 2419, 2418, 2422, 2423, 2416, 2416, 2424, 2416,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432,
+ 2433, 2434, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2435,
+ 2435, 2435, 2435, 2435, 2435, 2435, 2435, 2436,
+ 2437, 2437, 2438, 2438, 2438, 2438, 202, 202,
+ 2437, 2437, 2439, 2439, 2438, 2438, 2437, 2440,
+ 2441, 2442, 2443, 2443, 2444, 2444, 2445, 2445,
+ 2445, 2443, 2446, 2446, 2446, 2446, 2446, 2446,
+ 2446, 2446, 2446, 2446, 2446, 2446, 2446, 2446,
+ 2447, 2447, 2447, 2447, 2448, 2448, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
2449, 2449, 2449, 2449, 2449, 2449, 2449, 2449,
- 2449, 201, 201, 201, 201, 201, 201, 201,
-
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 201, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2450,
- 2450, 2450, 2450, 2450, 2450, 2450, 2450, 2451,
- 2452, 2452, 2452, 2452, 2452, 2452, 2452, 201,
- 2452, 2452, 2452, 2452, 2452, 2452, 2451, 2453,
- 2450, 2454, 2454, 2455, 2455, 2455, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463,
- 2464, 2465, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2450, 2450, 2450, 2451, 2451, 2451, 2451, 2451,
+ 2451, 2451, 2451, 2450, 2450, 2451, 2450, 2452,
+ 2451, 2453, 2453, 2454, 2449, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462,
+ 2463, 2464, 202, 202, 202, 202, 202, 202,
+ 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465,
+ 2465, 2465, 2465, 2465, 2465, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
- 2466, 2466, 2466, 2466, 2466, 201, 201, 201,
- 2467, 2468, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 2469, 2469, 2469, 2469, 2469, 2469, 2469, 2469,
- 201, 201, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470,
- 201, 2471, 2470, 2470, 2470, 2470, 2470, 2470,
- 2470, 2471, 2470, 2470, 2471, 2470, 2470, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 201,
- 2472, 2472, 201, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2472, 2472, 2472, 2472, 2472, 2472, 2472,
- 2472, 2473, 2473, 2473, 2473, 2473, 2473, 201,
- 201, 201, 2473, 201, 2473, 2473, 201, 2473,
- 2473, 2473, 2474, 2473, 2475, 2475, 2476, 2473,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2477, 2478, 2479, 2480, 2481, 2482, 2483, 2484,
- 2485, 2486, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
-
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2487,
- 2487, 2487, 2487, 2487, 2487, 2487, 2487, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2488, 2488, 2488, 2488, 2488, 2488, 2488,
- 2488, 2489, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2490, 2490, 2490, 2490, 2490,
- 2490, 2490, 2490, 2491, 2491, 2491, 2491, 2491,
- 2491, 2491, 2491, 2491, 2491, 2491, 2491, 201,
- 2492, 2492, 2492, 2492, 2493, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
-
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 2489, 2489, 2489, 2489,
- 2489, 2489, 2489, 2489, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2495, 2495, 2495, 2496, 2496, 2496, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2496, 2494, 2494, 2494, 2495, 2496,
- 2495, 2496, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2495, 2496, 2496, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
-
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494,
- 2494, 2494, 2494, 2494, 2494, 2494, 2494, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2498, 2499,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
-
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497,
- 2497, 2497, 2497, 2497, 2497, 2497, 2497, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2466, 2466, 2466, 2466, 2466,
+ 2466, 2466, 2466, 2467, 2468, 2467, 2468, 2468,
+ 2467, 2467, 2467, 2467, 2467, 2467, 2469, 2470,
+ 2471, 202, 202, 202, 202, 202, 202, 202,
+ 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479,
+ 2480, 2481, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2482, 2482, 2482, 2482, 2482, 2482,
+ 2482, 2482, 2483, 202, 202, 2484, 2484, 2484,
+ 2485, 2485, 2484, 2484, 2484, 2484, 2485, 2484,
+ 2484, 2484, 2484, 2486, 202, 202, 202, 202,
+ 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494,
+ 2495, 2496, 2497, 2497, 2498, 2498, 2498, 2499,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 2500, 2500, 2500, 2500, 2500, 2500, 2500,
- 2500, 201, 201, 201, 201, 201, 201, 201,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 2501,
- 2501, 2501, 2501, 2501, 2501, 2501, 2501, 201,
- 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509,
- 2510, 2511, 201, 201, 201, 201, 2512, 2512,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 2513, 2513,
- 2513, 2513, 2513, 2513, 2513, 2513, 201, 201,
- 2514, 2514, 2514, 2514, 2514, 2515, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2517, 2517, 2517, 2517, 2517, 2517, 2517, 2518,
- 2518, 2519, 2520, 2520, 2521, 2521, 2521, 2521,
- 2522, 2522, 2522, 2522, 2518, 2521, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530,
- 2531, 2532, 201, 2533, 2533, 2533, 2533, 2533,
- 2533, 2533, 201, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 201, 201, 201, 201, 201, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 2516, 2516, 2516, 2516, 2516, 2516, 2516, 2516,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 2534, 2534, 2534,
- 2534, 2534, 2534, 2534, 2534, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2534, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
+ 2500, 2500, 2500, 2500, 2501, 2501, 2501, 2502,
+ 2502, 2502, 2502, 2502, 2502, 2502, 2502, 2502,
+ 2501, 2503, 2504, 2505, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2506, 2506, 2506, 2506, 2506, 2506, 2506, 2506,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2507, 2507, 2507, 2507, 2507, 2507, 2507, 2507,
+ 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515,
+ 2516, 2517, 2518, 2518, 2518, 2518, 2518, 2518,
+ 2518, 2518, 2518, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2519,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 202, 202, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2520, 2520, 2520, 2520, 2520, 2520, 2520,
+ 2520, 2521, 2521, 2521, 2522, 2522, 2522, 2522,
+ 202, 202, 2522, 2522, 2521, 2521, 2521, 2521,
+ 2523, 2520, 2524, 2520, 2521, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2525, 2526, 2526, 2526, 2526, 2526, 2526, 2527,
+ 2527, 2526, 2526, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
+ 2525, 2525, 2525, 2526, 2528, 2526, 2526, 2526,
+ 2526, 2529, 2530, 2526, 2526, 2526, 2526, 2531,
+ 2532, 2533, 2534, 2534, 2533, 2531, 2532, 2528,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2535, 2536, 2536, 2536, 2536, 2536, 2536, 2537,
+ 2537, 2536, 2536, 2536, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535,
- 2535, 2535, 2535, 2535, 2535, 2535, 2535, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 2536,
- 2536, 2536, 2536, 2537, 2537, 2537, 2537, 2537,
- 2537, 2537, 2537, 2537, 2537, 2537, 2537, 2537,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2538, 2539, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 2540, 2540, 2540, 2540, 2540,
- 2540, 2540, 2540, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2541, 2542, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
-
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 2543,
- 2543, 2543, 2543, 2543, 2543, 2543, 2543, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
-
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 2544, 2544, 2544, 2544,
- 2544, 2544, 2544, 2544, 201, 201, 201, 201,
-
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
+ 2535, 2535, 2535, 2535, 2538, 2538, 2539, 2539,
+ 2539, 2539, 2536, 2536, 2536, 2536, 2536, 2536,
+ 2536, 2536, 2536, 2536, 2536, 2536, 2536, 2537,
+ 2536, 2540, 2541, 2542, 2542, 2543, 2544, 2544,
+ 2544, 2541, 2541, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
@@ -4664,1480 +3928,2548 @@ static const unsigned short uc_property_trie[] = {
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 201, 201, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 2545, 2545, 2545, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 201, 201, 201, 201, 201, 201, 201,
- 2545, 2545, 2545, 2545, 2545, 2545, 2545, 2545,
- 2545, 2545, 201, 201, 2546, 2547, 2548, 2549,
- 2550, 2550, 2550, 2550, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 201,
- 201, 1444, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2552, 2552,
- 2552, 2552, 2552, 2552, 2552, 2553, 2554, 2555,
- 2555, 2555, 2551, 2551, 2551, 2556, 2553, 2553,
- 2553, 2553, 2553, 2557, 2557, 2557, 2557, 2557,
- 2557, 2557, 2557, 2558, 2558, 2558, 2558, 2558,
- 2558, 2558, 2558, 2551, 2551, 2559, 2559, 2559,
- 2559, 2559, 2558, 2558, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2559, 2559, 2559, 2559, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2552, 2552, 2552, 2552, 2552,
- 2552, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2551, 2551,
- 2551, 2551, 2551, 2551, 2551, 2551, 2560, 2560,
- 2560, 2560, 2560, 2560, 2560, 2560, 2560, 2560,
- 2560, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067,
- 2067, 2067, 2561, 2561, 2561, 2067, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
- 1478, 1478, 1478, 1478, 1478, 1478, 1478, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
+ 2545, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 202, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2546,
+ 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2547,
+ 2548, 2548, 2548, 2548, 2548, 2548, 2548, 202,
+ 2548, 2548, 2548, 2548, 2548, 2548, 2547, 2549,
+ 2546, 2550, 2550, 2551, 2551, 2551, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559,
+ 2560, 2561, 2562, 2562, 2562, 2562, 2562, 2562,
2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562,
- 2562, 2562, 2562, 2562, 2562, 2562, 2562, 2562,
- 2562, 2562, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 201, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 201, 2563, 2563,
- 201, 201, 2563, 201, 201, 2563, 2563, 201,
- 201, 2563, 2563, 2563, 2563, 201, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 201, 2564, 201, 2564, 2564, 2564,
- 2564, 2565, 2564, 2564, 201, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2563, 2563, 201, 2563,
- 2563, 2563, 2563, 201, 201, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 201, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 201, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 201, 2563, 2563, 2563, 2563, 201,
- 2563, 2563, 2563, 2563, 2563, 201, 2563, 201,
- 201, 201, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 201, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 1436, 1436, 201, 201,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2566, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2567, 2564, 2564, 2564, 2564,
- 2564, 2564, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2566, 2564, 2564, 2564, 2564,
-
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2567, 2564, 2564,
- 2564, 2564, 2564, 2564, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2566, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2567,
- 2564, 2564, 2564, 2564, 2564, 2564, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2566,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2567, 2564, 2564, 2564, 2564, 2564, 2564,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2563, 2563, 2563, 2563, 2563, 2563, 2563,
- 2563, 2566, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2564, 2564, 2564, 2564, 2564,
- 2564, 2564, 2564, 2567, 2564, 2564, 2564, 2564,
- 2564, 2564, 2568, 2569, 201, 201, 2570, 2571,
- 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579,
- 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577,
- 2578, 2579, 2570, 2571, 2572, 2573, 2574, 2575,
- 2576, 2577, 2578, 2579, 2570, 2571, 2572, 2573,
- 2574, 2575, 2576, 2577, 2578, 2579, 2570, 2571,
- 2572, 2573, 2574, 2575, 2576, 2577, 2578, 2579,
-
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
-
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2580,
- 2580, 2580, 2580, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2581, 2580, 2580,
- 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580,
- 2580, 2580, 2580, 2580, 2581, 2580, 2580, 2582,
- 2583, 2582, 2582, 2584, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 2581, 2581, 2581, 2581, 2581,
- 201, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 2581, 2581, 2581, 2581, 2581, 2581, 2581, 2581,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 201,
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585,
- 2585, 2585, 2585, 2585, 2585, 2585, 2585, 2585,
- 2585, 201, 201, 2585, 2585, 2585, 2585, 2585,
- 2585, 2585, 201, 2585, 2585, 201, 2585, 2585,
- 2585, 2585, 2585, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
-
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 2586, 2586, 2586,
- 2586, 2586, 2586, 2586, 2586, 298, 298, 2587,
- 2587, 2587, 2587, 2587, 2587, 2587, 2587, 2587,
- 2588, 2588, 2588, 2588, 2588, 2588, 2588, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2589, 2589, 2589, 2589, 2589, 2589,
- 2589, 2589, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2590, 2590, 2590, 2590,
- 2590, 2590, 2590, 2590, 2591, 2591, 2591, 2591,
- 2591, 2591, 2592, 298, 298, 298, 298, 298,
- 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600,
- 2601, 2602, 298, 298, 298, 298, 2603, 2603,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
- 298, 298, 298, 298, 298, 298, 298, 298,
-
- 2604, 2604, 2604, 2604, 344, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 344, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 344, 2604, 344, 2604, 344, 344, 344, 344,
- 344, 344, 2604, 344, 344, 344, 344, 2604,
- 344, 2604, 344, 2604, 344, 2604, 2604, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 344, 2604, 344, 2604, 344, 2604, 344, 2604,
- 344, 2604, 2604, 344, 2604, 344, 344, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 344, 2604, 2604, 2604, 2604,
- 344, 2604, 2604, 2604, 2604, 344, 2604, 344,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 344, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 344, 344, 344, 344,
- 344, 2604, 2604, 2604, 344, 2604, 2604, 2604,
- 2604, 2604, 344, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 2604, 2604, 2604, 2604,
- 2604, 2604, 2604, 2604, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
- 2605, 2605, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344,
-
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1682, 1682, 1682, 1682,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1519, 1519, 1519, 1519,
- 1519, 1519, 1519, 1519, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1682,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1521,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1682, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 2606, 2606, 2607, 2608, 2609, 2610, 2611, 2612,
- 2613, 2614, 2615, 2616, 2616, 1682, 1682, 1682,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 2617,
- 2617, 2617, 2617, 2617, 2617, 2617, 2617, 1682,
- 2618, 2619, 2618, 2618, 2618, 2618, 2618, 2618,
- 2618, 2618, 2618, 2618, 2618, 2619, 2618, 2619,
- 2618, 2618, 2619, 2618, 2618, 2618, 2619, 2618,
- 2618, 2618, 2617, 2617, 2617, 2617, 2617, 2620,
- 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2622,
- 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2622,
+ 2562, 2562, 2562, 2562, 2562, 202, 202, 202,
+ 2563, 2564, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 2565, 2565, 2565, 2565, 2565, 2565, 2565, 2565,
+ 202, 202, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566,
+ 202, 2567, 2566, 2566, 2566, 2566, 2566, 2566,
+ 2566, 2567, 2566, 2566, 2567, 2566, 2566, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 202,
+ 2568, 2568, 202, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2568, 2568, 2568, 2568, 2568, 2568, 2568,
+ 2568, 2569, 2569, 2569, 2569, 2569, 2569, 202,
+ 202, 202, 2569, 202, 2569, 2569, 202, 2569,
+ 2569, 2569, 2570, 2569, 2571, 2571, 2572, 2569,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580,
+ 2581, 2582, 202, 202, 202, 202, 202, 202,
+ 2583, 2583, 2583, 2583, 2583, 2583, 202, 2583,
+ 2583, 202, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2583, 2583, 2583, 2583, 2583, 2583,
+ 2583, 2583, 2584, 2584, 2584, 2584, 2584, 202,
+ 2585, 2585, 202, 2584, 2584, 2585, 2584, 2586,
+ 2583, 202, 202, 202, 202, 202, 202, 202,
+ 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594,
+ 2595, 2596, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597,
+ 2597, 2597, 2597, 2597, 2597, 2597, 2597, 2597,
+ 2597, 2597, 2597, 2598, 2598, 2599, 2599, 2600,
+ 2600, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601,
+ 2601, 2601, 2601, 2601, 2601, 2601, 2601, 2601,
+ 2601, 2601, 2601, 2601, 2601, 2602, 2602, 2602,
+ 2602, 2602, 2602, 2602, 2602, 2603, 2603, 2603,
+ 2603, 2602, 2602, 2602, 2602, 2602, 2602, 2602,
+ 2602, 2602, 2602, 2602, 2602, 2602, 2602, 2602,
+ 2602, 2602, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 2604,
+
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2605,
+ 2605, 2605, 2605, 2605, 2605, 2605, 2605, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2606, 2606, 2606, 2606, 2606, 2606, 2606,
+ 2606, 2607, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608,
+ 2608, 2608, 2608, 2609, 2609, 2609, 2609, 2609,
+ 2609, 2609, 2609, 2609, 2609, 2609, 2609, 202,
+ 2610, 2610, 2610, 2610, 2611, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 2607, 2607, 2607, 2607,
+ 2607, 2607, 2607, 2607, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2613, 2613, 2613, 2614, 2614, 2614, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2614, 2612, 2612, 2612, 2613, 2614,
+ 2613, 2614, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2613, 2614, 2614, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 2612,
+ 2612, 2612, 2612, 2612, 2612, 2612, 2612, 202,
+ 2615, 2615, 2615, 2615, 2615, 2615, 2615, 2616,
+ 2617, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2619, 2620,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 2618,
+ 2618, 2618, 2618, 2618, 2618, 2618, 2618, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2621, 2623, 2623, 1682, 1682, 1682, 1682,
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2622, 2621, 2622, 2622, 2621, 2621, 2622,
2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
- 2621, 2621, 796, 796, 796, 796, 2624, 2624,
- 2617, 2624, 2624, 2624, 2624, 2624, 2624, 2624,
- 2624, 2624, 2624, 2625, 2625, 2625, 2625, 2625,
- 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625,
- 2625, 2625, 2625, 2625, 2625, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
- 2626, 2626, 2626, 2626, 2626, 2626, 2626, 2626,
-
- 2627, 2628, 2628, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1675, 2628, 2628, 2628, 2628, 2628, 2628,
- 2628, 2628, 2628, 2629, 1682, 1682, 1682, 1682,
- 1675, 1675, 1675, 1675, 1675, 1675, 1675, 1675,
- 1675, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2628, 2628, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2630, 2630, 2630, 2630, 2630, 2630, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 2632, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1482, 1521, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 2631, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1521, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1523, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1521, 1521,
- 1482, 1482, 1482, 1482, 2631, 1482, 1482, 1482,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1481, 1481, 1482,
- 1482, 1482, 1482, 1482, 1481, 1482, 1482, 1482,
- 1482, 1482, 1523, 1523, 1523, 1521, 1482, 1523,
- 1482, 1482, 1523, 2633, 2633, 1521, 1521, 2632,
- 2632, 2632, 2632, 2632, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 1482, 2631, 1482, 1482,
- 1482, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2632, 2632, 2632, 2634, 2634, 2634, 2634, 2634,
-
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1521,
- 1482, 1521, 1523, 1523, 1482, 1482, 1523, 1523,
- 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1523, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 2635, 2635,
- 2635, 2635, 1482, 1482, 1482, 1482, 1523, 1482,
- 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523,
- 1523, 1482, 1482, 1482, 1523, 1482, 1482, 1482,
- 1482, 1523, 1523, 1523, 1482, 1523, 1523, 1523,
- 1482, 1482, 1482, 2631, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1481, 1482, 1481, 1482, 1481, 1482, 1482, 1482,
- 1482, 1482, 1523, 1482, 1482, 1482, 1482, 1481,
- 1482, 1481, 1481, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 2631, 2631, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1482, 1482, 1482, 1482, 1521, 1521, 2632,
-
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1482, 1482, 2631,
- 1482, 1482, 1482, 1482, 2631, 1482, 1482, 1482,
- 1482, 1482, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1483, 1483,
- 2636, 2636, 2636, 2636, 1483, 1483, 1483, 1483,
- 1483, 1483, 1521, 2632, 2632, 2632, 2632, 2632,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 2633, 2633, 1521, 1521,
- 1521, 1521, 2637, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2633, 1521, 1521, 1521, 1521, 2633, 2633, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 2638, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 2639, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1483, 1483, 1483, 1483,
- 1483, 1483, 1521, 1482, 1482, 1482, 1482, 1482,
-
- 2640, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 2640, 1482, 1482, 1482, 2640, 1482, 2640,
- 1482, 2640, 1482, 2640, 1482, 1482, 1482, 2640,
- 1482, 1482, 1482, 1482, 1482, 1482, 2640, 2640,
- 1482, 1482, 1482, 1482, 2640, 1482, 2640, 2640,
- 1482, 1482, 1482, 1482, 2640, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1521, 1521, 2632, 2632, 1523, 1523, 1523,
- 1482, 1482, 1482, 1523, 1523, 1523, 1523, 1523,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 2641, 2641,
- 2641, 2642, 2642, 2642, 1483, 1483, 1483, 1483,
- 2631, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 2631, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1523, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1482, 1482, 1482, 1482, 1523, 1523, 1523, 1482,
- 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1482,
- 1523, 1482, 1482, 1482, 1482, 1482, 1521, 1521,
- 1521, 1521, 1521, 1521, 2633, 1521, 1521, 1521,
- 2632, 2638, 2638, 2630, 2630, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1521, 1521, 1521, 1521, 1521, 1521, 1521, 1521,
- 1521, 1521, 1521, 1521, 1521, 1682, 1682, 1682,
- 1521, 1521, 1521, 1521, 2638, 2638, 2638, 2630,
- 2630, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1481, 1481, 1481, 1481,
- 1481, 1481, 1481, 1481, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
- 1483, 1483, 1483, 1483, 1483, 1483, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1485, 1485, 1485, 1485, 1485, 1485, 1485, 1485,
- 1485, 1485, 1485, 1485, 1682, 1682, 1682, 1682,
- 2632, 2632, 2632, 2632, 2632, 2632, 2632, 2632,
- 2643, 2637, 2637, 2637, 2637, 2638, 2637, 2644,
- 2638, 2638, 2638, 2638, 2638, 2638, 2637, 2638,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630,
- 2637, 2644, 2644, 2637, 2637, 2637, 2637, 2637,
- 2637, 2637, 2638, 2638, 2638, 2637, 2637, 1682,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2630, 1682, 1682, 1682,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2630,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 2630,
- 2630, 2630, 2630, 2630, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2632, 2632, 2632, 2632, 2632, 2638, 2638, 2638,
- 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2638,
- 2638, 2638, 2630, 2630, 2630, 2630, 2630, 2630,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2632, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2630, 2644, 2644, 2644, 2644, 2644, 2644, 2644,
- 2644, 2644, 2644, 2644, 2644, 2644, 2630, 2630,
- 2630, 2630, 2630, 2630, 2630, 2630, 2630, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 2645, 2645,
-
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
-
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 2646,
- 2646, 2646, 2646, 2646, 2646, 2646, 2646, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
-
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1686, 1686, 1686,
- 1686, 1686, 1686, 1686, 1686, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
-
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647,
- 2647, 2647, 2647, 2647, 2647, 2647, 1682, 1682,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
-
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
-
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1688, 1688, 1688, 1688, 1688, 1688,
- 1688, 1688, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
-
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689,
- 1689, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
-
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 2648, 2648,
- 2648, 2648, 2648, 2648, 2648, 2648, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
- 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,
-
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 201, 201,
- 201, 201, 201, 201, 201, 201, 2645, 2645,
-
- 1382, 2557, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 2649, 2649, 2649, 2649, 2649, 2649, 2649, 2649,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 2650, 2650, 2650, 2650, 2650, 2650, 2650, 2650,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
- 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
-
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
-
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2651, 2651,
- 2651, 2651, 2651, 2651, 2651, 2651, 2645, 2645
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 2621, 2621, 2621, 2621, 2621, 2621, 2621,
+ 2621, 202, 202, 202, 202, 202, 202, 202,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 2622,
+ 2622, 2622, 2622, 2622, 2622, 2622, 2622, 202,
+ 2623, 2624, 2625, 2626, 2627, 2628, 2629, 2630,
+ 2631, 2632, 202, 202, 202, 202, 2633, 2633,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 2634, 2634,
+ 2634, 2634, 2634, 2634, 2634, 2634, 202, 202,
+ 2635, 2635, 2635, 2635, 2635, 2636, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2638, 2638, 2638, 2638, 2638, 2638, 2638, 2639,
+ 2639, 2640, 2641, 2641, 2642, 2642, 2642, 2642,
+ 2643, 2643, 2643, 2643, 2639, 2642, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651,
+ 2652, 2653, 202, 2654, 2654, 2654, 2654, 2654,
+ 2654, 2654, 202, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 202, 202, 202, 202, 202, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 2637, 2637, 2637, 2637, 2637, 2637, 2637, 2637,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2655, 2655, 2655, 2655, 2655, 2655, 2655, 2655,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2656, 2656, 2656, 2656, 2656, 2656, 2656, 2656,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657,
+ 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2658,
+ 2659, 2660, 2660, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2661, 2661, 2661,
+ 2661, 2661, 2661, 2661, 2661, 2662, 2662, 2662,
+ 2662, 2662, 2662, 202, 202, 202, 202, 2663,
+ 2661, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2664,
+ 2664, 2664, 2664, 2664, 2664, 2664, 2664, 2665,
+ 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665,
+ 202, 202, 202, 202, 202, 202, 202, 2666,
+ 2666, 2666, 2666, 2667, 2667, 2667, 2667, 2667,
+ 2667, 2667, 2667, 2667, 2667, 2667, 2667, 2667,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2668, 2669, 2670, 2671, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2673, 2673, 2673,
+ 2673, 2673, 2674, 2674, 2674, 2674, 2674, 2674,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 2672, 2672, 2672, 2672, 2672,
+ 2672, 2672, 2672, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2675, 2676, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677,
+ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2678, 2678, 2678, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 2679, 2679, 2679, 2679,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 2680, 2680, 2680, 2680,
+ 2680, 2680, 2680, 2680, 202, 202, 202, 202,
+
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 202, 202, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 2681, 2681, 2681, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 202, 202, 202, 202, 202, 202, 202,
+ 2681, 2681, 2681, 2681, 2681, 2681, 2681, 2681,
+ 2681, 2681, 202, 202, 2682, 2683, 2684, 2685,
+ 2686, 2686, 2686, 2686, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 202,
+ 202, 1461, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2688, 2688,
+ 2688, 2688, 2688, 2688, 2688, 2689, 2690, 2691,
+ 2691, 2691, 2687, 2687, 2687, 2692, 2689, 2689,
+ 2689, 2689, 2689, 2693, 2693, 2693, 2693, 2693,
+ 2693, 2693, 2693, 2694, 2694, 2694, 2694, 2694,
+ 2694, 2694, 2694, 2687, 2687, 2695, 2695, 2695,
+ 2695, 2695, 2694, 2694, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2695, 2695, 2695, 2695, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2688, 2688, 2688, 2688, 2688,
+ 2688, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2687, 2687,
+ 2687, 2687, 2687, 2687, 2687, 2687, 2696, 2696,
+ 2696, 2696, 2696, 2696, 2696, 2696, 2696, 2696,
+ 2696, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2115, 2115, 2115, 2115, 2115, 2115,
+ 2115, 2115, 2697, 2697, 2697, 2115, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 2698, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 2698, 2698, 2698, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1503,
+ 1503, 1503, 1503, 1503, 1503, 1503, 1503, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699,
+ 2699, 2699, 2699, 2699, 2699, 2699, 2699, 2699,
+ 2699, 2699, 2698, 2698, 2698, 2698, 2698, 2698,
+ 2698, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 202, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 202, 2700, 2700,
+ 202, 202, 2700, 202, 202, 2700, 2700, 202,
+ 202, 2700, 2700, 2700, 2700, 202, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 202, 2701, 202, 2701, 2701, 2701,
+ 2701, 2702, 2701, 2701, 202, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2700, 2700, 202, 2700,
+ 2700, 2700, 2700, 202, 202, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 202, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 202, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 202, 2700, 2700, 2700, 2700, 202,
+ 2700, 2700, 2700, 2700, 2700, 202, 2700, 202,
+ 202, 202, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 202, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 1453, 1453, 202, 202,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2703, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2704, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2703, 2701, 2701, 2701, 2701,
+
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2704, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2703, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2704,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2703,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2704, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2700, 2700, 2700, 2700, 2700, 2700, 2700,
+ 2700, 2703, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2701, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2701, 2704, 2701, 2701, 2701, 2701,
+ 2701, 2701, 2705, 2706, 202, 202, 2707, 2708,
+ 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716,
+ 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714,
+ 2715, 2716, 2707, 2708, 2709, 2710, 2711, 2712,
+ 2713, 2714, 2715, 2716, 2707, 2708, 2709, 2710,
+ 2711, 2712, 2713, 2714, 2715, 2716, 2707, 2708,
+ 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716,
+
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2717,
+ 2717, 2717, 2717, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2718, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2717, 2717, 2717, 2717,
+ 2717, 2717, 2717, 2717, 2718, 2717, 2717, 2719,
+ 2720, 2719, 2719, 2721, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 2718, 2718, 2718, 2718, 2718,
+ 202, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 2718, 2718, 2718, 2718, 2718, 2718, 2718, 2718,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 202,
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
+ 2722, 2722, 2722, 2722, 2722, 2722, 2722, 2722,
+ 2722, 202, 202, 2722, 2722, 2722, 2722, 2722,
+ 2722, 2722, 202, 2722, 2722, 202, 2722, 2722,
+ 2722, 2722, 2722, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723,
+ 2723, 2723, 2723, 2723, 2723, 202, 202, 202,
+ 2724, 2724, 2724, 2724, 2724, 2724, 2724, 2725,
+ 2725, 2725, 2725, 2725, 2725, 2725, 202, 202,
+ 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733,
+ 2734, 2735, 202, 202, 202, 202, 2723, 2736,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2737, 2737, 2737, 2737,
+ 2737, 2737, 2737, 2737, 2738, 2738, 2738, 2738,
+ 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746,
+ 2747, 2748, 202, 202, 202, 202, 202, 2749,
+
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 2750, 2750, 2750,
+ 2750, 2750, 2750, 2750, 2750, 301, 301, 2751,
+ 2751, 2751, 2751, 2751, 2751, 2751, 2751, 2751,
+ 2752, 2752, 2752, 2752, 2752, 2752, 2752, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2753, 2753, 2753, 2753, 2753, 2753,
+ 2753, 2753, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2754, 2754, 2754, 2754,
+ 2754, 2754, 2754, 2754, 2755, 2755, 2755, 2755,
+ 2755, 2755, 2756, 2757, 301, 301, 301, 301,
+ 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765,
+ 2766, 2767, 301, 301, 301, 301, 2768, 2768,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2769, 2769, 2769, 2769,
+ 2769, 2769, 2769, 2769, 2770, 2769, 2769, 2769,
+ 2771, 2769, 2769, 2769, 2769, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 301, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2773, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 2772, 2772,
+ 2772, 2772, 2772, 2772, 2772, 2772, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+ 301, 301, 301, 301, 301, 301, 301, 301,
+
+ 2774, 2774, 2774, 2774, 348, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 348, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 348, 2774, 348, 2774, 348, 348, 348, 348,
+ 348, 348, 2774, 348, 348, 348, 348, 2774,
+ 348, 2774, 348, 2774, 348, 2774, 2774, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 348, 2774, 348, 2774, 348, 2774, 348, 2774,
+ 348, 2774, 2774, 348, 2774, 348, 348, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 348, 2774, 2774, 2774, 2774,
+ 348, 2774, 2774, 2774, 2774, 348, 2774, 348,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 348, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 348, 348, 348, 348,
+ 348, 2774, 2774, 2774, 348, 2774, 2774, 2774,
+ 2774, 2774, 348, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 2774, 2774, 2774, 2774,
+ 2774, 2774, 2774, 2774, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+ 2775, 2775, 348, 348, 348, 348, 348, 348,
+ 348, 348, 348, 348, 348, 348, 348, 348,
+
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1717, 1717, 1717, 1717,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1542,
+ 1542, 1542, 1542, 1542, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1717,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1544,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1717, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2776, 2776, 2777, 2778, 2779, 2780, 2781, 2782,
+ 2783, 2784, 2785, 2786, 2786, 1717, 1717, 1717,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 2787,
+ 2787, 2787, 2787, 2787, 2787, 2787, 2787, 1592,
+ 2788, 2789, 2788, 2788, 2788, 2788, 2788, 2788,
+ 2788, 2788, 2788, 2788, 2788, 2789, 2788, 2789,
+ 2788, 2788, 2789, 2788, 2788, 2788, 2789, 2788,
+ 2788, 2788, 2787, 2787, 2787, 2787, 2787, 2790,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2791, 2793, 2793, 2794, 1717, 1717, 1717,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2792, 2791, 2792, 2792, 2791, 2791, 2792,
+ 2791, 2791, 2791, 2791, 2791, 2791, 2791, 2791,
+ 2791, 2791, 810, 810, 810, 810, 2795, 2795,
+ 2787, 2795, 2795, 2795, 2795, 2795, 2795, 2795,
+ 2795, 2795, 2795, 2796, 2796, 2796, 2796, 2796,
+ 2796, 2796, 2796, 2796, 2796, 2796, 2796, 2796,
+ 2796, 2796, 2796, 2796, 2796, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+ 2797, 2797, 2797, 2797, 2797, 2797, 2797, 2797,
+
+ 2798, 2799, 2799, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1709, 2799, 2799, 2799, 2799, 2799, 2799,
+ 2799, 2799, 2799, 2800, 1717, 1717, 1717, 1717,
+ 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709,
+ 1709, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2799, 2799, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2801, 2801, 2801, 2801, 2801, 2801, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 2802, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1544, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1544, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1545, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1544, 1544,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1506, 1506, 1507,
+ 1507, 1507, 1507, 1507, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1545, 1545, 1545, 1544, 1507, 1545,
+ 1507, 1507, 1545, 2803, 2803, 1544, 1544, 2802,
+ 2802, 2802, 2802, 2802, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 2802, 2802, 2802, 2804, 2804, 2804, 2804, 2804,
+
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1544,
+ 1507, 1544, 1545, 1545, 1507, 1507, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
+ 1545, 1507, 1507, 1507, 1545, 1507, 1507, 1507,
+ 1507, 1545, 1545, 1545, 1507, 1545, 1545, 1545,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1545,
+ 1507, 1545, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1506, 1507, 1506, 1507, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1545, 1507, 1507, 1507, 1507, 1506,
+ 1507, 1506, 1506, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1507, 1507, 1507, 1507, 1544, 1544, 2802,
+
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1508, 1508,
+ 2805, 2805, 2805, 2805, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1544, 2802, 2802, 2802, 2802, 2802,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2803, 2803, 1544, 1544,
+ 1544, 1544, 2806, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 2803, 1544, 1544, 1544, 1544, 2803, 2803, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2807, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1544, 1507, 1507, 1507, 1507, 1507,
+
+ 2808, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 2808, 1507, 1507, 1507, 2808, 1507, 2808,
+ 1507, 2808, 1507, 2808, 1507, 1507, 1507, 2808,
+ 1507, 1507, 1507, 1507, 1507, 1507, 2808, 2808,
+ 1507, 1507, 1507, 1507, 2808, 1507, 2808, 2808,
+ 1507, 1507, 1507, 1507, 2808, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1544, 1544, 2802, 2802, 1545, 1545, 1545,
+ 1507, 1507, 1507, 1545, 1545, 1545, 1545, 1545,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 2809, 2809,
+ 2809, 2810, 2810, 2810, 1508, 1508, 1508, 1508,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1545, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1507, 1507, 1507, 1507, 1545, 1545, 1545, 1507,
+ 1507, 1507, 1507, 1507, 1507, 1507, 1507, 1507,
+ 1545, 1507, 1507, 1507, 1507, 1507, 1544, 1544,
+ 1544, 1544, 1544, 1544, 2803, 1544, 1544, 1544,
+ 2802, 2807, 2807, 2801, 2801, 2811, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1544, 1544, 1544, 1544, 1544, 1544, 1544, 1544,
+ 1544, 1544, 1544, 1544, 1544, 1717, 1717, 1717,
+ 1544, 1544, 1544, 1544, 2807, 2807, 2807, 2801,
+ 2801, 2812, 2811, 1717, 1717, 1717, 1717, 1717,
+
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
+ 1506, 1506, 1506, 1506, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 2812, 2812, 2812,
+ 2812, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 2811, 2811, 2811, 2811, 2811,
+ 2811, 2811, 2811, 2811, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508,
+ 1508, 1508, 1508, 1508, 1508, 1508, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1510, 1510, 1510, 1510, 1510, 1510, 1510, 1510,
+ 1510, 1510, 1510, 1510, 1717, 2811, 2811, 2813,
+ 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
+ 2814, 2806, 2806, 2806, 2806, 2806, 2806, 2815,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2806, 2807,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2806, 2815, 2815, 2806, 2806, 2806, 2806, 2806,
+ 2806, 2806, 2807, 2807, 2806, 2806, 2806, 2811,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2801, 2812, 2812, 2812,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2801,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2801, 2801, 2801, 2801, 2812, 2812, 2812, 2812,
+ 2812, 2811, 1717, 2812, 2812, 2812, 2812, 1717,
+ 1717, 1717, 2812, 2811, 2812, 2812, 2812, 2812,
+ 2802, 2802, 2802, 2802, 2802, 2807, 2807, 2807,
+ 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
+ 2807, 2807, 2801, 2801, 2801, 2801, 2801, 2801,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 1717, 1717, 2811, 2811, 2811,
+ 2811, 2811, 2811, 1717, 1717, 1717, 2811, 2811,
+ 2812, 2812, 2812, 2812, 2812, 2816, 2816, 2812,
+ 2816, 2816, 2811, 2813, 2811, 2811, 2811, 2811,
+ 2802, 2812, 2812, 2811, 2811, 2811, 2811, 2811,
+ 2811, 2811, 2811, 1717, 1717, 2813, 2813, 2813,
+ 2801, 2815, 2815, 2815, 2815, 2815, 2815, 2815,
+ 2815, 2815, 2815, 2815, 2815, 2815, 2801, 2801,
+ 2801, 2801, 2801, 2801, 2801, 2801, 2801, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593,
+ 1593, 1593, 1593, 1593, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2812, 2812, 2812, 2812, 2812, 2812, 2812, 2812,
+ 2812, 2812, 2812, 2812, 2812, 2812, 1717, 1717,
+ 2811, 2811, 2811, 2811, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2811, 2811, 2811, 2811, 2811, 2811, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 2817, 2817,
+
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2818,
+ 2818, 2818, 2818, 2818, 2818, 2818, 2818, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
+ 1721, 1721, 1721, 1721, 1721, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 2819, 2819,
+ 2819, 2819, 2819, 2819, 2819, 2819, 1717, 1717,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1723, 1723, 1723, 1723, 1723, 1723,
+ 1723, 1723, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1724, 1724, 1724, 1724, 1724, 1724, 1724,
+ 1724, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 2820, 2820,
+ 2820, 2820, 2820, 2820, 2820, 2820, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+ 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717,
+
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 202, 202,
+ 202, 202, 202, 202, 202, 202, 2817, 2817,
+
+ 1399, 2693, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 2821, 2821, 2821, 2821, 2821, 2821, 2821, 2821,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 2822, 2822, 2822, 2822, 2822, 2822, 2822, 2822,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+ 1399, 1399, 1399, 1399, 1399, 1399, 1399, 1399,
+
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
+ 2823, 2823, 2823, 2823, 2823, 2823, 2817, 2817
};
#define GET_PROP_INDEX(ucs4) \
@@ -6157,7 +6489,7 @@ static const Properties uc_properties[] = {
{ 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 1, 1, 36, 1, 2 },
{ 9, 7, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 2 },
{ 9, 8, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 21, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 35, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 35, 5, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 12, 3, 13, 2 },
{ 25, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -6216,19 +6548,19 @@ static const Properties uc_properties[] = {
{ 24, 10, 0, 0, -1, -16, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 5, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 410}, {1, 407}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 418}, {1, 415}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 121}, {0, 121}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 17, { {1, 413}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 17, { {1, 421}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -232}, {0, -232}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 492}, {1, 492}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 500}, {1, 500}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -121}, {0, 0}, {0, 0}, {0, -121} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -300}, {0, -300}, {0, -268} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 195}, {0, 195}, {0, 0} }, 0, 10, 12, 6, 3 },
@@ -6255,7 +6587,7 @@ static const Properties uc_properties[] = {
{ 16, 0, 0, 0, -1, 0, 1, 80, { {0, 1}, {0, -1}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, -2}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -79}, {0, -79}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 511}, {1, 511}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, -97}, {0, 0}, {0, 0}, {0, -97} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, -56}, {0, 0}, {0, 0}, {0, -56} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 4, 17, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
@@ -6301,12 +6633,13 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 31}, {1, 31}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -218}, {0, -218}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 33}, {1, 33}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -69}, {0, -69}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -217}, {0, -217}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -71}, {0, -71}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -219}, {0, -219}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 35}, {1, 35}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 37}, {1, 37}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {1, 39}, {1, 39}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
@@ -6362,12 +6695,12 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 37}, {0, 0}, {0, 0}, {0, 37} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 63}, {0, 0}, {0, 0}, {0, 63} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 495}, {1, 495}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -38}, {0, -38}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -37}, {0, -37}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 499}, {1, 499}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -31}, {0, -31}, {0, 1} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 4 },
@@ -6440,9 +6773,11 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 6 },
{ 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 6 },
+ { 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 11, 6 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 459}, {1, 456}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 467}, {1, 464}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 12, 2 },
{ 20, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 6 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 6 },
@@ -6475,6 +6810,7 @@ static const Properties uc_properties[] = {
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 7 },
{ 0, 17, 18, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 7 },
{ 18, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
{ 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 7 },
{ 25, 1, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 14, 12, 0, 7 },
{ 10, 5, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 8 },
@@ -6494,7 +6830,7 @@ static const Properties uc_properties[] = {
{ 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 2 },
{ 10, 13, 0, 5, -1, 0, 15, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 21, 4, 8 },
{ 13, 13, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
- { 25, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 8 },
+ { 25, 13, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 8 },
{ 25, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 2 },
{ 18, 13, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
@@ -6592,10 +6928,13 @@ static const Properties uc_properties[] = {
{ 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 15, 8, 11, 66 },
{ 25, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 12, 66 },
{ 17, 1, 0, 1, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 66 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 66 },
+ { 27, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 66 },
{ 18, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 82 },
{ 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 82 },
{ 17, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 82 },
{ 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 82 },
+ { 25, 1, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 82 },
{ 18, 1, 0, 3, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
{ 18, 1, 0, 2, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
{ 18, 1, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 95 },
@@ -6612,6 +6951,7 @@ static const Properties uc_properties[] = {
{ 18, 13, 0, 2, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 18, 13, 0, 3, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
{ 10, 5, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 2 },
{ 0, 17, 220, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 8 },
@@ -6632,7 +6972,6 @@ static const Properties uc_properties[] = {
{ 0, 17, 7, 5, -1, 0, 1, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 0, 17, 9, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 11 },
- { 0, 17, 230, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 2 },
{ 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 11 },
@@ -6681,6 +7020,7 @@ static const Properties uc_properties[] = {
{ 27, 4, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 12 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 12 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 12 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 12 },
{ 0, 17, 0, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 13 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 13 },
{ 1, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 13 },
@@ -6700,6 +7040,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
{ 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 13 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 13 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 14 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 14 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 14 },
@@ -6768,6 +7109,7 @@ static const Properties uc_properties[] = {
{ 27, 4, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 16 },
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 17 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 17 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 17 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 17 },
@@ -6788,11 +7130,13 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
{ 3, 0, 0, 0, 8, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 17 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 17 },
{ 5, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 17 },
{ 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 17 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 18 },
{ 1, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 18 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 18 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
{ 0, 17, 7, 5, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 18 },
{ 18, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 18 },
@@ -6879,9 +7223,11 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 21 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 21 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
{ 0, 17, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 0, 33, 8, 22 },
{ 0, 17, 118, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
+ { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 17, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 22 },
{ 0, 17, 122, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 22 },
{ 3, 0, 0, 0, 0, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 22 },
@@ -6988,12 +7334,12 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 24 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 25 },
{ 14, 0, 0, 0, -1, 0, 13, 0, { {0, 7264}, {0, 0}, {0, 0}, {0, 7264} }, 0, 10, 12, 7, 25 },
- { 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 6, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
{ 25, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
- { 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
+ { 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 3008}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 25 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 9, 10, 25, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 10, 10, 26, 8, 26 },
@@ -7021,7 +7367,6 @@ static const Properties uc_properties[] = {
{ 5, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
{ 5, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
{ 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 27 },
- { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 39}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 41}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 43}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 45}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
@@ -7101,15 +7446,16 @@ static const Properties uc_properties[] = {
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 193}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 195}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {1, 197}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
+ { 14, 0, 0, 0, -1, 0, 4, 0, { {1, 199}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 4, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 8}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -8}, {0, -8}, {0, -8} }, 0, 10, 12, 6, 28 },
{ 20, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 29 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 29 },
- { 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 29 },
+ { 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 29 },
{ 25, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 29 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 29 },
- { 6, 9, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 30 },
+ { 6, 9, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 30 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 30 },
{ 21, 10, 0, 0, -1, 1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 30 },
{ 22, 10, 0, 0, -1, -1, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 30 },
@@ -7173,6 +7519,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 33 },
{ 18, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 17, 0, 0, 2, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
+ { 18, 0, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
{ 0, 17, 228, 5, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 33 },
{ 18, 0, 0, 2, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 33 },
@@ -7245,7 +7592,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 62 },
{ 18, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 62 },
{ 0, 17, 7, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 62 },
- { 1, 0, 0, 0, -1, 0, 9, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
+ { 1, 0, 0, 0, -1, 0, 9, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 62 },
{ 1, 0, 0, 0, -1, 0, 9, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
{ 1, 0, 9, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 62 },
{ 3, 0, 0, 0, 0, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 62 },
@@ -7323,7 +7670,8 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6243}, {0, -6243}, {0, -6211} }, 0, 10, 12, 6, 5 },
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6236}, {0, -6236}, {0, -6204} }, 0, 10, 12, 6, 5 },
{ 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, -6181}, {0, -6181}, {0, -6180} }, 0, 10, 12, 6, 5 },
- { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {1, 199}, {1, 199}, {1, 711} }, 0, 10, 12, 6, 5 },
+ { 15, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {1, 201}, {1, 201}, {1, 719} }, 0, 10, 12, 6, 5 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, -3008}, {0, 0}, {0, 0}, {0, -3008} }, 0, 10, 12, 8, 25 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 67 },
{ 0, 17, 230, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -7331,18 +7679,19 @@ static const Properties uc_properties[] = {
{ 0, 17, 220, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
- { 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
- { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
+ { 0, 17, 230, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 2 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
{ 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 5 },
{ 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 7, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 5 },
- { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 201}, {1, 201}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 203}, {1, 203}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 3814}, {0, 3814}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {1, 205}, {1, 205}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 0, 17, 230, 5, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
@@ -7357,11 +7706,11 @@ static const Properties uc_properties[] = {
{ 0, 17, 220, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 233, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 506}, {1, 506}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 509}, {1, 509}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 512}, {1, 512}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 515}, {1, 515}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 518}, {1, 518}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 514}, {1, 514}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 517}, {1, 517}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 520}, {1, 520}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 523}, {1, 523}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 526}, {1, 526}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 2, 81, { {0, 0}, {0, -59}, {0, -59}, {0, -58} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 10, 0, { {0, -7615}, {0, 0}, {0, 0}, {0, -7615} }, 0, 10, 12, 7, 3 },
@@ -7369,10 +7718,10 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 8}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {0, 0}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 521}, {1, 521}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 524}, {1, 524}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 528}, {1, 528}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 529}, {1, 529}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 532}, {1, 532}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 540}, {1, 540}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 74}, {0, 74}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 86}, {0, 86}, {0, 0} }, 0, 10, 12, 6, 4 },
@@ -7385,101 +7734,101 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 112}, {0, 112}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 126}, {0, 126}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 570}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 573}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 576}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 579}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 582}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 585}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 588}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 591}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 570}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 573}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 576}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 579}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 582}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 585}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 588}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 591}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 594}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 597}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 600}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 603}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 606}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 609}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 612}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 615}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 594}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 597}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 600}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 603}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 606}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 609}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 612}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 615}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 618}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 621}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 624}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 627}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 630}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 633}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 636}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 639}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 618}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 621}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 624}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 627}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 630}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 633}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 636}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 639}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 654}, {1, 651}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 642}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 660}, {1, 657}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 536}, {1, 536}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 691}, {1, 687}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 578}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 581}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 584}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 587}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 590}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 593}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 596}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 599}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 578}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 581}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 584}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 587}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 590}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 593}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 596}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 599}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 602}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 605}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 608}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 611}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 614}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 617}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 620}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 623}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 602}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 605}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 608}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 611}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 614}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 617}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 620}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 623}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 626}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 629}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 632}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 635}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 638}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 641}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 644}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 647}, {0, 8}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 626}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 629}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 632}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 635}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 638}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 641}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 644}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -8}, {1, 647}, {0, 0}, {0, -8} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 662}, {1, 659}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 650}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 668}, {1, 665}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 544}, {1, 544}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -74}, {0, 0}, {0, 0}, {0, -74} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 642}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 650}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, -7205}, {0, -7205}, {0, -7173} }, 0, 10, 12, 6, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 81, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 666}, {1, 663}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 645}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 672}, {1, 669}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 539}, {1, 539}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 699}, {1, 695}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 674}, {1, 671}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 653}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 680}, {1, 677}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 547}, {1, 547}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -86}, {0, 0}, {0, 0}, {0, -86} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 645}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 542}, {1, 542}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 495}, {1, 495}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 546}, {1, 546}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 549}, {1, 549}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 653}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 550}, {1, 550}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 503}, {1, 503}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 554}, {1, 554}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -100}, {0, 0}, {0, 0}, {0, -100} }, 0, 10, 12, 7, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 553}, {1, 553}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 499}, {1, 499}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 557}, {1, 557}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 561}, {1, 561}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {1, 507}, {1, 507}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 565}, {1, 565}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {0, 7}, {0, 7}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 560}, {1, 560}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 563}, {1, 563}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 568}, {1, 568}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 571}, {1, 571}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -112}, {0, 0}, {0, 0}, {0, -112} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -7}, {0, 0}, {0, 0}, {0, -7} }, 0, 10, 12, 7, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 678}, {1, 675}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 648}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 684}, {1, 681}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 567}, {1, 567}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 707}, {1, 703}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 686}, {1, 683}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 656}, {0, 9}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 692}, {1, 689}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 575}, {1, 575}, {0, 0} }, 0, 10, 12, 6, 4 },
+ { 15, 0, 0, 0, -1, 0, 1, 17, { {0, 0}, {1, 715}, {1, 711}, {0, 0} }, 0, 10, 12, 6, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -128}, {0, 0}, {0, 0}, {0, -128} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 17, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 4 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -126}, {0, 0}, {0, 0}, {0, -126} }, 0, 10, 12, 7, 4 },
- { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 648}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
+ { 16, 0, 0, 0, -1, 0, 1, 17, { {0, -9}, {1, 656}, {0, 0}, {0, -9} }, 0, 10, 12, 7, 4 },
{ 28, 10, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 4 },
- { 6, 9, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
- { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
{ 6, 9, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 4, 5, 2 },
{ 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 20, 4, 2 },
{ 10, 18, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
@@ -7527,7 +7876,7 @@ static const Properties uc_properties[] = {
{ 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
- { 6, 9, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 5, 2 },
+ { 6, 9, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 22, 17, 5, 2 },
{ 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2 },
{ 10, 18, 0, 5, -1, 0, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 2 },
{ 10, 18, 0, 5, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 12, 4, 2 },
@@ -7577,8 +7926,8 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 85, { {0, -7517}, {0, 0}, {0, 0}, {0, -7517} }, 0, 10, 12, 7, 4 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 203}, {0, 0}, {0, 0}, {1, 203} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 205}, {0, 0}, {0, 0}, {1, 205} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 1, 85, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3 },
{ 29, 4, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 0, { {0, 28}, {0, 0}, {0, 0}, {0, 28} }, 0, 10, 12, 7, 3 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
@@ -7607,15 +7956,23 @@ static const Properties uc_properties[] = {
{ 26, 10, 0, 0, -1, -3, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -3, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2016, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 2527, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1923, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1914, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1918, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 2250, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -7, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 1, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1824, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2104, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2108, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 2106, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, 1316, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -138, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 15, 0, 2 },
{ 26, 10, 0, 0, -1, 8, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -7662,17 +8019,14 @@ static const Properties uc_properties[] = {
{ 5, 10, 0, 0, 0, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 7, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 12, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 6, 0, 2 },
@@ -7701,6 +8055,7 @@ static const Properties uc_properties[] = {
{ 26, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1316, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 21, 10, 0, 0, -1, 1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 22, 10, 0, 0, -1, -1, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
{ 29, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 54 },
@@ -7708,27 +8063,34 @@ static const Properties uc_properties[] = {
{ 22, 10, 0, 0, -1, 1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
{ 21, 10, 0, 0, -1, -1, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 22, 10, 0, 0, -1, -3, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 1, 13, 2 },
+ { 26, 10, 0, 0, -1, -1914, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1918, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -1923, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -1824, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2016, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2104, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2106, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 26, 10, 0, 0, -1, -2108, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 26, 10, 0, 0, -1, -2250, 6, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, -2527, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 8, 0, { {0, 48}, {0, 0}, {0, 0}, {0, 48} }, 0, 10, 12, 7, 57 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -48}, {0, -48}, {0, 0} }, 0, 10, 12, 6, 57 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 207}, {0, 0}, {0, 0}, {1, 207} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 211}, {0, 0}, {0, 0}, {1, 211} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 9, 0, { {0, -3814}, {0, 0}, {0, 0}, {0, -3814} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 209}, {0, 0}, {0, 0}, {1, 209} }, 0, 10, 12, 7, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 211}, {1, 211}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 213}, {1, 213}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 215}, {0, 0}, {0, 0}, {1, 215} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 217}, {0, 0}, {0, 0}, {1, 217} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 9, 0, { {1, 213}, {0, 0}, {0, 0}, {1, 213} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 215}, {1, 215}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {1, 217}, {1, 217}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 10, 0, { {1, 219}, {0, 0}, {0, 0}, {1, 219} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 221}, {0, 0}, {0, 0}, {1, 221} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 17, 0, 0, 0, -1, 0, 10, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 223}, {0, 0}, {0, 0}, {1, 223} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 225}, {0, 0}, {0, 0}, {1, 225} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 11, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 8, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 46 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 46 },
{ 15, 0, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 46 },
@@ -7771,6 +8133,9 @@ static const Properties uc_properties[] = {
{ 21, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 13, 2 },
{ 25, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 25, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 37 },
{ 29, 10, 0, 0, -1, 0, 4, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 37 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
@@ -7815,6 +8180,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 36 },
{ 18, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 26 },
{ 29, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 5, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
@@ -7830,6 +8196,7 @@ static const Properties uc_properties[] = {
{ 5, 10, 0, 0, -1, 0, 6, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 8, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 26 },
{ 29, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 0, 35 },
+ { 29, 0, 0, 0, -1, 0, 22, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 13, 0, 0, 0, -1, 0, 0, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
@@ -7839,6 +8206,7 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 14, 8, 38 },
{ 17, 0, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 38 },
{ 29, 10, 0, 0, -1, 0, 4, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 38 },
@@ -7878,29 +8246,38 @@ static const Properties uc_properties[] = {
{ 28, 10, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 17, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 2 },
{ 28, 10, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 227}, {0, 0}, {0, 0}, {1, 227} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 10, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 12, 7, 3 },
{ 28, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 0, 2 },
- { 14, 0, 0, 0, -1, 0, 12, 0, { {1, 229}, {0, 0}, {0, 0}, {1, 229} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 12, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
{ 14, 0, 0, 0, -1, 0, 12, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 13, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 48}, {0, 48}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 14, 0, 0, 0, -1, 0, 13, 0, { {1, 231}, {0, 0}, {0, 0}, {1, 231} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 233}, {0, 0}, {0, 0}, {1, 233} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 13, 0, { {1, 235}, {0, 0}, {0, 0}, {1, 235} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {1, 237}, {0, 0}, {0, 0}, {1, 237} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 18, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 239}, {0, 0}, {0, 0}, {1, 239} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {1, 241}, {0, 0}, {0, 0}, {1, 241} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 12, 7, 3 },
- { 14, 0, 0, 0, -1, 0, 17, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 18, 0, { {1, 243}, {0, 0}, {0, 0}, {1, 243} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 245}, {0, 0}, {0, 0}, {1, 245} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 16, 0, { {1, 247}, {0, 0}, {0, 0}, {1, 247} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 17, 0, { {1, 249}, {0, 0}, {0, 0}, {1, 249} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 928}, {0, 0}, {0, 0}, {0, 928} }, 0, 10, 12, 7, 3 },
{ 14, 0, 0, 0, -1, 0, 17, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {0, 1}, {0, 0}, {0, 0}, {0, 1} }, 0, 10, 12, 7, 3 },
+ { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, -1}, {0, -1}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {0, -48}, {0, 0}, {0, 0}, {0, -48} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 251}, {0, 0}, {0, 0}, {1, 251} }, 0, 10, 12, 7, 3 },
+ { 14, 0, 0, 0, -1, 0, 21, 0, { {1, 253}, {0, 0}, {0, 0}, {1, 253} }, 0, 10, 12, 7, 3 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
{ 17, 0, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 18, 0, 0, 0, -1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 3 },
@@ -7934,6 +8311,8 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 11 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 11 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 11 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 11 },
{ 3, 0, 0, 0, 0, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
{ 3, 0, 0, 0, 1, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
{ 3, 0, 0, 0, 2, 0, 10, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 72 },
@@ -8022,10 +8401,7 @@ static const Properties uc_properties[] = {
{ 17, 0, 0, 0, -1, 0, 16, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 4 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 247}, {1, 247}, {1, 247} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 249}, {1, 249}, {1, 249} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 251}, {1, 251}, {1, 251} }, 0, 10, 12, 6, 28 },
- { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 253}, {1, 253}, {1, 253} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 255}, {1, 255}, {1, 255} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 257}, {1, 257}, {1, 257} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 259}, {1, 259}, {1, 259} }, 0, 10, 12, 6, 28 },
@@ -8102,6 +8478,10 @@ static const Properties uc_properties[] = {
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 401}, {1, 401}, {1, 401} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 403}, {1, 403}, {1, 403} }, 0, 10, 12, 6, 28 },
{ 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 405}, {1, 405}, {1, 405} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 407}, {1, 407}, {1, 407} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 409}, {1, 409}, {1, 409} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 411}, {1, 411}, {1, 411} }, 0, 10, 12, 6, 28 },
+ { 15, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {1, 413}, {1, 413}, {1, 413} }, 0, 10, 12, 6, 28 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 86 },
{ 1, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 86 },
{ 0, 17, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 86 },
@@ -8119,24 +8499,24 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 86 },
{ 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 12, 10, 23, 8, 26 },
{ 18, 0, 0, 0, -1, 0, 2, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 13, 10, 24, 8, 26 },
- { 11, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 0, 34, 0, 0 },
+ { 11, 0, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 34, 0, 0 },
{ 12, 0, 0, 0, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 13, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 6, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 11, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 8, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 419}, {1, 416}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 425}, {1, 422}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 431}, {1, 428}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 438}, {1, 434}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 427}, {1, 424}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 433}, {1, 430}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 439}, {1, 436}, {0, 0} }, 0, 10, 12, 6, 3 },
{ 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 446}, {1, 442}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 453}, {1, 450}, {0, 0} }, 0, 10, 12, 6, 3 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 465}, {1, 462}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 471}, {1, 468}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 477}, {1, 474}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 483}, {1, 480}, {0, 0} }, 0, 10, 12, 6, 6 },
- { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 489}, {1, 486}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 454}, {1, 450}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 461}, {1, 458}, {0, 0} }, 0, 10, 12, 6, 3 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 473}, {1, 470}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 479}, {1, 476}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 485}, {1, 482}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 491}, {1, 488}, {0, 0} }, 0, 10, 12, 6, 6 },
+ { 15, 0, 0, 0, -1, 0, 1, 80, { {0, 0}, {1, 497}, {1, 494}, {0, 0} }, 0, 10, 12, 6, 6 },
{ 18, 1, 0, 0, -1, 0, 4, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
{ 0, 17, 26, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 7 },
{ 18, 1, 0, 0, -1, 0, 1, 85, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 9, 13, 8, 7 },
@@ -8179,16 +8559,16 @@ static const Properties uc_properties[] = {
{ 10, 18, 0, 5, -1, 0, 1, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 22, 4, 2 },
{ 25, 10, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 13, 14, 0, 2 },
{ 25, 6, 0, 0, -1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 3, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 3, 2, 0, 0, 0, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 1, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 2, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 3, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 4, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 5, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 6, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 7, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 8, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
+ { 3, 2, 0, 0, 9, 0, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 14, 9, 2 },
{ 26, 10, 0, 0, -1, 2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 26, 10, 0, 0, -1, -2, 1, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 1, 80, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 14, 7, 3 },
@@ -8282,6 +8662,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 0, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 220, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 61 },
{ 0, 17, 1, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 0, 17, 9, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 61 },
{ 5, 1, 0, 0, 1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
@@ -8289,6 +8670,7 @@ static const Properties uc_properties[] = {
{ 5, 1, 0, 0, 3, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 5, 1, 0, 0, 4, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 5, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
+ { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 61 },
{ 25, 1, 0, 0, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 61 },
@@ -8324,6 +8706,20 @@ static const Properties uc_properties[] = {
{ 14, 1, 0, 0, -1, 0, 17, 0, { {0, 64}, {0, 0}, {0, 0}, {0, 64} }, 0, 10, 12, 7, 130 },
{ 15, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, -64}, {0, -64}, {0, 0} }, 0, 10, 12, 6, 130 },
{ 5, 1, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 130 },
+ { 18, 13, 0, 4, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 144 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 144 },
+ { 3, 5, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
+ { 3, 5, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 144 },
{ 5, 5, 0, 0, 1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 2, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 3, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
@@ -8334,6 +8730,17 @@ static const Properties uc_properties[] = {
{ 5, 5, 0, 0, 8, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, 9, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 5, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
+ { 18, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 147 },
+ { 5, 1, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 147 },
+ { 18, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 18, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 18, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 148 },
+ { 0, 17, 220, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 148 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 148 },
+ { 5, 13, 0, 2, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 148 },
+ { 5, 13, 0, 3, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 148 },
+ { 25, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 148 },
+ { 18, 1, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 149 },
{ 1, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 94 },
{ 0, 17, 0, 5, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 94 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 94 },
@@ -8368,8 +8775,9 @@ static const Properties uc_properties[] = {
{ 0, 17, 9, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 92 },
{ 0, 17, 7, 5, -1, 0, 11, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 92 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 92 },
- { 10, 0, 0, 5, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
+ { 10, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
{ 25, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 92 },
+ { 10, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 6, 12, 4, 92 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 101 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 101 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 101 },
@@ -8400,6 +8808,8 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 96 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 96 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 96 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 96 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 96 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 111 },
{ 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 111 },
{ 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 111 },
@@ -8412,9 +8822,8 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 100 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 100 },
{ 25, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 100 },
- { 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 100 },
- { 0, 17, 7, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
{ 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
+ { 0, 17, 7, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 100 },
{ 25, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 100 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 100 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 100 },
@@ -8461,6 +8870,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 0, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 107 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 107 },
+ { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 0, 17, 7, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 107 },
{ 1, 0, 0, 0, -1, 0, 16, 17, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 107 },
@@ -8485,6 +8895,8 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
{ 3, 0, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
{ 3, 0, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 135 },
+ { 0, 17, 230, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 135 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 135 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 124 },
{ 1, 0, 0, 0, -1, 0, 16, 204, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 124 },
{ 1, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 124 },
@@ -8540,6 +8952,7 @@ static const Properties uc_properties[] = {
{ 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 102 },
{ 1, 0, 9, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 102 },
{ 0, 17, 7, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 102 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 102 },
{ 3, 0, 0, 0, 0, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 2, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
@@ -8551,6 +8964,7 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 8, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 3, 0, 0, 0, 9, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 102 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 8, 126 },
{ 0, 17, 0, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 126 },
{ 1, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 33, 4, 126 },
{ 0, 17, 9, 5, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 33, 4, 126 },
@@ -8567,6 +8981,12 @@ static const Properties uc_properties[] = {
{ 5, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 126 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 126 },
{ 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 33, 0, 126 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 142 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 142 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 0, 17, 7, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 142 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 142 },
{ 14, 0, 0, 0, -1, 0, 16, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 125 },
{ 15, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 125 },
{ 3, 0, 0, 0, 0, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 125 },
@@ -8581,10 +9001,16 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 125 },
{ 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 125 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 125 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 150 },
+ { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 150 },
+ { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 150 },
+ { 0, 17, 9, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 150 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 150 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 141 },
{ 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
- { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 141 },
+ { 0, 0, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
{ 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 141 },
+ { 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 141 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 141 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 141 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 141 },
@@ -8593,10 +9019,12 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 140 },
{ 0, 17, 0, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 140 },
{ 1, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 140 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 140 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 7, 10, 12, 8, 140 },
{ 0, 17, 9, 5, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 140 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 140 },
{ 25, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 18, 0, 140 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 119 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 133 },
@@ -8636,6 +9064,28 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 7, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
{ 3, 0, 0, 0, 8, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
{ 3, 0, 0, 0, 9, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 138 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 143 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 143 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 143 },
+ { 0, 17, 9, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 143 },
+ { 3, 0, 0, 0, 0, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 2, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 3, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 4, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 5, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 6, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 7, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 8, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 3, 0, 0, 0, 9, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 143 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 145 },
+ { 0, 17, 0, 5, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 145 },
+ { 1, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 145 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 12, 145 },
+ { 5, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 16 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 16 },
+ { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 16 },
+ { 25, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 16 },
{ 18, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 63 },
@@ -8646,6 +9096,9 @@ static const Properties uc_properties[] = {
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 81 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 81 },
{ 18, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 4, 4, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 0, 4, 81 },
+ { 10, 0, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 3, 6, 1, 4, 81 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 127 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 0, 8, 127 },
{ 18, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 1, 8, 127 },
@@ -8683,16 +9136,31 @@ static const Properties uc_properties[] = {
{ 3, 0, 0, 0, 8, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 108 },
{ 3, 0, 0, 0, 9, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 108 },
{ 5, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 108 },
+ { 14, 0, 0, 0, -1, 0, 20, 0, { {0, 32}, {0, 0}, {0, 0}, {0, 32} }, 0, 10, 12, 7, 146 },
+ { 15, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, -32}, {0, -32}, {0, 0} }, 0, 10, 12, 6, 146 },
+ { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 0, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 146 },
+ { 25, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 146 },
{ 18, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
+ { 0, 17, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 99 },
{ 1, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 99 },
+ { 1, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 8, 4, 21, 4, 99 },
{ 0, 17, 0, 5, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 99 },
{ 17, 0, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 99 },
{ 17, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 137 },
{ 17, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 139 },
+ { 25, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 2 },
+ { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 5, 8, 2 },
{ 18, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
+ { 18, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 137 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 14, 8, 35 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 34 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 8, 34 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 8, 5, 8, 35 },
{ 18, 0, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 139 },
{ 18, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 105 },
{ 29, 0, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 105 },
@@ -8711,6 +9179,7 @@ static const Properties uc_properties[] = {
{ 0, 17, 230, 5, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 1 },
{ 29, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 0, 17, 230, 5, -1, 0, 8, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 4 },
+ { 5, 0, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 5, 0, 0, 0, -1, 0, 9, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 14, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 15, 0, 0, 0, -1, 0, 5, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 6, 2 },
@@ -8735,6 +9204,33 @@ static const Properties uc_properties[] = {
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 17, 12, 131 },
{ 25, 0, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 131 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 57 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 151 },
+ { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 151 },
+ { 17, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 151 },
+ { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 151 },
+ { 29, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 151 },
+ { 18, 0, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 152 },
+ { 0, 17, 230, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 152 },
+ { 3, 0, 0, 0, 0, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 2, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 3, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 4, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 5, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 6, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 7, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 8, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 3, 0, 0, 0, 9, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 152 },
+ { 27, 4, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 9, 0, 152 },
{ 18, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 113 },
{ 5, 1, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 113 },
{ 0, 17, 220, 5, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 113 },
@@ -8742,6 +9238,7 @@ static const Properties uc_properties[] = {
{ 15, 1, 0, 2, -1, 0, 18, 0, { {0, 0}, {0, -34}, {0, -34}, {0, 0} }, 0, 10, 12, 6, 132 },
{ 0, 17, 230, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 132 },
{ 0, 17, 7, 5, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 21, 4, 132 },
+ { 17, 1, 0, 5, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 132 },
{ 3, 1, 0, 0, 0, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 2, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
@@ -8753,6 +9250,11 @@ static const Properties uc_properties[] = {
{ 3, 1, 0, 0, 8, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 3, 1, 0, 0, 9, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 16, 11, 9, 132 },
{ 25, 1, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 0, 0, 132 },
+ { 5, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 },
+ { 27, 13, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 10, 0, 2 },
+ { 5, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 13, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 18, 13, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 8, 8 },
{ 26, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 8 },
{ 5, 2, 0, 0, 0, 0, 11, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
@@ -8773,6 +9275,7 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 29, 0, 0, 0, -1, 0, 11, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 10, 12, 7, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 6, 7, 28, 0, 2 },
@@ -8780,20 +9283,21 @@ static const Properties uc_properties[] = {
{ 29, 0, 0, 0, -1, 0, 12, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 0, 0, 0, -1, 0, 18, 80, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 15, 19, 31, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 17, 21, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 28, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 4, 4, 31, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 18, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 16, 20, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 13, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 3, 13, 2 },
{ 29, 10, 0, 0, -1, 0, 16, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 5, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
- { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 14, 18, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 21, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 17, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 19, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
+ { 29, 10, 0, 0, -1, 0, 20, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 30, 0, 2 },
{ 13, 18, 0, 0, -1, 0, 2, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 12, 0, 0 },
{ 18, 0, 0, 0, -1, 0, 5, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
{ 18, 0, 0, 0, -1, 0, 12, 0, { {0, 0}, {0, 0}, {0, 0}, {0, 0} }, 0, 0, 14, 8, 37 },
@@ -8862,6 +9366,7 @@ static const unsigned short specialCaseMap[] = {
0x1, 0xa7ad,
0x1, 0x2c6e,
0x1, 0x2c64,
+ 0x1, 0xa7c5,
0x1, 0xa7b1,
0x1, 0xa7b2,
0x1, 0xa7b0,
@@ -8947,6 +9452,7 @@ static const unsigned short specialCaseMap[] = {
0x1, 0xabbf,
0x1, 0xa64a,
0x1, 0xa77d,
+ 0x1, 0xa7c6,
0x1, 0x6b,
0x1, 0xe5,
0x1, 0x26b,
@@ -8969,6 +9475,8 @@ static const unsigned short specialCaseMap[] = {
0x1, 0x29e,
0x1, 0x287,
0x1, 0x29d,
+ 0x1, 0x282,
+ 0x1, 0x1d8e,
0x1, 0x13a0,
0x1, 0x13a1,
0x1, 0x13a2,
@@ -10020,55 +10528,55 @@ static const unsigned short uc_decomposition_trie[] = {
0x15f5, 0x15f7, 0x15f9, 0x15fb, 0x15fd, 0x15ff, 0x1601, 0x1603,
0x1605, 0x1607, 0x1609, 0x160b, 0x160d, 0x160f, 0x1611, 0x1613,
- 0x1615, 0x1617, 0x1619, 0x161b, 0x161d, 0x161f, 0x1621, 0xffff,
+ 0x1615, 0x1617, 0x1619, 0x161b, 0x161d, 0x161f, 0x1621, 0x1623,
- 0x1623, 0x1628, 0x162d, 0x1632, 0x1636, 0x163b, 0x163f, 0x1643,
- 0x1649, 0x164e, 0x1652, 0x1656, 0x165a, 0x165f, 0x1664, 0x1668,
+ 0x1626, 0x162b, 0x1630, 0x1635, 0x1639, 0x163e, 0x1642, 0x1646,
+ 0x164c, 0x1651, 0x1655, 0x1659, 0x165d, 0x1662, 0x1667, 0x166b,
- 0x166c, 0x166f, 0x1673, 0x1678, 0x167d, 0x1680, 0x1686, 0x168d,
- 0x1693, 0x1697, 0x169d, 0x16a3, 0x16a8, 0x16ac, 0x16b0, 0x16b4,
+ 0x166f, 0x1672, 0x1676, 0x167b, 0x1680, 0x1683, 0x1689, 0x1690,
+ 0x1696, 0x169a, 0x16a0, 0x16a6, 0x16ab, 0x16af, 0x16b3, 0x16b7,
- 0x16b9, 0x16bf, 0x16c4, 0x16c8, 0x16cc, 0x16d0, 0x16d3, 0x16d6,
- 0x16d9, 0x16dc, 0x16e0, 0x16e4, 0x16ea, 0x16ee, 0x16f3, 0x16f9,
+ 0x16bc, 0x16c2, 0x16c7, 0x16cb, 0x16cf, 0x16d3, 0x16d6, 0x16d9,
+ 0x16dc, 0x16df, 0x16e3, 0x16e7, 0x16ed, 0x16f1, 0x16f6, 0x16fc,
- 0x16fd, 0x1700, 0x1703, 0x1709, 0x170e, 0x1714, 0x1718, 0x171e,
- 0x1721, 0x1725, 0x1729, 0x172d, 0x1731, 0x1735, 0x173a, 0x173e,
+ 0x1700, 0x1703, 0x1706, 0x170c, 0x1711, 0x1717, 0x171b, 0x1721,
+ 0x1724, 0x1728, 0x172c, 0x1730, 0x1734, 0x1738, 0x173d, 0x1741,
- 0x1741, 0x1745, 0x1749, 0x174d, 0x1752, 0x1756, 0x175a, 0x175e,
- 0x1764, 0x1769, 0x176c, 0x1772, 0x1775, 0x177a, 0x177f, 0x1783,
+ 0x1744, 0x1748, 0x174c, 0x1750, 0x1755, 0x1759, 0x175d, 0x1761,
+ 0x1767, 0x176c, 0x176f, 0x1775, 0x1778, 0x177d, 0x1782, 0x1786,
- 0x1787, 0x178b, 0x1790, 0x1793, 0x1797, 0x179c, 0x179f, 0x17a5,
- 0x17a9, 0x17ac, 0x17af, 0x17b2, 0x17b5, 0x17b8, 0x17bb, 0x17be,
+ 0x178a, 0x178e, 0x1793, 0x1796, 0x179a, 0x179f, 0x17a2, 0x17a8,
+ 0x17ac, 0x17af, 0x17b2, 0x17b5, 0x17b8, 0x17bb, 0x17be, 0x17c1,
- 0x17c1, 0x17c4, 0x17c7, 0x17cb, 0x17cf, 0x17d3, 0x17d7, 0x17db,
- 0x17df, 0x17e3, 0x17e7, 0x17eb, 0x17ef, 0x17f3, 0x17f7, 0x17fb,
+ 0x17c4, 0x17c7, 0x17ca, 0x17ce, 0x17d2, 0x17d6, 0x17da, 0x17de,
+ 0x17e2, 0x17e6, 0x17ea, 0x17ee, 0x17f2, 0x17f6, 0x17fa, 0x17fe,
- 0x17ff, 0x1803, 0x1807, 0x180a, 0x180d, 0x1811, 0x1814, 0x1817,
- 0x181a, 0x181e, 0x1822, 0x1825, 0x1828, 0x182b, 0x182e, 0x1831,
+ 0x1802, 0x1806, 0x180a, 0x180d, 0x1810, 0x1814, 0x1817, 0x181a,
+ 0x181d, 0x1821, 0x1825, 0x1828, 0x182b, 0x182e, 0x1831, 0x1834,
- 0x1836, 0x1839, 0x183c, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b,
- 0x184e, 0x1852, 0x1857, 0x185a, 0x185d, 0x1860, 0x1863, 0x1866,
+ 0x1839, 0x183c, 0x183f, 0x1842, 0x1845, 0x1848, 0x184b, 0x184e,
+ 0x1851, 0x1855, 0x185a, 0x185d, 0x1860, 0x1863, 0x1866, 0x1869,
- 0x1869, 0x186c, 0x1870, 0x1874, 0x1878, 0x187c, 0x187f, 0x1882,
- 0x1885, 0x1888, 0x188b, 0x188e, 0x1891, 0x1894, 0x1897, 0x189a,
+ 0x186c, 0x186f, 0x1873, 0x1877, 0x187b, 0x187f, 0x1882, 0x1885,
+ 0x1888, 0x188b, 0x188e, 0x1891, 0x1894, 0x1897, 0x189a, 0x189d,
- 0x189e, 0x18a2, 0x18a5, 0x18a9, 0x18ad, 0x18b1, 0x18b4, 0x18b8,
- 0x18bc, 0x18c1, 0x18c4, 0x18c8, 0x18cc, 0x18d0, 0x18d4, 0x18da,
+ 0x18a1, 0x18a5, 0x18a8, 0x18ac, 0x18b0, 0x18b4, 0x18b7, 0x18bb,
+ 0x18bf, 0x18c4, 0x18c7, 0x18cb, 0x18cf, 0x18d3, 0x18d7, 0x18dd,
- 0x18e1, 0x18e4, 0x18e7, 0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6,
- 0x18f9, 0x18fc, 0x18ff, 0x1902, 0x1905, 0x1908, 0x190b, 0x190e,
+ 0x18e4, 0x18e7, 0x18ea, 0x18ed, 0x18f0, 0x18f3, 0x18f6, 0x18f9,
+ 0x18fc, 0x18ff, 0x1902, 0x1905, 0x1908, 0x190b, 0x190e, 0x1911,
- 0x1911, 0x1914, 0x1917, 0x191c, 0x191f, 0x1922, 0x1925, 0x192a,
- 0x192e, 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, 0x1940, 0x1943,
+ 0x1914, 0x1917, 0x191a, 0x191f, 0x1922, 0x1925, 0x1928, 0x192d,
+ 0x1931, 0x1934, 0x1937, 0x193a, 0x193d, 0x1940, 0x1943, 0x1946,
- 0x1946, 0x1949, 0x194c, 0x1950, 0x1953, 0x1956, 0x195a, 0x195e,
- 0x1961, 0x1966, 0x196a, 0x196d, 0x1970, 0x1973, 0x1976, 0x197a,
+ 0x1949, 0x194c, 0x194f, 0x1953, 0x1956, 0x1959, 0x195d, 0x1961,
+ 0x1964, 0x1969, 0x196d, 0x1970, 0x1973, 0x1976, 0x1979, 0x197d,
- 0x197e, 0x1981, 0x1984, 0x1987, 0x198a, 0x198d, 0x1990, 0x1993,
- 0x1996, 0x1999, 0x199d, 0x19a1, 0x19a5, 0x19a9, 0x19ad, 0x19b1,
+ 0x1981, 0x1984, 0x1987, 0x198a, 0x198d, 0x1990, 0x1993, 0x1996,
+ 0x1999, 0x199c, 0x19a0, 0x19a4, 0x19a8, 0x19ac, 0x19b0, 0x19b4,
- 0x19b5, 0x19b9, 0x19bd, 0x19c1, 0x19c5, 0x19c9, 0x19cd, 0x19d1,
- 0x19d5, 0x19d9, 0x19dd, 0x19e1, 0x19e5, 0x19e9, 0x19ed, 0x19f1,
+ 0x19b8, 0x19bc, 0x19c0, 0x19c4, 0x19c8, 0x19cc, 0x19d0, 0x19d4,
+ 0x19d8, 0x19dc, 0x19e0, 0x19e4, 0x19e8, 0x19ec, 0x19f0, 0x19f4,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10122,7 +10630,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0x19f5, 0x19f7, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0x19f8, 0x19fa, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10150,7 +10658,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x19f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x19fc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10167,7 +10675,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x19fb, 0x19fd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x19fe, 0x1a00, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10180,7 +10688,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0x19ff, 0x1a01, 0x1a03, 0x1a05,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0x1a02, 0x1a04, 0x1a06, 0x1a08,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10202,234 +10710,234 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x1a07, 0x1a09, 0x1a0b, 0x1a0d, 0x1a0f, 0x1a11, 0x1a13, 0x1a15,
- 0x1a17, 0x1a19, 0x1a1b, 0x1a1d, 0x1a1f, 0x1a21, 0x1a23, 0x1a25,
- 0x1a27, 0x1a29, 0x1a2b, 0x1a2d, 0x1a2f, 0x1a31, 0x1a33, 0x1a35,
- 0x1a37, 0x1a39, 0x1a3b, 0x1a3d, 0x1a3f, 0x1a41, 0x1a43, 0x1a45,
- 0x1a47, 0x1a49, 0x1a4b, 0x1a4d, 0x1a4f, 0x1a51, 0x1a53, 0x1a55,
- 0x1a57, 0x1a59, 0x1a5b, 0x1a5d, 0x1a5f, 0x1a61, 0x1a63, 0x1a65,
- 0x1a67, 0x1a69, 0x1a6b, 0x1a6d, 0x1a6f, 0x1a71, 0x1a73, 0x1a75,
- 0x1a77, 0x1a79, 0x1a7b, 0x1a7d, 0x1a7f, 0x1a81, 0x1a83, 0x1a85,
- 0x1a87, 0x1a89, 0x1a8b, 0x1a8d, 0x1a8f, 0x1a91, 0x1a93, 0x1a95,
- 0x1a97, 0x1a99, 0x1a9b, 0x1a9d, 0x1a9f, 0x1aa1, 0x1aa3, 0x1aa5,
- 0x1aa7, 0x1aa9, 0x1aab, 0x1aad, 0x1aaf, 0x1ab1, 0x1ab3, 0x1ab5,
- 0x1ab7, 0x1ab9, 0x1abb, 0x1abd, 0x1abf, 0x1ac1, 0x1ac3, 0x1ac5,
- 0x1ac7, 0x1ac9, 0x1acb, 0x1acd, 0x1acf, 0x1ad1, 0x1ad3, 0x1ad5,
- 0x1ad7, 0x1ad9, 0x1adb, 0x1add, 0x1adf, 0x1ae1, 0x1ae3, 0x1ae5,
- 0x1ae7, 0x1ae9, 0x1aeb, 0x1aed, 0x1aef, 0x1af1, 0x1af3, 0x1af5,
- 0x1af7, 0x1af9, 0x1afb, 0x1afd, 0x1aff, 0x1b01, 0x1b03, 0x1b05,
- 0x1b07, 0x1b09, 0x1b0b, 0x1b0d, 0x1b0f, 0x1b11, 0x1b13, 0x1b15,
- 0x1b17, 0x1b19, 0x1b1b, 0x1b1d, 0x1b1f, 0x1b21, 0x1b23, 0x1b25,
- 0x1b27, 0x1b29, 0x1b2b, 0x1b2d, 0x1b2f, 0x1b31, 0x1b33, 0x1b35,
- 0x1b37, 0x1b39, 0x1b3b, 0x1b3d, 0x1b3f, 0x1b41, 0x1b43, 0x1b45,
- 0x1b47, 0x1b49, 0x1b4b, 0x1b4d, 0x1b4f, 0x1b51, 0x1b53, 0x1b55,
- 0x1b57, 0x1b59, 0x1b5b, 0x1b5d, 0x1b5f, 0x1b61, 0x1b63, 0x1b65,
- 0x1b67, 0x1b69, 0x1b6b, 0x1b6d, 0x1b6f, 0x1b71, 0x1b73, 0x1b75,
- 0x1b77, 0x1b79, 0x1b7b, 0x1b7d, 0x1b7f, 0x1b81, 0x1b83, 0x1b85,
- 0x1b87, 0x1b89, 0x1b8b, 0x1b8d, 0x1b8f, 0x1b91, 0x1b93, 0x1b95,
- 0x1b97, 0x1b99, 0x1b9b, 0x1b9d, 0x1b9f, 0x1ba1, 0x1ba3, 0x1ba5,
- 0x1ba7, 0x1ba9, 0x1bab, 0x1bad, 0x1baf, 0x1bb1, 0x1bb3, 0x1bb5,
- 0x1bb7, 0x1bb9, 0x1bbb, 0x1bbd, 0x1bbf, 0x1bc1, 0x1bc3, 0x1bc5,
- 0x1bc7, 0x1bc9, 0x1bcb, 0x1bcd, 0x1bcf, 0x1bd1, 0x1bd3, 0x1bd5,
- 0x1bd7, 0x1bd9, 0x1bdb, 0x1bdd, 0x1bdf, 0x1be1, 0x1be3, 0x1be5,
- 0x1be7, 0x1be9, 0x1beb, 0x1bed, 0x1bef, 0x1bf1, 0x1bf3, 0x1bf5,
- 0x1bf7, 0x1bf9, 0x1bfb, 0x1bfd, 0x1bff, 0x1c01, 0x1c03, 0x1c05,
+ 0x1a0a, 0x1a0c, 0x1a0e, 0x1a10, 0x1a12, 0x1a14, 0x1a16, 0x1a18,
+ 0x1a1a, 0x1a1c, 0x1a1e, 0x1a20, 0x1a22, 0x1a24, 0x1a26, 0x1a28,
+ 0x1a2a, 0x1a2c, 0x1a2e, 0x1a30, 0x1a32, 0x1a34, 0x1a36, 0x1a38,
+ 0x1a3a, 0x1a3c, 0x1a3e, 0x1a40, 0x1a42, 0x1a44, 0x1a46, 0x1a48,
+ 0x1a4a, 0x1a4c, 0x1a4e, 0x1a50, 0x1a52, 0x1a54, 0x1a56, 0x1a58,
+ 0x1a5a, 0x1a5c, 0x1a5e, 0x1a60, 0x1a62, 0x1a64, 0x1a66, 0x1a68,
+ 0x1a6a, 0x1a6c, 0x1a6e, 0x1a70, 0x1a72, 0x1a74, 0x1a76, 0x1a78,
+ 0x1a7a, 0x1a7c, 0x1a7e, 0x1a80, 0x1a82, 0x1a84, 0x1a86, 0x1a88,
+ 0x1a8a, 0x1a8c, 0x1a8e, 0x1a90, 0x1a92, 0x1a94, 0x1a96, 0x1a98,
+ 0x1a9a, 0x1a9c, 0x1a9e, 0x1aa0, 0x1aa2, 0x1aa4, 0x1aa6, 0x1aa8,
+ 0x1aaa, 0x1aac, 0x1aae, 0x1ab0, 0x1ab2, 0x1ab4, 0x1ab6, 0x1ab8,
+ 0x1aba, 0x1abc, 0x1abe, 0x1ac0, 0x1ac2, 0x1ac4, 0x1ac6, 0x1ac8,
+ 0x1aca, 0x1acc, 0x1ace, 0x1ad0, 0x1ad2, 0x1ad4, 0x1ad6, 0x1ad8,
+ 0x1ada, 0x1adc, 0x1ade, 0x1ae0, 0x1ae2, 0x1ae4, 0x1ae6, 0x1ae8,
+ 0x1aea, 0x1aec, 0x1aee, 0x1af0, 0x1af2, 0x1af4, 0x1af6, 0x1af8,
+ 0x1afa, 0x1afc, 0x1afe, 0x1b00, 0x1b02, 0x1b04, 0x1b06, 0x1b08,
+ 0x1b0a, 0x1b0c, 0x1b0e, 0x1b10, 0x1b12, 0x1b14, 0x1b16, 0x1b18,
+ 0x1b1a, 0x1b1c, 0x1b1e, 0x1b20, 0x1b22, 0x1b24, 0x1b26, 0x1b28,
+ 0x1b2a, 0x1b2c, 0x1b2e, 0x1b30, 0x1b32, 0x1b34, 0x1b36, 0x1b38,
+ 0x1b3a, 0x1b3c, 0x1b3e, 0x1b40, 0x1b42, 0x1b44, 0x1b46, 0x1b48,
+ 0x1b4a, 0x1b4c, 0x1b4e, 0x1b50, 0x1b52, 0x1b54, 0x1b56, 0x1b58,
+ 0x1b5a, 0x1b5c, 0x1b5e, 0x1b60, 0x1b62, 0x1b64, 0x1b66, 0x1b68,
+ 0x1b6a, 0x1b6c, 0x1b6e, 0x1b70, 0x1b72, 0x1b74, 0x1b76, 0x1b78,
+ 0x1b7a, 0x1b7c, 0x1b7e, 0x1b80, 0x1b82, 0x1b84, 0x1b86, 0x1b88,
+ 0x1b8a, 0x1b8c, 0x1b8e, 0x1b90, 0x1b92, 0x1b94, 0x1b96, 0x1b98,
+ 0x1b9a, 0x1b9c, 0x1b9e, 0x1ba0, 0x1ba2, 0x1ba4, 0x1ba6, 0x1ba8,
+ 0x1baa, 0x1bac, 0x1bae, 0x1bb0, 0x1bb2, 0x1bb4, 0x1bb6, 0x1bb8,
+ 0x1bba, 0x1bbc, 0x1bbe, 0x1bc0, 0x1bc2, 0x1bc4, 0x1bc6, 0x1bc8,
+ 0x1bca, 0x1bcc, 0x1bce, 0x1bd0, 0x1bd2, 0x1bd4, 0x1bd6, 0x1bd8,
+ 0x1bda, 0x1bdc, 0x1bde, 0x1be0, 0x1be2, 0x1be4, 0x1be6, 0x1be8,
+ 0x1bea, 0x1bec, 0x1bee, 0x1bf0, 0x1bf2, 0x1bf4, 0x1bf6, 0x1bf8,
+ 0x1bfa, 0x1bfc, 0x1bfe, 0x1c00, 0x1c02, 0x1c04, 0x1c06, 0x1c08,
- 0x1c07, 0x1c09, 0x1c0b, 0x1c0d, 0x1c0f, 0x1c11, 0x1c13, 0x1c15,
- 0x1c17, 0x1c19, 0x1c1b, 0x1c1d, 0x1c1f, 0x1c21, 0xffff, 0xffff,
- 0x1c23, 0xffff, 0x1c25, 0xffff, 0xffff, 0x1c27, 0x1c29, 0x1c2b,
- 0x1c2d, 0x1c2f, 0x1c31, 0x1c33, 0x1c35, 0x1c37, 0x1c39, 0xffff,
- 0x1c3b, 0xffff, 0x1c3d, 0xffff, 0xffff, 0x1c3f, 0x1c41, 0xffff,
- 0xffff, 0xffff, 0x1c43, 0x1c45, 0x1c47, 0x1c49, 0x1c4b, 0x1c4d,
- 0x1c4f, 0x1c51, 0x1c53, 0x1c55, 0x1c57, 0x1c59, 0x1c5b, 0x1c5d,
- 0x1c5f, 0x1c61, 0x1c63, 0x1c65, 0x1c67, 0x1c69, 0x1c6b, 0x1c6d,
- 0x1c6f, 0x1c71, 0x1c73, 0x1c75, 0x1c77, 0x1c79, 0x1c7b, 0x1c7d,
- 0x1c7f, 0x1c81, 0x1c83, 0x1c85, 0x1c87, 0x1c89, 0x1c8b, 0x1c8d,
- 0x1c8f, 0x1c91, 0x1c93, 0x1c95, 0x1c97, 0x1c99, 0x1c9b, 0x1c9d,
- 0x1c9f, 0x1ca1, 0x1ca3, 0x1ca5, 0x1ca7, 0x1ca9, 0x1cab, 0x1cad,
- 0x1caf, 0x1cb1, 0x1cb3, 0x1cb5, 0x1cb7, 0x1cb9, 0x1cbb, 0x1cbd,
- 0x1cbf, 0x1cc1, 0x1cc3, 0x1cc5, 0x1cc7, 0x1cca, 0xffff, 0xffff,
- 0x1ccc, 0x1cce, 0x1cd0, 0x1cd2, 0x1cd4, 0x1cd6, 0x1cd8, 0x1cda,
- 0x1cdc, 0x1cde, 0x1ce0, 0x1ce2, 0x1ce4, 0x1ce6, 0x1ce8, 0x1cea,
- 0x1cec, 0x1cee, 0x1cf0, 0x1cf2, 0x1cf4, 0x1cf6, 0x1cf8, 0x1cfa,
- 0x1cfc, 0x1cfe, 0x1d00, 0x1d02, 0x1d04, 0x1d06, 0x1d08, 0x1d0a,
- 0x1d0c, 0x1d0e, 0x1d10, 0x1d12, 0x1d14, 0x1d16, 0x1d18, 0x1d1a,
- 0x1d1c, 0x1d1e, 0x1d20, 0x1d22, 0x1d24, 0x1d26, 0x1d28, 0x1d2a,
- 0x1d2c, 0x1d2e, 0x1d30, 0x1d32, 0x1d34, 0x1d36, 0x1d38, 0x1d3a,
- 0x1d3c, 0x1d3e, 0x1d40, 0x1d42, 0x1d44, 0x1d46, 0x1d48, 0x1d4a,
- 0x1d4c, 0x1d4e, 0x1d50, 0x1d52, 0x1d54, 0x1d56, 0x1d58, 0x1d5a,
- 0x1d5c, 0x1d5e, 0x1d60, 0x1d62, 0x1d64, 0x1d66, 0x1d68, 0x1d6a,
- 0x1d6c, 0x1d6e, 0x1d70, 0x1d72, 0x1d74, 0x1d76, 0x1d78, 0x1d7a,
- 0x1d7c, 0x1d7e, 0x1d80, 0x1d82, 0x1d84, 0x1d86, 0x1d88, 0x1d8a,
- 0x1d8d, 0x1d90, 0x1d93, 0x1d95, 0x1d97, 0x1d99, 0x1d9c, 0x1d9f,
- 0x1da2, 0x1da4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x1c0a, 0x1c0c, 0x1c0e, 0x1c10, 0x1c12, 0x1c14, 0x1c16, 0x1c18,
+ 0x1c1a, 0x1c1c, 0x1c1e, 0x1c20, 0x1c22, 0x1c24, 0xffff, 0xffff,
+ 0x1c26, 0xffff, 0x1c28, 0xffff, 0xffff, 0x1c2a, 0x1c2c, 0x1c2e,
+ 0x1c30, 0x1c32, 0x1c34, 0x1c36, 0x1c38, 0x1c3a, 0x1c3c, 0xffff,
+ 0x1c3e, 0xffff, 0x1c40, 0xffff, 0xffff, 0x1c42, 0x1c44, 0xffff,
+ 0xffff, 0xffff, 0x1c46, 0x1c48, 0x1c4a, 0x1c4c, 0x1c4e, 0x1c50,
+ 0x1c52, 0x1c54, 0x1c56, 0x1c58, 0x1c5a, 0x1c5c, 0x1c5e, 0x1c60,
+ 0x1c62, 0x1c64, 0x1c66, 0x1c68, 0x1c6a, 0x1c6c, 0x1c6e, 0x1c70,
+ 0x1c72, 0x1c74, 0x1c76, 0x1c78, 0x1c7a, 0x1c7c, 0x1c7e, 0x1c80,
+ 0x1c82, 0x1c84, 0x1c86, 0x1c88, 0x1c8a, 0x1c8c, 0x1c8e, 0x1c90,
+ 0x1c92, 0x1c94, 0x1c96, 0x1c98, 0x1c9a, 0x1c9c, 0x1c9e, 0x1ca0,
+ 0x1ca2, 0x1ca4, 0x1ca6, 0x1ca8, 0x1caa, 0x1cac, 0x1cae, 0x1cb0,
+ 0x1cb2, 0x1cb4, 0x1cb6, 0x1cb8, 0x1cba, 0x1cbc, 0x1cbe, 0x1cc0,
+ 0x1cc2, 0x1cc4, 0x1cc6, 0x1cc8, 0x1cca, 0x1ccd, 0xffff, 0xffff,
+ 0x1ccf, 0x1cd1, 0x1cd3, 0x1cd5, 0x1cd7, 0x1cd9, 0x1cdb, 0x1cdd,
+ 0x1cdf, 0x1ce1, 0x1ce3, 0x1ce5, 0x1ce7, 0x1ce9, 0x1ceb, 0x1ced,
+ 0x1cef, 0x1cf1, 0x1cf3, 0x1cf5, 0x1cf7, 0x1cf9, 0x1cfb, 0x1cfd,
+ 0x1cff, 0x1d01, 0x1d03, 0x1d05, 0x1d07, 0x1d09, 0x1d0b, 0x1d0d,
+ 0x1d0f, 0x1d11, 0x1d13, 0x1d15, 0x1d17, 0x1d19, 0x1d1b, 0x1d1d,
+ 0x1d1f, 0x1d21, 0x1d23, 0x1d25, 0x1d27, 0x1d29, 0x1d2b, 0x1d2d,
+ 0x1d2f, 0x1d31, 0x1d33, 0x1d35, 0x1d37, 0x1d39, 0x1d3b, 0x1d3d,
+ 0x1d3f, 0x1d41, 0x1d43, 0x1d45, 0x1d47, 0x1d49, 0x1d4b, 0x1d4d,
+ 0x1d4f, 0x1d51, 0x1d53, 0x1d55, 0x1d57, 0x1d59, 0x1d5b, 0x1d5d,
+ 0x1d5f, 0x1d61, 0x1d63, 0x1d65, 0x1d67, 0x1d69, 0x1d6b, 0x1d6d,
+ 0x1d6f, 0x1d71, 0x1d73, 0x1d75, 0x1d77, 0x1d79, 0x1d7b, 0x1d7d,
+ 0x1d7f, 0x1d81, 0x1d83, 0x1d85, 0x1d87, 0x1d89, 0x1d8b, 0x1d8d,
+ 0x1d90, 0x1d93, 0x1d96, 0x1d98, 0x1d9a, 0x1d9c, 0x1d9f, 0x1da2,
+ 0x1da5, 0x1da7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x1da6, 0x1da9, 0x1dac, 0x1daf, 0x1db3, 0x1db7, 0x1dba, 0xffff,
+ 0x1da9, 0x1dac, 0x1daf, 0x1db2, 0x1db6, 0x1dba, 0x1dbd, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x1dbd, 0x1dc0, 0x1dc3, 0x1dc6, 0x1dc9,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dcc, 0xffff, 0x1dcf,
- 0x1dd2, 0x1dd4, 0x1dd6, 0x1dd8, 0x1dda, 0x1ddc, 0x1dde, 0x1de0,
- 0x1de2, 0x1de4, 0x1de6, 0x1de9, 0x1dec, 0x1def, 0x1df2, 0x1df5,
- 0x1df8, 0x1dfb, 0x1dfe, 0x1e01, 0x1e04, 0x1e07, 0x1e0a, 0xffff,
- 0x1e0d, 0x1e10, 0x1e13, 0x1e16, 0x1e19, 0xffff, 0x1e1c, 0xffff,
- 0x1e1f, 0x1e22, 0xffff, 0x1e25, 0x1e28, 0xffff, 0x1e2b, 0x1e2e,
- 0x1e31, 0x1e34, 0x1e37, 0x1e3a, 0x1e3d, 0x1e40, 0x1e43, 0x1e46,
- 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57,
- 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67,
- 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77,
- 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87,
- 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1e95, 0x1e97,
- 0x1e99, 0x1e9b, 0x1e9d, 0x1e9f, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7,
- 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7,
- 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7,
- 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7,
- 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7,
- 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7,
- 0x1ef9, 0x1efb, 0x1efd, 0x1eff, 0x1f01, 0x1f03, 0x1f05, 0x1f07,
- 0x1f09, 0x1f0b, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x1f0d, 0x1f0f, 0x1f11, 0x1f13, 0x1f15,
- 0x1f17, 0x1f19, 0x1f1b, 0x1f1d, 0x1f1f, 0x1f21, 0x1f23, 0x1f25,
- 0x1f27, 0x1f29, 0x1f2b, 0x1f2d, 0x1f2f, 0x1f31, 0x1f33, 0x1f35,
- 0x1f37, 0x1f39, 0x1f3b, 0x1f3e, 0x1f41, 0x1f44, 0x1f47, 0x1f4a,
- 0x1f4d, 0x1f50, 0x1f53, 0x1f56, 0x1f59, 0x1f5c, 0x1f5f, 0x1f62,
- 0x1f65, 0x1f68, 0x1f6b, 0x1f6e, 0x1f71, 0x1f73, 0x1f75, 0x1f77,
-
- 0x1f79, 0x1f7c, 0x1f7f, 0x1f82, 0x1f85, 0x1f88, 0x1f8b, 0x1f8e,
- 0x1f91, 0x1f94, 0x1f97, 0x1f9a, 0x1f9d, 0x1fa0, 0x1fa3, 0x1fa6,
- 0x1fa9, 0x1fac, 0x1faf, 0x1fb2, 0x1fb5, 0x1fb8, 0x1fbb, 0x1fbe,
- 0x1fc1, 0x1fc4, 0x1fc7, 0x1fca, 0x1fcd, 0x1fd0, 0x1fd3, 0x1fd6,
- 0x1fd9, 0x1fdc, 0x1fdf, 0x1fe2, 0x1fe5, 0x1fe8, 0x1feb, 0x1fee,
- 0x1ff1, 0x1ff4, 0x1ff7, 0x1ffa, 0x1ffd, 0x2000, 0x2003, 0x2006,
- 0x2009, 0x200c, 0x200f, 0x2012, 0x2015, 0x2018, 0x201b, 0x201e,
- 0x2021, 0x2024, 0x2027, 0x202a, 0x202d, 0x2030, 0x2033, 0x2036,
- 0x2039, 0x203c, 0x203f, 0x2042, 0x2045, 0x2048, 0x204b, 0x204e,
- 0x2051, 0x2054, 0x2057, 0x205a, 0x205d, 0x2060, 0x2063, 0x2066,
- 0x2069, 0x206c, 0x206f, 0x2072, 0x2075, 0x2078, 0x207b, 0x207e,
- 0x2081, 0x2084, 0x2087, 0x208a, 0x208d, 0x2090, 0x2093, 0x2097,
- 0x209b, 0x209f, 0x20a3, 0x20a7, 0x20ab, 0x20ae, 0x20b1, 0x20b4,
- 0x20b7, 0x20ba, 0x20bd, 0x20c0, 0x20c3, 0x20c6, 0x20c9, 0x20cc,
- 0x20cf, 0x20d2, 0x20d5, 0x20d8, 0x20db, 0x20de, 0x20e1, 0x20e4,
- 0x20e7, 0x20ea, 0x20ed, 0x20f0, 0x20f3, 0x20f6, 0x20f9, 0x20fc,
- 0x20ff, 0x2102, 0x2105, 0x2108, 0x210b, 0x210e, 0x2111, 0x2114,
- 0x2117, 0x211a, 0x211d, 0x2120, 0x2123, 0x2126, 0x2129, 0x212c,
- 0x212f, 0x2132, 0x2135, 0x2138, 0x213b, 0x213e, 0x2141, 0x2144,
- 0x2147, 0x214a, 0x214d, 0x2150, 0x2153, 0x2156, 0x2159, 0x215c,
- 0x215f, 0x2162, 0x2165, 0x2168, 0x216b, 0x216e, 0x2171, 0x2174,
- 0x2177, 0x217a, 0x217d, 0x2180, 0x2183, 0x2186, 0x2189, 0x218c,
- 0x218f, 0x2192, 0x2195, 0x2198, 0x219b, 0x219e, 0x21a1, 0x21a4,
- 0x21a7, 0x21aa, 0x21ad, 0x21b0, 0x21b3, 0x21b6, 0x21b9, 0x21bc,
- 0x21bf, 0x21c2, 0x21c5, 0x21c8, 0x21cb, 0x21ce, 0x21d1, 0x21d4,
- 0x21d7, 0x21da, 0x21dd, 0x21e0, 0x21e3, 0x21e6, 0x21e9, 0x21ec,
- 0x21ef, 0x21f2, 0x21f5, 0x21f8, 0x21fb, 0x21fe, 0x2201, 0x2204,
- 0x2207, 0x220a, 0x220d, 0x2210, 0x2213, 0x2216, 0x2219, 0x221c,
- 0x221f, 0x2222, 0x2225, 0x2228, 0x222b, 0x222e, 0x2231, 0x2234,
- 0x2237, 0x223a, 0x223d, 0x2240, 0x2243, 0x2246, 0x2249, 0x224c,
- 0x224f, 0x2252, 0x2255, 0x2259, 0x225d, 0x2261, 0x2264, 0x2267,
- 0x226a, 0x226d, 0x2270, 0x2273, 0x2276, 0x2279, 0x227c, 0x227f,
-
- 0x2282, 0x2285, 0x2288, 0x228b, 0x228e, 0x2291, 0x2294, 0x2297,
- 0x229a, 0x229d, 0x22a0, 0x22a3, 0x22a6, 0x22a9, 0x22ac, 0x22af,
- 0x22b2, 0x22b5, 0x22b8, 0x22bb, 0x22be, 0x22c1, 0x22c4, 0x22c7,
- 0x22ca, 0x22cd, 0x22d0, 0x22d3, 0x22d6, 0x22d9, 0x22dc, 0x22df,
- 0x22e2, 0x22e5, 0x22e8, 0x22eb, 0x22ee, 0x22f1, 0x22f4, 0x22f7,
- 0x22fa, 0x22fd, 0x2300, 0x2303, 0x2306, 0x2309, 0x230c, 0x230f,
- 0x2312, 0x2315, 0x2318, 0x231b, 0x231e, 0x2321, 0x2324, 0x2327,
- 0x232a, 0x232d, 0x2330, 0x2333, 0x2336, 0x2339, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x233c, 0x2340, 0x2344, 0x2348, 0x234c, 0x2350, 0x2354, 0x2358,
- 0x235c, 0x2360, 0x2364, 0x2368, 0x236c, 0x2370, 0x2374, 0x2378,
- 0x237c, 0x2380, 0x2384, 0x2388, 0x238c, 0x2390, 0x2394, 0x2398,
- 0x239c, 0x23a0, 0x23a4, 0x23a8, 0x23ac, 0x23b0, 0x23b4, 0x23b8,
- 0x23bc, 0x23c0, 0x23c4, 0x23c8, 0x23cc, 0x23d0, 0x23d4, 0x23d8,
- 0x23dc, 0x23e0, 0x23e4, 0x23e8, 0x23ec, 0x23f0, 0x23f4, 0x23f8,
- 0x23fc, 0x2400, 0x2404, 0x2408, 0x240c, 0x2410, 0x2414, 0x2418,
- 0x241c, 0x2420, 0x2424, 0x2428, 0x242c, 0x2430, 0x2434, 0x2438,
- 0xffff, 0xffff, 0x243c, 0x2440, 0x2444, 0x2448, 0x244c, 0x2450,
- 0x2454, 0x2458, 0x245c, 0x2460, 0x2464, 0x2468, 0x246c, 0x2470,
- 0x2474, 0x2478, 0x247c, 0x2480, 0x2484, 0x2488, 0x248c, 0x2490,
- 0x2494, 0x2498, 0x249c, 0x24a0, 0x24a4, 0x24a8, 0x24ac, 0x24b0,
- 0x24b4, 0x24b8, 0x24bc, 0x24c0, 0x24c4, 0x24c8, 0x24cc, 0x24d0,
- 0x24d4, 0x24d8, 0x24dc, 0x24e0, 0x24e4, 0x24e8, 0x24ec, 0x24f0,
- 0x24f4, 0x24f8, 0x24fc, 0x2500, 0x2504, 0x2508, 0x250c, 0x2510,
+ 0xffff, 0xffff, 0xffff, 0x1dc0, 0x1dc3, 0x1dc6, 0x1dc9, 0x1dcc,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x1dcf, 0xffff, 0x1dd2,
+ 0x1dd5, 0x1dd7, 0x1dd9, 0x1ddb, 0x1ddd, 0x1ddf, 0x1de1, 0x1de3,
+ 0x1de5, 0x1de7, 0x1de9, 0x1dec, 0x1def, 0x1df2, 0x1df5, 0x1df8,
+ 0x1dfb, 0x1dfe, 0x1e01, 0x1e04, 0x1e07, 0x1e0a, 0x1e0d, 0xffff,
+ 0x1e10, 0x1e13, 0x1e16, 0x1e19, 0x1e1c, 0xffff, 0x1e1f, 0xffff,
+ 0x1e22, 0x1e25, 0xffff, 0x1e28, 0x1e2b, 0xffff, 0x1e2e, 0x1e31,
+ 0x1e34, 0x1e37, 0x1e3a, 0x1e3d, 0x1e40, 0x1e43, 0x1e46, 0x1e49,
+ 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a,
+ 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a,
+ 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a,
+ 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a,
+ 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e96, 0x1e98, 0x1e9a,
+ 0x1e9c, 0x1e9e, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa,
+ 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba,
+ 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca,
+ 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda,
+ 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea,
+ 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa,
+ 0x1efc, 0x1efe, 0x1f00, 0x1f02, 0x1f04, 0x1f06, 0x1f08, 0x1f0a,
+ 0x1f0c, 0x1f0e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x1f10, 0x1f12, 0x1f14, 0x1f16, 0x1f18,
+ 0x1f1a, 0x1f1c, 0x1f1e, 0x1f20, 0x1f22, 0x1f24, 0x1f26, 0x1f28,
+ 0x1f2a, 0x1f2c, 0x1f2e, 0x1f30, 0x1f32, 0x1f34, 0x1f36, 0x1f38,
+ 0x1f3a, 0x1f3c, 0x1f3e, 0x1f41, 0x1f44, 0x1f47, 0x1f4a, 0x1f4d,
+ 0x1f50, 0x1f53, 0x1f56, 0x1f59, 0x1f5c, 0x1f5f, 0x1f62, 0x1f65,
+ 0x1f68, 0x1f6b, 0x1f6e, 0x1f71, 0x1f74, 0x1f76, 0x1f78, 0x1f7a,
+
+ 0x1f7c, 0x1f7f, 0x1f82, 0x1f85, 0x1f88, 0x1f8b, 0x1f8e, 0x1f91,
+ 0x1f94, 0x1f97, 0x1f9a, 0x1f9d, 0x1fa0, 0x1fa3, 0x1fa6, 0x1fa9,
+ 0x1fac, 0x1faf, 0x1fb2, 0x1fb5, 0x1fb8, 0x1fbb, 0x1fbe, 0x1fc1,
+ 0x1fc4, 0x1fc7, 0x1fca, 0x1fcd, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fd9,
+ 0x1fdc, 0x1fdf, 0x1fe2, 0x1fe5, 0x1fe8, 0x1feb, 0x1fee, 0x1ff1,
+ 0x1ff4, 0x1ff7, 0x1ffa, 0x1ffd, 0x2000, 0x2003, 0x2006, 0x2009,
+ 0x200c, 0x200f, 0x2012, 0x2015, 0x2018, 0x201b, 0x201e, 0x2021,
+ 0x2024, 0x2027, 0x202a, 0x202d, 0x2030, 0x2033, 0x2036, 0x2039,
+ 0x203c, 0x203f, 0x2042, 0x2045, 0x2048, 0x204b, 0x204e, 0x2051,
+ 0x2054, 0x2057, 0x205a, 0x205d, 0x2060, 0x2063, 0x2066, 0x2069,
+ 0x206c, 0x206f, 0x2072, 0x2075, 0x2078, 0x207b, 0x207e, 0x2081,
+ 0x2084, 0x2087, 0x208a, 0x208d, 0x2090, 0x2093, 0x2096, 0x209a,
+ 0x209e, 0x20a2, 0x20a6, 0x20aa, 0x20ae, 0x20b1, 0x20b4, 0x20b7,
+ 0x20ba, 0x20bd, 0x20c0, 0x20c3, 0x20c6, 0x20c9, 0x20cc, 0x20cf,
+ 0x20d2, 0x20d5, 0x20d8, 0x20db, 0x20de, 0x20e1, 0x20e4, 0x20e7,
+ 0x20ea, 0x20ed, 0x20f0, 0x20f3, 0x20f6, 0x20f9, 0x20fc, 0x20ff,
+ 0x2102, 0x2105, 0x2108, 0x210b, 0x210e, 0x2111, 0x2114, 0x2117,
+ 0x211a, 0x211d, 0x2120, 0x2123, 0x2126, 0x2129, 0x212c, 0x212f,
+ 0x2132, 0x2135, 0x2138, 0x213b, 0x213e, 0x2141, 0x2144, 0x2147,
+ 0x214a, 0x214d, 0x2150, 0x2153, 0x2156, 0x2159, 0x215c, 0x215f,
+ 0x2162, 0x2165, 0x2168, 0x216b, 0x216e, 0x2171, 0x2174, 0x2177,
+ 0x217a, 0x217d, 0x2180, 0x2183, 0x2186, 0x2189, 0x218c, 0x218f,
+ 0x2192, 0x2195, 0x2198, 0x219b, 0x219e, 0x21a1, 0x21a4, 0x21a7,
+ 0x21aa, 0x21ad, 0x21b0, 0x21b3, 0x21b6, 0x21b9, 0x21bc, 0x21bf,
+ 0x21c2, 0x21c5, 0x21c8, 0x21cb, 0x21ce, 0x21d1, 0x21d4, 0x21d7,
+ 0x21da, 0x21dd, 0x21e0, 0x21e3, 0x21e6, 0x21e9, 0x21ec, 0x21ef,
+ 0x21f2, 0x21f5, 0x21f8, 0x21fb, 0x21fe, 0x2201, 0x2204, 0x2207,
+ 0x220a, 0x220d, 0x2210, 0x2213, 0x2216, 0x2219, 0x221c, 0x221f,
+ 0x2222, 0x2225, 0x2228, 0x222b, 0x222e, 0x2231, 0x2234, 0x2237,
+ 0x223a, 0x223d, 0x2240, 0x2243, 0x2246, 0x2249, 0x224c, 0x224f,
+ 0x2252, 0x2255, 0x2258, 0x225c, 0x2260, 0x2264, 0x2267, 0x226a,
+ 0x226d, 0x2270, 0x2273, 0x2276, 0x2279, 0x227c, 0x227f, 0x2282,
+
+ 0x2285, 0x2288, 0x228b, 0x228e, 0x2291, 0x2294, 0x2297, 0x229a,
+ 0x229d, 0x22a0, 0x22a3, 0x22a6, 0x22a9, 0x22ac, 0x22af, 0x22b2,
+ 0x22b5, 0x22b8, 0x22bb, 0x22be, 0x22c1, 0x22c4, 0x22c7, 0x22ca,
+ 0x22cd, 0x22d0, 0x22d3, 0x22d6, 0x22d9, 0x22dc, 0x22df, 0x22e2,
+ 0x22e5, 0x22e8, 0x22eb, 0x22ee, 0x22f1, 0x22f4, 0x22f7, 0x22fa,
+ 0x22fd, 0x2300, 0x2303, 0x2306, 0x2309, 0x230c, 0x230f, 0x2312,
+ 0x2315, 0x2318, 0x231b, 0x231e, 0x2321, 0x2324, 0x2327, 0x232a,
+ 0x232d, 0x2330, 0x2333, 0x2336, 0x2339, 0x233c, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x233f, 0x2343, 0x2347, 0x234b, 0x234f, 0x2353, 0x2357, 0x235b,
+ 0x235f, 0x2363, 0x2367, 0x236b, 0x236f, 0x2373, 0x2377, 0x237b,
+ 0x237f, 0x2383, 0x2387, 0x238b, 0x238f, 0x2393, 0x2397, 0x239b,
+ 0x239f, 0x23a3, 0x23a7, 0x23ab, 0x23af, 0x23b3, 0x23b7, 0x23bb,
+ 0x23bf, 0x23c3, 0x23c7, 0x23cb, 0x23cf, 0x23d3, 0x23d7, 0x23db,
+ 0x23df, 0x23e3, 0x23e7, 0x23eb, 0x23ef, 0x23f3, 0x23f7, 0x23fb,
+ 0x23ff, 0x2403, 0x2407, 0x240b, 0x240f, 0x2413, 0x2417, 0x241b,
+ 0x241f, 0x2423, 0x2427, 0x242b, 0x242f, 0x2433, 0x2437, 0x243b,
+ 0xffff, 0xffff, 0x243f, 0x2443, 0x2447, 0x244b, 0x244f, 0x2453,
+ 0x2457, 0x245b, 0x245f, 0x2463, 0x2467, 0x246b, 0x246f, 0x2473,
+ 0x2477, 0x247b, 0x247f, 0x2483, 0x2487, 0x248b, 0x248f, 0x2493,
+ 0x2497, 0x249b, 0x249f, 0x24a3, 0x24a7, 0x24ab, 0x24af, 0x24b3,
+ 0x24b7, 0x24bb, 0x24bf, 0x24c3, 0x24c7, 0x24cb, 0x24cf, 0x24d3,
+ 0x24d7, 0x24db, 0x24df, 0x24e3, 0x24e7, 0x24eb, 0x24ef, 0x24f3,
+ 0x24f7, 0x24fb, 0x24ff, 0x2503, 0x2507, 0x250b, 0x250f, 0x2513,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2514, 0x2518, 0x251c, 0x2521, 0x2526, 0x252b, 0x2530, 0x2535,
- 0x253a, 0x253f, 0x2543, 0x2556, 0x255f, 0xffff, 0xffff, 0xffff,
+ 0x2517, 0x251b, 0x251f, 0x2524, 0x2529, 0x252e, 0x2533, 0x2538,
+ 0x253d, 0x2542, 0x2546, 0x2559, 0x2562, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2564, 0x2566, 0x2568, 0x256a, 0x256c, 0x256e, 0x2570, 0x2572,
- 0x2574, 0x2576, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x2567, 0x2569, 0x256b, 0x256d, 0x256f, 0x2571, 0x2573, 0x2575,
+ 0x2577, 0x2579, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2578, 0x257a, 0x257c, 0x257e, 0x2580, 0x2582, 0x2584, 0x2586,
- 0x2588, 0x258a, 0x258c, 0x258e, 0x2590, 0x2592, 0x2594, 0x2596,
- 0x2598, 0x259a, 0x259c, 0x259e, 0x25a0, 0xffff, 0xffff, 0x25a2,
- 0x25a4, 0x25a6, 0x25a8, 0x25aa, 0x25ac, 0x25ae, 0x25b0, 0x25b2,
- 0x25b4, 0x25b6, 0x25b8, 0xffff, 0x25ba, 0x25bc, 0x25be, 0x25c0,
- 0x25c2, 0x25c4, 0x25c6, 0x25c8, 0x25ca, 0x25cc, 0x25ce, 0x25d0,
- 0x25d2, 0x25d4, 0x25d6, 0x25d8, 0x25da, 0x25dc, 0x25de, 0xffff,
- 0x25e0, 0x25e2, 0x25e4, 0x25e6, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x25e8, 0x25eb, 0x25ee, 0xffff, 0x25f1, 0xffff, 0x25f4, 0x25f7,
- 0x25fa, 0x25fd, 0x2600, 0x2603, 0x2606, 0x2609, 0x260c, 0x260f,
- 0x2612, 0x2614, 0x2616, 0x2618, 0x261a, 0x261c, 0x261e, 0x2620,
- 0x2622, 0x2624, 0x2626, 0x2628, 0x262a, 0x262c, 0x262e, 0x2630,
- 0x2632, 0x2634, 0x2636, 0x2638, 0x263a, 0x263c, 0x263e, 0x2640,
- 0x2642, 0x2644, 0x2646, 0x2648, 0x264a, 0x264c, 0x264e, 0x2650,
- 0x2652, 0x2654, 0x2656, 0x2658, 0x265a, 0x265c, 0x265e, 0x2660,
- 0x2662, 0x2664, 0x2666, 0x2668, 0x266a, 0x266c, 0x266e, 0x2670,
- 0x2672, 0x2674, 0x2676, 0x2678, 0x267a, 0x267c, 0x267e, 0x2680,
- 0x2682, 0x2684, 0x2686, 0x2688, 0x268a, 0x268c, 0x268e, 0x2690,
- 0x2692, 0x2694, 0x2696, 0x2698, 0x269a, 0x269c, 0x269e, 0x26a0,
- 0x26a2, 0x26a4, 0x26a6, 0x26a8, 0x26aa, 0x26ac, 0x26ae, 0x26b0,
- 0x26b2, 0x26b4, 0x26b6, 0x26b8, 0x26ba, 0x26bc, 0x26be, 0x26c0,
- 0x26c2, 0x26c4, 0x26c6, 0x26c8, 0x26ca, 0x26cc, 0x26ce, 0x26d0,
- 0x26d2, 0x26d4, 0x26d6, 0x26d8, 0x26da, 0x26dc, 0x26de, 0x26e0,
- 0x26e2, 0x26e4, 0x26e6, 0x26e8, 0x26ea, 0x26ec, 0x26ee, 0x26f0,
- 0x26f2, 0x26f4, 0x26f6, 0x26f8, 0x26fa, 0x26fc, 0x26ff, 0x2702,
- 0x2705, 0x2708, 0x270b, 0x270e, 0x2711, 0xffff, 0xffff, 0xffff,
+ 0x257b, 0x257d, 0x257f, 0x2581, 0x2583, 0x2585, 0x2587, 0x2589,
+ 0x258b, 0x258d, 0x258f, 0x2591, 0x2593, 0x2595, 0x2597, 0x2599,
+ 0x259b, 0x259d, 0x259f, 0x25a1, 0x25a3, 0xffff, 0xffff, 0x25a5,
+ 0x25a7, 0x25a9, 0x25ab, 0x25ad, 0x25af, 0x25b1, 0x25b3, 0x25b5,
+ 0x25b7, 0x25b9, 0x25bb, 0xffff, 0x25bd, 0x25bf, 0x25c1, 0x25c3,
+ 0x25c5, 0x25c7, 0x25c9, 0x25cb, 0x25cd, 0x25cf, 0x25d1, 0x25d3,
+ 0x25d5, 0x25d7, 0x25d9, 0x25db, 0x25dd, 0x25df, 0x25e1, 0xffff,
+ 0x25e3, 0x25e5, 0x25e7, 0x25e9, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x25eb, 0x25ee, 0x25f1, 0xffff, 0x25f4, 0xffff, 0x25f7, 0x25fa,
+ 0x25fd, 0x2600, 0x2603, 0x2606, 0x2609, 0x260c, 0x260f, 0x2612,
+ 0x2615, 0x2617, 0x2619, 0x261b, 0x261d, 0x261f, 0x2621, 0x2623,
+ 0x2625, 0x2627, 0x2629, 0x262b, 0x262d, 0x262f, 0x2631, 0x2633,
+ 0x2635, 0x2637, 0x2639, 0x263b, 0x263d, 0x263f, 0x2641, 0x2643,
+ 0x2645, 0x2647, 0x2649, 0x264b, 0x264d, 0x264f, 0x2651, 0x2653,
+ 0x2655, 0x2657, 0x2659, 0x265b, 0x265d, 0x265f, 0x2661, 0x2663,
+ 0x2665, 0x2667, 0x2669, 0x266b, 0x266d, 0x266f, 0x2671, 0x2673,
+ 0x2675, 0x2677, 0x2679, 0x267b, 0x267d, 0x267f, 0x2681, 0x2683,
+ 0x2685, 0x2687, 0x2689, 0x268b, 0x268d, 0x268f, 0x2691, 0x2693,
+ 0x2695, 0x2697, 0x2699, 0x269b, 0x269d, 0x269f, 0x26a1, 0x26a3,
+ 0x26a5, 0x26a7, 0x26a9, 0x26ab, 0x26ad, 0x26af, 0x26b1, 0x26b3,
+ 0x26b5, 0x26b7, 0x26b9, 0x26bb, 0x26bd, 0x26bf, 0x26c1, 0x26c3,
+ 0x26c5, 0x26c7, 0x26c9, 0x26cb, 0x26cd, 0x26cf, 0x26d1, 0x26d3,
+ 0x26d5, 0x26d7, 0x26d9, 0x26db, 0x26dd, 0x26df, 0x26e1, 0x26e3,
+ 0x26e5, 0x26e7, 0x26e9, 0x26eb, 0x26ed, 0x26ef, 0x26f1, 0x26f3,
+ 0x26f5, 0x26f7, 0x26f9, 0x26fb, 0x26fd, 0x26ff, 0x2702, 0x2705,
+ 0x2708, 0x270b, 0x270e, 0x2711, 0x2714, 0xffff, 0xffff, 0xffff,
- 0xffff, 0x2714, 0x2716, 0x2718, 0x271a, 0x271c, 0x271e, 0x2720,
- 0x2722, 0x2724, 0x2726, 0x2728, 0x272a, 0x272c, 0x272e, 0x2730,
- 0x2732, 0x2734, 0x2736, 0x2738, 0x273a, 0x273c, 0x273e, 0x2740,
- 0x2742, 0x2744, 0x2746, 0x2748, 0x274a, 0x274c, 0x274e, 0x2750,
- 0x2752, 0x2754, 0x2756, 0x2758, 0x275a, 0x275c, 0x275e, 0x2760,
- 0x2762, 0x2764, 0x2766, 0x2768, 0x276a, 0x276c, 0x276e, 0x2770,
- 0x2772, 0x2774, 0x2776, 0x2778, 0x277a, 0x277c, 0x277e, 0x2780,
- 0x2782, 0x2784, 0x2786, 0x2788, 0x278a, 0x278c, 0x278e, 0x2790,
- 0x2792, 0x2794, 0x2796, 0x2798, 0x279a, 0x279c, 0x279e, 0x27a0,
- 0x27a2, 0x27a4, 0x27a6, 0x27a8, 0x27aa, 0x27ac, 0x27ae, 0x27b0,
- 0x27b2, 0x27b4, 0x27b6, 0x27b8, 0x27ba, 0x27bc, 0x27be, 0x27c0,
- 0x27c2, 0x27c4, 0x27c6, 0x27c8, 0x27ca, 0x27cc, 0x27ce, 0x27d0,
- 0x27d2, 0x27d4, 0x27d6, 0x27d8, 0x27da, 0x27dc, 0x27de, 0x27e0,
- 0x27e2, 0x27e4, 0x27e6, 0x27e8, 0x27ea, 0x27ec, 0x27ee, 0x27f0,
- 0x27f2, 0x27f4, 0x27f6, 0x27f8, 0x27fa, 0x27fc, 0x27fe, 0x2800,
- 0x2802, 0x2804, 0x2806, 0x2808, 0x280a, 0x280c, 0x280e, 0x2810,
- 0x2812, 0x2814, 0x2816, 0x2818, 0x281a, 0x281c, 0x281e, 0x2820,
- 0x2822, 0x2824, 0x2826, 0x2828, 0x282a, 0x282c, 0x282e, 0x2830,
- 0x2832, 0x2834, 0x2836, 0x2838, 0x283a, 0x283c, 0x283e, 0x2840,
- 0x2842, 0x2844, 0x2846, 0x2848, 0x284a, 0x284c, 0x284e, 0x2850,
- 0x2852, 0x2854, 0x2856, 0x2858, 0x285a, 0x285c, 0x285e, 0x2860,
- 0x2862, 0x2864, 0x2866, 0x2868, 0x286a, 0x286c, 0x286e, 0x2870,
- 0x2872, 0x2874, 0x2876, 0x2878, 0x287a, 0x287c, 0x287e, 0x2880,
- 0x2882, 0x2884, 0x2886, 0x2888, 0x288a, 0x288c, 0x288e, 0xffff,
- 0xffff, 0xffff, 0x2890, 0x2892, 0x2894, 0x2896, 0x2898, 0x289a,
- 0xffff, 0xffff, 0x289c, 0x289e, 0x28a0, 0x28a2, 0x28a4, 0x28a6,
- 0xffff, 0xffff, 0x28a8, 0x28aa, 0x28ac, 0x28ae, 0x28b0, 0x28b2,
- 0xffff, 0xffff, 0x28b4, 0x28b6, 0x28b8, 0xffff, 0xffff, 0xffff,
- 0x28ba, 0x28bc, 0x28be, 0x28c0, 0x28c2, 0x28c4, 0x28c6, 0xffff,
- 0x28c8, 0x28ca, 0x28cc, 0x28ce, 0x28d0, 0x28d2, 0x28d4, 0xffff,
+ 0xffff, 0x2717, 0x2719, 0x271b, 0x271d, 0x271f, 0x2721, 0x2723,
+ 0x2725, 0x2727, 0x2729, 0x272b, 0x272d, 0x272f, 0x2731, 0x2733,
+ 0x2735, 0x2737, 0x2739, 0x273b, 0x273d, 0x273f, 0x2741, 0x2743,
+ 0x2745, 0x2747, 0x2749, 0x274b, 0x274d, 0x274f, 0x2751, 0x2753,
+ 0x2755, 0x2757, 0x2759, 0x275b, 0x275d, 0x275f, 0x2761, 0x2763,
+ 0x2765, 0x2767, 0x2769, 0x276b, 0x276d, 0x276f, 0x2771, 0x2773,
+ 0x2775, 0x2777, 0x2779, 0x277b, 0x277d, 0x277f, 0x2781, 0x2783,
+ 0x2785, 0x2787, 0x2789, 0x278b, 0x278d, 0x278f, 0x2791, 0x2793,
+ 0x2795, 0x2797, 0x2799, 0x279b, 0x279d, 0x279f, 0x27a1, 0x27a3,
+ 0x27a5, 0x27a7, 0x27a9, 0x27ab, 0x27ad, 0x27af, 0x27b1, 0x27b3,
+ 0x27b5, 0x27b7, 0x27b9, 0x27bb, 0x27bd, 0x27bf, 0x27c1, 0x27c3,
+ 0x27c5, 0x27c7, 0x27c9, 0x27cb, 0x27cd, 0x27cf, 0x27d1, 0x27d3,
+ 0x27d5, 0x27d7, 0x27d9, 0x27db, 0x27dd, 0x27df, 0x27e1, 0x27e3,
+ 0x27e5, 0x27e7, 0x27e9, 0x27eb, 0x27ed, 0x27ef, 0x27f1, 0x27f3,
+ 0x27f5, 0x27f7, 0x27f9, 0x27fb, 0x27fd, 0x27ff, 0x2801, 0x2803,
+ 0x2805, 0x2807, 0x2809, 0x280b, 0x280d, 0x280f, 0x2811, 0x2813,
+ 0x2815, 0x2817, 0x2819, 0x281b, 0x281d, 0x281f, 0x2821, 0x2823,
+ 0x2825, 0x2827, 0x2829, 0x282b, 0x282d, 0x282f, 0x2831, 0x2833,
+ 0x2835, 0x2837, 0x2839, 0x283b, 0x283d, 0x283f, 0x2841, 0x2843,
+ 0x2845, 0x2847, 0x2849, 0x284b, 0x284d, 0x284f, 0x2851, 0x2853,
+ 0x2855, 0x2857, 0x2859, 0x285b, 0x285d, 0x285f, 0x2861, 0x2863,
+ 0x2865, 0x2867, 0x2869, 0x286b, 0x286d, 0x286f, 0x2871, 0x2873,
+ 0x2875, 0x2877, 0x2879, 0x287b, 0x287d, 0x287f, 0x2881, 0x2883,
+ 0x2885, 0x2887, 0x2889, 0x288b, 0x288d, 0x288f, 0x2891, 0xffff,
+ 0xffff, 0xffff, 0x2893, 0x2895, 0x2897, 0x2899, 0x289b, 0x289d,
+ 0xffff, 0xffff, 0x289f, 0x28a1, 0x28a3, 0x28a5, 0x28a7, 0x28a9,
+ 0xffff, 0xffff, 0x28ab, 0x28ad, 0x28af, 0x28b1, 0x28b3, 0x28b5,
+ 0xffff, 0xffff, 0x28b7, 0x28b9, 0x28bb, 0xffff, 0xffff, 0xffff,
+ 0x28bd, 0x28bf, 0x28c1, 0x28c3, 0x28c5, 0x28c7, 0x28c9, 0xffff,
+ 0x28cb, 0x28cd, 0x28cf, 0x28d1, 0x28d3, 0x28d5, 0x28d7, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10452,9 +10960,9 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x28d6, 0xffff, 0x28db, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x28d9, 0xffff, 0x28de, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28e0, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28e3, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10471,7 +10979,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e5, 0x28ea,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x28e8, 0x28ed,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10508,7 +11016,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28ef, 0x28f4, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28f2, 0x28f7, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10555,7 +11063,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x28f9, 0x28fe, 0xffff, 0x2903, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x28fc, 0x2901, 0xffff, 0x2906, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10588,7 +11096,7 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x2908, 0x290d, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x290b, 0x2910, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10609,8 +11117,8 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2912, 0x2917,
- 0x291c, 0x2921, 0x2926, 0x292b, 0x2930, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x2915, 0x291a,
+ 0x291f, 0x2924, 0x2929, 0x292e, 0x2933, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10621,8 +11129,8 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x2935, 0x293a, 0x293f, 0x2944, 0x2949,
- 0x294e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0xffff, 0x2938, 0x293d, 0x2942, 0x2947, 0x294c,
+ 0x2951, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10631,162 +11139,162 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x2953, 0x2955, 0x2957, 0x2959, 0x295b, 0x295d, 0x295f, 0x2961,
- 0x2963, 0x2965, 0x2967, 0x2969, 0x296b, 0x296d, 0x296f, 0x2971,
- 0x2973, 0x2975, 0x2977, 0x2979, 0x297b, 0x297d, 0x297f, 0x2981,
- 0x2983, 0x2985, 0x2987, 0x2989, 0x298b, 0x298d, 0x298f, 0x2991,
- 0x2993, 0x2995, 0x2997, 0x2999, 0x299b, 0x299d, 0x299f, 0x29a1,
- 0x29a3, 0x29a5, 0x29a7, 0x29a9, 0x29ab, 0x29ad, 0x29af, 0x29b1,
- 0x29b3, 0x29b5, 0x29b7, 0x29b9, 0x29bb, 0x29bd, 0x29bf, 0x29c1,
- 0x29c3, 0x29c5, 0x29c7, 0x29c9, 0x29cb, 0x29cd, 0x29cf, 0x29d1,
- 0x29d3, 0x29d5, 0x29d7, 0x29d9, 0x29db, 0x29dd, 0x29df, 0x29e1,
- 0x29e3, 0x29e5, 0x29e7, 0x29e9, 0x29eb, 0x29ed, 0x29ef, 0x29f1,
- 0x29f3, 0x29f5, 0x29f7, 0x29f9, 0x29fb, 0xffff, 0x29fd, 0x29ff,
- 0x2a01, 0x2a03, 0x2a05, 0x2a07, 0x2a09, 0x2a0b, 0x2a0d, 0x2a0f,
- 0x2a11, 0x2a13, 0x2a15, 0x2a17, 0x2a19, 0x2a1b, 0x2a1d, 0x2a1f,
- 0x2a21, 0x2a23, 0x2a25, 0x2a27, 0x2a29, 0x2a2b, 0x2a2d, 0x2a2f,
- 0x2a31, 0x2a33, 0x2a35, 0x2a37, 0x2a39, 0x2a3b, 0x2a3d, 0x2a3f,
- 0x2a41, 0x2a43, 0x2a45, 0x2a47, 0x2a49, 0x2a4b, 0x2a4d, 0x2a4f,
- 0x2a51, 0x2a53, 0x2a55, 0x2a57, 0x2a59, 0x2a5b, 0x2a5d, 0x2a5f,
- 0x2a61, 0x2a63, 0x2a65, 0x2a67, 0x2a69, 0x2a6b, 0x2a6d, 0x2a6f,
- 0x2a71, 0x2a73, 0x2a75, 0x2a77, 0x2a79, 0x2a7b, 0x2a7d, 0x2a7f,
- 0x2a81, 0x2a83, 0x2a85, 0x2a87, 0x2a89, 0xffff, 0x2a8b, 0x2a8d,
- 0xffff, 0xffff, 0x2a8f, 0xffff, 0xffff, 0x2a91, 0x2a93, 0xffff,
- 0xffff, 0x2a95, 0x2a97, 0x2a99, 0x2a9b, 0xffff, 0x2a9d, 0x2a9f,
- 0x2aa1, 0x2aa3, 0x2aa5, 0x2aa7, 0x2aa9, 0x2aab, 0x2aad, 0x2aaf,
- 0x2ab1, 0x2ab3, 0xffff, 0x2ab5, 0xffff, 0x2ab7, 0x2ab9, 0x2abb,
- 0x2abd, 0x2abf, 0x2ac1, 0x2ac3, 0xffff, 0x2ac5, 0x2ac7, 0x2ac9,
- 0x2acb, 0x2acd, 0x2acf, 0x2ad1, 0x2ad3, 0x2ad5, 0x2ad7, 0x2ad9,
- 0x2adb, 0x2add, 0x2adf, 0x2ae1, 0x2ae3, 0x2ae5, 0x2ae7, 0x2ae9,
- 0x2aeb, 0x2aed, 0x2aef, 0x2af1, 0x2af3, 0x2af5, 0x2af7, 0x2af9,
- 0x2afb, 0x2afd, 0x2aff, 0x2b01, 0x2b03, 0x2b05, 0x2b07, 0x2b09,
- 0x2b0b, 0x2b0d, 0x2b0f, 0x2b11, 0x2b13, 0x2b15, 0x2b17, 0x2b19,
- 0x2b1b, 0x2b1d, 0x2b1f, 0x2b21, 0x2b23, 0x2b25, 0x2b27, 0x2b29,
- 0x2b2b, 0x2b2d, 0x2b2f, 0x2b31, 0x2b33, 0x2b35, 0x2b37, 0x2b39,
+ 0x2956, 0x2958, 0x295a, 0x295c, 0x295e, 0x2960, 0x2962, 0x2964,
+ 0x2966, 0x2968, 0x296a, 0x296c, 0x296e, 0x2970, 0x2972, 0x2974,
+ 0x2976, 0x2978, 0x297a, 0x297c, 0x297e, 0x2980, 0x2982, 0x2984,
+ 0x2986, 0x2988, 0x298a, 0x298c, 0x298e, 0x2990, 0x2992, 0x2994,
+ 0x2996, 0x2998, 0x299a, 0x299c, 0x299e, 0x29a0, 0x29a2, 0x29a4,
+ 0x29a6, 0x29a8, 0x29aa, 0x29ac, 0x29ae, 0x29b0, 0x29b2, 0x29b4,
+ 0x29b6, 0x29b8, 0x29ba, 0x29bc, 0x29be, 0x29c0, 0x29c2, 0x29c4,
+ 0x29c6, 0x29c8, 0x29ca, 0x29cc, 0x29ce, 0x29d0, 0x29d2, 0x29d4,
+ 0x29d6, 0x29d8, 0x29da, 0x29dc, 0x29de, 0x29e0, 0x29e2, 0x29e4,
+ 0x29e6, 0x29e8, 0x29ea, 0x29ec, 0x29ee, 0x29f0, 0x29f2, 0x29f4,
+ 0x29f6, 0x29f8, 0x29fa, 0x29fc, 0x29fe, 0xffff, 0x2a00, 0x2a02,
+ 0x2a04, 0x2a06, 0x2a08, 0x2a0a, 0x2a0c, 0x2a0e, 0x2a10, 0x2a12,
+ 0x2a14, 0x2a16, 0x2a18, 0x2a1a, 0x2a1c, 0x2a1e, 0x2a20, 0x2a22,
+ 0x2a24, 0x2a26, 0x2a28, 0x2a2a, 0x2a2c, 0x2a2e, 0x2a30, 0x2a32,
+ 0x2a34, 0x2a36, 0x2a38, 0x2a3a, 0x2a3c, 0x2a3e, 0x2a40, 0x2a42,
+ 0x2a44, 0x2a46, 0x2a48, 0x2a4a, 0x2a4c, 0x2a4e, 0x2a50, 0x2a52,
+ 0x2a54, 0x2a56, 0x2a58, 0x2a5a, 0x2a5c, 0x2a5e, 0x2a60, 0x2a62,
+ 0x2a64, 0x2a66, 0x2a68, 0x2a6a, 0x2a6c, 0x2a6e, 0x2a70, 0x2a72,
+ 0x2a74, 0x2a76, 0x2a78, 0x2a7a, 0x2a7c, 0x2a7e, 0x2a80, 0x2a82,
+ 0x2a84, 0x2a86, 0x2a88, 0x2a8a, 0x2a8c, 0xffff, 0x2a8e, 0x2a90,
+ 0xffff, 0xffff, 0x2a92, 0xffff, 0xffff, 0x2a94, 0x2a96, 0xffff,
+ 0xffff, 0x2a98, 0x2a9a, 0x2a9c, 0x2a9e, 0xffff, 0x2aa0, 0x2aa2,
+ 0x2aa4, 0x2aa6, 0x2aa8, 0x2aaa, 0x2aac, 0x2aae, 0x2ab0, 0x2ab2,
+ 0x2ab4, 0x2ab6, 0xffff, 0x2ab8, 0xffff, 0x2aba, 0x2abc, 0x2abe,
+ 0x2ac0, 0x2ac2, 0x2ac4, 0x2ac6, 0xffff, 0x2ac8, 0x2aca, 0x2acc,
+ 0x2ace, 0x2ad0, 0x2ad2, 0x2ad4, 0x2ad6, 0x2ad8, 0x2ada, 0x2adc,
+ 0x2ade, 0x2ae0, 0x2ae2, 0x2ae4, 0x2ae6, 0x2ae8, 0x2aea, 0x2aec,
+ 0x2aee, 0x2af0, 0x2af2, 0x2af4, 0x2af6, 0x2af8, 0x2afa, 0x2afc,
+ 0x2afe, 0x2b00, 0x2b02, 0x2b04, 0x2b06, 0x2b08, 0x2b0a, 0x2b0c,
+ 0x2b0e, 0x2b10, 0x2b12, 0x2b14, 0x2b16, 0x2b18, 0x2b1a, 0x2b1c,
+ 0x2b1e, 0x2b20, 0x2b22, 0x2b24, 0x2b26, 0x2b28, 0x2b2a, 0x2b2c,
+ 0x2b2e, 0x2b30, 0x2b32, 0x2b34, 0x2b36, 0x2b38, 0x2b3a, 0x2b3c,
- 0x2b3b, 0x2b3d, 0x2b3f, 0x2b41, 0x2b43, 0x2b45, 0xffff, 0x2b47,
- 0x2b49, 0x2b4b, 0x2b4d, 0xffff, 0xffff, 0x2b4f, 0x2b51, 0x2b53,
- 0x2b55, 0x2b57, 0x2b59, 0x2b5b, 0x2b5d, 0xffff, 0x2b5f, 0x2b61,
- 0x2b63, 0x2b65, 0x2b67, 0x2b69, 0x2b6b, 0xffff, 0x2b6d, 0x2b6f,
- 0x2b71, 0x2b73, 0x2b75, 0x2b77, 0x2b79, 0x2b7b, 0x2b7d, 0x2b7f,
- 0x2b81, 0x2b83, 0x2b85, 0x2b87, 0x2b89, 0x2b8b, 0x2b8d, 0x2b8f,
- 0x2b91, 0x2b93, 0x2b95, 0x2b97, 0x2b99, 0x2b9b, 0x2b9d, 0x2b9f,
- 0x2ba1, 0x2ba3, 0xffff, 0x2ba5, 0x2ba7, 0x2ba9, 0x2bab, 0xffff,
- 0x2bad, 0x2baf, 0x2bb1, 0x2bb3, 0x2bb5, 0xffff, 0x2bb7, 0xffff,
- 0xffff, 0xffff, 0x2bb9, 0x2bbb, 0x2bbd, 0x2bbf, 0x2bc1, 0x2bc3,
- 0x2bc5, 0xffff, 0x2bc7, 0x2bc9, 0x2bcb, 0x2bcd, 0x2bcf, 0x2bd1,
- 0x2bd3, 0x2bd5, 0x2bd7, 0x2bd9, 0x2bdb, 0x2bdd, 0x2bdf, 0x2be1,
- 0x2be3, 0x2be5, 0x2be7, 0x2be9, 0x2beb, 0x2bed, 0x2bef, 0x2bf1,
- 0x2bf3, 0x2bf5, 0x2bf7, 0x2bf9, 0x2bfb, 0x2bfd, 0x2bff, 0x2c01,
- 0x2c03, 0x2c05, 0x2c07, 0x2c09, 0x2c0b, 0x2c0d, 0x2c0f, 0x2c11,
- 0x2c13, 0x2c15, 0x2c17, 0x2c19, 0x2c1b, 0x2c1d, 0x2c1f, 0x2c21,
- 0x2c23, 0x2c25, 0x2c27, 0x2c29, 0x2c2b, 0x2c2d, 0x2c2f, 0x2c31,
- 0x2c33, 0x2c35, 0x2c37, 0x2c39, 0x2c3b, 0x2c3d, 0x2c3f, 0x2c41,
- 0x2c43, 0x2c45, 0x2c47, 0x2c49, 0x2c4b, 0x2c4d, 0x2c4f, 0x2c51,
- 0x2c53, 0x2c55, 0x2c57, 0x2c59, 0x2c5b, 0x2c5d, 0x2c5f, 0x2c61,
- 0x2c63, 0x2c65, 0x2c67, 0x2c69, 0x2c6b, 0x2c6d, 0x2c6f, 0x2c71,
- 0x2c73, 0x2c75, 0x2c77, 0x2c79, 0x2c7b, 0x2c7d, 0x2c7f, 0x2c81,
- 0x2c83, 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91,
- 0x2c93, 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1,
- 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1,
- 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1,
- 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1,
- 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1,
- 0x2ce3, 0x2ce5, 0x2ce7, 0x2ce9, 0x2ceb, 0x2ced, 0x2cef, 0x2cf1,
- 0x2cf3, 0x2cf5, 0x2cf7, 0x2cf9, 0x2cfb, 0x2cfd, 0x2cff, 0x2d01,
- 0x2d03, 0x2d05, 0x2d07, 0x2d09, 0x2d0b, 0x2d0d, 0x2d0f, 0x2d11,
- 0x2d13, 0x2d15, 0x2d17, 0x2d19, 0x2d1b, 0x2d1d, 0x2d1f, 0x2d21,
-
- 0x2d23, 0x2d25, 0x2d27, 0x2d29, 0x2d2b, 0x2d2d, 0x2d2f, 0x2d31,
- 0x2d33, 0x2d35, 0x2d37, 0x2d39, 0x2d3b, 0x2d3d, 0x2d3f, 0x2d41,
- 0x2d43, 0x2d45, 0x2d47, 0x2d49, 0x2d4b, 0x2d4d, 0x2d4f, 0x2d51,
- 0x2d53, 0x2d55, 0x2d57, 0x2d59, 0x2d5b, 0x2d5d, 0x2d5f, 0x2d61,
- 0x2d63, 0x2d65, 0x2d67, 0x2d69, 0x2d6b, 0x2d6d, 0x2d6f, 0x2d71,
- 0x2d73, 0x2d75, 0x2d77, 0x2d79, 0x2d7b, 0x2d7d, 0x2d7f, 0x2d81,
- 0x2d83, 0x2d85, 0x2d87, 0x2d89, 0x2d8b, 0x2d8d, 0x2d8f, 0x2d91,
- 0x2d93, 0x2d95, 0x2d97, 0x2d99, 0x2d9b, 0x2d9d, 0x2d9f, 0x2da1,
- 0x2da3, 0x2da5, 0x2da7, 0x2da9, 0x2dab, 0x2dad, 0x2daf, 0x2db1,
- 0x2db3, 0x2db5, 0x2db7, 0x2db9, 0x2dbb, 0x2dbd, 0x2dbf, 0x2dc1,
- 0x2dc3, 0x2dc5, 0x2dc7, 0x2dc9, 0x2dcb, 0x2dcd, 0x2dcf, 0x2dd1,
- 0x2dd3, 0x2dd5, 0x2dd7, 0x2dd9, 0x2ddb, 0x2ddd, 0x2ddf, 0x2de1,
- 0x2de3, 0x2de5, 0x2de7, 0x2de9, 0x2deb, 0x2ded, 0x2def, 0x2df1,
- 0x2df3, 0x2df5, 0x2df7, 0x2df9, 0x2dfb, 0x2dfd, 0x2dff, 0x2e01,
- 0x2e03, 0x2e05, 0x2e07, 0x2e09, 0x2e0b, 0x2e0d, 0x2e0f, 0x2e11,
- 0x2e13, 0x2e15, 0x2e17, 0x2e19, 0x2e1b, 0x2e1d, 0x2e1f, 0x2e21,
- 0x2e23, 0x2e25, 0x2e27, 0x2e29, 0x2e2b, 0x2e2d, 0x2e2f, 0x2e31,
- 0x2e33, 0x2e35, 0x2e37, 0x2e39, 0x2e3b, 0x2e3d, 0x2e3f, 0x2e41,
- 0x2e43, 0x2e45, 0x2e47, 0x2e49, 0x2e4b, 0x2e4d, 0x2e4f, 0x2e51,
- 0x2e53, 0x2e55, 0x2e57, 0x2e59, 0x2e5b, 0x2e5d, 0x2e5f, 0x2e61,
- 0x2e63, 0x2e65, 0x2e67, 0x2e69, 0x2e6b, 0x2e6d, 0xffff, 0xffff,
- 0x2e6f, 0x2e71, 0x2e73, 0x2e75, 0x2e77, 0x2e79, 0x2e7b, 0x2e7d,
- 0x2e7f, 0x2e81, 0x2e83, 0x2e85, 0x2e87, 0x2e89, 0x2e8b, 0x2e8d,
- 0x2e8f, 0x2e91, 0x2e93, 0x2e95, 0x2e97, 0x2e99, 0x2e9b, 0x2e9d,
- 0x2e9f, 0x2ea1, 0x2ea3, 0x2ea5, 0x2ea7, 0x2ea9, 0x2eab, 0x2ead,
- 0x2eaf, 0x2eb1, 0x2eb3, 0x2eb5, 0x2eb7, 0x2eb9, 0x2ebb, 0x2ebd,
- 0x2ebf, 0x2ec1, 0x2ec3, 0x2ec5, 0x2ec7, 0x2ec9, 0x2ecb, 0x2ecd,
- 0x2ecf, 0x2ed1, 0x2ed3, 0x2ed5, 0x2ed7, 0x2ed9, 0x2edb, 0x2edd,
- 0x2edf, 0x2ee1, 0x2ee3, 0x2ee5, 0x2ee7, 0x2ee9, 0x2eeb, 0x2eed,
- 0x2eef, 0x2ef1, 0x2ef3, 0x2ef5, 0x2ef7, 0x2ef9, 0x2efb, 0x2efd,
- 0x2eff, 0x2f01, 0x2f03, 0x2f05, 0x2f07, 0x2f09, 0x2f0b, 0x2f0d,
- 0x2f0f, 0x2f11, 0x2f13, 0x2f15, 0x2f17, 0x2f19, 0x2f1b, 0x2f1d,
-
- 0x2f1f, 0x2f21, 0x2f23, 0x2f25, 0x2f27, 0x2f29, 0x2f2b, 0x2f2d,
- 0x2f2f, 0x2f31, 0x2f33, 0x2f35, 0x2f37, 0x2f39, 0x2f3b, 0x2f3d,
- 0x2f3f, 0x2f41, 0x2f43, 0x2f45, 0x2f47, 0x2f49, 0x2f4b, 0x2f4d,
- 0x2f4f, 0x2f51, 0x2f53, 0x2f55, 0x2f57, 0x2f59, 0x2f5b, 0x2f5d,
- 0x2f5f, 0x2f61, 0x2f63, 0x2f65, 0x2f67, 0x2f69, 0x2f6b, 0x2f6d,
- 0x2f6f, 0x2f71, 0x2f73, 0x2f75, 0x2f77, 0x2f79, 0x2f7b, 0x2f7d,
- 0x2f7f, 0x2f81, 0x2f83, 0x2f85, 0x2f87, 0x2f89, 0x2f8b, 0x2f8d,
- 0x2f8f, 0x2f91, 0x2f93, 0x2f95, 0x2f97, 0x2f99, 0x2f9b, 0x2f9d,
- 0x2f9f, 0x2fa1, 0x2fa3, 0x2fa5, 0x2fa7, 0x2fa9, 0x2fab, 0x2fad,
- 0x2faf, 0x2fb1, 0x2fb3, 0x2fb5, 0x2fb7, 0x2fb9, 0x2fbb, 0x2fbd,
- 0x2fbf, 0x2fc1, 0x2fc3, 0x2fc5, 0x2fc7, 0x2fc9, 0x2fcb, 0x2fcd,
- 0x2fcf, 0x2fd1, 0x2fd3, 0x2fd5, 0x2fd7, 0x2fd9, 0x2fdb, 0x2fdd,
- 0x2fdf, 0x2fe1, 0x2fe3, 0x2fe5, 0x2fe7, 0x2fe9, 0x2feb, 0x2fed,
- 0x2fef, 0x2ff1, 0x2ff3, 0x2ff5, 0x2ff7, 0x2ff9, 0x2ffb, 0x2ffd,
- 0x2fff, 0x3001, 0x3003, 0x3005, 0x3007, 0x3009, 0x300b, 0x300d,
- 0x300f, 0x3011, 0x3013, 0x3015, 0x3017, 0x3019, 0x301b, 0x301d,
- 0x301f, 0x3021, 0x3023, 0x3025, 0x3027, 0x3029, 0x302b, 0x302d,
- 0x302f, 0x3031, 0x3033, 0x3035, 0x3037, 0x3039, 0x303b, 0x303d,
- 0x303f, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x304b, 0x304d,
- 0x304f, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305b, 0x305d,
- 0x305f, 0x3061, 0x3063, 0x3065, 0x3067, 0x3069, 0x306b, 0x306d,
- 0x306f, 0x3071, 0x3073, 0x3075, 0x3077, 0x3079, 0x307b, 0x307d,
- 0x307f, 0x3081, 0x3083, 0x3085, 0x3087, 0x3089, 0x308b, 0x308d,
- 0x308f, 0x3091, 0x3093, 0x3095, 0x3097, 0x3099, 0x309b, 0x309d,
- 0x309f, 0x30a1, 0x30a3, 0x30a5, 0x30a7, 0x30a9, 0x30ab, 0x30ad,
- 0x30af, 0x30b1, 0x30b3, 0x30b5, 0xffff, 0xffff, 0x30b7, 0x30b9,
- 0x30bb, 0x30bd, 0x30bf, 0x30c1, 0x30c3, 0x30c5, 0x30c7, 0x30c9,
- 0x30cb, 0x30cd, 0x30cf, 0x30d1, 0x30d3, 0x30d5, 0x30d7, 0x30d9,
- 0x30db, 0x30dd, 0x30df, 0x30e1, 0x30e3, 0x30e5, 0x30e7, 0x30e9,
- 0x30eb, 0x30ed, 0x30ef, 0x30f1, 0x30f3, 0x30f5, 0x30f7, 0x30f9,
- 0x30fb, 0x30fd, 0x30ff, 0x3101, 0x3103, 0x3105, 0x3107, 0x3109,
- 0x310b, 0x310d, 0x310f, 0x3111, 0x3113, 0x3115, 0x3117, 0x3119,
+ 0x2b3e, 0x2b40, 0x2b42, 0x2b44, 0x2b46, 0x2b48, 0xffff, 0x2b4a,
+ 0x2b4c, 0x2b4e, 0x2b50, 0xffff, 0xffff, 0x2b52, 0x2b54, 0x2b56,
+ 0x2b58, 0x2b5a, 0x2b5c, 0x2b5e, 0x2b60, 0xffff, 0x2b62, 0x2b64,
+ 0x2b66, 0x2b68, 0x2b6a, 0x2b6c, 0x2b6e, 0xffff, 0x2b70, 0x2b72,
+ 0x2b74, 0x2b76, 0x2b78, 0x2b7a, 0x2b7c, 0x2b7e, 0x2b80, 0x2b82,
+ 0x2b84, 0x2b86, 0x2b88, 0x2b8a, 0x2b8c, 0x2b8e, 0x2b90, 0x2b92,
+ 0x2b94, 0x2b96, 0x2b98, 0x2b9a, 0x2b9c, 0x2b9e, 0x2ba0, 0x2ba2,
+ 0x2ba4, 0x2ba6, 0xffff, 0x2ba8, 0x2baa, 0x2bac, 0x2bae, 0xffff,
+ 0x2bb0, 0x2bb2, 0x2bb4, 0x2bb6, 0x2bb8, 0xffff, 0x2bba, 0xffff,
+ 0xffff, 0xffff, 0x2bbc, 0x2bbe, 0x2bc0, 0x2bc2, 0x2bc4, 0x2bc6,
+ 0x2bc8, 0xffff, 0x2bca, 0x2bcc, 0x2bce, 0x2bd0, 0x2bd2, 0x2bd4,
+ 0x2bd6, 0x2bd8, 0x2bda, 0x2bdc, 0x2bde, 0x2be0, 0x2be2, 0x2be4,
+ 0x2be6, 0x2be8, 0x2bea, 0x2bec, 0x2bee, 0x2bf0, 0x2bf2, 0x2bf4,
+ 0x2bf6, 0x2bf8, 0x2bfa, 0x2bfc, 0x2bfe, 0x2c00, 0x2c02, 0x2c04,
+ 0x2c06, 0x2c08, 0x2c0a, 0x2c0c, 0x2c0e, 0x2c10, 0x2c12, 0x2c14,
+ 0x2c16, 0x2c18, 0x2c1a, 0x2c1c, 0x2c1e, 0x2c20, 0x2c22, 0x2c24,
+ 0x2c26, 0x2c28, 0x2c2a, 0x2c2c, 0x2c2e, 0x2c30, 0x2c32, 0x2c34,
+ 0x2c36, 0x2c38, 0x2c3a, 0x2c3c, 0x2c3e, 0x2c40, 0x2c42, 0x2c44,
+ 0x2c46, 0x2c48, 0x2c4a, 0x2c4c, 0x2c4e, 0x2c50, 0x2c52, 0x2c54,
+ 0x2c56, 0x2c58, 0x2c5a, 0x2c5c, 0x2c5e, 0x2c60, 0x2c62, 0x2c64,
+ 0x2c66, 0x2c68, 0x2c6a, 0x2c6c, 0x2c6e, 0x2c70, 0x2c72, 0x2c74,
+ 0x2c76, 0x2c78, 0x2c7a, 0x2c7c, 0x2c7e, 0x2c80, 0x2c82, 0x2c84,
+ 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94,
+ 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4,
+ 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4,
+ 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4,
+ 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4,
+ 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ce4,
+ 0x2ce6, 0x2ce8, 0x2cea, 0x2cec, 0x2cee, 0x2cf0, 0x2cf2, 0x2cf4,
+ 0x2cf6, 0x2cf8, 0x2cfa, 0x2cfc, 0x2cfe, 0x2d00, 0x2d02, 0x2d04,
+ 0x2d06, 0x2d08, 0x2d0a, 0x2d0c, 0x2d0e, 0x2d10, 0x2d12, 0x2d14,
+ 0x2d16, 0x2d18, 0x2d1a, 0x2d1c, 0x2d1e, 0x2d20, 0x2d22, 0x2d24,
+
+ 0x2d26, 0x2d28, 0x2d2a, 0x2d2c, 0x2d2e, 0x2d30, 0x2d32, 0x2d34,
+ 0x2d36, 0x2d38, 0x2d3a, 0x2d3c, 0x2d3e, 0x2d40, 0x2d42, 0x2d44,
+ 0x2d46, 0x2d48, 0x2d4a, 0x2d4c, 0x2d4e, 0x2d50, 0x2d52, 0x2d54,
+ 0x2d56, 0x2d58, 0x2d5a, 0x2d5c, 0x2d5e, 0x2d60, 0x2d62, 0x2d64,
+ 0x2d66, 0x2d68, 0x2d6a, 0x2d6c, 0x2d6e, 0x2d70, 0x2d72, 0x2d74,
+ 0x2d76, 0x2d78, 0x2d7a, 0x2d7c, 0x2d7e, 0x2d80, 0x2d82, 0x2d84,
+ 0x2d86, 0x2d88, 0x2d8a, 0x2d8c, 0x2d8e, 0x2d90, 0x2d92, 0x2d94,
+ 0x2d96, 0x2d98, 0x2d9a, 0x2d9c, 0x2d9e, 0x2da0, 0x2da2, 0x2da4,
+ 0x2da6, 0x2da8, 0x2daa, 0x2dac, 0x2dae, 0x2db0, 0x2db2, 0x2db4,
+ 0x2db6, 0x2db8, 0x2dba, 0x2dbc, 0x2dbe, 0x2dc0, 0x2dc2, 0x2dc4,
+ 0x2dc6, 0x2dc8, 0x2dca, 0x2dcc, 0x2dce, 0x2dd0, 0x2dd2, 0x2dd4,
+ 0x2dd6, 0x2dd8, 0x2dda, 0x2ddc, 0x2dde, 0x2de0, 0x2de2, 0x2de4,
+ 0x2de6, 0x2de8, 0x2dea, 0x2dec, 0x2dee, 0x2df0, 0x2df2, 0x2df4,
+ 0x2df6, 0x2df8, 0x2dfa, 0x2dfc, 0x2dfe, 0x2e00, 0x2e02, 0x2e04,
+ 0x2e06, 0x2e08, 0x2e0a, 0x2e0c, 0x2e0e, 0x2e10, 0x2e12, 0x2e14,
+ 0x2e16, 0x2e18, 0x2e1a, 0x2e1c, 0x2e1e, 0x2e20, 0x2e22, 0x2e24,
+ 0x2e26, 0x2e28, 0x2e2a, 0x2e2c, 0x2e2e, 0x2e30, 0x2e32, 0x2e34,
+ 0x2e36, 0x2e38, 0x2e3a, 0x2e3c, 0x2e3e, 0x2e40, 0x2e42, 0x2e44,
+ 0x2e46, 0x2e48, 0x2e4a, 0x2e4c, 0x2e4e, 0x2e50, 0x2e52, 0x2e54,
+ 0x2e56, 0x2e58, 0x2e5a, 0x2e5c, 0x2e5e, 0x2e60, 0x2e62, 0x2e64,
+ 0x2e66, 0x2e68, 0x2e6a, 0x2e6c, 0x2e6e, 0x2e70, 0xffff, 0xffff,
+ 0x2e72, 0x2e74, 0x2e76, 0x2e78, 0x2e7a, 0x2e7c, 0x2e7e, 0x2e80,
+ 0x2e82, 0x2e84, 0x2e86, 0x2e88, 0x2e8a, 0x2e8c, 0x2e8e, 0x2e90,
+ 0x2e92, 0x2e94, 0x2e96, 0x2e98, 0x2e9a, 0x2e9c, 0x2e9e, 0x2ea0,
+ 0x2ea2, 0x2ea4, 0x2ea6, 0x2ea8, 0x2eaa, 0x2eac, 0x2eae, 0x2eb0,
+ 0x2eb2, 0x2eb4, 0x2eb6, 0x2eb8, 0x2eba, 0x2ebc, 0x2ebe, 0x2ec0,
+ 0x2ec2, 0x2ec4, 0x2ec6, 0x2ec8, 0x2eca, 0x2ecc, 0x2ece, 0x2ed0,
+ 0x2ed2, 0x2ed4, 0x2ed6, 0x2ed8, 0x2eda, 0x2edc, 0x2ede, 0x2ee0,
+ 0x2ee2, 0x2ee4, 0x2ee6, 0x2ee8, 0x2eea, 0x2eec, 0x2eee, 0x2ef0,
+ 0x2ef2, 0x2ef4, 0x2ef6, 0x2ef8, 0x2efa, 0x2efc, 0x2efe, 0x2f00,
+ 0x2f02, 0x2f04, 0x2f06, 0x2f08, 0x2f0a, 0x2f0c, 0x2f0e, 0x2f10,
+ 0x2f12, 0x2f14, 0x2f16, 0x2f18, 0x2f1a, 0x2f1c, 0x2f1e, 0x2f20,
+
+ 0x2f22, 0x2f24, 0x2f26, 0x2f28, 0x2f2a, 0x2f2c, 0x2f2e, 0x2f30,
+ 0x2f32, 0x2f34, 0x2f36, 0x2f38, 0x2f3a, 0x2f3c, 0x2f3e, 0x2f40,
+ 0x2f42, 0x2f44, 0x2f46, 0x2f48, 0x2f4a, 0x2f4c, 0x2f4e, 0x2f50,
+ 0x2f52, 0x2f54, 0x2f56, 0x2f58, 0x2f5a, 0x2f5c, 0x2f5e, 0x2f60,
+ 0x2f62, 0x2f64, 0x2f66, 0x2f68, 0x2f6a, 0x2f6c, 0x2f6e, 0x2f70,
+ 0x2f72, 0x2f74, 0x2f76, 0x2f78, 0x2f7a, 0x2f7c, 0x2f7e, 0x2f80,
+ 0x2f82, 0x2f84, 0x2f86, 0x2f88, 0x2f8a, 0x2f8c, 0x2f8e, 0x2f90,
+ 0x2f92, 0x2f94, 0x2f96, 0x2f98, 0x2f9a, 0x2f9c, 0x2f9e, 0x2fa0,
+ 0x2fa2, 0x2fa4, 0x2fa6, 0x2fa8, 0x2faa, 0x2fac, 0x2fae, 0x2fb0,
+ 0x2fb2, 0x2fb4, 0x2fb6, 0x2fb8, 0x2fba, 0x2fbc, 0x2fbe, 0x2fc0,
+ 0x2fc2, 0x2fc4, 0x2fc6, 0x2fc8, 0x2fca, 0x2fcc, 0x2fce, 0x2fd0,
+ 0x2fd2, 0x2fd4, 0x2fd6, 0x2fd8, 0x2fda, 0x2fdc, 0x2fde, 0x2fe0,
+ 0x2fe2, 0x2fe4, 0x2fe6, 0x2fe8, 0x2fea, 0x2fec, 0x2fee, 0x2ff0,
+ 0x2ff2, 0x2ff4, 0x2ff6, 0x2ff8, 0x2ffa, 0x2ffc, 0x2ffe, 0x3000,
+ 0x3002, 0x3004, 0x3006, 0x3008, 0x300a, 0x300c, 0x300e, 0x3010,
+ 0x3012, 0x3014, 0x3016, 0x3018, 0x301a, 0x301c, 0x301e, 0x3020,
+ 0x3022, 0x3024, 0x3026, 0x3028, 0x302a, 0x302c, 0x302e, 0x3030,
+ 0x3032, 0x3034, 0x3036, 0x3038, 0x303a, 0x303c, 0x303e, 0x3040,
+ 0x3042, 0x3044, 0x3046, 0x3048, 0x304a, 0x304c, 0x304e, 0x3050,
+ 0x3052, 0x3054, 0x3056, 0x3058, 0x305a, 0x305c, 0x305e, 0x3060,
+ 0x3062, 0x3064, 0x3066, 0x3068, 0x306a, 0x306c, 0x306e, 0x3070,
+ 0x3072, 0x3074, 0x3076, 0x3078, 0x307a, 0x307c, 0x307e, 0x3080,
+ 0x3082, 0x3084, 0x3086, 0x3088, 0x308a, 0x308c, 0x308e, 0x3090,
+ 0x3092, 0x3094, 0x3096, 0x3098, 0x309a, 0x309c, 0x309e, 0x30a0,
+ 0x30a2, 0x30a4, 0x30a6, 0x30a8, 0x30aa, 0x30ac, 0x30ae, 0x30b0,
+ 0x30b2, 0x30b4, 0x30b6, 0x30b8, 0xffff, 0xffff, 0x30ba, 0x30bc,
+ 0x30be, 0x30c0, 0x30c2, 0x30c4, 0x30c6, 0x30c8, 0x30ca, 0x30cc,
+ 0x30ce, 0x30d0, 0x30d2, 0x30d4, 0x30d6, 0x30d8, 0x30da, 0x30dc,
+ 0x30de, 0x30e0, 0x30e2, 0x30e4, 0x30e6, 0x30e8, 0x30ea, 0x30ec,
+ 0x30ee, 0x30f0, 0x30f2, 0x30f4, 0x30f6, 0x30f8, 0x30fa, 0x30fc,
+ 0x30fe, 0x3100, 0x3102, 0x3104, 0x3106, 0x3108, 0x310a, 0x310c,
+ 0x310e, 0x3110, 0x3112, 0x3114, 0x3116, 0x3118, 0x311a, 0x311c,
- 0x311b, 0x311d, 0x311f, 0x3121, 0xffff, 0x3123, 0x3125, 0x3127,
- 0x3129, 0x312b, 0x312d, 0x312f, 0x3131, 0x3133, 0x3135, 0x3137,
- 0x3139, 0x313b, 0x313d, 0x313f, 0x3141, 0x3143, 0x3145, 0x3147,
- 0x3149, 0x314b, 0x314d, 0x314f, 0x3151, 0x3153, 0x3155, 0x3157,
- 0xffff, 0x3159, 0x315b, 0xffff, 0x315d, 0xffff, 0xffff, 0x315f,
- 0xffff, 0x3161, 0x3163, 0x3165, 0x3167, 0x3169, 0x316b, 0x316d,
- 0x316f, 0x3171, 0x3173, 0xffff, 0x3175, 0x3177, 0x3179, 0x317b,
- 0xffff, 0x317d, 0xffff, 0x317f, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3181, 0xffff, 0xffff, 0xffff, 0xffff, 0x3183,
- 0xffff, 0x3185, 0xffff, 0x3187, 0xffff, 0x3189, 0x318b, 0x318d,
- 0xffff, 0x318f, 0x3191, 0xffff, 0x3193, 0xffff, 0xffff, 0x3195,
- 0xffff, 0x3197, 0xffff, 0x3199, 0xffff, 0x319b, 0xffff, 0x319d,
- 0xffff, 0x319f, 0x31a1, 0xffff, 0x31a3, 0xffff, 0xffff, 0x31a5,
- 0x31a7, 0x31a9, 0x31ab, 0xffff, 0x31ad, 0x31af, 0x31b1, 0x31b3,
- 0x31b5, 0x31b7, 0x31b9, 0xffff, 0x31bb, 0x31bd, 0x31bf, 0x31c1,
- 0xffff, 0x31c3, 0x31c5, 0x31c7, 0x31c9, 0xffff, 0x31cb, 0xffff,
- 0x31cd, 0x31cf, 0x31d1, 0x31d3, 0x31d5, 0x31d7, 0x31d9, 0x31db,
- 0x31dd, 0x31df, 0xffff, 0x31e1, 0x31e3, 0x31e5, 0x31e7, 0x31e9,
- 0x31eb, 0x31ed, 0x31ef, 0x31f1, 0x31f3, 0x31f5, 0x31f7, 0x31f9,
- 0x31fb, 0x31fd, 0x31ff, 0x3201, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0x3203, 0x3205, 0x3207, 0xffff, 0x3209, 0x320b, 0x320d,
- 0x320f, 0x3211, 0xffff, 0x3213, 0x3215, 0x3217, 0x3219, 0x321b,
- 0x321d, 0x321f, 0x3221, 0x3223, 0x3225, 0x3227, 0x3229, 0x322b,
- 0x322d, 0x322f, 0x3231, 0x3233, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x311e, 0x3120, 0x3122, 0x3124, 0xffff, 0x3126, 0x3128, 0x312a,
+ 0x312c, 0x312e, 0x3130, 0x3132, 0x3134, 0x3136, 0x3138, 0x313a,
+ 0x313c, 0x313e, 0x3140, 0x3142, 0x3144, 0x3146, 0x3148, 0x314a,
+ 0x314c, 0x314e, 0x3150, 0x3152, 0x3154, 0x3156, 0x3158, 0x315a,
+ 0xffff, 0x315c, 0x315e, 0xffff, 0x3160, 0xffff, 0xffff, 0x3162,
+ 0xffff, 0x3164, 0x3166, 0x3168, 0x316a, 0x316c, 0x316e, 0x3170,
+ 0x3172, 0x3174, 0x3176, 0xffff, 0x3178, 0x317a, 0x317c, 0x317e,
+ 0xffff, 0x3180, 0xffff, 0x3182, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3184, 0xffff, 0xffff, 0xffff, 0xffff, 0x3186,
+ 0xffff, 0x3188, 0xffff, 0x318a, 0xffff, 0x318c, 0x318e, 0x3190,
+ 0xffff, 0x3192, 0x3194, 0xffff, 0x3196, 0xffff, 0xffff, 0x3198,
+ 0xffff, 0x319a, 0xffff, 0x319c, 0xffff, 0x319e, 0xffff, 0x31a0,
+ 0xffff, 0x31a2, 0x31a4, 0xffff, 0x31a6, 0xffff, 0xffff, 0x31a8,
+ 0x31aa, 0x31ac, 0x31ae, 0xffff, 0x31b0, 0x31b2, 0x31b4, 0x31b6,
+ 0x31b8, 0x31ba, 0x31bc, 0xffff, 0x31be, 0x31c0, 0x31c2, 0x31c4,
+ 0xffff, 0x31c6, 0x31c8, 0x31ca, 0x31cc, 0xffff, 0x31ce, 0xffff,
+ 0x31d0, 0x31d2, 0x31d4, 0x31d6, 0x31d8, 0x31da, 0x31dc, 0x31de,
+ 0x31e0, 0x31e2, 0xffff, 0x31e4, 0x31e6, 0x31e8, 0x31ea, 0x31ec,
+ 0x31ee, 0x31f0, 0x31f2, 0x31f4, 0x31f6, 0x31f8, 0x31fa, 0x31fc,
+ 0x31fe, 0x3200, 0x3202, 0x3204, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0x3206, 0x3208, 0x320a, 0xffff, 0x320c, 0x320e, 0x3210,
+ 0x3212, 0x3214, 0xffff, 0x3216, 0x3218, 0x321a, 0x321c, 0x321e,
+ 0x3220, 0x3222, 0x3224, 0x3226, 0x3228, 0x322a, 0x322c, 0x322e,
+ 0x3230, 0x3232, 0x3234, 0x3236, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10796,25 +11304,25 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3235, 0x3238, 0x323b, 0x323e, 0x3241, 0x3244, 0x3247, 0x324a,
- 0x324d, 0x3250, 0x3253, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3256, 0x325a, 0x325e, 0x3262, 0x3266, 0x326a, 0x326e, 0x3272,
- 0x3276, 0x327a, 0x327e, 0x3282, 0x3286, 0x328a, 0x328e, 0x3292,
- 0x3296, 0x329a, 0x329e, 0x32a2, 0x32a6, 0x32aa, 0x32ae, 0x32b2,
- 0x32b6, 0x32ba, 0x32be, 0x32c2, 0x32c4, 0x32c6, 0x32c9, 0xffff,
- 0x32cc, 0x32ce, 0x32d0, 0x32d2, 0x32d4, 0x32d6, 0x32d8, 0x32da,
- 0x32dc, 0x32de, 0x32e0, 0x32e2, 0x32e4, 0x32e6, 0x32e8, 0x32ea,
- 0x32ec, 0x32ee, 0x32f0, 0x32f2, 0x32f4, 0x32f6, 0x32f8, 0x32fa,
- 0x32fc, 0x32fe, 0x3300, 0x3303, 0x3306, 0x3309, 0x330c, 0x3310,
+ 0x3238, 0x323b, 0x323e, 0x3241, 0x3244, 0x3247, 0x324a, 0x324d,
+ 0x3250, 0x3253, 0x3256, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3259, 0x325d, 0x3261, 0x3265, 0x3269, 0x326d, 0x3271, 0x3275,
+ 0x3279, 0x327d, 0x3281, 0x3285, 0x3289, 0x328d, 0x3291, 0x3295,
+ 0x3299, 0x329d, 0x32a1, 0x32a5, 0x32a9, 0x32ad, 0x32b1, 0x32b5,
+ 0x32b9, 0x32bd, 0x32c1, 0x32c5, 0x32c7, 0x32c9, 0x32cc, 0xffff,
+ 0x32cf, 0x32d1, 0x32d3, 0x32d5, 0x32d7, 0x32d9, 0x32db, 0x32dd,
+ 0x32df, 0x32e1, 0x32e3, 0x32e5, 0x32e7, 0x32e9, 0x32eb, 0x32ed,
+ 0x32ef, 0x32f1, 0x32f3, 0x32f5, 0x32f7, 0x32f9, 0x32fb, 0x32fd,
+ 0x32ff, 0x3301, 0x3303, 0x3306, 0x3309, 0x330c, 0x330f, 0x3313,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0x3313, 0x3316, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0xffff, 0xffff, 0x3316, 0x3319, 0x331c, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3319, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x331f, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10829,17 +11337,17 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x331c, 0x331f, 0x3322, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3322, 0x3325, 0x3328, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x3324, 0x3326, 0x3328, 0x332a, 0x332c, 0x332e, 0x3330, 0x3332,
- 0x3334, 0x3336, 0x3338, 0x333a, 0x333c, 0x333e, 0x3340, 0x3342,
- 0x3344, 0x3346, 0x3348, 0x334a, 0x334c, 0x334e, 0x3350, 0x3352,
- 0x3354, 0x3356, 0x3358, 0x335a, 0x335c, 0x335e, 0x3360, 0x3362,
- 0x3364, 0x3366, 0x3368, 0x336a, 0x336c, 0x336e, 0x3370, 0x3372,
- 0x3374, 0x3376, 0x3378, 0x337a, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x337c, 0x3380, 0x3384, 0x3388, 0x338c, 0x3390, 0x3394, 0x3398,
- 0x339c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a0, 0x33a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x332a, 0x332c, 0x332e, 0x3330, 0x3332, 0x3334, 0x3336, 0x3338,
+ 0x333a, 0x333c, 0x333e, 0x3340, 0x3342, 0x3344, 0x3346, 0x3348,
+ 0x334a, 0x334c, 0x334e, 0x3350, 0x3352, 0x3354, 0x3356, 0x3358,
+ 0x335a, 0x335c, 0x335e, 0x3360, 0x3362, 0x3364, 0x3366, 0x3368,
+ 0x336a, 0x336c, 0x336e, 0x3370, 0x3372, 0x3374, 0x3376, 0x3378,
+ 0x337a, 0x337c, 0x337e, 0x3380, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x3382, 0x3386, 0x338a, 0x338e, 0x3392, 0x3396, 0x339a, 0x339e,
+ 0x33a2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
+ 0x33a6, 0x33a8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -10862,76 +11370,76 @@ static const unsigned short uc_decomposition_trie[] = {
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0x33a4, 0x33a6, 0x33a8, 0x33aa, 0x33ad, 0x33af, 0x33b1, 0x33b3,
- 0x33b5, 0x33b7, 0x33b9, 0x33bb, 0x33bd, 0x33bf, 0x33c2, 0x33c4,
- 0x33c6, 0x33c8, 0x33ca, 0x33cd, 0x33cf, 0x33d1, 0x33d3, 0x33d6,
- 0x33d8, 0x33da, 0x33dc, 0x33de, 0x33e0, 0x33e3, 0x33e5, 0x33e7,
- 0x33e9, 0x33eb, 0x33ed, 0x33ef, 0x33f1, 0x33f3, 0x33f5, 0x33f7,
- 0x33f9, 0x33fb, 0x33fd, 0x33ff, 0x3401, 0x3403, 0x3405, 0x3407,
- 0x3409, 0x340b, 0x340d, 0x340f, 0x3411, 0x3414, 0x3416, 0x3418,
- 0x341a, 0x341d, 0x341f, 0x3421, 0x3423, 0x3425, 0x3427, 0x3429,
- 0x342b, 0x342d, 0x342f, 0x3431, 0x3433, 0x3435, 0x3437, 0x3439,
- 0x343b, 0x343d, 0x343f, 0x3441, 0x3443, 0x3445, 0x3447, 0x3449,
- 0x344b, 0x344d, 0x344f, 0x3451, 0x3453, 0x3455, 0x3457, 0x3459,
- 0x345b, 0x345d, 0x3460, 0x3462, 0x3464, 0x3466, 0x3468, 0x346a,
- 0x346c, 0x346f, 0x3472, 0x3474, 0x3476, 0x3478, 0x347a, 0x347c,
- 0x347e, 0x3480, 0x3482, 0x3484, 0x3486, 0x3489, 0x348b, 0x348d,
- 0x348f, 0x3491, 0x3494, 0x3496, 0x3498, 0x349a, 0x349c, 0x349e,
- 0x34a0, 0x34a2, 0x34a4, 0x34a6, 0x34a9, 0x34ab, 0x34ae, 0x34b0,
- 0x34b2, 0x34b4, 0x34b6, 0x34b8, 0x34ba, 0x34bc, 0x34be, 0x34c0,
- 0x34c2, 0x34c4, 0x34c7, 0x34c9, 0x34cb, 0x34cd, 0x34cf, 0x34d1,
- 0x34d4, 0x34d6, 0x34d9, 0x34dc, 0x34de, 0x34e0, 0x34e2, 0x34e4,
- 0x34e7, 0x34ea, 0x34ec, 0x34ee, 0x34f0, 0x34f2, 0x34f4, 0x34f6,
- 0x34f8, 0x34fa, 0x34fc, 0x34fe, 0x3500, 0x3503, 0x3505, 0x3507,
- 0x3509, 0x350b, 0x350d, 0x350f, 0x3511, 0x3513, 0x3515, 0x3517,
- 0x3519, 0x351b, 0x351d, 0x351f, 0x3521, 0x3523, 0x3525, 0x3527,
- 0x3529, 0x352c, 0x352e, 0x3530, 0x3532, 0x3534, 0x3536, 0x3539,
- 0x353b, 0x353d, 0x353f, 0x3541, 0x3543, 0x3545, 0x3547, 0x3549,
- 0x354b, 0x354d, 0x354f, 0x3552, 0x3554, 0x3556, 0x3558, 0x355a,
- 0x355c, 0x355e, 0x3560, 0x3562, 0x3564, 0x3566, 0x3568, 0x356a,
- 0x356c, 0x356e, 0x3570, 0x3572, 0x3574, 0x3576, 0x3579, 0x357b,
- 0x357d, 0x357f, 0x3581, 0x3583, 0x3586, 0x3588, 0x358a, 0x358c,
- 0x358e, 0x3590, 0x3592, 0x3594, 0x3596, 0x3599, 0x359b, 0x359d,
- 0x359f, 0x35a2, 0x35a4, 0x35a6, 0x35a8, 0x35aa, 0x35ac, 0x35ae,
- 0x35b1, 0x35b4, 0x35b7, 0x35b9, 0x35bc, 0x35be, 0x35c0, 0x35c2,
+ 0x33aa, 0x33ac, 0x33ae, 0x33b0, 0x33b3, 0x33b5, 0x33b7, 0x33b9,
+ 0x33bb, 0x33bd, 0x33bf, 0x33c1, 0x33c3, 0x33c5, 0x33c8, 0x33ca,
+ 0x33cc, 0x33ce, 0x33d0, 0x33d3, 0x33d5, 0x33d7, 0x33d9, 0x33dc,
+ 0x33de, 0x33e0, 0x33e2, 0x33e4, 0x33e6, 0x33e9, 0x33eb, 0x33ed,
+ 0x33ef, 0x33f1, 0x33f3, 0x33f5, 0x33f7, 0x33f9, 0x33fb, 0x33fd,
+ 0x33ff, 0x3401, 0x3403, 0x3405, 0x3407, 0x3409, 0x340b, 0x340d,
+ 0x340f, 0x3411, 0x3413, 0x3415, 0x3417, 0x341a, 0x341c, 0x341e,
+ 0x3420, 0x3423, 0x3425, 0x3427, 0x3429, 0x342b, 0x342d, 0x342f,
+ 0x3431, 0x3433, 0x3435, 0x3437, 0x3439, 0x343b, 0x343d, 0x343f,
+ 0x3441, 0x3443, 0x3445, 0x3447, 0x3449, 0x344b, 0x344d, 0x344f,
+ 0x3451, 0x3453, 0x3455, 0x3457, 0x3459, 0x345b, 0x345d, 0x345f,
+ 0x3461, 0x3463, 0x3466, 0x3468, 0x346a, 0x346c, 0x346e, 0x3470,
+ 0x3472, 0x3475, 0x3478, 0x347a, 0x347c, 0x347e, 0x3480, 0x3482,
+ 0x3484, 0x3486, 0x3488, 0x348a, 0x348c, 0x348f, 0x3491, 0x3493,
+ 0x3495, 0x3497, 0x349a, 0x349c, 0x349e, 0x34a0, 0x34a2, 0x34a4,
+ 0x34a6, 0x34a8, 0x34aa, 0x34ac, 0x34af, 0x34b1, 0x34b4, 0x34b6,
+ 0x34b8, 0x34ba, 0x34bc, 0x34be, 0x34c0, 0x34c2, 0x34c4, 0x34c6,
+ 0x34c8, 0x34ca, 0x34cd, 0x34cf, 0x34d1, 0x34d3, 0x34d5, 0x34d7,
+ 0x34da, 0x34dc, 0x34df, 0x34e2, 0x34e4, 0x34e6, 0x34e8, 0x34ea,
+ 0x34ed, 0x34f0, 0x34f2, 0x34f4, 0x34f6, 0x34f8, 0x34fa, 0x34fc,
+ 0x34fe, 0x3500, 0x3502, 0x3504, 0x3506, 0x3509, 0x350b, 0x350d,
+ 0x350f, 0x3511, 0x3513, 0x3515, 0x3517, 0x3519, 0x351b, 0x351d,
+ 0x351f, 0x3521, 0x3523, 0x3525, 0x3527, 0x3529, 0x352b, 0x352d,
+ 0x352f, 0x3532, 0x3534, 0x3536, 0x3538, 0x353a, 0x353c, 0x353f,
+ 0x3541, 0x3543, 0x3545, 0x3547, 0x3549, 0x354b, 0x354d, 0x354f,
+ 0x3551, 0x3553, 0x3555, 0x3558, 0x355a, 0x355c, 0x355e, 0x3560,
+ 0x3562, 0x3564, 0x3566, 0x3568, 0x356a, 0x356c, 0x356e, 0x3570,
+ 0x3572, 0x3574, 0x3576, 0x3578, 0x357a, 0x357c, 0x357f, 0x3581,
+ 0x3583, 0x3585, 0x3587, 0x3589, 0x358c, 0x358e, 0x3590, 0x3592,
+ 0x3594, 0x3596, 0x3598, 0x359a, 0x359c, 0x359f, 0x35a1, 0x35a3,
+ 0x35a5, 0x35a8, 0x35aa, 0x35ac, 0x35ae, 0x35b0, 0x35b2, 0x35b4,
+ 0x35b7, 0x35ba, 0x35bd, 0x35bf, 0x35c2, 0x35c4, 0x35c6, 0x35c8,
- 0x35c4, 0x35c6, 0x35c8, 0x35ca, 0x35cc, 0x35ce, 0x35d0, 0x35d3,
- 0x35d5, 0x35d7, 0x35d9, 0x35db, 0x35dd, 0x35df, 0x35e2, 0x35e4,
- 0x35e6, 0x35e9, 0x35ec, 0x35ee, 0x35f0, 0x35f2, 0x35f4, 0x35f6,
- 0x35f8, 0x35fa, 0x35fc, 0x35fe, 0x3601, 0x3603, 0x3606, 0x3608,
- 0x360b, 0x360d, 0x360f, 0x3611, 0x3614, 0x3616, 0x3618, 0x361b,
- 0x361e, 0x3620, 0x3622, 0x3624, 0x3626, 0x3628, 0x362a, 0x362c,
- 0x362e, 0x3630, 0x3632, 0x3634, 0x3636, 0x3638, 0x363b, 0x363d,
- 0x3640, 0x3642, 0x3645, 0x3647, 0x364a, 0x364d, 0x3650, 0x3652,
- 0x3654, 0x3656, 0x3659, 0x365c, 0x365f, 0x3662, 0x3664, 0x3666,
- 0x3668, 0x366a, 0x366c, 0x366e, 0x3670, 0x3672, 0x3675, 0x3677,
- 0x3679, 0x367b, 0x367d, 0x3680, 0x3682, 0x3685, 0x3688, 0x368a,
- 0x368c, 0x368e, 0x3690, 0x3692, 0x3694, 0x3697, 0x369a, 0x369d,
- 0x369f, 0x36a1, 0x36a4, 0x36a6, 0x36a8, 0x36aa, 0x36ad, 0x36af,
- 0x36b1, 0x36b3, 0x36b5, 0x36b7, 0x36ba, 0x36bc, 0x36be, 0x36c0,
- 0x36c2, 0x36c4, 0x36c6, 0x36c9, 0x36cc, 0x36ce, 0x36d1, 0x36d3,
- 0x36d6, 0x36d8, 0x36da, 0x36dc, 0x36df, 0x36e2, 0x36e4, 0x36e7,
- 0x36e9, 0x36ec, 0x36ee, 0x36f0, 0x36f2, 0x36f4, 0x36f6, 0x36f8,
- 0x36fb, 0x36fe, 0x3701, 0x3704, 0x3706, 0x3708, 0x370a, 0x370c,
- 0x370e, 0x3710, 0x3712, 0x3714, 0x3716, 0x3718, 0x371a, 0x371c,
- 0x371f, 0x3721, 0x3723, 0x3725, 0x3727, 0x3729, 0x372b, 0x372d,
- 0x372f, 0x3731, 0x3733, 0x3735, 0x3737, 0x373a, 0x373d, 0x3740,
- 0x3742, 0x3744, 0x3746, 0x3748, 0x374b, 0x374d, 0x3750, 0x3752,
- 0x3754, 0x3757, 0x375a, 0x375c, 0x375e, 0x3760, 0x3762, 0x3764,
- 0x3766, 0x3768, 0x376a, 0x376c, 0x376e, 0x3770, 0x3772, 0x3774,
- 0x3776, 0x3778, 0x377a, 0x377c, 0x377e, 0x3780, 0x3783, 0x3785,
- 0x3787, 0x3789, 0x378b, 0x378d, 0x3790, 0x3793, 0x3795, 0x3797,
- 0x3799, 0x379b, 0x379d, 0x379f, 0x37a2, 0x37a4, 0x37a6, 0x37a8,
- 0x37aa, 0x37ad, 0x37b0, 0x37b2, 0x37b4, 0x37b6, 0x37b9, 0x37bb,
- 0x37bd, 0x37c0, 0x37c3, 0x37c5, 0x37c7, 0x37c9, 0x37cc, 0x37ce,
- 0x37d0, 0x37d2, 0x37d4, 0x37d6, 0x37d8, 0x37da, 0x37dd, 0x37df,
- 0x37e1, 0x37e3, 0x37e6, 0x37e8, 0x37ea, 0x37ec, 0x37ee, 0x37f1,
- 0x37f4, 0x37f6, 0x37f8, 0x37fa, 0x37fd, 0x37ff, 0x3802, 0x3804,
+ 0x35ca, 0x35cc, 0x35ce, 0x35d0, 0x35d2, 0x35d4, 0x35d6, 0x35d9,
+ 0x35db, 0x35dd, 0x35df, 0x35e1, 0x35e3, 0x35e5, 0x35e8, 0x35ea,
+ 0x35ec, 0x35ef, 0x35f2, 0x35f4, 0x35f6, 0x35f8, 0x35fa, 0x35fc,
+ 0x35fe, 0x3600, 0x3602, 0x3604, 0x3607, 0x3609, 0x360c, 0x360e,
+ 0x3611, 0x3613, 0x3615, 0x3617, 0x361a, 0x361c, 0x361e, 0x3621,
+ 0x3624, 0x3626, 0x3628, 0x362a, 0x362c, 0x362e, 0x3630, 0x3632,
+ 0x3634, 0x3636, 0x3638, 0x363a, 0x363c, 0x363e, 0x3641, 0x3643,
+ 0x3646, 0x3648, 0x364b, 0x364d, 0x3650, 0x3653, 0x3656, 0x3658,
+ 0x365a, 0x365c, 0x365f, 0x3662, 0x3665, 0x3668, 0x366a, 0x366c,
+ 0x366e, 0x3670, 0x3672, 0x3674, 0x3676, 0x3678, 0x367b, 0x367d,
+ 0x367f, 0x3681, 0x3683, 0x3686, 0x3688, 0x368b, 0x368e, 0x3690,
+ 0x3692, 0x3694, 0x3696, 0x3698, 0x369a, 0x369d, 0x36a0, 0x36a3,
+ 0x36a5, 0x36a7, 0x36aa, 0x36ac, 0x36ae, 0x36b0, 0x36b3, 0x36b5,
+ 0x36b7, 0x36b9, 0x36bb, 0x36bd, 0x36c0, 0x36c2, 0x36c4, 0x36c6,
+ 0x36c8, 0x36ca, 0x36cc, 0x36cf, 0x36d2, 0x36d4, 0x36d7, 0x36d9,
+ 0x36dc, 0x36de, 0x36e0, 0x36e2, 0x36e5, 0x36e8, 0x36ea, 0x36ed,
+ 0x36ef, 0x36f2, 0x36f4, 0x36f6, 0x36f8, 0x36fa, 0x36fc, 0x36fe,
+ 0x3701, 0x3704, 0x3707, 0x370a, 0x370c, 0x370e, 0x3710, 0x3712,
+ 0x3714, 0x3716, 0x3718, 0x371a, 0x371c, 0x371e, 0x3720, 0x3722,
+ 0x3725, 0x3727, 0x3729, 0x372b, 0x372d, 0x372f, 0x3731, 0x3733,
+ 0x3735, 0x3737, 0x3739, 0x373b, 0x373d, 0x3740, 0x3743, 0x3746,
+ 0x3748, 0x374a, 0x374c, 0x374e, 0x3751, 0x3753, 0x3756, 0x3758,
+ 0x375a, 0x375d, 0x3760, 0x3762, 0x3764, 0x3766, 0x3768, 0x376a,
+ 0x376c, 0x376e, 0x3770, 0x3772, 0x3774, 0x3776, 0x3778, 0x377a,
+ 0x377c, 0x377e, 0x3780, 0x3782, 0x3784, 0x3786, 0x3789, 0x378b,
+ 0x378d, 0x378f, 0x3791, 0x3793, 0x3796, 0x3799, 0x379b, 0x379d,
+ 0x379f, 0x37a1, 0x37a3, 0x37a5, 0x37a8, 0x37aa, 0x37ac, 0x37ae,
+ 0x37b0, 0x37b3, 0x37b6, 0x37b8, 0x37ba, 0x37bc, 0x37bf, 0x37c1,
+ 0x37c3, 0x37c6, 0x37c9, 0x37cb, 0x37cd, 0x37cf, 0x37d2, 0x37d4,
+ 0x37d6, 0x37d8, 0x37da, 0x37dc, 0x37de, 0x37e0, 0x37e3, 0x37e5,
+ 0x37e7, 0x37e9, 0x37ec, 0x37ee, 0x37f0, 0x37f2, 0x37f4, 0x37f7,
+ 0x37fa, 0x37fc, 0x37fe, 0x3800, 0x3803, 0x3805, 0x3808, 0x380a,
- 0x3806, 0x3808, 0x380b, 0x380d, 0x380f, 0x3811, 0x3813, 0x3815,
- 0x3817, 0x3819, 0x381c, 0x381e, 0x3820, 0x3822, 0x3824, 0x3826,
- 0x3828, 0x382b, 0x382d, 0x3830, 0x3833, 0x3836, 0x3838, 0x383a,
- 0x383c, 0x383e, 0x3840, 0x3842, 0x3844, 0x3846, 0xffff, 0xffff,
+ 0x380c, 0x380e, 0x3811, 0x3813, 0x3815, 0x3817, 0x3819, 0x381b,
+ 0x381d, 0x381f, 0x3822, 0x3824, 0x3826, 0x3828, 0x382a, 0x382c,
+ 0x382e, 0x3831, 0x3833, 0x3836, 0x3839, 0x383c, 0x383e, 0x3840,
+ 0x3842, 0x3844, 0x3846, 0x3848, 0x384a, 0x384c, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
@@ -11678,1100 +12186,1100 @@ static const unsigned short uc_decomposition_map[] = {
0x30e1, 0x108, 0x30e2, 0x108, 0x30e4, 0x108, 0x30e6, 0x108,
0x30e8, 0x108, 0x30e9, 0x108, 0x30ea, 0x108, 0x30eb, 0x108,
0x30ec, 0x108, 0x30ed, 0x108, 0x30ef, 0x108, 0x30f0, 0x108,
- 0x30f1, 0x108, 0x30f2, 0x40f, 0x30a2, 0x30d1, 0x30fc, 0x30c8,
- 0x40f, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x40f, 0x30a2, 0x30f3,
- 0x30da, 0x30a2, 0x30f, 0x30a2, 0x30fc, 0x30eb, 0x40f, 0x30a4,
- 0x30cb, 0x30f3, 0x30b0, 0x30f, 0x30a4, 0x30f3, 0x30c1, 0x30f,
- 0x30a6, 0x30a9, 0x30f3, 0x50f, 0x30a8, 0x30b9, 0x30af, 0x30fc,
- 0x30c9, 0x40f, 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0x30f, 0x30aa,
- 0x30f3, 0x30b9, 0x30f, 0x30aa, 0x30fc, 0x30e0, 0x30f, 0x30ab,
- 0x30a4, 0x30ea, 0x40f, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x40f,
- 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x30f, 0x30ac, 0x30ed, 0x30f3,
- 0x30f, 0x30ac, 0x30f3, 0x30de, 0x20f, 0x30ae, 0x30ac, 0x30f,
- 0x30ae, 0x30cb, 0x30fc, 0x40f, 0x30ad, 0x30e5, 0x30ea, 0x30fc,
- 0x40f, 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0x20f, 0x30ad, 0x30ed,
- 0x50f, 0x30ad, 0x30ed, 0x30b0, 0x30e9, 0x30e0, 0x60f, 0x30ad,
- 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x50f, 0x30ad, 0x30ed,
- 0x30ef, 0x30c3, 0x30c8, 0x30f, 0x30b0, 0x30e9, 0x30e0, 0x50f,
- 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x50f, 0x30af, 0x30eb,
- 0x30bc, 0x30a4, 0x30ed, 0x40f, 0x30af, 0x30ed, 0x30fc, 0x30cd,
- 0x30f, 0x30b1, 0x30fc, 0x30b9, 0x30f, 0x30b3, 0x30eb, 0x30ca,
- 0x30f, 0x30b3, 0x30fc, 0x30dd, 0x40f, 0x30b5, 0x30a4, 0x30af,
- 0x30eb, 0x50f, 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0x40f,
- 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30f, 0x30bb, 0x30f3, 0x30c1,
- 0x30f, 0x30bb, 0x30f3, 0x30c8, 0x30f, 0x30c0, 0x30fc, 0x30b9,
- 0x20f, 0x30c7, 0x30b7, 0x20f, 0x30c9, 0x30eb, 0x20f, 0x30c8,
- 0x30f3, 0x20f, 0x30ca, 0x30ce, 0x30f, 0x30ce, 0x30c3, 0x30c8,
- 0x30f, 0x30cf, 0x30a4, 0x30c4, 0x50f, 0x30d1, 0x30fc, 0x30bb,
- 0x30f3, 0x30c8, 0x30f, 0x30d1, 0x30fc, 0x30c4, 0x40f, 0x30d0,
- 0x30fc, 0x30ec, 0x30eb, 0x50f, 0x30d4, 0x30a2, 0x30b9, 0x30c8,
- 0x30eb, 0x30f, 0x30d4, 0x30af, 0x30eb, 0x20f, 0x30d4, 0x30b3,
- 0x20f, 0x30d3, 0x30eb, 0x50f, 0x30d5, 0x30a1, 0x30e9, 0x30c3,
- 0x30c9, 0x40f, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x50f, 0x30d6,
- 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x30f, 0x30d5, 0x30e9, 0x30f3,
- 0x50f, 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0x20f, 0x30da,
- 0x30bd, 0x30f, 0x30da, 0x30cb, 0x30d2, 0x30f, 0x30d8, 0x30eb,
- 0x30c4, 0x30f, 0x30da, 0x30f3, 0x30b9, 0x30f, 0x30da, 0x30fc,
- 0x30b8, 0x30f, 0x30d9, 0x30fc, 0x30bf, 0x40f, 0x30dd, 0x30a4,
- 0x30f3, 0x30c8, 0x30f, 0x30dc, 0x30eb, 0x30c8, 0x20f, 0x30db,
- 0x30f3, 0x30f, 0x30dd, 0x30f3, 0x30c9, 0x30f, 0x30db, 0x30fc,
- 0x30eb, 0x30f, 0x30db, 0x30fc, 0x30f3, 0x40f, 0x30de, 0x30a4,
- 0x30af, 0x30ed, 0x30f, 0x30de, 0x30a4, 0x30eb, 0x30f, 0x30de,
- 0x30c3, 0x30cf, 0x30f, 0x30de, 0x30eb, 0x30af, 0x50f, 0x30de,
- 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x40f, 0x30df, 0x30af, 0x30ed,
- 0x30f3, 0x20f, 0x30df, 0x30ea, 0x50f, 0x30df, 0x30ea, 0x30d0,
- 0x30fc, 0x30eb, 0x20f, 0x30e1, 0x30ac, 0x40f, 0x30e1, 0x30ac,
- 0x30c8, 0x30f3, 0x40f, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x30f,
- 0x30e4, 0x30fc, 0x30c9, 0x30f, 0x30e4, 0x30fc, 0x30eb, 0x30f,
- 0x30e6, 0x30a2, 0x30f3, 0x40f, 0x30ea, 0x30c3, 0x30c8, 0x30eb,
- 0x20f, 0x30ea, 0x30e9, 0x30f, 0x30eb, 0x30d4, 0x30fc, 0x40f,
- 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0x20f, 0x30ec, 0x30e0, 0x50f,
- 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3, 0x30f, 0x30ef, 0x30c3,
- 0x30c8, 0x210, 0x30, 0x70b9, 0x210, 0x31, 0x70b9, 0x210,
- 0x32, 0x70b9, 0x210, 0x33, 0x70b9, 0x210, 0x34, 0x70b9,
- 0x210, 0x35, 0x70b9, 0x210, 0x36, 0x70b9, 0x210, 0x37,
- 0x70b9, 0x210, 0x38, 0x70b9, 0x210, 0x39, 0x70b9, 0x310,
- 0x31, 0x30, 0x70b9, 0x310, 0x31, 0x31, 0x70b9, 0x310,
- 0x31, 0x32, 0x70b9, 0x310, 0x31, 0x33, 0x70b9, 0x310,
- 0x31, 0x34, 0x70b9, 0x310, 0x31, 0x35, 0x70b9, 0x310,
- 0x31, 0x36, 0x70b9, 0x310, 0x31, 0x37, 0x70b9, 0x310,
- 0x31, 0x38, 0x70b9, 0x310, 0x31, 0x39, 0x70b9, 0x310,
- 0x32, 0x30, 0x70b9, 0x310, 0x32, 0x31, 0x70b9, 0x310,
- 0x32, 0x32, 0x70b9, 0x310, 0x32, 0x33, 0x70b9, 0x310,
- 0x32, 0x34, 0x70b9, 0x30f, 0x68, 0x50, 0x61, 0x20f,
- 0x64, 0x61, 0x20f, 0x41, 0x55, 0x30f, 0x62, 0x61,
- 0x72, 0x20f, 0x6f, 0x56, 0x20f, 0x70, 0x63, 0x20f,
- 0x64, 0x6d, 0x30f, 0x64, 0x6d, 0xb2, 0x30f, 0x64,
- 0x6d, 0xb3, 0x20f, 0x49, 0x55, 0x20f, 0x5e73, 0x6210,
- 0x20f, 0x662d, 0x548c, 0x20f, 0x5927, 0x6b63, 0x20f, 0x660e,
- 0x6cbb, 0x40f, 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0x20f, 0x70,
- 0x41, 0x20f, 0x6e, 0x41, 0x20f, 0x3bc, 0x41, 0x20f,
- 0x6d, 0x41, 0x20f, 0x6b, 0x41, 0x20f, 0x4b, 0x42,
- 0x20f, 0x4d, 0x42, 0x20f, 0x47, 0x42, 0x30f, 0x63,
- 0x61, 0x6c, 0x40f, 0x6b, 0x63, 0x61, 0x6c, 0x20f,
- 0x70, 0x46, 0x20f, 0x6e, 0x46, 0x20f, 0x3bc, 0x46,
- 0x20f, 0x3bc, 0x67, 0x20f, 0x6d, 0x67, 0x20f, 0x6b,
- 0x67, 0x20f, 0x48, 0x7a, 0x30f, 0x6b, 0x48, 0x7a,
- 0x30f, 0x4d, 0x48, 0x7a, 0x30f, 0x47, 0x48, 0x7a,
- 0x30f, 0x54, 0x48, 0x7a, 0x20f, 0x3bc, 0x2113, 0x20f,
- 0x6d, 0x2113, 0x20f, 0x64, 0x2113, 0x20f, 0x6b, 0x2113,
- 0x20f, 0x66, 0x6d, 0x20f, 0x6e, 0x6d, 0x20f, 0x3bc,
- 0x6d, 0x20f, 0x6d, 0x6d, 0x20f, 0x63, 0x6d, 0x20f,
- 0x6b, 0x6d, 0x30f, 0x6d, 0x6d, 0xb2, 0x30f, 0x63,
- 0x6d, 0xb2, 0x20f, 0x6d, 0xb2, 0x30f, 0x6b, 0x6d,
- 0xb2, 0x30f, 0x6d, 0x6d, 0xb3, 0x30f, 0x63, 0x6d,
- 0xb3, 0x20f, 0x6d, 0xb3, 0x30f, 0x6b, 0x6d, 0xb3,
- 0x30f, 0x6d, 0x2215, 0x73, 0x40f, 0x6d, 0x2215, 0x73,
- 0xb2, 0x20f, 0x50, 0x61, 0x30f, 0x6b, 0x50, 0x61,
- 0x30f, 0x4d, 0x50, 0x61, 0x30f, 0x47, 0x50, 0x61,
- 0x30f, 0x72, 0x61, 0x64, 0x50f, 0x72, 0x61, 0x64,
- 0x2215, 0x73, 0x60f, 0x72, 0x61, 0x64, 0x2215, 0x73,
- 0xb2, 0x20f, 0x70, 0x73, 0x20f, 0x6e, 0x73, 0x20f,
- 0x3bc, 0x73, 0x20f, 0x6d, 0x73, 0x20f, 0x70, 0x56,
- 0x20f, 0x6e, 0x56, 0x20f, 0x3bc, 0x56, 0x20f, 0x6d,
- 0x56, 0x20f, 0x6b, 0x56, 0x20f, 0x4d, 0x56, 0x20f,
- 0x70, 0x57, 0x20f, 0x6e, 0x57, 0x20f, 0x3bc, 0x57,
- 0x20f, 0x6d, 0x57, 0x20f, 0x6b, 0x57, 0x20f, 0x4d,
- 0x57, 0x20f, 0x6b, 0x3a9, 0x20f, 0x4d, 0x3a9, 0x40f,
- 0x61, 0x2e, 0x6d, 0x2e, 0x20f, 0x42, 0x71, 0x20f,
- 0x63, 0x63, 0x20f, 0x63, 0x64, 0x40f, 0x43, 0x2215,
- 0x6b, 0x67, 0x30f, 0x43, 0x6f, 0x2e, 0x20f, 0x64,
- 0x42, 0x20f, 0x47, 0x79, 0x20f, 0x68, 0x61, 0x20f,
- 0x48, 0x50, 0x20f, 0x69, 0x6e, 0x20f, 0x4b, 0x4b,
- 0x20f, 0x4b, 0x4d, 0x20f, 0x6b, 0x74, 0x20f, 0x6c,
- 0x6d, 0x20f, 0x6c, 0x6e, 0x30f, 0x6c, 0x6f, 0x67,
- 0x20f, 0x6c, 0x78, 0x20f, 0x6d, 0x62, 0x30f, 0x6d,
- 0x69, 0x6c, 0x30f, 0x6d, 0x6f, 0x6c, 0x20f, 0x50,
- 0x48, 0x40f, 0x70, 0x2e, 0x6d, 0x2e, 0x30f, 0x50,
- 0x50, 0x4d, 0x20f, 0x50, 0x52, 0x20f, 0x73, 0x72,
- 0x20f, 0x53, 0x76, 0x20f, 0x57, 0x62, 0x30f, 0x56,
- 0x2215, 0x6d, 0x30f, 0x41, 0x2215, 0x6d, 0x210, 0x31,
- 0x65e5, 0x210, 0x32, 0x65e5, 0x210, 0x33, 0x65e5, 0x210,
- 0x34, 0x65e5, 0x210, 0x35, 0x65e5, 0x210, 0x36, 0x65e5,
- 0x210, 0x37, 0x65e5, 0x210, 0x38, 0x65e5, 0x210, 0x39,
- 0x65e5, 0x310, 0x31, 0x30, 0x65e5, 0x310, 0x31, 0x31,
- 0x65e5, 0x310, 0x31, 0x32, 0x65e5, 0x310, 0x31, 0x33,
- 0x65e5, 0x310, 0x31, 0x34, 0x65e5, 0x310, 0x31, 0x35,
- 0x65e5, 0x310, 0x31, 0x36, 0x65e5, 0x310, 0x31, 0x37,
- 0x65e5, 0x310, 0x31, 0x38, 0x65e5, 0x310, 0x31, 0x39,
- 0x65e5, 0x310, 0x32, 0x30, 0x65e5, 0x310, 0x32, 0x31,
- 0x65e5, 0x310, 0x32, 0x32, 0x65e5, 0x310, 0x32, 0x33,
- 0x65e5, 0x310, 0x32, 0x34, 0x65e5, 0x310, 0x32, 0x35,
- 0x65e5, 0x310, 0x32, 0x36, 0x65e5, 0x310, 0x32, 0x37,
- 0x65e5, 0x310, 0x32, 0x38, 0x65e5, 0x310, 0x32, 0x39,
- 0x65e5, 0x310, 0x33, 0x30, 0x65e5, 0x310, 0x33, 0x31,
- 0x65e5, 0x30f, 0x67, 0x61, 0x6c, 0x109, 0x44a, 0x109,
- 0x44c, 0x109, 0xa76f, 0x109, 0x126, 0x109, 0x153, 0x109,
- 0xa727, 0x109, 0xab37, 0x109, 0x26b, 0x109, 0xab52, 0x101,
- 0x8c48, 0x101, 0x66f4, 0x101, 0x8eca, 0x101, 0x8cc8, 0x101,
- 0x6ed1, 0x101, 0x4e32, 0x101, 0x53e5, 0x101, 0x9f9c, 0x101,
- 0x9f9c, 0x101, 0x5951, 0x101, 0x91d1, 0x101, 0x5587, 0x101,
- 0x5948, 0x101, 0x61f6, 0x101, 0x7669, 0x101, 0x7f85, 0x101,
- 0x863f, 0x101, 0x87ba, 0x101, 0x88f8, 0x101, 0x908f, 0x101,
- 0x6a02, 0x101, 0x6d1b, 0x101, 0x70d9, 0x101, 0x73de, 0x101,
- 0x843d, 0x101, 0x916a, 0x101, 0x99f1, 0x101, 0x4e82, 0x101,
- 0x5375, 0x101, 0x6b04, 0x101, 0x721b, 0x101, 0x862d, 0x101,
- 0x9e1e, 0x101, 0x5d50, 0x101, 0x6feb, 0x101, 0x85cd, 0x101,
- 0x8964, 0x101, 0x62c9, 0x101, 0x81d8, 0x101, 0x881f, 0x101,
- 0x5eca, 0x101, 0x6717, 0x101, 0x6d6a, 0x101, 0x72fc, 0x101,
- 0x90ce, 0x101, 0x4f86, 0x101, 0x51b7, 0x101, 0x52de, 0x101,
- 0x64c4, 0x101, 0x6ad3, 0x101, 0x7210, 0x101, 0x76e7, 0x101,
- 0x8001, 0x101, 0x8606, 0x101, 0x865c, 0x101, 0x8def, 0x101,
- 0x9732, 0x101, 0x9b6f, 0x101, 0x9dfa, 0x101, 0x788c, 0x101,
- 0x797f, 0x101, 0x7da0, 0x101, 0x83c9, 0x101, 0x9304, 0x101,
- 0x9e7f, 0x101, 0x8ad6, 0x101, 0x58df, 0x101, 0x5f04, 0x101,
- 0x7c60, 0x101, 0x807e, 0x101, 0x7262, 0x101, 0x78ca, 0x101,
- 0x8cc2, 0x101, 0x96f7, 0x101, 0x58d8, 0x101, 0x5c62, 0x101,
- 0x6a13, 0x101, 0x6dda, 0x101, 0x6f0f, 0x101, 0x7d2f, 0x101,
- 0x7e37, 0x101, 0x964b, 0x101, 0x52d2, 0x101, 0x808b, 0x101,
- 0x51dc, 0x101, 0x51cc, 0x101, 0x7a1c, 0x101, 0x7dbe, 0x101,
- 0x83f1, 0x101, 0x9675, 0x101, 0x8b80, 0x101, 0x62cf, 0x101,
- 0x6a02, 0x101, 0x8afe, 0x101, 0x4e39, 0x101, 0x5be7, 0x101,
- 0x6012, 0x101, 0x7387, 0x101, 0x7570, 0x101, 0x5317, 0x101,
- 0x78fb, 0x101, 0x4fbf, 0x101, 0x5fa9, 0x101, 0x4e0d, 0x101,
- 0x6ccc, 0x101, 0x6578, 0x101, 0x7d22, 0x101, 0x53c3, 0x101,
- 0x585e, 0x101, 0x7701, 0x101, 0x8449, 0x101, 0x8aaa, 0x101,
- 0x6bba, 0x101, 0x8fb0, 0x101, 0x6c88, 0x101, 0x62fe, 0x101,
- 0x82e5, 0x101, 0x63a0, 0x101, 0x7565, 0x101, 0x4eae, 0x101,
- 0x5169, 0x101, 0x51c9, 0x101, 0x6881, 0x101, 0x7ce7, 0x101,
- 0x826f, 0x101, 0x8ad2, 0x101, 0x91cf, 0x101, 0x52f5, 0x101,
- 0x5442, 0x101, 0x5973, 0x101, 0x5eec, 0x101, 0x65c5, 0x101,
- 0x6ffe, 0x101, 0x792a, 0x101, 0x95ad, 0x101, 0x9a6a, 0x101,
- 0x9e97, 0x101, 0x9ece, 0x101, 0x529b, 0x101, 0x66c6, 0x101,
- 0x6b77, 0x101, 0x8f62, 0x101, 0x5e74, 0x101, 0x6190, 0x101,
- 0x6200, 0x101, 0x649a, 0x101, 0x6f23, 0x101, 0x7149, 0x101,
- 0x7489, 0x101, 0x79ca, 0x101, 0x7df4, 0x101, 0x806f, 0x101,
- 0x8f26, 0x101, 0x84ee, 0x101, 0x9023, 0x101, 0x934a, 0x101,
- 0x5217, 0x101, 0x52a3, 0x101, 0x54bd, 0x101, 0x70c8, 0x101,
- 0x88c2, 0x101, 0x8aaa, 0x101, 0x5ec9, 0x101, 0x5ff5, 0x101,
- 0x637b, 0x101, 0x6bae, 0x101, 0x7c3e, 0x101, 0x7375, 0x101,
- 0x4ee4, 0x101, 0x56f9, 0x101, 0x5be7, 0x101, 0x5dba, 0x101,
- 0x601c, 0x101, 0x73b2, 0x101, 0x7469, 0x101, 0x7f9a, 0x101,
- 0x8046, 0x101, 0x9234, 0x101, 0x96f6, 0x101, 0x9748, 0x101,
- 0x9818, 0x101, 0x4f8b, 0x101, 0x79ae, 0x101, 0x91b4, 0x101,
- 0x96b8, 0x101, 0x60e1, 0x101, 0x4e86, 0x101, 0x50da, 0x101,
- 0x5bee, 0x101, 0x5c3f, 0x101, 0x6599, 0x101, 0x6a02, 0x101,
- 0x71ce, 0x101, 0x7642, 0x101, 0x84fc, 0x101, 0x907c, 0x101,
- 0x9f8d, 0x101, 0x6688, 0x101, 0x962e, 0x101, 0x5289, 0x101,
- 0x677b, 0x101, 0x67f3, 0x101, 0x6d41, 0x101, 0x6e9c, 0x101,
- 0x7409, 0x101, 0x7559, 0x101, 0x786b, 0x101, 0x7d10, 0x101,
- 0x985e, 0x101, 0x516d, 0x101, 0x622e, 0x101, 0x9678, 0x101,
- 0x502b, 0x101, 0x5d19, 0x101, 0x6dea, 0x101, 0x8f2a, 0x101,
- 0x5f8b, 0x101, 0x6144, 0x101, 0x6817, 0x101, 0x7387, 0x101,
- 0x9686, 0x101, 0x5229, 0x101, 0x540f, 0x101, 0x5c65, 0x101,
- 0x6613, 0x101, 0x674e, 0x101, 0x68a8, 0x101, 0x6ce5, 0x101,
- 0x7406, 0x101, 0x75e2, 0x101, 0x7f79, 0x101, 0x88cf, 0x101,
- 0x88e1, 0x101, 0x91cc, 0x101, 0x96e2, 0x101, 0x533f, 0x101,
- 0x6eba, 0x101, 0x541d, 0x101, 0x71d0, 0x101, 0x7498, 0x101,
- 0x85fa, 0x101, 0x96a3, 0x101, 0x9c57, 0x101, 0x9e9f, 0x101,
- 0x6797, 0x101, 0x6dcb, 0x101, 0x81e8, 0x101, 0x7acb, 0x101,
- 0x7b20, 0x101, 0x7c92, 0x101, 0x72c0, 0x101, 0x7099, 0x101,
- 0x8b58, 0x101, 0x4ec0, 0x101, 0x8336, 0x101, 0x523a, 0x101,
- 0x5207, 0x101, 0x5ea6, 0x101, 0x62d3, 0x101, 0x7cd6, 0x101,
- 0x5b85, 0x101, 0x6d1e, 0x101, 0x66b4, 0x101, 0x8f3b, 0x101,
- 0x884c, 0x101, 0x964d, 0x101, 0x898b, 0x101, 0x5ed3, 0x101,
- 0x5140, 0x101, 0x55c0, 0x101, 0x585a, 0x101, 0x6674, 0x101,
- 0x51de, 0x101, 0x732a, 0x101, 0x76ca, 0x101, 0x793c, 0x101,
- 0x795e, 0x101, 0x7965, 0x101, 0x798f, 0x101, 0x9756, 0x101,
- 0x7cbe, 0x101, 0x7fbd, 0x101, 0x8612, 0x101, 0x8af8, 0x101,
- 0x9038, 0x101, 0x90fd, 0x101, 0x98ef, 0x101, 0x98fc, 0x101,
- 0x9928, 0x101, 0x9db4, 0x101, 0x90de, 0x101, 0x96b7, 0x101,
- 0x4fae, 0x101, 0x50e7, 0x101, 0x514d, 0x101, 0x52c9, 0x101,
- 0x52e4, 0x101, 0x5351, 0x101, 0x559d, 0x101, 0x5606, 0x101,
- 0x5668, 0x101, 0x5840, 0x101, 0x58a8, 0x101, 0x5c64, 0x101,
- 0x5c6e, 0x101, 0x6094, 0x101, 0x6168, 0x101, 0x618e, 0x101,
- 0x61f2, 0x101, 0x654f, 0x101, 0x65e2, 0x101, 0x6691, 0x101,
- 0x6885, 0x101, 0x6d77, 0x101, 0x6e1a, 0x101, 0x6f22, 0x101,
- 0x716e, 0x101, 0x722b, 0x101, 0x7422, 0x101, 0x7891, 0x101,
- 0x793e, 0x101, 0x7949, 0x101, 0x7948, 0x101, 0x7950, 0x101,
- 0x7956, 0x101, 0x795d, 0x101, 0x798d, 0x101, 0x798e, 0x101,
- 0x7a40, 0x101, 0x7a81, 0x101, 0x7bc0, 0x101, 0x7df4, 0x101,
- 0x7e09, 0x101, 0x7e41, 0x101, 0x7f72, 0x101, 0x8005, 0x101,
- 0x81ed, 0x101, 0x8279, 0x101, 0x8279, 0x101, 0x8457, 0x101,
- 0x8910, 0x101, 0x8996, 0x101, 0x8b01, 0x101, 0x8b39, 0x101,
- 0x8cd3, 0x101, 0x8d08, 0x101, 0x8fb6, 0x101, 0x9038, 0x101,
- 0x96e3, 0x101, 0x97ff, 0x101, 0x983b, 0x101, 0x6075, 0x201,
- 0xd850, 0xdeee, 0x101, 0x8218, 0x101, 0x4e26, 0x101, 0x51b5,
- 0x101, 0x5168, 0x101, 0x4f80, 0x101, 0x5145, 0x101, 0x5180,
- 0x101, 0x52c7, 0x101, 0x52fa, 0x101, 0x559d, 0x101, 0x5555,
- 0x101, 0x5599, 0x101, 0x55e2, 0x101, 0x585a, 0x101, 0x58b3,
- 0x101, 0x5944, 0x101, 0x5954, 0x101, 0x5a62, 0x101, 0x5b28,
- 0x101, 0x5ed2, 0x101, 0x5ed9, 0x101, 0x5f69, 0x101, 0x5fad,
- 0x101, 0x60d8, 0x101, 0x614e, 0x101, 0x6108, 0x101, 0x618e,
- 0x101, 0x6160, 0x101, 0x61f2, 0x101, 0x6234, 0x101, 0x63c4,
- 0x101, 0x641c, 0x101, 0x6452, 0x101, 0x6556, 0x101, 0x6674,
- 0x101, 0x6717, 0x101, 0x671b, 0x101, 0x6756, 0x101, 0x6b79,
- 0x101, 0x6bba, 0x101, 0x6d41, 0x101, 0x6edb, 0x101, 0x6ecb,
- 0x101, 0x6f22, 0x101, 0x701e, 0x101, 0x716e, 0x101, 0x77a7,
- 0x101, 0x7235, 0x101, 0x72af, 0x101, 0x732a, 0x101, 0x7471,
- 0x101, 0x7506, 0x101, 0x753b, 0x101, 0x761d, 0x101, 0x761f,
- 0x101, 0x76ca, 0x101, 0x76db, 0x101, 0x76f4, 0x101, 0x774a,
- 0x101, 0x7740, 0x101, 0x78cc, 0x101, 0x7ab1, 0x101, 0x7bc0,
- 0x101, 0x7c7b, 0x101, 0x7d5b, 0x101, 0x7df4, 0x101, 0x7f3e,
- 0x101, 0x8005, 0x101, 0x8352, 0x101, 0x83ef, 0x101, 0x8779,
- 0x101, 0x8941, 0x101, 0x8986, 0x101, 0x8996, 0x101, 0x8abf,
- 0x101, 0x8af8, 0x101, 0x8acb, 0x101, 0x8b01, 0x101, 0x8afe,
- 0x101, 0x8aed, 0x101, 0x8b39, 0x101, 0x8b8a, 0x101, 0x8d08,
- 0x101, 0x8f38, 0x101, 0x9072, 0x101, 0x9199, 0x101, 0x9276,
- 0x101, 0x967c, 0x101, 0x96e3, 0x101, 0x9756, 0x101, 0x97db,
- 0x101, 0x97ff, 0x101, 0x980b, 0x101, 0x983b, 0x101, 0x9b12,
- 0x101, 0x9f9c, 0x201, 0xd84a, 0xdc4a, 0x201, 0xd84a, 0xdc44,
- 0x201, 0xd84c, 0xdfd5, 0x101, 0x3b9d, 0x101, 0x4018, 0x101,
- 0x4039, 0x201, 0xd854, 0xde49, 0x201, 0xd857, 0xdcd0, 0x201,
- 0xd85f, 0xded3, 0x101, 0x9f43, 0x101, 0x9f8e, 0x210, 0x66,
- 0x66, 0x210, 0x66, 0x69, 0x210, 0x66, 0x6c, 0x310,
- 0x66, 0x66, 0x69, 0x310, 0x66, 0x66, 0x6c, 0x210,
- 0x17f, 0x74, 0x210, 0x73, 0x74, 0x210, 0x574, 0x576,
- 0x210, 0x574, 0x565, 0x210, 0x574, 0x56b, 0x210, 0x57e,
- 0x576, 0x210, 0x574, 0x56d, 0x201, 0x5d9, 0x5b4, 0x201,
- 0x5f2, 0x5b7, 0x102, 0x5e2, 0x102, 0x5d0, 0x102, 0x5d3,
- 0x102, 0x5d4, 0x102, 0x5db, 0x102, 0x5dc, 0x102, 0x5dd,
- 0x102, 0x5e8, 0x102, 0x5ea, 0x102, 0x2b, 0x201, 0x5e9,
- 0x5c1, 0x201, 0x5e9, 0x5c2, 0x201, 0xfb49, 0x5c1, 0x201,
- 0xfb49, 0x5c2, 0x201, 0x5d0, 0x5b7, 0x201, 0x5d0, 0x5b8,
- 0x201, 0x5d0, 0x5bc, 0x201, 0x5d1, 0x5bc, 0x201, 0x5d2,
- 0x5bc, 0x201, 0x5d3, 0x5bc, 0x201, 0x5d4, 0x5bc, 0x201,
- 0x5d5, 0x5bc, 0x201, 0x5d6, 0x5bc, 0x201, 0x5d8, 0x5bc,
- 0x201, 0x5d9, 0x5bc, 0x201, 0x5da, 0x5bc, 0x201, 0x5db,
- 0x5bc, 0x201, 0x5dc, 0x5bc, 0x201, 0x5de, 0x5bc, 0x201,
- 0x5e0, 0x5bc, 0x201, 0x5e1, 0x5bc, 0x201, 0x5e3, 0x5bc,
- 0x201, 0x5e4, 0x5bc, 0x201, 0x5e6, 0x5bc, 0x201, 0x5e7,
- 0x5bc, 0x201, 0x5e8, 0x5bc, 0x201, 0x5e9, 0x5bc, 0x201,
- 0x5ea, 0x5bc, 0x201, 0x5d5, 0x5b9, 0x201, 0x5d1, 0x5bf,
- 0x201, 0x5db, 0x5bf, 0x201, 0x5e4, 0x5bf, 0x210, 0x5d0,
- 0x5dc, 0x107, 0x671, 0x106, 0x671, 0x107, 0x67b, 0x106,
- 0x67b, 0x104, 0x67b, 0x105, 0x67b, 0x107, 0x67e, 0x106,
- 0x67e, 0x104, 0x67e, 0x105, 0x67e, 0x107, 0x680, 0x106,
- 0x680, 0x104, 0x680, 0x105, 0x680, 0x107, 0x67a, 0x106,
- 0x67a, 0x104, 0x67a, 0x105, 0x67a, 0x107, 0x67f, 0x106,
- 0x67f, 0x104, 0x67f, 0x105, 0x67f, 0x107, 0x679, 0x106,
- 0x679, 0x104, 0x679, 0x105, 0x679, 0x107, 0x6a4, 0x106,
- 0x6a4, 0x104, 0x6a4, 0x105, 0x6a4, 0x107, 0x6a6, 0x106,
- 0x6a6, 0x104, 0x6a6, 0x105, 0x6a6, 0x107, 0x684, 0x106,
- 0x684, 0x104, 0x684, 0x105, 0x684, 0x107, 0x683, 0x106,
- 0x683, 0x104, 0x683, 0x105, 0x683, 0x107, 0x686, 0x106,
- 0x686, 0x104, 0x686, 0x105, 0x686, 0x107, 0x687, 0x106,
- 0x687, 0x104, 0x687, 0x105, 0x687, 0x107, 0x68d, 0x106,
- 0x68d, 0x107, 0x68c, 0x106, 0x68c, 0x107, 0x68e, 0x106,
- 0x68e, 0x107, 0x688, 0x106, 0x688, 0x107, 0x698, 0x106,
- 0x698, 0x107, 0x691, 0x106, 0x691, 0x107, 0x6a9, 0x106,
- 0x6a9, 0x104, 0x6a9, 0x105, 0x6a9, 0x107, 0x6af, 0x106,
- 0x6af, 0x104, 0x6af, 0x105, 0x6af, 0x107, 0x6b3, 0x106,
- 0x6b3, 0x104, 0x6b3, 0x105, 0x6b3, 0x107, 0x6b1, 0x106,
- 0x6b1, 0x104, 0x6b1, 0x105, 0x6b1, 0x107, 0x6ba, 0x106,
- 0x6ba, 0x107, 0x6bb, 0x106, 0x6bb, 0x104, 0x6bb, 0x105,
- 0x6bb, 0x107, 0x6c0, 0x106, 0x6c0, 0x107, 0x6c1, 0x106,
- 0x6c1, 0x104, 0x6c1, 0x105, 0x6c1, 0x107, 0x6be, 0x106,
- 0x6be, 0x104, 0x6be, 0x105, 0x6be, 0x107, 0x6d2, 0x106,
- 0x6d2, 0x107, 0x6d3, 0x106, 0x6d3, 0x107, 0x6ad, 0x106,
- 0x6ad, 0x104, 0x6ad, 0x105, 0x6ad, 0x107, 0x6c7, 0x106,
- 0x6c7, 0x107, 0x6c6, 0x106, 0x6c6, 0x107, 0x6c8, 0x106,
- 0x6c8, 0x107, 0x677, 0x107, 0x6cb, 0x106, 0x6cb, 0x107,
- 0x6c5, 0x106, 0x6c5, 0x107, 0x6c9, 0x106, 0x6c9, 0x107,
- 0x6d0, 0x106, 0x6d0, 0x104, 0x6d0, 0x105, 0x6d0, 0x104,
- 0x649, 0x105, 0x649, 0x207, 0x626, 0x627, 0x206, 0x626,
- 0x627, 0x207, 0x626, 0x6d5, 0x206, 0x626, 0x6d5, 0x207,
- 0x626, 0x648, 0x206, 0x626, 0x648, 0x207, 0x626, 0x6c7,
- 0x206, 0x626, 0x6c7, 0x207, 0x626, 0x6c6, 0x206, 0x626,
- 0x6c6, 0x207, 0x626, 0x6c8, 0x206, 0x626, 0x6c8, 0x207,
- 0x626, 0x6d0, 0x206, 0x626, 0x6d0, 0x204, 0x626, 0x6d0,
- 0x207, 0x626, 0x649, 0x206, 0x626, 0x649, 0x204, 0x626,
- 0x649, 0x107, 0x6cc, 0x106, 0x6cc, 0x104, 0x6cc, 0x105,
- 0x6cc, 0x207, 0x626, 0x62c, 0x207, 0x626, 0x62d, 0x207,
- 0x626, 0x645, 0x207, 0x626, 0x649, 0x207, 0x626, 0x64a,
- 0x207, 0x628, 0x62c, 0x207, 0x628, 0x62d, 0x207, 0x628,
- 0x62e, 0x207, 0x628, 0x645, 0x207, 0x628, 0x649, 0x207,
- 0x628, 0x64a, 0x207, 0x62a, 0x62c, 0x207, 0x62a, 0x62d,
- 0x207, 0x62a, 0x62e, 0x207, 0x62a, 0x645, 0x207, 0x62a,
- 0x649, 0x207, 0x62a, 0x64a, 0x207, 0x62b, 0x62c, 0x207,
- 0x62b, 0x645, 0x207, 0x62b, 0x649, 0x207, 0x62b, 0x64a,
- 0x207, 0x62c, 0x62d, 0x207, 0x62c, 0x645, 0x207, 0x62d,
- 0x62c, 0x207, 0x62d, 0x645, 0x207, 0x62e, 0x62c, 0x207,
- 0x62e, 0x62d, 0x207, 0x62e, 0x645, 0x207, 0x633, 0x62c,
- 0x207, 0x633, 0x62d, 0x207, 0x633, 0x62e, 0x207, 0x633,
- 0x645, 0x207, 0x635, 0x62d, 0x207, 0x635, 0x645, 0x207,
- 0x636, 0x62c, 0x207, 0x636, 0x62d, 0x207, 0x636, 0x62e,
- 0x207, 0x636, 0x645, 0x207, 0x637, 0x62d, 0x207, 0x637,
- 0x645, 0x207, 0x638, 0x645, 0x207, 0x639, 0x62c, 0x207,
- 0x639, 0x645, 0x207, 0x63a, 0x62c, 0x207, 0x63a, 0x645,
- 0x207, 0x641, 0x62c, 0x207, 0x641, 0x62d, 0x207, 0x641,
- 0x62e, 0x207, 0x641, 0x645, 0x207, 0x641, 0x649, 0x207,
- 0x641, 0x64a, 0x207, 0x642, 0x62d, 0x207, 0x642, 0x645,
- 0x207, 0x642, 0x649, 0x207, 0x642, 0x64a, 0x207, 0x643,
- 0x627, 0x207, 0x643, 0x62c, 0x207, 0x643, 0x62d, 0x207,
- 0x643, 0x62e, 0x207, 0x643, 0x644, 0x207, 0x643, 0x645,
- 0x207, 0x643, 0x649, 0x207, 0x643, 0x64a, 0x207, 0x644,
- 0x62c, 0x207, 0x644, 0x62d, 0x207, 0x644, 0x62e, 0x207,
- 0x644, 0x645, 0x207, 0x644, 0x649, 0x207, 0x644, 0x64a,
- 0x207, 0x645, 0x62c, 0x207, 0x645, 0x62d, 0x207, 0x645,
- 0x62e, 0x207, 0x645, 0x645, 0x207, 0x645, 0x649, 0x207,
- 0x645, 0x64a, 0x207, 0x646, 0x62c, 0x207, 0x646, 0x62d,
- 0x207, 0x646, 0x62e, 0x207, 0x646, 0x645, 0x207, 0x646,
- 0x649, 0x207, 0x646, 0x64a, 0x207, 0x647, 0x62c, 0x207,
- 0x647, 0x645, 0x207, 0x647, 0x649, 0x207, 0x647, 0x64a,
- 0x207, 0x64a, 0x62c, 0x207, 0x64a, 0x62d, 0x207, 0x64a,
- 0x62e, 0x207, 0x64a, 0x645, 0x207, 0x64a, 0x649, 0x207,
- 0x64a, 0x64a, 0x207, 0x630, 0x670, 0x207, 0x631, 0x670,
- 0x207, 0x649, 0x670, 0x307, 0x20, 0x64c, 0x651, 0x307,
- 0x20, 0x64d, 0x651, 0x307, 0x20, 0x64e, 0x651, 0x307,
- 0x20, 0x64f, 0x651, 0x307, 0x20, 0x650, 0x651, 0x307,
- 0x20, 0x651, 0x670, 0x206, 0x626, 0x631, 0x206, 0x626,
- 0x632, 0x206, 0x626, 0x645, 0x206, 0x626, 0x646, 0x206,
- 0x626, 0x649, 0x206, 0x626, 0x64a, 0x206, 0x628, 0x631,
- 0x206, 0x628, 0x632, 0x206, 0x628, 0x645, 0x206, 0x628,
- 0x646, 0x206, 0x628, 0x649, 0x206, 0x628, 0x64a, 0x206,
- 0x62a, 0x631, 0x206, 0x62a, 0x632, 0x206, 0x62a, 0x645,
- 0x206, 0x62a, 0x646, 0x206, 0x62a, 0x649, 0x206, 0x62a,
- 0x64a, 0x206, 0x62b, 0x631, 0x206, 0x62b, 0x632, 0x206,
- 0x62b, 0x645, 0x206, 0x62b, 0x646, 0x206, 0x62b, 0x649,
- 0x206, 0x62b, 0x64a, 0x206, 0x641, 0x649, 0x206, 0x641,
- 0x64a, 0x206, 0x642, 0x649, 0x206, 0x642, 0x64a, 0x206,
- 0x643, 0x627, 0x206, 0x643, 0x644, 0x206, 0x643, 0x645,
- 0x206, 0x643, 0x649, 0x206, 0x643, 0x64a, 0x206, 0x644,
- 0x645, 0x206, 0x644, 0x649, 0x206, 0x644, 0x64a, 0x206,
- 0x645, 0x627, 0x206, 0x645, 0x645, 0x206, 0x646, 0x631,
- 0x206, 0x646, 0x632, 0x206, 0x646, 0x645, 0x206, 0x646,
- 0x646, 0x206, 0x646, 0x649, 0x206, 0x646, 0x64a, 0x206,
- 0x649, 0x670, 0x206, 0x64a, 0x631, 0x206, 0x64a, 0x632,
- 0x206, 0x64a, 0x645, 0x206, 0x64a, 0x646, 0x206, 0x64a,
- 0x649, 0x206, 0x64a, 0x64a, 0x204, 0x626, 0x62c, 0x204,
- 0x626, 0x62d, 0x204, 0x626, 0x62e, 0x204, 0x626, 0x645,
- 0x204, 0x626, 0x647, 0x204, 0x628, 0x62c, 0x204, 0x628,
- 0x62d, 0x204, 0x628, 0x62e, 0x204, 0x628, 0x645, 0x204,
- 0x628, 0x647, 0x204, 0x62a, 0x62c, 0x204, 0x62a, 0x62d,
- 0x204, 0x62a, 0x62e, 0x204, 0x62a, 0x645, 0x204, 0x62a,
- 0x647, 0x204, 0x62b, 0x645, 0x204, 0x62c, 0x62d, 0x204,
- 0x62c, 0x645, 0x204, 0x62d, 0x62c, 0x204, 0x62d, 0x645,
- 0x204, 0x62e, 0x62c, 0x204, 0x62e, 0x645, 0x204, 0x633,
- 0x62c, 0x204, 0x633, 0x62d, 0x204, 0x633, 0x62e, 0x204,
- 0x633, 0x645, 0x204, 0x635, 0x62d, 0x204, 0x635, 0x62e,
- 0x204, 0x635, 0x645, 0x204, 0x636, 0x62c, 0x204, 0x636,
- 0x62d, 0x204, 0x636, 0x62e, 0x204, 0x636, 0x645, 0x204,
- 0x637, 0x62d, 0x204, 0x638, 0x645, 0x204, 0x639, 0x62c,
- 0x204, 0x639, 0x645, 0x204, 0x63a, 0x62c, 0x204, 0x63a,
- 0x645, 0x204, 0x641, 0x62c, 0x204, 0x641, 0x62d, 0x204,
- 0x641, 0x62e, 0x204, 0x641, 0x645, 0x204, 0x642, 0x62d,
- 0x204, 0x642, 0x645, 0x204, 0x643, 0x62c, 0x204, 0x643,
- 0x62d, 0x204, 0x643, 0x62e, 0x204, 0x643, 0x644, 0x204,
- 0x643, 0x645, 0x204, 0x644, 0x62c, 0x204, 0x644, 0x62d,
- 0x204, 0x644, 0x62e, 0x204, 0x644, 0x645, 0x204, 0x644,
- 0x647, 0x204, 0x645, 0x62c, 0x204, 0x645, 0x62d, 0x204,
- 0x645, 0x62e, 0x204, 0x645, 0x645, 0x204, 0x646, 0x62c,
- 0x204, 0x646, 0x62d, 0x204, 0x646, 0x62e, 0x204, 0x646,
- 0x645, 0x204, 0x646, 0x647, 0x204, 0x647, 0x62c, 0x204,
- 0x647, 0x645, 0x204, 0x647, 0x670, 0x204, 0x64a, 0x62c,
- 0x204, 0x64a, 0x62d, 0x204, 0x64a, 0x62e, 0x204, 0x64a,
- 0x645, 0x204, 0x64a, 0x647, 0x205, 0x626, 0x645, 0x205,
- 0x626, 0x647, 0x205, 0x628, 0x645, 0x205, 0x628, 0x647,
- 0x205, 0x62a, 0x645, 0x205, 0x62a, 0x647, 0x205, 0x62b,
- 0x645, 0x205, 0x62b, 0x647, 0x205, 0x633, 0x645, 0x205,
- 0x633, 0x647, 0x205, 0x634, 0x645, 0x205, 0x634, 0x647,
- 0x205, 0x643, 0x644, 0x205, 0x643, 0x645, 0x205, 0x644,
- 0x645, 0x205, 0x646, 0x645, 0x205, 0x646, 0x647, 0x205,
- 0x64a, 0x645, 0x205, 0x64a, 0x647, 0x305, 0x640, 0x64e,
- 0x651, 0x305, 0x640, 0x64f, 0x651, 0x305, 0x640, 0x650,
- 0x651, 0x207, 0x637, 0x649, 0x207, 0x637, 0x64a, 0x207,
- 0x639, 0x649, 0x207, 0x639, 0x64a, 0x207, 0x63a, 0x649,
- 0x207, 0x63a, 0x64a, 0x207, 0x633, 0x649, 0x207, 0x633,
- 0x64a, 0x207, 0x634, 0x649, 0x207, 0x634, 0x64a, 0x207,
- 0x62d, 0x649, 0x207, 0x62d, 0x64a, 0x207, 0x62c, 0x649,
- 0x207, 0x62c, 0x64a, 0x207, 0x62e, 0x649, 0x207, 0x62e,
- 0x64a, 0x207, 0x635, 0x649, 0x207, 0x635, 0x64a, 0x207,
- 0x636, 0x649, 0x207, 0x636, 0x64a, 0x207, 0x634, 0x62c,
- 0x207, 0x634, 0x62d, 0x207, 0x634, 0x62e, 0x207, 0x634,
- 0x645, 0x207, 0x634, 0x631, 0x207, 0x633, 0x631, 0x207,
- 0x635, 0x631, 0x207, 0x636, 0x631, 0x206, 0x637, 0x649,
- 0x206, 0x637, 0x64a, 0x206, 0x639, 0x649, 0x206, 0x639,
- 0x64a, 0x206, 0x63a, 0x649, 0x206, 0x63a, 0x64a, 0x206,
- 0x633, 0x649, 0x206, 0x633, 0x64a, 0x206, 0x634, 0x649,
- 0x206, 0x634, 0x64a, 0x206, 0x62d, 0x649, 0x206, 0x62d,
- 0x64a, 0x206, 0x62c, 0x649, 0x206, 0x62c, 0x64a, 0x206,
- 0x62e, 0x649, 0x206, 0x62e, 0x64a, 0x206, 0x635, 0x649,
- 0x206, 0x635, 0x64a, 0x206, 0x636, 0x649, 0x206, 0x636,
- 0x64a, 0x206, 0x634, 0x62c, 0x206, 0x634, 0x62d, 0x206,
- 0x634, 0x62e, 0x206, 0x634, 0x645, 0x206, 0x634, 0x631,
- 0x206, 0x633, 0x631, 0x206, 0x635, 0x631, 0x206, 0x636,
- 0x631, 0x204, 0x634, 0x62c, 0x204, 0x634, 0x62d, 0x204,
- 0x634, 0x62e, 0x204, 0x634, 0x645, 0x204, 0x633, 0x647,
- 0x204, 0x634, 0x647, 0x204, 0x637, 0x645, 0x205, 0x633,
- 0x62c, 0x205, 0x633, 0x62d, 0x205, 0x633, 0x62e, 0x205,
- 0x634, 0x62c, 0x205, 0x634, 0x62d, 0x205, 0x634, 0x62e,
- 0x205, 0x637, 0x645, 0x205, 0x638, 0x645, 0x206, 0x627,
- 0x64b, 0x207, 0x627, 0x64b, 0x304, 0x62a, 0x62c, 0x645,
- 0x306, 0x62a, 0x62d, 0x62c, 0x304, 0x62a, 0x62d, 0x62c,
- 0x304, 0x62a, 0x62d, 0x645, 0x304, 0x62a, 0x62e, 0x645,
- 0x304, 0x62a, 0x645, 0x62c, 0x304, 0x62a, 0x645, 0x62d,
- 0x304, 0x62a, 0x645, 0x62e, 0x306, 0x62c, 0x645, 0x62d,
- 0x304, 0x62c, 0x645, 0x62d, 0x306, 0x62d, 0x645, 0x64a,
- 0x306, 0x62d, 0x645, 0x649, 0x304, 0x633, 0x62d, 0x62c,
- 0x304, 0x633, 0x62c, 0x62d, 0x306, 0x633, 0x62c, 0x649,
- 0x306, 0x633, 0x645, 0x62d, 0x304, 0x633, 0x645, 0x62d,
- 0x304, 0x633, 0x645, 0x62c, 0x306, 0x633, 0x645, 0x645,
- 0x304, 0x633, 0x645, 0x645, 0x306, 0x635, 0x62d, 0x62d,
- 0x304, 0x635, 0x62d, 0x62d, 0x306, 0x635, 0x645, 0x645,
- 0x306, 0x634, 0x62d, 0x645, 0x304, 0x634, 0x62d, 0x645,
- 0x306, 0x634, 0x62c, 0x64a, 0x306, 0x634, 0x645, 0x62e,
- 0x304, 0x634, 0x645, 0x62e, 0x306, 0x634, 0x645, 0x645,
- 0x304, 0x634, 0x645, 0x645, 0x306, 0x636, 0x62d, 0x649,
- 0x306, 0x636, 0x62e, 0x645, 0x304, 0x636, 0x62e, 0x645,
- 0x306, 0x637, 0x645, 0x62d, 0x304, 0x637, 0x645, 0x62d,
- 0x304, 0x637, 0x645, 0x645, 0x306, 0x637, 0x645, 0x64a,
- 0x306, 0x639, 0x62c, 0x645, 0x306, 0x639, 0x645, 0x645,
- 0x304, 0x639, 0x645, 0x645, 0x306, 0x639, 0x645, 0x649,
- 0x306, 0x63a, 0x645, 0x645, 0x306, 0x63a, 0x645, 0x64a,
- 0x306, 0x63a, 0x645, 0x649, 0x306, 0x641, 0x62e, 0x645,
- 0x304, 0x641, 0x62e, 0x645, 0x306, 0x642, 0x645, 0x62d,
- 0x306, 0x642, 0x645, 0x645, 0x306, 0x644, 0x62d, 0x645,
- 0x306, 0x644, 0x62d, 0x64a, 0x306, 0x644, 0x62d, 0x649,
- 0x304, 0x644, 0x62c, 0x62c, 0x306, 0x644, 0x62c, 0x62c,
- 0x306, 0x644, 0x62e, 0x645, 0x304, 0x644, 0x62e, 0x645,
- 0x306, 0x644, 0x645, 0x62d, 0x304, 0x644, 0x645, 0x62d,
- 0x304, 0x645, 0x62d, 0x62c, 0x304, 0x645, 0x62d, 0x645,
- 0x306, 0x645, 0x62d, 0x64a, 0x304, 0x645, 0x62c, 0x62d,
- 0x304, 0x645, 0x62c, 0x645, 0x304, 0x645, 0x62e, 0x62c,
- 0x304, 0x645, 0x62e, 0x645, 0x304, 0x645, 0x62c, 0x62e,
- 0x304, 0x647, 0x645, 0x62c, 0x304, 0x647, 0x645, 0x645,
- 0x304, 0x646, 0x62d, 0x645, 0x306, 0x646, 0x62d, 0x649,
- 0x306, 0x646, 0x62c, 0x645, 0x304, 0x646, 0x62c, 0x645,
- 0x306, 0x646, 0x62c, 0x649, 0x306, 0x646, 0x645, 0x64a,
- 0x306, 0x646, 0x645, 0x649, 0x306, 0x64a, 0x645, 0x645,
- 0x304, 0x64a, 0x645, 0x645, 0x306, 0x628, 0x62e, 0x64a,
- 0x306, 0x62a, 0x62c, 0x64a, 0x306, 0x62a, 0x62c, 0x649,
- 0x306, 0x62a, 0x62e, 0x64a, 0x306, 0x62a, 0x62e, 0x649,
- 0x306, 0x62a, 0x645, 0x64a, 0x306, 0x62a, 0x645, 0x649,
- 0x306, 0x62c, 0x645, 0x64a, 0x306, 0x62c, 0x62d, 0x649,
- 0x306, 0x62c, 0x645, 0x649, 0x306, 0x633, 0x62e, 0x649,
- 0x306, 0x635, 0x62d, 0x64a, 0x306, 0x634, 0x62d, 0x64a,
- 0x306, 0x636, 0x62d, 0x64a, 0x306, 0x644, 0x62c, 0x64a,
- 0x306, 0x644, 0x645, 0x64a, 0x306, 0x64a, 0x62d, 0x64a,
- 0x306, 0x64a, 0x62c, 0x64a, 0x306, 0x64a, 0x645, 0x64a,
- 0x306, 0x645, 0x645, 0x64a, 0x306, 0x642, 0x645, 0x64a,
- 0x306, 0x646, 0x62d, 0x64a, 0x304, 0x642, 0x645, 0x62d,
- 0x304, 0x644, 0x62d, 0x645, 0x306, 0x639, 0x645, 0x64a,
- 0x306, 0x643, 0x645, 0x64a, 0x304, 0x646, 0x62c, 0x62d,
- 0x306, 0x645, 0x62e, 0x64a, 0x304, 0x644, 0x62c, 0x645,
- 0x306, 0x643, 0x645, 0x645, 0x306, 0x644, 0x62c, 0x645,
- 0x306, 0x646, 0x62c, 0x62d, 0x306, 0x62c, 0x62d, 0x64a,
- 0x306, 0x62d, 0x62c, 0x64a, 0x306, 0x645, 0x62c, 0x64a,
- 0x306, 0x641, 0x645, 0x64a, 0x306, 0x628, 0x62d, 0x64a,
- 0x304, 0x643, 0x645, 0x645, 0x304, 0x639, 0x62c, 0x645,
- 0x304, 0x635, 0x645, 0x645, 0x306, 0x633, 0x62e, 0x64a,
- 0x306, 0x646, 0x62c, 0x64a, 0x307, 0x635, 0x644, 0x6d2,
- 0x307, 0x642, 0x644, 0x6d2, 0x407, 0x627, 0x644, 0x644,
- 0x647, 0x407, 0x627, 0x643, 0x628, 0x631, 0x407, 0x645,
- 0x62d, 0x645, 0x62f, 0x407, 0x635, 0x644, 0x639, 0x645,
- 0x407, 0x631, 0x633, 0x648, 0x644, 0x407, 0x639, 0x644,
- 0x64a, 0x647, 0x407, 0x648, 0x633, 0x644, 0x645, 0x307,
- 0x635, 0x644, 0x649, 0x1207, 0x635, 0x644, 0x649, 0x20,
- 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64a,
- 0x647, 0x20, 0x648, 0x633, 0x644, 0x645, 0x807, 0x62c,
- 0x644, 0x20, 0x62c, 0x644, 0x627, 0x644, 0x647, 0x407,
- 0x631, 0x6cc, 0x627, 0x644, 0x10b, 0x2c, 0x10b, 0x3001,
- 0x10b, 0x3002, 0x10b, 0x3a, 0x10b, 0x3b, 0x10b, 0x21,
- 0x10b, 0x3f, 0x10b, 0x3016, 0x10b, 0x3017, 0x10b, 0x2026,
- 0x10b, 0x2025, 0x10b, 0x2014, 0x10b, 0x2013, 0x10b, 0x5f,
- 0x10b, 0x5f, 0x10b, 0x28, 0x10b, 0x29, 0x10b, 0x7b,
- 0x10b, 0x7d, 0x10b, 0x3014, 0x10b, 0x3015, 0x10b, 0x3010,
- 0x10b, 0x3011, 0x10b, 0x300a, 0x10b, 0x300b, 0x10b, 0x3008,
- 0x10b, 0x3009, 0x10b, 0x300c, 0x10b, 0x300d, 0x10b, 0x300e,
- 0x10b, 0x300f, 0x10b, 0x5b, 0x10b, 0x5d, 0x110, 0x203e,
- 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x5f,
- 0x110, 0x5f, 0x110, 0x5f, 0x10e, 0x2c, 0x10e, 0x3001,
- 0x10e, 0x2e, 0x10e, 0x3b, 0x10e, 0x3a, 0x10e, 0x3f,
- 0x10e, 0x21, 0x10e, 0x2014, 0x10e, 0x28, 0x10e, 0x29,
- 0x10e, 0x7b, 0x10e, 0x7d, 0x10e, 0x3014, 0x10e, 0x3015,
- 0x10e, 0x23, 0x10e, 0x26, 0x10e, 0x2a, 0x10e, 0x2b,
- 0x10e, 0x2d, 0x10e, 0x3c, 0x10e, 0x3e, 0x10e, 0x3d,
- 0x10e, 0x5c, 0x10e, 0x24, 0x10e, 0x25, 0x10e, 0x40,
- 0x207, 0x20, 0x64b, 0x205, 0x640, 0x64b, 0x207, 0x20,
- 0x64c, 0x207, 0x20, 0x64d, 0x207, 0x20, 0x64e, 0x205,
- 0x640, 0x64e, 0x207, 0x20, 0x64f, 0x205, 0x640, 0x64f,
- 0x207, 0x20, 0x650, 0x205, 0x640, 0x650, 0x207, 0x20,
- 0x651, 0x205, 0x640, 0x651, 0x207, 0x20, 0x652, 0x205,
- 0x640, 0x652, 0x107, 0x621, 0x107, 0x622, 0x106, 0x622,
- 0x107, 0x623, 0x106, 0x623, 0x107, 0x624, 0x106, 0x624,
- 0x107, 0x625, 0x106, 0x625, 0x107, 0x626, 0x106, 0x626,
- 0x104, 0x626, 0x105, 0x626, 0x107, 0x627, 0x106, 0x627,
- 0x107, 0x628, 0x106, 0x628, 0x104, 0x628, 0x105, 0x628,
- 0x107, 0x629, 0x106, 0x629, 0x107, 0x62a, 0x106, 0x62a,
- 0x104, 0x62a, 0x105, 0x62a, 0x107, 0x62b, 0x106, 0x62b,
- 0x104, 0x62b, 0x105, 0x62b, 0x107, 0x62c, 0x106, 0x62c,
- 0x104, 0x62c, 0x105, 0x62c, 0x107, 0x62d, 0x106, 0x62d,
- 0x104, 0x62d, 0x105, 0x62d, 0x107, 0x62e, 0x106, 0x62e,
- 0x104, 0x62e, 0x105, 0x62e, 0x107, 0x62f, 0x106, 0x62f,
- 0x107, 0x630, 0x106, 0x630, 0x107, 0x631, 0x106, 0x631,
- 0x107, 0x632, 0x106, 0x632, 0x107, 0x633, 0x106, 0x633,
- 0x104, 0x633, 0x105, 0x633, 0x107, 0x634, 0x106, 0x634,
- 0x104, 0x634, 0x105, 0x634, 0x107, 0x635, 0x106, 0x635,
- 0x104, 0x635, 0x105, 0x635, 0x107, 0x636, 0x106, 0x636,
- 0x104, 0x636, 0x105, 0x636, 0x107, 0x637, 0x106, 0x637,
- 0x104, 0x637, 0x105, 0x637, 0x107, 0x638, 0x106, 0x638,
- 0x104, 0x638, 0x105, 0x638, 0x107, 0x639, 0x106, 0x639,
- 0x104, 0x639, 0x105, 0x639, 0x107, 0x63a, 0x106, 0x63a,
- 0x104, 0x63a, 0x105, 0x63a, 0x107, 0x641, 0x106, 0x641,
- 0x104, 0x641, 0x105, 0x641, 0x107, 0x642, 0x106, 0x642,
- 0x104, 0x642, 0x105, 0x642, 0x107, 0x643, 0x106, 0x643,
- 0x104, 0x643, 0x105, 0x643, 0x107, 0x644, 0x106, 0x644,
- 0x104, 0x644, 0x105, 0x644, 0x107, 0x645, 0x106, 0x645,
- 0x104, 0x645, 0x105, 0x645, 0x107, 0x646, 0x106, 0x646,
- 0x104, 0x646, 0x105, 0x646, 0x107, 0x647, 0x106, 0x647,
- 0x104, 0x647, 0x105, 0x647, 0x107, 0x648, 0x106, 0x648,
- 0x107, 0x649, 0x106, 0x649, 0x107, 0x64a, 0x106, 0x64a,
- 0x104, 0x64a, 0x105, 0x64a, 0x207, 0x644, 0x622, 0x206,
- 0x644, 0x622, 0x207, 0x644, 0x623, 0x206, 0x644, 0x623,
- 0x207, 0x644, 0x625, 0x206, 0x644, 0x625, 0x207, 0x644,
- 0x627, 0x206, 0x644, 0x627, 0x10c, 0x21, 0x10c, 0x22,
- 0x10c, 0x23, 0x10c, 0x24, 0x10c, 0x25, 0x10c, 0x26,
- 0x10c, 0x27, 0x10c, 0x28, 0x10c, 0x29, 0x10c, 0x2a,
- 0x10c, 0x2b, 0x10c, 0x2c, 0x10c, 0x2d, 0x10c, 0x2e,
- 0x10c, 0x2f, 0x10c, 0x30, 0x10c, 0x31, 0x10c, 0x32,
- 0x10c, 0x33, 0x10c, 0x34, 0x10c, 0x35, 0x10c, 0x36,
- 0x10c, 0x37, 0x10c, 0x38, 0x10c, 0x39, 0x10c, 0x3a,
- 0x10c, 0x3b, 0x10c, 0x3c, 0x10c, 0x3d, 0x10c, 0x3e,
- 0x10c, 0x3f, 0x10c, 0x40, 0x10c, 0x41, 0x10c, 0x42,
- 0x10c, 0x43, 0x10c, 0x44, 0x10c, 0x45, 0x10c, 0x46,
- 0x10c, 0x47, 0x10c, 0x48, 0x10c, 0x49, 0x10c, 0x4a,
- 0x10c, 0x4b, 0x10c, 0x4c, 0x10c, 0x4d, 0x10c, 0x4e,
- 0x10c, 0x4f, 0x10c, 0x50, 0x10c, 0x51, 0x10c, 0x52,
- 0x10c, 0x53, 0x10c, 0x54, 0x10c, 0x55, 0x10c, 0x56,
- 0x10c, 0x57, 0x10c, 0x58, 0x10c, 0x59, 0x10c, 0x5a,
- 0x10c, 0x5b, 0x10c, 0x5c, 0x10c, 0x5d, 0x10c, 0x5e,
- 0x10c, 0x5f, 0x10c, 0x60, 0x10c, 0x61, 0x10c, 0x62,
- 0x10c, 0x63, 0x10c, 0x64, 0x10c, 0x65, 0x10c, 0x66,
- 0x10c, 0x67, 0x10c, 0x68, 0x10c, 0x69, 0x10c, 0x6a,
- 0x10c, 0x6b, 0x10c, 0x6c, 0x10c, 0x6d, 0x10c, 0x6e,
- 0x10c, 0x6f, 0x10c, 0x70, 0x10c, 0x71, 0x10c, 0x72,
- 0x10c, 0x73, 0x10c, 0x74, 0x10c, 0x75, 0x10c, 0x76,
- 0x10c, 0x77, 0x10c, 0x78, 0x10c, 0x79, 0x10c, 0x7a,
- 0x10c, 0x7b, 0x10c, 0x7c, 0x10c, 0x7d, 0x10c, 0x7e,
- 0x10c, 0x2985, 0x10c, 0x2986, 0x10d, 0x3002, 0x10d, 0x300c,
- 0x10d, 0x300d, 0x10d, 0x3001, 0x10d, 0x30fb, 0x10d, 0x30f2,
- 0x10d, 0x30a1, 0x10d, 0x30a3, 0x10d, 0x30a5, 0x10d, 0x30a7,
- 0x10d, 0x30a9, 0x10d, 0x30e3, 0x10d, 0x30e5, 0x10d, 0x30e7,
- 0x10d, 0x30c3, 0x10d, 0x30fc, 0x10d, 0x30a2, 0x10d, 0x30a4,
- 0x10d, 0x30a6, 0x10d, 0x30a8, 0x10d, 0x30aa, 0x10d, 0x30ab,
- 0x10d, 0x30ad, 0x10d, 0x30af, 0x10d, 0x30b1, 0x10d, 0x30b3,
- 0x10d, 0x30b5, 0x10d, 0x30b7, 0x10d, 0x30b9, 0x10d, 0x30bb,
- 0x10d, 0x30bd, 0x10d, 0x30bf, 0x10d, 0x30c1, 0x10d, 0x30c4,
- 0x10d, 0x30c6, 0x10d, 0x30c8, 0x10d, 0x30ca, 0x10d, 0x30cb,
- 0x10d, 0x30cc, 0x10d, 0x30cd, 0x10d, 0x30ce, 0x10d, 0x30cf,
- 0x10d, 0x30d2, 0x10d, 0x30d5, 0x10d, 0x30d8, 0x10d, 0x30db,
- 0x10d, 0x30de, 0x10d, 0x30df, 0x10d, 0x30e0, 0x10d, 0x30e1,
- 0x10d, 0x30e2, 0x10d, 0x30e4, 0x10d, 0x30e6, 0x10d, 0x30e8,
- 0x10d, 0x30e9, 0x10d, 0x30ea, 0x10d, 0x30eb, 0x10d, 0x30ec,
- 0x10d, 0x30ed, 0x10d, 0x30ef, 0x10d, 0x30f3, 0x10d, 0x3099,
- 0x10d, 0x309a, 0x10d, 0x3164, 0x10d, 0x3131, 0x10d, 0x3132,
- 0x10d, 0x3133, 0x10d, 0x3134, 0x10d, 0x3135, 0x10d, 0x3136,
- 0x10d, 0x3137, 0x10d, 0x3138, 0x10d, 0x3139, 0x10d, 0x313a,
- 0x10d, 0x313b, 0x10d, 0x313c, 0x10d, 0x313d, 0x10d, 0x313e,
- 0x10d, 0x313f, 0x10d, 0x3140, 0x10d, 0x3141, 0x10d, 0x3142,
- 0x10d, 0x3143, 0x10d, 0x3144, 0x10d, 0x3145, 0x10d, 0x3146,
- 0x10d, 0x3147, 0x10d, 0x3148, 0x10d, 0x3149, 0x10d, 0x314a,
- 0x10d, 0x314b, 0x10d, 0x314c, 0x10d, 0x314d, 0x10d, 0x314e,
- 0x10d, 0x314f, 0x10d, 0x3150, 0x10d, 0x3151, 0x10d, 0x3152,
- 0x10d, 0x3153, 0x10d, 0x3154, 0x10d, 0x3155, 0x10d, 0x3156,
- 0x10d, 0x3157, 0x10d, 0x3158, 0x10d, 0x3159, 0x10d, 0x315a,
- 0x10d, 0x315b, 0x10d, 0x315c, 0x10d, 0x315d, 0x10d, 0x315e,
- 0x10d, 0x315f, 0x10d, 0x3160, 0x10d, 0x3161, 0x10d, 0x3162,
- 0x10d, 0x3163, 0x10c, 0xa2, 0x10c, 0xa3, 0x10c, 0xac,
- 0x10c, 0xaf, 0x10c, 0xa6, 0x10c, 0xa5, 0x10c, 0x20a9,
- 0x10d, 0x2502, 0x10d, 0x2190, 0x10d, 0x2191, 0x10d, 0x2192,
- 0x10d, 0x2193, 0x10d, 0x25a0, 0x10d, 0x25cb, 0x401, 0xd804,
- 0xdc99, 0xd804, 0xdcba, 0x401, 0xd804, 0xdc9b, 0xd804, 0xdcba,
- 0x401, 0xd804, 0xdca5, 0xd804, 0xdcba, 0x401, 0xd804, 0xdd31,
- 0xd804, 0xdd27, 0x401, 0xd804, 0xdd32, 0xd804, 0xdd27, 0x401,
- 0xd804, 0xdf47, 0xd804, 0xdf3e, 0x401, 0xd804, 0xdf47, 0xd804,
- 0xdf57, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcba, 0x401, 0xd805,
- 0xdcb9, 0xd805, 0xdcb0, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcbd,
- 0x401, 0xd805, 0xddb8, 0xd805, 0xddaf, 0x401, 0xd805, 0xddb9,
- 0xd805, 0xddaf, 0x401, 0xd834, 0xdd57, 0xd834, 0xdd65, 0x401,
- 0xd834, 0xdd58, 0xd834, 0xdd65, 0x401, 0xd834, 0xdd5f, 0xd834,
- 0xdd6e, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd6f, 0x401, 0xd834,
- 0xdd5f, 0xd834, 0xdd70, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd71,
- 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd72, 0x401, 0xd834, 0xddb9,
- 0xd834, 0xdd65, 0x401, 0xd834, 0xddba, 0xd834, 0xdd65, 0x401,
- 0xd834, 0xddbb, 0xd834, 0xdd6e, 0x401, 0xd834, 0xddbc, 0xd834,
- 0xdd6e, 0x401, 0xd834, 0xddbb, 0xd834, 0xdd6f, 0x401, 0xd834,
- 0xddbc, 0xd834, 0xdd6f, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102, 0x43, 0x102,
- 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47, 0x102,
- 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102, 0x4b, 0x102,
- 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102, 0x4f, 0x102,
- 0x50, 0x102, 0x51, 0x102, 0x52, 0x102, 0x53, 0x102,
- 0x54, 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102,
- 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x65, 0x102,
- 0x66, 0x102, 0x67, 0x102, 0x68, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x43, 0x102, 0x44, 0x102,
- 0x47, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x53, 0x102,
- 0x54, 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102,
- 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x66, 0x102,
- 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102,
- 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47, 0x102,
- 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102,
- 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x61, 0x102,
- 0x62, 0x102, 0x63, 0x102, 0x64, 0x102, 0x65, 0x102,
- 0x66, 0x102, 0x67, 0x102, 0x68, 0x102, 0x69, 0x102,
- 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102,
- 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102, 0x71, 0x102,
- 0x72, 0x102, 0x73, 0x102, 0x74, 0x102, 0x75, 0x102,
- 0x76, 0x102, 0x77, 0x102, 0x78, 0x102, 0x79, 0x102,
- 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102, 0x44, 0x102,
- 0x45, 0x102, 0x46, 0x102, 0x47, 0x102, 0x49, 0x102,
- 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102,
- 0x4f, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102,
- 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42, 0x102,
- 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102,
- 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a, 0x102,
- 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e, 0x102,
- 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52, 0x102,
- 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56, 0x102,
- 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a, 0x102,
- 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64, 0x102,
- 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68, 0x102,
- 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c, 0x102,
- 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70, 0x102,
- 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74, 0x102,
- 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78, 0x102,
- 0x79, 0x102, 0x7a, 0x102, 0x131, 0x102, 0x237, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102,
- 0x393, 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102,
- 0x397, 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102,
- 0x39b, 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102,
- 0x39f, 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102,
- 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102,
- 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102,
- 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102,
- 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102,
- 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102,
- 0x3bd, 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102,
- 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102,
- 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102,
- 0x3c9, 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102,
- 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102,
- 0x393, 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102,
- 0x397, 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102,
- 0x39b, 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102,
- 0x39f, 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102,
- 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102,
- 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102,
- 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102,
- 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102,
- 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102,
- 0x3bd, 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102,
- 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102,
- 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102,
- 0x3c9, 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102,
- 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102,
- 0x391, 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102,
- 0x395, 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102,
- 0x399, 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102,
- 0x39d, 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102,
- 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102,
- 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102,
- 0x3a9, 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102,
- 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102,
- 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102,
- 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102,
- 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102,
- 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102,
- 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102,
- 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102,
- 0x3f1, 0x102, 0x3d6, 0x102, 0x3dc, 0x102, 0x3dd, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102,
- 0x32, 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102,
- 0x36, 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102,
- 0x32, 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102,
- 0x36, 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102,
- 0x30, 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102,
- 0x34, 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102,
- 0x38, 0x102, 0x39, 0x102, 0x627, 0x102, 0x628, 0x102,
- 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102,
- 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102,
- 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102,
- 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102,
- 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102,
- 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102, 0x638, 0x102,
- 0x63a, 0x102, 0x66e, 0x102, 0x6ba, 0x102, 0x6a1, 0x102,
- 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102,
- 0x62d, 0x102, 0x64a, 0x102, 0x643, 0x102, 0x644, 0x102,
- 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
- 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634, 0x102,
- 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102,
- 0x63a, 0x102, 0x62c, 0x102, 0x62d, 0x102, 0x64a, 0x102,
- 0x644, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x634, 0x102, 0x62e, 0x102,
- 0x636, 0x102, 0x63a, 0x102, 0x6ba, 0x102, 0x66f, 0x102,
- 0x628, 0x102, 0x62c, 0x102, 0x647, 0x102, 0x62d, 0x102,
- 0x637, 0x102, 0x64a, 0x102, 0x643, 0x102, 0x645, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x634, 0x102, 0x62a, 0x102,
- 0x62b, 0x102, 0x62e, 0x102, 0x636, 0x102, 0x638, 0x102,
- 0x63a, 0x102, 0x66e, 0x102, 0x6a1, 0x102, 0x627, 0x102,
- 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x647, 0x102,
- 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102, 0x637, 0x102,
- 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102,
- 0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102,
- 0x642, 0x102, 0x631, 0x102, 0x634, 0x102, 0x62a, 0x102,
- 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102, 0x636, 0x102,
- 0x638, 0x102, 0x63a, 0x102, 0x628, 0x102, 0x62c, 0x102,
- 0x62f, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d, 0x102,
- 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102, 0x645, 0x102,
- 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102,
- 0x635, 0x102, 0x642, 0x102, 0x631, 0x102, 0x634, 0x102,
- 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102,
- 0x636, 0x102, 0x638, 0x102, 0x63a, 0x210, 0x30, 0x2e,
- 0x210, 0x30, 0x2c, 0x210, 0x31, 0x2c, 0x210, 0x32,
- 0x2c, 0x210, 0x33, 0x2c, 0x210, 0x34, 0x2c, 0x210,
- 0x35, 0x2c, 0x210, 0x36, 0x2c, 0x210, 0x37, 0x2c,
- 0x210, 0x38, 0x2c, 0x210, 0x39, 0x2c, 0x310, 0x28,
- 0x41, 0x29, 0x310, 0x28, 0x42, 0x29, 0x310, 0x28,
- 0x43, 0x29, 0x310, 0x28, 0x44, 0x29, 0x310, 0x28,
- 0x45, 0x29, 0x310, 0x28, 0x46, 0x29, 0x310, 0x28,
- 0x47, 0x29, 0x310, 0x28, 0x48, 0x29, 0x310, 0x28,
- 0x49, 0x29, 0x310, 0x28, 0x4a, 0x29, 0x310, 0x28,
- 0x4b, 0x29, 0x310, 0x28, 0x4c, 0x29, 0x310, 0x28,
- 0x4d, 0x29, 0x310, 0x28, 0x4e, 0x29, 0x310, 0x28,
- 0x4f, 0x29, 0x310, 0x28, 0x50, 0x29, 0x310, 0x28,
- 0x51, 0x29, 0x310, 0x28, 0x52, 0x29, 0x310, 0x28,
- 0x53, 0x29, 0x310, 0x28, 0x54, 0x29, 0x310, 0x28,
- 0x55, 0x29, 0x310, 0x28, 0x56, 0x29, 0x310, 0x28,
- 0x57, 0x29, 0x310, 0x28, 0x58, 0x29, 0x310, 0x28,
- 0x59, 0x29, 0x310, 0x28, 0x5a, 0x29, 0x310, 0x3014,
- 0x53, 0x3015, 0x108, 0x43, 0x108, 0x52, 0x208, 0x43,
- 0x44, 0x208, 0x57, 0x5a, 0x10f, 0x41, 0x10f, 0x42,
- 0x10f, 0x43, 0x10f, 0x44, 0x10f, 0x45, 0x10f, 0x46,
- 0x10f, 0x47, 0x10f, 0x48, 0x10f, 0x49, 0x10f, 0x4a,
- 0x10f, 0x4b, 0x10f, 0x4c, 0x10f, 0x4d, 0x10f, 0x4e,
- 0x10f, 0x4f, 0x10f, 0x50, 0x10f, 0x51, 0x10f, 0x52,
- 0x10f, 0x53, 0x10f, 0x54, 0x10f, 0x55, 0x10f, 0x56,
- 0x10f, 0x57, 0x10f, 0x58, 0x10f, 0x59, 0x10f, 0x5a,
- 0x20f, 0x48, 0x56, 0x20f, 0x4d, 0x56, 0x20f, 0x53,
- 0x44, 0x20f, 0x53, 0x53, 0x30f, 0x50, 0x50, 0x56,
- 0x20f, 0x57, 0x43, 0x209, 0x4d, 0x43, 0x209, 0x4d,
- 0x44, 0x20f, 0x44, 0x4a, 0x20f, 0x307b, 0x304b, 0x20f,
- 0x30b3, 0x30b3, 0x10f, 0x30b5, 0x10f, 0x624b, 0x10f, 0x5b57,
- 0x10f, 0x53cc, 0x10f, 0x30c7, 0x10f, 0x4e8c, 0x10f, 0x591a,
- 0x10f, 0x89e3, 0x10f, 0x5929, 0x10f, 0x4ea4, 0x10f, 0x6620,
- 0x10f, 0x7121, 0x10f, 0x6599, 0x10f, 0x524d, 0x10f, 0x5f8c,
- 0x10f, 0x518d, 0x10f, 0x65b0, 0x10f, 0x521d, 0x10f, 0x7d42,
- 0x10f, 0x751f, 0x10f, 0x8ca9, 0x10f, 0x58f0, 0x10f, 0x5439,
- 0x10f, 0x6f14, 0x10f, 0x6295, 0x10f, 0x6355, 0x10f, 0x4e00,
- 0x10f, 0x4e09, 0x10f, 0x904a, 0x10f, 0x5de6, 0x10f, 0x4e2d,
- 0x10f, 0x53f3, 0x10f, 0x6307, 0x10f, 0x8d70, 0x10f, 0x6253,
- 0x10f, 0x7981, 0x10f, 0x7a7a, 0x10f, 0x5408, 0x10f, 0x6e80,
- 0x10f, 0x6709, 0x10f, 0x6708, 0x10f, 0x7533, 0x10f, 0x5272,
- 0x10f, 0x55b6, 0x10f, 0x914d, 0x310, 0x3014, 0x672c, 0x3015,
- 0x310, 0x3014, 0x4e09, 0x3015, 0x310, 0x3014, 0x4e8c, 0x3015,
- 0x310, 0x3014, 0x5b89, 0x3015, 0x310, 0x3014, 0x70b9, 0x3015,
- 0x310, 0x3014, 0x6253, 0x3015, 0x310, 0x3014, 0x76d7, 0x3015,
- 0x310, 0x3014, 0x52dd, 0x3015, 0x310, 0x3014, 0x6557, 0x3015,
- 0x108, 0x5f97, 0x108, 0x53ef, 0x101, 0x4e3d, 0x101, 0x4e38,
- 0x101, 0x4e41, 0x201, 0xd840, 0xdd22, 0x101, 0x4f60, 0x101,
- 0x4fae, 0x101, 0x4fbb, 0x101, 0x5002, 0x101, 0x507a, 0x101,
- 0x5099, 0x101, 0x50e7, 0x101, 0x50cf, 0x101, 0x349e, 0x201,
- 0xd841, 0xde3a, 0x101, 0x514d, 0x101, 0x5154, 0x101, 0x5164,
- 0x101, 0x5177, 0x201, 0xd841, 0xdd1c, 0x101, 0x34b9, 0x101,
- 0x5167, 0x101, 0x518d, 0x201, 0xd841, 0xdd4b, 0x101, 0x5197,
- 0x101, 0x51a4, 0x101, 0x4ecc, 0x101, 0x51ac, 0x101, 0x51b5,
- 0x201, 0xd864, 0xdddf, 0x101, 0x51f5, 0x101, 0x5203, 0x101,
- 0x34df, 0x101, 0x523b, 0x101, 0x5246, 0x101, 0x5272, 0x101,
- 0x5277, 0x101, 0x3515, 0x101, 0x52c7, 0x101, 0x52c9, 0x101,
- 0x52e4, 0x101, 0x52fa, 0x101, 0x5305, 0x101, 0x5306, 0x101,
- 0x5317, 0x101, 0x5349, 0x101, 0x5351, 0x101, 0x535a, 0x101,
- 0x5373, 0x101, 0x537d, 0x101, 0x537f, 0x101, 0x537f, 0x101,
- 0x537f, 0x201, 0xd842, 0xde2c, 0x101, 0x7070, 0x101, 0x53ca,
- 0x101, 0x53df, 0x201, 0xd842, 0xdf63, 0x101, 0x53eb, 0x101,
- 0x53f1, 0x101, 0x5406, 0x101, 0x549e, 0x101, 0x5438, 0x101,
- 0x5448, 0x101, 0x5468, 0x101, 0x54a2, 0x101, 0x54f6, 0x101,
- 0x5510, 0x101, 0x5553, 0x101, 0x5563, 0x101, 0x5584, 0x101,
- 0x5584, 0x101, 0x5599, 0x101, 0x55ab, 0x101, 0x55b3, 0x101,
- 0x55c2, 0x101, 0x5716, 0x101, 0x5606, 0x101, 0x5717, 0x101,
- 0x5651, 0x101, 0x5674, 0x101, 0x5207, 0x101, 0x58ee, 0x101,
- 0x57ce, 0x101, 0x57f4, 0x101, 0x580d, 0x101, 0x578b, 0x101,
- 0x5832, 0x101, 0x5831, 0x101, 0x58ac, 0x201, 0xd845, 0xdce4,
- 0x101, 0x58f2, 0x101, 0x58f7, 0x101, 0x5906, 0x101, 0x591a,
- 0x101, 0x5922, 0x101, 0x5962, 0x201, 0xd845, 0xdea8, 0x201,
- 0xd845, 0xdeea, 0x101, 0x59ec, 0x101, 0x5a1b, 0x101, 0x5a27,
- 0x101, 0x59d8, 0x101, 0x5a66, 0x101, 0x36ee, 0x101, 0x36fc,
- 0x101, 0x5b08, 0x101, 0x5b3e, 0x101, 0x5b3e, 0x201, 0xd846,
- 0xddc8, 0x101, 0x5bc3, 0x101, 0x5bd8, 0x101, 0x5be7, 0x101,
- 0x5bf3, 0x201, 0xd846, 0xdf18, 0x101, 0x5bff, 0x101, 0x5c06,
- 0x101, 0x5f53, 0x101, 0x5c22, 0x101, 0x3781, 0x101, 0x5c60,
- 0x101, 0x5c6e, 0x101, 0x5cc0, 0x101, 0x5c8d, 0x201, 0xd847,
- 0xdde4, 0x101, 0x5d43, 0x201, 0xd847, 0xdde6, 0x101, 0x5d6e,
- 0x101, 0x5d6b, 0x101, 0x5d7c, 0x101, 0x5de1, 0x101, 0x5de2,
- 0x101, 0x382f, 0x101, 0x5dfd, 0x101, 0x5e28, 0x101, 0x5e3d,
- 0x101, 0x5e69, 0x101, 0x3862, 0x201, 0xd848, 0xdd83, 0x101,
- 0x387c, 0x101, 0x5eb0, 0x101, 0x5eb3, 0x101, 0x5eb6, 0x101,
- 0x5eca, 0x201, 0xd868, 0xdf92, 0x101, 0x5efe, 0x201, 0xd848,
- 0xdf31, 0x201, 0xd848, 0xdf31, 0x101, 0x8201, 0x101, 0x5f22,
- 0x101, 0x5f22, 0x101, 0x38c7, 0x201, 0xd84c, 0xdeb8, 0x201,
- 0xd858, 0xddda, 0x101, 0x5f62, 0x101, 0x5f6b, 0x101, 0x38e3,
- 0x101, 0x5f9a, 0x101, 0x5fcd, 0x101, 0x5fd7, 0x101, 0x5ff9,
- 0x101, 0x6081, 0x101, 0x393a, 0x101, 0x391c, 0x101, 0x6094,
- 0x201, 0xd849, 0xded4, 0x101, 0x60c7, 0x101, 0x6148, 0x101,
- 0x614c, 0x101, 0x614e, 0x101, 0x614c, 0x101, 0x617a, 0x101,
- 0x618e, 0x101, 0x61b2, 0x101, 0x61a4, 0x101, 0x61af, 0x101,
- 0x61de, 0x101, 0x61f2, 0x101, 0x61f6, 0x101, 0x6210, 0x101,
- 0x621b, 0x101, 0x625d, 0x101, 0x62b1, 0x101, 0x62d4, 0x101,
- 0x6350, 0x201, 0xd84a, 0xdf0c, 0x101, 0x633d, 0x101, 0x62fc,
- 0x101, 0x6368, 0x101, 0x6383, 0x101, 0x63e4, 0x201, 0xd84a,
- 0xdff1, 0x101, 0x6422, 0x101, 0x63c5, 0x101, 0x63a9, 0x101,
- 0x3a2e, 0x101, 0x6469, 0x101, 0x647e, 0x101, 0x649d, 0x101,
- 0x6477, 0x101, 0x3a6c, 0x101, 0x654f, 0x101, 0x656c, 0x201,
- 0xd84c, 0xdc0a, 0x101, 0x65e3, 0x101, 0x66f8, 0x101, 0x6649,
- 0x101, 0x3b19, 0x101, 0x6691, 0x101, 0x3b08, 0x101, 0x3ae4,
- 0x101, 0x5192, 0x101, 0x5195, 0x101, 0x6700, 0x101, 0x669c,
- 0x101, 0x80ad, 0x101, 0x43d9, 0x101, 0x6717, 0x101, 0x671b,
- 0x101, 0x6721, 0x101, 0x675e, 0x101, 0x6753, 0x201, 0xd84c,
- 0xdfc3, 0x101, 0x3b49, 0x101, 0x67fa, 0x101, 0x6785, 0x101,
- 0x6852, 0x101, 0x6885, 0x201, 0xd84d, 0xdc6d, 0x101, 0x688e,
- 0x101, 0x681f, 0x101, 0x6914, 0x101, 0x3b9d, 0x101, 0x6942,
- 0x101, 0x69a3, 0x101, 0x69ea, 0x101, 0x6aa8, 0x201, 0xd84d,
- 0xdea3, 0x101, 0x6adb, 0x101, 0x3c18, 0x101, 0x6b21, 0x201,
- 0xd84e, 0xdca7, 0x101, 0x6b54, 0x101, 0x3c4e, 0x101, 0x6b72,
- 0x101, 0x6b9f, 0x101, 0x6bba, 0x101, 0x6bbb, 0x201, 0xd84e,
- 0xde8d, 0x201, 0xd847, 0xdd0b, 0x201, 0xd84e, 0xdefa, 0x101,
- 0x6c4e, 0x201, 0xd84f, 0xdcbc, 0x101, 0x6cbf, 0x101, 0x6ccd,
- 0x101, 0x6c67, 0x101, 0x6d16, 0x101, 0x6d3e, 0x101, 0x6d77,
- 0x101, 0x6d41, 0x101, 0x6d69, 0x101, 0x6d78, 0x101, 0x6d85,
- 0x201, 0xd84f, 0xdd1e, 0x101, 0x6d34, 0x101, 0x6e2f, 0x101,
- 0x6e6e, 0x101, 0x3d33, 0x101, 0x6ecb, 0x101, 0x6ec7, 0x201,
- 0xd84f, 0xded1, 0x101, 0x6df9, 0x101, 0x6f6e, 0x201, 0xd84f,
- 0xdf5e, 0x201, 0xd84f, 0xdf8e, 0x101, 0x6fc6, 0x101, 0x7039,
- 0x101, 0x701e, 0x101, 0x701b, 0x101, 0x3d96, 0x101, 0x704a,
- 0x101, 0x707d, 0x101, 0x7077, 0x101, 0x70ad, 0x201, 0xd841,
- 0xdd25, 0x101, 0x7145, 0x201, 0xd850, 0xde63, 0x101, 0x719c,
- 0x201, 0xd850, 0xdfab, 0x101, 0x7228, 0x101, 0x7235, 0x101,
- 0x7250, 0x201, 0xd851, 0xde08, 0x101, 0x7280, 0x101, 0x7295,
- 0x201, 0xd851, 0xdf35, 0x201, 0xd852, 0xdc14, 0x101, 0x737a,
- 0x101, 0x738b, 0x101, 0x3eac, 0x101, 0x73a5, 0x101, 0x3eb8,
- 0x101, 0x3eb8, 0x101, 0x7447, 0x101, 0x745c, 0x101, 0x7471,
- 0x101, 0x7485, 0x101, 0x74ca, 0x101, 0x3f1b, 0x101, 0x7524,
- 0x201, 0xd853, 0xdc36, 0x101, 0x753e, 0x201, 0xd853, 0xdc92,
- 0x101, 0x7570, 0x201, 0xd848, 0xdd9f, 0x101, 0x7610, 0x201,
- 0xd853, 0xdfa1, 0x201, 0xd853, 0xdfb8, 0x201, 0xd854, 0xdc44,
- 0x101, 0x3ffc, 0x101, 0x4008, 0x101, 0x76f4, 0x201, 0xd854,
- 0xdcf3, 0x201, 0xd854, 0xdcf2, 0x201, 0xd854, 0xdd19, 0x201,
- 0xd854, 0xdd33, 0x101, 0x771e, 0x101, 0x771f, 0x101, 0x771f,
- 0x101, 0x774a, 0x101, 0x4039, 0x101, 0x778b, 0x101, 0x4046,
- 0x101, 0x4096, 0x201, 0xd855, 0xdc1d, 0x101, 0x784e, 0x101,
- 0x788c, 0x101, 0x78cc, 0x101, 0x40e3, 0x201, 0xd855, 0xde26,
- 0x101, 0x7956, 0x201, 0xd855, 0xde9a, 0x201, 0xd855, 0xdec5,
- 0x101, 0x798f, 0x101, 0x79eb, 0x101, 0x412f, 0x101, 0x7a40,
- 0x101, 0x7a4a, 0x101, 0x7a4f, 0x201, 0xd856, 0xdd7c, 0x201,
- 0xd856, 0xdea7, 0x201, 0xd856, 0xdea7, 0x101, 0x7aee, 0x101,
- 0x4202, 0x201, 0xd856, 0xdfab, 0x101, 0x7bc6, 0x101, 0x7bc9,
- 0x101, 0x4227, 0x201, 0xd857, 0xdc80, 0x101, 0x7cd2, 0x101,
- 0x42a0, 0x101, 0x7ce8, 0x101, 0x7ce3, 0x101, 0x7d00, 0x201,
- 0xd857, 0xdf86, 0x101, 0x7d63, 0x101, 0x4301, 0x101, 0x7dc7,
- 0x101, 0x7e02, 0x101, 0x7e45, 0x101, 0x4334, 0x201, 0xd858,
- 0xde28, 0x201, 0xd858, 0xde47, 0x101, 0x4359, 0x201, 0xd858,
- 0xded9, 0x101, 0x7f7a, 0x201, 0xd858, 0xdf3e, 0x101, 0x7f95,
- 0x101, 0x7ffa, 0x101, 0x8005, 0x201, 0xd859, 0xdcda, 0x201,
- 0xd859, 0xdd23, 0x101, 0x8060, 0x201, 0xd859, 0xdda8, 0x101,
- 0x8070, 0x201, 0xd84c, 0xdf5f, 0x101, 0x43d5, 0x101, 0x80b2,
- 0x101, 0x8103, 0x101, 0x440b, 0x101, 0x813e, 0x101, 0x5ab5,
- 0x201, 0xd859, 0xdfa7, 0x201, 0xd859, 0xdfb5, 0x201, 0xd84c,
- 0xdf93, 0x201, 0xd84c, 0xdf9c, 0x101, 0x8201, 0x101, 0x8204,
- 0x101, 0x8f9e, 0x101, 0x446b, 0x101, 0x8291, 0x101, 0x828b,
- 0x101, 0x829d, 0x101, 0x52b3, 0x101, 0x82b1, 0x101, 0x82b3,
- 0x101, 0x82bd, 0x101, 0x82e6, 0x201, 0xd85a, 0xdf3c, 0x101,
- 0x82e5, 0x101, 0x831d, 0x101, 0x8363, 0x101, 0x83ad, 0x101,
- 0x8323, 0x101, 0x83bd, 0x101, 0x83e7, 0x101, 0x8457, 0x101,
- 0x8353, 0x101, 0x83ca, 0x101, 0x83cc, 0x101, 0x83dc, 0x201,
- 0xd85b, 0xdc36, 0x201, 0xd85b, 0xdd6b, 0x201, 0xd85b, 0xdcd5,
- 0x101, 0x452b, 0x101, 0x84f1, 0x101, 0x84f3, 0x101, 0x8516,
- 0x201, 0xd85c, 0xdfca, 0x101, 0x8564, 0x201, 0xd85b, 0xdf2c,
- 0x101, 0x455d, 0x101, 0x4561, 0x201, 0xd85b, 0xdfb1, 0x201,
- 0xd85c, 0xdcd2, 0x101, 0x456b, 0x101, 0x8650, 0x101, 0x865c,
- 0x101, 0x8667, 0x101, 0x8669, 0x101, 0x86a9, 0x101, 0x8688,
- 0x101, 0x870e, 0x101, 0x86e2, 0x101, 0x8779, 0x101, 0x8728,
- 0x101, 0x876b, 0x101, 0x8786, 0x101, 0x45d7, 0x101, 0x87e1,
- 0x101, 0x8801, 0x101, 0x45f9, 0x101, 0x8860, 0x101, 0x8863,
- 0x201, 0xd85d, 0xde67, 0x101, 0x88d7, 0x101, 0x88de, 0x101,
- 0x4635, 0x101, 0x88fa, 0x101, 0x34bb, 0x201, 0xd85e, 0xdcae,
- 0x201, 0xd85e, 0xdd66, 0x101, 0x46be, 0x101, 0x46c7, 0x101,
- 0x8aa0, 0x101, 0x8aed, 0x101, 0x8b8a, 0x101, 0x8c55, 0x201,
- 0xd85f, 0xdca8, 0x101, 0x8cab, 0x101, 0x8cc1, 0x101, 0x8d1b,
- 0x101, 0x8d77, 0x201, 0xd85f, 0xdf2f, 0x201, 0xd842, 0xdc04,
- 0x101, 0x8dcb, 0x101, 0x8dbc, 0x101, 0x8df0, 0x201, 0xd842,
- 0xdcde, 0x101, 0x8ed4, 0x101, 0x8f38, 0x201, 0xd861, 0xddd2,
- 0x201, 0xd861, 0xdded, 0x101, 0x9094, 0x101, 0x90f1, 0x101,
- 0x9111, 0x201, 0xd861, 0xdf2e, 0x101, 0x911b, 0x101, 0x9238,
- 0x101, 0x92d7, 0x101, 0x92d8, 0x101, 0x927c, 0x101, 0x93f9,
- 0x101, 0x9415, 0x201, 0xd862, 0xdffa, 0x101, 0x958b, 0x101,
- 0x4995, 0x101, 0x95b7, 0x201, 0xd863, 0xdd77, 0x101, 0x49e6,
- 0x101, 0x96c3, 0x101, 0x5db2, 0x101, 0x9723, 0x201, 0xd864,
- 0xdd45, 0x201, 0xd864, 0xde1a, 0x101, 0x4a6e, 0x101, 0x4a76,
- 0x101, 0x97e0, 0x201, 0xd865, 0xdc0a, 0x101, 0x4ab2, 0x201,
- 0xd865, 0xdc96, 0x101, 0x980b, 0x101, 0x980b, 0x101, 0x9829,
- 0x201, 0xd865, 0xddb6, 0x101, 0x98e2, 0x101, 0x4b33, 0x101,
- 0x9929, 0x101, 0x99a7, 0x101, 0x99c2, 0x101, 0x99fe, 0x101,
- 0x4bce, 0x201, 0xd866, 0xdf30, 0x101, 0x9b12, 0x101, 0x9c40,
- 0x101, 0x9cfd, 0x101, 0x4cce, 0x101, 0x4ced, 0x101, 0x9d67,
- 0x201, 0xd868, 0xdcce, 0x101, 0x4cf8, 0x201, 0xd868, 0xdd05,
- 0x201, 0xd868, 0xde0e, 0x201, 0xd868, 0xde91, 0x101, 0x9ebb,
- 0x101, 0x4d56, 0x101, 0x9ef9, 0x101, 0x9efe, 0x101, 0x9f05,
- 0x101, 0x9f0f, 0x101, 0x9f16, 0x101, 0x9f3b, 0x201, 0xd869,
- 0xde00
+ 0x30f1, 0x108, 0x30f2, 0x20f, 0x4ee4, 0x548c, 0x40f, 0x30a2,
+ 0x30d1, 0x30fc, 0x30c8, 0x40f, 0x30a2, 0x30eb, 0x30d5, 0x30a1,
+ 0x40f, 0x30a2, 0x30f3, 0x30da, 0x30a2, 0x30f, 0x30a2, 0x30fc,
+ 0x30eb, 0x40f, 0x30a4, 0x30cb, 0x30f3, 0x30b0, 0x30f, 0x30a4,
+ 0x30f3, 0x30c1, 0x30f, 0x30a6, 0x30a9, 0x30f3, 0x50f, 0x30a8,
+ 0x30b9, 0x30af, 0x30fc, 0x30c9, 0x40f, 0x30a8, 0x30fc, 0x30ab,
+ 0x30fc, 0x30f, 0x30aa, 0x30f3, 0x30b9, 0x30f, 0x30aa, 0x30fc,
+ 0x30e0, 0x30f, 0x30ab, 0x30a4, 0x30ea, 0x40f, 0x30ab, 0x30e9,
+ 0x30c3, 0x30c8, 0x40f, 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x30f,
+ 0x30ac, 0x30ed, 0x30f3, 0x30f, 0x30ac, 0x30f3, 0x30de, 0x20f,
+ 0x30ae, 0x30ac, 0x30f, 0x30ae, 0x30cb, 0x30fc, 0x40f, 0x30ad,
+ 0x30e5, 0x30ea, 0x30fc, 0x40f, 0x30ae, 0x30eb, 0x30c0, 0x30fc,
+ 0x20f, 0x30ad, 0x30ed, 0x50f, 0x30ad, 0x30ed, 0x30b0, 0x30e9,
+ 0x30e0, 0x60f, 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb,
+ 0x50f, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x30f, 0x30b0,
+ 0x30e9, 0x30e0, 0x50f, 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3,
+ 0x50f, 0x30af, 0x30eb, 0x30bc, 0x30a4, 0x30ed, 0x40f, 0x30af,
+ 0x30ed, 0x30fc, 0x30cd, 0x30f, 0x30b1, 0x30fc, 0x30b9, 0x30f,
+ 0x30b3, 0x30eb, 0x30ca, 0x30f, 0x30b3, 0x30fc, 0x30dd, 0x40f,
+ 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x50f, 0x30b5, 0x30f3, 0x30c1,
+ 0x30fc, 0x30e0, 0x40f, 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0x30f,
+ 0x30bb, 0x30f3, 0x30c1, 0x30f, 0x30bb, 0x30f3, 0x30c8, 0x30f,
+ 0x30c0, 0x30fc, 0x30b9, 0x20f, 0x30c7, 0x30b7, 0x20f, 0x30c9,
+ 0x30eb, 0x20f, 0x30c8, 0x30f3, 0x20f, 0x30ca, 0x30ce, 0x30f,
+ 0x30ce, 0x30c3, 0x30c8, 0x30f, 0x30cf, 0x30a4, 0x30c4, 0x50f,
+ 0x30d1, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0x30f, 0x30d1, 0x30fc,
+ 0x30c4, 0x40f, 0x30d0, 0x30fc, 0x30ec, 0x30eb, 0x50f, 0x30d4,
+ 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x30f, 0x30d4, 0x30af, 0x30eb,
+ 0x20f, 0x30d4, 0x30b3, 0x20f, 0x30d3, 0x30eb, 0x50f, 0x30d5,
+ 0x30a1, 0x30e9, 0x30c3, 0x30c9, 0x40f, 0x30d5, 0x30a3, 0x30fc,
+ 0x30c8, 0x50f, 0x30d6, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x30f,
+ 0x30d5, 0x30e9, 0x30f3, 0x50f, 0x30d8, 0x30af, 0x30bf, 0x30fc,
+ 0x30eb, 0x20f, 0x30da, 0x30bd, 0x30f, 0x30da, 0x30cb, 0x30d2,
+ 0x30f, 0x30d8, 0x30eb, 0x30c4, 0x30f, 0x30da, 0x30f3, 0x30b9,
+ 0x30f, 0x30da, 0x30fc, 0x30b8, 0x30f, 0x30d9, 0x30fc, 0x30bf,
+ 0x40f, 0x30dd, 0x30a4, 0x30f3, 0x30c8, 0x30f, 0x30dc, 0x30eb,
+ 0x30c8, 0x20f, 0x30db, 0x30f3, 0x30f, 0x30dd, 0x30f3, 0x30c9,
+ 0x30f, 0x30db, 0x30fc, 0x30eb, 0x30f, 0x30db, 0x30fc, 0x30f3,
+ 0x40f, 0x30de, 0x30a4, 0x30af, 0x30ed, 0x30f, 0x30de, 0x30a4,
+ 0x30eb, 0x30f, 0x30de, 0x30c3, 0x30cf, 0x30f, 0x30de, 0x30eb,
+ 0x30af, 0x50f, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x40f,
+ 0x30df, 0x30af, 0x30ed, 0x30f3, 0x20f, 0x30df, 0x30ea, 0x50f,
+ 0x30df, 0x30ea, 0x30d0, 0x30fc, 0x30eb, 0x20f, 0x30e1, 0x30ac,
+ 0x40f, 0x30e1, 0x30ac, 0x30c8, 0x30f3, 0x40f, 0x30e1, 0x30fc,
+ 0x30c8, 0x30eb, 0x30f, 0x30e4, 0x30fc, 0x30c9, 0x30f, 0x30e4,
+ 0x30fc, 0x30eb, 0x30f, 0x30e6, 0x30a2, 0x30f3, 0x40f, 0x30ea,
+ 0x30c3, 0x30c8, 0x30eb, 0x20f, 0x30ea, 0x30e9, 0x30f, 0x30eb,
+ 0x30d4, 0x30fc, 0x40f, 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0x20f,
+ 0x30ec, 0x30e0, 0x50f, 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3,
+ 0x30f, 0x30ef, 0x30c3, 0x30c8, 0x210, 0x30, 0x70b9, 0x210,
+ 0x31, 0x70b9, 0x210, 0x32, 0x70b9, 0x210, 0x33, 0x70b9,
+ 0x210, 0x34, 0x70b9, 0x210, 0x35, 0x70b9, 0x210, 0x36,
+ 0x70b9, 0x210, 0x37, 0x70b9, 0x210, 0x38, 0x70b9, 0x210,
+ 0x39, 0x70b9, 0x310, 0x31, 0x30, 0x70b9, 0x310, 0x31,
+ 0x31, 0x70b9, 0x310, 0x31, 0x32, 0x70b9, 0x310, 0x31,
+ 0x33, 0x70b9, 0x310, 0x31, 0x34, 0x70b9, 0x310, 0x31,
+ 0x35, 0x70b9, 0x310, 0x31, 0x36, 0x70b9, 0x310, 0x31,
+ 0x37, 0x70b9, 0x310, 0x31, 0x38, 0x70b9, 0x310, 0x31,
+ 0x39, 0x70b9, 0x310, 0x32, 0x30, 0x70b9, 0x310, 0x32,
+ 0x31, 0x70b9, 0x310, 0x32, 0x32, 0x70b9, 0x310, 0x32,
+ 0x33, 0x70b9, 0x310, 0x32, 0x34, 0x70b9, 0x30f, 0x68,
+ 0x50, 0x61, 0x20f, 0x64, 0x61, 0x20f, 0x41, 0x55,
+ 0x30f, 0x62, 0x61, 0x72, 0x20f, 0x6f, 0x56, 0x20f,
+ 0x70, 0x63, 0x20f, 0x64, 0x6d, 0x30f, 0x64, 0x6d,
+ 0xb2, 0x30f, 0x64, 0x6d, 0xb3, 0x20f, 0x49, 0x55,
+ 0x20f, 0x5e73, 0x6210, 0x20f, 0x662d, 0x548c, 0x20f, 0x5927,
+ 0x6b63, 0x20f, 0x660e, 0x6cbb, 0x40f, 0x682a, 0x5f0f, 0x4f1a,
+ 0x793e, 0x20f, 0x70, 0x41, 0x20f, 0x6e, 0x41, 0x20f,
+ 0x3bc, 0x41, 0x20f, 0x6d, 0x41, 0x20f, 0x6b, 0x41,
+ 0x20f, 0x4b, 0x42, 0x20f, 0x4d, 0x42, 0x20f, 0x47,
+ 0x42, 0x30f, 0x63, 0x61, 0x6c, 0x40f, 0x6b, 0x63,
+ 0x61, 0x6c, 0x20f, 0x70, 0x46, 0x20f, 0x6e, 0x46,
+ 0x20f, 0x3bc, 0x46, 0x20f, 0x3bc, 0x67, 0x20f, 0x6d,
+ 0x67, 0x20f, 0x6b, 0x67, 0x20f, 0x48, 0x7a, 0x30f,
+ 0x6b, 0x48, 0x7a, 0x30f, 0x4d, 0x48, 0x7a, 0x30f,
+ 0x47, 0x48, 0x7a, 0x30f, 0x54, 0x48, 0x7a, 0x20f,
+ 0x3bc, 0x2113, 0x20f, 0x6d, 0x2113, 0x20f, 0x64, 0x2113,
+ 0x20f, 0x6b, 0x2113, 0x20f, 0x66, 0x6d, 0x20f, 0x6e,
+ 0x6d, 0x20f, 0x3bc, 0x6d, 0x20f, 0x6d, 0x6d, 0x20f,
+ 0x63, 0x6d, 0x20f, 0x6b, 0x6d, 0x30f, 0x6d, 0x6d,
+ 0xb2, 0x30f, 0x63, 0x6d, 0xb2, 0x20f, 0x6d, 0xb2,
+ 0x30f, 0x6b, 0x6d, 0xb2, 0x30f, 0x6d, 0x6d, 0xb3,
+ 0x30f, 0x63, 0x6d, 0xb3, 0x20f, 0x6d, 0xb3, 0x30f,
+ 0x6b, 0x6d, 0xb3, 0x30f, 0x6d, 0x2215, 0x73, 0x40f,
+ 0x6d, 0x2215, 0x73, 0xb2, 0x20f, 0x50, 0x61, 0x30f,
+ 0x6b, 0x50, 0x61, 0x30f, 0x4d, 0x50, 0x61, 0x30f,
+ 0x47, 0x50, 0x61, 0x30f, 0x72, 0x61, 0x64, 0x50f,
+ 0x72, 0x61, 0x64, 0x2215, 0x73, 0x60f, 0x72, 0x61,
+ 0x64, 0x2215, 0x73, 0xb2, 0x20f, 0x70, 0x73, 0x20f,
+ 0x6e, 0x73, 0x20f, 0x3bc, 0x73, 0x20f, 0x6d, 0x73,
+ 0x20f, 0x70, 0x56, 0x20f, 0x6e, 0x56, 0x20f, 0x3bc,
+ 0x56, 0x20f, 0x6d, 0x56, 0x20f, 0x6b, 0x56, 0x20f,
+ 0x4d, 0x56, 0x20f, 0x70, 0x57, 0x20f, 0x6e, 0x57,
+ 0x20f, 0x3bc, 0x57, 0x20f, 0x6d, 0x57, 0x20f, 0x6b,
+ 0x57, 0x20f, 0x4d, 0x57, 0x20f, 0x6b, 0x3a9, 0x20f,
+ 0x4d, 0x3a9, 0x40f, 0x61, 0x2e, 0x6d, 0x2e, 0x20f,
+ 0x42, 0x71, 0x20f, 0x63, 0x63, 0x20f, 0x63, 0x64,
+ 0x40f, 0x43, 0x2215, 0x6b, 0x67, 0x30f, 0x43, 0x6f,
+ 0x2e, 0x20f, 0x64, 0x42, 0x20f, 0x47, 0x79, 0x20f,
+ 0x68, 0x61, 0x20f, 0x48, 0x50, 0x20f, 0x69, 0x6e,
+ 0x20f, 0x4b, 0x4b, 0x20f, 0x4b, 0x4d, 0x20f, 0x6b,
+ 0x74, 0x20f, 0x6c, 0x6d, 0x20f, 0x6c, 0x6e, 0x30f,
+ 0x6c, 0x6f, 0x67, 0x20f, 0x6c, 0x78, 0x20f, 0x6d,
+ 0x62, 0x30f, 0x6d, 0x69, 0x6c, 0x30f, 0x6d, 0x6f,
+ 0x6c, 0x20f, 0x50, 0x48, 0x40f, 0x70, 0x2e, 0x6d,
+ 0x2e, 0x30f, 0x50, 0x50, 0x4d, 0x20f, 0x50, 0x52,
+ 0x20f, 0x73, 0x72, 0x20f, 0x53, 0x76, 0x20f, 0x57,
+ 0x62, 0x30f, 0x56, 0x2215, 0x6d, 0x30f, 0x41, 0x2215,
+ 0x6d, 0x210, 0x31, 0x65e5, 0x210, 0x32, 0x65e5, 0x210,
+ 0x33, 0x65e5, 0x210, 0x34, 0x65e5, 0x210, 0x35, 0x65e5,
+ 0x210, 0x36, 0x65e5, 0x210, 0x37, 0x65e5, 0x210, 0x38,
+ 0x65e5, 0x210, 0x39, 0x65e5, 0x310, 0x31, 0x30, 0x65e5,
+ 0x310, 0x31, 0x31, 0x65e5, 0x310, 0x31, 0x32, 0x65e5,
+ 0x310, 0x31, 0x33, 0x65e5, 0x310, 0x31, 0x34, 0x65e5,
+ 0x310, 0x31, 0x35, 0x65e5, 0x310, 0x31, 0x36, 0x65e5,
+ 0x310, 0x31, 0x37, 0x65e5, 0x310, 0x31, 0x38, 0x65e5,
+ 0x310, 0x31, 0x39, 0x65e5, 0x310, 0x32, 0x30, 0x65e5,
+ 0x310, 0x32, 0x31, 0x65e5, 0x310, 0x32, 0x32, 0x65e5,
+ 0x310, 0x32, 0x33, 0x65e5, 0x310, 0x32, 0x34, 0x65e5,
+ 0x310, 0x32, 0x35, 0x65e5, 0x310, 0x32, 0x36, 0x65e5,
+ 0x310, 0x32, 0x37, 0x65e5, 0x310, 0x32, 0x38, 0x65e5,
+ 0x310, 0x32, 0x39, 0x65e5, 0x310, 0x33, 0x30, 0x65e5,
+ 0x310, 0x33, 0x31, 0x65e5, 0x30f, 0x67, 0x61, 0x6c,
+ 0x109, 0x44a, 0x109, 0x44c, 0x109, 0xa76f, 0x109, 0x126,
+ 0x109, 0x153, 0x109, 0xa727, 0x109, 0xab37, 0x109, 0x26b,
+ 0x109, 0xab52, 0x101, 0x8c48, 0x101, 0x66f4, 0x101, 0x8eca,
+ 0x101, 0x8cc8, 0x101, 0x6ed1, 0x101, 0x4e32, 0x101, 0x53e5,
+ 0x101, 0x9f9c, 0x101, 0x9f9c, 0x101, 0x5951, 0x101, 0x91d1,
+ 0x101, 0x5587, 0x101, 0x5948, 0x101, 0x61f6, 0x101, 0x7669,
+ 0x101, 0x7f85, 0x101, 0x863f, 0x101, 0x87ba, 0x101, 0x88f8,
+ 0x101, 0x908f, 0x101, 0x6a02, 0x101, 0x6d1b, 0x101, 0x70d9,
+ 0x101, 0x73de, 0x101, 0x843d, 0x101, 0x916a, 0x101, 0x99f1,
+ 0x101, 0x4e82, 0x101, 0x5375, 0x101, 0x6b04, 0x101, 0x721b,
+ 0x101, 0x862d, 0x101, 0x9e1e, 0x101, 0x5d50, 0x101, 0x6feb,
+ 0x101, 0x85cd, 0x101, 0x8964, 0x101, 0x62c9, 0x101, 0x81d8,
+ 0x101, 0x881f, 0x101, 0x5eca, 0x101, 0x6717, 0x101, 0x6d6a,
+ 0x101, 0x72fc, 0x101, 0x90ce, 0x101, 0x4f86, 0x101, 0x51b7,
+ 0x101, 0x52de, 0x101, 0x64c4, 0x101, 0x6ad3, 0x101, 0x7210,
+ 0x101, 0x76e7, 0x101, 0x8001, 0x101, 0x8606, 0x101, 0x865c,
+ 0x101, 0x8def, 0x101, 0x9732, 0x101, 0x9b6f, 0x101, 0x9dfa,
+ 0x101, 0x788c, 0x101, 0x797f, 0x101, 0x7da0, 0x101, 0x83c9,
+ 0x101, 0x9304, 0x101, 0x9e7f, 0x101, 0x8ad6, 0x101, 0x58df,
+ 0x101, 0x5f04, 0x101, 0x7c60, 0x101, 0x807e, 0x101, 0x7262,
+ 0x101, 0x78ca, 0x101, 0x8cc2, 0x101, 0x96f7, 0x101, 0x58d8,
+ 0x101, 0x5c62, 0x101, 0x6a13, 0x101, 0x6dda, 0x101, 0x6f0f,
+ 0x101, 0x7d2f, 0x101, 0x7e37, 0x101, 0x964b, 0x101, 0x52d2,
+ 0x101, 0x808b, 0x101, 0x51dc, 0x101, 0x51cc, 0x101, 0x7a1c,
+ 0x101, 0x7dbe, 0x101, 0x83f1, 0x101, 0x9675, 0x101, 0x8b80,
+ 0x101, 0x62cf, 0x101, 0x6a02, 0x101, 0x8afe, 0x101, 0x4e39,
+ 0x101, 0x5be7, 0x101, 0x6012, 0x101, 0x7387, 0x101, 0x7570,
+ 0x101, 0x5317, 0x101, 0x78fb, 0x101, 0x4fbf, 0x101, 0x5fa9,
+ 0x101, 0x4e0d, 0x101, 0x6ccc, 0x101, 0x6578, 0x101, 0x7d22,
+ 0x101, 0x53c3, 0x101, 0x585e, 0x101, 0x7701, 0x101, 0x8449,
+ 0x101, 0x8aaa, 0x101, 0x6bba, 0x101, 0x8fb0, 0x101, 0x6c88,
+ 0x101, 0x62fe, 0x101, 0x82e5, 0x101, 0x63a0, 0x101, 0x7565,
+ 0x101, 0x4eae, 0x101, 0x5169, 0x101, 0x51c9, 0x101, 0x6881,
+ 0x101, 0x7ce7, 0x101, 0x826f, 0x101, 0x8ad2, 0x101, 0x91cf,
+ 0x101, 0x52f5, 0x101, 0x5442, 0x101, 0x5973, 0x101, 0x5eec,
+ 0x101, 0x65c5, 0x101, 0x6ffe, 0x101, 0x792a, 0x101, 0x95ad,
+ 0x101, 0x9a6a, 0x101, 0x9e97, 0x101, 0x9ece, 0x101, 0x529b,
+ 0x101, 0x66c6, 0x101, 0x6b77, 0x101, 0x8f62, 0x101, 0x5e74,
+ 0x101, 0x6190, 0x101, 0x6200, 0x101, 0x649a, 0x101, 0x6f23,
+ 0x101, 0x7149, 0x101, 0x7489, 0x101, 0x79ca, 0x101, 0x7df4,
+ 0x101, 0x806f, 0x101, 0x8f26, 0x101, 0x84ee, 0x101, 0x9023,
+ 0x101, 0x934a, 0x101, 0x5217, 0x101, 0x52a3, 0x101, 0x54bd,
+ 0x101, 0x70c8, 0x101, 0x88c2, 0x101, 0x8aaa, 0x101, 0x5ec9,
+ 0x101, 0x5ff5, 0x101, 0x637b, 0x101, 0x6bae, 0x101, 0x7c3e,
+ 0x101, 0x7375, 0x101, 0x4ee4, 0x101, 0x56f9, 0x101, 0x5be7,
+ 0x101, 0x5dba, 0x101, 0x601c, 0x101, 0x73b2, 0x101, 0x7469,
+ 0x101, 0x7f9a, 0x101, 0x8046, 0x101, 0x9234, 0x101, 0x96f6,
+ 0x101, 0x9748, 0x101, 0x9818, 0x101, 0x4f8b, 0x101, 0x79ae,
+ 0x101, 0x91b4, 0x101, 0x96b8, 0x101, 0x60e1, 0x101, 0x4e86,
+ 0x101, 0x50da, 0x101, 0x5bee, 0x101, 0x5c3f, 0x101, 0x6599,
+ 0x101, 0x6a02, 0x101, 0x71ce, 0x101, 0x7642, 0x101, 0x84fc,
+ 0x101, 0x907c, 0x101, 0x9f8d, 0x101, 0x6688, 0x101, 0x962e,
+ 0x101, 0x5289, 0x101, 0x677b, 0x101, 0x67f3, 0x101, 0x6d41,
+ 0x101, 0x6e9c, 0x101, 0x7409, 0x101, 0x7559, 0x101, 0x786b,
+ 0x101, 0x7d10, 0x101, 0x985e, 0x101, 0x516d, 0x101, 0x622e,
+ 0x101, 0x9678, 0x101, 0x502b, 0x101, 0x5d19, 0x101, 0x6dea,
+ 0x101, 0x8f2a, 0x101, 0x5f8b, 0x101, 0x6144, 0x101, 0x6817,
+ 0x101, 0x7387, 0x101, 0x9686, 0x101, 0x5229, 0x101, 0x540f,
+ 0x101, 0x5c65, 0x101, 0x6613, 0x101, 0x674e, 0x101, 0x68a8,
+ 0x101, 0x6ce5, 0x101, 0x7406, 0x101, 0x75e2, 0x101, 0x7f79,
+ 0x101, 0x88cf, 0x101, 0x88e1, 0x101, 0x91cc, 0x101, 0x96e2,
+ 0x101, 0x533f, 0x101, 0x6eba, 0x101, 0x541d, 0x101, 0x71d0,
+ 0x101, 0x7498, 0x101, 0x85fa, 0x101, 0x96a3, 0x101, 0x9c57,
+ 0x101, 0x9e9f, 0x101, 0x6797, 0x101, 0x6dcb, 0x101, 0x81e8,
+ 0x101, 0x7acb, 0x101, 0x7b20, 0x101, 0x7c92, 0x101, 0x72c0,
+ 0x101, 0x7099, 0x101, 0x8b58, 0x101, 0x4ec0, 0x101, 0x8336,
+ 0x101, 0x523a, 0x101, 0x5207, 0x101, 0x5ea6, 0x101, 0x62d3,
+ 0x101, 0x7cd6, 0x101, 0x5b85, 0x101, 0x6d1e, 0x101, 0x66b4,
+ 0x101, 0x8f3b, 0x101, 0x884c, 0x101, 0x964d, 0x101, 0x898b,
+ 0x101, 0x5ed3, 0x101, 0x5140, 0x101, 0x55c0, 0x101, 0x585a,
+ 0x101, 0x6674, 0x101, 0x51de, 0x101, 0x732a, 0x101, 0x76ca,
+ 0x101, 0x793c, 0x101, 0x795e, 0x101, 0x7965, 0x101, 0x798f,
+ 0x101, 0x9756, 0x101, 0x7cbe, 0x101, 0x7fbd, 0x101, 0x8612,
+ 0x101, 0x8af8, 0x101, 0x9038, 0x101, 0x90fd, 0x101, 0x98ef,
+ 0x101, 0x98fc, 0x101, 0x9928, 0x101, 0x9db4, 0x101, 0x90de,
+ 0x101, 0x96b7, 0x101, 0x4fae, 0x101, 0x50e7, 0x101, 0x514d,
+ 0x101, 0x52c9, 0x101, 0x52e4, 0x101, 0x5351, 0x101, 0x559d,
+ 0x101, 0x5606, 0x101, 0x5668, 0x101, 0x5840, 0x101, 0x58a8,
+ 0x101, 0x5c64, 0x101, 0x5c6e, 0x101, 0x6094, 0x101, 0x6168,
+ 0x101, 0x618e, 0x101, 0x61f2, 0x101, 0x654f, 0x101, 0x65e2,
+ 0x101, 0x6691, 0x101, 0x6885, 0x101, 0x6d77, 0x101, 0x6e1a,
+ 0x101, 0x6f22, 0x101, 0x716e, 0x101, 0x722b, 0x101, 0x7422,
+ 0x101, 0x7891, 0x101, 0x793e, 0x101, 0x7949, 0x101, 0x7948,
+ 0x101, 0x7950, 0x101, 0x7956, 0x101, 0x795d, 0x101, 0x798d,
+ 0x101, 0x798e, 0x101, 0x7a40, 0x101, 0x7a81, 0x101, 0x7bc0,
+ 0x101, 0x7df4, 0x101, 0x7e09, 0x101, 0x7e41, 0x101, 0x7f72,
+ 0x101, 0x8005, 0x101, 0x81ed, 0x101, 0x8279, 0x101, 0x8279,
+ 0x101, 0x8457, 0x101, 0x8910, 0x101, 0x8996, 0x101, 0x8b01,
+ 0x101, 0x8b39, 0x101, 0x8cd3, 0x101, 0x8d08, 0x101, 0x8fb6,
+ 0x101, 0x9038, 0x101, 0x96e3, 0x101, 0x97ff, 0x101, 0x983b,
+ 0x101, 0x6075, 0x201, 0xd850, 0xdeee, 0x101, 0x8218, 0x101,
+ 0x4e26, 0x101, 0x51b5, 0x101, 0x5168, 0x101, 0x4f80, 0x101,
+ 0x5145, 0x101, 0x5180, 0x101, 0x52c7, 0x101, 0x52fa, 0x101,
+ 0x559d, 0x101, 0x5555, 0x101, 0x5599, 0x101, 0x55e2, 0x101,
+ 0x585a, 0x101, 0x58b3, 0x101, 0x5944, 0x101, 0x5954, 0x101,
+ 0x5a62, 0x101, 0x5b28, 0x101, 0x5ed2, 0x101, 0x5ed9, 0x101,
+ 0x5f69, 0x101, 0x5fad, 0x101, 0x60d8, 0x101, 0x614e, 0x101,
+ 0x6108, 0x101, 0x618e, 0x101, 0x6160, 0x101, 0x61f2, 0x101,
+ 0x6234, 0x101, 0x63c4, 0x101, 0x641c, 0x101, 0x6452, 0x101,
+ 0x6556, 0x101, 0x6674, 0x101, 0x6717, 0x101, 0x671b, 0x101,
+ 0x6756, 0x101, 0x6b79, 0x101, 0x6bba, 0x101, 0x6d41, 0x101,
+ 0x6edb, 0x101, 0x6ecb, 0x101, 0x6f22, 0x101, 0x701e, 0x101,
+ 0x716e, 0x101, 0x77a7, 0x101, 0x7235, 0x101, 0x72af, 0x101,
+ 0x732a, 0x101, 0x7471, 0x101, 0x7506, 0x101, 0x753b, 0x101,
+ 0x761d, 0x101, 0x761f, 0x101, 0x76ca, 0x101, 0x76db, 0x101,
+ 0x76f4, 0x101, 0x774a, 0x101, 0x7740, 0x101, 0x78cc, 0x101,
+ 0x7ab1, 0x101, 0x7bc0, 0x101, 0x7c7b, 0x101, 0x7d5b, 0x101,
+ 0x7df4, 0x101, 0x7f3e, 0x101, 0x8005, 0x101, 0x8352, 0x101,
+ 0x83ef, 0x101, 0x8779, 0x101, 0x8941, 0x101, 0x8986, 0x101,
+ 0x8996, 0x101, 0x8abf, 0x101, 0x8af8, 0x101, 0x8acb, 0x101,
+ 0x8b01, 0x101, 0x8afe, 0x101, 0x8aed, 0x101, 0x8b39, 0x101,
+ 0x8b8a, 0x101, 0x8d08, 0x101, 0x8f38, 0x101, 0x9072, 0x101,
+ 0x9199, 0x101, 0x9276, 0x101, 0x967c, 0x101, 0x96e3, 0x101,
+ 0x9756, 0x101, 0x97db, 0x101, 0x97ff, 0x101, 0x980b, 0x101,
+ 0x983b, 0x101, 0x9b12, 0x101, 0x9f9c, 0x201, 0xd84a, 0xdc4a,
+ 0x201, 0xd84a, 0xdc44, 0x201, 0xd84c, 0xdfd5, 0x101, 0x3b9d,
+ 0x101, 0x4018, 0x101, 0x4039, 0x201, 0xd854, 0xde49, 0x201,
+ 0xd857, 0xdcd0, 0x201, 0xd85f, 0xded3, 0x101, 0x9f43, 0x101,
+ 0x9f8e, 0x210, 0x66, 0x66, 0x210, 0x66, 0x69, 0x210,
+ 0x66, 0x6c, 0x310, 0x66, 0x66, 0x69, 0x310, 0x66,
+ 0x66, 0x6c, 0x210, 0x17f, 0x74, 0x210, 0x73, 0x74,
+ 0x210, 0x574, 0x576, 0x210, 0x574, 0x565, 0x210, 0x574,
+ 0x56b, 0x210, 0x57e, 0x576, 0x210, 0x574, 0x56d, 0x201,
+ 0x5d9, 0x5b4, 0x201, 0x5f2, 0x5b7, 0x102, 0x5e2, 0x102,
+ 0x5d0, 0x102, 0x5d3, 0x102, 0x5d4, 0x102, 0x5db, 0x102,
+ 0x5dc, 0x102, 0x5dd, 0x102, 0x5e8, 0x102, 0x5ea, 0x102,
+ 0x2b, 0x201, 0x5e9, 0x5c1, 0x201, 0x5e9, 0x5c2, 0x201,
+ 0xfb49, 0x5c1, 0x201, 0xfb49, 0x5c2, 0x201, 0x5d0, 0x5b7,
+ 0x201, 0x5d0, 0x5b8, 0x201, 0x5d0, 0x5bc, 0x201, 0x5d1,
+ 0x5bc, 0x201, 0x5d2, 0x5bc, 0x201, 0x5d3, 0x5bc, 0x201,
+ 0x5d4, 0x5bc, 0x201, 0x5d5, 0x5bc, 0x201, 0x5d6, 0x5bc,
+ 0x201, 0x5d8, 0x5bc, 0x201, 0x5d9, 0x5bc, 0x201, 0x5da,
+ 0x5bc, 0x201, 0x5db, 0x5bc, 0x201, 0x5dc, 0x5bc, 0x201,
+ 0x5de, 0x5bc, 0x201, 0x5e0, 0x5bc, 0x201, 0x5e1, 0x5bc,
+ 0x201, 0x5e3, 0x5bc, 0x201, 0x5e4, 0x5bc, 0x201, 0x5e6,
+ 0x5bc, 0x201, 0x5e7, 0x5bc, 0x201, 0x5e8, 0x5bc, 0x201,
+ 0x5e9, 0x5bc, 0x201, 0x5ea, 0x5bc, 0x201, 0x5d5, 0x5b9,
+ 0x201, 0x5d1, 0x5bf, 0x201, 0x5db, 0x5bf, 0x201, 0x5e4,
+ 0x5bf, 0x210, 0x5d0, 0x5dc, 0x107, 0x671, 0x106, 0x671,
+ 0x107, 0x67b, 0x106, 0x67b, 0x104, 0x67b, 0x105, 0x67b,
+ 0x107, 0x67e, 0x106, 0x67e, 0x104, 0x67e, 0x105, 0x67e,
+ 0x107, 0x680, 0x106, 0x680, 0x104, 0x680, 0x105, 0x680,
+ 0x107, 0x67a, 0x106, 0x67a, 0x104, 0x67a, 0x105, 0x67a,
+ 0x107, 0x67f, 0x106, 0x67f, 0x104, 0x67f, 0x105, 0x67f,
+ 0x107, 0x679, 0x106, 0x679, 0x104, 0x679, 0x105, 0x679,
+ 0x107, 0x6a4, 0x106, 0x6a4, 0x104, 0x6a4, 0x105, 0x6a4,
+ 0x107, 0x6a6, 0x106, 0x6a6, 0x104, 0x6a6, 0x105, 0x6a6,
+ 0x107, 0x684, 0x106, 0x684, 0x104, 0x684, 0x105, 0x684,
+ 0x107, 0x683, 0x106, 0x683, 0x104, 0x683, 0x105, 0x683,
+ 0x107, 0x686, 0x106, 0x686, 0x104, 0x686, 0x105, 0x686,
+ 0x107, 0x687, 0x106, 0x687, 0x104, 0x687, 0x105, 0x687,
+ 0x107, 0x68d, 0x106, 0x68d, 0x107, 0x68c, 0x106, 0x68c,
+ 0x107, 0x68e, 0x106, 0x68e, 0x107, 0x688, 0x106, 0x688,
+ 0x107, 0x698, 0x106, 0x698, 0x107, 0x691, 0x106, 0x691,
+ 0x107, 0x6a9, 0x106, 0x6a9, 0x104, 0x6a9, 0x105, 0x6a9,
+ 0x107, 0x6af, 0x106, 0x6af, 0x104, 0x6af, 0x105, 0x6af,
+ 0x107, 0x6b3, 0x106, 0x6b3, 0x104, 0x6b3, 0x105, 0x6b3,
+ 0x107, 0x6b1, 0x106, 0x6b1, 0x104, 0x6b1, 0x105, 0x6b1,
+ 0x107, 0x6ba, 0x106, 0x6ba, 0x107, 0x6bb, 0x106, 0x6bb,
+ 0x104, 0x6bb, 0x105, 0x6bb, 0x107, 0x6c0, 0x106, 0x6c0,
+ 0x107, 0x6c1, 0x106, 0x6c1, 0x104, 0x6c1, 0x105, 0x6c1,
+ 0x107, 0x6be, 0x106, 0x6be, 0x104, 0x6be, 0x105, 0x6be,
+ 0x107, 0x6d2, 0x106, 0x6d2, 0x107, 0x6d3, 0x106, 0x6d3,
+ 0x107, 0x6ad, 0x106, 0x6ad, 0x104, 0x6ad, 0x105, 0x6ad,
+ 0x107, 0x6c7, 0x106, 0x6c7, 0x107, 0x6c6, 0x106, 0x6c6,
+ 0x107, 0x6c8, 0x106, 0x6c8, 0x107, 0x677, 0x107, 0x6cb,
+ 0x106, 0x6cb, 0x107, 0x6c5, 0x106, 0x6c5, 0x107, 0x6c9,
+ 0x106, 0x6c9, 0x107, 0x6d0, 0x106, 0x6d0, 0x104, 0x6d0,
+ 0x105, 0x6d0, 0x104, 0x649, 0x105, 0x649, 0x207, 0x626,
+ 0x627, 0x206, 0x626, 0x627, 0x207, 0x626, 0x6d5, 0x206,
+ 0x626, 0x6d5, 0x207, 0x626, 0x648, 0x206, 0x626, 0x648,
+ 0x207, 0x626, 0x6c7, 0x206, 0x626, 0x6c7, 0x207, 0x626,
+ 0x6c6, 0x206, 0x626, 0x6c6, 0x207, 0x626, 0x6c8, 0x206,
+ 0x626, 0x6c8, 0x207, 0x626, 0x6d0, 0x206, 0x626, 0x6d0,
+ 0x204, 0x626, 0x6d0, 0x207, 0x626, 0x649, 0x206, 0x626,
+ 0x649, 0x204, 0x626, 0x649, 0x107, 0x6cc, 0x106, 0x6cc,
+ 0x104, 0x6cc, 0x105, 0x6cc, 0x207, 0x626, 0x62c, 0x207,
+ 0x626, 0x62d, 0x207, 0x626, 0x645, 0x207, 0x626, 0x649,
+ 0x207, 0x626, 0x64a, 0x207, 0x628, 0x62c, 0x207, 0x628,
+ 0x62d, 0x207, 0x628, 0x62e, 0x207, 0x628, 0x645, 0x207,
+ 0x628, 0x649, 0x207, 0x628, 0x64a, 0x207, 0x62a, 0x62c,
+ 0x207, 0x62a, 0x62d, 0x207, 0x62a, 0x62e, 0x207, 0x62a,
+ 0x645, 0x207, 0x62a, 0x649, 0x207, 0x62a, 0x64a, 0x207,
+ 0x62b, 0x62c, 0x207, 0x62b, 0x645, 0x207, 0x62b, 0x649,
+ 0x207, 0x62b, 0x64a, 0x207, 0x62c, 0x62d, 0x207, 0x62c,
+ 0x645, 0x207, 0x62d, 0x62c, 0x207, 0x62d, 0x645, 0x207,
+ 0x62e, 0x62c, 0x207, 0x62e, 0x62d, 0x207, 0x62e, 0x645,
+ 0x207, 0x633, 0x62c, 0x207, 0x633, 0x62d, 0x207, 0x633,
+ 0x62e, 0x207, 0x633, 0x645, 0x207, 0x635, 0x62d, 0x207,
+ 0x635, 0x645, 0x207, 0x636, 0x62c, 0x207, 0x636, 0x62d,
+ 0x207, 0x636, 0x62e, 0x207, 0x636, 0x645, 0x207, 0x637,
+ 0x62d, 0x207, 0x637, 0x645, 0x207, 0x638, 0x645, 0x207,
+ 0x639, 0x62c, 0x207, 0x639, 0x645, 0x207, 0x63a, 0x62c,
+ 0x207, 0x63a, 0x645, 0x207, 0x641, 0x62c, 0x207, 0x641,
+ 0x62d, 0x207, 0x641, 0x62e, 0x207, 0x641, 0x645, 0x207,
+ 0x641, 0x649, 0x207, 0x641, 0x64a, 0x207, 0x642, 0x62d,
+ 0x207, 0x642, 0x645, 0x207, 0x642, 0x649, 0x207, 0x642,
+ 0x64a, 0x207, 0x643, 0x627, 0x207, 0x643, 0x62c, 0x207,
+ 0x643, 0x62d, 0x207, 0x643, 0x62e, 0x207, 0x643, 0x644,
+ 0x207, 0x643, 0x645, 0x207, 0x643, 0x649, 0x207, 0x643,
+ 0x64a, 0x207, 0x644, 0x62c, 0x207, 0x644, 0x62d, 0x207,
+ 0x644, 0x62e, 0x207, 0x644, 0x645, 0x207, 0x644, 0x649,
+ 0x207, 0x644, 0x64a, 0x207, 0x645, 0x62c, 0x207, 0x645,
+ 0x62d, 0x207, 0x645, 0x62e, 0x207, 0x645, 0x645, 0x207,
+ 0x645, 0x649, 0x207, 0x645, 0x64a, 0x207, 0x646, 0x62c,
+ 0x207, 0x646, 0x62d, 0x207, 0x646, 0x62e, 0x207, 0x646,
+ 0x645, 0x207, 0x646, 0x649, 0x207, 0x646, 0x64a, 0x207,
+ 0x647, 0x62c, 0x207, 0x647, 0x645, 0x207, 0x647, 0x649,
+ 0x207, 0x647, 0x64a, 0x207, 0x64a, 0x62c, 0x207, 0x64a,
+ 0x62d, 0x207, 0x64a, 0x62e, 0x207, 0x64a, 0x645, 0x207,
+ 0x64a, 0x649, 0x207, 0x64a, 0x64a, 0x207, 0x630, 0x670,
+ 0x207, 0x631, 0x670, 0x207, 0x649, 0x670, 0x307, 0x20,
+ 0x64c, 0x651, 0x307, 0x20, 0x64d, 0x651, 0x307, 0x20,
+ 0x64e, 0x651, 0x307, 0x20, 0x64f, 0x651, 0x307, 0x20,
+ 0x650, 0x651, 0x307, 0x20, 0x651, 0x670, 0x206, 0x626,
+ 0x631, 0x206, 0x626, 0x632, 0x206, 0x626, 0x645, 0x206,
+ 0x626, 0x646, 0x206, 0x626, 0x649, 0x206, 0x626, 0x64a,
+ 0x206, 0x628, 0x631, 0x206, 0x628, 0x632, 0x206, 0x628,
+ 0x645, 0x206, 0x628, 0x646, 0x206, 0x628, 0x649, 0x206,
+ 0x628, 0x64a, 0x206, 0x62a, 0x631, 0x206, 0x62a, 0x632,
+ 0x206, 0x62a, 0x645, 0x206, 0x62a, 0x646, 0x206, 0x62a,
+ 0x649, 0x206, 0x62a, 0x64a, 0x206, 0x62b, 0x631, 0x206,
+ 0x62b, 0x632, 0x206, 0x62b, 0x645, 0x206, 0x62b, 0x646,
+ 0x206, 0x62b, 0x649, 0x206, 0x62b, 0x64a, 0x206, 0x641,
+ 0x649, 0x206, 0x641, 0x64a, 0x206, 0x642, 0x649, 0x206,
+ 0x642, 0x64a, 0x206, 0x643, 0x627, 0x206, 0x643, 0x644,
+ 0x206, 0x643, 0x645, 0x206, 0x643, 0x649, 0x206, 0x643,
+ 0x64a, 0x206, 0x644, 0x645, 0x206, 0x644, 0x649, 0x206,
+ 0x644, 0x64a, 0x206, 0x645, 0x627, 0x206, 0x645, 0x645,
+ 0x206, 0x646, 0x631, 0x206, 0x646, 0x632, 0x206, 0x646,
+ 0x645, 0x206, 0x646, 0x646, 0x206, 0x646, 0x649, 0x206,
+ 0x646, 0x64a, 0x206, 0x649, 0x670, 0x206, 0x64a, 0x631,
+ 0x206, 0x64a, 0x632, 0x206, 0x64a, 0x645, 0x206, 0x64a,
+ 0x646, 0x206, 0x64a, 0x649, 0x206, 0x64a, 0x64a, 0x204,
+ 0x626, 0x62c, 0x204, 0x626, 0x62d, 0x204, 0x626, 0x62e,
+ 0x204, 0x626, 0x645, 0x204, 0x626, 0x647, 0x204, 0x628,
+ 0x62c, 0x204, 0x628, 0x62d, 0x204, 0x628, 0x62e, 0x204,
+ 0x628, 0x645, 0x204, 0x628, 0x647, 0x204, 0x62a, 0x62c,
+ 0x204, 0x62a, 0x62d, 0x204, 0x62a, 0x62e, 0x204, 0x62a,
+ 0x645, 0x204, 0x62a, 0x647, 0x204, 0x62b, 0x645, 0x204,
+ 0x62c, 0x62d, 0x204, 0x62c, 0x645, 0x204, 0x62d, 0x62c,
+ 0x204, 0x62d, 0x645, 0x204, 0x62e, 0x62c, 0x204, 0x62e,
+ 0x645, 0x204, 0x633, 0x62c, 0x204, 0x633, 0x62d, 0x204,
+ 0x633, 0x62e, 0x204, 0x633, 0x645, 0x204, 0x635, 0x62d,
+ 0x204, 0x635, 0x62e, 0x204, 0x635, 0x645, 0x204, 0x636,
+ 0x62c, 0x204, 0x636, 0x62d, 0x204, 0x636, 0x62e, 0x204,
+ 0x636, 0x645, 0x204, 0x637, 0x62d, 0x204, 0x638, 0x645,
+ 0x204, 0x639, 0x62c, 0x204, 0x639, 0x645, 0x204, 0x63a,
+ 0x62c, 0x204, 0x63a, 0x645, 0x204, 0x641, 0x62c, 0x204,
+ 0x641, 0x62d, 0x204, 0x641, 0x62e, 0x204, 0x641, 0x645,
+ 0x204, 0x642, 0x62d, 0x204, 0x642, 0x645, 0x204, 0x643,
+ 0x62c, 0x204, 0x643, 0x62d, 0x204, 0x643, 0x62e, 0x204,
+ 0x643, 0x644, 0x204, 0x643, 0x645, 0x204, 0x644, 0x62c,
+ 0x204, 0x644, 0x62d, 0x204, 0x644, 0x62e, 0x204, 0x644,
+ 0x645, 0x204, 0x644, 0x647, 0x204, 0x645, 0x62c, 0x204,
+ 0x645, 0x62d, 0x204, 0x645, 0x62e, 0x204, 0x645, 0x645,
+ 0x204, 0x646, 0x62c, 0x204, 0x646, 0x62d, 0x204, 0x646,
+ 0x62e, 0x204, 0x646, 0x645, 0x204, 0x646, 0x647, 0x204,
+ 0x647, 0x62c, 0x204, 0x647, 0x645, 0x204, 0x647, 0x670,
+ 0x204, 0x64a, 0x62c, 0x204, 0x64a, 0x62d, 0x204, 0x64a,
+ 0x62e, 0x204, 0x64a, 0x645, 0x204, 0x64a, 0x647, 0x205,
+ 0x626, 0x645, 0x205, 0x626, 0x647, 0x205, 0x628, 0x645,
+ 0x205, 0x628, 0x647, 0x205, 0x62a, 0x645, 0x205, 0x62a,
+ 0x647, 0x205, 0x62b, 0x645, 0x205, 0x62b, 0x647, 0x205,
+ 0x633, 0x645, 0x205, 0x633, 0x647, 0x205, 0x634, 0x645,
+ 0x205, 0x634, 0x647, 0x205, 0x643, 0x644, 0x205, 0x643,
+ 0x645, 0x205, 0x644, 0x645, 0x205, 0x646, 0x645, 0x205,
+ 0x646, 0x647, 0x205, 0x64a, 0x645, 0x205, 0x64a, 0x647,
+ 0x305, 0x640, 0x64e, 0x651, 0x305, 0x640, 0x64f, 0x651,
+ 0x305, 0x640, 0x650, 0x651, 0x207, 0x637, 0x649, 0x207,
+ 0x637, 0x64a, 0x207, 0x639, 0x649, 0x207, 0x639, 0x64a,
+ 0x207, 0x63a, 0x649, 0x207, 0x63a, 0x64a, 0x207, 0x633,
+ 0x649, 0x207, 0x633, 0x64a, 0x207, 0x634, 0x649, 0x207,
+ 0x634, 0x64a, 0x207, 0x62d, 0x649, 0x207, 0x62d, 0x64a,
+ 0x207, 0x62c, 0x649, 0x207, 0x62c, 0x64a, 0x207, 0x62e,
+ 0x649, 0x207, 0x62e, 0x64a, 0x207, 0x635, 0x649, 0x207,
+ 0x635, 0x64a, 0x207, 0x636, 0x649, 0x207, 0x636, 0x64a,
+ 0x207, 0x634, 0x62c, 0x207, 0x634, 0x62d, 0x207, 0x634,
+ 0x62e, 0x207, 0x634, 0x645, 0x207, 0x634, 0x631, 0x207,
+ 0x633, 0x631, 0x207, 0x635, 0x631, 0x207, 0x636, 0x631,
+ 0x206, 0x637, 0x649, 0x206, 0x637, 0x64a, 0x206, 0x639,
+ 0x649, 0x206, 0x639, 0x64a, 0x206, 0x63a, 0x649, 0x206,
+ 0x63a, 0x64a, 0x206, 0x633, 0x649, 0x206, 0x633, 0x64a,
+ 0x206, 0x634, 0x649, 0x206, 0x634, 0x64a, 0x206, 0x62d,
+ 0x649, 0x206, 0x62d, 0x64a, 0x206, 0x62c, 0x649, 0x206,
+ 0x62c, 0x64a, 0x206, 0x62e, 0x649, 0x206, 0x62e, 0x64a,
+ 0x206, 0x635, 0x649, 0x206, 0x635, 0x64a, 0x206, 0x636,
+ 0x649, 0x206, 0x636, 0x64a, 0x206, 0x634, 0x62c, 0x206,
+ 0x634, 0x62d, 0x206, 0x634, 0x62e, 0x206, 0x634, 0x645,
+ 0x206, 0x634, 0x631, 0x206, 0x633, 0x631, 0x206, 0x635,
+ 0x631, 0x206, 0x636, 0x631, 0x204, 0x634, 0x62c, 0x204,
+ 0x634, 0x62d, 0x204, 0x634, 0x62e, 0x204, 0x634, 0x645,
+ 0x204, 0x633, 0x647, 0x204, 0x634, 0x647, 0x204, 0x637,
+ 0x645, 0x205, 0x633, 0x62c, 0x205, 0x633, 0x62d, 0x205,
+ 0x633, 0x62e, 0x205, 0x634, 0x62c, 0x205, 0x634, 0x62d,
+ 0x205, 0x634, 0x62e, 0x205, 0x637, 0x645, 0x205, 0x638,
+ 0x645, 0x206, 0x627, 0x64b, 0x207, 0x627, 0x64b, 0x304,
+ 0x62a, 0x62c, 0x645, 0x306, 0x62a, 0x62d, 0x62c, 0x304,
+ 0x62a, 0x62d, 0x62c, 0x304, 0x62a, 0x62d, 0x645, 0x304,
+ 0x62a, 0x62e, 0x645, 0x304, 0x62a, 0x645, 0x62c, 0x304,
+ 0x62a, 0x645, 0x62d, 0x304, 0x62a, 0x645, 0x62e, 0x306,
+ 0x62c, 0x645, 0x62d, 0x304, 0x62c, 0x645, 0x62d, 0x306,
+ 0x62d, 0x645, 0x64a, 0x306, 0x62d, 0x645, 0x649, 0x304,
+ 0x633, 0x62d, 0x62c, 0x304, 0x633, 0x62c, 0x62d, 0x306,
+ 0x633, 0x62c, 0x649, 0x306, 0x633, 0x645, 0x62d, 0x304,
+ 0x633, 0x645, 0x62d, 0x304, 0x633, 0x645, 0x62c, 0x306,
+ 0x633, 0x645, 0x645, 0x304, 0x633, 0x645, 0x645, 0x306,
+ 0x635, 0x62d, 0x62d, 0x304, 0x635, 0x62d, 0x62d, 0x306,
+ 0x635, 0x645, 0x645, 0x306, 0x634, 0x62d, 0x645, 0x304,
+ 0x634, 0x62d, 0x645, 0x306, 0x634, 0x62c, 0x64a, 0x306,
+ 0x634, 0x645, 0x62e, 0x304, 0x634, 0x645, 0x62e, 0x306,
+ 0x634, 0x645, 0x645, 0x304, 0x634, 0x645, 0x645, 0x306,
+ 0x636, 0x62d, 0x649, 0x306, 0x636, 0x62e, 0x645, 0x304,
+ 0x636, 0x62e, 0x645, 0x306, 0x637, 0x645, 0x62d, 0x304,
+ 0x637, 0x645, 0x62d, 0x304, 0x637, 0x645, 0x645, 0x306,
+ 0x637, 0x645, 0x64a, 0x306, 0x639, 0x62c, 0x645, 0x306,
+ 0x639, 0x645, 0x645, 0x304, 0x639, 0x645, 0x645, 0x306,
+ 0x639, 0x645, 0x649, 0x306, 0x63a, 0x645, 0x645, 0x306,
+ 0x63a, 0x645, 0x64a, 0x306, 0x63a, 0x645, 0x649, 0x306,
+ 0x641, 0x62e, 0x645, 0x304, 0x641, 0x62e, 0x645, 0x306,
+ 0x642, 0x645, 0x62d, 0x306, 0x642, 0x645, 0x645, 0x306,
+ 0x644, 0x62d, 0x645, 0x306, 0x644, 0x62d, 0x64a, 0x306,
+ 0x644, 0x62d, 0x649, 0x304, 0x644, 0x62c, 0x62c, 0x306,
+ 0x644, 0x62c, 0x62c, 0x306, 0x644, 0x62e, 0x645, 0x304,
+ 0x644, 0x62e, 0x645, 0x306, 0x644, 0x645, 0x62d, 0x304,
+ 0x644, 0x645, 0x62d, 0x304, 0x645, 0x62d, 0x62c, 0x304,
+ 0x645, 0x62d, 0x645, 0x306, 0x645, 0x62d, 0x64a, 0x304,
+ 0x645, 0x62c, 0x62d, 0x304, 0x645, 0x62c, 0x645, 0x304,
+ 0x645, 0x62e, 0x62c, 0x304, 0x645, 0x62e, 0x645, 0x304,
+ 0x645, 0x62c, 0x62e, 0x304, 0x647, 0x645, 0x62c, 0x304,
+ 0x647, 0x645, 0x645, 0x304, 0x646, 0x62d, 0x645, 0x306,
+ 0x646, 0x62d, 0x649, 0x306, 0x646, 0x62c, 0x645, 0x304,
+ 0x646, 0x62c, 0x645, 0x306, 0x646, 0x62c, 0x649, 0x306,
+ 0x646, 0x645, 0x64a, 0x306, 0x646, 0x645, 0x649, 0x306,
+ 0x64a, 0x645, 0x645, 0x304, 0x64a, 0x645, 0x645, 0x306,
+ 0x628, 0x62e, 0x64a, 0x306, 0x62a, 0x62c, 0x64a, 0x306,
+ 0x62a, 0x62c, 0x649, 0x306, 0x62a, 0x62e, 0x64a, 0x306,
+ 0x62a, 0x62e, 0x649, 0x306, 0x62a, 0x645, 0x64a, 0x306,
+ 0x62a, 0x645, 0x649, 0x306, 0x62c, 0x645, 0x64a, 0x306,
+ 0x62c, 0x62d, 0x649, 0x306, 0x62c, 0x645, 0x649, 0x306,
+ 0x633, 0x62e, 0x649, 0x306, 0x635, 0x62d, 0x64a, 0x306,
+ 0x634, 0x62d, 0x64a, 0x306, 0x636, 0x62d, 0x64a, 0x306,
+ 0x644, 0x62c, 0x64a, 0x306, 0x644, 0x645, 0x64a, 0x306,
+ 0x64a, 0x62d, 0x64a, 0x306, 0x64a, 0x62c, 0x64a, 0x306,
+ 0x64a, 0x645, 0x64a, 0x306, 0x645, 0x645, 0x64a, 0x306,
+ 0x642, 0x645, 0x64a, 0x306, 0x646, 0x62d, 0x64a, 0x304,
+ 0x642, 0x645, 0x62d, 0x304, 0x644, 0x62d, 0x645, 0x306,
+ 0x639, 0x645, 0x64a, 0x306, 0x643, 0x645, 0x64a, 0x304,
+ 0x646, 0x62c, 0x62d, 0x306, 0x645, 0x62e, 0x64a, 0x304,
+ 0x644, 0x62c, 0x645, 0x306, 0x643, 0x645, 0x645, 0x306,
+ 0x644, 0x62c, 0x645, 0x306, 0x646, 0x62c, 0x62d, 0x306,
+ 0x62c, 0x62d, 0x64a, 0x306, 0x62d, 0x62c, 0x64a, 0x306,
+ 0x645, 0x62c, 0x64a, 0x306, 0x641, 0x645, 0x64a, 0x306,
+ 0x628, 0x62d, 0x64a, 0x304, 0x643, 0x645, 0x645, 0x304,
+ 0x639, 0x62c, 0x645, 0x304, 0x635, 0x645, 0x645, 0x306,
+ 0x633, 0x62e, 0x64a, 0x306, 0x646, 0x62c, 0x64a, 0x307,
+ 0x635, 0x644, 0x6d2, 0x307, 0x642, 0x644, 0x6d2, 0x407,
+ 0x627, 0x644, 0x644, 0x647, 0x407, 0x627, 0x643, 0x628,
+ 0x631, 0x407, 0x645, 0x62d, 0x645, 0x62f, 0x407, 0x635,
+ 0x644, 0x639, 0x645, 0x407, 0x631, 0x633, 0x648, 0x644,
+ 0x407, 0x639, 0x644, 0x64a, 0x647, 0x407, 0x648, 0x633,
+ 0x644, 0x645, 0x307, 0x635, 0x644, 0x649, 0x1207, 0x635,
+ 0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20,
+ 0x639, 0x644, 0x64a, 0x647, 0x20, 0x648, 0x633, 0x644,
+ 0x645, 0x807, 0x62c, 0x644, 0x20, 0x62c, 0x644, 0x627,
+ 0x644, 0x647, 0x407, 0x631, 0x6cc, 0x627, 0x644, 0x10b,
+ 0x2c, 0x10b, 0x3001, 0x10b, 0x3002, 0x10b, 0x3a, 0x10b,
+ 0x3b, 0x10b, 0x21, 0x10b, 0x3f, 0x10b, 0x3016, 0x10b,
+ 0x3017, 0x10b, 0x2026, 0x10b, 0x2025, 0x10b, 0x2014, 0x10b,
+ 0x2013, 0x10b, 0x5f, 0x10b, 0x5f, 0x10b, 0x28, 0x10b,
+ 0x29, 0x10b, 0x7b, 0x10b, 0x7d, 0x10b, 0x3014, 0x10b,
+ 0x3015, 0x10b, 0x3010, 0x10b, 0x3011, 0x10b, 0x300a, 0x10b,
+ 0x300b, 0x10b, 0x3008, 0x10b, 0x3009, 0x10b, 0x300c, 0x10b,
+ 0x300d, 0x10b, 0x300e, 0x10b, 0x300f, 0x10b, 0x5b, 0x10b,
+ 0x5d, 0x110, 0x203e, 0x110, 0x203e, 0x110, 0x203e, 0x110,
+ 0x203e, 0x110, 0x5f, 0x110, 0x5f, 0x110, 0x5f, 0x10e,
+ 0x2c, 0x10e, 0x3001, 0x10e, 0x2e, 0x10e, 0x3b, 0x10e,
+ 0x3a, 0x10e, 0x3f, 0x10e, 0x21, 0x10e, 0x2014, 0x10e,
+ 0x28, 0x10e, 0x29, 0x10e, 0x7b, 0x10e, 0x7d, 0x10e,
+ 0x3014, 0x10e, 0x3015, 0x10e, 0x23, 0x10e, 0x26, 0x10e,
+ 0x2a, 0x10e, 0x2b, 0x10e, 0x2d, 0x10e, 0x3c, 0x10e,
+ 0x3e, 0x10e, 0x3d, 0x10e, 0x5c, 0x10e, 0x24, 0x10e,
+ 0x25, 0x10e, 0x40, 0x207, 0x20, 0x64b, 0x205, 0x640,
+ 0x64b, 0x207, 0x20, 0x64c, 0x207, 0x20, 0x64d, 0x207,
+ 0x20, 0x64e, 0x205, 0x640, 0x64e, 0x207, 0x20, 0x64f,
+ 0x205, 0x640, 0x64f, 0x207, 0x20, 0x650, 0x205, 0x640,
+ 0x650, 0x207, 0x20, 0x651, 0x205, 0x640, 0x651, 0x207,
+ 0x20, 0x652, 0x205, 0x640, 0x652, 0x107, 0x621, 0x107,
+ 0x622, 0x106, 0x622, 0x107, 0x623, 0x106, 0x623, 0x107,
+ 0x624, 0x106, 0x624, 0x107, 0x625, 0x106, 0x625, 0x107,
+ 0x626, 0x106, 0x626, 0x104, 0x626, 0x105, 0x626, 0x107,
+ 0x627, 0x106, 0x627, 0x107, 0x628, 0x106, 0x628, 0x104,
+ 0x628, 0x105, 0x628, 0x107, 0x629, 0x106, 0x629, 0x107,
+ 0x62a, 0x106, 0x62a, 0x104, 0x62a, 0x105, 0x62a, 0x107,
+ 0x62b, 0x106, 0x62b, 0x104, 0x62b, 0x105, 0x62b, 0x107,
+ 0x62c, 0x106, 0x62c, 0x104, 0x62c, 0x105, 0x62c, 0x107,
+ 0x62d, 0x106, 0x62d, 0x104, 0x62d, 0x105, 0x62d, 0x107,
+ 0x62e, 0x106, 0x62e, 0x104, 0x62e, 0x105, 0x62e, 0x107,
+ 0x62f, 0x106, 0x62f, 0x107, 0x630, 0x106, 0x630, 0x107,
+ 0x631, 0x106, 0x631, 0x107, 0x632, 0x106, 0x632, 0x107,
+ 0x633, 0x106, 0x633, 0x104, 0x633, 0x105, 0x633, 0x107,
+ 0x634, 0x106, 0x634, 0x104, 0x634, 0x105, 0x634, 0x107,
+ 0x635, 0x106, 0x635, 0x104, 0x635, 0x105, 0x635, 0x107,
+ 0x636, 0x106, 0x636, 0x104, 0x636, 0x105, 0x636, 0x107,
+ 0x637, 0x106, 0x637, 0x104, 0x637, 0x105, 0x637, 0x107,
+ 0x638, 0x106, 0x638, 0x104, 0x638, 0x105, 0x638, 0x107,
+ 0x639, 0x106, 0x639, 0x104, 0x639, 0x105, 0x639, 0x107,
+ 0x63a, 0x106, 0x63a, 0x104, 0x63a, 0x105, 0x63a, 0x107,
+ 0x641, 0x106, 0x641, 0x104, 0x641, 0x105, 0x641, 0x107,
+ 0x642, 0x106, 0x642, 0x104, 0x642, 0x105, 0x642, 0x107,
+ 0x643, 0x106, 0x643, 0x104, 0x643, 0x105, 0x643, 0x107,
+ 0x644, 0x106, 0x644, 0x104, 0x644, 0x105, 0x644, 0x107,
+ 0x645, 0x106, 0x645, 0x104, 0x645, 0x105, 0x645, 0x107,
+ 0x646, 0x106, 0x646, 0x104, 0x646, 0x105, 0x646, 0x107,
+ 0x647, 0x106, 0x647, 0x104, 0x647, 0x105, 0x647, 0x107,
+ 0x648, 0x106, 0x648, 0x107, 0x649, 0x106, 0x649, 0x107,
+ 0x64a, 0x106, 0x64a, 0x104, 0x64a, 0x105, 0x64a, 0x207,
+ 0x644, 0x622, 0x206, 0x644, 0x622, 0x207, 0x644, 0x623,
+ 0x206, 0x644, 0x623, 0x207, 0x644, 0x625, 0x206, 0x644,
+ 0x625, 0x207, 0x644, 0x627, 0x206, 0x644, 0x627, 0x10c,
+ 0x21, 0x10c, 0x22, 0x10c, 0x23, 0x10c, 0x24, 0x10c,
+ 0x25, 0x10c, 0x26, 0x10c, 0x27, 0x10c, 0x28, 0x10c,
+ 0x29, 0x10c, 0x2a, 0x10c, 0x2b, 0x10c, 0x2c, 0x10c,
+ 0x2d, 0x10c, 0x2e, 0x10c, 0x2f, 0x10c, 0x30, 0x10c,
+ 0x31, 0x10c, 0x32, 0x10c, 0x33, 0x10c, 0x34, 0x10c,
+ 0x35, 0x10c, 0x36, 0x10c, 0x37, 0x10c, 0x38, 0x10c,
+ 0x39, 0x10c, 0x3a, 0x10c, 0x3b, 0x10c, 0x3c, 0x10c,
+ 0x3d, 0x10c, 0x3e, 0x10c, 0x3f, 0x10c, 0x40, 0x10c,
+ 0x41, 0x10c, 0x42, 0x10c, 0x43, 0x10c, 0x44, 0x10c,
+ 0x45, 0x10c, 0x46, 0x10c, 0x47, 0x10c, 0x48, 0x10c,
+ 0x49, 0x10c, 0x4a, 0x10c, 0x4b, 0x10c, 0x4c, 0x10c,
+ 0x4d, 0x10c, 0x4e, 0x10c, 0x4f, 0x10c, 0x50, 0x10c,
+ 0x51, 0x10c, 0x52, 0x10c, 0x53, 0x10c, 0x54, 0x10c,
+ 0x55, 0x10c, 0x56, 0x10c, 0x57, 0x10c, 0x58, 0x10c,
+ 0x59, 0x10c, 0x5a, 0x10c, 0x5b, 0x10c, 0x5c, 0x10c,
+ 0x5d, 0x10c, 0x5e, 0x10c, 0x5f, 0x10c, 0x60, 0x10c,
+ 0x61, 0x10c, 0x62, 0x10c, 0x63, 0x10c, 0x64, 0x10c,
+ 0x65, 0x10c, 0x66, 0x10c, 0x67, 0x10c, 0x68, 0x10c,
+ 0x69, 0x10c, 0x6a, 0x10c, 0x6b, 0x10c, 0x6c, 0x10c,
+ 0x6d, 0x10c, 0x6e, 0x10c, 0x6f, 0x10c, 0x70, 0x10c,
+ 0x71, 0x10c, 0x72, 0x10c, 0x73, 0x10c, 0x74, 0x10c,
+ 0x75, 0x10c, 0x76, 0x10c, 0x77, 0x10c, 0x78, 0x10c,
+ 0x79, 0x10c, 0x7a, 0x10c, 0x7b, 0x10c, 0x7c, 0x10c,
+ 0x7d, 0x10c, 0x7e, 0x10c, 0x2985, 0x10c, 0x2986, 0x10d,
+ 0x3002, 0x10d, 0x300c, 0x10d, 0x300d, 0x10d, 0x3001, 0x10d,
+ 0x30fb, 0x10d, 0x30f2, 0x10d, 0x30a1, 0x10d, 0x30a3, 0x10d,
+ 0x30a5, 0x10d, 0x30a7, 0x10d, 0x30a9, 0x10d, 0x30e3, 0x10d,
+ 0x30e5, 0x10d, 0x30e7, 0x10d, 0x30c3, 0x10d, 0x30fc, 0x10d,
+ 0x30a2, 0x10d, 0x30a4, 0x10d, 0x30a6, 0x10d, 0x30a8, 0x10d,
+ 0x30aa, 0x10d, 0x30ab, 0x10d, 0x30ad, 0x10d, 0x30af, 0x10d,
+ 0x30b1, 0x10d, 0x30b3, 0x10d, 0x30b5, 0x10d, 0x30b7, 0x10d,
+ 0x30b9, 0x10d, 0x30bb, 0x10d, 0x30bd, 0x10d, 0x30bf, 0x10d,
+ 0x30c1, 0x10d, 0x30c4, 0x10d, 0x30c6, 0x10d, 0x30c8, 0x10d,
+ 0x30ca, 0x10d, 0x30cb, 0x10d, 0x30cc, 0x10d, 0x30cd, 0x10d,
+ 0x30ce, 0x10d, 0x30cf, 0x10d, 0x30d2, 0x10d, 0x30d5, 0x10d,
+ 0x30d8, 0x10d, 0x30db, 0x10d, 0x30de, 0x10d, 0x30df, 0x10d,
+ 0x30e0, 0x10d, 0x30e1, 0x10d, 0x30e2, 0x10d, 0x30e4, 0x10d,
+ 0x30e6, 0x10d, 0x30e8, 0x10d, 0x30e9, 0x10d, 0x30ea, 0x10d,
+ 0x30eb, 0x10d, 0x30ec, 0x10d, 0x30ed, 0x10d, 0x30ef, 0x10d,
+ 0x30f3, 0x10d, 0x3099, 0x10d, 0x309a, 0x10d, 0x3164, 0x10d,
+ 0x3131, 0x10d, 0x3132, 0x10d, 0x3133, 0x10d, 0x3134, 0x10d,
+ 0x3135, 0x10d, 0x3136, 0x10d, 0x3137, 0x10d, 0x3138, 0x10d,
+ 0x3139, 0x10d, 0x313a, 0x10d, 0x313b, 0x10d, 0x313c, 0x10d,
+ 0x313d, 0x10d, 0x313e, 0x10d, 0x313f, 0x10d, 0x3140, 0x10d,
+ 0x3141, 0x10d, 0x3142, 0x10d, 0x3143, 0x10d, 0x3144, 0x10d,
+ 0x3145, 0x10d, 0x3146, 0x10d, 0x3147, 0x10d, 0x3148, 0x10d,
+ 0x3149, 0x10d, 0x314a, 0x10d, 0x314b, 0x10d, 0x314c, 0x10d,
+ 0x314d, 0x10d, 0x314e, 0x10d, 0x314f, 0x10d, 0x3150, 0x10d,
+ 0x3151, 0x10d, 0x3152, 0x10d, 0x3153, 0x10d, 0x3154, 0x10d,
+ 0x3155, 0x10d, 0x3156, 0x10d, 0x3157, 0x10d, 0x3158, 0x10d,
+ 0x3159, 0x10d, 0x315a, 0x10d, 0x315b, 0x10d, 0x315c, 0x10d,
+ 0x315d, 0x10d, 0x315e, 0x10d, 0x315f, 0x10d, 0x3160, 0x10d,
+ 0x3161, 0x10d, 0x3162, 0x10d, 0x3163, 0x10c, 0xa2, 0x10c,
+ 0xa3, 0x10c, 0xac, 0x10c, 0xaf, 0x10c, 0xa6, 0x10c,
+ 0xa5, 0x10c, 0x20a9, 0x10d, 0x2502, 0x10d, 0x2190, 0x10d,
+ 0x2191, 0x10d, 0x2192, 0x10d, 0x2193, 0x10d, 0x25a0, 0x10d,
+ 0x25cb, 0x401, 0xd804, 0xdc99, 0xd804, 0xdcba, 0x401, 0xd804,
+ 0xdc9b, 0xd804, 0xdcba, 0x401, 0xd804, 0xdca5, 0xd804, 0xdcba,
+ 0x401, 0xd804, 0xdd31, 0xd804, 0xdd27, 0x401, 0xd804, 0xdd32,
+ 0xd804, 0xdd27, 0x401, 0xd804, 0xdf47, 0xd804, 0xdf3e, 0x401,
+ 0xd804, 0xdf47, 0xd804, 0xdf57, 0x401, 0xd805, 0xdcb9, 0xd805,
+ 0xdcba, 0x401, 0xd805, 0xdcb9, 0xd805, 0xdcb0, 0x401, 0xd805,
+ 0xdcb9, 0xd805, 0xdcbd, 0x401, 0xd805, 0xddb8, 0xd805, 0xddaf,
+ 0x401, 0xd805, 0xddb9, 0xd805, 0xddaf, 0x401, 0xd834, 0xdd57,
+ 0xd834, 0xdd65, 0x401, 0xd834, 0xdd58, 0xd834, 0xdd65, 0x401,
+ 0xd834, 0xdd5f, 0xd834, 0xdd6e, 0x401, 0xd834, 0xdd5f, 0xd834,
+ 0xdd6f, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd70, 0x401, 0xd834,
+ 0xdd5f, 0xd834, 0xdd71, 0x401, 0xd834, 0xdd5f, 0xd834, 0xdd72,
+ 0x401, 0xd834, 0xddb9, 0xd834, 0xdd65, 0x401, 0xd834, 0xddba,
+ 0xd834, 0xdd65, 0x401, 0xd834, 0xddbb, 0xd834, 0xdd6e, 0x401,
+ 0xd834, 0xddbc, 0xd834, 0xdd6e, 0x401, 0xd834, 0xddbb, 0xd834,
+ 0xdd6f, 0x401, 0xd834, 0xddbc, 0xd834, 0xdd6f, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42,
+ 0x102, 0x43, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46,
+ 0x102, 0x47, 0x102, 0x48, 0x102, 0x49, 0x102, 0x4a,
+ 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d, 0x102, 0x4e,
+ 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51, 0x102, 0x52,
+ 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56,
+ 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x43,
+ 0x102, 0x44, 0x102, 0x47, 0x102, 0x4a, 0x102, 0x4b,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x53, 0x102, 0x54, 0x102, 0x55, 0x102, 0x56,
+ 0x102, 0x57, 0x102, 0x58, 0x102, 0x59, 0x102, 0x5a,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x66, 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a,
+ 0x102, 0x6b, 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x44, 0x102, 0x45, 0x102, 0x46,
+ 0x102, 0x47, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c,
+ 0x102, 0x4d, 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50,
+ 0x102, 0x51, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x61, 0x102, 0x62, 0x102, 0x63, 0x102, 0x64,
+ 0x102, 0x65, 0x102, 0x66, 0x102, 0x67, 0x102, 0x68,
+ 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b, 0x102, 0x6c,
+ 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f, 0x102, 0x70,
+ 0x102, 0x71, 0x102, 0x72, 0x102, 0x73, 0x102, 0x74,
+ 0x102, 0x75, 0x102, 0x76, 0x102, 0x77, 0x102, 0x78,
+ 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41, 0x102, 0x42,
+ 0x102, 0x44, 0x102, 0x45, 0x102, 0x46, 0x102, 0x47,
+ 0x102, 0x49, 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c,
+ 0x102, 0x4d, 0x102, 0x4f, 0x102, 0x53, 0x102, 0x54,
+ 0x102, 0x55, 0x102, 0x56, 0x102, 0x57, 0x102, 0x58,
+ 0x102, 0x59, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x41,
+ 0x102, 0x42, 0x102, 0x43, 0x102, 0x44, 0x102, 0x45,
+ 0x102, 0x46, 0x102, 0x47, 0x102, 0x48, 0x102, 0x49,
+ 0x102, 0x4a, 0x102, 0x4b, 0x102, 0x4c, 0x102, 0x4d,
+ 0x102, 0x4e, 0x102, 0x4f, 0x102, 0x50, 0x102, 0x51,
+ 0x102, 0x52, 0x102, 0x53, 0x102, 0x54, 0x102, 0x55,
+ 0x102, 0x56, 0x102, 0x57, 0x102, 0x58, 0x102, 0x59,
+ 0x102, 0x5a, 0x102, 0x61, 0x102, 0x62, 0x102, 0x63,
+ 0x102, 0x64, 0x102, 0x65, 0x102, 0x66, 0x102, 0x67,
+ 0x102, 0x68, 0x102, 0x69, 0x102, 0x6a, 0x102, 0x6b,
+ 0x102, 0x6c, 0x102, 0x6d, 0x102, 0x6e, 0x102, 0x6f,
+ 0x102, 0x70, 0x102, 0x71, 0x102, 0x72, 0x102, 0x73,
+ 0x102, 0x74, 0x102, 0x75, 0x102, 0x76, 0x102, 0x77,
+ 0x102, 0x78, 0x102, 0x79, 0x102, 0x7a, 0x102, 0x131,
+ 0x102, 0x237, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x391,
+ 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102, 0x395,
+ 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102, 0x399,
+ 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102, 0x39d,
+ 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102, 0x3a1,
+ 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5,
+ 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9,
+ 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3,
+ 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7,
+ 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb,
+ 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102, 0x3bf,
+ 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3,
+ 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7,
+ 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102, 0x3f5,
+ 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1,
+ 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x391,
+ 0x102, 0x392, 0x102, 0x393, 0x102, 0x394, 0x102, 0x395,
+ 0x102, 0x396, 0x102, 0x397, 0x102, 0x398, 0x102, 0x399,
+ 0x102, 0x39a, 0x102, 0x39b, 0x102, 0x39c, 0x102, 0x39d,
+ 0x102, 0x39e, 0x102, 0x39f, 0x102, 0x3a0, 0x102, 0x3a1,
+ 0x102, 0x3f4, 0x102, 0x3a3, 0x102, 0x3a4, 0x102, 0x3a5,
+ 0x102, 0x3a6, 0x102, 0x3a7, 0x102, 0x3a8, 0x102, 0x3a9,
+ 0x102, 0x2207, 0x102, 0x3b1, 0x102, 0x3b2, 0x102, 0x3b3,
+ 0x102, 0x3b4, 0x102, 0x3b5, 0x102, 0x3b6, 0x102, 0x3b7,
+ 0x102, 0x3b8, 0x102, 0x3b9, 0x102, 0x3ba, 0x102, 0x3bb,
+ 0x102, 0x3bc, 0x102, 0x3bd, 0x102, 0x3be, 0x102, 0x3bf,
+ 0x102, 0x3c0, 0x102, 0x3c1, 0x102, 0x3c2, 0x102, 0x3c3,
+ 0x102, 0x3c4, 0x102, 0x3c5, 0x102, 0x3c6, 0x102, 0x3c7,
+ 0x102, 0x3c8, 0x102, 0x3c9, 0x102, 0x2202, 0x102, 0x3f5,
+ 0x102, 0x3d1, 0x102, 0x3f0, 0x102, 0x3d5, 0x102, 0x3f1,
+ 0x102, 0x3d6, 0x102, 0x391, 0x102, 0x392, 0x102, 0x393,
+ 0x102, 0x394, 0x102, 0x395, 0x102, 0x396, 0x102, 0x397,
+ 0x102, 0x398, 0x102, 0x399, 0x102, 0x39a, 0x102, 0x39b,
+ 0x102, 0x39c, 0x102, 0x39d, 0x102, 0x39e, 0x102, 0x39f,
+ 0x102, 0x3a0, 0x102, 0x3a1, 0x102, 0x3f4, 0x102, 0x3a3,
+ 0x102, 0x3a4, 0x102, 0x3a5, 0x102, 0x3a6, 0x102, 0x3a7,
+ 0x102, 0x3a8, 0x102, 0x3a9, 0x102, 0x2207, 0x102, 0x3b1,
+ 0x102, 0x3b2, 0x102, 0x3b3, 0x102, 0x3b4, 0x102, 0x3b5,
+ 0x102, 0x3b6, 0x102, 0x3b7, 0x102, 0x3b8, 0x102, 0x3b9,
+ 0x102, 0x3ba, 0x102, 0x3bb, 0x102, 0x3bc, 0x102, 0x3bd,
+ 0x102, 0x3be, 0x102, 0x3bf, 0x102, 0x3c0, 0x102, 0x3c1,
+ 0x102, 0x3c2, 0x102, 0x3c3, 0x102, 0x3c4, 0x102, 0x3c5,
+ 0x102, 0x3c6, 0x102, 0x3c7, 0x102, 0x3c8, 0x102, 0x3c9,
+ 0x102, 0x2202, 0x102, 0x3f5, 0x102, 0x3d1, 0x102, 0x3f0,
+ 0x102, 0x3d5, 0x102, 0x3f1, 0x102, 0x3d6, 0x102, 0x3dc,
+ 0x102, 0x3dd, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x30,
+ 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34,
+ 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38,
+ 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x30,
+ 0x102, 0x31, 0x102, 0x32, 0x102, 0x33, 0x102, 0x34,
+ 0x102, 0x35, 0x102, 0x36, 0x102, 0x37, 0x102, 0x38,
+ 0x102, 0x39, 0x102, 0x30, 0x102, 0x31, 0x102, 0x32,
+ 0x102, 0x33, 0x102, 0x34, 0x102, 0x35, 0x102, 0x36,
+ 0x102, 0x37, 0x102, 0x38, 0x102, 0x39, 0x102, 0x627,
+ 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x648,
+ 0x102, 0x632, 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a,
+ 0x102, 0x643, 0x102, 0x644, 0x102, 0x645, 0x102, 0x646,
+ 0x102, 0x633, 0x102, 0x639, 0x102, 0x641, 0x102, 0x635,
+ 0x102, 0x642, 0x102, 0x631, 0x102, 0x634, 0x102, 0x62a,
+ 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630, 0x102, 0x636,
+ 0x102, 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6ba,
+ 0x102, 0x6a1, 0x102, 0x66f, 0x102, 0x628, 0x102, 0x62c,
+ 0x102, 0x647, 0x102, 0x62d, 0x102, 0x64a, 0x102, 0x643,
+ 0x102, 0x644, 0x102, 0x645, 0x102, 0x646, 0x102, 0x633,
+ 0x102, 0x639, 0x102, 0x641, 0x102, 0x635, 0x102, 0x642,
+ 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e,
+ 0x102, 0x636, 0x102, 0x63a, 0x102, 0x62c, 0x102, 0x62d,
+ 0x102, 0x64a, 0x102, 0x644, 0x102, 0x646, 0x102, 0x633,
+ 0x102, 0x639, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634,
+ 0x102, 0x62e, 0x102, 0x636, 0x102, 0x63a, 0x102, 0x6ba,
+ 0x102, 0x66f, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x647,
+ 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x643,
+ 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639,
+ 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x634,
+ 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x636,
+ 0x102, 0x638, 0x102, 0x63a, 0x102, 0x66e, 0x102, 0x6a1,
+ 0x102, 0x627, 0x102, 0x628, 0x102, 0x62c, 0x102, 0x62f,
+ 0x102, 0x647, 0x102, 0x648, 0x102, 0x632, 0x102, 0x62d,
+ 0x102, 0x637, 0x102, 0x64a, 0x102, 0x644, 0x102, 0x645,
+ 0x102, 0x646, 0x102, 0x633, 0x102, 0x639, 0x102, 0x641,
+ 0x102, 0x635, 0x102, 0x642, 0x102, 0x631, 0x102, 0x634,
+ 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e, 0x102, 0x630,
+ 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a, 0x102, 0x628,
+ 0x102, 0x62c, 0x102, 0x62f, 0x102, 0x648, 0x102, 0x632,
+ 0x102, 0x62d, 0x102, 0x637, 0x102, 0x64a, 0x102, 0x644,
+ 0x102, 0x645, 0x102, 0x646, 0x102, 0x633, 0x102, 0x639,
+ 0x102, 0x641, 0x102, 0x635, 0x102, 0x642, 0x102, 0x631,
+ 0x102, 0x634, 0x102, 0x62a, 0x102, 0x62b, 0x102, 0x62e,
+ 0x102, 0x630, 0x102, 0x636, 0x102, 0x638, 0x102, 0x63a,
+ 0x210, 0x30, 0x2e, 0x210, 0x30, 0x2c, 0x210, 0x31,
+ 0x2c, 0x210, 0x32, 0x2c, 0x210, 0x33, 0x2c, 0x210,
+ 0x34, 0x2c, 0x210, 0x35, 0x2c, 0x210, 0x36, 0x2c,
+ 0x210, 0x37, 0x2c, 0x210, 0x38, 0x2c, 0x210, 0x39,
+ 0x2c, 0x310, 0x28, 0x41, 0x29, 0x310, 0x28, 0x42,
+ 0x29, 0x310, 0x28, 0x43, 0x29, 0x310, 0x28, 0x44,
+ 0x29, 0x310, 0x28, 0x45, 0x29, 0x310, 0x28, 0x46,
+ 0x29, 0x310, 0x28, 0x47, 0x29, 0x310, 0x28, 0x48,
+ 0x29, 0x310, 0x28, 0x49, 0x29, 0x310, 0x28, 0x4a,
+ 0x29, 0x310, 0x28, 0x4b, 0x29, 0x310, 0x28, 0x4c,
+ 0x29, 0x310, 0x28, 0x4d, 0x29, 0x310, 0x28, 0x4e,
+ 0x29, 0x310, 0x28, 0x4f, 0x29, 0x310, 0x28, 0x50,
+ 0x29, 0x310, 0x28, 0x51, 0x29, 0x310, 0x28, 0x52,
+ 0x29, 0x310, 0x28, 0x53, 0x29, 0x310, 0x28, 0x54,
+ 0x29, 0x310, 0x28, 0x55, 0x29, 0x310, 0x28, 0x56,
+ 0x29, 0x310, 0x28, 0x57, 0x29, 0x310, 0x28, 0x58,
+ 0x29, 0x310, 0x28, 0x59, 0x29, 0x310, 0x28, 0x5a,
+ 0x29, 0x310, 0x3014, 0x53, 0x3015, 0x108, 0x43, 0x108,
+ 0x52, 0x208, 0x43, 0x44, 0x208, 0x57, 0x5a, 0x10f,
+ 0x41, 0x10f, 0x42, 0x10f, 0x43, 0x10f, 0x44, 0x10f,
+ 0x45, 0x10f, 0x46, 0x10f, 0x47, 0x10f, 0x48, 0x10f,
+ 0x49, 0x10f, 0x4a, 0x10f, 0x4b, 0x10f, 0x4c, 0x10f,
+ 0x4d, 0x10f, 0x4e, 0x10f, 0x4f, 0x10f, 0x50, 0x10f,
+ 0x51, 0x10f, 0x52, 0x10f, 0x53, 0x10f, 0x54, 0x10f,
+ 0x55, 0x10f, 0x56, 0x10f, 0x57, 0x10f, 0x58, 0x10f,
+ 0x59, 0x10f, 0x5a, 0x20f, 0x48, 0x56, 0x20f, 0x4d,
+ 0x56, 0x20f, 0x53, 0x44, 0x20f, 0x53, 0x53, 0x30f,
+ 0x50, 0x50, 0x56, 0x20f, 0x57, 0x43, 0x209, 0x4d,
+ 0x43, 0x209, 0x4d, 0x44, 0x209, 0x4d, 0x52, 0x20f,
+ 0x44, 0x4a, 0x20f, 0x307b, 0x304b, 0x20f, 0x30b3, 0x30b3,
+ 0x10f, 0x30b5, 0x10f, 0x624b, 0x10f, 0x5b57, 0x10f, 0x53cc,
+ 0x10f, 0x30c7, 0x10f, 0x4e8c, 0x10f, 0x591a, 0x10f, 0x89e3,
+ 0x10f, 0x5929, 0x10f, 0x4ea4, 0x10f, 0x6620, 0x10f, 0x7121,
+ 0x10f, 0x6599, 0x10f, 0x524d, 0x10f, 0x5f8c, 0x10f, 0x518d,
+ 0x10f, 0x65b0, 0x10f, 0x521d, 0x10f, 0x7d42, 0x10f, 0x751f,
+ 0x10f, 0x8ca9, 0x10f, 0x58f0, 0x10f, 0x5439, 0x10f, 0x6f14,
+ 0x10f, 0x6295, 0x10f, 0x6355, 0x10f, 0x4e00, 0x10f, 0x4e09,
+ 0x10f, 0x904a, 0x10f, 0x5de6, 0x10f, 0x4e2d, 0x10f, 0x53f3,
+ 0x10f, 0x6307, 0x10f, 0x8d70, 0x10f, 0x6253, 0x10f, 0x7981,
+ 0x10f, 0x7a7a, 0x10f, 0x5408, 0x10f, 0x6e80, 0x10f, 0x6709,
+ 0x10f, 0x6708, 0x10f, 0x7533, 0x10f, 0x5272, 0x10f, 0x55b6,
+ 0x10f, 0x914d, 0x310, 0x3014, 0x672c, 0x3015, 0x310, 0x3014,
+ 0x4e09, 0x3015, 0x310, 0x3014, 0x4e8c, 0x3015, 0x310, 0x3014,
+ 0x5b89, 0x3015, 0x310, 0x3014, 0x70b9, 0x3015, 0x310, 0x3014,
+ 0x6253, 0x3015, 0x310, 0x3014, 0x76d7, 0x3015, 0x310, 0x3014,
+ 0x52dd, 0x3015, 0x310, 0x3014, 0x6557, 0x3015, 0x108, 0x5f97,
+ 0x108, 0x53ef, 0x101, 0x4e3d, 0x101, 0x4e38, 0x101, 0x4e41,
+ 0x201, 0xd840, 0xdd22, 0x101, 0x4f60, 0x101, 0x4fae, 0x101,
+ 0x4fbb, 0x101, 0x5002, 0x101, 0x507a, 0x101, 0x5099, 0x101,
+ 0x50e7, 0x101, 0x50cf, 0x101, 0x349e, 0x201, 0xd841, 0xde3a,
+ 0x101, 0x514d, 0x101, 0x5154, 0x101, 0x5164, 0x101, 0x5177,
+ 0x201, 0xd841, 0xdd1c, 0x101, 0x34b9, 0x101, 0x5167, 0x101,
+ 0x518d, 0x201, 0xd841, 0xdd4b, 0x101, 0x5197, 0x101, 0x51a4,
+ 0x101, 0x4ecc, 0x101, 0x51ac, 0x101, 0x51b5, 0x201, 0xd864,
+ 0xdddf, 0x101, 0x51f5, 0x101, 0x5203, 0x101, 0x34df, 0x101,
+ 0x523b, 0x101, 0x5246, 0x101, 0x5272, 0x101, 0x5277, 0x101,
+ 0x3515, 0x101, 0x52c7, 0x101, 0x52c9, 0x101, 0x52e4, 0x101,
+ 0x52fa, 0x101, 0x5305, 0x101, 0x5306, 0x101, 0x5317, 0x101,
+ 0x5349, 0x101, 0x5351, 0x101, 0x535a, 0x101, 0x5373, 0x101,
+ 0x537d, 0x101, 0x537f, 0x101, 0x537f, 0x101, 0x537f, 0x201,
+ 0xd842, 0xde2c, 0x101, 0x7070, 0x101, 0x53ca, 0x101, 0x53df,
+ 0x201, 0xd842, 0xdf63, 0x101, 0x53eb, 0x101, 0x53f1, 0x101,
+ 0x5406, 0x101, 0x549e, 0x101, 0x5438, 0x101, 0x5448, 0x101,
+ 0x5468, 0x101, 0x54a2, 0x101, 0x54f6, 0x101, 0x5510, 0x101,
+ 0x5553, 0x101, 0x5563, 0x101, 0x5584, 0x101, 0x5584, 0x101,
+ 0x5599, 0x101, 0x55ab, 0x101, 0x55b3, 0x101, 0x55c2, 0x101,
+ 0x5716, 0x101, 0x5606, 0x101, 0x5717, 0x101, 0x5651, 0x101,
+ 0x5674, 0x101, 0x5207, 0x101, 0x58ee, 0x101, 0x57ce, 0x101,
+ 0x57f4, 0x101, 0x580d, 0x101, 0x578b, 0x101, 0x5832, 0x101,
+ 0x5831, 0x101, 0x58ac, 0x201, 0xd845, 0xdce4, 0x101, 0x58f2,
+ 0x101, 0x58f7, 0x101, 0x5906, 0x101, 0x591a, 0x101, 0x5922,
+ 0x101, 0x5962, 0x201, 0xd845, 0xdea8, 0x201, 0xd845, 0xdeea,
+ 0x101, 0x59ec, 0x101, 0x5a1b, 0x101, 0x5a27, 0x101, 0x59d8,
+ 0x101, 0x5a66, 0x101, 0x36ee, 0x101, 0x36fc, 0x101, 0x5b08,
+ 0x101, 0x5b3e, 0x101, 0x5b3e, 0x201, 0xd846, 0xddc8, 0x101,
+ 0x5bc3, 0x101, 0x5bd8, 0x101, 0x5be7, 0x101, 0x5bf3, 0x201,
+ 0xd846, 0xdf18, 0x101, 0x5bff, 0x101, 0x5c06, 0x101, 0x5f53,
+ 0x101, 0x5c22, 0x101, 0x3781, 0x101, 0x5c60, 0x101, 0x5c6e,
+ 0x101, 0x5cc0, 0x101, 0x5c8d, 0x201, 0xd847, 0xdde4, 0x101,
+ 0x5d43, 0x201, 0xd847, 0xdde6, 0x101, 0x5d6e, 0x101, 0x5d6b,
+ 0x101, 0x5d7c, 0x101, 0x5de1, 0x101, 0x5de2, 0x101, 0x382f,
+ 0x101, 0x5dfd, 0x101, 0x5e28, 0x101, 0x5e3d, 0x101, 0x5e69,
+ 0x101, 0x3862, 0x201, 0xd848, 0xdd83, 0x101, 0x387c, 0x101,
+ 0x5eb0, 0x101, 0x5eb3, 0x101, 0x5eb6, 0x101, 0x5eca, 0x201,
+ 0xd868, 0xdf92, 0x101, 0x5efe, 0x201, 0xd848, 0xdf31, 0x201,
+ 0xd848, 0xdf31, 0x101, 0x8201, 0x101, 0x5f22, 0x101, 0x5f22,
+ 0x101, 0x38c7, 0x201, 0xd84c, 0xdeb8, 0x201, 0xd858, 0xddda,
+ 0x101, 0x5f62, 0x101, 0x5f6b, 0x101, 0x38e3, 0x101, 0x5f9a,
+ 0x101, 0x5fcd, 0x101, 0x5fd7, 0x101, 0x5ff9, 0x101, 0x6081,
+ 0x101, 0x393a, 0x101, 0x391c, 0x101, 0x6094, 0x201, 0xd849,
+ 0xded4, 0x101, 0x60c7, 0x101, 0x6148, 0x101, 0x614c, 0x101,
+ 0x614e, 0x101, 0x614c, 0x101, 0x617a, 0x101, 0x618e, 0x101,
+ 0x61b2, 0x101, 0x61a4, 0x101, 0x61af, 0x101, 0x61de, 0x101,
+ 0x61f2, 0x101, 0x61f6, 0x101, 0x6210, 0x101, 0x621b, 0x101,
+ 0x625d, 0x101, 0x62b1, 0x101, 0x62d4, 0x101, 0x6350, 0x201,
+ 0xd84a, 0xdf0c, 0x101, 0x633d, 0x101, 0x62fc, 0x101, 0x6368,
+ 0x101, 0x6383, 0x101, 0x63e4, 0x201, 0xd84a, 0xdff1, 0x101,
+ 0x6422, 0x101, 0x63c5, 0x101, 0x63a9, 0x101, 0x3a2e, 0x101,
+ 0x6469, 0x101, 0x647e, 0x101, 0x649d, 0x101, 0x6477, 0x101,
+ 0x3a6c, 0x101, 0x654f, 0x101, 0x656c, 0x201, 0xd84c, 0xdc0a,
+ 0x101, 0x65e3, 0x101, 0x66f8, 0x101, 0x6649, 0x101, 0x3b19,
+ 0x101, 0x6691, 0x101, 0x3b08, 0x101, 0x3ae4, 0x101, 0x5192,
+ 0x101, 0x5195, 0x101, 0x6700, 0x101, 0x669c, 0x101, 0x80ad,
+ 0x101, 0x43d9, 0x101, 0x6717, 0x101, 0x671b, 0x101, 0x6721,
+ 0x101, 0x675e, 0x101, 0x6753, 0x201, 0xd84c, 0xdfc3, 0x101,
+ 0x3b49, 0x101, 0x67fa, 0x101, 0x6785, 0x101, 0x6852, 0x101,
+ 0x6885, 0x201, 0xd84d, 0xdc6d, 0x101, 0x688e, 0x101, 0x681f,
+ 0x101, 0x6914, 0x101, 0x3b9d, 0x101, 0x6942, 0x101, 0x69a3,
+ 0x101, 0x69ea, 0x101, 0x6aa8, 0x201, 0xd84d, 0xdea3, 0x101,
+ 0x6adb, 0x101, 0x3c18, 0x101, 0x6b21, 0x201, 0xd84e, 0xdca7,
+ 0x101, 0x6b54, 0x101, 0x3c4e, 0x101, 0x6b72, 0x101, 0x6b9f,
+ 0x101, 0x6bba, 0x101, 0x6bbb, 0x201, 0xd84e, 0xde8d, 0x201,
+ 0xd847, 0xdd0b, 0x201, 0xd84e, 0xdefa, 0x101, 0x6c4e, 0x201,
+ 0xd84f, 0xdcbc, 0x101, 0x6cbf, 0x101, 0x6ccd, 0x101, 0x6c67,
+ 0x101, 0x6d16, 0x101, 0x6d3e, 0x101, 0x6d77, 0x101, 0x6d41,
+ 0x101, 0x6d69, 0x101, 0x6d78, 0x101, 0x6d85, 0x201, 0xd84f,
+ 0xdd1e, 0x101, 0x6d34, 0x101, 0x6e2f, 0x101, 0x6e6e, 0x101,
+ 0x3d33, 0x101, 0x6ecb, 0x101, 0x6ec7, 0x201, 0xd84f, 0xded1,
+ 0x101, 0x6df9, 0x101, 0x6f6e, 0x201, 0xd84f, 0xdf5e, 0x201,
+ 0xd84f, 0xdf8e, 0x101, 0x6fc6, 0x101, 0x7039, 0x101, 0x701e,
+ 0x101, 0x701b, 0x101, 0x3d96, 0x101, 0x704a, 0x101, 0x707d,
+ 0x101, 0x7077, 0x101, 0x70ad, 0x201, 0xd841, 0xdd25, 0x101,
+ 0x7145, 0x201, 0xd850, 0xde63, 0x101, 0x719c, 0x201, 0xd850,
+ 0xdfab, 0x101, 0x7228, 0x101, 0x7235, 0x101, 0x7250, 0x201,
+ 0xd851, 0xde08, 0x101, 0x7280, 0x101, 0x7295, 0x201, 0xd851,
+ 0xdf35, 0x201, 0xd852, 0xdc14, 0x101, 0x737a, 0x101, 0x738b,
+ 0x101, 0x3eac, 0x101, 0x73a5, 0x101, 0x3eb8, 0x101, 0x3eb8,
+ 0x101, 0x7447, 0x101, 0x745c, 0x101, 0x7471, 0x101, 0x7485,
+ 0x101, 0x74ca, 0x101, 0x3f1b, 0x101, 0x7524, 0x201, 0xd853,
+ 0xdc36, 0x101, 0x753e, 0x201, 0xd853, 0xdc92, 0x101, 0x7570,
+ 0x201, 0xd848, 0xdd9f, 0x101, 0x7610, 0x201, 0xd853, 0xdfa1,
+ 0x201, 0xd853, 0xdfb8, 0x201, 0xd854, 0xdc44, 0x101, 0x3ffc,
+ 0x101, 0x4008, 0x101, 0x76f4, 0x201, 0xd854, 0xdcf3, 0x201,
+ 0xd854, 0xdcf2, 0x201, 0xd854, 0xdd19, 0x201, 0xd854, 0xdd33,
+ 0x101, 0x771e, 0x101, 0x771f, 0x101, 0x771f, 0x101, 0x774a,
+ 0x101, 0x4039, 0x101, 0x778b, 0x101, 0x4046, 0x101, 0x4096,
+ 0x201, 0xd855, 0xdc1d, 0x101, 0x784e, 0x101, 0x788c, 0x101,
+ 0x78cc, 0x101, 0x40e3, 0x201, 0xd855, 0xde26, 0x101, 0x7956,
+ 0x201, 0xd855, 0xde9a, 0x201, 0xd855, 0xdec5, 0x101, 0x798f,
+ 0x101, 0x79eb, 0x101, 0x412f, 0x101, 0x7a40, 0x101, 0x7a4a,
+ 0x101, 0x7a4f, 0x201, 0xd856, 0xdd7c, 0x201, 0xd856, 0xdea7,
+ 0x201, 0xd856, 0xdea7, 0x101, 0x7aee, 0x101, 0x4202, 0x201,
+ 0xd856, 0xdfab, 0x101, 0x7bc6, 0x101, 0x7bc9, 0x101, 0x4227,
+ 0x201, 0xd857, 0xdc80, 0x101, 0x7cd2, 0x101, 0x42a0, 0x101,
+ 0x7ce8, 0x101, 0x7ce3, 0x101, 0x7d00, 0x201, 0xd857, 0xdf86,
+ 0x101, 0x7d63, 0x101, 0x4301, 0x101, 0x7dc7, 0x101, 0x7e02,
+ 0x101, 0x7e45, 0x101, 0x4334, 0x201, 0xd858, 0xde28, 0x201,
+ 0xd858, 0xde47, 0x101, 0x4359, 0x201, 0xd858, 0xded9, 0x101,
+ 0x7f7a, 0x201, 0xd858, 0xdf3e, 0x101, 0x7f95, 0x101, 0x7ffa,
+ 0x101, 0x8005, 0x201, 0xd859, 0xdcda, 0x201, 0xd859, 0xdd23,
+ 0x101, 0x8060, 0x201, 0xd859, 0xdda8, 0x101, 0x8070, 0x201,
+ 0xd84c, 0xdf5f, 0x101, 0x43d5, 0x101, 0x80b2, 0x101, 0x8103,
+ 0x101, 0x440b, 0x101, 0x813e, 0x101, 0x5ab5, 0x201, 0xd859,
+ 0xdfa7, 0x201, 0xd859, 0xdfb5, 0x201, 0xd84c, 0xdf93, 0x201,
+ 0xd84c, 0xdf9c, 0x101, 0x8201, 0x101, 0x8204, 0x101, 0x8f9e,
+ 0x101, 0x446b, 0x101, 0x8291, 0x101, 0x828b, 0x101, 0x829d,
+ 0x101, 0x52b3, 0x101, 0x82b1, 0x101, 0x82b3, 0x101, 0x82bd,
+ 0x101, 0x82e6, 0x201, 0xd85a, 0xdf3c, 0x101, 0x82e5, 0x101,
+ 0x831d, 0x101, 0x8363, 0x101, 0x83ad, 0x101, 0x8323, 0x101,
+ 0x83bd, 0x101, 0x83e7, 0x101, 0x8457, 0x101, 0x8353, 0x101,
+ 0x83ca, 0x101, 0x83cc, 0x101, 0x83dc, 0x201, 0xd85b, 0xdc36,
+ 0x201, 0xd85b, 0xdd6b, 0x201, 0xd85b, 0xdcd5, 0x101, 0x452b,
+ 0x101, 0x84f1, 0x101, 0x84f3, 0x101, 0x8516, 0x201, 0xd85c,
+ 0xdfca, 0x101, 0x8564, 0x201, 0xd85b, 0xdf2c, 0x101, 0x455d,
+ 0x101, 0x4561, 0x201, 0xd85b, 0xdfb1, 0x201, 0xd85c, 0xdcd2,
+ 0x101, 0x456b, 0x101, 0x8650, 0x101, 0x865c, 0x101, 0x8667,
+ 0x101, 0x8669, 0x101, 0x86a9, 0x101, 0x8688, 0x101, 0x870e,
+ 0x101, 0x86e2, 0x101, 0x8779, 0x101, 0x8728, 0x101, 0x876b,
+ 0x101, 0x8786, 0x101, 0x45d7, 0x101, 0x87e1, 0x101, 0x8801,
+ 0x101, 0x45f9, 0x101, 0x8860, 0x101, 0x8863, 0x201, 0xd85d,
+ 0xde67, 0x101, 0x88d7, 0x101, 0x88de, 0x101, 0x4635, 0x101,
+ 0x88fa, 0x101, 0x34bb, 0x201, 0xd85e, 0xdcae, 0x201, 0xd85e,
+ 0xdd66, 0x101, 0x46be, 0x101, 0x46c7, 0x101, 0x8aa0, 0x101,
+ 0x8aed, 0x101, 0x8b8a, 0x101, 0x8c55, 0x201, 0xd85f, 0xdca8,
+ 0x101, 0x8cab, 0x101, 0x8cc1, 0x101, 0x8d1b, 0x101, 0x8d77,
+ 0x201, 0xd85f, 0xdf2f, 0x201, 0xd842, 0xdc04, 0x101, 0x8dcb,
+ 0x101, 0x8dbc, 0x101, 0x8df0, 0x201, 0xd842, 0xdcde, 0x101,
+ 0x8ed4, 0x101, 0x8f38, 0x201, 0xd861, 0xddd2, 0x201, 0xd861,
+ 0xdded, 0x101, 0x9094, 0x101, 0x90f1, 0x101, 0x9111, 0x201,
+ 0xd861, 0xdf2e, 0x101, 0x911b, 0x101, 0x9238, 0x101, 0x92d7,
+ 0x101, 0x92d8, 0x101, 0x927c, 0x101, 0x93f9, 0x101, 0x9415,
+ 0x201, 0xd862, 0xdffa, 0x101, 0x958b, 0x101, 0x4995, 0x101,
+ 0x95b7, 0x201, 0xd863, 0xdd77, 0x101, 0x49e6, 0x101, 0x96c3,
+ 0x101, 0x5db2, 0x101, 0x9723, 0x201, 0xd864, 0xdd45, 0x201,
+ 0xd864, 0xde1a, 0x101, 0x4a6e, 0x101, 0x4a76, 0x101, 0x97e0,
+ 0x201, 0xd865, 0xdc0a, 0x101, 0x4ab2, 0x201, 0xd865, 0xdc96,
+ 0x101, 0x980b, 0x101, 0x980b, 0x101, 0x9829, 0x201, 0xd865,
+ 0xddb6, 0x101, 0x98e2, 0x101, 0x4b33, 0x101, 0x9929, 0x101,
+ 0x99a7, 0x101, 0x99c2, 0x101, 0x99fe, 0x101, 0x4bce, 0x201,
+ 0xd866, 0xdf30, 0x101, 0x9b12, 0x101, 0x9c40, 0x101, 0x9cfd,
+ 0x101, 0x4cce, 0x101, 0x4ced, 0x101, 0x9d67, 0x201, 0xd868,
+ 0xdcce, 0x101, 0x4cf8, 0x201, 0xd868, 0xdd05, 0x201, 0xd868,
+ 0xde0e, 0x201, 0xd868, 0xde91, 0x101, 0x9ebb, 0x101, 0x4d56,
+ 0x101, 0x9ef9, 0x101, 0x9efe, 0x101, 0x9f05, 0x101, 0x9f0f,
+ 0x101, 0x9f16, 0x101, 0x9f3b, 0x201, 0xd869, 0xde00
};
static const unsigned short uc_ligature_trie[] = {
diff --git a/src/corelib/text/qunicodetables_p.h b/src/corelib/text/qunicodetables_p.h
index c453ef53e7..79878a859f 100644
--- a/src/corelib/text/qunicodetables_p.h
+++ b/src/corelib/text/qunicodetables_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -37,7 +37,7 @@
**
****************************************************************************/
-/* This file is autogenerated from the Unicode 10.0 database. Do not edit */
+/* This file is autogenerated from the Unicode 12.1 database. Do not edit */
//
// W A R N I N G
@@ -59,7 +59,7 @@
QT_BEGIN_NAMESPACE
-#define UNICODE_DATA_VERSION QChar::Unicode_10_0
+#define UNICODE_DATA_VERSION QChar::Unicode_12_1
namespace QUnicodeTables {
@@ -148,6 +148,7 @@ enum WordBreakClass {
WordBreak_E_Modifier,
WordBreak_Glue_After_Zwj,
WordBreak_E_Base_GAZ,
+ WordBreak_WSegSpace,
NumWordBreakClasses,
};
diff --git a/src/corelib/text/qunicodetools.cpp b/src/corelib/text/qunicodetools.cpp
index 08e1146c59..0db3dc74c6 100644
--- a/src/corelib/text/qunicodetools.cpp
+++ b/src/corelib/text/qunicodetools.cpp
@@ -164,29 +164,30 @@ enum Action {
};
static const uchar breakTable[QUnicodeTables::NumWordBreakClasses][QUnicodeTables::NumWordBreakClasses] = {
-// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet E_Base E_Mod GAZ EBG
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
- { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
- { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, NoBreak }, // ZWJ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break , Break }, // Katakana
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break }, // HebrewLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break }, // ALetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break , Break , Break , Break }, // Numeric
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break , Break , Break , Break }, // ExtendNumLet
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break }, // E_Base
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_Mod
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ
- { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break }, // EBG
+// Any CR LF Newline Extend ZWJ Format RI Katakana HLetter ALetter SQuote DQuote MidNumLet MidLetter MidNum Numeric ExtNumLet E_Base E_Mod GAZ EBG WSeg
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Any
+ { Break , Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // CR
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // LF
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Newline
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Extend
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, NoBreak, Break }, // ZWJ
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // Format
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // RegionalIndicator
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break , Break , Break }, // Katakana
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Lookup , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // HebrewLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, LookupW, Break , LookupW, LookupW, Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ALetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // SingleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // DoubleQuote
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidLetter
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // MidNum
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , NoBreak, NoBreak, Lookup , Break , Lookup , Break , Lookup , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // Numeric
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , NoBreak, NoBreak, Break , Break , Break , Break , Break }, // ExtendNumLet
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // E_Base
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // E_Mod
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // GAZ
+ { Break , Break , Break , Break , NoBreak, NoBreak, NoBreak, Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , NoBreak, Break , Break , Break }, // EBG
+ { Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break , Break }, // WSeg
};
} // namespace WB
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 9fd1dd059d..6a59043881 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -844,7 +844,7 @@ bool QThread::event(QEvent* event)
return QObject::event(event);
}
-Qt::HANDLE QThread::currentThreadId() noexcept
+Qt::HANDLE QThread::currentThreadIdImpl() noexcept
{
return Qt::HANDLE(currentThread());
}
@@ -919,6 +919,16 @@ QThreadPrivate::~QThreadPrivate()
delete data;
}
+void QThread::setStackSize(uint stackSize)
+{
+ Q_UNUSED(stackSize);
+}
+
+uint QThread::stackSize() const
+{
+ return 0;
+}
+
#endif // QT_CONFIG(thread)
/*!
diff --git a/src/corelib/thread/qthread.h b/src/corelib/thread/qthread.h
index c7a6dc8f1a..8141f945b6 100644
--- a/src/corelib/thread/qthread.h
+++ b/src/corelib/thread/qthread.h
@@ -161,6 +161,7 @@ private:
#if QT_CONFIG(cxx11_future)
static QThread *createThreadImpl(std::future<void> &&future);
#endif
+ static Qt::HANDLE currentThreadIdImpl() noexcept Q_DECL_PURE_FUNCTION;
friend class QCoreApplication;
friend class QThreadData;
@@ -236,6 +237,38 @@ QThread *QThread::create(Function &&f)
#endif // QT_CONFIG(cxx11_future)
+/*
+ On architectures and platforms we know, interpret the thread control
+ block (TCB) as a unique identifier for a thread within a process. Otherwise,
+ fall back to a slower but safe implementation.
+
+ As per the documentation of currentThreadId, we return an opaque handle
+ as a thread identifier, and application code is not supposed to use that
+ value for anything. In Qt we use the handle to check if threads are identical,
+ for which the TCB is sufficient.
+
+ So we use the fastest possible way, rathern than spend time on returning
+ some pseudo-interoperable value.
+*/
+inline Qt::HANDLE QThread::currentThreadId() noexcept
+{
+ Qt::HANDLE tid; // typedef to void*
+ Q_STATIC_ASSERT(sizeof(tid) == sizeof(void*));
+ // See https://akkadia.org/drepper/tls.pdf for x86 ABI
+#if defined(Q_PROCESSOR_X86_32) && defined(Q_OS_LINUX) // x86 32-bit always uses GS
+ __asm__("movl %%gs:0, %0" : "=r" (tid) : : );
+#elif defined(Q_PROCESSOR_X86_64) && defined(Q_OS_DARWIN64)
+ // 64bit macOS uses GS, see https://github.com/apple/darwin-xnu/blob/master/libsyscall/os/tsd.h
+ __asm__("movq %%gs:0, %0" : "=r" (tid) : : );
+#elif defined(Q_PROCESSOR_X86_64) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD))
+ // x86_64 Linux, BSD uses FS
+ __asm__("movq %%fs:0, %0" : "=r" (tid) : : );
+#else
+ tid = currentThreadIdImpl();
+#endif
+ return tid;
+}
+
QT_END_NAMESPACE
#endif // QTHREAD_H
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index cb3c0d6bb1..21abe372eb 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -415,16 +415,36 @@ void QThreadPrivate::finish(void *arg)
}
-
-
/**************************************************************************
** QThread
*************************************************************************/
-Qt::HANDLE QThread::currentThreadId() noexcept
+/*
+ Since each thread is guaranteed to have its own copy of
+ currenThreadData, the address is guaranteed to be unique for each
+ running thread (but likely to be reused for newly started threads).
+
+ CI tests fails on ARM architectures if we try to use the assembler,
+ or the address of the thread_local (even with a recent gcc version), so
+ stick to the pthread version there. The assembler would be
+
+ // http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Babeihid.html
+ asm volatile ("mrc p15, 0, %0, c13, c0, 3" : "=r" (tid));
+
+ and
+
+ // see glibc/sysdeps/aarch64/nptl/tls.h
+ asm volatile ("mrs %0, tpidr_el0" : "=r" (tid));
+
+ for 32 and 64bit versions, respectively.
+*/
+Qt::HANDLE QThread::currentThreadIdImpl() noexcept
{
- // requires a C cast here otherwise we run into trouble on AIX
+#if defined(Q_PROCESSOR_ARM)
return to_HANDLE(pthread_self());
+#else
+ return &currentThreadData;
+#endif
}
#if defined(QT_LINUXBASE) && !defined(_SC_NPROCESSORS_ONLN)
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index a72df2fc40..996bcf0a71 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -449,7 +449,7 @@ void QThreadPrivate::finish(void *arg, bool lockAnyway) noexcept
** QThread
*************************************************************************/
-Qt::HANDLE QThread::currentThreadId() noexcept
+Qt::HANDLE QThread::currentThreadIdImpl() noexcept
{
return reinterpret_cast<Qt::HANDLE>(quintptr(GetCurrentThreadId()));
}
diff --git a/src/corelib/time/qdatetimeparser_p.h b/src/corelib/time/qdatetimeparser_p.h
index e9f1455380..d128e35ddc 100644
--- a/src/corelib/time/qdatetimeparser_p.h
+++ b/src/corelib/time/qdatetimeparser_p.h
@@ -77,7 +77,6 @@ QT_BEGIN_NAMESPACE
class Q_CORE_EXPORT QDateTimeParser
{
- Q_DECLARE_TR_FUNCTIONS(QDateTimeParser)
public:
enum Context {
FromString,
@@ -267,10 +266,11 @@ protected: // for the benefit of QDateTimeEditPrivate
return skipToNextSection(section, current, QStringRef(&sectionText));
}
QString stateName(State s) const;
+ QString getAmPmText(AmPm ap, Case cs) const;
+
virtual QDateTime getMinimum() const;
virtual QDateTime getMaximum() const;
virtual int cursorPosition() const { return -1; }
- virtual QString getAmPmText(AmPm ap, Case cs) const;
virtual QLocale locale() const { return defaultLocale; }
mutable int currentSectionIndex;
diff --git a/src/corelib/time/qhijricalendar_data_p.h b/src/corelib/time/qhijricalendar_data_p.h
index 3900e1a477..66039e9e5d 100644
--- a/src/corelib/time/qhijricalendar_data_p.h
+++ b/src/corelib/time/qhijricalendar_data_p.h
@@ -59,8 +59,8 @@ QT_BEGIN_NAMESPACE
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2019-05-27 from the
- Common Locale Data Repository v35.1
+ This part of the file was generated on 2019-10-24 from the
+ Common Locale Data Repository v36
http://www.unicode.org/cldr/
@@ -71,591 +71,598 @@ QT_BEGIN_NAMESPACE
static const QCalendarLocale locale_data[] = {
// lang script terr sShort sLong sNarrow short long narrow
- { 1, 0, 0,{ 0,87 },{ 87,107 },{ 194,29 },{ 0,87 },{ 87,107 },{ 194,29 }}, // C/AnyScript/AnyCountry
- { 3, 7, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Oromo/Latin/Ethiopia
- { 3, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Oromo/Latin/Kenya
- { 4, 7, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Afar/Latin/Ethiopia
- { 5, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Afrikaans/Latin/South Africa
- { 5, 7, 148,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Afrikaans/Latin/Namibia
- { 6, 7, 2,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Albanian/Latin/Albania
- { 6, 7, 127,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Albanian/Latin/Macedonia
- { 6, 7, 257,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Albanian/Latin/Kosovo
- { 7, 14, 69,{ 223,79 },{ 329,75 },{ 302,27 },{ 223,79 },{ 329,75 },{ 302,27 }}, // Amharic/Ethiopic/Ethiopia
- { 8, 1, 64,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Egypt
- { 8, 1, 3,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Algeria
- { 8, 1, 17,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Bahrain
- { 8, 1, 42,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Chad
- { 8, 1, 48,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Comoros
- { 8, 1, 59,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Djibouti
- { 8, 1, 67,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Eritrea
- { 8, 1, 103,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Iraq
- { 8, 1, 105,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Israel
- { 8, 1, 109,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Jordan
- { 8, 1, 115,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Kuwait
- { 8, 1, 119,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Lebanon
- { 8, 1, 122,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Libya
- { 8, 1, 136,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Mauritania
- { 8, 1, 145,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Morocco
- { 8, 1, 162,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Oman
- { 8, 1, 165,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Palestinian Territories
- { 8, 1, 175,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Qatar
- { 8, 1, 186,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Saudi Arabia
- { 8, 1, 194,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Somalia
- { 8, 1, 201,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Sudan
- { 8, 1, 207,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Syria
- { 8, 1, 216,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Tunisia
- { 8, 1, 223,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/United Arab Emirates
- { 8, 1, 236,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Western Sahara
- { 8, 1, 237,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/Yemen
- { 8, 1, 254,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/South Sudan
- { 8, 1, 260,{ 404,97 },{ 404,97 },{ 501,27 },{ 404,97 },{ 404,97 },{ 501,27 }}, // Arabic/Arabic/World
- { 9, 10, 11,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Armenian/Armenian/Armenia
- { 10, 11, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Assamese/Bengali/India
- { 12, 7, 15,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Azerbaijani/Latin/Azerbaijan
- { 12, 1, 102,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Azerbaijani/Arabic/Iran
- { 12, 2, 15,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Azerbaijani/Cyrillic/Azerbaijan
- { 13, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bashkir/Cyrillic/Russia
- { 14, 7, 197,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Basque/Latin/Spain
- { 15, 11, 18,{ 528,105 },{ 528,105 },{ 633,27 },{ 528,105 },{ 528,105 },{ 633,27 }}, // Bengali/Bengali/Bangladesh
- { 15, 11, 100,{ 528,105 },{ 528,105 },{ 633,27 },{ 528,105 },{ 528,105 },{ 633,27 }}, // Bengali/Bengali/India
- { 16, 31, 25,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Dzongkha/Tibetan/Bhutan
- { 19, 7, 74,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Breton/Latin/France
- { 20, 2, 33,{ 223,79 },{ 660,97 },{ 302,27 },{ 223,79 },{ 660,97 },{ 302,27 }}, // Bulgarian/Cyrillic/Bulgaria
- { 21, 25, 147,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Burmese/Myanmar/Myanmar
- { 22, 2, 20,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Belarusian/Cyrillic/Belarus
- { 23, 20, 36,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Khmer/Khmer/Cambodia
- { 24, 7, 197,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Catalan/Latin/Spain
- { 24, 7, 5,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Catalan/Latin/Andorra
- { 24, 7, 74,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Catalan/Latin/France
- { 24, 7, 106,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Catalan/Latin/Italy
- { 25, 5, 44,{ 757,39 },{ 796,38 },{ 302,27 },{ 757,39 },{ 796,38 },{ 302,27 }}, // Chinese/Simplified Han/China
- { 25, 5, 97,{ 757,39 },{ 796,38 },{ 302,27 },{ 757,39 },{ 796,38 },{ 302,27 }}, // Chinese/Simplified Han/Hong Kong
- { 25, 5, 126,{ 757,39 },{ 796,38 },{ 302,27 },{ 757,39 },{ 796,38 },{ 302,27 }}, // Chinese/Simplified Han/Macau
- { 25, 5, 190,{ 757,39 },{ 796,38 },{ 302,27 },{ 757,39 },{ 796,38 },{ 302,27 }}, // Chinese/Simplified Han/Singapore
- { 25, 6, 97,{ 834,72 },{ 834,72 },{ 302,27 },{ 834,72 },{ 834,72 },{ 302,27 }}, // Chinese/Traditional Han/Hong Kong
- { 25, 6, 126,{ 834,72 },{ 834,72 },{ 302,27 },{ 834,72 },{ 834,72 },{ 302,27 }}, // Chinese/Traditional Han/Macau
- { 25, 6, 208,{ 834,72 },{ 834,72 },{ 302,27 },{ 834,72 },{ 834,72 },{ 302,27 }}, // Chinese/Traditional Han/Taiwan
- { 26, 7, 74,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Corsican/Latin/France
- { 27, 7, 54,{ 223,79 },{ 87,107 },{ 906,39 },{ 223,79 },{ 87,107 },{ 906,39 }}, // Croatian/Latin/Croatia
- { 27, 7, 27,{ 223,79 },{ 87,107 },{ 906,39 },{ 223,79 },{ 87,107 },{ 906,39 }}, // Croatian/Latin/Bosnia And Herzegowina
- { 28, 7, 57,{ 945,77 },{ 1022,130 },{ 302,27 },{ 945,77 },{ 1022,130 },{ 302,27 }}, // Czech/Latin/Czech Republic
- { 29, 7, 58,{ 223,79 },{ 1152,107 },{ 302,27 },{ 223,79 },{ 1152,107 },{ 302,27 }}, // Danish/Latin/Denmark
- { 29, 7, 86,{ 223,79 },{ 1152,107 },{ 302,27 },{ 223,79 },{ 1152,107 },{ 302,27 }}, // Danish/Latin/Greenland
- { 30, 7, 151,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Netherlands
- { 30, 7, 12,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Aruba
- { 30, 7, 21,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Belgium
- { 30, 7, 152,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Cura Sao
- { 30, 7, 202,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Suriname
- { 30, 7, 255,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Bonaire
- { 30, 7, 256,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Dutch/Latin/Sint Maarten
- { 31, 7, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/United States
- { 31, 3, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Deseret/United States
- { 31, 7, 4,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/American Samoa
- { 31, 7, 7,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Anguilla
- { 31, 7, 9,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Antigua And Barbuda
- { 31, 7, 13,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Australia
- { 31, 7, 14,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Austria
- { 31, 7, 16,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Bahamas
- { 31, 7, 19,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Barbados
- { 31, 7, 21,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Belgium
- { 31, 7, 22,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Belize
- { 31, 7, 24,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Bermuda
- { 31, 7, 28,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Botswana
- { 31, 7, 31,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/British Indian Ocean Territory
- { 31, 7, 35,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Burundi
- { 31, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Cameroon
- { 31, 7, 38,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Canada
- { 31, 7, 40,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Cayman Islands
- { 31, 7, 45,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Christmas Island
- { 31, 7, 46,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Cocos Islands
- { 31, 7, 51,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Cook Islands
- { 31, 7, 56,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Cyprus
- { 31, 7, 58,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Denmark
- { 31, 7, 60,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Dominica
- { 31, 7, 67,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Eritrea
- { 31, 7, 70,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Falkland Islands
- { 31, 7, 72,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Fiji
- { 31, 7, 73,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Finland
- { 31, 7, 75,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Guernsey
- { 31, 7, 80,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Gambia
- { 31, 7, 82,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Germany
- { 31, 7, 83,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Ghana
- { 31, 7, 84,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Gibraltar
- { 31, 7, 87,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Grenada
- { 31, 7, 89,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Guam
- { 31, 7, 93,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Guyana
- { 31, 7, 97,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Hong Kong
- { 31, 7, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/India
- { 31, 7, 104,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Ireland
- { 31, 7, 105,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Israel
- { 31, 7, 107,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Jamaica
- { 31, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Kenya
- { 31, 7, 112,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Kiribati
- { 31, 7, 120,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Lesotho
- { 31, 7, 121,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Liberia
- { 31, 7, 126,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Macau
- { 31, 7, 128,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Madagascar
- { 31, 7, 129,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Malawi
- { 31, 7, 130,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Malaysia
- { 31, 7, 133,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Malta
- { 31, 7, 134,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Marshall Islands
- { 31, 7, 137,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Mauritius
- { 31, 7, 140,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Micronesia
- { 31, 7, 144,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Montserrat
- { 31, 7, 148,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Namibia
- { 31, 7, 149,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Nauru
- { 31, 7, 151,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Netherlands
- { 31, 7, 154,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/New Zealand
- { 31, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Nigeria
- { 31, 7, 158,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Niue
- { 31, 7, 159,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Norfolk Island
- { 31, 7, 160,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Northern Mariana Islands
- { 31, 7, 163,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Pakistan
- { 31, 7, 164,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Palau
- { 31, 7, 167,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Papua New Guinea
- { 31, 7, 170,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Philippines
- { 31, 7, 171,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Pitcairn
- { 31, 7, 174,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Puerto Rico
- { 31, 7, 179,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Rwanda
- { 31, 7, 180,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Saint Kitts And Nevis
- { 31, 7, 181,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Saint Lucia
- { 31, 7, 182,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Saint Vincent And The Grenadines
- { 31, 7, 183,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Samoa
- { 31, 7, 188,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Seychelles
- { 31, 7, 189,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Sierra Leone
- { 31, 7, 190,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Singapore
- { 31, 7, 192,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Slovenia
- { 31, 7, 193,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Solomon Islands
- { 31, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/South Africa
- { 31, 7, 199,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Saint Helena
- { 31, 7, 201,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Sudan
- { 31, 7, 204,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Swaziland
- { 31, 7, 205,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Sweden
- { 31, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Switzerland
- { 31, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Tanzania
- { 31, 7, 213,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Tokelau
- { 31, 7, 214,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Tonga
- { 31, 7, 215,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Trinidad And Tobago
- { 31, 7, 219,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Turks And Caicos Islands
- { 31, 7, 220,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Tuvalu
- { 31, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Uganda
- { 31, 7, 223,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/United Arab Emirates
- { 31, 7, 224,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/United Kingdom
- { 31, 7, 226,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/United States Minor Outlying Islands
- { 31, 7, 229,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Vanuatu
- { 31, 7, 233,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/British Virgin Islands
- { 31, 7, 234,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/United States Virgin Islands
- { 31, 7, 239,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Zambia
- { 31, 7, 240,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Zimbabwe
- { 31, 7, 249,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Diego Garcia
- { 31, 7, 251,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Isle Of Man
- { 31, 7, 252,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Jersey
- { 31, 7, 254,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/South Sudan
- { 31, 7, 256,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Sint Maarten
- { 31, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/World
- { 31, 7, 261,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // English/Latin/Europe
- { 32, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Esperanto/Latin/World
- { 33, 7, 68,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Estonian/Latin/Estonia
- { 34, 7, 71,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Faroese/Latin/Faroe Islands
- { 34, 7, 58,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Faroese/Latin/Denmark
- { 36, 7, 73,{ 223,79 },{ 1478,130 },{ 302,27 },{ 223,79 },{ 1478,130 },{ 302,27 }}, // Finnish/Latin/Finland
- { 37, 7, 74,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/France
- { 37, 7, 3,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Algeria
- { 37, 7, 21,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Belgium
- { 37, 7, 23,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Benin
- { 37, 7, 34,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Burkina Faso
- { 37, 7, 35,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Burundi
- { 37, 7, 37,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Cameroon
- { 37, 7, 38,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Canada
- { 37, 7, 41,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Central African Republic
- { 37, 7, 42,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Chad
- { 37, 7, 48,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Comoros
- { 37, 7, 49,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Congo Kinshasa
- { 37, 7, 50,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Congo Brazzaville
- { 37, 7, 53,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Ivory Coast
- { 37, 7, 59,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Djibouti
- { 37, 7, 66,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Equatorial Guinea
- { 37, 7, 76,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/French Guiana
- { 37, 7, 77,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/French Polynesia
- { 37, 7, 79,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Gabon
- { 37, 7, 88,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Guadeloupe
- { 37, 7, 91,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Guinea
- { 37, 7, 94,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Haiti
- { 37, 7, 125,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Luxembourg
- { 37, 7, 128,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Madagascar
- { 37, 7, 132,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Mali
- { 37, 7, 135,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Martinique
- { 37, 7, 136,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Mauritania
- { 37, 7, 137,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Mauritius
- { 37, 7, 138,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Mayotte
- { 37, 7, 142,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Monaco
- { 37, 7, 145,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Morocco
- { 37, 7, 153,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/New Caledonia
- { 37, 7, 156,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Niger
- { 37, 7, 176,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Reunion
- { 37, 7, 179,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Rwanda
- { 37, 7, 187,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Senegal
- { 37, 7, 188,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Seychelles
- { 37, 7, 200,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Saint Pierre And Miquelon
- { 37, 7, 206,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Switzerland
- { 37, 7, 207,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Syria
- { 37, 7, 212,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Togo
- { 37, 7, 216,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Tunisia
- { 37, 7, 229,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Vanuatu
- { 37, 7, 235,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Wallis And Futuna Islands
- { 37, 7, 244,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Saint Barthelemy
- { 37, 7, 245,{ 1608,91 },{ 1699,140 },{ 302,27 },{ 1839,91 },{ 1699,140 },{ 302,27 }}, // French/Latin/Saint Martin
- { 38, 7, 151,{ 1259,84 },{ 1343,135 },{ 302,27 },{ 1259,84 },{ 1343,135 },{ 302,27 }}, // Western Frisian/Latin/Netherlands
- { 39, 7, 224,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Gaelic/Latin/United Kingdom
- { 40, 7, 197,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Galician/Latin/Spain
- { 41, 15, 81,{ 1930,74 },{ 2004,125 },{ 302,27 },{ 1930,74 },{ 2004,125 },{ 302,27 }}, // Georgian/Georgian/Georgia
- { 42, 7, 82,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Germany
- { 42, 7, 14,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Austria
- { 42, 7, 21,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Belgium
- { 42, 7, 106,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Italy
- { 42, 7, 123,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Liechtenstein
- { 42, 7, 125,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Luxembourg
- { 42, 7, 206,{ 223,79 },{ 2129,117 },{ 302,27 },{ 223,79 },{ 2129,117 },{ 302,27 }}, // German/Latin/Switzerland
- { 43, 16, 85,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Greek/Greek/Greece
- { 43, 16, 56,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Greek/Greek/Cyprus
- { 44, 7, 86,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Greenlandic/Latin/Greenland
- { 45, 7, 168,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Guarani/Latin/Paraguay
- { 46, 17, 100,{ 2246,75 },{ 2321,99 },{ 302,27 },{ 2246,75 },{ 2321,99 },{ 302,27 }}, // Gujarati/Gujarati/India
- { 47, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Hausa/Latin/Nigeria
- { 47, 1, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Hausa/Arabic/Nigeria
- { 47, 7, 83,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Hausa/Latin/Ghana
- { 47, 7, 156,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Hausa/Latin/Niger
- { 48, 18, 105,{ 2420,96 },{ 2516,117 },{ 302,27 },{ 2420,96 },{ 2633,117 },{ 302,27 }}, // Hebrew/Hebrew/Israel
- { 49, 13, 100,{ 223,79 },{ 2750,109 },{ 302,27 },{ 223,79 },{ 2750,109 },{ 302,27 }}, // Hindi/Devanagari/India
- { 50, 7, 98,{ 2859,77 },{ 2936,100 },{ 302,27 },{ 2859,77 },{ 3036,128 },{ 302,27 }}, // Hungarian/Latin/Hungary
- { 51, 7, 99,{ 3164,79 },{ 1152,107 },{ 302,27 },{ 3164,79 },{ 1152,107 },{ 302,27 }}, // Icelandic/Latin/Iceland
- { 52, 7, 101,{ 3243,79 },{ 3322,107 },{ 302,27 },{ 3243,79 },{ 3322,107 },{ 302,27 }}, // Indonesian/Latin/Indonesia
- { 53, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Interlingua/Latin/World
- { 55, 44, 38,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Inuktitut/Canadian Aboriginal/Canada
- { 55, 7, 38,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Inuktitut/Latin/Canada
- { 57, 7, 104,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Irish/Latin/Ireland
- { 58, 7, 106,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Italian/Latin/Italy
- { 58, 7, 184,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Italian/Latin/San Marino
- { 58, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Italian/Latin/Switzerland
- { 58, 7, 230,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Italian/Latin/Vatican City State
- { 59, 19, 108,{ 3429,98 },{ 3429,98 },{ 302,27 },{ 3429,98 },{ 3429,98 },{ 302,27 }}, // Japanese/Japanese/Japan
- { 60, 7, 101,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Javanese/Latin/Indonesia
- { 61, 21, 100,{ 3527,80 },{ 3607,101 },{ 302,27 },{ 3527,80 },{ 3607,101 },{ 302,27 }}, // Kannada/Kannada/India
- { 62, 1, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kashmiri/Arabic/India
- { 63, 2, 110,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kazakh/Cyrillic/Kazakhstan
- { 64, 7, 179,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kinyarwanda/Latin/Rwanda
- { 65, 2, 116,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kirghiz/Cyrillic/Kyrgyzstan
- { 66, 22, 114,{ 223,79 },{ 3708,70 },{ 302,27 },{ 223,79 },{ 3708,70 },{ 302,27 }}, // Korean/Korean/South Korea
- { 66, 22, 113,{ 223,79 },{ 3708,70 },{ 302,27 },{ 223,79 },{ 3708,70 },{ 302,27 }}, // Korean/Korean/North Korea
- { 67, 7, 217,{ 223,79 },{ 3778,110 },{ 302,27 },{ 223,79 },{ 3778,110 },{ 302,27 }}, // Kurdish/Latin/Turkey
- { 68, 7, 35,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Rundi/Latin/Burundi
- { 69, 23, 117,{ 3888,76 },{ 3964,96 },{ 302,27 },{ 4060,78 },{ 3964,96 },{ 302,27 }}, // Lao/Lao/Laos
- { 71, 7, 118,{ 223,79 },{ 4138,109 },{ 302,27 },{ 223,79 },{ 4138,109 },{ 302,27 }}, // Latvian/Latin/Latvia
- { 72, 7, 49,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lingala/Latin/Congo Kinshasa
- { 72, 7, 6,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lingala/Latin/Angola
- { 72, 7, 41,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lingala/Latin/Central African Republic
- { 72, 7, 50,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lingala/Latin/Congo Brazzaville
- { 73, 7, 124,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lithuanian/Latin/Lithuania
- { 74, 2, 127,{ 4247,72 },{ 4319,90 },{ 302,27 },{ 4247,72 },{ 4319,90 },{ 302,27 }}, // Macedonian/Cyrillic/Macedonia
- { 75, 7, 128,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Malagasy/Latin/Madagascar
- { 76, 7, 130,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Malay/Latin/Malaysia
- { 76, 1, 130,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Malay/Arabic/Malaysia
- { 76, 7, 32,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Malay/Latin/Brunei
- { 76, 7, 190,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Malay/Latin/Singapore
- { 77, 24, 100,{ 4409,98 },{ 4507,103 },{ 4610,27 },{ 4409,98 },{ 4637,103 },{ 4610,27 }}, // Malayalam/Malayalam/India
- { 78, 7, 133,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Maltese/Latin/Malta
- { 79, 7, 154,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Maori/Latin/New Zealand
- { 80, 13, 100,{ 4740,79 },{ 4819,88 },{ 4907,27 },{ 4740,79 },{ 4819,88 },{ 4907,27 }}, // Marathi/Devanagari/India
- { 82, 2, 143,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mongolian/Cyrillic/Mongolia
- { 82, 8, 44,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mongolian/Mongolian/China
- { 84, 13, 150,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nepali/Devanagari/Nepal
- { 84, 13, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nepali/Devanagari/India
- { 85, 7, 161,{ 4934,79 },{ 5013,107 },{ 302,27 },{ 5120,79 },{ 5013,107 },{ 302,27 }}, // Norwegian Bokmal/Latin/Norway
- { 85, 7, 203,{ 4934,79 },{ 5013,107 },{ 302,27 },{ 5120,79 },{ 5013,107 },{ 302,27 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
- { 86, 7, 74,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Occitan/Latin/France
- { 87, 26, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Oriya/Oriya/India
- { 88, 1, 1,{ 5199,78 },{ 5277,82 },{ 302,27 },{ 5199,78 },{ 5277,82 },{ 302,27 }}, // Pashto/Arabic/Afghanistan
- { 88, 1, 163,{ 5199,78 },{ 5359,82 },{ 302,27 },{ 5199,78 },{ 5359,82 },{ 302,27 }}, // Pashto/Arabic/Pakistan
- { 89, 1, 102,{ 5441,91 },{ 5532,91 },{ 302,27 },{ 5623,93 },{ 5623,93 },{ 302,27 }}, // Persian/Arabic/Iran
- { 89, 1, 1,{ 5441,91 },{ 5532,91 },{ 302,27 },{ 5623,93 },{ 5623,93 },{ 302,27 }}, // Persian/Arabic/Afghanistan
- { 90, 7, 172,{ 5716,78 },{ 5794,108 },{ 302,27 },{ 5716,78 },{ 5794,108 },{ 302,27 }}, // Polish/Latin/Poland
- { 91, 7, 30,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Brazil
- { 91, 7, 6,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Angola
- { 91, 7, 39,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Cape Verde
- { 91, 7, 62,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/East Timor
- { 91, 7, 66,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Equatorial Guinea
- { 91, 7, 92,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Guinea Bissau
- { 91, 7, 125,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Luxembourg
- { 91, 7, 126,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Macau
- { 91, 7, 146,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Mozambique
- { 91, 7, 173,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Portugal
- { 91, 7, 185,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Sao Tome And Principe
- { 91, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Portuguese/Latin/Switzerland
- { 92, 4, 100,{ 5902,78 },{ 5980,93 },{ 302,27 },{ 5902,78 },{ 6073,95 },{ 302,27 }}, // Punjabi/Gurmukhi/India
- { 92, 1, 163,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Punjabi/Arabic/Pakistan
- { 93, 7, 169,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Quechua/Latin/Peru
- { 93, 7, 26,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Quechua/Latin/Bolivia
- { 93, 7, 63,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Quechua/Latin/Ecuador
- { 94, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Romansh/Latin/Switzerland
- { 95, 7, 177,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Romanian/Latin/Romania
- { 95, 7, 141,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Romanian/Latin/Moldova
- { 96, 2, 178,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Russia
- { 96, 2, 20,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Belarus
- { 96, 2, 110,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Kazakhstan
- { 96, 2, 116,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Kyrgyzstan
- { 96, 2, 141,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Moldova
- { 96, 2, 222,{ 6168,80 },{ 6248,132 },{ 302,27 },{ 6168,80 },{ 6248,132 },{ 302,27 }}, // Russian/Cyrillic/Ukraine
- { 98, 7, 41,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sango/Latin/Central African Republic
- { 99, 13, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sanskrit/Devanagari/India
- { 100, 2, 243,{ 6380,70 },{ 6450,91 },{ 302,27 },{ 6380,70 },{ 6541,98 },{ 302,27 }}, // Serbian/Cyrillic/Serbia
- { 100, 7, 27,{ 6639,73 },{ 6712,95 },{ 302,27 },{ 6639,73 },{ 6807,98 },{ 302,27 }}, // Serbian/Latin/Bosnia And Herzegowina
- { 100, 7, 242,{ 6639,73 },{ 6712,95 },{ 302,27 },{ 6639,73 },{ 6807,98 },{ 302,27 }}, // Serbian/Latin/Montenegro
- { 100, 7, 243,{ 6639,73 },{ 6712,95 },{ 302,27 },{ 6639,73 },{ 6807,98 },{ 302,27 }}, // Serbian/Latin/Serbia
- { 100, 2, 27,{ 6380,70 },{ 6450,91 },{ 302,27 },{ 6380,70 },{ 6541,98 },{ 302,27 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
- { 100, 2, 242,{ 6380,70 },{ 6450,91 },{ 302,27 },{ 6380,70 },{ 6541,98 },{ 302,27 }}, // Serbian/Cyrillic/Montenegro
- { 100, 2, 257,{ 6380,70 },{ 6450,91 },{ 302,27 },{ 6380,70 },{ 6541,98 },{ 302,27 }}, // Serbian/Cyrillic/Kosovo
- { 100, 7, 257,{ 6639,73 },{ 6712,95 },{ 302,27 },{ 6639,73 },{ 6807,98 },{ 302,27 }}, // Serbian/Latin/Kosovo
- { 101, 2, 81,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ossetic/Cyrillic/Georgia
- { 101, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ossetic/Cyrillic/Russia
- { 102, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Southern Sotho/Latin/South Africa
- { 103, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tswana/Latin/South Africa
- { 104, 7, 240,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Shona/Latin/Zimbabwe
- { 105, 1, 163,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sindhi/Arabic/Pakistan
- { 106, 32, 198,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sinhala/Sinhala/Sri Lanka
- { 107, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swati/Latin/South Africa
- { 108, 7, 191,{ 6905,79 },{ 6984,136 },{ 302,27 },{ 6905,79 },{ 6984,136 },{ 302,27 }}, // Slovak/Latin/Slovakia
- { 109, 7, 192,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Slovenian/Latin/Slovenia
- { 110, 7, 194,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Somali/Latin/Somalia
- { 110, 7, 59,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Somali/Latin/Djibouti
- { 110, 7, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Somali/Latin/Ethiopia
- { 110, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Somali/Latin/Kenya
- { 111, 7, 197,{ 5120,79 },{ 7120,107 },{ 302,27 },{ 5120,79 },{ 7120,107 },{ 302,27 }}, // Spanish/Latin/Spain
- { 111, 7, 10,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Argentina
- { 111, 7, 22,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Belize
- { 111, 7, 26,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Bolivia
- { 111, 7, 30,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Brazil
- { 111, 7, 43,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Chile
- { 111, 7, 47,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Colombia
- { 111, 7, 52,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Costa Rica
- { 111, 7, 55,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Cuba
- { 111, 7, 61,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Dominican Republic
- { 111, 7, 63,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Ecuador
- { 111, 7, 65,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/El Salvador
- { 111, 7, 66,{ 5120,79 },{ 7120,107 },{ 302,27 },{ 5120,79 },{ 7120,107 },{ 302,27 }}, // Spanish/Latin/Equatorial Guinea
- { 111, 7, 90,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Guatemala
- { 111, 7, 96,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Honduras
- { 111, 7, 139,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Mexico
- { 111, 7, 155,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Nicaragua
- { 111, 7, 166,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Panama
- { 111, 7, 168,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Paraguay
- { 111, 7, 169,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Peru
- { 111, 7, 170,{ 5120,79 },{ 7120,107 },{ 302,27 },{ 5120,79 },{ 7120,107 },{ 302,27 }}, // Spanish/Latin/Philippines
- { 111, 7, 174,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Puerto Rico
- { 111, 7, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/United States
- { 111, 7, 227,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Uruguay
- { 111, 7, 231,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Venezuela
- { 111, 7, 238,{ 5120,79 },{ 7120,107 },{ 302,27 },{ 5120,79 },{ 7120,107 },{ 302,27 }}, // Spanish/Latin/Canary Islands
- { 111, 7, 246,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Spanish/Latin/Latin America
- { 111, 7, 250,{ 5120,79 },{ 7120,107 },{ 302,27 },{ 5120,79 },{ 7120,107 },{ 302,27 }}, // Spanish/Latin/Ceuta And Melilla
- { 113, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swahili/Latin/Tanzania
- { 113, 7, 49,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swahili/Latin/Congo Kinshasa
- { 113, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swahili/Latin/Kenya
- { 113, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swahili/Latin/Uganda
- { 114, 7, 205,{ 223,79 },{ 7227,128 },{ 302,27 },{ 223,79 },{ 7355,128 },{ 302,27 }}, // Swedish/Latin/Sweden
- { 114, 7, 73,{ 223,79 },{ 7227,128 },{ 302,27 },{ 223,79 },{ 7355,128 },{ 302,27 }}, // Swedish/Latin/Finland
- { 114, 7, 248,{ 223,79 },{ 7227,128 },{ 302,27 },{ 223,79 },{ 7355,128 },{ 302,27 }}, // Swedish/Latin/Aland Islands
- { 115, 7, 106,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sardinian/Latin/Italy
- { 116, 2, 209,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tajik/Cyrillic/Tajikistan
- { 117, 27, 100,{ 7483,73 },{ 7556,92 },{ 302,27 },{ 7483,73 },{ 7556,92 },{ 302,27 }}, // Tamil/Tamil/India
- { 117, 27, 130,{ 7483,73 },{ 7556,92 },{ 302,27 },{ 7483,73 },{ 7556,92 },{ 302,27 }}, // Tamil/Tamil/Malaysia
- { 117, 27, 190,{ 7483,73 },{ 7556,92 },{ 302,27 },{ 7483,73 },{ 7556,92 },{ 302,27 }}, // Tamil/Tamil/Singapore
- { 117, 27, 198,{ 7483,73 },{ 7556,92 },{ 302,27 },{ 7483,73 },{ 7556,92 },{ 302,27 }}, // Tamil/Tamil/Sri Lanka
- { 118, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tatar/Cyrillic/Russia
- { 119, 28, 100,{ 7648,75 },{ 7723,96 },{ 302,27 },{ 7648,75 },{ 87,107 },{ 302,27 }}, // Telugu/Telugu/India
- { 120, 30, 211,{ 7819,90 },{ 7909,103 },{ 302,27 },{ 7819,90 },{ 7909,103 },{ 302,27 }}, // Thai/Thai/Thailand
- { 121, 31, 44,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tibetan/Tibetan/China
- { 121, 31, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tibetan/Tibetan/India
- { 122, 14, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tigrinya/Ethiopic/Ethiopia
- { 122, 14, 67,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tigrinya/Ethiopic/Eritrea
- { 123, 7, 214,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tongan/Latin/Tonga
- { 124, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tsonga/Latin/South Africa
- { 125, 7, 217,{ 8012,84 },{ 8096,111 },{ 302,27 },{ 8012,84 },{ 8096,111 },{ 302,27 }}, // Turkish/Latin/Turkey
- { 125, 7, 56,{ 8012,84 },{ 8096,111 },{ 302,27 },{ 8012,84 },{ 8096,111 },{ 302,27 }}, // Turkish/Latin/Cyprus
- { 126, 7, 218,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Turkmen/Latin/Turkmenistan
- { 128, 1, 44,{ 8207,119 },{ 8207,119 },{ 302,27 },{ 8207,119 },{ 8207,119 },{ 302,27 }}, // Uighur/Arabic/China
- { 129, 2, 222,{ 8326,72 },{ 8398,104 },{ 302,27 },{ 8502,82 },{ 8398,104 },{ 302,27 }}, // Ukrainian/Cyrillic/Ukraine
- { 130, 1, 163,{ 8584,99 },{ 8683,97 },{ 302,27 },{ 8584,99 },{ 8683,97 },{ 302,27 }}, // Urdu/Arabic/Pakistan
- { 130, 1, 100,{ 8584,99 },{ 8683,97 },{ 302,27 },{ 8584,99 },{ 8683,97 },{ 302,27 }}, // Urdu/Arabic/India
- { 131, 7, 228,{ 223,79 },{ 8780,123 },{ 302,27 },{ 223,79 },{ 8780,123 },{ 302,27 }}, // Uzbek/Latin/Uzbekistan
- { 131, 1, 1,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Uzbek/Arabic/Afghanistan
- { 131, 2, 228,{ 223,79 },{ 8903,115 },{ 302,27 },{ 223,79 },{ 8903,115 },{ 302,27 }}, // Uzbek/Cyrillic/Uzbekistan
- { 132, 7, 232,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Vietnamese/Latin/Vietnam
- { 133, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Volapuk/Latin/World
- { 134, 7, 224,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Welsh/Latin/United Kingdom
- { 135, 7, 187,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Wolof/Latin/Senegal
- { 136, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Xhosa/Latin/South Africa
- { 137, 18, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Yiddish/Hebrew/World
- { 138, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Yoruba/Latin/Nigeria
- { 138, 7, 23,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Yoruba/Latin/Benin
- { 140, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Zulu/Latin/South Africa
- { 141, 7, 161,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Norwegian Nynorsk/Latin/Norway
- { 142, 7, 27,{ 9018,75 },{ 9093,99 },{ 302,27 },{ 9018,75 },{ 9093,99 },{ 302,27 }}, // Bosnian/Latin/Bosnia And Herzegowina
- { 142, 2, 27,{ 6380,70 },{ 6450,91 },{ 302,27 },{ 6380,70 },{ 6541,98 },{ 302,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
- { 143, 29, 131,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Divehi/Thaana/Maldives
- { 144, 7, 251,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Manx/Latin/Isle Of Man
- { 145, 7, 224,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Cornish/Latin/United Kingdom
- { 146, 7, 83,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Akan/Latin/Ghana
- { 147, 13, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Konkani/Devanagari/India
- { 148, 7, 83,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ga/Latin/Ghana
- { 149, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Igbo/Latin/Nigeria
- { 150, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kamba/Latin/Kenya
- { 151, 33, 103,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Syriac/Syriac/Iraq
- { 152, 14, 67,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Blin/Ethiopic/Eritrea
- { 153, 14, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Geez/Ethiopic/Ethiopia
- { 155, 7, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sidamo/Latin/Ethiopia
- { 156, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Atsam/Latin/Nigeria
- { 157, 14, 67,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tigre/Ethiopic/Eritrea
- { 158, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Jju/Latin/Nigeria
- { 159, 7, 106,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Friulian/Latin/Italy
- { 160, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Venda/Latin/South Africa
- { 161, 7, 83,{ 9192,48 },{ 9240,87 },{ 302,27 },{ 9192,48 },{ 9240,87 },{ 302,27 }}, // Ewe/Latin/Ghana
- { 161, 7, 212,{ 9192,48 },{ 9240,87 },{ 302,27 },{ 9192,48 },{ 9240,87 },{ 302,27 }}, // Ewe/Latin/Togo
- { 162, 14, 69,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Walamo/Ethiopic/Ethiopia
- { 163, 7, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Hawaiian/Latin/United States
- { 164, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tyap/Latin/Nigeria
- { 165, 7, 129,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nyanja/Latin/Malawi
- { 166, 7, 170,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Filipino/Latin/Philippines
- { 167, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swiss German/Latin/Switzerland
- { 167, 7, 74,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swiss German/Latin/France
- { 167, 7, 123,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Swiss German/Latin/Liechtenstein
- { 168, 34, 44,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sichuan Yi/Yi/China
- { 169, 7, 121,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kpelle/Latin/Liberia
- { 170, 7, 82,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Low German/Latin/Germany
- { 170, 7, 151,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Low German/Latin/Netherlands
- { 171, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // South Ndebele/Latin/South Africa
- { 172, 7, 195,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Sotho/Latin/South Africa
- { 173, 7, 161,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Sami/Latin/Norway
- { 173, 7, 73,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Sami/Latin/Finland
- { 173, 7, 205,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Sami/Latin/Sweden
- { 174, 7, 208,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Taroko/Latin/Taiwan
- { 175, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Gusii/Latin/Kenya
- { 176, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Taita/Latin/Kenya
- { 177, 7, 187,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Senegal
- { 177, 7, 34,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Burkina Faso
- { 177, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Cameroon
- { 177, 7, 80,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Gambia
- { 177, 7, 83,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Ghana
- { 177, 7, 91,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Guinea
- { 177, 7, 92,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Guinea Bissau
- { 177, 7, 121,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Liberia
- { 177, 7, 136,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Mauritania
- { 177, 7, 156,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Niger
- { 177, 7, 157,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Nigeria
- { 177, 7, 189,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Latin/Sierra Leone
- { 177, 134, 91,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Fulah/Adlam/Guinea
- { 178, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kikuyu/Latin/Kenya
- { 179, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Samburu/Latin/Kenya
- { 180, 7, 146,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sena/Latin/Mozambique
- { 181, 7, 240,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // North Ndebele/Latin/Zimbabwe
- { 182, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Rombo/Latin/Tanzania
- { 183, 9, 145,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tachelhit/Tifinagh/Morocco
- { 183, 7, 145,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tachelhit/Latin/Morocco
- { 184, 7, 3,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kabyle/Latin/Algeria
- { 185, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nyankole/Latin/Uganda
- { 186, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bena/Latin/Tanzania
- { 187, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Vunjo/Latin/Tanzania
- { 188, 7, 132,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bambara/Latin/Mali
- { 188, 75, 132,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bambara/Nko/Mali
- { 189, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Embu/Latin/Kenya
- { 190, 12, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Cherokee/Cherokee/United States
- { 191, 7, 137,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Morisyen/Latin/Mauritius
- { 192, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Makonde/Latin/Tanzania
- { 193, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Langi/Latin/Tanzania
- { 194, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ganda/Latin/Uganda
- { 195, 7, 239,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bemba/Latin/Zambia
- { 196, 7, 39,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kabuverdianu/Latin/Cape Verde
- { 197, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Meru/Latin/Kenya
- { 198, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kalenjin/Latin/Kenya
- { 199, 7, 148,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nama/Latin/Namibia
- { 200, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Machame/Latin/Tanzania
- { 201, 7, 82,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Colognian/Latin/Germany
- { 202, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Masai/Latin/Kenya
- { 202, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Masai/Latin/Tanzania
- { 203, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Soga/Latin/Uganda
- { 204, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Luyia/Latin/Kenya
- { 205, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Asu/Latin/Tanzania
- { 206, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Teso/Latin/Uganda
- { 206, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Teso/Latin/Kenya
- { 207, 7, 67,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Saho/Latin/Eritrea
- { 208, 7, 132,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Koyra Chiini/Latin/Mali
- { 209, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Rwa/Latin/Tanzania
- { 210, 7, 111,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Luo/Latin/Kenya
- { 211, 7, 221,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Chiga/Latin/Uganda
- { 212, 7, 145,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Central Morocco Tamazight/Latin/Morocco
- { 213, 7, 132,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Koyraboro Senni/Latin/Mali
- { 214, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Shambala/Latin/Tanzania
- { 215, 13, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bodo/Devanagari/India
- { 218, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Chechen/Cyrillic/Russia
- { 219, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Church/Cyrillic/Russia
- { 220, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Chuvash/Cyrillic/Russia
- { 230, 7, 49,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Luba Katanga/Latin/Congo Kinshasa
- { 231, 7, 125,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Luxembourgish/Latin/Luxembourg
- { 236, 7, 21,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Walloon/Latin/Belgium
- { 237, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Aghem/Latin/Cameroon
- { 238, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Basaa/Latin/Cameroon
- { 239, 7, 156,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Zarma/Latin/Niger
- { 240, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Duala/Latin/Cameroon
- { 241, 7, 187,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Jola Fonyi/Latin/Senegal
- { 242, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ewondo/Latin/Cameroon
- { 243, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Bafia/Latin/Cameroon
- { 244, 7, 146,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Makhuwa Meetto/Latin/Mozambique
- { 245, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mundang/Latin/Cameroon
- { 246, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kwasio/Latin/Cameroon
- { 247, 7, 254,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nuer/Latin/South Sudan
- { 248, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sakha/Cyrillic/Russia
- { 249, 7, 210,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sangu/Latin/Tanzania
- { 251, 7, 156,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tasawaq/Latin/Niger
- { 252, 35, 121,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Vai/Vai/Liberia
- { 252, 7, 121,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Vai/Latin/Liberia
- { 253, 7, 206,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Walser/Latin/Switzerland
- { 254, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Yangben/Latin/Cameroon
- { 256, 7, 197,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 9327,143 },{ 302,27 }}, // Asturian/Latin/Spain
- { 257, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ngomba/Latin/Cameroon
- { 258, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kako/Latin/Cameroon
- { 259, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Meta/Latin/Cameroon
- { 260, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ngiemboon/Latin/Cameroon
- { 290, 11, 100,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Manipuri/Bengali/India
- { 309, 100, 232,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Tai Dam/Tai Viet/Vietnam
- { 312, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Akoose/Latin/Cameroon
- { 313, 7, 225,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lakota/Latin/United States
- { 314, 9, 145,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco
- { 315, 7, 43,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mapuche/Latin/Chile
- { 316, 1, 103,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Central Kurdish/Arabic/Iraq
- { 316, 1, 102,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Central Kurdish/Arabic/Iran
- { 317, 7, 82,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lower Sorbian/Latin/Germany
- { 318, 7, 82,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Upper Sorbian/Latin/Germany
- { 319, 7, 37,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kenyang/Latin/Cameroon
- { 320, 7, 38,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mohawk/Latin/Canada
- { 321, 75, 91,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Nko/Nko/Guinea
- { 322, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Prussian/Latin/World
- { 323, 7, 90,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Kiche/Latin/Guatemala
- { 324, 7, 205,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Southern Sami/Latin/Sweden
- { 325, 7, 205,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lule Sami/Latin/Sweden
- { 326, 7, 73,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Inari Sami/Latin/Finland
- { 327, 7, 73,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Skolt Sami/Latin/Finland
- { 328, 7, 13,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Warlpiri/Latin/Australia
- { 346, 1, 102,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Mazanderani/Arabic/Iran
- { 349, 1, 102,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Luri/Arabic/Iran
- { 349, 1, 103,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Northern Luri/Arabic/Iraq
- { 357, 6, 97,{ 834,72 },{ 834,72 },{ 302,27 },{ 834,72 },{ 834,72 },{ 302,27 }}, // Cantonese/Traditional Han/Hong Kong
- { 357, 5, 44,{ 9470,72 },{ 9470,72 },{ 302,27 },{ 9470,72 },{ 9470,72 },{ 302,27 }}, // Cantonese/Simplified Han/China
- { 360, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Ido/Latin/World
- { 361, 7, 260,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Lojban/Latin/World
- { 362, 7, 106,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Sicilian/Latin/Italy
- { 363, 1, 102,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Southern Kurdish/Arabic/Iran
- { 364, 1, 163,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Western Balochi/Arabic/Pakistan
- { 365, 7, 170,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Cebuano/Latin/Philippines
- { 366, 2, 178,{ 223,79 },{ 87,107 },{ 302,27 },{ 223,79 },{ 87,107 },{ 302,27 }}, // Erzya/Cyrillic/Russia
+ { 1, 0, 0,{ 0,79 },{ 79,107 },{ 186,29 },{ 0,79 },{ 79,107 },{ 186,29 }}, // C/AnyScript/AnyCountry
+ { 3, 7, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Oromo/Latin/Ethiopia
+ { 3, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Oromo/Latin/Kenya
+ { 4, 7, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Afar/Latin/Ethiopia
+ { 5, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Afrikaans/Latin/South Africa
+ { 5, 7, 148,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Afrikaans/Latin/Namibia
+ { 6, 7, 2,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Albanian/Latin/Albania
+ { 6, 7, 127,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Albanian/Latin/Macedonia
+ { 6, 7, 257,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Albanian/Latin/Kosovo
+ { 7, 14, 69,{ 0,79 },{ 242,75 },{ 215,27 },{ 0,79 },{ 242,75 },{ 215,27 }}, // Amharic/Ethiopic/Ethiopia
+ { 8, 1, 64,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Egypt
+ { 8, 1, 3,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Algeria
+ { 8, 1, 17,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Bahrain
+ { 8, 1, 42,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Chad
+ { 8, 1, 48,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Comoros
+ { 8, 1, 59,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Djibouti
+ { 8, 1, 67,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Eritrea
+ { 8, 1, 103,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Iraq
+ { 8, 1, 105,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Israel
+ { 8, 1, 109,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Jordan
+ { 8, 1, 115,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Kuwait
+ { 8, 1, 119,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Lebanon
+ { 8, 1, 122,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Libya
+ { 8, 1, 136,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Mauritania
+ { 8, 1, 145,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Morocco
+ { 8, 1, 162,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Oman
+ { 8, 1, 165,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Palestinian Territories
+ { 8, 1, 175,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Qatar
+ { 8, 1, 186,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Saudi Arabia
+ { 8, 1, 194,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Somalia
+ { 8, 1, 201,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Sudan
+ { 8, 1, 207,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Syria
+ { 8, 1, 216,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Tunisia
+ { 8, 1, 223,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/United Arab Emirates
+ { 8, 1, 236,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Western Sahara
+ { 8, 1, 237,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/Yemen
+ { 8, 1, 254,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/South Sudan
+ { 8, 1, 260,{ 317,97 },{ 317,97 },{ 414,27 },{ 317,97 },{ 317,97 },{ 414,27 }}, // Arabic/Arabic/World
+ { 9, 10, 11,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Armenian/Armenian/Armenia
+ { 10, 11, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Assamese/Bengali/India
+ { 12, 7, 15,{ 441,72 },{ 513,111 },{ 215,27 },{ 441,72 },{ 513,111 },{ 215,27 }}, // Azerbaijani/Latin/Azerbaijan
+ { 12, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Azerbaijani/Arabic/Iran
+ { 12, 2, 15,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Azerbaijani/Cyrillic/Azerbaijan
+ { 13, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bashkir/Cyrillic/Russia
+ { 14, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Basque/Latin/Spain
+ { 15, 11, 18,{ 624,105 },{ 624,105 },{ 729,27 },{ 624,105 },{ 624,105 },{ 729,27 }}, // Bengali/Bengali/Bangladesh
+ { 15, 11, 100,{ 624,105 },{ 624,105 },{ 729,27 },{ 624,105 },{ 624,105 },{ 729,27 }}, // Bengali/Bengali/India
+ { 16, 31, 25,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Dzongkha/Tibetan/Bhutan
+ { 19, 7, 74,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Breton/Latin/France
+ { 20, 2, 33,{ 0,79 },{ 756,97 },{ 215,27 },{ 0,79 },{ 756,97 },{ 215,27 }}, // Bulgarian/Cyrillic/Bulgaria
+ { 21, 25, 147,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Burmese/Myanmar/Myanmar
+ { 22, 2, 20,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Belarusian/Cyrillic/Belarus
+ { 23, 20, 36,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Khmer/Khmer/Cambodia
+ { 24, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Catalan/Latin/Spain
+ { 24, 7, 5,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Catalan/Latin/Andorra
+ { 24, 7, 74,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Catalan/Latin/France
+ { 24, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Catalan/Latin/Italy
+ { 25, 5, 44,{ 853,39 },{ 892,38 },{ 215,27 },{ 853,39 },{ 892,38 },{ 215,27 }}, // Chinese/Simplified Han/China
+ { 25, 5, 97,{ 853,39 },{ 892,38 },{ 215,27 },{ 853,39 },{ 892,38 },{ 215,27 }}, // Chinese/Simplified Han/Hong Kong
+ { 25, 5, 126,{ 853,39 },{ 892,38 },{ 215,27 },{ 853,39 },{ 892,38 },{ 215,27 }}, // Chinese/Simplified Han/Macau
+ { 25, 5, 190,{ 853,39 },{ 892,38 },{ 215,27 },{ 853,39 },{ 892,38 },{ 215,27 }}, // Chinese/Simplified Han/Singapore
+ { 25, 6, 97,{ 930,72 },{ 930,72 },{ 215,27 },{ 930,72 },{ 930,72 },{ 215,27 }}, // Chinese/Traditional Han/Hong Kong
+ { 25, 6, 126,{ 930,72 },{ 930,72 },{ 215,27 },{ 930,72 },{ 930,72 },{ 215,27 }}, // Chinese/Traditional Han/Macau
+ { 25, 6, 208,{ 930,72 },{ 930,72 },{ 215,27 },{ 930,72 },{ 930,72 },{ 215,27 }}, // Chinese/Traditional Han/Taiwan
+ { 26, 7, 74,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Corsican/Latin/France
+ { 27, 7, 54,{ 0,79 },{ 79,107 },{ 1002,39 },{ 0,79 },{ 79,107 },{ 1002,39 }}, // Croatian/Latin/Croatia
+ { 27, 7, 27,{ 0,79 },{ 79,107 },{ 1002,39 },{ 0,79 },{ 79,107 },{ 1002,39 }}, // Croatian/Latin/Bosnia And Herzegowina
+ { 28, 7, 57,{ 1041,77 },{ 1118,130 },{ 215,27 },{ 1041,77 },{ 1118,130 },{ 215,27 }}, // Czech/Latin/Czech Republic
+ { 29, 7, 58,{ 0,79 },{ 1248,107 },{ 215,27 },{ 0,79 },{ 1248,107 },{ 215,27 }}, // Danish/Latin/Denmark
+ { 29, 7, 86,{ 0,79 },{ 1248,107 },{ 215,27 },{ 0,79 },{ 1248,107 },{ 215,27 }}, // Danish/Latin/Greenland
+ { 30, 7, 151,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Netherlands
+ { 30, 7, 12,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Aruba
+ { 30, 7, 21,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Belgium
+ { 30, 7, 152,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Cura Sao
+ { 30, 7, 202,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Suriname
+ { 30, 7, 255,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Bonaire
+ { 30, 7, 256,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Dutch/Latin/Sint Maarten
+ { 31, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/United States
+ { 31, 3, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Deseret/United States
+ { 31, 7, 4,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/American Samoa
+ { 31, 7, 7,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Anguilla
+ { 31, 7, 9,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Antigua And Barbuda
+ { 31, 7, 13,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Australia
+ { 31, 7, 14,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Austria
+ { 31, 7, 16,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Bahamas
+ { 31, 7, 19,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Barbados
+ { 31, 7, 21,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Belgium
+ { 31, 7, 22,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Belize
+ { 31, 7, 24,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Bermuda
+ { 31, 7, 28,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Botswana
+ { 31, 7, 31,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/British Indian Ocean Territory
+ { 31, 7, 35,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Burundi
+ { 31, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Cameroon
+ { 31, 7, 38,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Canada
+ { 31, 7, 40,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Cayman Islands
+ { 31, 7, 45,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Christmas Island
+ { 31, 7, 46,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Cocos Islands
+ { 31, 7, 51,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Cook Islands
+ { 31, 7, 56,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Cyprus
+ { 31, 7, 58,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Denmark
+ { 31, 7, 60,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Dominica
+ { 31, 7, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Eritrea
+ { 31, 7, 70,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Falkland Islands
+ { 31, 7, 72,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Fiji
+ { 31, 7, 73,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Finland
+ { 31, 7, 75,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Guernsey
+ { 31, 7, 80,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Gambia
+ { 31, 7, 82,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Germany
+ { 31, 7, 83,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Ghana
+ { 31, 7, 84,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Gibraltar
+ { 31, 7, 87,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Grenada
+ { 31, 7, 89,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Guam
+ { 31, 7, 93,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Guyana
+ { 31, 7, 97,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Hong Kong
+ { 31, 7, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/India
+ { 31, 7, 104,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Ireland
+ { 31, 7, 105,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Israel
+ { 31, 7, 107,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Jamaica
+ { 31, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Kenya
+ { 31, 7, 112,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Kiribati
+ { 31, 7, 120,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Lesotho
+ { 31, 7, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Liberia
+ { 31, 7, 126,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Macau
+ { 31, 7, 128,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Madagascar
+ { 31, 7, 129,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Malawi
+ { 31, 7, 130,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Malaysia
+ { 31, 7, 133,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Malta
+ { 31, 7, 134,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Marshall Islands
+ { 31, 7, 137,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Mauritius
+ { 31, 7, 140,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Micronesia
+ { 31, 7, 144,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Montserrat
+ { 31, 7, 148,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Namibia
+ { 31, 7, 149,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Nauru
+ { 31, 7, 151,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Netherlands
+ { 31, 7, 154,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/New Zealand
+ { 31, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Nigeria
+ { 31, 7, 158,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Niue
+ { 31, 7, 159,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Norfolk Island
+ { 31, 7, 160,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Northern Mariana Islands
+ { 31, 7, 163,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Pakistan
+ { 31, 7, 164,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Palau
+ { 31, 7, 167,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Papua New Guinea
+ { 31, 7, 170,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Philippines
+ { 31, 7, 171,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Pitcairn
+ { 31, 7, 174,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Puerto Rico
+ { 31, 7, 179,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Rwanda
+ { 31, 7, 180,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Saint Kitts And Nevis
+ { 31, 7, 181,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Saint Lucia
+ { 31, 7, 182,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Saint Vincent And The Grenadines
+ { 31, 7, 183,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Samoa
+ { 31, 7, 188,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Seychelles
+ { 31, 7, 189,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Sierra Leone
+ { 31, 7, 190,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Singapore
+ { 31, 7, 192,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Slovenia
+ { 31, 7, 193,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Solomon Islands
+ { 31, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/South Africa
+ { 31, 7, 199,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Saint Helena
+ { 31, 7, 201,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Sudan
+ { 31, 7, 204,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Swaziland
+ { 31, 7, 205,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Sweden
+ { 31, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Switzerland
+ { 31, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Tanzania
+ { 31, 7, 213,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Tokelau
+ { 31, 7, 214,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Tonga
+ { 31, 7, 215,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Trinidad And Tobago
+ { 31, 7, 219,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Turks And Caicos Islands
+ { 31, 7, 220,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Tuvalu
+ { 31, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Uganda
+ { 31, 7, 223,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/United Arab Emirates
+ { 31, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/United Kingdom
+ { 31, 7, 226,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/United States Minor Outlying Islands
+ { 31, 7, 229,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Vanuatu
+ { 31, 7, 233,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/British Virgin Islands
+ { 31, 7, 234,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/United States Virgin Islands
+ { 31, 7, 239,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Zambia
+ { 31, 7, 240,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Zimbabwe
+ { 31, 7, 249,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Diego Garcia
+ { 31, 7, 251,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Isle Of Man
+ { 31, 7, 252,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Jersey
+ { 31, 7, 254,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/South Sudan
+ { 31, 7, 256,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Sint Maarten
+ { 31, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/World
+ { 31, 7, 261,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // English/Latin/Europe
+ { 32, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Esperanto/Latin/World
+ { 33, 7, 68,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Estonian/Latin/Estonia
+ { 34, 7, 71,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Faroese/Latin/Faroe Islands
+ { 34, 7, 58,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Faroese/Latin/Denmark
+ { 36, 7, 73,{ 0,79 },{ 1574,130 },{ 215,27 },{ 0,79 },{ 1574,130 },{ 215,27 }}, // Finnish/Latin/Finland
+ { 37, 7, 74,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/France
+ { 37, 7, 3,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Algeria
+ { 37, 7, 21,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Belgium
+ { 37, 7, 23,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Benin
+ { 37, 7, 34,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Burkina Faso
+ { 37, 7, 35,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Burundi
+ { 37, 7, 37,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Cameroon
+ { 37, 7, 38,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Canada
+ { 37, 7, 41,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Central African Republic
+ { 37, 7, 42,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Chad
+ { 37, 7, 48,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Comoros
+ { 37, 7, 49,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Congo Kinshasa
+ { 37, 7, 50,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Congo Brazzaville
+ { 37, 7, 53,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Ivory Coast
+ { 37, 7, 59,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Djibouti
+ { 37, 7, 66,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Equatorial Guinea
+ { 37, 7, 76,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/French Guiana
+ { 37, 7, 77,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/French Polynesia
+ { 37, 7, 79,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Gabon
+ { 37, 7, 88,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Guadeloupe
+ { 37, 7, 91,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Guinea
+ { 37, 7, 94,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Haiti
+ { 37, 7, 125,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Luxembourg
+ { 37, 7, 128,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Madagascar
+ { 37, 7, 132,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Mali
+ { 37, 7, 135,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Martinique
+ { 37, 7, 136,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Mauritania
+ { 37, 7, 137,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Mauritius
+ { 37, 7, 138,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Mayotte
+ { 37, 7, 142,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Monaco
+ { 37, 7, 145,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Morocco
+ { 37, 7, 153,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/New Caledonia
+ { 37, 7, 156,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Niger
+ { 37, 7, 176,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Reunion
+ { 37, 7, 179,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Rwanda
+ { 37, 7, 187,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Senegal
+ { 37, 7, 188,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Seychelles
+ { 37, 7, 200,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Saint Pierre And Miquelon
+ { 37, 7, 206,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Switzerland
+ { 37, 7, 207,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Syria
+ { 37, 7, 212,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Togo
+ { 37, 7, 216,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Tunisia
+ { 37, 7, 229,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Vanuatu
+ { 37, 7, 235,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Wallis And Futuna Islands
+ { 37, 7, 244,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Saint Barthelemy
+ { 37, 7, 245,{ 1704,91 },{ 1795,140 },{ 215,27 },{ 1935,91 },{ 1795,140 },{ 215,27 }}, // French/Latin/Saint Martin
+ { 38, 7, 151,{ 1355,84 },{ 1439,135 },{ 215,27 },{ 1355,84 },{ 1439,135 },{ 215,27 }}, // Western Frisian/Latin/Netherlands
+ { 39, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Gaelic/Latin/United Kingdom
+ { 40, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Galician/Latin/Spain
+ { 41, 15, 81,{ 2026,74 },{ 2100,125 },{ 215,27 },{ 2026,74 },{ 2100,125 },{ 215,27 }}, // Georgian/Georgian/Georgia
+ { 42, 7, 82,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Germany
+ { 42, 7, 14,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Austria
+ { 42, 7, 21,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Belgium
+ { 42, 7, 106,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Italy
+ { 42, 7, 123,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Liechtenstein
+ { 42, 7, 125,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Luxembourg
+ { 42, 7, 206,{ 0,79 },{ 2225,117 },{ 215,27 },{ 0,79 },{ 2225,117 },{ 215,27 }}, // German/Latin/Switzerland
+ { 43, 16, 85,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Greek/Greek/Greece
+ { 43, 16, 56,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Greek/Greek/Cyprus
+ { 44, 7, 86,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Greenlandic/Latin/Greenland
+ { 45, 7, 168,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Guarani/Latin/Paraguay
+ { 46, 17, 100,{ 2342,75 },{ 2417,99 },{ 215,27 },{ 2342,75 },{ 2417,99 },{ 215,27 }}, // Gujarati/Gujarati/India
+ { 47, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hausa/Latin/Nigeria
+ { 47, 1, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hausa/Arabic/Nigeria
+ { 47, 7, 83,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hausa/Latin/Ghana
+ { 47, 7, 156,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hausa/Latin/Niger
+ { 48, 18, 105,{ 2516,96 },{ 2612,117 },{ 215,27 },{ 2516,96 },{ 2729,117 },{ 215,27 }}, // Hebrew/Hebrew/Israel
+ { 49, 13, 100,{ 0,79 },{ 2846,109 },{ 215,27 },{ 0,79 },{ 2846,109 },{ 215,27 }}, // Hindi/Devanagari/India
+ { 50, 7, 98,{ 2955,77 },{ 3032,100 },{ 215,27 },{ 2955,77 },{ 3132,128 },{ 215,27 }}, // Hungarian/Latin/Hungary
+ { 51, 7, 99,{ 3260,79 },{ 1248,107 },{ 215,27 },{ 3260,79 },{ 1248,107 },{ 215,27 }}, // Icelandic/Latin/Iceland
+ { 52, 7, 101,{ 3339,87 },{ 3426,110 },{ 215,27 },{ 3339,87 },{ 3426,110 },{ 215,27 }}, // Indonesian/Latin/Indonesia
+ { 53, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Interlingua/Latin/World
+ { 55, 44, 38,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Inuktitut/Canadian Aboriginal/Canada
+ { 55, 7, 38,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Inuktitut/Latin/Canada
+ { 57, 7, 104,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Irish/Latin/Ireland
+ { 57, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Irish/Latin/United Kingdom
+ { 58, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Italian/Latin/Italy
+ { 58, 7, 184,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Italian/Latin/San Marino
+ { 58, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Italian/Latin/Switzerland
+ { 58, 7, 230,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Italian/Latin/Vatican City State
+ { 59, 19, 108,{ 3536,98 },{ 3536,98 },{ 215,27 },{ 3536,98 },{ 3536,98 },{ 215,27 }}, // Japanese/Japanese/Japan
+ { 60, 7, 101,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Javanese/Latin/Indonesia
+ { 61, 21, 100,{ 3634,80 },{ 3714,101 },{ 215,27 },{ 3634,80 },{ 3714,101 },{ 215,27 }}, // Kannada/Kannada/India
+ { 62, 1, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kashmiri/Arabic/India
+ { 63, 2, 110,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kazakh/Cyrillic/Kazakhstan
+ { 64, 7, 179,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kinyarwanda/Latin/Rwanda
+ { 65, 2, 116,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kirghiz/Cyrillic/Kyrgyzstan
+ { 66, 22, 114,{ 0,79 },{ 3815,70 },{ 215,27 },{ 0,79 },{ 3815,70 },{ 215,27 }}, // Korean/Korean/South Korea
+ { 66, 22, 113,{ 0,79 },{ 3815,70 },{ 215,27 },{ 0,79 },{ 3815,70 },{ 215,27 }}, // Korean/Korean/North Korea
+ { 67, 7, 217,{ 0,79 },{ 3885,110 },{ 215,27 },{ 0,79 },{ 3885,110 },{ 215,27 }}, // Kurdish/Latin/Turkey
+ { 68, 7, 35,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Rundi/Latin/Burundi
+ { 69, 23, 117,{ 3995,76 },{ 4071,96 },{ 215,27 },{ 4167,78 },{ 4071,96 },{ 215,27 }}, // Lao/Lao/Laos
+ { 71, 7, 118,{ 0,79 },{ 4245,109 },{ 215,27 },{ 0,79 },{ 4245,109 },{ 215,27 }}, // Latvian/Latin/Latvia
+ { 72, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Congo Kinshasa
+ { 72, 7, 6,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Angola
+ { 72, 7, 41,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Central African Republic
+ { 72, 7, 50,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Congo Brazzaville
+ { 73, 7, 124,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lithuanian/Latin/Lithuania
+ { 74, 2, 127,{ 4354,72 },{ 4426,90 },{ 215,27 },{ 4354,72 },{ 4426,90 },{ 215,27 }}, // Macedonian/Cyrillic/Macedonia
+ { 75, 7, 128,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Malagasy/Latin/Madagascar
+ { 76, 7, 130,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Malay/Latin/Malaysia
+ { 76, 1, 130,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Malay/Arabic/Malaysia
+ { 76, 7, 32,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Malay/Latin/Brunei
+ { 76, 7, 190,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Malay/Latin/Singapore
+ { 77, 24, 100,{ 4516,98 },{ 4614,103 },{ 4717,27 },{ 4516,98 },{ 4744,103 },{ 4717,27 }}, // Malayalam/Malayalam/India
+ { 78, 7, 133,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Maltese/Latin/Malta
+ { 79, 7, 154,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Maori/Latin/New Zealand
+ { 80, 13, 100,{ 4847,79 },{ 4926,88 },{ 5014,27 },{ 4847,79 },{ 4926,88 },{ 5014,27 }}, // Marathi/Devanagari/India
+ { 82, 2, 143,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mongolian/Cyrillic/Mongolia
+ { 82, 8, 44,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mongolian/Mongolian/China
+ { 84, 13, 150,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nepali/Devanagari/Nepal
+ { 84, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nepali/Devanagari/India
+ { 85, 7, 161,{ 5041,79 },{ 5120,107 },{ 215,27 },{ 5227,79 },{ 5120,107 },{ 215,27 }}, // Norwegian Bokmal/Latin/Norway
+ { 85, 7, 203,{ 5041,79 },{ 5120,107 },{ 215,27 },{ 5227,79 },{ 5120,107 },{ 215,27 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
+ { 86, 7, 74,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Occitan/Latin/France
+ { 87, 26, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Oriya/Oriya/India
+ { 88, 1, 1,{ 5306,74 },{ 5380,75 },{ 215,27 },{ 5455,74 },{ 5529,76 },{ 215,27 }}, // Pashto/Arabic/Afghanistan
+ { 88, 1, 163,{ 5306,74 },{ 5605,80 },{ 215,27 },{ 5455,74 },{ 5685,81 },{ 215,27 }}, // Pashto/Arabic/Pakistan
+ { 89, 1, 102,{ 5766,91 },{ 5766,91 },{ 5857,24 },{ 5881,93 },{ 5881,93 },{ 5857,24 }}, // Persian/Arabic/Iran
+ { 89, 1, 1,{ 5766,91 },{ 5766,91 },{ 5857,24 },{ 5881,93 },{ 5881,93 },{ 5857,24 }}, // Persian/Arabic/Afghanistan
+ { 90, 7, 172,{ 5974,78 },{ 6052,108 },{ 215,27 },{ 5974,78 },{ 6052,108 },{ 215,27 }}, // Polish/Latin/Poland
+ { 91, 7, 30,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Brazil
+ { 91, 7, 6,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Angola
+ { 91, 7, 39,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Cape Verde
+ { 91, 7, 62,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/East Timor
+ { 91, 7, 66,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Equatorial Guinea
+ { 91, 7, 92,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Guinea Bissau
+ { 91, 7, 125,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Luxembourg
+ { 91, 7, 126,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Macau
+ { 91, 7, 146,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Mozambique
+ { 91, 7, 173,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Portugal
+ { 91, 7, 185,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Sao Tome And Principe
+ { 91, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Portuguese/Latin/Switzerland
+ { 92, 4, 100,{ 6160,78 },{ 6238,93 },{ 215,27 },{ 6160,78 },{ 6331,95 },{ 215,27 }}, // Punjabi/Gurmukhi/India
+ { 92, 1, 163,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Punjabi/Arabic/Pakistan
+ { 93, 7, 169,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Quechua/Latin/Peru
+ { 93, 7, 26,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Quechua/Latin/Bolivia
+ { 93, 7, 63,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Quechua/Latin/Ecuador
+ { 94, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Romansh/Latin/Switzerland
+ { 95, 7, 177,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Romanian/Latin/Romania
+ { 95, 7, 141,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Romanian/Latin/Moldova
+ { 96, 2, 178,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Russia
+ { 96, 2, 20,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Belarus
+ { 96, 2, 110,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Kazakhstan
+ { 96, 2, 116,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Kyrgyzstan
+ { 96, 2, 141,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Moldova
+ { 96, 2, 222,{ 6426,80 },{ 6506,132 },{ 215,27 },{ 6426,80 },{ 6506,132 },{ 215,27 }}, // Russian/Cyrillic/Ukraine
+ { 98, 7, 41,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sango/Latin/Central African Republic
+ { 99, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sanskrit/Devanagari/India
+ { 100, 2, 243,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Serbian/Cyrillic/Serbia
+ { 100, 2, 27,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
+ { 100, 2, 242,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Serbian/Cyrillic/Montenegro
+ { 100, 2, 257,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Serbian/Cyrillic/Kosovo
+ { 100, 7, 27,{ 6897,73 },{ 6970,95 },{ 215,27 },{ 6897,73 },{ 7065,98 },{ 215,27 }}, // Serbian/Latin/Bosnia And Herzegowina
+ { 100, 7, 242,{ 6897,73 },{ 6970,95 },{ 215,27 },{ 6897,73 },{ 7065,98 },{ 215,27 }}, // Serbian/Latin/Montenegro
+ { 100, 7, 243,{ 6897,73 },{ 6970,95 },{ 215,27 },{ 6897,73 },{ 7065,98 },{ 215,27 }}, // Serbian/Latin/Serbia
+ { 100, 7, 257,{ 6897,73 },{ 6970,95 },{ 215,27 },{ 6897,73 },{ 7065,98 },{ 215,27 }}, // Serbian/Latin/Kosovo
+ { 101, 2, 81,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ossetic/Cyrillic/Georgia
+ { 101, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ossetic/Cyrillic/Russia
+ { 102, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Southern Sotho/Latin/South Africa
+ { 103, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tswana/Latin/South Africa
+ { 104, 7, 240,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Shona/Latin/Zimbabwe
+ { 105, 1, 163,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sindhi/Arabic/Pakistan
+ { 106, 32, 198,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sinhala/Sinhala/Sri Lanka
+ { 107, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swati/Latin/South Africa
+ { 108, 7, 191,{ 7163,79 },{ 7242,136 },{ 215,27 },{ 7163,79 },{ 7242,136 },{ 215,27 }}, // Slovak/Latin/Slovakia
+ { 109, 7, 192,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Slovenian/Latin/Slovenia
+ { 110, 7, 194,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Somalia
+ { 110, 7, 59,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Djibouti
+ { 110, 7, 69,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Ethiopia
+ { 110, 7, 111,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Kenya
+ { 111, 7, 197,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Spain
+ { 111, 7, 10,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Argentina
+ { 111, 7, 22,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Belize
+ { 111, 7, 26,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Bolivia
+ { 111, 7, 30,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Brazil
+ { 111, 7, 43,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Chile
+ { 111, 7, 47,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Colombia
+ { 111, 7, 52,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Costa Rica
+ { 111, 7, 55,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Cuba
+ { 111, 7, 61,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Dominican Republic
+ { 111, 7, 63,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Ecuador
+ { 111, 7, 65,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/El Salvador
+ { 111, 7, 66,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Equatorial Guinea
+ { 111, 7, 90,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Guatemala
+ { 111, 7, 96,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Honduras
+ { 111, 7, 139,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Mexico
+ { 111, 7, 155,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Nicaragua
+ { 111, 7, 166,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Panama
+ { 111, 7, 168,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Paraguay
+ { 111, 7, 169,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Peru
+ { 111, 7, 170,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Philippines
+ { 111, 7, 174,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Puerto Rico
+ { 111, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/United States
+ { 111, 7, 227,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Uruguay
+ { 111, 7, 231,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Venezuela
+ { 111, 7, 238,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Canary Islands
+ { 111, 7, 246,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Latin America
+ { 111, 7, 250,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Ceuta And Melilla
+ { 112, 7, 101,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sundanese/Latin/Indonesia
+ { 113, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Tanzania
+ { 113, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Congo Kinshasa
+ { 113, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Kenya
+ { 113, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Uganda
+ { 114, 7, 205,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Sweden
+ { 114, 7, 73,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Finland
+ { 114, 7, 248,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Aland Islands
+ { 115, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sardinian/Latin/Italy
+ { 116, 2, 209,{ 8158,75 },{ 8233,111 },{ 215,27 },{ 8158,75 },{ 8344,111 },{ 215,27 }}, // Tajik/Cyrillic/Tajikistan
+ { 117, 27, 100,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/India
+ { 117, 27, 130,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Malaysia
+ { 117, 27, 190,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Singapore
+ { 117, 27, 198,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Sri Lanka
+ { 118, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tatar/Cyrillic/Russia
+ { 119, 28, 100,{ 8620,75 },{ 8695,96 },{ 215,27 },{ 8620,75 },{ 79,107 },{ 215,27 }}, // Telugu/Telugu/India
+ { 120, 30, 211,{ 8791,90 },{ 8881,103 },{ 215,27 },{ 8791,90 },{ 8881,103 },{ 215,27 }}, // Thai/Thai/Thailand
+ { 121, 31, 44,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tibetan/Tibetan/China
+ { 121, 31, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tibetan/Tibetan/India
+ { 122, 14, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tigrinya/Ethiopic/Ethiopia
+ { 122, 14, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tigrinya/Ethiopic/Eritrea
+ { 123, 7, 214,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tongan/Latin/Tonga
+ { 124, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tsonga/Latin/South Africa
+ { 125, 7, 217,{ 8984,84 },{ 9068,111 },{ 215,27 },{ 8984,84 },{ 9068,111 },{ 215,27 }}, // Turkish/Latin/Turkey
+ { 125, 7, 56,{ 8984,84 },{ 9068,111 },{ 215,27 },{ 8984,84 },{ 9068,111 },{ 215,27 }}, // Turkish/Latin/Cyprus
+ { 126, 7, 218,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Turkmen/Latin/Turkmenistan
+ { 128, 1, 44,{ 9179,119 },{ 9179,119 },{ 215,27 },{ 9179,119 },{ 9179,119 },{ 215,27 }}, // Uighur/Arabic/China
+ { 129, 2, 222,{ 9298,72 },{ 9370,104 },{ 215,27 },{ 9474,82 },{ 9370,104 },{ 215,27 }}, // Ukrainian/Cyrillic/Ukraine
+ { 130, 1, 163,{ 9556,99 },{ 9655,97 },{ 215,27 },{ 9556,99 },{ 9655,97 },{ 215,27 }}, // Urdu/Arabic/Pakistan
+ { 130, 1, 100,{ 9556,99 },{ 9655,97 },{ 215,27 },{ 9556,99 },{ 9655,97 },{ 215,27 }}, // Urdu/Arabic/India
+ { 131, 7, 228,{ 9752,83 },{ 9835,123 },{ 215,27 },{ 9752,83 },{ 9835,123 },{ 215,27 }}, // Uzbek/Latin/Uzbekistan
+ { 131, 1, 1,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Uzbek/Arabic/Afghanistan
+ { 131, 2, 228,{ 0,79 },{ 9958,115 },{ 215,27 },{ 0,79 },{ 9958,115 },{ 215,27 }}, // Uzbek/Cyrillic/Uzbekistan
+ { 132, 7, 232,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vietnamese/Latin/Vietnam
+ { 133, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Volapuk/Latin/World
+ { 134, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Welsh/Latin/United Kingdom
+ { 135, 7, 187,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Wolof/Latin/Senegal
+ { 136, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Xhosa/Latin/South Africa
+ { 137, 18, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yiddish/Hebrew/World
+ { 138, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yoruba/Latin/Nigeria
+ { 138, 7, 23,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yoruba/Latin/Benin
+ { 140, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Zulu/Latin/South Africa
+ { 141, 7, 161,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Norwegian Nynorsk/Latin/Norway
+ { 142, 7, 27,{ 10073,75 },{ 10148,99 },{ 215,27 },{ 10073,75 },{ 10148,99 },{ 215,27 }}, // Bosnian/Latin/Bosnia And Herzegowina
+ { 142, 2, 27,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
+ { 143, 29, 131,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Divehi/Thaana/Maldives
+ { 144, 7, 251,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Manx/Latin/Isle Of Man
+ { 145, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Cornish/Latin/United Kingdom
+ { 146, 7, 83,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Akan/Latin/Ghana
+ { 147, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Konkani/Devanagari/India
+ { 148, 7, 83,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ga/Latin/Ghana
+ { 149, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Igbo/Latin/Nigeria
+ { 150, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kamba/Latin/Kenya
+ { 151, 33, 103,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Syriac/Syriac/Iraq
+ { 152, 14, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Blin/Ethiopic/Eritrea
+ { 153, 14, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Geez/Ethiopic/Ethiopia
+ { 155, 7, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sidamo/Latin/Ethiopia
+ { 156, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Atsam/Latin/Nigeria
+ { 157, 14, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tigre/Ethiopic/Eritrea
+ { 158, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Jju/Latin/Nigeria
+ { 159, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Friulian/Latin/Italy
+ { 160, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Venda/Latin/South Africa
+ { 161, 7, 83,{ 10247,48 },{ 10295,87 },{ 215,27 },{ 10247,48 },{ 10295,87 },{ 215,27 }}, // Ewe/Latin/Ghana
+ { 161, 7, 212,{ 10247,48 },{ 10295,87 },{ 215,27 },{ 10247,48 },{ 10295,87 },{ 215,27 }}, // Ewe/Latin/Togo
+ { 162, 14, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walamo/Ethiopic/Ethiopia
+ { 163, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hawaiian/Latin/United States
+ { 164, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tyap/Latin/Nigeria
+ { 165, 7, 129,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nyanja/Latin/Malawi
+ { 166, 7, 170,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Filipino/Latin/Philippines
+ { 167, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swiss German/Latin/Switzerland
+ { 167, 7, 74,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swiss German/Latin/France
+ { 167, 7, 123,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swiss German/Latin/Liechtenstein
+ { 168, 34, 44,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sichuan Yi/Yi/China
+ { 169, 7, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kpelle/Latin/Liberia
+ { 170, 7, 82,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Low German/Latin/Germany
+ { 170, 7, 151,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Low German/Latin/Netherlands
+ { 171, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // South Ndebele/Latin/South Africa
+ { 172, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Sotho/Latin/South Africa
+ { 173, 7, 161,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Sami/Latin/Norway
+ { 173, 7, 73,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Sami/Latin/Finland
+ { 173, 7, 205,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Sami/Latin/Sweden
+ { 174, 7, 208,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Taroko/Latin/Taiwan
+ { 175, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Gusii/Latin/Kenya
+ { 176, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Taita/Latin/Kenya
+ { 177, 7, 187,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Senegal
+ { 177, 7, 34,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Burkina Faso
+ { 177, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Cameroon
+ { 177, 7, 80,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Gambia
+ { 177, 7, 83,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Ghana
+ { 177, 7, 91,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Guinea
+ { 177, 7, 92,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Guinea Bissau
+ { 177, 7, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Liberia
+ { 177, 7, 136,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Mauritania
+ { 177, 7, 156,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Niger
+ { 177, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Nigeria
+ { 177, 7, 189,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Latin/Sierra Leone
+ { 177, 134, 91,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Fulah/Adlam/Guinea
+ { 178, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kikuyu/Latin/Kenya
+ { 179, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Samburu/Latin/Kenya
+ { 180, 7, 146,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sena/Latin/Mozambique
+ { 181, 7, 240,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // North Ndebele/Latin/Zimbabwe
+ { 182, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Rombo/Latin/Tanzania
+ { 183, 9, 145,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tachelhit/Tifinagh/Morocco
+ { 183, 7, 145,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tachelhit/Latin/Morocco
+ { 184, 7, 3,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kabyle/Latin/Algeria
+ { 185, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nyankole/Latin/Uganda
+ { 186, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bena/Latin/Tanzania
+ { 187, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vunjo/Latin/Tanzania
+ { 188, 7, 132,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bambara/Latin/Mali
+ { 188, 75, 132,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bambara/Nko/Mali
+ { 189, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Embu/Latin/Kenya
+ { 190, 12, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Cherokee/Cherokee/United States
+ { 191, 7, 137,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Morisyen/Latin/Mauritius
+ { 192, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Makonde/Latin/Tanzania
+ { 193, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Langi/Latin/Tanzania
+ { 194, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ganda/Latin/Uganda
+ { 195, 7, 239,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bemba/Latin/Zambia
+ { 196, 7, 39,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kabuverdianu/Latin/Cape Verde
+ { 197, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Meru/Latin/Kenya
+ { 198, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kalenjin/Latin/Kenya
+ { 199, 7, 148,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nama/Latin/Namibia
+ { 200, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Machame/Latin/Tanzania
+ { 201, 7, 82,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Colognian/Latin/Germany
+ { 202, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Masai/Latin/Kenya
+ { 202, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Masai/Latin/Tanzania
+ { 203, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Soga/Latin/Uganda
+ { 204, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luyia/Latin/Kenya
+ { 205, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Asu/Latin/Tanzania
+ { 206, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Teso/Latin/Uganda
+ { 206, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Teso/Latin/Kenya
+ { 207, 7, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Saho/Latin/Eritrea
+ { 208, 7, 132,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Koyra Chiini/Latin/Mali
+ { 209, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Rwa/Latin/Tanzania
+ { 210, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luo/Latin/Kenya
+ { 211, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Chiga/Latin/Uganda
+ { 212, 7, 145,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Central Morocco Tamazight/Latin/Morocco
+ { 213, 7, 132,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Koyraboro Senni/Latin/Mali
+ { 214, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Shambala/Latin/Tanzania
+ { 215, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bodo/Devanagari/India
+ { 218, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Chechen/Cyrillic/Russia
+ { 219, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Church/Cyrillic/Russia
+ { 220, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Chuvash/Cyrillic/Russia
+ { 230, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luba Katanga/Latin/Congo Kinshasa
+ { 231, 7, 125,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luxembourgish/Latin/Luxembourg
+ { 236, 7, 21,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walloon/Latin/Belgium
+ { 237, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Aghem/Latin/Cameroon
+ { 238, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Basaa/Latin/Cameroon
+ { 239, 7, 156,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Zarma/Latin/Niger
+ { 240, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Duala/Latin/Cameroon
+ { 241, 7, 187,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Jola Fonyi/Latin/Senegal
+ { 242, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ewondo/Latin/Cameroon
+ { 243, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Bafia/Latin/Cameroon
+ { 244, 7, 146,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Makhuwa Meetto/Latin/Mozambique
+ { 245, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mundang/Latin/Cameroon
+ { 246, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kwasio/Latin/Cameroon
+ { 247, 7, 254,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nuer/Latin/South Sudan
+ { 248, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sakha/Cyrillic/Russia
+ { 249, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sangu/Latin/Tanzania
+ { 251, 7, 156,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tasawaq/Latin/Niger
+ { 252, 35, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vai/Vai/Liberia
+ { 252, 7, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vai/Latin/Liberia
+ { 253, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walser/Latin/Switzerland
+ { 254, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yangben/Latin/Cameroon
+ { 256, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 10382,143 },{ 215,27 }}, // Asturian/Latin/Spain
+ { 257, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ngomba/Latin/Cameroon
+ { 258, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kako/Latin/Cameroon
+ { 259, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Meta/Latin/Cameroon
+ { 260, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ngiemboon/Latin/Cameroon
+ { 261, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Aragonese/Latin/Spain
+ { 290, 11, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Manipuri/Bengali/India
+ { 309, 100, 232,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tai Dam/Tai Viet/Vietnam
+ { 312, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Akoose/Latin/Cameroon
+ { 313, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lakota/Latin/United States
+ { 314, 9, 145,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco
+ { 315, 7, 43,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mapuche/Latin/Chile
+ { 316, 1, 103,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Central Kurdish/Arabic/Iraq
+ { 316, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Central Kurdish/Arabic/Iran
+ { 317, 7, 82,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lower Sorbian/Latin/Germany
+ { 318, 7, 82,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Upper Sorbian/Latin/Germany
+ { 319, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kenyang/Latin/Cameroon
+ { 320, 7, 38,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mohawk/Latin/Canada
+ { 321, 75, 91,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Nko/Nko/Guinea
+ { 322, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Prussian/Latin/World
+ { 323, 7, 90,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kiche/Latin/Guatemala
+ { 324, 7, 205,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Southern Sami/Latin/Sweden
+ { 325, 7, 205,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lule Sami/Latin/Sweden
+ { 326, 7, 73,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Inari Sami/Latin/Finland
+ { 327, 7, 73,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Skolt Sami/Latin/Finland
+ { 328, 7, 13,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Warlpiri/Latin/Australia
+ { 346, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Mazanderani/Arabic/Iran
+ { 349, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Luri/Arabic/Iran
+ { 349, 1, 103,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Luri/Arabic/Iraq
+ { 357, 6, 97,{ 930,72 },{ 930,72 },{ 215,27 },{ 930,72 },{ 930,72 },{ 215,27 }}, // Cantonese/Traditional Han/Hong Kong
+ { 357, 5, 44,{ 10525,72 },{ 10525,72 },{ 215,27 },{ 10525,72 },{ 10525,72 },{ 215,27 }}, // Cantonese/Simplified Han/China
+ { 358, 138, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Osage/Osage/United States
+ { 360, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ido/Latin/World
+ { 361, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lojban/Latin/World
+ { 362, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sicilian/Latin/Italy
+ { 363, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Southern Kurdish/Arabic/Iran
+ { 364, 1, 163,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Western Balochi/Arabic/Pakistan
+ { 365, 7, 170,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Cebuano/Latin/Philippines
+ { 366, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Erzya/Cyrillic/Russia
+ { 367, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Chickasaw/Latin/United States
+ { 368, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Muscogee/Latin/United States
+ { 369, 7, 172,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Silesian/Latin/Poland
{ 0, 0, 0,{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0}}, // trailing zeros
};
@@ -663,481 +670,533 @@ static const ushort months_data[] = {
0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62,
0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b,
0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x2e,
-0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d,
-0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61,
-0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61,
-0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b,
-0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68,
-0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, 0x3b,
-0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x38, 0x3b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32,
-0x3b, 0x31, 0x33, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b,
-0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20,
-0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68,
-0x61, 0x77, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48,
-0x2e, 0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x38, 0x3b, 0x39, 0x3b,
-0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x1219, 0x1200, 0x1228, 0x121d, 0x3b, 0x1233, 0x1348, 0x122d, 0x3b, 0x1228, 0x1262,
-0x12d1, 0x120d, 0x20, 0x12a0, 0x12c8, 0x120d, 0x3b, 0x1228, 0x1262, 0x12d1, 0x120d, 0x20, 0x12a0, 0x12ba, 0x122d, 0x3b, 0x1300, 0x121b, 0x12f0, 0x120d,
-0x20, 0x12a0, 0x12c8, 0x120d, 0x3b, 0x1300, 0x121b, 0x12f0, 0x120d, 0x20, 0x12a0, 0x12ba, 0x122d, 0x3b, 0x1228, 0x1300, 0x1265, 0x3b, 0x123b, 0x12a5,
-0x1263, 0x1295, 0x3b, 0x1228, 0x1218, 0x12f3, 0x1295, 0x3b, 0x1238, 0x12cb, 0x120d, 0x3b, 0x12d9, 0x120d, 0x1242, 0x12f3, 0x1205, 0x3b, 0x12d9, 0x120d,
-0x1202, 0x1303, 0x1205, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x627, 0x644,
-0x623, 0x648, 0x644, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x627, 0x644, 0x622, 0x62e, 0x631, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x649,
-0x20, 0x627, 0x644, 0x623, 0x648, 0x644, 0x649, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x649, 0x20, 0x627, 0x644, 0x622, 0x62e, 0x631, 0x629,
-0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627,
-0x644, 0x3b, 0x630, 0x648, 0x20, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x629, 0x3b, 0x630, 0x648, 0x20, 0x627, 0x644, 0x62d, 0x62c, 0x629,
-0x3b, 0x661, 0x3b, 0x662, 0x3b, 0x663, 0x3b, 0x664, 0x3b, 0x665, 0x3b, 0x666, 0x3b, 0x667, 0x3b, 0x668, 0x3b, 0x669, 0x3b, 0x661,
-0x660, 0x3b, 0x661, 0x661, 0x3b, 0x661, 0x662, 0x3b, 0x9ae, 0x9b9, 0x9b0, 0x9b0, 0x9ae, 0x3b, 0x9b8, 0x9ab, 0x9b0, 0x3b, 0x9b0, 0x9ac,
-0x9bf, 0x989, 0x9b2, 0x20, 0x986, 0x989, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x989, 0x9b8, 0x20, 0x9b8, 0x9be, 0x9a8,
-0x9bf, 0x3b, 0x99c, 0x9ae, 0x9be, 0x9a6, 0x9bf, 0x989, 0x9b2, 0x20, 0x986, 0x989, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x99c, 0x9ae, 0x9be,
-0x9a6, 0x9bf, 0x989, 0x9b8, 0x20, 0x9b8, 0x9be, 0x9a8, 0x9bf, 0x3b, 0x9b0, 0x99c, 0x9ac, 0x3b, 0x9b6, 0x9be, 0x2018, 0x9ac, 0x9be, 0x9a8,
-0x3b, 0x9b0, 0x9ae, 0x99c, 0x9be, 0x9a8, 0x3b, 0x9b6, 0x9be, 0x993, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x99c, 0x9cd, 0x9ac, 0x9bf, 0x9b2,
-0x995, 0x9a6, 0x3b, 0x99c, 0x9cd, 0x9ac, 0x9bf, 0x9b2, 0x9b9, 0x99c, 0x9cd, 0x99c, 0x3b, 0x9e7, 0x3b, 0x9e8, 0x3b, 0x9e9, 0x3b, 0x9ea,
-0x3b, 0x9eb, 0x3b, 0x9ec, 0x3b, 0x9ed, 0x3b, 0x9ee, 0x3b, 0x9ef, 0x3b, 0x9e7, 0x9e6, 0x3b, 0x9e7, 0x9e7, 0x3b, 0x9e7, 0x9e8, 0x3b,
-0x43c, 0x443, 0x445, 0x430, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x438, 0x2d, 0x31,
-0x3b, 0x440, 0x430, 0x431, 0x438, 0x2d, 0x32, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x2d, 0x31, 0x3b, 0x434, 0x436,
-0x443, 0x43c, 0x430, 0x434, 0x430, 0x2d, 0x32, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x431, 0x430, 0x43d,
-0x3b, 0x440, 0x430, 0x43c, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d,
-0x41a, 0x430, 0x430, 0x434, 0x430, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x445, 0x438, 0x434, 0x436, 0x430, 0x3b, 0x31, 0x6708, 0x3b,
-0x32, 0x6708, 0x3b, 0x33, 0x6708, 0x3b, 0x34, 0x6708, 0x3b, 0x35, 0x6708, 0x3b, 0x36, 0x6708, 0x3b, 0x37, 0x6708, 0x3b, 0x38, 0x6708,
-0x3b, 0x39, 0x6708, 0x3b, 0x31, 0x30, 0x6708, 0x3b, 0x31, 0x31, 0x6708, 0x3b, 0x31, 0x32, 0x6708, 0x3b, 0x4e00, 0x6708, 0x3b, 0x4e8c,
-0x6708, 0x3b, 0x4e09, 0x6708, 0x3b, 0x56db, 0x6708, 0x3b, 0x4e94, 0x6708, 0x3b, 0x516d, 0x6708, 0x3b, 0x4e03, 0x6708, 0x3b, 0x516b, 0x6708, 0x3b,
-0x4e5d, 0x6708, 0x3b, 0x5341, 0x6708, 0x3b, 0x5341, 0x4e00, 0x6708, 0x3b, 0x5341, 0x4e8c, 0x6708, 0x3b, 0x7a46, 0x54c8, 0x862d, 0x59c6, 0x6708, 0x3b,
-0x8272, 0x6cd5, 0x723e, 0x6708, 0x3b, 0x8cf4, 0x6bd4, 0x6708, 0x20, 0x49, 0x3b, 0x8cf4, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x4e3b, 0x99ac,
-0x9054, 0x6708, 0x20, 0x49, 0x3b, 0x4e3b, 0x99ac, 0x9054, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x8cf4, 0x54f2, 0x535c, 0x6708, 0x3b, 0x820d, 0x723e,
-0x90a6, 0x6708, 0x3b, 0x8cf4, 0x8cb7, 0x4e39, 0x6708, 0x3b, 0x9583, 0x74e6, 0x9b6f, 0x6708, 0x3b, 0x90fd, 0x723e, 0x5580, 0x723e, 0x5fb7, 0x6708, 0x3b,
-0x90fd, 0x723e, 0x9ed1, 0x54f2, 0x6708, 0x3b, 0x31, 0x2e, 0x3b, 0x32, 0x2e, 0x3b, 0x33, 0x2e, 0x3b, 0x34, 0x2e, 0x3b, 0x35, 0x2e,
-0x3b, 0x36, 0x2e, 0x3b, 0x37, 0x2e, 0x3b, 0x38, 0x2e, 0x3b, 0x39, 0x2e, 0x3b, 0x31, 0x30, 0x2e, 0x3b, 0x31, 0x31, 0x2e,
-0x3b, 0x31, 0x32, 0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x65, 0x62, 0x2e, 0x20,
-0x49, 0x3b, 0x72, 0x65, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e,
-0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x65, 0x64, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e,
-0x3b, 0x161, 0x61, 0x77, 0x2e, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x68,
-0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x65, 0x62,
-0xed, 0x2019, 0x75, 0x20, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x65, 0x62, 0xed, 0x2019, 0x75, 0x20, 0x73,
-0x2d, 0x73, 0xe1, 0x6e, 0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x61, 0x6c, 0x2d, 0xfa, 0x6c, 0xe1,
-0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x61, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72,
-0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x161, 0x61, 0x2019, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e,
-0x3b, 0x161, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x7a,
-0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d,
-0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb,
-0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20,
-0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d,
-0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51,
-0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d,
-0x6f, 0x65, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62,
-0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x2e, 0x20, 0x49,
-0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x6a, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x6a, 0x61,
-0x77, 0x2e, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x6b, 0x2e, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20,
-0x68, 0x2e, 0x3b, 0x4d, 0x6f, 0x65, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52,
-0x61, 0x62, 0x69, 0x2bb, 0x61, 0x20, 0x61, 0x6c, 0x20, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x61,
-0x20, 0x61, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x61, 0x64, 0x2bb, 0x61, 0x6c, 0x20,
-0x61, 0x77, 0x61, 0x6c, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x61, 0x64, 0x2bb, 0x61, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x69,
-0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x6a, 0x61, 0x2bb, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61,
-0x64, 0x61, 0x6e, 0x3b, 0x53, 0x6a, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x6b, 0x61,
-0x2bb, 0x61, 0x62, 0x61, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x68, 0x69, 0x7a, 0x6a, 0x61, 0x3b, 0x6d, 0x75,
-0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61,
-0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68,
-0x69, 0x72, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x64, 0x17e, 0x75,
-0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62,
-0x3b, 0x161, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x161, 0x61, 0x77, 0x77,
-0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x71, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c,
-0x2d, 0x68, 0x69, 0x64, 0x64, 0x17e, 0x61, 0x3b, 0x6d, 0x6f, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72,
-0x61, 0x62, 0x2e, 0x20, 0x61, 0x77, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x74, 0x68, 0x2e, 0x3b, 0x6a, 0x6f, 0x75,
-0x6d, 0x2e, 0x20, 0x6f, 0x75, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x74, 0x68, 0x2e, 0x3b, 0x72, 0x61, 0x6a,
-0x2e, 0x3b, 0x63, 0x68, 0x61, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x63, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64,
-0x68, 0x6f, 0x75, 0x2e, 0x20, 0x71, 0x69, 0x2e, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e, 0x20, 0x68, 0x69, 0x2e, 0x3b, 0x6d,
-0x6f, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x61,
-0x20, 0x61, 0x6c, 0x20, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x61, 0x20, 0x61, 0x74, 0x68, 0x2d, 0x74,
-0x68, 0x61, 0x6e, 0x69, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x20, 0x6f, 0x75, 0x6c, 0x61,
-0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b,
-0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x63, 0x68, 0x61, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64,
-0x61, 0x6e, 0x3b, 0x63, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x20, 0x61, 0x6c, 0x20, 0x71,
-0x69, 0x60, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x6d,
-0x6f, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x61, 0x77, 0x2e, 0x3b, 0x72,
-0x61, 0x62, 0x2e, 0x20, 0x74, 0x68, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x6f, 0x75, 0x6c, 0x2e, 0x3b, 0x6a,
-0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x74, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x63, 0x68, 0x61, 0x61, 0x2e,
-0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x63, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e, 0x20, 0x71, 0x2e,
-0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e, 0x20, 0x68, 0x2e, 0x3b, 0x10db, 0x10e3, 0x10f0, 0x2e, 0x3b, 0x10e1, 0x10d0, 0x10e4, 0x2e, 0x3b,
-0x10e0, 0x10d0, 0x10d1, 0x2e, 0x20, 0x49, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x2e, 0x20,
-0x49, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x10e0, 0x10d0, 0x10ef, 0x2e, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x2e, 0x3b,
-0x10e0, 0x10d0, 0x10db, 0x2e, 0x3b, 0x10e8, 0x10d0, 0x10d5, 0x2e, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d, 0x10d9, 0x2e, 0x3b, 0x10d6, 0x10e3, 0x10da,
-0x2d, 0x10f0, 0x2e, 0x3b, 0x10db, 0x10e3, 0x10f0, 0x10d0, 0x10e0, 0x10d0, 0x10db, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10e4, 0x10d0, 0x10e0, 0x10d8, 0x3b,
-0x10e0, 0x10d0, 0x10d1, 0x10d8, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x10d8, 0x20, 0x10e3,
-0x10da, 0x2d, 0x10d0, 0x10ee, 0x10d8, 0x10e0, 0x10d8, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x10d0, 0x10d3, 0x10d0, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10d5,
-0x10d0, 0x10da, 0x10d8, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x10d0, 0x10d3, 0x10d0, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10ee, 0x10d8, 0x10e0, 0x10d8, 0x3b,
-0x10e0, 0x10d0, 0x10ef, 0x10d0, 0x10d1, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10dc, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10db, 0x10d0, 0x10d3, 0x10d0,
-0x10dc, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d, 0x10d9, 0x10d0, 0x10d0, 0x10d3, 0x10d0, 0x3b,
-0x10d6, 0x10e3, 0x10da, 0x2d, 0x10f0, 0x10d8, 0x10ef, 0x10d0, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61,
-0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49,
-0x3b, 0x44, 0x73, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x63, 0x68, 0x75, 0x6d, 0x61,
-0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x64, 0x73, 0x63, 0x68, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2bb, 0x62,
-0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44,
-0x68, 0x75, 0x20, 0x6c, 0x2d, 0x71, 0x61, 0x2bf, 0x64, 0x61, 0x3b, 0x44, 0x68, 0x75, 0x20, 0x6c, 0x2d, 0x48, 0x69, 0x64,
-0x64, 0x73, 0x63, 0x68, 0x61, 0x3b, 0xaae, 0xac1, 0xab9, 0x2e, 0x3b, 0xab8, 0xaab, 0x2e, 0x3b, 0xab0, 0xaac, 0x2e, 0x49, 0x3b,
-0xab0, 0xaac, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0x2e, 0x20, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0x2e, 0x20, 0x49,
-0x49, 0x3b, 0xab0, 0xabe, 0xa9c, 0x2e, 0x3b, 0xab6, 0xabe, 0x2e, 0x3b, 0xab0, 0xabe, 0xaae, 0x2e, 0x3b, 0xab6, 0xabe, 0xab5, 0x2e,
-0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xa95, 0xacd, 0xaaf, 0xac1, 0x2e, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xa8f, 0xa9a, 0x2e,
-0x3b, 0xaae, 0xac1, 0xab9, 0xab0, 0xacd, 0xab0, 0xaae, 0x3b, 0xab8, 0xaab, 0xab0, 0x3b, 0xab0, 0xabe, 0xaac, 0xac0, 0x2bb, 0x20, 0x49,
-0x3b, 0xab0, 0xabe, 0xaac, 0xac0, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0xabe, 0xaa6, 0xabe, 0x20, 0x49, 0x3b, 0xa9c,
-0xac1, 0xaae, 0xabe, 0xaa6, 0xabe, 0x20, 0x49, 0x49, 0x3b, 0xab0, 0xa9c, 0xaac, 0x3b, 0xab6, 0xabe, 0x2bb, 0xaac, 0xabe, 0xaa8, 0x3b,
-0xab0, 0xaae, 0xaa6, 0xabe, 0xaa8, 0x3b, 0xab6, 0xabe, 0xab5, 0xacd, 0xab5, 0xab2, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xa95, 0xacd,
-0xab5, 0xac0, 0x2bb, 0xaa1, 0xabe, 0xab9, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xab9, 0xabf, 0xa9c, 0xacd, 0xa9c, 0xabe, 0xab9, 0x3b,
-0x5de, 0x5d5, 0x5d7, 0x5e8, 0x5dd, 0x3b, 0x5e6, 0x5e4, 0x5e8, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5e8, 0x5d1,
-0x5d9, 0x5e2, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x5d5,
-0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d1, 0x5f3, 0x3b, 0x5e8, 0x5d2, 0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8,
-0x5de, 0x5d3, 0x5d0, 0x5df, 0x3b, 0x5e9, 0x5d5, 0x5d5, 0x5d0, 0x5dc, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2,
-0x5d3, 0x5d4, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x5de, 0x5d5, 0x5d7, 0x5e8,
-0x5dd, 0x3b, 0x5e6, 0x5e4, 0x5e8, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d0, 0x5d5, 0x5d5, 0x5dc, 0x3b, 0x5e8,
-0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5be, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20,
-0x5d0, 0x5dc, 0x5be, 0x5d0, 0x5d5, 0x5dc, 0x5d0, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5be, 0x5ea, 0x5f3,
-0x5d0, 0x5e0, 0x5d9, 0x5d4, 0x3b, 0x5e8, 0x5d2, 0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8, 0x5de, 0x5d3, 0x5d0,
-0x5df, 0x3b, 0x5e9, 0x5d5, 0x5d5, 0x5d0, 0x5dc, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2, 0x5d3, 0x5d4, 0x3b,
-0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x5de, 0x5d5, 0x5d7, 0x5e8, 0x5dd, 0x3b, 0x5e6,
-0x5e4, 0x5e8, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5dc, 0x2d, 0x5d0, 0x5d5, 0x5d5, 0x5dc, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2,
-0x20, 0x5d0, 0x2d, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5dc, 0x2d,
-0x5d0, 0x5d5, 0x5dc, 0x5d0, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x2d, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9,
-0x5d4, 0x3b, 0x5e8, 0x5d2, 0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8, 0x5de, 0x5d3, 0x5d0, 0x5df, 0x3b, 0x5e9,
-0x5d5, 0x5d5, 0x5d0, 0x5dc, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2, 0x5d3, 0x5d4, 0x3b, 0x5d3, 0x5f3, 0x5d5,
-0x20, 0x5d0, 0x5dc, 0x5be, 0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x92e, 0x941, 0x939, 0x930, 0x94d, 0x930, 0x92e, 0x3b, 0x938, 0x92b,
-0x930, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x92a, 0x94d, 0x930, 0x925, 0x92e, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x926, 0x94d,
-0x935, 0x93f, 0x924, 0x940, 0x92f, 0x3b, 0x91c, 0x941, 0x92e, 0x94d, 0x921, 0x93e, 0x20, 0x92a, 0x94d, 0x930, 0x925, 0x92e, 0x3b, 0x91c,
-0x941, 0x92e, 0x94d, 0x921, 0x93e, 0x20, 0x926, 0x94d, 0x935, 0x93f, 0x924, 0x940, 0x92f, 0x3b, 0x930, 0x91c, 0x92c, 0x3b, 0x936, 0x93e,
-0x935, 0x928, 0x3b, 0x930, 0x92e, 0x91c, 0x93e, 0x928, 0x3b, 0x936, 0x935, 0x94d, 0x935, 0x94d, 0x932, 0x3b, 0x91c, 0x93f, 0x932, 0x2d,
-0x915, 0x94d, 0x926, 0x93e, 0x939, 0x3b, 0x91c, 0x93f, 0x932, 0x94d, 0x2d, 0x939, 0x93f, 0x91c, 0x94d, 0x91c, 0x93e, 0x939, 0x3b, 0x4d,
-0x6f, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0xe9, 0x62, 0x2e, 0x20, 0x31, 0x3b, 0x52, 0xe9, 0x62, 0x2e,
-0x20, 0x32, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b,
-0x52, 0x65, 0x64, 0x2e, 0x3b, 0x53, 0x61, 0x62, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x65, 0x76, 0x2e, 0x3b,
-0x44, 0x73, 0xfc, 0x6c, 0x20, 0x6b, 0x2e, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x2e, 0x3b, 0x4d, 0x6f, 0x68, 0x61,
-0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x49, 0x3b, 0x52, 0xe9,
-0x62, 0x69, 0x20, 0x49, 0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0xe1, 0x64, 0x69, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d,
-0xe1, 0x64, 0x69, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x65, 0x64, 0x73, 0x65, 0x62, 0x3b, 0x53, 0x61, 0x62, 0xe1, 0x6e, 0x3b,
-0x52, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x53, 0x65, 0x76, 0x76, 0xe1, 0x6c, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20,
-0x6b, 0x61, 0x64, 0x65, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x65, 0x64, 0x73, 0x65, 0x3b, 0x4d, 0x6f, 0x68, 0x61,
-0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61,
-0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x63, 0x63, 0x68, 0x65, 0x72, 0x3b,
-0x44, 0x73, 0x65, 0x6d, 0xe1, 0x64, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x44, 0x73, 0x65,
-0x6d, 0xe1, 0x64, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x63, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x64, 0x73, 0x65,
-0x62, 0x3b, 0x53, 0x61, 0x62, 0xe1, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x53, 0x65, 0x76, 0x76,
-0xe1, 0x6c, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x65,
-0x64, 0x73, 0x65, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49,
-0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e,
-0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x73,
-0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d,
-0x48, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b,
-0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20,
-0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x79,
-0x61, 0x77, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48,
-0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62,
-0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61,
-0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53,
-0x79, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x68, 0x61, 0x6e, 0x3b, 0x53, 0x79, 0x61, 0x77,
-0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x68, 0x75, 0x2bb,
-0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x30e0, 0x30cf, 0x30c3, 0x30e9, 0x30e0, 0x3b, 0x30b5, 0x30d5, 0x30a2, 0x30eb, 0x3b,
-0x30e9, 0x30d3, 0x30fc, 0x30fb, 0x30a6, 0x30eb, 0x30fb, 0x30a2, 0x30a6, 0x30ef, 0x30eb, 0x3b, 0x30e9, 0x30d3, 0x30fc, 0x30fb, 0x30a6, 0x30c3, 0x30fb, 0x30b5,
-0x30fc, 0x30cb, 0x30fc, 0x3b, 0x30b8, 0x30e5, 0x30de, 0x30fc, 0x30c0, 0x30eb, 0x30fb, 0x30a2, 0x30a6, 0x30ef, 0x30eb, 0x3b, 0x30b8, 0x30e5, 0x30de, 0x30fc,
-0x30c0, 0x30c3, 0x30b5, 0x30fc, 0x30cb, 0x30fc, 0x3b, 0x30e9, 0x30b8, 0x30e3, 0x30d6, 0x3b, 0x30b7, 0x30e3, 0x30a2, 0x30d0, 0x30fc, 0x30f3, 0x3b, 0x30e9,
-0x30de, 0x30c0, 0x30fc, 0x30f3, 0x3b, 0x30b7, 0x30e3, 0x30a6, 0x30ef, 0x30fc, 0x30eb, 0x3b, 0x30ba, 0x30eb, 0x30fb, 0x30ab, 0x30a4, 0x30c0, 0x3b, 0x30ba,
-0x30eb, 0x30fb, 0x30d2, 0x30c3, 0x30b8, 0x30e3, 0x3b, 0xcae, 0xcc1, 0xcb9, 0xccd, 0x2e, 0x3b, 0xcb8, 0xcab, 0xcbe, 0x2e, 0x3b, 0xcb0, 0xcac,
-0xcbf, 0x2018, 0x20, 0x49, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xccd, 0x2e, 0x20, 0x49,
-0x3b, 0xc9c, 0xcc1, 0xcae, 0xccd, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xcb0, 0xc9c, 0xccd, 0x2e, 0x3b, 0xcb6, 0x2e, 0x3b, 0xcb0, 0xcae,
-0xccd, 0x2e, 0x3b, 0xcb6, 0xcb5, 0xccd, 0x2e, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd, 0x2d, 0xc95, 0xcbf, 0x2e, 0x3b, 0xca7, 0xcc1,
-0x2018, 0xcb2, 0xccd, 0x2d, 0xcb9, 0x2e, 0x3b, 0xcae, 0xcc1, 0xcb9, 0xcb0, 0xcae, 0xccd, 0x3b, 0xcb8, 0xcab, 0xcbe, 0xcb0, 0xccd, 0x3b,
-0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xcbe, 0xca6,
-0xcbe, 0x20, 0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xcbe, 0xca6, 0xcbe, 0x20, 0x49, 0x49, 0x3b, 0xcb0, 0xc9c, 0xcac, 0xccd, 0x3b, 0xcb6,
-0x2019, 0xcac, 0xcbe, 0xca8, 0xccd, 0x3b, 0xcb0, 0xcae, 0xca6, 0xcbe, 0xca8, 0xccd, 0x3b, 0xcb6, 0xcb5, 0xccd, 0xcb5, 0xcbe, 0xcb2, 0xccd,
-0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd, 0x2d, 0xc95, 0xcbf, 0x2018, 0xca1, 0xcbe, 0xcb9, 0xccd, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd,
-0x2d, 0xcb9, 0xcbf, 0xc9c, 0xcbe, 0xcb9, 0xccd, 0x3b, 0xbb34, 0xd558, 0xb78c, 0x3b, 0xc0ac, 0xd30c, 0xb974, 0x3b, 0xb77c, 0xbe44, 0x20, 0xc54c,
-0x20, 0xc544, 0xc648, 0x3b, 0xb77c, 0xbe44, 0x20, 0xc54c, 0x20, 0xc384, 0xb2c8, 0x3b, 0xc8fc, 0xb9c8, 0xb2e4, 0x20, 0xc54c, 0x20, 0xc544, 0xc648,
-0x3b, 0xc8fc, 0xb9c8, 0xb2e4, 0x20, 0xc54c, 0x20, 0xc384, 0xb2c8, 0x3b, 0xb77c, 0xc7a1, 0x3b, 0xc250, 0xc544, 0xbc18, 0x3b, 0xb77c, 0xb9c8, 0xb2e8,
-0x3b, 0xc250, 0xc648, 0x3b, 0xb4c0, 0x20, 0xc54c, 0x20, 0xae4c, 0xb2e4, 0x3b, 0xb4c0, 0x20, 0xc54c, 0x20, 0xd788, 0xc790, 0x3b, 0x6d, 0x75,
-0x1e96, 0x65, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x65, 0x66, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x62, 0xee, 0x2bf, 0x75, 0x6c, 0x65,
-0x77, 0x65, 0x6c, 0x3b, 0x72, 0x65, 0x62, 0xee, 0x2bf, 0x75, 0x6c, 0x61, 0x78, 0x65, 0x72, 0x3b, 0x63, 0x65, 0x6d, 0x61,
-0x7a, 0xee, 0x79, 0x65, 0x6c, 0x65, 0x77, 0x65, 0x6c, 0x3b, 0x63, 0x65, 0x6d, 0x61, 0x7a, 0xee, 0x79, 0x65, 0x6c, 0x61,
-0x78, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x63, 0x65, 0x62, 0x3b, 0x15f, 0x65, 0x2bf, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x65, 0x6d,
-0x65, 0x7a, 0x61, 0x6e, 0x3b, 0x15f, 0x65, 0x77, 0x61, 0x6c, 0x3b, 0x7a, 0xee, 0x6c, 0x71, 0x65, 0x2bf, 0x64, 0x65, 0x3b,
-0x7a, 0xee, 0x6c, 0x1e96, 0x65, 0x63, 0x65, 0x3b, 0xea1, 0xeb8, 0xeae, 0xeb1, 0xe94, 0x3b, 0xec0, 0xe84, 0xeb2, 0xeb0, 0x3b, 0xeae,
-0xead, 0xe81, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae, 0xead, 0xe81, 0xe9a, 0xeb5, 0x20, 0x32, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20,
-0x31, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x32, 0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0, 0x3b, 0xe8a, 0xeb2, 0x3b, 0xec0, 0xeae, 0xeb2,
-0xeb0, 0xea1, 0xeb0, 0x3b, 0xec0, 0xe8a, 0xebb, 0xeb2, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xe81, 0xeb4, 0xead, 0xeb8, 0x3b, 0xe8a, 0xeb8, 0xea5,
-0xeab, 0xeb4, 0xe88, 0x3b, 0xea1, 0xeb8, 0xea3, 0xeb0, 0xeae, 0xead, 0xea1, 0x3b, 0xe8a, 0xeb2, 0xe9f, 0xeb2, 0xea3, 0x3b, 0xeae, 0xead,
-0xe94, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae, 0xead, 0xe94, 0xe9a, 0xeb5, 0x20, 0x32, 0x3b, 0xe88, 0xeb8, 0xea1, 0xeb2, 0xe94, 0xeb2,
-0x20, 0x31, 0x3b, 0xe88, 0xeb8, 0xea1, 0xeb2, 0xe94, 0xeb2, 0x20, 0x32, 0x3b, 0xeae, 0xeb2, 0xe88, 0xeb1, 0xe9a, 0x3b, 0xe8a, 0xeb0,
-0xe9a, 0xeb2, 0xe99, 0x3b, 0xeae, 0xeb2, 0xea1, 0xeb2, 0xe94, 0xead, 0xe99, 0x3b, 0xec0, 0xe8a, 0xebb, 0xeb2, 0xea7, 0xeb1, 0xe94, 0x3b,
-0xe94, 0xeb8, 0xead, 0xeb1, 0xe94, 0xe81, 0xeb4, 0xe94, 0xeb0, 0x3b, 0xe94, 0xeb8, 0xead, 0xeb1, 0xe94, 0xe81, 0xeb4, 0xe88, 0xeb0, 0x3b,
-0xea1, 0xeb8, 0xeae, 0xeb1, 0xe94, 0x3b, 0xec0, 0xe84, 0xeb2, 0xeb0, 0x3b, 0xeae, 0xead, 0xe94, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae,
-0xead, 0xe81, 0xe9a, 0xeb5, 0x20, 0x32, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x31, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x32,
-0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0, 0x3b, 0xe8a, 0xeb0, 0xead, 0xecc, 0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0, 0xea1, 0xeb0, 0x3b, 0xec0, 0xe8a,
-0xebb, 0xeb2, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xe81, 0xeb4, 0xead, 0xeb8, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xeab, 0xeb4, 0xe88, 0x3b, 0x6d, 0x75,
-0x68, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x73, 0x3b, 0x31, 0x2e, 0x20, 0x72, 0x61, 0x62,
-0x12b, 0x3b, 0x32, 0x2e, 0x20, 0x72, 0x61, 0x62, 0x12b, 0x3b, 0x31, 0x2e, 0x20, 0x64, 0x17e, 0x75, 0x6d, 0x101, 0x64, 0x101,
-0x3b, 0x32, 0x2e, 0x20, 0x64, 0x17e, 0x75, 0x6d, 0x101, 0x64, 0x101, 0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x73, 0x3b,
-0x161, 0x61, 0x62, 0x61, 0x6e, 0x73, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x101, 0x6e, 0x73, 0x3b, 0x161, 0x61, 0x75, 0x76,
-0x61, 0x6c, 0x73, 0x3b, 0x64, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x6b, 0x69, 0x64, 0x101, 0x3b, 0x64, 0x75, 0x20, 0x61, 0x6c,
-0x2d, 0x68, 0x69, 0x64, 0x17e, 0x101, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, 0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431,
-0x2e, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x45f, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x45f,
-0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x45f, 0x2e, 0x3b, 0x448, 0x430, 0x431, 0x2e, 0x3b, 0x440, 0x430, 0x43c,
-0x2e, 0x3b, 0x448, 0x430, 0x432, 0x2e, 0x3b, 0x434, 0x443, 0x43b, 0x43a, 0x2e, 0x3b, 0x434, 0x443, 0x43b, 0x445, 0x2e, 0x3b, 0x43c,
-0x443, 0x445, 0x430, 0x440, 0x435, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x438, 0x20, 0x49, 0x3b,
-0x440, 0x430, 0x431, 0x438, 0x20, 0x49, 0x49, 0x3b, 0x45f, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x3b, 0x45f, 0x443, 0x43c,
-0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x45f, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440,
-0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x448, 0x430, 0x432, 0x430, 0x43b, 0x3b, 0x434, 0x443, 0x43b, 0x43a, 0x438, 0x434, 0x430,
-0x3b, 0x434, 0x443, 0x43b, 0x445, 0x438, 0x45f, 0x430, 0x3b, 0xd2e, 0xd41, 0xd39, 0x2e, 0x3b, 0xd38, 0xd2b, 0x2e, 0x3b, 0xd31, 0xd2c,
-0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0x2e, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16,
-0xd3f, 0x2e, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0x2e, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26,
-0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0x2e, 0x3b, 0xd31, 0xd1c, 0x2e, 0x3b, 0xd36, 0xd39, 0xd2c, 0xd3e, 0x2e, 0x3b, 0xd31, 0xd2e,
-0xd26, 0xd3e, 0x2e, 0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0x2e, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd16, 0xd39, 0x2e, 0x3b, 0xd26,
-0xd41, 0xd7d, 0x20, 0xd39, 0xd3f, 0x2e, 0x3b, 0xd2e, 0xd41, 0xd39, 0xd31, 0xd02, 0x3b, 0xd38, 0xd2b, 0xd7c, 0x3b, 0xd31, 0xd2c, 0xd40,
-0xd39, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f,
-0xd7c, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41,
-0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd31, 0xd1c, 0xd2c, 0xd4d, 0x3b, 0xd36, 0xd39, 0xd2c, 0xd3e, 0xd7b, 0x3b, 0xd31, 0xd2e,
-0xd26, 0xd3e, 0xd7b, 0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd7d, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd16, 0xd39, 0xd26, 0xd4d, 0x3b,
-0xd26, 0xd41, 0xd7d, 0x20, 0xd39, 0xd3f, 0xd1c, 0xd4d, 0xd1c, 0x3b, 0xd2e, 0xd41, 0x3b, 0xd38, 0x3b, 0xd31, 0x3b, 0xd31, 0x3b, 0xd1c,
-0x3b, 0xd1c, 0x3b, 0xd31, 0x3b, 0xd36, 0x3b, 0xd31, 0x3b, 0xd36, 0x3b, 0xd26, 0xd41, 0x3b, 0xd26, 0xd41, 0x3b, 0xd2e, 0xd41, 0xd39,
-0xd31, 0xd02, 0x3b, 0xd38, 0xd2b, 0xd7c, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b,
-0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05,
-0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd31, 0xd1c, 0xd2c,
-0xd4d, 0x3b, 0xd36, 0xd39, 0xd2c, 0xd3e, 0xd7b, 0x3b, 0xd31, 0xd2e, 0xd33, 0xd3e, 0xd7b, 0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd7d,
-0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd16, 0xd39, 0xd26, 0xd4d, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd39, 0xd3f, 0xd1c, 0xd4d, 0xd1c, 0x3b,
-0x92e, 0x94b, 0x939, 0x2e, 0x3b, 0x938, 0x92b, 0x2e, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x49, 0x3b, 0x930, 0x93e, 0x92c, 0x940,
-0x20, 0x49, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x2e, 0x20, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x2e, 0x20, 0x49, 0x49,
-0x3b, 0x930, 0x91d, 0x93e, 0x2e, 0x3b, 0x936, 0x93e, 0x92c, 0x93e, 0x2e, 0x3b, 0x930, 0x92e, 0x2e, 0x3b, 0x936, 0x935, 0x94d, 0x935,
-0x93e, 0x2e, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x915, 0x940, 0x2e, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x939, 0x93f, 0x2e, 0x3b, 0x92e,
-0x94b, 0x939, 0x930, 0x92e, 0x3b, 0x938, 0x92b, 0x930, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x49, 0x3b, 0x930, 0x93e, 0x92c, 0x940,
-0x20, 0x49, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x926, 0x93e, 0x20, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x926, 0x93e, 0x20,
-0x49, 0x49, 0x3b, 0x930, 0x91d, 0x93e, 0x92c, 0x3b, 0x936, 0x93e, 0x92c, 0x93e, 0x928, 0x3b, 0x930, 0x92e, 0x91c, 0x93e, 0x928, 0x3b,
-0x936, 0x935, 0x94d, 0x935, 0x93e, 0x932, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x915, 0x940, 0x926, 0x93e, 0x939, 0x3b, 0x927, 0x941, 0x932,
-0x2d, 0x939, 0x93f, 0x91c, 0x93e, 0x939, 0x3b, 0x967, 0x3b, 0x968, 0x3b, 0x969, 0x3b, 0x96a, 0x3b, 0x96b, 0x3b, 0x96c, 0x3b, 0x96d,
-0x3b, 0x96e, 0x3b, 0x96f, 0x3b, 0x967, 0x966, 0x3b, 0x967, 0x967, 0x3b, 0x967, 0x968, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73,
-0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x6a,
-0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x73,
-0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c,
-0x2d, 0x71, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61,
-0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x69,
-0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61,
-0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61,
-0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d,
-0x71, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b,
+0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x2e, 0x3b, 0x4d,
+0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20,
+0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2bb,
+0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b,
+0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48,
+0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x31, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b,
+0x38, 0x3b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x31, 0x33, 0x31, 0x3b, 0x32, 0x3b, 0x33,
+0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x38, 0x3b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31,
+0x32, 0x3b, 0x1219, 0x1200, 0x1228, 0x121d, 0x3b, 0x1233, 0x1348, 0x122d, 0x3b, 0x1228, 0x1262, 0x12d1, 0x120d, 0x20, 0x12a0, 0x12c8, 0x120d, 0x3b,
+0x1228, 0x1262, 0x12d1, 0x120d, 0x20, 0x12a0, 0x12ba, 0x122d, 0x3b, 0x1300, 0x121b, 0x12f0, 0x120d, 0x20, 0x12a0, 0x12c8, 0x120d, 0x3b, 0x1300, 0x121b,
+0x12f0, 0x120d, 0x20, 0x12a0, 0x12ba, 0x122d, 0x3b, 0x1228, 0x1300, 0x1265, 0x3b, 0x123b, 0x12a5, 0x1263, 0x1295, 0x3b, 0x1228, 0x1218, 0x12f3, 0x1295,
+0x3b, 0x1238, 0x12cb, 0x120d, 0x3b, 0x12d9, 0x120d, 0x1242, 0x12f3, 0x1205, 0x3b, 0x12d9, 0x120d, 0x1202, 0x1303, 0x1205, 0x3b, 0x645, 0x62d, 0x631,
+0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x627, 0x644, 0x623, 0x648, 0x644, 0x3b, 0x631, 0x628, 0x64a,
+0x639, 0x20, 0x627, 0x644, 0x622, 0x62e, 0x631, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x649, 0x20, 0x627, 0x644, 0x623, 0x648, 0x644, 0x649,
+0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x649, 0x20, 0x627, 0x644, 0x622, 0x62e, 0x631, 0x629, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639,
+0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x20, 0x627, 0x644,
+0x642, 0x639, 0x62f, 0x629, 0x3b, 0x630, 0x648, 0x20, 0x627, 0x644, 0x62d, 0x62c, 0x629, 0x3b, 0x661, 0x3b, 0x662, 0x3b, 0x663, 0x3b,
+0x664, 0x3b, 0x665, 0x3b, 0x666, 0x3b, 0x667, 0x3b, 0x668, 0x3b, 0x669, 0x3b, 0x661, 0x660, 0x3b, 0x661, 0x661, 0x3b, 0x661, 0x662,
+0x3b, 0x4d, 0x259, 0x68, 0x2e, 0x3b, 0x53, 0x259, 0x66, 0x2e, 0x3b, 0x52, 0x259, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x259,
+0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x43, 0x259, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x43, 0x259, 0x6d, 0x2e, 0x20, 0x49, 0x49,
+0x3b, 0x52, 0x259, 0x63, 0x2e, 0x3b, 0x15e, 0x61, 0x62, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x15e, 0x259, 0x76, 0x2e,
+0x3b, 0x5a, 0x69, 0x6c, 0x71, 0x2e, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x2e, 0x3b, 0x4d, 0x259, 0x68, 0x259, 0x72, 0x72, 0x259,
+0x6d, 0x3b, 0x53, 0x259, 0x66, 0x259, 0x72, 0x3b, 0x52, 0x259, 0x62, 0x69, 0xfc, 0x6c, 0x259, 0x76, 0x76, 0x259, 0x6c, 0x3b,
+0x52, 0x259, 0x62, 0x69, 0xfc, 0x6c, 0x61, 0x78, 0x131, 0x72, 0x3b, 0x43, 0x259, 0x6d, 0x61, 0x64, 0x69, 0x79, 0x259, 0x6c,
+0x259, 0x76, 0x76, 0x259, 0x6c, 0x3b, 0x43, 0x259, 0x6d, 0x61, 0x64, 0x69, 0x79, 0x259, 0x6c, 0x61, 0x78, 0x131, 0x72, 0x3b,
+0x52, 0x259, 0x63, 0x259, 0x62, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b,
+0x15e, 0x259, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x71, 0x259, 0x64, 0x259, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69,
+0x63, 0x63, 0x259, 0x3b, 0x9ae, 0x9b9, 0x9b0, 0x9b0, 0x9ae, 0x3b, 0x9b8, 0x9ab, 0x9b0, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x989, 0x9b2, 0x20,
+0x986, 0x989, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x9b0, 0x9ac, 0x9bf, 0x989, 0x9b8, 0x20, 0x9b8, 0x9be, 0x9a8, 0x9bf, 0x3b, 0x99c, 0x9ae,
+0x9be, 0x9a6, 0x9bf, 0x989, 0x9b2, 0x20, 0x986, 0x989, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x99c, 0x9ae, 0x9be, 0x9a6, 0x9bf, 0x989, 0x9b8,
+0x20, 0x9b8, 0x9be, 0x9a8, 0x9bf, 0x3b, 0x9b0, 0x99c, 0x9ac, 0x3b, 0x9b6, 0x9be, 0x2018, 0x9ac, 0x9be, 0x9a8, 0x3b, 0x9b0, 0x9ae, 0x99c,
+0x9be, 0x9a8, 0x3b, 0x9b6, 0x9be, 0x993, 0x9af, 0x9bc, 0x9be, 0x9b2, 0x3b, 0x99c, 0x9cd, 0x9ac, 0x9bf, 0x9b2, 0x995, 0x9a6, 0x3b, 0x99c,
+0x9cd, 0x9ac, 0x9bf, 0x9b2, 0x9b9, 0x99c, 0x9cd, 0x99c, 0x3b, 0x9e7, 0x3b, 0x9e8, 0x3b, 0x9e9, 0x3b, 0x9ea, 0x3b, 0x9eb, 0x3b, 0x9ec,
+0x3b, 0x9ed, 0x3b, 0x9ee, 0x3b, 0x9ef, 0x3b, 0x9e7, 0x9e6, 0x3b, 0x9e7, 0x9e7, 0x3b, 0x9e7, 0x9e8, 0x3b, 0x43c, 0x443, 0x445, 0x430,
+0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x438, 0x2d, 0x31, 0x3b, 0x440, 0x430, 0x431,
+0x438, 0x2d, 0x32, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x2d, 0x31, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434,
+0x430, 0x2d, 0x32, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c,
+0x430, 0x437, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x41a, 0x430, 0x430, 0x434,
+0x430, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x445, 0x438, 0x434, 0x436, 0x430, 0x3b, 0x31, 0x6708, 0x3b, 0x32, 0x6708, 0x3b, 0x33,
+0x6708, 0x3b, 0x34, 0x6708, 0x3b, 0x35, 0x6708, 0x3b, 0x36, 0x6708, 0x3b, 0x37, 0x6708, 0x3b, 0x38, 0x6708, 0x3b, 0x39, 0x6708, 0x3b,
+0x31, 0x30, 0x6708, 0x3b, 0x31, 0x31, 0x6708, 0x3b, 0x31, 0x32, 0x6708, 0x3b, 0x4e00, 0x6708, 0x3b, 0x4e8c, 0x6708, 0x3b, 0x4e09, 0x6708,
+0x3b, 0x56db, 0x6708, 0x3b, 0x4e94, 0x6708, 0x3b, 0x516d, 0x6708, 0x3b, 0x4e03, 0x6708, 0x3b, 0x516b, 0x6708, 0x3b, 0x4e5d, 0x6708, 0x3b, 0x5341,
+0x6708, 0x3b, 0x5341, 0x4e00, 0x6708, 0x3b, 0x5341, 0x4e8c, 0x6708, 0x3b, 0x7a46, 0x54c8, 0x862d, 0x59c6, 0x6708, 0x3b, 0x8272, 0x6cd5, 0x723e, 0x6708,
+0x3b, 0x8cf4, 0x6bd4, 0x6708, 0x20, 0x49, 0x3b, 0x8cf4, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x4e3b, 0x99ac, 0x9054, 0x6708, 0x20, 0x49,
+0x3b, 0x4e3b, 0x99ac, 0x9054, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x8cf4, 0x54f2, 0x535c, 0x6708, 0x3b, 0x820d, 0x723e, 0x90a6, 0x6708, 0x3b, 0x8cf4,
+0x8cb7, 0x4e39, 0x6708, 0x3b, 0x9583, 0x74e6, 0x9b6f, 0x6708, 0x3b, 0x90fd, 0x723e, 0x5580, 0x723e, 0x5fb7, 0x6708, 0x3b, 0x90fd, 0x723e, 0x9ed1, 0x54f2,
+0x6708, 0x3b, 0x31, 0x2e, 0x3b, 0x32, 0x2e, 0x3b, 0x33, 0x2e, 0x3b, 0x34, 0x2e, 0x3b, 0x35, 0x2e, 0x3b, 0x36, 0x2e, 0x3b,
+0x37, 0x2e, 0x3b, 0x38, 0x2e, 0x3b, 0x39, 0x2e, 0x3b, 0x31, 0x30, 0x2e, 0x3b, 0x31, 0x31, 0x2e, 0x3b, 0x31, 0x32, 0x2e,
+0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x65, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x72, 0x65,
+0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20,
+0x49, 0x49, 0x3b, 0x72, 0x65, 0x64, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, 0x61, 0x77,
+0x2e, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x6d, 0x75,
+0x68, 0x61, 0x72, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x65, 0x62, 0xed, 0x2019, 0x75, 0x20,
+0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x65, 0x62, 0xed, 0x2019, 0x75, 0x20, 0x73, 0x2d, 0x73, 0xe1, 0x6e,
+0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x61, 0x6c, 0x2d, 0xfa, 0x6c, 0xe1, 0x3b, 0x64, 0x17e, 0x75,
+0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x61, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x65,
+0x62, 0x3b, 0x161, 0x61, 0x2019, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x161, 0x61, 0x77,
+0x77, 0x61, 0x6c, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x7a, 0xfa, 0x20, 0x6c, 0x2d,
+0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66,
+0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b,
+0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x72,
+0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e,
+0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61,
+0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x6f, 0x65, 0x68, 0x2e,
+0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49,
+0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61,
+0x6a, 0x2e, 0x3b, 0x53, 0x6a, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x6a, 0x61, 0x77, 0x2e, 0x3b, 0x44,
+0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x6b, 0x2e, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x68, 0x2e, 0x3b, 0x4d,
+0x6f, 0x65, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb,
+0x61, 0x20, 0x61, 0x6c, 0x20, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x61, 0x20, 0x61, 0x6c, 0x20,
+0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x61, 0x64, 0x2bb, 0x61, 0x6c, 0x20, 0x61, 0x77, 0x61, 0x6c,
+0x3b, 0x4a, 0x6f, 0x65, 0x6d, 0x61, 0x64, 0x2bb, 0x61, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x52, 0x61, 0x6a,
+0x61, 0x62, 0x3b, 0x53, 0x6a, 0x61, 0x2bb, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b,
+0x53, 0x6a, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x6b, 0x61, 0x2bb, 0x61, 0x62, 0x61,
+0x3b, 0x44, 0x6f, 0x65, 0x20, 0x61, 0x6c, 0x20, 0x68, 0x69, 0x7a, 0x6a, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72,
+0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77,
+0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x64,
+0x17e, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x61,
+0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x3b, 0x161, 0x61, 0x2019,
+0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x161, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64,
+0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x71, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x64,
+0x64, 0x17e, 0x61, 0x3b, 0x6d, 0x6f, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20,
+0x61, 0x77, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x74, 0x68, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x6f,
+0x75, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x74, 0x68, 0x2e, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x63, 0x68,
+0x61, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x63, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e,
+0x20, 0x71, 0x69, 0x2e, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e, 0x20, 0x68, 0x69, 0x2e, 0x3b, 0x6d, 0x6f, 0x75, 0x68, 0x61,
+0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x61, 0x20, 0x61, 0x6c, 0x20,
+0x61, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x61, 0x20, 0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69,
+0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x20, 0x6f, 0x75, 0x6c, 0x61, 0x3b, 0x6a, 0x6f, 0x75,
+0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x72, 0x61, 0x6a, 0x61,
+0x62, 0x3b, 0x63, 0x68, 0x61, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x63,
+0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x20, 0x61, 0x6c, 0x20, 0x71, 0x69, 0x60, 0x64, 0x61,
+0x3b, 0x64, 0x68, 0x6f, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x6d, 0x6f, 0x75, 0x68, 0x2e,
+0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x61, 0x77, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20,
+0x74, 0x68, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e, 0x20, 0x6f, 0x75, 0x6c, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6d, 0x2e,
+0x20, 0x74, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x63, 0x68, 0x61, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d,
+0x2e, 0x3b, 0x63, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x6f, 0x75, 0x2e, 0x20, 0x71, 0x2e, 0x3b, 0x64, 0x68, 0x6f,
+0x75, 0x2e, 0x20, 0x68, 0x2e, 0x3b, 0x10db, 0x10e3, 0x10f0, 0x2e, 0x3b, 0x10e1, 0x10d0, 0x10e4, 0x2e, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x2e,
+0x20, 0x49, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x2e, 0x20, 0x49, 0x3b, 0x10ef, 0x10e3,
+0x10db, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x10e0, 0x10d0, 0x10ef, 0x2e, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x2e, 0x3b, 0x10e0, 0x10d0, 0x10db, 0x2e,
+0x3b, 0x10e8, 0x10d0, 0x10d5, 0x2e, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d, 0x10d9, 0x2e, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d, 0x10f0, 0x2e, 0x3b,
+0x10db, 0x10e3, 0x10f0, 0x10d0, 0x10e0, 0x10d0, 0x10db, 0x10d8, 0x3b, 0x10e1, 0x10d0, 0x10e4, 0x10d0, 0x10e0, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x10d8,
+0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10d1, 0x10d8, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10ee,
+0x10d8, 0x10e0, 0x10d8, 0x3b, 0x10ef, 0x10e3, 0x10db, 0x10d0, 0x10d3, 0x10d0, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b,
+0x10ef, 0x10e3, 0x10db, 0x10d0, 0x10d3, 0x10d0, 0x20, 0x10e3, 0x10da, 0x2d, 0x10d0, 0x10ee, 0x10d8, 0x10e0, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10ef, 0x10d0,
+0x10d1, 0x10d8, 0x3b, 0x10e8, 0x10d0, 0x10d1, 0x10d0, 0x10dc, 0x10d8, 0x3b, 0x10e0, 0x10d0, 0x10db, 0x10d0, 0x10d3, 0x10d0, 0x10dc, 0x10d8, 0x3b, 0x10e8,
+0x10d0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d, 0x10d9, 0x10d0, 0x10d0, 0x10d3, 0x10d0, 0x3b, 0x10d6, 0x10e3, 0x10da, 0x2d,
+0x10f0, 0x10d8, 0x10ef, 0x10d0, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b,
+0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x44, 0x73, 0x63,
+0x68, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49,
+0x49, 0x3b, 0x52, 0x61, 0x64, 0x73, 0x63, 0x68, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52,
+0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x20, 0x6c,
+0x2d, 0x71, 0x61, 0x2bf, 0x64, 0x61, 0x3b, 0x44, 0x68, 0x75, 0x20, 0x6c, 0x2d, 0x48, 0x69, 0x64, 0x64, 0x73, 0x63, 0x68,
+0x61, 0x3b, 0xaae, 0xac1, 0xab9, 0x2e, 0x3b, 0xab8, 0xaab, 0x2e, 0x3b, 0xab0, 0xaac, 0x2e, 0x49, 0x3b, 0xab0, 0xaac, 0x2e, 0x20,
+0x49, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0x2e, 0x20, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xab0, 0xabe,
+0xa9c, 0x2e, 0x3b, 0xab6, 0xabe, 0x2e, 0x3b, 0xab0, 0xabe, 0xaae, 0x2e, 0x3b, 0xab6, 0xabe, 0xab5, 0x2e, 0x3b, 0xaa7, 0xac1, 0x2bb,
+0xab2, 0x2d, 0xa95, 0xacd, 0xaaf, 0xac1, 0x2e, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xa8f, 0xa9a, 0x2e, 0x3b, 0xaae, 0xac1, 0xab9,
+0xab0, 0xacd, 0xab0, 0xaae, 0x3b, 0xab8, 0xaab, 0xab0, 0x3b, 0xab0, 0xabe, 0xaac, 0xac0, 0x2bb, 0x20, 0x49, 0x3b, 0xab0, 0xabe, 0xaac,
+0xac0, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0xabe, 0xaa6, 0xabe, 0x20, 0x49, 0x3b, 0xa9c, 0xac1, 0xaae, 0xabe, 0xaa6,
+0xabe, 0x20, 0x49, 0x49, 0x3b, 0xab0, 0xa9c, 0xaac, 0x3b, 0xab6, 0xabe, 0x2bb, 0xaac, 0xabe, 0xaa8, 0x3b, 0xab0, 0xaae, 0xaa6, 0xabe,
+0xaa8, 0x3b, 0xab6, 0xabe, 0xab5, 0xacd, 0xab5, 0xab2, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xa95, 0xacd, 0xab5, 0xac0, 0x2bb, 0xaa1,
+0xabe, 0xab9, 0x3b, 0xaa7, 0xac1, 0x2bb, 0xab2, 0x2d, 0xab9, 0xabf, 0xa9c, 0xacd, 0xa9c, 0xabe, 0xab9, 0x3b, 0x5de, 0x5d5, 0x5d7, 0x5e8,
+0x5dd, 0x3b, 0x5e6, 0x5e4, 0x5e8, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d1,
+0x5f3, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5f3, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0,
+0x20, 0x5d1, 0x5f3, 0x3b, 0x5e8, 0x5d2, 0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8, 0x5de, 0x5d3, 0x5d0, 0x5df,
+0x3b, 0x5e9, 0x5d5, 0x5d5, 0x5d0, 0x5dc, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2, 0x5d3, 0x5d4, 0x3b, 0x5d3,
+0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x5de, 0x5d5, 0x5d7, 0x5e8, 0x5dd, 0x3b, 0x5e6, 0x5e4,
+0x5e8, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d0, 0x5d5, 0x5d5, 0x5dc, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20,
+0x5d0, 0x5be, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5d0,
+0x5d5, 0x5dc, 0x5d0, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5be, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x5d4,
+0x3b, 0x5e8, 0x5d2, 0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8, 0x5de, 0x5d3, 0x5d0, 0x5df, 0x3b, 0x5e9, 0x5d5,
+0x5d5, 0x5d0, 0x5dc, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2, 0x5d3, 0x5d4, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20,
+0x5d0, 0x5dc, 0x5be, 0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x5de, 0x5d5, 0x5d7, 0x5e8, 0x5dd, 0x3b, 0x5e6, 0x5e4, 0x5e8, 0x3b, 0x5e8,
+0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x5dc, 0x2d, 0x5d0, 0x5d5, 0x5d5, 0x5dc, 0x3b, 0x5e8, 0x5d1, 0x5d9, 0x5e2, 0x20, 0x5d0, 0x2d, 0x5ea,
+0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x5dc, 0x2d, 0x5d0, 0x5d5, 0x5dc, 0x5d0,
+0x3b, 0x5d2, 0x5f3, 0x5d5, 0x5de, 0x5d0, 0x5d3, 0x5d0, 0x20, 0x5d0, 0x2d, 0x5ea, 0x5f3, 0x5d0, 0x5e0, 0x5d9, 0x5d4, 0x3b, 0x5e8, 0x5d2,
+0x5f3, 0x5d1, 0x3b, 0x5e9, 0x5e2, 0x5d1, 0x5d0, 0x5df, 0x3b, 0x5e8, 0x5de, 0x5d3, 0x5d0, 0x5df, 0x3b, 0x5e9, 0x5d5, 0x5d5, 0x5d0, 0x5dc,
+0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be, 0x5e7, 0x5e2, 0x5d3, 0x5d4, 0x3b, 0x5d3, 0x5f3, 0x5d5, 0x20, 0x5d0, 0x5dc, 0x5be,
+0x5d7, 0x5d9, 0x5d2, 0x5f3, 0x5d4, 0x3b, 0x92e, 0x941, 0x939, 0x930, 0x94d, 0x930, 0x92e, 0x3b, 0x938, 0x92b, 0x930, 0x3b, 0x930, 0x93e,
+0x92c, 0x940, 0x20, 0x92a, 0x94d, 0x930, 0x925, 0x92e, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x926, 0x94d, 0x935, 0x93f, 0x924, 0x940,
+0x92f, 0x3b, 0x91c, 0x941, 0x92e, 0x94d, 0x921, 0x93e, 0x20, 0x92a, 0x94d, 0x930, 0x925, 0x92e, 0x3b, 0x91c, 0x941, 0x92e, 0x94d, 0x921,
+0x93e, 0x20, 0x926, 0x94d, 0x935, 0x93f, 0x924, 0x940, 0x92f, 0x3b, 0x930, 0x91c, 0x92c, 0x3b, 0x936, 0x93e, 0x935, 0x928, 0x3b, 0x930,
+0x92e, 0x91c, 0x93e, 0x928, 0x3b, 0x936, 0x935, 0x94d, 0x935, 0x94d, 0x932, 0x3b, 0x91c, 0x93f, 0x932, 0x2d, 0x915, 0x94d, 0x926, 0x93e,
+0x939, 0x3b, 0x91c, 0x93f, 0x932, 0x94d, 0x2d, 0x939, 0x93f, 0x91c, 0x94d, 0x91c, 0x93e, 0x939, 0x3b, 0x4d, 0x6f, 0x68, 0x2e, 0x3b,
+0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0xe9, 0x62, 0x2e, 0x20, 0x31, 0x3b, 0x52, 0xe9, 0x62, 0x2e, 0x20, 0x32, 0x3b, 0x44,
+0x73, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x65, 0x64, 0x2e,
+0x3b, 0x53, 0x61, 0x62, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x65, 0x76, 0x2e, 0x3b, 0x44, 0x73, 0xfc, 0x6c,
+0x20, 0x6b, 0x2e, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x2e, 0x3b, 0x4d, 0x6f, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d,
+0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x49, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x49,
+0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0xe1, 0x64, 0x69, 0x20, 0x49, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0xe1, 0x64, 0x69, 0x20,
+0x49, 0x49, 0x3b, 0x52, 0x65, 0x64, 0x73, 0x65, 0x62, 0x3b, 0x53, 0x61, 0x62, 0xe1, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61,
+0x64, 0xe1, 0x6e, 0x3b, 0x53, 0x65, 0x76, 0x76, 0xe1, 0x6c, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x6b, 0x61, 0x64, 0x65,
+0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x65, 0x64, 0x73, 0x65, 0x3b, 0x4d, 0x6f, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d,
+0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x76, 0x76, 0x65, 0x6c,
+0x3b, 0x52, 0xe9, 0x62, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x63, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x73, 0x65, 0x6d,
+0xe1, 0x64, 0x69, 0x20, 0x65, 0x6c, 0x20, 0x61, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x44, 0x73, 0x65, 0x6d, 0xe1, 0x64, 0x69,
+0x20, 0x65, 0x6c, 0x20, 0x61, 0x63, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x64, 0x73, 0x65, 0x62, 0x3b, 0x53, 0x61,
+0x62, 0xe1, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x53, 0x65, 0x76, 0x76, 0xe1, 0x6c, 0x3b, 0x44,
+0x73, 0xfc, 0x6c, 0x20, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x44, 0x73, 0xfc, 0x6c, 0x20, 0x68, 0x65, 0x64, 0x73, 0x65, 0x3b,
0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62,
0x2e, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b,
0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x2e,
-0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x645,
-0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x647, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49,
-0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x648, 0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631, 0x627, 0x62c,
-0x627, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b,
-0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x62d, 0x644, 0x627, 0x644, 0x20, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631,
-0x645, 0x3b, 0x62f, 0x20, 0x635, 0x641, 0x631, 0x6d0, 0x20, 0x62f, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639,
-0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x648, 0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631,
-0x627, 0x62c, 0x627, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627,
-0x644, 0x3b, 0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x62d, 0x644, 0x627, 0x644, 0x20, 0x62d, 0x62c, 0x3b, 0x645,
-0x62d, 0x631, 0x645, 0x3b, 0x62f, 0x20, 0x635, 0x641, 0x631, 0x6d2, 0x20, 0x62f, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628,
-0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x648, 0x645, 0x627, 0x20, 0x49, 0x49,
-0x3b, 0x631, 0x627, 0x62c, 0x627, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634,
-0x648, 0x627, 0x644, 0x3b, 0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x62d, 0x644, 0x627, 0x644, 0x20, 0x62d, 0x62c,
-0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x627, 0x648, 0x644,
-0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627,
-0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c,
-0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630,
-0x6cc, 0x642, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x6cc, 0x62d, 0x62c, 0x647, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631,
-0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b,
-0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f,
-0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631,
-0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x6cc, 0x642, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x6cc, 0x62d,
-0x62c, 0x647, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x627,
-0x648, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc,
-0x200c, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b,
-0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644,
-0x3b, 0x630, 0x6cc, 0x642, 0x639, 0x62f, 0x647, 0x654, 0x3b, 0x630, 0x6cc, 0x62d, 0x62c, 0x647, 0x654, 0x3b, 0x4d, 0x75, 0x68, 0x2e,
-0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49,
-0x3b, 0x44, 0x17c, 0x75, 0x2e, 0x20, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x2e, 0x3b,
-0x53, 0x7a, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x7a, 0x61, 0x77, 0x2e, 0x3b, 0x5a, 0x75, 0x20, 0x61,
-0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72,
-0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62,
-0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x6d,
-0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x64, 0x17c, 0x61, 0x62, 0x3b, 0x53, 0x7a, 0x61, 0x62, 0x61, 0x6e,
-0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x7a, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x5a, 0x75, 0x20,
-0x61, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x61, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17c, 0x64, 0x17c,
-0x61, 0x3b, 0xa2e, 0xa41, 0xa39, 0xa71, 0x2e, 0x3b, 0xa38, 0xa2b, 0x2e, 0x3b, 0xa30, 0xa2c, 0x2e, 0x20, 0x49, 0x3b, 0xa30, 0xa2c,
-0x2e, 0x20, 0x49, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0x2e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0x2e, 0x20, 0x49, 0x49, 0x3b,
-0xa30, 0xa3e, 0xa1c, 0x2e, 0x3b, 0xa38, 0xa3c, 0xa3e, 0x2e, 0x3b, 0xa30, 0xa3e, 0xa2e, 0x2e, 0x3b, 0xa38, 0xa3c, 0xa05, 0x2e, 0x3b,
-0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0x2e, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa39, 0xa3f, 0x2e, 0x3b,
-0xa2e, 0xa41, 0xa39, 0xa71, 0xa30, 0xa2e, 0x3b, 0xa38, 0xa2b, 0xa30, 0x3b, 0xa30, 0xa2c, 0xa40, 0x2bb, 0x20, 0x49, 0x3b, 0xa30, 0xa2c,
-0xa40, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26,
-0xa3e, 0x20, 0x49, 0x49, 0x3b, 0xa30, 0xa1c, 0xa2c, 0x3b, 0xa38, 0xa3c, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa30, 0xa2e, 0xa1c, 0xa3c, 0xa3e,
-0xa28, 0x3b, 0xa38, 0xa3c, 0xa35, 0xa3e, 0xa32, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0xa26, 0xa3e, 0xa39, 0x3b,
-0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa39, 0xa3f, 0xa1c, 0xa4d, 0xa39, 0xa3e, 0x3b, 0xa2e, 0xa41, 0xa39, 0xa71, 0xa30, 0xa2e, 0x3b,
-0xa38, 0xa2b, 0xa30, 0x3b, 0xa30, 0xa2c, 0xa40, 0x20, 0x2bb, 0x20, 0x49, 0x3b, 0xa30, 0xa2c, 0xa40, 0x20, 0x2bb, 0x20, 0x49, 0x49,
-0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x49, 0x3b,
-0xa30, 0xa1c, 0xa2c, 0x3b, 0xa38, 0xa3c, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa30, 0xa2e, 0xa1c, 0xa3c, 0xa3e, 0xa28, 0x3b, 0xa38, 0xa3c, 0xa35,
-0xa3e, 0xa32, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0xa26, 0xa3e, 0xa39, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32,
-0x2d, 0xa39, 0xa3f, 0xa1c, 0xa4d, 0xa39, 0xa3e, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, 0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430,
-0x431, 0x2e, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49,
-0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431,
-0x2e, 0x3b, 0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x448, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b,
-0x437, 0x443, 0x43b, 0x44c, 0x2d, 0x445, 0x2e, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444,
-0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x438, 0x2d, 0x443, 0x43b, 0x44c, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x440,
-0x430, 0x431, 0x438, 0x2d, 0x443, 0x43b, 0x44c, 0x2d, 0x430, 0x445, 0x438, 0x440, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x2d,
-0x443, 0x43b, 0x44c, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x2d, 0x443, 0x43b,
-0x44c, 0x2d, 0x430, 0x445, 0x438, 0x440, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x430, 0x43d,
-0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x448, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x437, 0x443, 0x43b,
-0x44c, 0x2d, 0x43a, 0x430, 0x430, 0x434, 0x430, 0x3b, 0x437, 0x443, 0x43b, 0x44c, 0x2d, 0x445, 0x438, 0x434, 0x436, 0x436, 0x430, 0x3b,
-0x41c, 0x443, 0x445, 0x2e, 0x3b, 0x421, 0x430, 0x444, 0x2e, 0x3b, 0x420, 0x435, 0x431, 0x2e, 0x20, 0x31, 0x3b, 0x420, 0x435, 0x431,
-0x2e, 0x20, 0x32, 0x3b, 0x40f, 0x443, 0x43c, 0x2e, 0x20, 0x31, 0x3b, 0x40f, 0x443, 0x43c, 0x2e, 0x20, 0x32, 0x3b, 0x420, 0x435,
-0x45f, 0x2e, 0x3b, 0x428, 0x430, 0x2e, 0x3b, 0x420, 0x430, 0x43c, 0x2e, 0x3b, 0x428, 0x435, 0x2e, 0x3b, 0x417, 0x443, 0x43b, 0x2d,
-0x43a, 0x2e, 0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x445, 0x2e, 0x3b, 0x41c, 0x443, 0x445, 0x430, 0x440, 0x435, 0x43c, 0x3b, 0x421, 0x430,
-0x444, 0x435, 0x440, 0x3b, 0x420, 0x435, 0x431, 0x438, 0x20, 0x31, 0x3b, 0x420, 0x435, 0x431, 0x438, 0x20, 0x32, 0x3b, 0x40f, 0x443,
-0x43c, 0x430, 0x434, 0x435, 0x20, 0x31, 0x3b, 0x40f, 0x443, 0x43c, 0x430, 0x434, 0x435, 0x20, 0x32, 0x3b, 0x420, 0x435, 0x45f, 0x435,
-0x431, 0x3b, 0x428, 0x430, 0x2bb, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x428, 0x435, 0x432,
-0x430, 0x43b, 0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x43a, 0x430, 0x434, 0x435, 0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x445, 0x438, 0x45f, 0x435,
-0x3b, 0x41c, 0x443, 0x440, 0x430, 0x445, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x2bb,
-0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x408, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49,
-0x3b, 0x408, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x420, 0x430, 0x452, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x2bb,
-0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x443,
-0x2bb, 0x43b, 0x2d, 0x41a, 0x438, 0x2bb, 0x434, 0x430, 0x3b, 0x414, 0x443, 0x2bb, 0x43b, 0x2d, 0x445, 0x438, 0x452, 0x430, 0x3b, 0x4d,
-0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x65, 0x62, 0x2e, 0x20, 0x31, 0x3b, 0x52, 0x65, 0x62, 0x2e,
-0x20, 0x32, 0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x31, 0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x32, 0x3b, 0x52,
-0x65, 0x64, 0x17e, 0x2e, 0x3b, 0x160, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x160, 0x65, 0x2e, 0x3b, 0x5a, 0x75,
-0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x65, 0x6d, 0x3b,
-0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, 0x20, 0x31, 0x3b, 0x52, 0x65, 0x62, 0x69, 0x20, 0x32, 0x3b,
-0x44, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x31, 0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x32, 0x3b,
-0x52, 0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x160, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61,
-0x6e, 0x3b, 0x160, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x75, 0x6c,
-0x2d, 0x68, 0x69, 0x64, 0x17e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72,
-0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75,
-0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x111,
-0x61, 0x62, 0x3b, 0x160, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x160, 0x61,
-0x76, 0x61, 0x6c, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d, 0x4b, 0x69, 0x2bb, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d,
-0x68, 0x69, 0x111, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20,
-0x49, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e,
-0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x64, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e,
-0x3b, 0x161, 0x61, 0x75, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c,
-0x2d, 0x68, 0x2e, 0x3b, 0x61, 0x6c, 0x2d, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61,
-0x72, 0x3b, 0x72, 0x61, 0x62, 0xed, 0xb4, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62,
-0xed, 0xb4, 0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0xe1, 0x6e, 0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20,
-0x6c, 0x2d, 0xfa, 0x6c, 0xe1, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69,
-0x72, 0x61, 0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x3b, 0x161, 0x61, 0xb4, 0x20, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61,
-0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x161, 0x61, 0x75, 0x76, 0xe1, 0x6c, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b,
-0x61, 0xb4, 0x20, 0x64, 0x61, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b,
+0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x2e, 0x3b, 0x4d,
+0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x41, 0x77, 0x61, 0x6c, 0x3b, 0x52,
+0x61, 0x62, 0x2e, 0x20, 0x41, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x41, 0x77, 0x61, 0x6c, 0x3b,
+0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x41, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x79, 0x61, 0x2e,
+0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x79, 0x61, 0x77, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x6b, 0x61, 0x2e, 0x3b, 0x5a,
+0x75, 0x6c, 0x68, 0x69, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b,
+0x52, 0x61, 0x62, 0x69, 0x75, 0x6c, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x75, 0x6c, 0x61, 0x6b, 0x68,
+0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x69, 0x6c, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64,
+0x69, 0x6c, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x79, 0x61, 0x6b, 0x62, 0x61,
+0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x79, 0x61, 0x77, 0x61, 0x6c, 0x3b, 0x5a, 0x75, 0x6c,
+0x6b, 0x61, 0x69, 0x64, 0x61, 0x68, 0x3b, 0x5a, 0x75, 0x6c, 0x68, 0x69, 0x6a, 0x61, 0x68, 0x3b, 0x30e0, 0x30cf, 0x30c3, 0x30e9,
+0x30e0, 0x3b, 0x30b5, 0x30d5, 0x30a2, 0x30eb, 0x3b, 0x30e9, 0x30d3, 0x30fc, 0x30fb, 0x30a6, 0x30eb, 0x30fb, 0x30a2, 0x30a6, 0x30ef, 0x30eb, 0x3b, 0x30e9,
+0x30d3, 0x30fc, 0x30fb, 0x30a6, 0x30c3, 0x30fb, 0x30b5, 0x30fc, 0x30cb, 0x30fc, 0x3b, 0x30b8, 0x30e5, 0x30de, 0x30fc, 0x30c0, 0x30eb, 0x30fb, 0x30a2, 0x30a6,
+0x30ef, 0x30eb, 0x3b, 0x30b8, 0x30e5, 0x30de, 0x30fc, 0x30c0, 0x30c3, 0x30b5, 0x30fc, 0x30cb, 0x30fc, 0x3b, 0x30e9, 0x30b8, 0x30e3, 0x30d6, 0x3b, 0x30b7,
+0x30e3, 0x30a2, 0x30d0, 0x30fc, 0x30f3, 0x3b, 0x30e9, 0x30de, 0x30c0, 0x30fc, 0x30f3, 0x3b, 0x30b7, 0x30e3, 0x30a6, 0x30ef, 0x30fc, 0x30eb, 0x3b, 0x30ba,
+0x30eb, 0x30fb, 0x30ab, 0x30a4, 0x30c0, 0x3b, 0x30ba, 0x30eb, 0x30fb, 0x30d2, 0x30c3, 0x30b8, 0x30e3, 0x3b, 0xcae, 0xcc1, 0xcb9, 0xccd, 0x2e, 0x3b,
+0xcb8, 0xcab, 0xcbe, 0x2e, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x49, 0x3b,
+0xc9c, 0xcc1, 0xcae, 0xccd, 0x2e, 0x20, 0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xccd, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xcb0, 0xc9c, 0xccd,
+0x2e, 0x3b, 0xcb6, 0x2e, 0x3b, 0xcb0, 0xcae, 0xccd, 0x2e, 0x3b, 0xcb6, 0xcb5, 0xccd, 0x2e, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd,
+0x2d, 0xc95, 0xcbf, 0x2e, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd, 0x2d, 0xcb9, 0x2e, 0x3b, 0xcae, 0xcc1, 0xcb9, 0xcb0, 0xcae, 0xccd,
+0x3b, 0xcb8, 0xcab, 0xcbe, 0xcb0, 0xccd, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49, 0x3b, 0xcb0, 0xcac, 0xcbf, 0x2018, 0x20, 0x49,
+0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xcbe, 0xca6, 0xcbe, 0x20, 0x49, 0x3b, 0xc9c, 0xcc1, 0xcae, 0xcbe, 0xca6, 0xcbe, 0x20, 0x49, 0x49,
+0x3b, 0xcb0, 0xc9c, 0xcac, 0xccd, 0x3b, 0xcb6, 0x2019, 0xcac, 0xcbe, 0xca8, 0xccd, 0x3b, 0xcb0, 0xcae, 0xca6, 0xcbe, 0xca8, 0xccd, 0x3b,
+0xcb6, 0xcb5, 0xccd, 0xcb5, 0xcbe, 0xcb2, 0xccd, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd, 0x2d, 0xc95, 0xcbf, 0x2018, 0xca1, 0xcbe, 0xcb9,
+0xccd, 0x3b, 0xca7, 0xcc1, 0x2018, 0xcb2, 0xccd, 0x2d, 0xcb9, 0xcbf, 0xc9c, 0xcbe, 0xcb9, 0xccd, 0x3b, 0xbb34, 0xd558, 0xb78c, 0x3b, 0xc0ac,
+0xd30c, 0xb974, 0x3b, 0xb77c, 0xbe44, 0x20, 0xc54c, 0x20, 0xc544, 0xc648, 0x3b, 0xb77c, 0xbe44, 0x20, 0xc54c, 0x20, 0xc384, 0xb2c8, 0x3b, 0xc8fc,
+0xb9c8, 0xb2e4, 0x20, 0xc54c, 0x20, 0xc544, 0xc648, 0x3b, 0xc8fc, 0xb9c8, 0xb2e4, 0x20, 0xc54c, 0x20, 0xc384, 0xb2c8, 0x3b, 0xb77c, 0xc7a1, 0x3b,
+0xc250, 0xc544, 0xbc18, 0x3b, 0xb77c, 0xb9c8, 0xb2e8, 0x3b, 0xc250, 0xc648, 0x3b, 0xb4c0, 0x20, 0xc54c, 0x20, 0xae4c, 0xb2e4, 0x3b, 0xb4c0, 0x20,
+0xc54c, 0x20, 0xd788, 0xc790, 0x3b, 0x6d, 0x75, 0x1e96, 0x65, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x65, 0x66, 0x65, 0x72, 0x3b, 0x72,
+0x65, 0x62, 0xee, 0x2bf, 0x75, 0x6c, 0x65, 0x77, 0x65, 0x6c, 0x3b, 0x72, 0x65, 0x62, 0xee, 0x2bf, 0x75, 0x6c, 0x61, 0x78,
+0x65, 0x72, 0x3b, 0x63, 0x65, 0x6d, 0x61, 0x7a, 0xee, 0x79, 0x65, 0x6c, 0x65, 0x77, 0x65, 0x6c, 0x3b, 0x63, 0x65, 0x6d,
+0x61, 0x7a, 0xee, 0x79, 0x65, 0x6c, 0x61, 0x78, 0x65, 0x72, 0x3b, 0x72, 0x65, 0x63, 0x65, 0x62, 0x3b, 0x15f, 0x65, 0x2bf,
+0x62, 0x61, 0x6e, 0x3b, 0x72, 0x65, 0x6d, 0x65, 0x7a, 0x61, 0x6e, 0x3b, 0x15f, 0x65, 0x77, 0x61, 0x6c, 0x3b, 0x7a, 0xee,
+0x6c, 0x71, 0x65, 0x2bf, 0x64, 0x65, 0x3b, 0x7a, 0xee, 0x6c, 0x1e96, 0x65, 0x63, 0x65, 0x3b, 0xea1, 0xeb8, 0xeae, 0xeb1, 0xe94,
+0x3b, 0xec0, 0xe84, 0xeb2, 0xeb0, 0x3b, 0xeae, 0xead, 0xe81, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae, 0xead, 0xe81, 0xe9a, 0xeb5, 0x20,
+0x32, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x31, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x32, 0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0,
+0x3b, 0xe8a, 0xeb2, 0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0, 0xea1, 0xeb0, 0x3b, 0xec0, 0xe8a, 0xebb, 0xeb2, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xe81,
+0xeb4, 0xead, 0xeb8, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xeab, 0xeb4, 0xe88, 0x3b, 0xea1, 0xeb8, 0xea3, 0xeb0, 0xeae, 0xead, 0xea1, 0x3b, 0xe8a,
+0xeb2, 0xe9f, 0xeb2, 0xea3, 0x3b, 0xeae, 0xead, 0xe94, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae, 0xead, 0xe94, 0xe9a, 0xeb5, 0x20, 0x32,
+0x3b, 0xe88, 0xeb8, 0xea1, 0xeb2, 0xe94, 0xeb2, 0x20, 0x31, 0x3b, 0xe88, 0xeb8, 0xea1, 0xeb2, 0xe94, 0xeb2, 0x20, 0x32, 0x3b, 0xeae,
+0xeb2, 0xe88, 0xeb1, 0xe9a, 0x3b, 0xe8a, 0xeb0, 0xe9a, 0xeb2, 0xe99, 0x3b, 0xeae, 0xeb2, 0xea1, 0xeb2, 0xe94, 0xead, 0xe99, 0x3b, 0xec0,
+0xe8a, 0xebb, 0xeb2, 0xea7, 0xeb1, 0xe94, 0x3b, 0xe94, 0xeb8, 0xead, 0xeb1, 0xe94, 0xe81, 0xeb4, 0xe94, 0xeb0, 0x3b, 0xe94, 0xeb8, 0xead,
+0xeb1, 0xe94, 0xe81, 0xeb4, 0xe88, 0xeb0, 0x3b, 0xea1, 0xeb8, 0xeae, 0xeb1, 0xe94, 0x3b, 0xec0, 0xe84, 0xeb2, 0xeb0, 0x3b, 0xeae, 0xead,
+0xe94, 0xe9a, 0xeb5, 0x20, 0x31, 0x3b, 0xeae, 0xead, 0xe81, 0xe9a, 0xeb5, 0x20, 0x32, 0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x31,
+0x3b, 0xe99, 0xeb8, 0xea1, 0xeb2, 0x20, 0x32, 0x3b, 0xec0, 0xeae, 0xeb2, 0xeb0, 0x3b, 0xe8a, 0xeb0, 0xead, 0xecc, 0x3b, 0xec0, 0xeae,
+0xeb2, 0xeb0, 0xea1, 0xeb0, 0x3b, 0xec0, 0xe8a, 0xebb, 0xeb2, 0x3b, 0xe8a, 0xeb8, 0xea5, 0xe81, 0xeb4, 0xead, 0xeb8, 0x3b, 0xe8a, 0xeb8,
+0xea5, 0xeab, 0xeb4, 0xe88, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x73,
+0x3b, 0x31, 0x2e, 0x20, 0x72, 0x61, 0x62, 0x12b, 0x3b, 0x32, 0x2e, 0x20, 0x72, 0x61, 0x62, 0x12b, 0x3b, 0x31, 0x2e, 0x20,
+0x64, 0x17e, 0x75, 0x6d, 0x101, 0x64, 0x101, 0x3b, 0x32, 0x2e, 0x20, 0x64, 0x17e, 0x75, 0x6d, 0x101, 0x64, 0x101, 0x3b, 0x72,
+0x61, 0x64, 0x17e, 0x61, 0x62, 0x73, 0x3b, 0x161, 0x61, 0x62, 0x61, 0x6e, 0x73, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x101,
+0x6e, 0x73, 0x3b, 0x161, 0x61, 0x75, 0x76, 0x61, 0x6c, 0x73, 0x3b, 0x64, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x6b, 0x69, 0x64,
+0x101, 0x3b, 0x64, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x101, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441,
+0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x45f,
+0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x45f, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x45f, 0x2e, 0x3b, 0x448,
+0x430, 0x431, 0x2e, 0x3b, 0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x448, 0x430, 0x432, 0x2e, 0x3b, 0x434, 0x443, 0x43b, 0x43a, 0x2e, 0x3b,
+0x434, 0x443, 0x43b, 0x445, 0x2e, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x435, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b,
+0x440, 0x430, 0x431, 0x438, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x438, 0x20, 0x49, 0x49, 0x3b, 0x45f, 0x443, 0x43c, 0x430, 0x434,
+0x430, 0x20, 0x49, 0x3b, 0x45f, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x45f, 0x430, 0x431, 0x3b,
+0x448, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x448, 0x430, 0x432, 0x430, 0x43b, 0x3b,
+0x434, 0x443, 0x43b, 0x43a, 0x438, 0x434, 0x430, 0x3b, 0x434, 0x443, 0x43b, 0x445, 0x438, 0x45f, 0x430, 0x3b, 0xd2e, 0xd41, 0xd39, 0x2e,
+0x3b, 0xd38, 0xd2b, 0x2e, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0x2e, 0x3b, 0xd31, 0xd2c,
+0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0x2e, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d,
+0xd35, 0x2e, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0x2e, 0x3b, 0xd31, 0xd1c, 0x2e, 0x3b, 0xd36,
+0xd39, 0xd2c, 0xd3e, 0x2e, 0x3b, 0xd31, 0xd2e, 0xd26, 0xd3e, 0x2e, 0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0x2e, 0x3b, 0xd26, 0xd41,
+0xd7d, 0x20, 0xd16, 0xd39, 0x2e, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd39, 0xd3f, 0x2e, 0x3b, 0xd2e, 0xd41, 0xd39, 0xd31, 0xd02, 0x3b,
+0xd38, 0xd2b, 0xd7c, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd31, 0xd2c, 0xd40,
+0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35,
+0xd7d, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd31, 0xd1c, 0xd2c, 0xd4d, 0x3b, 0xd36,
+0xd39, 0xd2c, 0xd3e, 0xd7b, 0x3b, 0xd31, 0xd2e, 0xd26, 0xd3e, 0xd7b, 0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd7d, 0x3b, 0xd26, 0xd41,
+0xd7d, 0x20, 0xd16, 0xd39, 0xd26, 0xd4d, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd39, 0xd3f, 0xd1c, 0xd4d, 0xd1c, 0x3b, 0xd2e, 0xd41, 0x3b,
+0xd38, 0x3b, 0xd31, 0x3b, 0xd31, 0x3b, 0xd1c, 0x3b, 0xd1c, 0x3b, 0xd31, 0x3b, 0xd36, 0x3b, 0xd31, 0x3b, 0xd36, 0x3b, 0xd26, 0xd41,
+0x3b, 0xd26, 0xd41, 0x3b, 0xd2e, 0xd41, 0xd39, 0xd31, 0xd02, 0x3b, 0xd38, 0xd2b, 0xd7c, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d,
+0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd31, 0xd2c, 0xd40, 0xd39, 0xd41, 0xd7d, 0x20, 0xd06, 0xd16, 0xd3f, 0xd7c, 0x3b, 0xd1c,
+0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd05, 0xd35, 0xd4d, 0xd35, 0xd7d, 0x3b, 0xd1c, 0xd2e, 0xd3e, 0xd26, 0xd41, 0xd7d, 0x20, 0xd06,
+0xd16, 0xd3f, 0xd7c, 0x3b, 0xd31, 0xd1c, 0xd2c, 0xd4d, 0x3b, 0xd36, 0xd39, 0xd2c, 0xd3e, 0xd7b, 0x3b, 0xd31, 0xd2e, 0xd33, 0xd3e, 0xd7b,
+0x3b, 0xd36, 0xd35, 0xd4d, 0xd35, 0xd3e, 0xd7d, 0x3b, 0xd26, 0xd41, 0xd7d, 0x20, 0xd16, 0xd39, 0xd26, 0xd4d, 0x3b, 0xd26, 0xd41, 0xd7d,
+0x20, 0xd39, 0xd3f, 0xd1c, 0xd4d, 0xd1c, 0x3b, 0x92e, 0x94b, 0x939, 0x2e, 0x3b, 0x938, 0x92b, 0x2e, 0x3b, 0x930, 0x93e, 0x92c, 0x940,
+0x20, 0x49, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x49, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x2e, 0x20, 0x49, 0x3b, 0x91c,
+0x941, 0x92e, 0x93e, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x930, 0x91d, 0x93e, 0x2e, 0x3b, 0x936, 0x93e, 0x92c, 0x93e, 0x2e, 0x3b, 0x930,
+0x92e, 0x2e, 0x3b, 0x936, 0x935, 0x94d, 0x935, 0x93e, 0x2e, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x915, 0x940, 0x2e, 0x3b, 0x927, 0x941,
+0x932, 0x2d, 0x939, 0x93f, 0x2e, 0x3b, 0x92e, 0x94b, 0x939, 0x930, 0x92e, 0x3b, 0x938, 0x92b, 0x930, 0x3b, 0x930, 0x93e, 0x92c, 0x940,
+0x20, 0x49, 0x3b, 0x930, 0x93e, 0x92c, 0x940, 0x20, 0x49, 0x49, 0x3b, 0x91c, 0x941, 0x92e, 0x93e, 0x926, 0x93e, 0x20, 0x49, 0x3b,
+0x91c, 0x941, 0x92e, 0x93e, 0x926, 0x93e, 0x20, 0x49, 0x49, 0x3b, 0x930, 0x91d, 0x93e, 0x92c, 0x3b, 0x936, 0x93e, 0x92c, 0x93e, 0x928,
+0x3b, 0x930, 0x92e, 0x91c, 0x93e, 0x928, 0x3b, 0x936, 0x935, 0x94d, 0x935, 0x93e, 0x932, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x915, 0x940,
+0x926, 0x93e, 0x939, 0x3b, 0x927, 0x941, 0x932, 0x2d, 0x939, 0x93f, 0x91c, 0x93e, 0x939, 0x3b, 0x967, 0x3b, 0x968, 0x3b, 0x969, 0x3b,
+0x96a, 0x3b, 0x96b, 0x3b, 0x96c, 0x3b, 0x96d, 0x3b, 0x96e, 0x3b, 0x96f, 0x3b, 0x967, 0x966, 0x3b, 0x967, 0x967, 0x3b, 0x967, 0x968,
+0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x72, 0x61,
+0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49,
+0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x77,
+0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x2e, 0x3b,
0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb,
0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49,
0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61,
-0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c,
+0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c,
0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x71, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d,
-0x68, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61,
-0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62,
-0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c,
-0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61,
-0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64,
-0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019,
-0x64, 0x61, 0x3b, 0x44, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72,
-0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61,
-0x77, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b,
-0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d,
-0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2019, 0x62,
-0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64,
-0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a,
-0x6a, 0x61, 0x3b, 0xbae, 0xbc1, 0xbb9, 0x2e, 0x3b, 0xb9a, 0xb83, 0xbaa, 0x2e, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0,
-0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, 0x20, 0x32, 0x3b, 0xbb0,
-0xb9c, 0x2e, 0x3b, 0xbb7, 0xb83, 0x2e, 0x3b, 0xbb0, 0xbae, 0x2e, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd,
-0x20, 0xb95, 0xb83, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc1, 0xbb9, 0xbb0,
-0xbcd, 0xbb0, 0xbae, 0xbcd, 0x3b, 0xb9a, 0xb83, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf,
-0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, 0x20, 0x32, 0x3b, 0xbb0,
-0xb9c, 0xbaa, 0xbcd, 0x3b, 0xbb7, 0xb83, 0xbaa, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xbb0, 0xbae, 0xbb2, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xbb7, 0xbb5,
-0xbcd, 0xbb5, 0xbbe, 0xbb2, 0xbcd, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0xba4, 0xbbe, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd,
-0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0xb9c, 0xbbe, 0x3b, 0xc2e, 0xc41, 0xc39, 0x2e, 0x3b, 0xc38, 0xc2b, 0x2e, 0x3b, 0xc30, 0x2e, 0x20,
-0x49, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0x2e, 0x20,
-0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0x2e, 0x3b, 0xc37, 0xc2c, 0xc3e, 0x2e, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0x2e, 0x3b, 0xc37, 0xc35,
-0xc4d, 0xc35, 0xc3e, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc15, 0xc3f, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc39,
-0xc3f, 0x2e, 0x3b, 0xc2e, 0xc41, 0xc39, 0xc30, 0xc4d, 0xc30, 0xc02, 0x3b, 0xc38, 0xc2b, 0xc30, 0xc4d, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20,
-0x49, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e,
-0xc26, 0xc3e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0xc2c, 0xc4d, 0x3b, 0xc37, 0xc2c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc30, 0xc02, 0xc1c,
-0xc3e, 0xc28, 0xc4d, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, 0xc3e, 0xc32, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc15, 0xc3f, 0x20,
-0xc26, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc39, 0xc3f, 0xc1c, 0xc4d, 0xc1c, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xe21,
-0xe38, 0xe2e, 0xe31, 0xe23, 0x2e, 0x3b, 0xe40, 0xe28, 0xe32, 0xe30, 0x2e, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23,
-0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32,
-0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe40, 0xe23, 0xe32, 0xe30, 0x2e, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe4c, 0x2e, 0x3b, 0xe40, 0xe23,
-0xe32, 0xe30, 0xe21, 0xe30, 0x2e, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0x2e,
-0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0x2e, 0x3b, 0xe21, 0xe38, 0xe2e, 0xe30, 0xe23, 0xe4c, 0xe23, 0xe2d, 0xe21, 0x3b, 0xe0b,
-0xe2d, 0xe1f, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49,
-0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b,
-0xe23, 0xe2d, 0xe08, 0xe31, 0xe1a, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe30, 0xe1a, 0xe32, 0xe19, 0x3b, 0xe23, 0xe2d, 0xe21, 0xe30, 0xe14, 0xe2d,
-0xe19, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0xe31, 0xe25, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0xe14, 0xe30, 0xe2e, 0xe3a,
-0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0xe0d, 0xe30, 0xe2e, 0xe3a, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x2e, 0x3b, 0x53,
-0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b,
-0x43, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x43, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70,
-0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a,
-0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x4d, 0x75, 0x68, 0x61,
-0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, 0x6c, 0x65, 0x76, 0x76,
-0x65, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, 0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69,
-0x79, 0x65, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x61, 0x68,
-0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a,
-0x61, 0x6e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x69,
-0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x645, 0x6c7, 0x6be, 0x6d5, 0x631, 0x631, 0x6d5, 0x645, 0x3b, 0x633, 0x6d5, 0x67e, 0x6d5,
-0x631, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, 0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x631, 0x6d5, 0x628, 0x649,
-0x626, 0x6c7, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, 0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x6d5,
-0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, 0x3b,
-0x631, 0x6d5, 0x62c, 0x6d5, 0x628, 0x3b, 0x634, 0x6d5, 0x626, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x627, 0x645, 0x649, 0x632, 0x627, 0x646,
-0x3b, 0x634, 0x6d5, 0x6cb, 0x6cb, 0x627, 0x644, 0x3b, 0x632, 0x6c7, 0x644, 0x642, 0x6d5, 0x626, 0x62f, 0x6d5, 0x3b, 0x632, 0x6c7, 0x644,
-0x6be, 0x6d5, 0x62c, 0x62c, 0x6d5, 0x3b, 0x43c, 0x443, 0x445, 0x3b, 0x441, 0x430, 0x444, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49,
-0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c,
-0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x3b, 0x440, 0x430, 0x43c, 0x3b, 0x434, 0x430,
-0x432, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x3b, 0x43c, 0x443,
-0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b,
-0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x3b, 0x434, 0x436,
-0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x430, 0x431,
-0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x434, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x437, 0x443,
-0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x430, 0x430, 0x434, 0x430, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x456, 0x434, 0x436,
-0x430, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, 0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440,
-0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e,
-0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x2e, 0x3b, 0x440, 0x430, 0x43c, 0x2e,
-0x3b, 0x434, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c,
-0x2d, 0x445, 0x2e, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644,
-0x627, 0x648, 0x651, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645,
-0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b,
-0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646,
-0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d,
-0x62c, 0x6c3, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x20, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644,
-0x627, 0x648, 0x644, 0x3b, 0x631, 0x20, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627,
-0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646,
-0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648,
-0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b,
-0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2bc,
-0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2bc, 0x20, 0x75, 0x6c, 0x2d, 0x6f,
-0x78, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x4a,
-0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53,
-0x68, 0x61, 0x2bc, 0x62, 0x6f, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x76,
-0x6f, 0x6c, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x71, 0x61, 0x2bc, 0x64, 0x61, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x69, 0x6a,
-0x6a, 0x61, 0x3b, 0x41c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430,
-0x431, 0x438, 0x443, 0x43b, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d, 0x43e, 0x445,
-0x438, 0x440, 0x3b, 0x416, 0x443, 0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x416, 0x443, 0x43c, 0x43e,
-0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x445, 0x440, 0x43e, 0x3b, 0x420, 0x430, 0x436, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x44a, 0x431,
-0x43e, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x437, 0x43e, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x43e, 0x43b, 0x3b, 0x417, 0x438,
-0x43b, 0x2d, 0x49b, 0x430, 0x44a, 0x434, 0x430, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x4b3, 0x438, 0x436, 0x436, 0x430, 0x3b, 0x6d, 0x75,
-0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20,
-0x69, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x69, 0x69, 0x3b,
-0x72, 0x65, 0x64, 0x17e, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, 0x65, 0x2e, 0x3b, 0x7a,
-0x75, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x65, 0x6d,
-0x3b, 0x73, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb,
-0x20, 0x69, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64,
-0x65, 0x20, 0x69, 0x69, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x161, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72,
-0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b, 0x161, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64,
-0x65, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x65, 0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b,
-0x74, 0x65, 0x64, 0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b,
-0x64, 0x65, 0x61, 0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b,
-0x64, 0x7a, 0x6f, 0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b,
-0x61, 0x66, 0x254, 0x66, 0x69, 0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b, 0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61,
-0x6d, 0x6c, 0x254, 0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254,
-0x6e, 0x79, 0x254, 0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65,
-0x3b, 0x64, 0x7a, 0x6f, 0x6d, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x64,
-0x65, 0x20, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x64,
-0x65, 0x20, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61,
-0x20, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52,
-0x61, 0x6a, 0x61, 0x62, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x64, 0x65, 0x20, 0x52,
-0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x65,
-0x20, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75,
-0x2bb, 0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x7a46, 0x54c8, 0x5170, 0x59c6, 0x6708, 0x3b, 0x8272, 0x6cd5, 0x5c14, 0x6708,
-0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49,
-0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x8d56, 0x54f2, 0x535c, 0x6708, 0x3b, 0x820d, 0x5c14, 0x90a6, 0x6708, 0x3b, 0x8d56,
-0x4e70, 0x4e39, 0x6708, 0x3b, 0x95ea, 0x74e6, 0x9c81, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x5580, 0x5c14, 0x5fb7, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x9ed1, 0x54f2,
-0x6708, 0x3b
+0x68, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62,
+0x2e, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x6a,
+0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x2e, 0x3b, 0x73, 0x68, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d,
+0x2e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x64, 0x68, 0x75,
+0x2bb, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b,
+0x631, 0x628, 0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x64a, 0x20,
+0x6f2, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648,
+0x627, 0x644, 0x3b, 0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x64a, 0x20, 0x627, 0x644, 0x62d, 0x62c, 0x3b,
+0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49,
+0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x648, 0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631, 0x62c, 0x628,
+0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x62f, 0x627,
+0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x64a, 0x20, 0x627, 0x644, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b,
+0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627,
+0x62f, 0x20, 0x6f1, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x20, 0x6f2, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646,
+0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647,
+0x3b, 0x630, 0x64a, 0x20, 0x627, 0x644, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628,
+0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645, 0x648,
+0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627,
+0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x64a, 0x20, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x64a, 0x20,
+0x627, 0x644, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x62f, 0x20, 0x635, 0x641, 0x631, 0x6d2, 0x20, 0x62f, 0x3b, 0x631,
+0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645,
+0x648, 0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636,
+0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x62f, 0x627, 0x644, 0x642, 0x627, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x64a, 0x20,
+0x627, 0x644, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x62f, 0x20, 0x635, 0x641, 0x631, 0x6d2, 0x20, 0x62f, 0x3b, 0x631,
+0x628, 0x64a, 0x639, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x49, 0x49, 0x3b, 0x62c, 0x645, 0x627, 0x639, 0x647, 0x3b, 0x62c, 0x645,
+0x648, 0x645, 0x627, 0x20, 0x49, 0x49, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636,
+0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x64a, 0x20, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x64a,
+0x20, 0x627, 0x644, 0x62d, 0x62c, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c,
+0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645,
+0x627, 0x62f, 0x6cc, 0x200c, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627, 0x644, 0x62b, 0x627,
+0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634,
+0x648, 0x627, 0x644, 0x3b, 0x630, 0x6cc, 0x642, 0x639, 0x62f, 0x647, 0x3b, 0x630, 0x6cc, 0x62d, 0x62c, 0x647, 0x3b, 0x645, 0x3b, 0x635,
+0x3b, 0x631, 0x3b, 0x631, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x631, 0x3b, 0x634, 0x3b, 0x631, 0x3b, 0x634, 0x3b, 0x630, 0x3b, 0x630,
+0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x627, 0x648, 0x644,
+0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627,
+0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x200c, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c,
+0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630,
+0x6cc, 0x642, 0x639, 0x62f, 0x647, 0x654, 0x3b, 0x630, 0x6cc, 0x62d, 0x62c, 0x647, 0x654, 0x3b, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53,
+0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x44,
+0x17c, 0x75, 0x2e, 0x20, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x2e, 0x3b, 0x53, 0x7a,
+0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x7a, 0x61, 0x77, 0x2e, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c, 0x2d,
+0x6b, 0x2e, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d,
+0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb,
+0x20, 0x49, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x44, 0x17c, 0x75, 0x6d, 0x61, 0x64,
+0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x64, 0x17c, 0x61, 0x62, 0x3b, 0x53, 0x7a, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52,
+0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x7a, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c,
+0x2d, 0x6b, 0x61, 0x64, 0x61, 0x3b, 0x5a, 0x75, 0x20, 0x61, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17c, 0x64, 0x17c, 0x61, 0x3b,
+0xa2e, 0xa41, 0xa39, 0xa71, 0x2e, 0x3b, 0xa38, 0xa2b, 0x2e, 0x3b, 0xa30, 0xa2c, 0x2e, 0x20, 0x49, 0x3b, 0xa30, 0xa2c, 0x2e, 0x20,
+0x49, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0x2e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xa30, 0xa3e,
+0xa1c, 0x2e, 0x3b, 0xa38, 0xa3c, 0xa3e, 0x2e, 0x3b, 0xa30, 0xa3e, 0xa2e, 0x2e, 0x3b, 0xa38, 0xa3c, 0xa05, 0x2e, 0x3b, 0xa26, 0xa42,
+0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0x2e, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa39, 0xa3f, 0x2e, 0x3b, 0xa2e, 0xa41,
+0xa39, 0xa71, 0xa30, 0xa2e, 0x3b, 0xa38, 0xa2b, 0xa30, 0x3b, 0xa30, 0xa2c, 0xa40, 0x2bb, 0x20, 0x49, 0x3b, 0xa30, 0xa2c, 0xa40, 0x2bb,
+0x20, 0x49, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20,
+0x49, 0x49, 0x3b, 0xa30, 0xa1c, 0xa2c, 0x3b, 0xa38, 0xa3c, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa30, 0xa2e, 0xa1c, 0xa3c, 0xa3e, 0xa28, 0x3b,
+0xa38, 0xa3c, 0xa35, 0xa3e, 0xa32, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0xa26, 0xa3e, 0xa39, 0x3b, 0xa26, 0xa42,
+0x2d, 0xa05, 0xa32, 0x2d, 0xa39, 0xa3f, 0xa1c, 0xa4d, 0xa39, 0xa3e, 0x3b, 0xa2e, 0xa41, 0xa39, 0xa71, 0xa30, 0xa2e, 0x3b, 0xa38, 0xa2b,
+0xa30, 0x3b, 0xa30, 0xa2c, 0xa40, 0x20, 0x2bb, 0x20, 0x49, 0x3b, 0xa30, 0xa2c, 0xa40, 0x20, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0xa1c,
+0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x3b, 0xa1c, 0xa41, 0xa2e, 0xa3e, 0xa26, 0xa3e, 0x20, 0x49, 0x49, 0x3b, 0xa30, 0xa1c,
+0xa2c, 0x3b, 0xa38, 0xa3c, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa30, 0xa2e, 0xa1c, 0xa3c, 0xa3e, 0xa28, 0x3b, 0xa38, 0xa3c, 0xa35, 0xa3e, 0xa32,
+0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa15, 0xa40, 0xa26, 0xa3e, 0xa39, 0x3b, 0xa26, 0xa42, 0x2d, 0xa05, 0xa32, 0x2d, 0xa39,
+0xa3f, 0xa1c, 0xa4d, 0xa39, 0xa3e, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, 0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, 0x2e,
+0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x434,
+0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x2e, 0x3b,
+0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x448, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b, 0x437, 0x443,
+0x43b, 0x44c, 0x2d, 0x445, 0x2e, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440,
+0x3b, 0x440, 0x430, 0x431, 0x438, 0x2d, 0x443, 0x43b, 0x44c, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x440, 0x430, 0x431,
+0x438, 0x2d, 0x443, 0x43b, 0x44c, 0x2d, 0x430, 0x445, 0x438, 0x440, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x2d, 0x443, 0x43b,
+0x44c, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x2d, 0x443, 0x43b, 0x44c, 0x2d,
+0x430, 0x445, 0x438, 0x440, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440,
+0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x448, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x44c, 0x3b, 0x437, 0x443, 0x43b, 0x44c, 0x2d,
+0x43a, 0x430, 0x430, 0x434, 0x430, 0x3b, 0x437, 0x443, 0x43b, 0x44c, 0x2d, 0x445, 0x438, 0x434, 0x436, 0x436, 0x430, 0x3b, 0x41c, 0x443,
+0x445, 0x2e, 0x3b, 0x421, 0x430, 0x444, 0x2e, 0x3b, 0x420, 0x435, 0x431, 0x2e, 0x20, 0x31, 0x3b, 0x420, 0x435, 0x431, 0x2e, 0x20,
+0x32, 0x3b, 0x40f, 0x443, 0x43c, 0x2e, 0x20, 0x31, 0x3b, 0x40f, 0x443, 0x43c, 0x2e, 0x20, 0x32, 0x3b, 0x420, 0x435, 0x45f, 0x2e,
+0x3b, 0x428, 0x430, 0x2e, 0x3b, 0x420, 0x430, 0x43c, 0x2e, 0x3b, 0x428, 0x435, 0x2e, 0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x43a, 0x2e,
+0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x445, 0x2e, 0x3b, 0x41c, 0x443, 0x445, 0x430, 0x440, 0x435, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x435,
+0x440, 0x3b, 0x420, 0x435, 0x431, 0x438, 0x20, 0x31, 0x3b, 0x420, 0x435, 0x431, 0x438, 0x20, 0x32, 0x3b, 0x40f, 0x443, 0x43c, 0x430,
+0x434, 0x435, 0x20, 0x31, 0x3b, 0x40f, 0x443, 0x43c, 0x430, 0x434, 0x435, 0x20, 0x32, 0x3b, 0x420, 0x435, 0x45f, 0x435, 0x431, 0x3b,
+0x428, 0x430, 0x2bb, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x428, 0x435, 0x432, 0x430, 0x43b,
+0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x43a, 0x430, 0x434, 0x435, 0x3b, 0x417, 0x443, 0x43b, 0x2d, 0x445, 0x438, 0x45f, 0x435, 0x3b, 0x41c,
+0x443, 0x440, 0x430, 0x445, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x2bb, 0x20, 0x49,
+0x3b, 0x420, 0x430, 0x431, 0x438, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x408, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x3b, 0x408,
+0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x420, 0x430, 0x452, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x2bb, 0x431, 0x430,
+0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x443, 0x2bb, 0x43b,
+0x2d, 0x41a, 0x438, 0x2bb, 0x434, 0x430, 0x3b, 0x414, 0x443, 0x2bb, 0x43b, 0x2d, 0x445, 0x438, 0x452, 0x430, 0x3b, 0x4d, 0x75, 0x68,
+0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x65, 0x62, 0x2e, 0x20, 0x31, 0x3b, 0x52, 0x65, 0x62, 0x2e, 0x20, 0x32,
+0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x31, 0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x32, 0x3b, 0x52, 0x65, 0x64,
+0x17e, 0x2e, 0x3b, 0x160, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x160, 0x65, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d,
+0x6b, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61,
+0x66, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, 0x20, 0x31, 0x3b, 0x52, 0x65, 0x62, 0x69, 0x20, 0x32, 0x3b, 0x44, 0x17e,
+0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x31, 0x3b, 0x44, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x32, 0x3b, 0x52, 0x65,
+0x64, 0x17e, 0x65, 0x62, 0x3b, 0x160, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b,
+0x160, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68,
+0x69, 0x64, 0x17e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x68, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52,
+0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61,
+0x64, 0x61, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x111, 0x61, 0x62,
+0x3b, 0x160, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x160, 0x61, 0x76, 0x61,
+0x6c, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d, 0x4b, 0x69, 0x2bb, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69,
+0x111, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b,
+0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d,
+0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x64, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161,
+0x61, 0x75, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68,
+0x2e, 0x3b, 0x61, 0x6c, 0x2d, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b,
+0x72, 0x61, 0x62, 0xed, 0xb4, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0xed, 0xb4,
+0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0xe1, 0x6e, 0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d,
+0xfa, 0x6c, 0xe1, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69, 0x72, 0x61,
+0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x3b, 0x161, 0x61, 0xb4, 0x20, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61,
+0x64, 0xe1, 0x6e, 0x3b, 0x161, 0x61, 0x75, 0x76, 0xe1, 0x6c, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x61, 0xb4,
+0x20, 0x64, 0x61, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b, 0x4d, 0x75,
+0x78, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20,
+0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61,
+0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44,
+0x75, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x75, 0x6c, 0x2d, 0x58, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, 0x72, 0x72, 0x61,
+0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77,
+0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x75,
+0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61,
+0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x63,
+0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b,
+0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, 0x61, 0x63, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x78, 0x69,
+0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x78, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20,
+0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d,
+0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b,
+0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c,
+0x2d, 0x48, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52,
+0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20,
+0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x61,
+0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69,
+0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x63, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64,
+0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, 0x61,
+0x63, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x78, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72,
+0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61,
+0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61,
+0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b,
+0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb,
+0x6c, 0x2d, 0x71, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61,
+0x68, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62,
+0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c,
+0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b,
+0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x52, 0x61, 0x6a, 0x61,
+0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68,
+0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x44, 0x68,
+0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73,
+0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b,
+0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64,
+0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68,
+0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61,
+0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d,
+0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443,
+0x4b3, 0x2e, 0x3b, 0x421, 0x430, 0x444, 0x2e, 0x3b, 0x420, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x2e, 0x20,
+0x49, 0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x420, 0x430,
+0x4b7, 0x2e, 0x3b, 0x428, 0x430, 0x2e, 0x3b, 0x420, 0x430, 0x43c, 0x2e, 0x3b, 0x428, 0x430, 0x432, 0x2e, 0x3b, 0x414, 0x445, 0x443,
+0x43b, 0x2d, 0x49a, 0x2e, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x4b2, 0x2e, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430,
+0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x435,
+0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x4b7,
+0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, 0x430, 0x431, 0x3b,
+0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x430, 0x43b,
+0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x49a, 0x438, 0x434, 0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x4b2, 0x438, 0x4b7,
+0x4b7, 0x430, 0x4b3, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420,
+0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e,
+0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d,
+0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c,
+0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, 0x49a, 0x438, 0x434,
+0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, 0x4b2, 0x438, 0x4b7, 0x4b7, 0x430, 0x4b3, 0x3b, 0xbae, 0xbc1, 0xbb9, 0x2e, 0x3b,
+0xb9a, 0xb83, 0xbaa, 0x2e, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae,
+0x2e, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, 0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0x2e, 0x3b, 0xbb7, 0xb83, 0x2e, 0x3b, 0xbb0,
+0xbae, 0x2e, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2,
+0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc1, 0xbb9, 0xbb0, 0xbcd, 0xbb0, 0xbae, 0xbcd, 0x3b, 0xb9a, 0xb83, 0xbaa,
+0xbb0, 0xbcd, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe,
+0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, 0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0xbaa, 0xbcd, 0x3b, 0xbb7, 0xb83, 0xbaa, 0xbbe,
+0xba9, 0xbcd, 0x3b, 0xbb0, 0xbae, 0xbb2, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbb2, 0xbcd, 0x3b, 0xba4, 0xbc1,
+0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0xba4, 0xbbe, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0xb9c, 0xbbe, 0x3b,
+0xc2e, 0xc41, 0xc39, 0x2e, 0x3b, 0xc38, 0xc2b, 0x2e, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x49, 0x3b,
+0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0x2e, 0x3b, 0xc37,
+0xc2c, 0xc3e, 0x2e, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0x2e, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, 0xc3e, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32,
+0xc4d, 0x2d, 0xc15, 0xc3f, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc39, 0xc3f, 0x2e, 0x3b, 0xc2e, 0xc41, 0xc39, 0xc30, 0xc4d,
+0xc30, 0xc02, 0x3b, 0xc38, 0xc2b, 0xc30, 0xc4d, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x49,
+0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c,
+0xc2c, 0xc4d, 0x3b, 0xc37, 0xc2c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35,
+0xc3e, 0xc32, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc15, 0xc3f, 0x20, 0xc26, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32,
+0xc4d, 0x2d, 0xc39, 0xc3f, 0xc1c, 0xc4d, 0xc1c, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xe21, 0xe38, 0xe2e, 0xe31, 0xe23, 0x2e, 0x3b, 0xe40, 0xe28,
+0xe32, 0xe30, 0x2e, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08,
+0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe40, 0xe23,
+0xe32, 0xe30, 0x2e, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe4c, 0x2e, 0x3b, 0xe40, 0xe23, 0xe32, 0xe30, 0xe21, 0xe30, 0x2e, 0x3b, 0xe40, 0xe0a,
+0xe32, 0xe27, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0x2e,
+0x3b, 0xe21, 0xe38, 0xe2e, 0xe30, 0xe23, 0xe4c, 0xe23, 0xe2d, 0xe21, 0x3b, 0xe0b, 0xe2d, 0xe1f, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe23, 0xe2d,
+0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20,
+0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe23, 0xe2d, 0xe08, 0xe31, 0xe1a, 0x3b, 0xe0a, 0xe30,
+0xe2d, 0xe30, 0xe1a, 0xe32, 0xe19, 0x3b, 0xe23, 0xe2d, 0xe21, 0xe30, 0xe14, 0xe2d, 0xe19, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0xe31, 0xe25,
+0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0xe14, 0xe30, 0xe2e, 0xe3a, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0xe0d,
+0xe30, 0xe2e, 0xe3a, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x2e, 0x65,
+0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b,
+0x43, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52,
+0x61, 0x6d, 0x2e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a,
+0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66,
+0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc,
+0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c,
+0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70,
+0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61,
+0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x645,
+0x6c7, 0x6be, 0x6d5, 0x631, 0x631, 0x6d5, 0x645, 0x3b, 0x633, 0x6d5, 0x67e, 0x6d5, 0x631, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7,
+0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631,
+0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x62c, 0x6d5, 0x645,
+0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, 0x3b, 0x631, 0x6d5, 0x62c, 0x6d5, 0x628, 0x3b, 0x634, 0x6d5,
+0x626, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x627, 0x645, 0x649, 0x632, 0x627, 0x646, 0x3b, 0x634, 0x6d5, 0x6cb, 0x6cb, 0x627, 0x644, 0x3b,
+0x632, 0x6c7, 0x644, 0x642, 0x6d5, 0x626, 0x62f, 0x6d5, 0x3b, 0x632, 0x6c7, 0x644, 0x6be, 0x6d5, 0x62c, 0x62c, 0x6d5, 0x3b, 0x43c, 0x443,
+0x445, 0x3b, 0x441, 0x430, 0x444, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49,
+0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436,
+0x3b, 0x448, 0x430, 0x430, 0x431, 0x3b, 0x440, 0x430, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d,
+0x43a, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441,
+0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b,
+0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49,
+0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434,
+0x430, 0x43d, 0x3b, 0x434, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x430, 0x430, 0x434,
+0x430, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x456, 0x434, 0x436, 0x430, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441,
+0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434,
+0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436,
+0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x2e, 0x3b, 0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x434, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443,
+0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x2e, 0x3b, 0x645, 0x62d, 0x631, 0x645,
+0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x631, 0x628, 0x6cc,
+0x639, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648,
+0x651, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628,
+0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648,
+0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b,
+0x635, 0x641, 0x631, 0x3b, 0x631, 0x20, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x631, 0x20, 0x628, 0x6cc,
+0x639, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644,
+0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639,
+0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642,
+0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66,
+0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x61, 0x76, 0x76, 0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x6f, 0x78, 0x2e,
+0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x61, 0x76, 0x76, 0x2e, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x6f, 0x78, 0x2e, 0x3b,
+0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x2e,
+0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72,
+0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2019, 0x20, 0x75, 0x6c, 0x2d, 0x61,
+0x76, 0x76, 0x61, 0x6c, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2019, 0x20, 0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x4a,
+0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x20,
+0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x6f,
+0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x76, 0x6f, 0x6c, 0x3b, 0x5a, 0x75,
+0x6c, 0x2d, 0x71, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443,
+0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d,
+0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d, 0x43e, 0x445, 0x438, 0x440, 0x3b, 0x416, 0x443,
+0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x416, 0x443, 0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d,
+0x443, 0x445, 0x440, 0x43e, 0x3b, 0x420, 0x430, 0x436, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x44a, 0x431, 0x43e, 0x43d, 0x3b, 0x420, 0x430,
+0x43c, 0x430, 0x437, 0x43e, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x43e, 0x43b, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x49b, 0x430, 0x44a,
+0x434, 0x430, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x4b3, 0x438, 0x436, 0x436, 0x430, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61,
+0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x69, 0x3b, 0x64, 0x17e,
+0x75, 0x6d, 0x2e, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x69, 0x69, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x2e,
+0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, 0x65, 0x2e, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x2e,
+0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x65,
+0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x69, 0x3b, 0x64,
+0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x69, 0x3b,
+0x72, 0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x161, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x7a, 0x61,
+0x6e, 0x3b, 0x161, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x7a, 0x75, 0x6c,
+0x2d, 0x68, 0x69, 0x64, 0x17e, 0x65, 0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61,
+0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61,
+0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65,
+0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x69,
+0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b, 0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b,
+0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b,
+0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d,
+0x65, 0x3b, 0x64, 0x65, 0x20, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x61, 0x66,
+0x61, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62,
+0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x64, 0x65,
+0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b,
+0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61,
+0x6e, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb,
+0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69,
+0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x7a46, 0x54c8, 0x5170, 0x59c6, 0x6708, 0x3b, 0x8272, 0x6cd5, 0x5c14, 0x6708, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20,
+0x49, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708,
+0x20, 0x49, 0x49, 0x3b, 0x8d56, 0x54f2, 0x535c, 0x6708, 0x3b, 0x820d, 0x5c14, 0x90a6, 0x6708, 0x3b, 0x8d56, 0x4e70, 0x4e39, 0x6708, 0x3b, 0x95ea,
+0x74e6, 0x9c81, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x5580, 0x5c14, 0x5fb7, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x9ed1, 0x54f2, 0x6708, 0x3b
};
// GENERATED PART ENDS HERE
diff --git a/src/corelib/time/qjalalicalendar_data_p.h b/src/corelib/time/qjalalicalendar_data_p.h
index 865e3ff98d..5bc44c83a0 100644
--- a/src/corelib/time/qjalalicalendar_data_p.h
+++ b/src/corelib/time/qjalalicalendar_data_p.h
@@ -59,8 +59,8 @@ QT_BEGIN_NAMESPACE
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2019-05-27 from the
- Common Locale Data Repository v35.1
+ This part of the file was generated on 2019-10-24 from the
+ Common Locale Data Repository v36
http://www.unicode.org/cldr/
@@ -334,6 +334,7 @@ static const QCalendarLocale locale_data[] = {
{ 55, 44, 38,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Inuktitut/Canadian Aboriginal/Canada
{ 55, 7, 38,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Inuktitut/Latin/Canada
{ 57, 7, 104,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Irish/Latin/Ireland
+ { 57, 7, 224,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Irish/Latin/United Kingdom
{ 58, 7, 106,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Italian/Latin/Italy
{ 58, 7, 184,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Italian/Latin/San Marino
{ 58, 7, 206,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Italian/Latin/Switzerland
@@ -374,11 +375,11 @@ static const QCalendarLocale locale_data[] = {
{ 85, 7, 203,{ 682,84 },{ 682,84 },{ 185,27 },{ 682,84 },{ 682,84 },{ 185,27 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
{ 86, 7, 74,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Occitan/Latin/France
{ 87, 26, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Oriya/Oriya/India
- { 88, 1, 1,{ 2684,63 },{ 2684,63 },{ 185,27 },{ 2684,63 },{ 2684,63 },{ 185,27 }}, // Pashto/Arabic/Afghanistan
- { 88, 1, 163,{ 2684,63 },{ 2684,63 },{ 185,27 },{ 2684,63 },{ 2684,63 },{ 185,27 }}, // Pashto/Arabic/Pakistan
- { 89, 1, 102,{ 2747,67 },{ 2747,67 },{ 2814,24 },{ 2747,67 },{ 2747,67 },{ 2814,24 }}, // Persian/Arabic/Iran
- { 89, 1, 1,{ 2747,67 },{ 2747,67 },{ 2838,24 },{ 2747,67 },{ 2862,57 },{ 2814,24 }}, // Persian/Arabic/Afghanistan
- { 90, 7, 172,{ 2919,84 },{ 2919,84 },{ 185,27 },{ 2919,84 },{ 2919,84 },{ 185,27 }}, // Polish/Latin/Poland
+ { 88, 1, 1,{ 2684,63 },{ 2684,63 },{ 2747,27 },{ 2684,63 },{ 2684,63 },{ 2747,27 }}, // Pashto/Arabic/Afghanistan
+ { 88, 1, 163,{ 2684,63 },{ 2684,63 },{ 2747,27 },{ 2684,63 },{ 2684,63 },{ 2747,27 }}, // Pashto/Arabic/Pakistan
+ { 89, 1, 102,{ 2774,67 },{ 2774,67 },{ 2841,24 },{ 2774,67 },{ 2774,67 },{ 2841,24 }}, // Persian/Arabic/Iran
+ { 89, 1, 1,{ 2774,67 },{ 2774,67 },{ 2865,24 },{ 2774,67 },{ 2889,57 },{ 2841,24 }}, // Persian/Arabic/Afghanistan
+ { 90, 7, 172,{ 2946,84 },{ 2946,84 },{ 185,27 },{ 2946,84 },{ 2946,84 },{ 185,27 }}, // Polish/Latin/Poland
{ 91, 7, 30,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Brazil
{ 91, 7, 6,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Angola
{ 91, 7, 39,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Cape Verde
@@ -391,30 +392,30 @@ static const QCalendarLocale locale_data[] = {
{ 91, 7, 173,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Portugal
{ 91, 7, 185,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Sao Tome And Principe
{ 91, 7, 206,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Portuguese/Latin/Switzerland
- { 92, 4, 100,{ 3003,78 },{ 3003,78 },{ 185,27 },{ 3003,78 },{ 3003,78 },{ 185,27 }}, // Punjabi/Gurmukhi/India
+ { 92, 4, 100,{ 3030,78 },{ 3030,78 },{ 185,27 },{ 3030,78 },{ 3030,78 },{ 185,27 }}, // Punjabi/Gurmukhi/India
{ 92, 1, 163,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Punjabi/Arabic/Pakistan
{ 93, 7, 169,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Quechua/Latin/Peru
{ 93, 7, 26,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Quechua/Latin/Bolivia
{ 93, 7, 63,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Quechua/Latin/Ecuador
{ 94, 7, 206,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Romansh/Latin/Switzerland
- { 95, 7, 177,{ 3081,86 },{ 3081,86 },{ 185,27 },{ 3081,86 },{ 3081,86 },{ 185,27 }}, // Romanian/Latin/Romania
- { 95, 7, 141,{ 3081,86 },{ 3081,86 },{ 185,27 },{ 3081,86 },{ 3081,86 },{ 185,27 }}, // Romanian/Latin/Moldova
- { 96, 2, 178,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Russia
- { 96, 2, 20,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Belarus
- { 96, 2, 110,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Kazakhstan
- { 96, 2, 116,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Kyrgyzstan
- { 96, 2, 141,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Moldova
- { 96, 2, 222,{ 3167,81 },{ 3167,81 },{ 185,27 },{ 3167,81 },{ 3167,81 },{ 185,27 }}, // Russian/Cyrillic/Ukraine
+ { 95, 7, 177,{ 3108,86 },{ 3108,86 },{ 185,27 },{ 3108,86 },{ 3108,86 },{ 185,27 }}, // Romanian/Latin/Romania
+ { 95, 7, 141,{ 3108,86 },{ 3108,86 },{ 185,27 },{ 3108,86 },{ 3108,86 },{ 185,27 }}, // Romanian/Latin/Moldova
+ { 96, 2, 178,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Russia
+ { 96, 2, 20,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Belarus
+ { 96, 2, 110,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Kazakhstan
+ { 96, 2, 116,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Kyrgyzstan
+ { 96, 2, 141,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Moldova
+ { 96, 2, 222,{ 3194,81 },{ 3194,81 },{ 185,27 },{ 3194,81 },{ 3194,81 },{ 185,27 }}, // Russian/Cyrillic/Ukraine
{ 98, 7, 41,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Sango/Latin/Central African Republic
{ 99, 13, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Sanskrit/Devanagari/India
- { 100, 2, 243,{ 3248,81 },{ 3248,81 },{ 185,27 },{ 3248,81 },{ 3248,81 },{ 185,27 }}, // Serbian/Cyrillic/Serbia
- { 100, 7, 27,{ 3329,81 },{ 3329,81 },{ 185,27 },{ 3329,81 },{ 3329,81 },{ 185,27 }}, // Serbian/Latin/Bosnia And Herzegowina
- { 100, 7, 242,{ 3329,81 },{ 3329,81 },{ 185,27 },{ 3329,81 },{ 3329,81 },{ 185,27 }}, // Serbian/Latin/Montenegro
- { 100, 7, 243,{ 3329,81 },{ 3329,81 },{ 185,27 },{ 3329,81 },{ 3329,81 },{ 185,27 }}, // Serbian/Latin/Serbia
- { 100, 2, 27,{ 3248,81 },{ 3248,81 },{ 185,27 },{ 3248,81 },{ 3248,81 },{ 185,27 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
- { 100, 2, 242,{ 3248,81 },{ 3248,81 },{ 185,27 },{ 3248,81 },{ 3248,81 },{ 185,27 }}, // Serbian/Cyrillic/Montenegro
- { 100, 2, 257,{ 3248,81 },{ 3248,81 },{ 185,27 },{ 3248,81 },{ 3248,81 },{ 185,27 }}, // Serbian/Cyrillic/Kosovo
- { 100, 7, 257,{ 3329,81 },{ 3329,81 },{ 185,27 },{ 3329,81 },{ 3329,81 },{ 185,27 }}, // Serbian/Latin/Kosovo
+ { 100, 2, 243,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Serbian/Cyrillic/Serbia
+ { 100, 2, 27,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
+ { 100, 2, 242,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Serbian/Cyrillic/Montenegro
+ { 100, 2, 257,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Serbian/Cyrillic/Kosovo
+ { 100, 7, 27,{ 3356,81 },{ 3356,81 },{ 185,27 },{ 3356,81 },{ 3356,81 },{ 185,27 }}, // Serbian/Latin/Bosnia And Herzegowina
+ { 100, 7, 242,{ 3356,81 },{ 3356,81 },{ 185,27 },{ 3356,81 },{ 3356,81 },{ 185,27 }}, // Serbian/Latin/Montenegro
+ { 100, 7, 243,{ 3356,81 },{ 3356,81 },{ 185,27 },{ 3356,81 },{ 3356,81 },{ 185,27 }}, // Serbian/Latin/Serbia
+ { 100, 7, 257,{ 3356,81 },{ 3356,81 },{ 185,27 },{ 3356,81 },{ 3356,81 },{ 185,27 }}, // Serbian/Latin/Kosovo
{ 101, 2, 81,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Ossetic/Cyrillic/Georgia
{ 101, 2, 178,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Ossetic/Cyrillic/Russia
{ 102, 7, 195,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Southern Sotho/Latin/South Africa
@@ -457,35 +458,36 @@ static const QCalendarLocale locale_data[] = {
{ 111, 7, 238,{ 682,84 },{ 682,84 },{ 185,27 },{ 682,84 },{ 682,84 },{ 185,27 }}, // Spanish/Latin/Canary Islands
{ 111, 7, 246,{ 682,84 },{ 682,84 },{ 185,27 },{ 682,84 },{ 682,84 },{ 185,27 }}, // Spanish/Latin/Latin America
{ 111, 7, 250,{ 682,84 },{ 682,84 },{ 185,27 },{ 682,84 },{ 682,84 },{ 185,27 }}, // Spanish/Latin/Ceuta And Melilla
+ { 112, 7, 101,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Sundanese/Latin/Indonesia
{ 113, 7, 210,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Swahili/Latin/Tanzania
{ 113, 7, 49,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Swahili/Latin/Congo Kinshasa
{ 113, 7, 111,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Swahili/Latin/Kenya
{ 113, 7, 221,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Swahili/Latin/Uganda
- { 114, 7, 205,{ 3410,84 },{ 3410,84 },{ 185,27 },{ 3494,84 },{ 3494,84 },{ 185,27 }}, // Swedish/Latin/Sweden
- { 114, 7, 73,{ 3410,84 },{ 3410,84 },{ 185,27 },{ 3494,84 },{ 3494,84 },{ 185,27 }}, // Swedish/Latin/Finland
- { 114, 7, 248,{ 3410,84 },{ 3410,84 },{ 185,27 },{ 3494,84 },{ 3494,84 },{ 185,27 }}, // Swedish/Latin/Aland Islands
+ { 114, 7, 205,{ 3437,84 },{ 3437,84 },{ 185,27 },{ 3521,84 },{ 3521,84 },{ 185,27 }}, // Swedish/Latin/Sweden
+ { 114, 7, 73,{ 3437,84 },{ 3437,84 },{ 185,27 },{ 3521,84 },{ 3521,84 },{ 185,27 }}, // Swedish/Latin/Finland
+ { 114, 7, 248,{ 3437,84 },{ 3437,84 },{ 185,27 },{ 3521,84 },{ 3521,84 },{ 185,27 }}, // Swedish/Latin/Aland Islands
{ 115, 7, 106,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Sardinian/Latin/Italy
- { 116, 2, 209,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tajik/Cyrillic/Tajikistan
- { 117, 27, 100,{ 3578,64 },{ 3642,94 },{ 185,27 },{ 3578,64 },{ 3642,94 },{ 185,27 }}, // Tamil/Tamil/India
- { 117, 27, 130,{ 3578,64 },{ 3642,94 },{ 185,27 },{ 3578,64 },{ 3642,94 },{ 185,27 }}, // Tamil/Tamil/Malaysia
- { 117, 27, 190,{ 3578,64 },{ 3642,94 },{ 185,27 },{ 3578,64 },{ 3642,94 },{ 185,27 }}, // Tamil/Tamil/Singapore
- { 117, 27, 198,{ 3578,64 },{ 3642,94 },{ 185,27 },{ 3578,64 },{ 3642,94 },{ 185,27 }}, // Tamil/Tamil/Sri Lanka
+ { 116, 2, 209,{ 3605,81 },{ 3605,81 },{ 185,27 },{ 3605,81 },{ 3605,81 },{ 185,27 }}, // Tajik/Cyrillic/Tajikistan
+ { 117, 27, 100,{ 3686,64 },{ 3750,94 },{ 185,27 },{ 3686,64 },{ 3750,94 },{ 185,27 }}, // Tamil/Tamil/India
+ { 117, 27, 130,{ 3686,64 },{ 3750,94 },{ 185,27 },{ 3686,64 },{ 3750,94 },{ 185,27 }}, // Tamil/Tamil/Malaysia
+ { 117, 27, 190,{ 3686,64 },{ 3750,94 },{ 185,27 },{ 3686,64 },{ 3750,94 },{ 185,27 }}, // Tamil/Tamil/Singapore
+ { 117, 27, 198,{ 3686,64 },{ 3750,94 },{ 185,27 },{ 3686,64 },{ 3750,94 },{ 185,27 }}, // Tamil/Tamil/Sri Lanka
{ 118, 2, 178,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tatar/Cyrillic/Russia
- { 119, 28, 100,{ 3736,89 },{ 3736,89 },{ 185,27 },{ 3736,89 },{ 3736,89 },{ 185,27 }}, // Telugu/Telugu/India
- { 120, 30, 211,{ 3825,99 },{ 3825,99 },{ 185,27 },{ 3825,99 },{ 3825,99 },{ 185,27 }}, // Thai/Thai/Thailand
+ { 119, 28, 100,{ 3844,89 },{ 3844,89 },{ 185,27 },{ 3844,89 },{ 3844,89 },{ 185,27 }}, // Telugu/Telugu/India
+ { 120, 30, 211,{ 3933,99 },{ 3933,99 },{ 185,27 },{ 3933,99 },{ 3933,99 },{ 185,27 }}, // Thai/Thai/Thailand
{ 121, 31, 44,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tibetan/Tibetan/China
{ 121, 31, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tibetan/Tibetan/India
{ 122, 14, 69,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tigrinya/Ethiopic/Ethiopia
{ 122, 14, 67,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tigrinya/Ethiopic/Eritrea
{ 123, 7, 214,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tongan/Latin/Tonga
{ 124, 7, 195,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tsonga/Latin/South Africa
- { 125, 7, 217,{ 3924,81 },{ 3924,81 },{ 185,27 },{ 3924,81 },{ 3924,81 },{ 185,27 }}, // Turkish/Latin/Turkey
- { 125, 7, 56,{ 3924,81 },{ 3924,81 },{ 185,27 },{ 3924,81 },{ 3924,81 },{ 185,27 }}, // Turkish/Latin/Cyprus
+ { 125, 7, 217,{ 4032,81 },{ 4032,81 },{ 185,27 },{ 4032,81 },{ 4032,81 },{ 185,27 }}, // Turkish/Latin/Turkey
+ { 125, 7, 56,{ 4032,81 },{ 4032,81 },{ 185,27 },{ 4032,81 },{ 4032,81 },{ 185,27 }}, // Turkish/Latin/Cyprus
{ 126, 7, 218,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Turkmen/Latin/Turkmenistan
{ 128, 1, 44,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Uighur/Arabic/China
- { 129, 2, 222,{ 4005,50 },{ 4055,81 },{ 185,27 },{ 4136,58 },{ 4055,81 },{ 185,27 }}, // Ukrainian/Cyrillic/Ukraine
- { 130, 1, 163,{ 4194,67 },{ 4194,67 },{ 185,27 },{ 4194,67 },{ 4194,67 },{ 185,27 }}, // Urdu/Arabic/Pakistan
- { 130, 1, 100,{ 4194,67 },{ 4194,67 },{ 185,27 },{ 4194,67 },{ 4194,67 },{ 185,27 }}, // Urdu/Arabic/India
+ { 129, 2, 222,{ 4113,50 },{ 4163,81 },{ 185,27 },{ 4244,58 },{ 4163,81 },{ 185,27 }}, // Ukrainian/Cyrillic/Ukraine
+ { 130, 1, 163,{ 4302,67 },{ 4302,67 },{ 185,27 },{ 4302,67 },{ 4302,67 },{ 185,27 }}, // Urdu/Arabic/Pakistan
+ { 130, 1, 100,{ 4302,67 },{ 4302,67 },{ 185,27 },{ 4302,67 },{ 4302,67 },{ 185,27 }}, // Urdu/Arabic/India
{ 131, 7, 228,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Uzbek/Latin/Uzbekistan
{ 131, 1, 1,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Uzbek/Arabic/Afghanistan
{ 131, 2, 228,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Uzbek/Cyrillic/Uzbekistan
@@ -500,7 +502,7 @@ static const QCalendarLocale locale_data[] = {
{ 140, 7, 195,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Zulu/Latin/South Africa
{ 141, 7, 161,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Norwegian Nynorsk/Latin/Norway
{ 142, 7, 27,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Bosnian/Latin/Bosnia And Herzegowina
- { 142, 2, 27,{ 3248,81 },{ 3248,81 },{ 185,27 },{ 3248,81 },{ 3248,81 },{ 185,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
+ { 142, 2, 27,{ 3275,81 },{ 3275,81 },{ 185,27 },{ 3275,81 },{ 3275,81 },{ 185,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
{ 143, 29, 131,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Divehi/Thaana/Maldives
{ 144, 7, 251,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Manx/Latin/Isle Of Man
{ 145, 7, 224,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Cornish/Latin/United Kingdom
@@ -518,8 +520,8 @@ static const QCalendarLocale locale_data[] = {
{ 158, 7, 157,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Jju/Latin/Nigeria
{ 159, 7, 106,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Friulian/Latin/Italy
{ 160, 7, 195,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Venda/Latin/South Africa
- { 161, 7, 83,{ 4261,48 },{ 4309,87 },{ 185,27 },{ 4261,48 },{ 4309,87 },{ 185,27 }}, // Ewe/Latin/Ghana
- { 161, 7, 212,{ 4261,48 },{ 4309,87 },{ 185,27 },{ 4261,48 },{ 4309,87 },{ 185,27 }}, // Ewe/Latin/Togo
+ { 161, 7, 83,{ 4369,48 },{ 4417,87 },{ 185,27 },{ 4369,48 },{ 4417,87 },{ 185,27 }}, // Ewe/Latin/Ghana
+ { 161, 7, 212,{ 4369,48 },{ 4417,87 },{ 185,27 },{ 4369,48 },{ 4417,87 },{ 185,27 }}, // Ewe/Latin/Togo
{ 162, 14, 69,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Walamo/Ethiopic/Ethiopia
{ 163, 7, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Hawaiian/Latin/United States
{ 164, 7, 157,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tyap/Latin/Nigeria
@@ -624,14 +626,15 @@ static const QCalendarLocale locale_data[] = {
{ 258, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Kako/Latin/Cameroon
{ 259, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Meta/Latin/Cameroon
{ 260, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Ngiemboon/Latin/Cameroon
+ { 261, 7, 197,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Aragonese/Latin/Spain
{ 290, 11, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Manipuri/Bengali/India
{ 309, 100, 232,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Tai Dam/Tai Viet/Vietnam
{ 312, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Akoose/Latin/Cameroon
{ 313, 7, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Lakota/Latin/United States
{ 314, 9, 145,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco
{ 315, 7, 43,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Mapuche/Latin/Chile
- { 316, 1, 103,{ 4396,102 },{ 4396,102 },{ 185,27 },{ 4396,102 },{ 4396,102 },{ 185,27 }}, // Central Kurdish/Arabic/Iraq
- { 316, 1, 102,{ 4396,102 },{ 4396,102 },{ 185,27 },{ 4396,102 },{ 4396,102 },{ 185,27 }}, // Central Kurdish/Arabic/Iran
+ { 316, 1, 103,{ 4504,102 },{ 4504,102 },{ 185,27 },{ 4504,102 },{ 4504,102 },{ 185,27 }}, // Central Kurdish/Arabic/Iraq
+ { 316, 1, 102,{ 4504,102 },{ 4504,102 },{ 185,27 },{ 4504,102 },{ 4504,102 },{ 185,27 }}, // Central Kurdish/Arabic/Iran
{ 317, 7, 82,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Lower Sorbian/Latin/Germany
{ 318, 7, 82,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Upper Sorbian/Latin/Germany
{ 319, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Kenyang/Latin/Cameroon
@@ -649,6 +652,7 @@ static const QCalendarLocale locale_data[] = {
{ 349, 1, 103,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Northern Luri/Arabic/Iraq
{ 357, 6, 97,{ 484,39 },{ 484,39 },{ 185,27 },{ 484,39 },{ 484,39 },{ 185,27 }}, // Cantonese/Traditional Han/Hong Kong
{ 357, 5, 44,{ 484,39 },{ 484,39 },{ 185,27 },{ 484,39 },{ 484,39 },{ 185,27 }}, // Cantonese/Simplified Han/China
+ { 358, 138, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Osage/Osage/United States
{ 360, 7, 260,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Ido/Latin/World
{ 361, 7, 260,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Lojban/Latin/World
{ 362, 7, 106,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Sicilian/Latin/Italy
@@ -656,6 +660,9 @@ static const QCalendarLocale locale_data[] = {
{ 364, 1, 163,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Western Balochi/Arabic/Pakistan
{ 365, 7, 170,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Cebuano/Latin/Philippines
{ 366, 2, 178,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Erzya/Cyrillic/Russia
+ { 367, 7, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Chickasaw/Latin/United States
+ { 368, 7, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Muscogee/Latin/United States
+ { 369, 7, 172,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Silesian/Latin/Poland
{ 0, 0, 0,{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0}}, // trailing zeros
};
@@ -797,94 +804,100 @@ static const ushort months_data[] = {
0x3b, 0x967, 0x968, 0x3b, 0x648, 0x631, 0x6cc, 0x3b, 0x63a, 0x648, 0x6cc, 0x6cc, 0x3b, 0x63a, 0x628, 0x631, 0x6af, 0x648, 0x644, 0x6cc,
0x3b, 0x686, 0x646, 0x6af, 0x627, 0x69a, 0x3b, 0x632, 0x645, 0x631, 0x6cc, 0x3b, 0x648, 0x696, 0x6cc, 0x3b, 0x62a, 0x644, 0x647, 0x3b,
0x644, 0x693, 0x645, 0x3b, 0x644, 0x6cc, 0x646, 0x62f, 0x6cd, 0x3b, 0x645, 0x631, 0x63a, 0x648, 0x645, 0x6cc, 0x3b, 0x633, 0x644, 0x648,
-0x627, 0x63a, 0x647, 0x3b, 0x6a9, 0x628, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x62f, 0x6cc, 0x646, 0x3b, 0x627, 0x631, 0x62f, 0x6cc, 0x628,
-0x647, 0x634, 0x62a, 0x3b, 0x62e, 0x631, 0x62f, 0x627, 0x62f, 0x3b, 0x62a, 0x6cc, 0x631, 0x3b, 0x645, 0x631, 0x62f, 0x627, 0x62f, 0x3b,
-0x634, 0x647, 0x631, 0x6cc, 0x648, 0x631, 0x3b, 0x645, 0x647, 0x631, 0x3b, 0x622, 0x628, 0x627, 0x646, 0x3b, 0x622, 0x630, 0x631, 0x3b,
-0x62f, 0x6cc, 0x3b, 0x628, 0x647, 0x645, 0x646, 0x3b, 0x627, 0x633, 0x641, 0x646, 0x62f, 0x3b, 0x641, 0x3b, 0x627, 0x3b, 0x62e, 0x3b,
-0x62a, 0x3b, 0x645, 0x3b, 0x634, 0x3b, 0x645, 0x3b, 0x622, 0x3b, 0x622, 0x3b, 0x62f, 0x3b, 0x628, 0x3b, 0x627, 0x3b, 0x62d, 0x3b,
-0x62b, 0x3b, 0x62c, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x645, 0x3b, 0x639, 0x3b, 0x642, 0x3b, 0x62c, 0x3b, 0x62f, 0x3b,
-0x62d, 0x3b, 0x62d, 0x645, 0x644, 0x3b, 0x62b, 0x648, 0x631, 0x3b, 0x62c, 0x648, 0x632, 0x627, 0x3b, 0x633, 0x631, 0x637, 0x627, 0x646,
-0x3b, 0x627, 0x633, 0x62f, 0x3b, 0x633, 0x646, 0x628, 0x644, 0x647, 0x654, 0x3b, 0x645, 0x6cc, 0x632, 0x627, 0x646, 0x3b, 0x639, 0x642,
-0x631, 0x628, 0x3b, 0x642, 0x648, 0x633, 0x3b, 0x62c, 0x62f, 0x6cc, 0x3b, 0x62f, 0x644, 0x648, 0x3b, 0x62d, 0x648, 0x62a, 0x3b, 0x46,
-0x61, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73, 0x7a, 0x74,
-0x3b, 0x43, 0x68, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b,
-0x53, 0x7a, 0x61, 0x68, 0x72, 0x69, 0x77, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x100, 0x62, 0x101, 0x6e, 0x3b,
-0x100, 0x73, 0x61, 0x72, 0x3b, 0x44, 0xe9, 0x69, 0x3b, 0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61,
-0x6e, 0x64, 0x3b, 0xa2b, 0xa3e, 0xa30, 0xa35, 0xa30, 0xa21, 0xa40, 0xa28, 0x3b, 0xa14, 0xa30, 0xa21, 0xa3e, 0xa08, 0xa2c, 0xa39, 0xa48,
-0xa38, 0xa3c, 0xa1f, 0x3b, 0xa16, 0xa4b, 0xa21, 0xa30, 0xa21, 0x3b, 0xa1f, 0xa3f, 0xa30, 0x3b, 0xa2e, 0xa4b, 0xa30, 0xa21, 0xa3e, 0xa26,
-0x3b, 0xa38, 0xa3c, 0xa30, 0xa3e, 0xa07, 0xa35, 0xa30, 0x3b, 0xa2e, 0xa47, 0xa39, 0xa30, 0x3b, 0xa05, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa05,
-0xa1c, 0xa3c, 0xa3e, 0xa30, 0x3b, 0xa21, 0xa47, 0xa05, 0x3b, 0xa2c, 0xa3e, 0xa39, 0xa2e, 0xa28, 0x3b, 0xa10, 0xa38, 0xa2b, 0xa70, 0xa21,
-0x3b, 0x46, 0x61, 0x72, 0x76, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73,
-0x68, 0x74, 0x3b, 0x4b, 0x68, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b, 0x41, 0x2d, 0x4d, 0x6f, 0x72,
-0x64, 0x61, 0x64, 0x3b, 0x53, 0x68, 0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x41,
-0x62, 0x61, 0x6e, 0x3b, 0x41, 0x7a, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b, 0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b,
-0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0x444, 0x430, 0x440, 0x432, 0x430, 0x440, 0x434, 0x438, 0x43d, 0x3b, 0x43e, 0x440, 0x434,
-0x438, 0x431, 0x435, 0x445, 0x435, 0x448, 0x442, 0x3b, 0x445, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x442, 0x438, 0x440, 0x3b, 0x43c,
-0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x448, 0x430, 0x445, 0x440, 0x438, 0x432, 0x435, 0x440, 0x3b, 0x43c, 0x435, 0x445, 0x440, 0x3b,
-0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x43c, 0x430, 0x43d,
-0x3b, 0x44d, 0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0x424, 0x430, 0x440, 0x430, 0x432, 0x430, 0x434, 0x438, 0x43d, 0x3b, 0x41e, 0x440,
-0x434, 0x438, 0x431, 0x435, 0x445, 0x435, 0x448, 0x442, 0x3b, 0x41a, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x422, 0x438, 0x440, 0x3b,
-0x41c, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x428, 0x430, 0x445, 0x440, 0x438, 0x432, 0x430, 0x440, 0x3b, 0x41c, 0x435, 0x445, 0x440,
-0x3b, 0x410, 0x431, 0x430, 0x43d, 0x3b, 0x410, 0x437, 0x430, 0x440, 0x3b, 0x414, 0x435, 0x458, 0x3b, 0x411, 0x430, 0x445, 0x43c, 0x430,
-0x43d, 0x3b, 0x415, 0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x76, 0x61, 0x64, 0x69, 0x6e, 0x3b, 0x4f,
-0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x161, 0x74, 0x3b, 0x4b, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x54, 0x69, 0x72,
-0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x160, 0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68,
-0x72, 0x3b, 0x41, 0x62, 0x61, 0x6e, 0x3b, 0x41, 0x7a, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x6a, 0x3b, 0x42, 0x61, 0x68, 0x6d,
-0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0x46, 0x61, 0x72, 0x76, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b,
-0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73, 0x68, 0x74, 0x3b, 0x4b, 0x68, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b,
-0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x53, 0x68, 0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72,
-0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x100, 0x62, 0x101, 0x6e, 0x3b, 0x100, 0x7a, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b,
-0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0x66, 0x61, 0x72, 0x76, 0x61, 0x72,
-0x64, 0x69, 0x6e, 0x3b, 0x6f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73, 0x68, 0x74, 0x3b, 0x6b, 0x68, 0x6f, 0x72,
-0x64, 0x101, 0x64, 0x3b, 0x74, 0x69, 0x72, 0x3b, 0x6d, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x73, 0x68, 0x61, 0x68, 0x72,
-0x69, 0x76, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x68, 0x72, 0x3b, 0x101, 0x62, 0x101, 0x6e, 0x3b, 0x101, 0x7a, 0x61, 0x72, 0x3b,
-0x64, 0x65, 0x79, 0x3b, 0x62, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x65, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0xb83, 0xbaa,
-0xbb0, 0xbcd, 0x2e, 0x3b, 0xb86, 0xbb0, 0xbcd, 0xb9f, 0xbbf, 0x2e, 0x3b, 0xb95, 0xbca, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xba4, 0xbbf, 0xbb0,
-0xbcd, 0x3b, 0xbae, 0xbca, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xbb7, 0xbbe, 0xbb0, 0xbbf, 0x2e, 0x3b, 0xbae, 0xbc6, 0xbb9, 0xbcd, 0x2e, 0x3b,
-0xb85, 0xbaa, 0xbbe, 0x2e, 0x3b, 0xb85, 0xb9a, 0xbbe, 0x2e, 0x3b, 0xba4, 0xbc7, 0x3b, 0xbaa, 0xbb9, 0xbcd, 0x2e, 0x3b, 0xb8e, 0xb83,
-0x2e, 0x3b, 0xb83, 0xbaa, 0xbb0, 0xbcd, 0xbb5, 0xbbe, 0xba4, 0xbbf, 0xba9, 0xbcd, 0x3b, 0xb86, 0xbb0, 0xbcd, 0xb9f, 0xbbf, 0xbaa, 0xbc6,
-0xbb9, 0xbc6, 0xbb7, 0xbcd, 0xba4, 0xbcd, 0x3b, 0xb95, 0xbca, 0xbb0, 0xbcd, 0xba4, 0xbbe, 0xba4, 0xbcd, 0x3b, 0xba4, 0xbbf, 0xbb0, 0xbcd,
-0x3b, 0xbae, 0xbca, 0xbb0, 0xbcd, 0xba4, 0xbbe, 0xba4, 0xbcd, 0x3b, 0xbb7, 0xbbe, 0xbb0, 0xbbf, 0xbb5, 0xbbe, 0xbb0, 0xbcd, 0x3b, 0xbae,
-0xbc6, 0xbb9, 0xbcd, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xbaa, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xb85, 0xb9a, 0xbbe, 0xbb0, 0xbcd, 0x3b, 0xba4, 0xbc7,
-0x3b, 0xbaa, 0xbb9, 0xbcd, 0xbae, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xb8e, 0xb83, 0xbaa, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xc2b, 0xc3e, 0xc35, 0xc30,
-0xc4d, 0xc21, 0xc3f, 0xc28, 0xc4d, 0x3b, 0xc0a, 0xc21, 0xc3e, 0xc2c, 0xc39, 0xc37, 0xc4d, 0xc1f, 0xc4d, 0x3b, 0xc16, 0xc4b, 0xc30, 0xc4d,
-0xc21, 0xc3e, 0xc21, 0xc4d, 0x3b, 0xc1f, 0xc3f, 0xc30, 0xc4d, 0x3b, 0xc2e, 0xc46, 0xc30, 0xc4d, 0xc21, 0xc3e, 0xc21, 0xc4d, 0x3b, 0xc36,
-0xc36, 0xc3f, 0xc35, 0xc30, 0xc4d, 0x3b, 0xc2e, 0xc46, 0xc39, 0xc30, 0xc4d, 0x3b, 0xc05, 0xc2c, 0xc28, 0xc4d, 0x3b, 0xc05, 0xc1c, 0xc30,
-0xc4d, 0x3b, 0xc21, 0xc47, 0x3b, 0xc2c, 0xc3e, 0xc39, 0xc4d, 0x200c, 0xc2e, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc0e, 0xc38, 0xc4d, 0x200c, 0xc2b,
-0xc3e, 0xc02, 0xc21, 0xc4d, 0x3b, 0xe1f, 0xe32, 0xe23, 0xe4c, 0xe27, 0xe32, 0xe23, 0xe4c, 0xe14, 0xe34, 0xe19, 0x3b, 0xe2d, 0xe2d, 0xe23,
-0xe4c, 0xe14, 0xe34, 0xe40, 0xe1a, 0xe40, 0xe2e, 0xe0a, 0xe15, 0xe4c, 0x3b, 0xe04, 0xe2d, 0xe23, 0xe4c, 0xe41, 0xe14, 0xe14, 0x3b, 0xe40,
-0xe15, 0xe2d, 0xe23, 0xe4c, 0x3b, 0xe21, 0xe2d, 0xe23, 0xe4c, 0xe41, 0xe14, 0xe14, 0x3b, 0xe0a, 0xe32, 0xe2b, 0xe23, 0xe34, 0xe27, 0xe32,
-0xe23, 0xe4c, 0x3b, 0xe40, 0xe21, 0xe2e, 0xe23, 0xe4c, 0x3b, 0xe2d, 0xe30, 0xe1a, 0xe32, 0xe19, 0x3b, 0xe2d, 0xe30, 0xe0b, 0xe32, 0xe23,
-0xe4c, 0x3b, 0xe40, 0xe14, 0xe22, 0xe4c, 0x3b, 0xe1a, 0xe32, 0xe2e, 0xe4c, 0xe21, 0xe32, 0xe19, 0x3b, 0xe40, 0xe2d, 0xe2a, 0xe1f, 0xe32,
-0xe19, 0xe14, 0xe4c, 0x3b, 0x46, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65,
-0x68, 0x65, 0x15f, 0x74, 0x3b, 0x48, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64,
-0x61, 0x64, 0x3b, 0x15e, 0x65, 0x68, 0x72, 0x69, 0x76, 0x65, 0x72, 0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x41, 0x62, 0x61,
-0x6e, 0x3b, 0x41, 0x7a, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b, 0x42, 0x65, 0x68, 0x6d, 0x65, 0x6e, 0x3b, 0x45, 0x73,
-0x66, 0x65, 0x6e, 0x64, 0x3b, 0x444, 0x430, 0x440, 0x3b, 0x43e, 0x440, 0x434, 0x3b, 0x445, 0x43e, 0x440, 0x3b, 0x442, 0x456, 0x440,
-0x3b, 0x43c, 0x43e, 0x440, 0x3b, 0x448, 0x430, 0x445, 0x3b, 0x43c, 0x435, 0x445, 0x3b, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437,
-0x435, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x3b, 0x435, 0x441, 0x444, 0x3b, 0x444, 0x430, 0x440, 0x432, 0x430,
-0x440, 0x434, 0x456, 0x43d, 0x3b, 0x43e, 0x440, 0x434, 0x456, 0x431, 0x435, 0x445, 0x435, 0x448, 0x442, 0x3b, 0x445, 0x43e, 0x440, 0x434,
-0x430, 0x434, 0x3b, 0x442, 0x456, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x448, 0x430, 0x445, 0x440, 0x456, 0x432,
-0x435, 0x440, 0x3b, 0x43c, 0x435, 0x445, 0x440, 0x3b, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435,
-0x439, 0x3b, 0x431, 0x430, 0x445, 0x43c, 0x430, 0x43d, 0x3b, 0x435, 0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0x444, 0x430, 0x440, 0x2e,
-0x3b, 0x43e, 0x440, 0x434, 0x2e, 0x3b, 0x445, 0x43e, 0x440, 0x2e, 0x3b, 0x442, 0x456, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x2e, 0x3b,
-0x448, 0x430, 0x445, 0x2e, 0x3b, 0x43c, 0x435, 0x445, 0x2e, 0x3b, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b,
-0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x2e, 0x3b, 0x435, 0x441, 0x444, 0x2e, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x62f, 0x646,
-0x3b, 0x622, 0x631, 0x688, 0x628, 0x627, 0x626, 0x634, 0x3b, 0x62e, 0x62f, 0x627, 0x62f, 0x627, 0x62f, 0x3b, 0x62a, 0x6cc, 0x631, 0x3b,
-0x645, 0x631, 0x62f, 0x627, 0x62f, 0x3b, 0x634, 0x6c1, 0x631, 0x6cc, 0x648, 0x627, 0x631, 0x3b, 0x645, 0x6c1, 0x631, 0x3b, 0x627, 0x628,
-0x627, 0x646, 0x3b, 0x622, 0x632, 0x631, 0x3b, 0x688, 0x6d2, 0x3b, 0x628, 0x6c1, 0x645, 0x646, 0x3b, 0x627, 0x633, 0x641, 0x646, 0x62f,
-0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d,
-0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c,
-0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a,
-0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x69, 0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b,
-0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61,
-0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64,
-0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d, 0x65, 0x3b, 0x62e, 0x627, 0x6a9, 0x6d5,
-0x644, 0x6ce, 0x648, 0x6d5, 0x3b, 0x628, 0x627, 0x646, 0x6d5, 0x645, 0x6d5, 0x695, 0x3b, 0x62c, 0x6c6, 0x632, 0x6d5, 0x631, 0x62f, 0x627,
-0x646, 0x3b, 0x67e, 0x648, 0x648, 0x634, 0x67e, 0x6d5, 0x695, 0x3b, 0x6af, 0x6d5, 0x644, 0x627, 0x648, 0x6ce, 0x698, 0x3b, 0x62e, 0x6d5,
-0x631, 0x645, 0x627, 0x646, 0x627, 0x646, 0x3b, 0x695, 0x6d5, 0x632, 0x628, 0x6d5, 0x631, 0x3b, 0x62e, 0x6d5, 0x632, 0x6d5, 0x6b5, 0x648,
-0x6d5, 0x631, 0x3b, 0x633, 0x6d5, 0x631, 0x645, 0x627, 0x648, 0x6d5, 0x632, 0x3b, 0x628, 0x6d5, 0x641, 0x631, 0x627, 0x646, 0x628, 0x627,
-0x631, 0x3b, 0x695, 0x6ce, 0x628, 0x6d5, 0x646, 0x62f, 0x627, 0x646, 0x3b, 0x631, 0x6d5, 0x634, 0x6d5, 0x645, 0x6ce, 0x3b
+0x627, 0x63a, 0x647, 0x3b, 0x6a9, 0x628, 0x3b, 0x6f1, 0x3b, 0x6f2, 0x3b, 0x6f3, 0x3b, 0x6f4, 0x3b, 0x6f5, 0x3b, 0x6f6, 0x3b, 0x6f7,
+0x3b, 0x6f8, 0x3b, 0x6f9, 0x3b, 0x6f1, 0x6f0, 0x3b, 0x6f1, 0x6f1, 0x3b, 0x6f1, 0x6f2, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x62f, 0x6cc,
+0x646, 0x3b, 0x627, 0x631, 0x62f, 0x6cc, 0x628, 0x647, 0x634, 0x62a, 0x3b, 0x62e, 0x631, 0x62f, 0x627, 0x62f, 0x3b, 0x62a, 0x6cc, 0x631,
+0x3b, 0x645, 0x631, 0x62f, 0x627, 0x62f, 0x3b, 0x634, 0x647, 0x631, 0x6cc, 0x648, 0x631, 0x3b, 0x645, 0x647, 0x631, 0x3b, 0x622, 0x628,
+0x627, 0x646, 0x3b, 0x622, 0x630, 0x631, 0x3b, 0x62f, 0x6cc, 0x3b, 0x628, 0x647, 0x645, 0x646, 0x3b, 0x627, 0x633, 0x641, 0x646, 0x62f,
+0x3b, 0x641, 0x3b, 0x627, 0x3b, 0x62e, 0x3b, 0x62a, 0x3b, 0x645, 0x3b, 0x634, 0x3b, 0x645, 0x3b, 0x622, 0x3b, 0x622, 0x3b, 0x62f,
+0x3b, 0x628, 0x3b, 0x627, 0x3b, 0x62d, 0x3b, 0x62b, 0x3b, 0x62c, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x645, 0x3b, 0x639,
+0x3b, 0x642, 0x3b, 0x62c, 0x3b, 0x62f, 0x3b, 0x62d, 0x3b, 0x62d, 0x645, 0x644, 0x3b, 0x62b, 0x648, 0x631, 0x3b, 0x62c, 0x648, 0x632,
+0x627, 0x3b, 0x633, 0x631, 0x637, 0x627, 0x646, 0x3b, 0x627, 0x633, 0x62f, 0x3b, 0x633, 0x646, 0x628, 0x644, 0x647, 0x654, 0x3b, 0x645,
+0x6cc, 0x632, 0x627, 0x646, 0x3b, 0x639, 0x642, 0x631, 0x628, 0x3b, 0x642, 0x648, 0x633, 0x3b, 0x62c, 0x62f, 0x6cc, 0x3b, 0x62f, 0x644,
+0x648, 0x3b, 0x62d, 0x648, 0x62a, 0x3b, 0x46, 0x61, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69,
+0x62, 0x65, 0x68, 0x65, 0x73, 0x7a, 0x74, 0x3b, 0x43, 0x68, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b,
+0x4d, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x53, 0x7a, 0x61, 0x68, 0x72, 0x69, 0x77, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68,
+0x72, 0x3b, 0x100, 0x62, 0x101, 0x6e, 0x3b, 0x100, 0x73, 0x61, 0x72, 0x3b, 0x44, 0xe9, 0x69, 0x3b, 0x42, 0x61, 0x68, 0x6d,
+0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0xa2b, 0xa3e, 0xa30, 0xa35, 0xa30, 0xa21, 0xa40, 0xa28, 0x3b, 0xa14,
+0xa30, 0xa21, 0xa3e, 0xa08, 0xa2c, 0xa39, 0xa48, 0xa38, 0xa3c, 0xa1f, 0x3b, 0xa16, 0xa4b, 0xa21, 0xa30, 0xa21, 0x3b, 0xa1f, 0xa3f, 0xa30,
+0x3b, 0xa2e, 0xa4b, 0xa30, 0xa21, 0xa3e, 0xa26, 0x3b, 0xa38, 0xa3c, 0xa30, 0xa3e, 0xa07, 0xa35, 0xa30, 0x3b, 0xa2e, 0xa47, 0xa39, 0xa30,
+0x3b, 0xa05, 0xa2c, 0xa3e, 0xa28, 0x3b, 0xa05, 0xa1c, 0xa3c, 0xa3e, 0xa30, 0x3b, 0xa21, 0xa47, 0xa05, 0x3b, 0xa2c, 0xa3e, 0xa39, 0xa2e,
+0xa28, 0x3b, 0xa10, 0xa38, 0xa2b, 0xa70, 0xa21, 0x3b, 0x46, 0x61, 0x72, 0x76, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72,
+0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73, 0x68, 0x74, 0x3b, 0x4b, 0x68, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x54, 0x69,
+0x72, 0x3b, 0x41, 0x2d, 0x4d, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x53, 0x68, 0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72,
+0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x41, 0x62, 0x61, 0x6e, 0x3b, 0x41, 0x7a, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b,
+0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0x444, 0x430, 0x440, 0x432, 0x430, 0x440,
+0x434, 0x438, 0x43d, 0x3b, 0x43e, 0x440, 0x434, 0x438, 0x431, 0x435, 0x445, 0x435, 0x448, 0x442, 0x3b, 0x445, 0x43e, 0x440, 0x434, 0x430,
+0x434, 0x3b, 0x442, 0x438, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x448, 0x430, 0x445, 0x440, 0x438, 0x432, 0x435,
+0x440, 0x3b, 0x43c, 0x435, 0x445, 0x440, 0x3b, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435, 0x439,
+0x3b, 0x431, 0x430, 0x445, 0x43c, 0x430, 0x43d, 0x3b, 0x44d, 0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0x424, 0x430, 0x440, 0x430, 0x432,
+0x430, 0x434, 0x438, 0x43d, 0x3b, 0x41e, 0x440, 0x434, 0x438, 0x431, 0x435, 0x445, 0x435, 0x448, 0x442, 0x3b, 0x41a, 0x43e, 0x440, 0x434,
+0x430, 0x434, 0x3b, 0x422, 0x438, 0x440, 0x3b, 0x41c, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x428, 0x430, 0x445, 0x440, 0x438, 0x432,
+0x430, 0x440, 0x3b, 0x41c, 0x435, 0x445, 0x440, 0x3b, 0x410, 0x431, 0x430, 0x43d, 0x3b, 0x410, 0x437, 0x430, 0x440, 0x3b, 0x414, 0x435,
+0x458, 0x3b, 0x411, 0x430, 0x445, 0x43c, 0x430, 0x43d, 0x3b, 0x415, 0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0x46, 0x61, 0x72, 0x61,
+0x76, 0x61, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x161, 0x74, 0x3b, 0x4b, 0x6f, 0x72,
+0x64, 0x61, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x160, 0x61, 0x68, 0x72, 0x69,
+0x76, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x41, 0x62, 0x61, 0x6e, 0x3b, 0x41, 0x7a, 0x61, 0x72, 0x3b, 0x44,
+0x65, 0x6a, 0x3b, 0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64, 0x3b, 0x46, 0x61, 0x72,
+0x76, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73, 0x68, 0x74, 0x3b, 0x4b,
+0x68, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x53, 0x68,
+0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x68, 0x72, 0x3b, 0x100, 0x62, 0x101, 0x6e, 0x3b, 0x100, 0x7a,
+0x61, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b, 0x42, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x61, 0x6e, 0x64,
+0x3b, 0x66, 0x61, 0x72, 0x76, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x3b, 0x6f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x73,
+0x68, 0x74, 0x3b, 0x6b, 0x68, 0x6f, 0x72, 0x64, 0x101, 0x64, 0x3b, 0x74, 0x69, 0x72, 0x3b, 0x6d, 0x6f, 0x72, 0x64, 0x101,
+0x64, 0x3b, 0x73, 0x68, 0x61, 0x68, 0x72, 0x69, 0x76, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x68, 0x72, 0x3b, 0x101, 0x62, 0x101,
+0x6e, 0x3b, 0x101, 0x7a, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x79, 0x3b, 0x62, 0x61, 0x68, 0x6d, 0x61, 0x6e, 0x3b, 0x65, 0x73,
+0x66, 0x61, 0x6e, 0x64, 0x3b, 0x444, 0x430, 0x440, 0x432, 0x430, 0x440, 0x434, 0x438, 0x43d, 0x3b, 0x443, 0x440, 0x434, 0x438, 0x431,
+0x438, 0x4b3, 0x438, 0x448, 0x442, 0x3b, 0x445, 0x443, 0x440, 0x434, 0x43e, 0x434, 0x3b, 0x442, 0x438, 0x440, 0x3b, 0x43c, 0x443, 0x440,
+0x434, 0x43e, 0x434, 0x3b, 0x448, 0x430, 0x4b3, 0x440, 0x438, 0x432, 0x430, 0x440, 0x3b, 0x43c, 0x435, 0x4b3, 0x440, 0x3b, 0x43e, 0x431,
+0x43e, 0x43d, 0x3b, 0x43e, 0x437, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x4b3, 0x43c, 0x430, 0x43d, 0x3b, 0x438,
+0x441, 0x444, 0x430, 0x43d, 0x434, 0x3b, 0xb83, 0xbaa, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xb86, 0xbb0, 0xbcd, 0xb9f, 0xbbf, 0x2e, 0x3b, 0xb95,
+0xbca, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xba4, 0xbbf, 0xbb0, 0xbcd, 0x3b, 0xbae, 0xbca, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xbb7, 0xbbe, 0xbb0, 0xbbf,
+0x2e, 0x3b, 0xbae, 0xbc6, 0xbb9, 0xbcd, 0x2e, 0x3b, 0xb85, 0xbaa, 0xbbe, 0x2e, 0x3b, 0xb85, 0xb9a, 0xbbe, 0x2e, 0x3b, 0xba4, 0xbc7,
+0x3b, 0xbaa, 0xbb9, 0xbcd, 0x2e, 0x3b, 0xb8e, 0xb83, 0x2e, 0x3b, 0xb83, 0xbaa, 0xbb0, 0xbcd, 0xbb5, 0xbbe, 0xba4, 0xbbf, 0xba9, 0xbcd,
+0x3b, 0xb86, 0xbb0, 0xbcd, 0xb9f, 0xbbf, 0xbaa, 0xbc6, 0xbb9, 0xbc6, 0xbb7, 0xbcd, 0xba4, 0xbcd, 0x3b, 0xb95, 0xbca, 0xbb0, 0xbcd, 0xba4,
+0xbbe, 0xba4, 0xbcd, 0x3b, 0xba4, 0xbbf, 0xbb0, 0xbcd, 0x3b, 0xbae, 0xbca, 0xbb0, 0xbcd, 0xba4, 0xbbe, 0xba4, 0xbcd, 0x3b, 0xbb7, 0xbbe,
+0xbb0, 0xbbf, 0xbb5, 0xbbe, 0xbb0, 0xbcd, 0x3b, 0xbae, 0xbc6, 0xbb9, 0xbcd, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xbaa, 0xbbe, 0xba9, 0xbcd, 0x3b,
+0xb85, 0xb9a, 0xbbe, 0xbb0, 0xbcd, 0x3b, 0xba4, 0xbc7, 0x3b, 0xbaa, 0xbb9, 0xbcd, 0xbae, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xb8e, 0xb83, 0xbaa,
+0xbbe, 0xba9, 0xbcd, 0x3b, 0xc2b, 0xc3e, 0xc35, 0xc30, 0xc4d, 0xc21, 0xc3f, 0xc28, 0xc4d, 0x3b, 0xc0a, 0xc21, 0xc3e, 0xc2c, 0xc39, 0xc37,
+0xc4d, 0xc1f, 0xc4d, 0x3b, 0xc16, 0xc4b, 0xc30, 0xc4d, 0xc21, 0xc3e, 0xc21, 0xc4d, 0x3b, 0xc1f, 0xc3f, 0xc30, 0xc4d, 0x3b, 0xc2e, 0xc46,
+0xc30, 0xc4d, 0xc21, 0xc3e, 0xc21, 0xc4d, 0x3b, 0xc36, 0xc36, 0xc3f, 0xc35, 0xc30, 0xc4d, 0x3b, 0xc2e, 0xc46, 0xc39, 0xc30, 0xc4d, 0x3b,
+0xc05, 0xc2c, 0xc28, 0xc4d, 0x3b, 0xc05, 0xc1c, 0xc30, 0xc4d, 0x3b, 0xc21, 0xc47, 0x3b, 0xc2c, 0xc3e, 0xc39, 0xc4d, 0x200c, 0xc2e, 0xc3e,
+0xc28, 0xc4d, 0x3b, 0xc0e, 0xc38, 0xc4d, 0x200c, 0xc2b, 0xc3e, 0xc02, 0xc21, 0xc4d, 0x3b, 0xe1f, 0xe32, 0xe23, 0xe4c, 0xe27, 0xe32, 0xe23,
+0xe4c, 0xe14, 0xe34, 0xe19, 0x3b, 0xe2d, 0xe2d, 0xe23, 0xe4c, 0xe14, 0xe34, 0xe40, 0xe1a, 0xe40, 0xe2e, 0xe0a, 0xe15, 0xe4c, 0x3b, 0xe04,
+0xe2d, 0xe23, 0xe4c, 0xe41, 0xe14, 0xe14, 0x3b, 0xe40, 0xe15, 0xe2d, 0xe23, 0xe4c, 0x3b, 0xe21, 0xe2d, 0xe23, 0xe4c, 0xe41, 0xe14, 0xe14,
+0x3b, 0xe0a, 0xe32, 0xe2b, 0xe23, 0xe34, 0xe27, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe40, 0xe21, 0xe2e, 0xe23, 0xe4c, 0x3b, 0xe2d, 0xe30, 0xe1a,
+0xe32, 0xe19, 0x3b, 0xe2d, 0xe30, 0xe0b, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe40, 0xe14, 0xe22, 0xe4c, 0x3b, 0xe1a, 0xe32, 0xe2e, 0xe4c, 0xe21,
+0xe32, 0xe19, 0x3b, 0xe40, 0xe2d, 0xe2a, 0xe1f, 0xe32, 0xe19, 0xe14, 0xe4c, 0x3b, 0x46, 0x65, 0x72, 0x76, 0x65, 0x72, 0x64, 0x69,
+0x6e, 0x3b, 0x4f, 0x72, 0x64, 0x69, 0x62, 0x65, 0x68, 0x65, 0x15f, 0x74, 0x3b, 0x48, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b,
+0x54, 0x69, 0x72, 0x3b, 0x4d, 0x6f, 0x72, 0x64, 0x61, 0x64, 0x3b, 0x15e, 0x65, 0x68, 0x72, 0x69, 0x76, 0x65, 0x72, 0x3b,
+0x4d, 0x65, 0x68, 0x72, 0x3b, 0x41, 0x62, 0x61, 0x6e, 0x3b, 0x41, 0x7a, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x79, 0x3b, 0x42,
+0x65, 0x68, 0x6d, 0x65, 0x6e, 0x3b, 0x45, 0x73, 0x66, 0x65, 0x6e, 0x64, 0x3b, 0x444, 0x430, 0x440, 0x3b, 0x43e, 0x440, 0x434,
+0x3b, 0x445, 0x43e, 0x440, 0x3b, 0x442, 0x456, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x3b, 0x448, 0x430, 0x445, 0x3b, 0x43c, 0x435, 0x445,
+0x3b, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x3b, 0x435,
+0x441, 0x444, 0x3b, 0x444, 0x430, 0x440, 0x432, 0x430, 0x440, 0x434, 0x456, 0x43d, 0x3b, 0x43e, 0x440, 0x434, 0x456, 0x431, 0x435, 0x445,
+0x435, 0x448, 0x442, 0x3b, 0x445, 0x43e, 0x440, 0x434, 0x430, 0x434, 0x3b, 0x442, 0x456, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x434, 0x430,
+0x434, 0x3b, 0x448, 0x430, 0x445, 0x440, 0x456, 0x432, 0x435, 0x440, 0x3b, 0x43c, 0x435, 0x445, 0x440, 0x3b, 0x430, 0x431, 0x430, 0x43d,
+0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x43c, 0x430, 0x43d, 0x3b, 0x435, 0x441, 0x444,
+0x430, 0x43d, 0x434, 0x3b, 0x444, 0x430, 0x440, 0x2e, 0x3b, 0x43e, 0x440, 0x434, 0x2e, 0x3b, 0x445, 0x43e, 0x440, 0x2e, 0x3b, 0x442,
+0x456, 0x440, 0x3b, 0x43c, 0x43e, 0x440, 0x2e, 0x3b, 0x448, 0x430, 0x445, 0x2e, 0x3b, 0x43c, 0x435, 0x445, 0x2e, 0x3b, 0x430, 0x431,
+0x430, 0x43d, 0x3b, 0x430, 0x437, 0x435, 0x440, 0x3b, 0x434, 0x435, 0x439, 0x3b, 0x431, 0x430, 0x445, 0x2e, 0x3b, 0x435, 0x441, 0x444,
+0x2e, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x62f, 0x646, 0x3b, 0x622, 0x631, 0x688, 0x628, 0x627, 0x626, 0x634, 0x3b, 0x62e, 0x62f, 0x627,
+0x62f, 0x627, 0x62f, 0x3b, 0x62a, 0x6cc, 0x631, 0x3b, 0x645, 0x631, 0x62f, 0x627, 0x62f, 0x3b, 0x634, 0x6c1, 0x631, 0x6cc, 0x648, 0x627,
+0x631, 0x3b, 0x645, 0x6c1, 0x631, 0x3b, 0x627, 0x628, 0x627, 0x646, 0x3b, 0x622, 0x632, 0x631, 0x3b, 0x688, 0x6d2, 0x3b, 0x628, 0x6c1,
+0x645, 0x646, 0x3b, 0x627, 0x633, 0x641, 0x646, 0x62f, 0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64,
+0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61,
+0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f,
+0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254,
+0x66, 0x69, 0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b, 0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254,
+0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254,
+0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a,
+0x6f, 0x6d, 0x65, 0x3b, 0x62e, 0x627, 0x6a9, 0x6d5, 0x644, 0x6ce, 0x648, 0x6d5, 0x3b, 0x628, 0x627, 0x646, 0x6d5, 0x645, 0x6d5, 0x695,
+0x3b, 0x62c, 0x6c6, 0x632, 0x6d5, 0x631, 0x62f, 0x627, 0x646, 0x3b, 0x67e, 0x648, 0x648, 0x634, 0x67e, 0x6d5, 0x695, 0x3b, 0x6af, 0x6d5,
+0x644, 0x627, 0x648, 0x6ce, 0x698, 0x3b, 0x62e, 0x6d5, 0x631, 0x645, 0x627, 0x646, 0x627, 0x646, 0x3b, 0x695, 0x6d5, 0x632, 0x628, 0x6d5,
+0x631, 0x3b, 0x62e, 0x6d5, 0x632, 0x6d5, 0x6b5, 0x648, 0x6d5, 0x631, 0x3b, 0x633, 0x6d5, 0x631, 0x645, 0x627, 0x648, 0x6d5, 0x632, 0x3b,
+0x628, 0x6d5, 0x641, 0x631, 0x627, 0x646, 0x628, 0x627, 0x631, 0x3b, 0x695, 0x6ce, 0x628, 0x6d5, 0x646, 0x62f, 0x627, 0x646, 0x3b, 0x631,
+0x6d5, 0x634, 0x6d5, 0x645, 0x6ce, 0x3b
};
// GENERATED PART ENDS HERE
diff --git a/src/corelib/time/qmilankoviccalendar.cpp b/src/corelib/time/qmilankoviccalendar.cpp
index 68d74947b9..673713a266 100644
--- a/src/corelib/time/qmilankoviccalendar.cpp
+++ b/src/corelib/time/qmilankoviccalendar.cpp
@@ -56,8 +56,6 @@ using namespace QRoundingDown;
\brief The QMilankovicCalendar class provides Milanković calendar system
implementation.
- \section1
-
The Revised Julian calendar, also known as the Milanković calendar, or,
less formally, new calendar, is a calendar, developed and proposed by the
Serbian scientist Milutin Milanković in 1923, which effectively discontinued
diff --git a/src/corelib/time/qromancalendar_data_p.h b/src/corelib/time/qromancalendar_data_p.h
index b3a2a24a44..37ac0be07d 100644
--- a/src/corelib/time/qromancalendar_data_p.h
+++ b/src/corelib/time/qromancalendar_data_p.h
@@ -59,8 +59,8 @@ QT_BEGIN_NAMESPACE
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2019-05-27 from the
- Common Locale Data Repository v35.1
+ This part of the file was generated on 2019-10-24 from the
+ Common Locale Data Repository v36
http://www.unicode.org/cldr/
@@ -318,197 +318,199 @@ static const QCalendarLocale locale_data[] = {
{ 42, 7, 206,{ 7630,48 },{ 7678,83 },{ 134,24 },{ 7761,60 },{ 7678,83 },{ 134,24 }}, // German/Latin/Switzerland
{ 43, 16, 85,{ 8011,50 },{ 8061,115 },{ 8176,24 },{ 8200,50 },{ 8250,115 },{ 8176,24 }}, // Greek/Greek/Greece
{ 43, 16, 56,{ 8011,50 },{ 8061,115 },{ 8176,24 },{ 8200,50 },{ 8250,115 },{ 8176,24 }}, // Greek/Greek/Cyprus
- { 44, 7, 86,{ 8365,48 },{ 8413,96 },{ 134,24 },{ 8365,48 },{ 8413,96 },{ 134,24 }}, // Greenlandic/Latin/Greenland
+ { 44, 7, 86,{ 8365,50 },{ 8415,99 },{ 134,24 },{ 8365,50 },{ 8514,111 },{ 134,24 }}, // Greenlandic/Latin/Greenland
{ 45, 7, 168,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Guarani/Latin/Paraguay
- { 46, 17, 100,{ 8509,67 },{ 8576,87 },{ 8663,31 },{ 8509,67 },{ 8576,87 },{ 8663,31 }}, // Gujarati/Gujarati/India
- { 47, 7, 157,{ 8694,48 },{ 8742,85 },{ 8827,24 },{ 8694,48 },{ 8742,85 },{ 8827,24 }}, // Hausa/Latin/Nigeria
+ { 46, 17, 100,{ 8625,67 },{ 8692,87 },{ 8779,31 },{ 8625,67 },{ 8692,87 },{ 8779,31 }}, // Gujarati/Gujarati/India
+ { 47, 7, 157,{ 8810,48 },{ 8858,85 },{ 8943,24 },{ 8810,48 },{ 8858,85 },{ 8943,24 }}, // Hausa/Latin/Nigeria
{ 47, 1, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Hausa/Arabic/Nigeria
- { 47, 7, 83,{ 8694,48 },{ 8742,85 },{ 8827,24 },{ 8694,48 },{ 8742,85 },{ 8827,24 }}, // Hausa/Latin/Ghana
- { 47, 7, 156,{ 8694,48 },{ 8742,85 },{ 8827,24 },{ 8694,48 },{ 8742,85 },{ 8827,24 }}, // Hausa/Latin/Niger
- { 48, 18, 105,{ 8851,58 },{ 8909,72 },{ 418,27 },{ 8851,58 },{ 8909,72 },{ 418,27 }}, // Hebrew/Hebrew/Israel
- { 49, 13, 100,{ 8981,59 },{ 9040,73 },{ 9113,30 },{ 8981,59 },{ 9040,73 },{ 9113,30 }}, // Hindi/Devanagari/India
- { 50, 7, 98,{ 9143,64 },{ 9207,98 },{ 9305,25 },{ 9143,64 },{ 9207,98 },{ 9305,25 }}, // Hungarian/Latin/Hungary
- { 51, 7, 99,{ 9330,59 },{ 9389,82 },{ 9471,24 },{ 9330,59 },{ 9389,82 },{ 9471,24 }}, // Icelandic/Latin/Iceland
- { 52, 7, 101,{ 9495,48 },{ 9543,87 },{ 134,24 },{ 9495,48 },{ 9543,87 },{ 134,24 }}, // Indonesian/Latin/Indonesia
- { 53, 7, 260,{ 9630,48 },{ 9678,93 },{ 418,27 },{ 9630,48 },{ 9678,93 },{ 9771,24 }}, // Interlingua/Latin/World
+ { 47, 7, 83,{ 8810,48 },{ 8858,85 },{ 8943,24 },{ 8810,48 },{ 8858,85 },{ 8943,24 }}, // Hausa/Latin/Ghana
+ { 47, 7, 156,{ 8810,48 },{ 8858,85 },{ 8943,24 },{ 8810,48 },{ 8858,85 },{ 8943,24 }}, // Hausa/Latin/Niger
+ { 48, 18, 105,{ 8967,58 },{ 9025,72 },{ 418,27 },{ 8967,58 },{ 9025,72 },{ 418,27 }}, // Hebrew/Hebrew/Israel
+ { 49, 13, 100,{ 9097,59 },{ 9156,73 },{ 9229,30 },{ 9097,59 },{ 9156,73 },{ 9229,30 }}, // Hindi/Devanagari/India
+ { 50, 7, 98,{ 9259,64 },{ 9323,98 },{ 9421,25 },{ 9259,64 },{ 9323,98 },{ 9421,25 }}, // Hungarian/Latin/Hungary
+ { 51, 7, 99,{ 9446,59 },{ 9505,82 },{ 9587,24 },{ 9446,59 },{ 9505,82 },{ 9587,24 }}, // Icelandic/Latin/Iceland
+ { 52, 7, 101,{ 9611,48 },{ 9659,87 },{ 134,24 },{ 9611,48 },{ 9659,87 },{ 134,24 }}, // Indonesian/Latin/Indonesia
+ { 53, 7, 260,{ 9746,48 },{ 9794,93 },{ 418,27 },{ 9746,48 },{ 9794,93 },{ 9887,24 }}, // Interlingua/Latin/World
{ 55, 44, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Inuktitut/Canadian Aboriginal/Canada
{ 55, 7, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Inuktitut/Latin/Canada
- { 57, 7, 104,{ 9795,62 },{ 9857,107 },{ 9964,24 },{ 9795,62 },{ 9857,107 },{ 9964,24 }}, // Irish/Latin/Ireland
- { 58, 7, 106,{ 9988,48 },{ 10036,94 },{ 10130,24 },{ 9988,48 },{ 10036,94 },{ 10130,24 }}, // Italian/Latin/Italy
- { 58, 7, 184,{ 9988,48 },{ 10036,94 },{ 10130,24 },{ 9988,48 },{ 10036,94 },{ 10130,24 }}, // Italian/Latin/San Marino
- { 58, 7, 206,{ 9988,48 },{ 10036,94 },{ 10130,24 },{ 9988,48 },{ 10036,94 },{ 10130,24 }}, // Italian/Latin/Switzerland
- { 58, 7, 230,{ 9988,48 },{ 10036,94 },{ 10130,24 },{ 9988,48 },{ 10036,94 },{ 10130,24 }}, // Italian/Latin/Vatican City State
+ { 57, 7, 104,{ 9911,62 },{ 9973,107 },{ 10080,24 },{ 9911,62 },{ 9973,107 },{ 10080,24 }}, // Irish/Latin/Ireland
+ { 57, 7, 224,{ 9911,62 },{ 9973,107 },{ 10080,24 },{ 9911,62 },{ 9973,107 },{ 10080,24 }}, // Irish/Latin/United Kingdom
+ { 58, 7, 106,{ 10104,48 },{ 10152,94 },{ 10246,24 },{ 10104,48 },{ 10152,94 },{ 10246,24 }}, // Italian/Latin/Italy
+ { 58, 7, 184,{ 10104,48 },{ 10152,94 },{ 10246,24 },{ 10104,48 },{ 10152,94 },{ 10246,24 }}, // Italian/Latin/San Marino
+ { 58, 7, 206,{ 10104,48 },{ 10152,94 },{ 10246,24 },{ 10104,48 },{ 10152,94 },{ 10246,24 }}, // Italian/Latin/Switzerland
+ { 58, 7, 230,{ 10104,48 },{ 10152,94 },{ 10246,24 },{ 10104,48 },{ 10152,94 },{ 10246,24 }}, // Italian/Latin/Vatican City State
{ 59, 19, 108,{ 4452,39 },{ 4452,39 },{ 418,27 },{ 4452,39 },{ 4452,39 },{ 418,27 }}, // Japanese/Japanese/Japan
- { 60, 7, 101,{ 10154,48 },{ 9543,87 },{ 134,24 },{ 10154,48 },{ 9543,87 },{ 134,24 }}, // Javanese/Latin/Indonesia
- { 61, 21, 100,{ 10202,63 },{ 10265,87 },{ 10352,31 },{ 10383,69 },{ 10265,87 },{ 10352,31 }}, // Kannada/Kannada/India
- { 62, 1, 100,{ 10452,72 },{ 10452,72 },{ 10524,24 },{ 10452,72 },{ 10452,72 },{ 10524,24 }}, // Kashmiri/Arabic/India
- { 63, 2, 110,{ 10548,60 },{ 10608,83 },{ 10691,24 },{ 10548,60 },{ 10715,83 },{ 10691,24 }}, // Kazakh/Cyrillic/Kazakhstan
- { 64, 7, 179,{ 10798,60 },{ 10858,101 },{ 418,27 },{ 10798,60 },{ 10858,101 },{ 418,27 }}, // Kinyarwanda/Latin/Rwanda
- { 65, 2, 116,{ 10959,48 },{ 11007,80 },{ 11087,24 },{ 11111,59 },{ 11170,80 },{ 11087,24 }}, // Kirghiz/Cyrillic/Kyrgyzstan
- { 66, 22, 114,{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 }}, // Korean/Korean/South Korea
- { 66, 22, 113,{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 },{ 11250,39 }}, // Korean/Korean/North Korea
- { 67, 7, 217,{ 11289,48 },{ 11337,88 },{ 11425,24 },{ 11289,48 },{ 11449,101 },{ 11425,24 }}, // Kurdish/Latin/Turkey
- { 68, 7, 35,{ 11550,60 },{ 11610,106 },{ 418,27 },{ 11550,60 },{ 11610,106 },{ 418,27 }}, // Rundi/Latin/Burundi
- { 69, 23, 117,{ 11716,61 },{ 11777,75 },{ 418,27 },{ 11716,61 },{ 11777,75 },{ 418,27 }}, // Lao/Lao/Laos
- { 71, 7, 118,{ 11852,65 },{ 11917,101 },{ 134,24 },{ 11852,65 },{ 11917,101 },{ 134,24 }}, // Latvian/Latin/Latvia
- { 72, 7, 49,{ 12018,48 },{ 12066,203 },{ 12269,24 },{ 12018,48 },{ 12066,203 },{ 12269,24 }}, // Lingala/Latin/Congo Kinshasa
- { 72, 7, 6,{ 12018,48 },{ 12066,203 },{ 12269,24 },{ 12018,48 },{ 12066,203 },{ 12269,24 }}, // Lingala/Latin/Angola
- { 72, 7, 41,{ 12018,48 },{ 12066,203 },{ 12269,24 },{ 12018,48 },{ 12066,203 },{ 12269,24 }}, // Lingala/Latin/Central African Republic
- { 72, 7, 50,{ 12018,48 },{ 12066,203 },{ 12269,24 },{ 12018,48 },{ 12066,203 },{ 12269,24 }}, // Lingala/Latin/Congo Brazzaville
- { 73, 7, 124,{ 12293,70 },{ 12363,96 },{ 12459,24 },{ 12293,70 },{ 12483,98 },{ 12459,24 }}, // Lithuanian/Latin/Lithuania
- { 74, 2, 127,{ 12581,61 },{ 12642,85 },{ 12727,24 },{ 12581,61 },{ 12642,85 },{ 12727,24 }}, // Macedonian/Cyrillic/Macedonia
- { 75, 7, 128,{ 12751,48 },{ 12799,92 },{ 134,24 },{ 12751,48 },{ 12799,92 },{ 134,24 }}, // Malagasy/Latin/Madagascar
- { 76, 7, 130,{ 12891,48 },{ 12939,82 },{ 13021,24 },{ 12891,48 },{ 12939,82 },{ 13021,24 }}, // Malay/Latin/Malaysia
+ { 60, 7, 101,{ 10270,48 },{ 9659,87 },{ 134,24 },{ 10270,48 },{ 9659,87 },{ 134,24 }}, // Javanese/Latin/Indonesia
+ { 61, 21, 100,{ 10318,63 },{ 10381,87 },{ 10468,31 },{ 10499,69 },{ 10381,87 },{ 10468,31 }}, // Kannada/Kannada/India
+ { 62, 1, 100,{ 10568,72 },{ 10568,72 },{ 10640,24 },{ 10568,72 },{ 10568,72 },{ 10640,24 }}, // Kashmiri/Arabic/India
+ { 63, 2, 110,{ 10664,60 },{ 10724,83 },{ 10807,24 },{ 10664,60 },{ 10831,83 },{ 10807,24 }}, // Kazakh/Cyrillic/Kazakhstan
+ { 64, 7, 179,{ 10914,60 },{ 10974,101 },{ 418,27 },{ 10914,60 },{ 10974,101 },{ 418,27 }}, // Kinyarwanda/Latin/Rwanda
+ { 65, 2, 116,{ 11075,48 },{ 11123,80 },{ 11203,24 },{ 11227,59 },{ 11286,80 },{ 11203,24 }}, // Kirghiz/Cyrillic/Kyrgyzstan
+ { 66, 22, 114,{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 }}, // Korean/Korean/South Korea
+ { 66, 22, 113,{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 },{ 11366,39 }}, // Korean/Korean/North Korea
+ { 67, 7, 217,{ 11405,48 },{ 11453,88 },{ 11541,24 },{ 11405,48 },{ 11565,101 },{ 11541,24 }}, // Kurdish/Latin/Turkey
+ { 68, 7, 35,{ 11666,60 },{ 11726,106 },{ 418,27 },{ 11666,60 },{ 11726,106 },{ 418,27 }}, // Rundi/Latin/Burundi
+ { 69, 23, 117,{ 11832,61 },{ 11893,75 },{ 418,27 },{ 11832,61 },{ 11893,75 },{ 418,27 }}, // Lao/Lao/Laos
+ { 71, 7, 118,{ 11968,65 },{ 12033,101 },{ 134,24 },{ 11968,65 },{ 12033,101 },{ 134,24 }}, // Latvian/Latin/Latvia
+ { 72, 7, 49,{ 12134,48 },{ 12182,203 },{ 12385,24 },{ 12134,48 },{ 12182,203 },{ 12385,24 }}, // Lingala/Latin/Congo Kinshasa
+ { 72, 7, 6,{ 12134,48 },{ 12182,203 },{ 12385,24 },{ 12134,48 },{ 12182,203 },{ 12385,24 }}, // Lingala/Latin/Angola
+ { 72, 7, 41,{ 12134,48 },{ 12182,203 },{ 12385,24 },{ 12134,48 },{ 12182,203 },{ 12385,24 }}, // Lingala/Latin/Central African Republic
+ { 72, 7, 50,{ 12134,48 },{ 12182,203 },{ 12385,24 },{ 12134,48 },{ 12182,203 },{ 12385,24 }}, // Lingala/Latin/Congo Brazzaville
+ { 73, 7, 124,{ 12409,70 },{ 12479,96 },{ 12575,24 },{ 12409,70 },{ 12599,98 },{ 12575,24 }}, // Lithuanian/Latin/Lithuania
+ { 74, 2, 127,{ 12697,61 },{ 12758,85 },{ 12843,24 },{ 12697,61 },{ 12758,85 },{ 12843,24 }}, // Macedonian/Cyrillic/Macedonia
+ { 75, 7, 128,{ 12867,48 },{ 12915,92 },{ 134,24 },{ 12867,48 },{ 12915,92 },{ 134,24 }}, // Malagasy/Latin/Madagascar
+ { 76, 7, 130,{ 13007,48 },{ 13055,82 },{ 13137,24 },{ 13007,48 },{ 13055,82 },{ 13137,24 }}, // Malay/Latin/Malaysia
{ 76, 1, 130,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Malay/Arabic/Malaysia
- { 76, 7, 32,{ 12891,48 },{ 12939,82 },{ 13021,24 },{ 12891,48 },{ 12939,82 },{ 13021,24 }}, // Malay/Latin/Brunei
- { 76, 7, 190,{ 12891,48 },{ 12939,82 },{ 13021,24 },{ 12891,48 },{ 12939,82 },{ 13021,24 }}, // Malay/Latin/Singapore
- { 77, 24, 100,{ 13045,62 },{ 13107,88 },{ 13195,32 },{ 13045,62 },{ 13107,88 },{ 13195,32 }}, // Malayalam/Malayalam/India
- { 78, 7, 133,{ 13227,48 },{ 13275,86 },{ 13361,36 },{ 13227,48 },{ 13275,86 },{ 13397,24 }}, // Maltese/Latin/Malta
- { 79, 7, 154,{ 13421,59 },{ 13480,133 },{ 13613,24 },{ 13421,59 },{ 13480,133 },{ 13613,24 }}, // Maori/Latin/New Zealand
- { 80, 13, 100,{ 13637,66 },{ 13703,86 },{ 13789,32 },{ 13637,66 },{ 13703,86 },{ 13789,32 }}, // Marathi/Devanagari/India
- { 82, 2, 143,{ 13821,99 },{ 13920,192 },{ 14112,38 },{ 13821,99 },{ 14150,192 },{ 14112,38 }}, // Mongolian/Cyrillic/Mongolia
+ { 76, 7, 32,{ 13007,48 },{ 13055,82 },{ 13137,24 },{ 13007,48 },{ 13055,82 },{ 13137,24 }}, // Malay/Latin/Brunei
+ { 76, 7, 190,{ 13007,48 },{ 13055,82 },{ 13137,24 },{ 13007,48 },{ 13055,82 },{ 13137,24 }}, // Malay/Latin/Singapore
+ { 77, 24, 100,{ 13161,62 },{ 13223,88 },{ 13311,32 },{ 13161,62 },{ 13223,88 },{ 13311,32 }}, // Malayalam/Malayalam/India
+ { 78, 7, 133,{ 13343,48 },{ 13391,86 },{ 13477,36 },{ 13343,48 },{ 13391,86 },{ 13513,24 }}, // Maltese/Latin/Malta
+ { 79, 7, 154,{ 13537,59 },{ 13596,133 },{ 13729,24 },{ 13537,59 },{ 13596,133 },{ 13729,24 }}, // Maori/Latin/New Zealand
+ { 80, 13, 100,{ 13753,66 },{ 13819,86 },{ 13905,32 },{ 13753,66 },{ 13819,86 },{ 13905,32 }}, // Marathi/Devanagari/India
+ { 82, 2, 143,{ 13937,99 },{ 14036,192 },{ 14228,38 },{ 13937,99 },{ 14266,192 },{ 14228,38 }}, // Mongolian/Cyrillic/Mongolia
{ 82, 8, 44,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mongolian/Mongolian/China
- { 84, 13, 150,{ 14342,85 },{ 14342,85 },{ 14427,53 },{ 14342,85 },{ 14342,85 },{ 14480,52 }}, // Nepali/Devanagari/Nepal
- { 84, 13, 100,{ 14342,85 },{ 14342,85 },{ 14427,53 },{ 14342,85 },{ 14342,85 },{ 14480,52 }}, // Nepali/Devanagari/India
- { 85, 7, 161,{ 5685,48 },{ 14532,83 },{ 134,24 },{ 5816,59 },{ 14532,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Norway
- { 85, 7, 203,{ 5685,48 },{ 14532,83 },{ 134,24 },{ 5816,59 },{ 14532,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
+ { 84, 13, 150,{ 14458,85 },{ 14458,85 },{ 14543,53 },{ 14458,85 },{ 14458,85 },{ 14596,52 }}, // Nepali/Devanagari/Nepal
+ { 84, 13, 100,{ 14458,85 },{ 14458,85 },{ 14543,53 },{ 14458,85 },{ 14458,85 },{ 14596,52 }}, // Nepali/Devanagari/India
+ { 85, 7, 161,{ 5685,48 },{ 14648,83 },{ 134,24 },{ 5816,59 },{ 14648,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Norway
+ { 85, 7, 203,{ 5685,48 },{ 14648,83 },{ 134,24 },{ 5816,59 },{ 14648,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands
{ 86, 7, 74,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Occitan/Latin/France
- { 87, 26, 100,{ 14615,86 },{ 14615,86 },{ 14701,32 },{ 14615,86 },{ 14615,86 },{ 14701,32 }}, // Oriya/Oriya/India
- { 88, 1, 1,{ 14733,68 },{ 14801,69 },{ 418,27 },{ 14870,69 },{ 14870,69 },{ 14939,24 }}, // Pashto/Arabic/Afghanistan
- { 88, 1, 163,{ 14733,68 },{ 14801,69 },{ 418,27 },{ 14870,69 },{ 14870,69 },{ 14939,24 }}, // Pashto/Arabic/Pakistan
- { 89, 1, 102,{ 14963,70 },{ 14963,70 },{ 15033,24 },{ 15057,74 },{ 15057,74 },{ 15033,24 }}, // Persian/Arabic/Iran
- { 89, 1, 1,{ 15131,68 },{ 15131,68 },{ 14939,24 },{ 15199,62 },{ 15131,68 },{ 14939,24 }}, // Persian/Arabic/Afghanistan
- { 90, 7, 172,{ 15261,48 },{ 15309,97 },{ 15406,24 },{ 15261,48 },{ 15430,99 },{ 15529,24 }}, // Polish/Latin/Poland
- { 91, 7, 30,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Brazil
- { 91, 7, 6,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Angola
- { 91, 7, 39,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Cape Verde
- { 91, 7, 62,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/East Timor
- { 91, 7, 66,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Equatorial Guinea
- { 91, 7, 92,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Guinea Bissau
- { 91, 7, 125,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Luxembourg
- { 91, 7, 126,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Macau
- { 91, 7, 146,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Mozambique
- { 91, 7, 173,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Portugal
- { 91, 7, 185,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Sao Tome And Principe
- { 91, 7, 206,{ 15553,48 },{ 15601,89 },{ 134,24 },{ 15553,48 },{ 15601,89 },{ 134,24 }}, // Portuguese/Latin/Switzerland
- { 92, 4, 100,{ 15690,50 },{ 15740,68 },{ 15808,28 },{ 15690,50 },{ 15740,68 },{ 15808,28 }}, // Punjabi/Gurmukhi/India
- { 92, 1, 163,{ 15836,67 },{ 15836,67 },{ 418,27 },{ 15836,67 },{ 15836,67 },{ 418,27 }}, // Punjabi/Arabic/Pakistan
- { 93, 7, 169,{ 15903,48 },{ 15951,88 },{ 418,27 },{ 15903,48 },{ 15951,88 },{ 418,27 }}, // Quechua/Latin/Peru
- { 93, 7, 26,{ 15903,48 },{ 15951,88 },{ 418,27 },{ 15903,48 },{ 15951,88 },{ 418,27 }}, // Quechua/Latin/Bolivia
- { 93, 7, 63,{ 15903,48 },{ 15951,88 },{ 418,27 },{ 15903,48 },{ 15951,88 },{ 418,27 }}, // Quechua/Latin/Ecuador
- { 94, 7, 206,{ 16039,67 },{ 16106,92 },{ 16198,24 },{ 16039,67 },{ 16106,92 },{ 16198,24 }}, // Romansh/Latin/Switzerland
- { 95, 7, 177,{ 16222,60 },{ 16282,98 },{ 16380,24 },{ 16222,60 },{ 16282,98 },{ 16380,24 }}, // Romanian/Latin/Romania
- { 95, 7, 141,{ 16222,60 },{ 16282,98 },{ 16380,24 },{ 16222,60 },{ 16282,98 },{ 16380,24 }}, // Romanian/Latin/Moldova
- { 96, 2, 178,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Russia
- { 96, 2, 20,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Belarus
- { 96, 2, 110,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Kazakhstan
- { 96, 2, 116,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Kyrgyzstan
- { 96, 2, 141,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Moldova
- { 96, 2, 222,{ 16404,62 },{ 11170,80 },{ 11087,24 },{ 16466,62 },{ 16528,82 },{ 11087,24 }}, // Russian/Cyrillic/Ukraine
- { 98, 7, 41,{ 16610,48 },{ 16658,91 },{ 16749,24 },{ 16610,48 },{ 16658,91 },{ 16749,24 }}, // Sango/Latin/Central African Republic
+ { 87, 26, 100,{ 14731,86 },{ 14731,86 },{ 14817,32 },{ 14731,86 },{ 14731,86 },{ 14817,32 }}, // Oriya/Oriya/India
+ { 88, 1, 1,{ 14849,68 },{ 14917,69 },{ 418,27 },{ 14986,69 },{ 14986,69 },{ 15055,24 }}, // Pashto/Arabic/Afghanistan
+ { 88, 1, 163,{ 14849,68 },{ 14917,69 },{ 418,27 },{ 14986,69 },{ 14986,69 },{ 15055,24 }}, // Pashto/Arabic/Pakistan
+ { 89, 1, 102,{ 15079,70 },{ 15079,70 },{ 15149,24 },{ 15173,74 },{ 15173,74 },{ 15149,24 }}, // Persian/Arabic/Iran
+ { 89, 1, 1,{ 15247,68 },{ 15247,68 },{ 15055,24 },{ 15315,62 },{ 15247,68 },{ 15055,24 }}, // Persian/Arabic/Afghanistan
+ { 90, 7, 172,{ 15377,48 },{ 15425,97 },{ 15522,24 },{ 15377,48 },{ 15546,99 },{ 15645,24 }}, // Polish/Latin/Poland
+ { 91, 7, 30,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Brazil
+ { 91, 7, 6,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Angola
+ { 91, 7, 39,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Cape Verde
+ { 91, 7, 62,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/East Timor
+ { 91, 7, 66,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Equatorial Guinea
+ { 91, 7, 92,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Guinea Bissau
+ { 91, 7, 125,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Luxembourg
+ { 91, 7, 126,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Macau
+ { 91, 7, 146,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Mozambique
+ { 91, 7, 173,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Portugal
+ { 91, 7, 185,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Sao Tome And Principe
+ { 91, 7, 206,{ 15669,60 },{ 15729,89 },{ 134,24 },{ 15669,60 },{ 15729,89 },{ 134,24 }}, // Portuguese/Latin/Switzerland
+ { 92, 4, 100,{ 15818,50 },{ 15868,68 },{ 15936,28 },{ 15818,50 },{ 15868,68 },{ 15936,28 }}, // Punjabi/Gurmukhi/India
+ { 92, 1, 163,{ 15964,67 },{ 15964,67 },{ 418,27 },{ 15964,67 },{ 15964,67 },{ 418,27 }}, // Punjabi/Arabic/Pakistan
+ { 93, 7, 169,{ 16031,48 },{ 16079,88 },{ 418,27 },{ 16031,48 },{ 16079,88 },{ 418,27 }}, // Quechua/Latin/Peru
+ { 93, 7, 26,{ 16031,48 },{ 16079,88 },{ 418,27 },{ 16031,48 },{ 16079,88 },{ 418,27 }}, // Quechua/Latin/Bolivia
+ { 93, 7, 63,{ 16031,48 },{ 16079,88 },{ 418,27 },{ 16031,48 },{ 16079,88 },{ 418,27 }}, // Quechua/Latin/Ecuador
+ { 94, 7, 206,{ 16167,67 },{ 16234,92 },{ 16326,24 },{ 16167,67 },{ 16350,125 },{ 16326,24 }}, // Romansh/Latin/Switzerland
+ { 95, 7, 177,{ 16475,60 },{ 16535,98 },{ 16633,24 },{ 16475,60 },{ 16535,98 },{ 16633,24 }}, // Romanian/Latin/Romania
+ { 95, 7, 141,{ 16475,60 },{ 16535,98 },{ 16633,24 },{ 16475,60 },{ 16535,98 },{ 16633,24 }}, // Romanian/Latin/Moldova
+ { 96, 2, 178,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Russia
+ { 96, 2, 20,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Belarus
+ { 96, 2, 110,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Kazakhstan
+ { 96, 2, 116,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Kyrgyzstan
+ { 96, 2, 141,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Moldova
+ { 96, 2, 222,{ 16657,62 },{ 11286,80 },{ 11203,24 },{ 16719,62 },{ 16781,82 },{ 11203,24 }}, // Russian/Cyrillic/Ukraine
+ { 98, 7, 41,{ 16863,48 },{ 16911,91 },{ 17002,24 },{ 16863,48 },{ 16911,91 },{ 17002,24 }}, // Sango/Latin/Central African Republic
{ 99, 13, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sanskrit/Devanagari/India
- { 100, 2, 243,{ 16773,48 },{ 16821,81 },{ 12727,24 },{ 16773,48 },{ 16821,81 },{ 12727,24 }}, // Serbian/Cyrillic/Serbia
- { 100, 7, 27,{ 16902,50 },{ 16952,81 },{ 9771,24 },{ 17033,48 },{ 16952,81 },{ 9771,24 }}, // Serbian/Latin/Bosnia And Herzegowina
- { 100, 7, 242,{ 17081,58 },{ 16952,81 },{ 9771,24 },{ 17081,58 },{ 16952,81 },{ 9771,24 }}, // Serbian/Latin/Montenegro
- { 100, 7, 243,{ 17033,48 },{ 16952,81 },{ 9771,24 },{ 17033,48 },{ 16952,81 },{ 9771,24 }}, // Serbian/Latin/Serbia
- { 100, 2, 27,{ 17139,50 },{ 16821,81 },{ 12727,24 },{ 16773,48 },{ 16821,81 },{ 12727,24 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
- { 100, 2, 242,{ 17139,50 },{ 16821,81 },{ 12727,24 },{ 17139,50 },{ 16821,81 },{ 12727,24 }}, // Serbian/Cyrillic/Montenegro
- { 100, 2, 257,{ 17139,50 },{ 16821,81 },{ 12727,24 },{ 17139,50 },{ 16821,81 },{ 12727,24 }}, // Serbian/Cyrillic/Kosovo
- { 100, 7, 257,{ 17081,58 },{ 16952,81 },{ 9771,24 },{ 17081,58 },{ 16952,81 },{ 9771,24 }}, // Serbian/Latin/Kosovo
- { 101, 2, 81,{ 17189,63 },{ 17252,82 },{ 11087,24 },{ 17334,60 },{ 17394,86 },{ 11087,24 }}, // Ossetic/Cyrillic/Georgia
- { 101, 2, 178,{ 17189,63 },{ 17252,82 },{ 11087,24 },{ 17334,60 },{ 17394,86 },{ 11087,24 }}, // Ossetic/Cyrillic/Russia
+ { 100, 2, 243,{ 17026,48 },{ 17074,81 },{ 12843,24 },{ 17026,48 },{ 17074,81 },{ 12843,24 }}, // Serbian/Cyrillic/Serbia
+ { 100, 2, 27,{ 17026,48 },{ 17074,81 },{ 12843,24 },{ 17026,48 },{ 17074,81 },{ 12843,24 }}, // Serbian/Cyrillic/Bosnia And Herzegowina
+ { 100, 2, 242,{ 17155,50 },{ 17074,81 },{ 12843,24 },{ 17155,50 },{ 17074,81 },{ 12843,24 }}, // Serbian/Cyrillic/Montenegro
+ { 100, 2, 257,{ 17155,50 },{ 17074,81 },{ 12843,24 },{ 17155,50 },{ 17074,81 },{ 12843,24 }}, // Serbian/Cyrillic/Kosovo
+ { 100, 7, 27,{ 17205,48 },{ 17253,81 },{ 9887,24 },{ 17205,48 },{ 17253,81 },{ 9887,24 }}, // Serbian/Latin/Bosnia And Herzegowina
+ { 100, 7, 242,{ 17334,50 },{ 17253,81 },{ 9887,24 },{ 17334,50 },{ 17253,81 },{ 9887,24 }}, // Serbian/Latin/Montenegro
+ { 100, 7, 243,{ 17205,48 },{ 17253,81 },{ 9887,24 },{ 17205,48 },{ 17253,81 },{ 9887,24 }}, // Serbian/Latin/Serbia
+ { 100, 7, 257,{ 17334,50 },{ 17253,81 },{ 9887,24 },{ 17334,50 },{ 17253,81 },{ 9887,24 }}, // Serbian/Latin/Kosovo
+ { 101, 2, 81,{ 17384,63 },{ 17447,82 },{ 11203,24 },{ 17529,60 },{ 17589,86 },{ 11203,24 }}, // Ossetic/Cyrillic/Georgia
+ { 101, 2, 178,{ 17384,63 },{ 17447,82 },{ 11203,24 },{ 17529,60 },{ 17589,86 },{ 11203,24 }}, // Ossetic/Cyrillic/Russia
{ 102, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Sotho/Latin/South Africa
{ 103, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tswana/Latin/South Africa
- { 104, 7, 240,{ 17480,48 },{ 17528,100 },{ 17628,24 },{ 17480,48 },{ 17528,100 },{ 17628,24 }}, // Shona/Latin/Zimbabwe
- { 105, 1, 163,{ 17652,72 },{ 17652,72 },{ 134,24 },{ 17652,72 },{ 17652,72 },{ 134,24 }}, // Sindhi/Arabic/Pakistan
- { 106, 32, 198,{ 17724,59 },{ 17783,96 },{ 17879,32 },{ 17911,61 },{ 17783,96 },{ 17879,32 }}, // Sinhala/Sinhala/Sri Lanka
+ { 104, 7, 240,{ 17675,48 },{ 17723,100 },{ 17823,24 },{ 17675,48 },{ 17723,100 },{ 17823,24 }}, // Shona/Latin/Zimbabwe
+ { 105, 1, 163,{ 17847,72 },{ 17847,72 },{ 134,24 },{ 17847,72 },{ 17847,72 },{ 134,24 }}, // Sindhi/Arabic/Pakistan
+ { 106, 32, 198,{ 17919,59 },{ 17978,96 },{ 18074,32 },{ 18106,61 },{ 17978,96 },{ 18074,32 }}, // Sinhala/Sinhala/Sri Lanka
{ 107, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Swati/Latin/South Africa
- { 108, 7, 191,{ 17972,48 },{ 18020,82 },{ 9771,24 },{ 17972,48 },{ 18102,89 },{ 9771,24 }}, // Slovak/Latin/Slovakia
- { 109, 7, 192,{ 18191,59 },{ 18250,86 },{ 9771,24 },{ 18191,59 },{ 18250,86 },{ 9771,24 }}, // Slovenian/Latin/Slovenia
- { 110, 7, 194,{ 18336,48 },{ 18384,92 },{ 18476,24 },{ 18336,48 },{ 18500,189 },{ 18476,24 }}, // Somali/Latin/Somalia
- { 110, 7, 59,{ 18336,48 },{ 18384,92 },{ 18476,24 },{ 18336,48 },{ 18500,189 },{ 18476,24 }}, // Somali/Latin/Djibouti
- { 110, 7, 69,{ 18336,48 },{ 18384,92 },{ 18476,24 },{ 18336,48 },{ 18500,189 },{ 18476,24 }}, // Somali/Latin/Ethiopia
- { 110, 7, 111,{ 18336,48 },{ 18384,92 },{ 18476,24 },{ 18336,48 },{ 18500,189 },{ 18476,24 }}, // Somali/Latin/Kenya
- { 111, 7, 197,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Spain
- { 111, 7, 10,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Argentina
- { 111, 7, 22,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Belize
- { 111, 7, 26,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Bolivia
- { 111, 7, 30,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Brazil
- { 111, 7, 43,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Chile
- { 111, 7, 47,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Colombia
- { 111, 7, 52,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Costa Rica
- { 111, 7, 55,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Cuba
- { 111, 7, 61,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Dominican Republic
- { 111, 7, 63,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Ecuador
- { 111, 7, 65,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/El Salvador
- { 111, 7, 66,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Equatorial Guinea
- { 111, 7, 90,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Guatemala
- { 111, 7, 96,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Honduras
- { 111, 7, 139,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Mexico
- { 111, 7, 155,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Nicaragua
- { 111, 7, 166,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Panama
- { 111, 7, 168,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Paraguay
- { 111, 7, 169,{ 18923,60 },{ 15951,88 },{ 18839,24 },{ 18983,60 },{ 19043,88 },{ 18839,24 }}, // Spanish/Latin/Peru
- { 111, 7, 170,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Philippines
- { 111, 7, 174,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Puerto Rico
- { 111, 7, 225,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/United States
- { 111, 7, 227,{ 18923,60 },{ 15951,88 },{ 18839,24 },{ 18983,60 },{ 19043,88 },{ 18839,24 }}, // Spanish/Latin/Uruguay
- { 111, 7, 231,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Venezuela
- { 111, 7, 238,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Canary Islands
- { 111, 7, 246,{ 18863,60 },{ 18750,89 },{ 18839,24 },{ 18863,60 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Latin America
- { 111, 7, 250,{ 18689,61 },{ 18750,89 },{ 18839,24 },{ 18689,61 },{ 18750,89 },{ 18839,24 }}, // Spanish/Latin/Ceuta And Melilla
- { 113, 7, 210,{ 19131,48 },{ 19179,84 },{ 134,24 },{ 19131,48 },{ 19179,84 },{ 134,24 }}, // Swahili/Latin/Tanzania
- { 113, 7, 49,{ 19131,48 },{ 19179,84 },{ 134,24 },{ 19131,48 },{ 19179,84 },{ 134,24 }}, // Swahili/Latin/Congo Kinshasa
- { 113, 7, 111,{ 19131,48 },{ 19179,84 },{ 134,24 },{ 19131,48 },{ 19179,84 },{ 134,24 }}, // Swahili/Latin/Kenya
- { 113, 7, 221,{ 19131,48 },{ 19179,84 },{ 134,24 },{ 19131,48 },{ 19179,84 },{ 134,24 }}, // Swahili/Latin/Uganda
- { 114, 7, 205,{ 19263,59 },{ 19322,86 },{ 134,24 },{ 19263,59 },{ 19322,86 },{ 134,24 }}, // Swedish/Latin/Sweden
- { 114, 7, 73,{ 19263,59 },{ 19322,86 },{ 134,24 },{ 19263,59 },{ 19322,86 },{ 134,24 }}, // Swedish/Latin/Finland
- { 114, 7, 248,{ 19263,59 },{ 19322,86 },{ 134,24 },{ 19263,59 },{ 19322,86 },{ 134,24 }}, // Swedish/Latin/Aland Islands
+ { 108, 7, 191,{ 18167,48 },{ 18215,82 },{ 9887,24 },{ 18167,48 },{ 18297,89 },{ 9887,24 }}, // Slovak/Latin/Slovakia
+ { 109, 7, 192,{ 18386,59 },{ 18445,86 },{ 9887,24 },{ 18386,59 },{ 18445,86 },{ 9887,24 }}, // Slovenian/Latin/Slovenia
+ { 110, 7, 194,{ 18531,48 },{ 18579,92 },{ 18671,24 },{ 18531,48 },{ 18695,189 },{ 18671,24 }}, // Somali/Latin/Somalia
+ { 110, 7, 59,{ 18531,48 },{ 18579,92 },{ 18671,24 },{ 18531,48 },{ 18695,189 },{ 18671,24 }}, // Somali/Latin/Djibouti
+ { 110, 7, 69,{ 18531,48 },{ 18579,92 },{ 18671,24 },{ 18531,48 },{ 18695,189 },{ 18671,24 }}, // Somali/Latin/Ethiopia
+ { 110, 7, 111,{ 18531,48 },{ 18579,92 },{ 18671,24 },{ 18531,48 },{ 18695,189 },{ 18671,24 }}, // Somali/Latin/Kenya
+ { 111, 7, 197,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Spain
+ { 111, 7, 10,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Argentina
+ { 111, 7, 22,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Belize
+ { 111, 7, 26,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Bolivia
+ { 111, 7, 30,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Brazil
+ { 111, 7, 43,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Chile
+ { 111, 7, 47,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Colombia
+ { 111, 7, 52,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Costa Rica
+ { 111, 7, 55,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Cuba
+ { 111, 7, 61,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Dominican Republic
+ { 111, 7, 63,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Ecuador
+ { 111, 7, 65,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/El Salvador
+ { 111, 7, 66,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Equatorial Guinea
+ { 111, 7, 90,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Guatemala
+ { 111, 7, 96,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Honduras
+ { 111, 7, 139,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Mexico
+ { 111, 7, 155,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Nicaragua
+ { 111, 7, 166,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Panama
+ { 111, 7, 168,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Paraguay
+ { 111, 7, 169,{ 19118,60 },{ 16079,88 },{ 19034,24 },{ 19178,60 },{ 19238,88 },{ 19034,24 }}, // Spanish/Latin/Peru
+ { 111, 7, 170,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Philippines
+ { 111, 7, 174,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Puerto Rico
+ { 111, 7, 225,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/United States
+ { 111, 7, 227,{ 19118,60 },{ 16079,88 },{ 19034,24 },{ 19178,60 },{ 19238,88 },{ 19034,24 }}, // Spanish/Latin/Uruguay
+ { 111, 7, 231,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Venezuela
+ { 111, 7, 238,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Canary Islands
+ { 111, 7, 246,{ 19058,60 },{ 18945,89 },{ 19034,24 },{ 19058,60 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Latin America
+ { 111, 7, 250,{ 18884,61 },{ 18945,89 },{ 19034,24 },{ 18884,61 },{ 18945,89 },{ 19034,24 }}, // Spanish/Latin/Ceuta And Melilla
+ { 112, 7, 101,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sundanese/Latin/Indonesia
+ { 113, 7, 210,{ 19326,48 },{ 19374,84 },{ 134,24 },{ 19326,48 },{ 19374,84 },{ 134,24 }}, // Swahili/Latin/Tanzania
+ { 113, 7, 49,{ 19326,48 },{ 19374,84 },{ 134,24 },{ 19326,48 },{ 19374,84 },{ 134,24 }}, // Swahili/Latin/Congo Kinshasa
+ { 113, 7, 111,{ 19326,48 },{ 19374,84 },{ 134,24 },{ 19326,48 },{ 19374,84 },{ 134,24 }}, // Swahili/Latin/Kenya
+ { 113, 7, 221,{ 19326,48 },{ 19374,84 },{ 134,24 },{ 19326,48 },{ 19374,84 },{ 134,24 }}, // Swahili/Latin/Uganda
+ { 114, 7, 205,{ 19458,59 },{ 19517,86 },{ 134,24 },{ 19458,59 },{ 19517,86 },{ 134,24 }}, // Swedish/Latin/Sweden
+ { 114, 7, 73,{ 19458,59 },{ 19517,86 },{ 134,24 },{ 19458,59 },{ 19517,86 },{ 134,24 }}, // Swedish/Latin/Finland
+ { 114, 7, 248,{ 19458,59 },{ 19517,86 },{ 134,24 },{ 19458,59 },{ 19517,86 },{ 134,24 }}, // Swedish/Latin/Aland Islands
{ 115, 7, 106,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sardinian/Latin/Italy
- { 116, 2, 209,{ 10959,48 },{ 19408,71 },{ 11087,24 },{ 10959,48 },{ 19408,71 },{ 11087,24 }}, // Tajik/Cyrillic/Tajikistan
- { 117, 27, 100,{ 19479,58 },{ 19537,86 },{ 19623,31 },{ 19479,58 },{ 19537,86 },{ 19623,31 }}, // Tamil/Tamil/India
- { 117, 27, 130,{ 19479,58 },{ 19537,86 },{ 19623,31 },{ 19479,58 },{ 19537,86 },{ 19623,31 }}, // Tamil/Tamil/Malaysia
- { 117, 27, 190,{ 19479,58 },{ 19537,86 },{ 19623,31 },{ 19479,58 },{ 19537,86 },{ 19623,31 }}, // Tamil/Tamil/Singapore
- { 117, 27, 198,{ 19479,58 },{ 19537,86 },{ 19623,31 },{ 19479,58 },{ 19537,86 },{ 19623,31 }}, // Tamil/Tamil/Sri Lanka
- { 118, 2, 178,{ 19654,62 },{ 19716,81 },{ 418,27 },{ 19654,62 },{ 19716,81 },{ 418,27 }}, // Tatar/Cyrillic/Russia
- { 119, 28, 100,{ 19797,62 },{ 19859,86 },{ 19945,31 },{ 19797,62 },{ 19859,86 },{ 19945,31 }}, // Telugu/Telugu/India
- { 120, 30, 211,{ 19976,63 },{ 20039,98 },{ 19976,63 },{ 19976,63 },{ 20039,98 },{ 19976,63 }}, // Thai/Thai/Thailand
- { 121, 31, 44,{ 2704,63 },{ 20137,159 },{ 418,27 },{ 2704,63 },{ 20296,147 },{ 418,27 }}, // Tibetan/Tibetan/China
- { 121, 31, 100,{ 2704,63 },{ 20137,159 },{ 418,27 },{ 2704,63 },{ 20296,147 },{ 418,27 }}, // Tibetan/Tibetan/India
- { 122, 14, 69,{ 20443,36 },{ 20479,54 },{ 20533,24 },{ 20443,36 },{ 20479,54 },{ 20533,24 }}, // Tigrinya/Ethiopic/Ethiopia
- { 122, 14, 67,{ 20443,36 },{ 20479,54 },{ 20533,24 },{ 20443,36 },{ 20479,54 },{ 20533,24 }}, // Tigrinya/Ethiopic/Eritrea
- { 123, 7, 214,{ 20557,51 },{ 20608,87 },{ 20695,24 },{ 20557,51 },{ 20608,87 },{ 20695,24 }}, // Tongan/Latin/Tonga
+ { 116, 2, 209,{ 11075,48 },{ 19603,71 },{ 11203,24 },{ 11075,48 },{ 19603,71 },{ 11203,24 }}, // Tajik/Cyrillic/Tajikistan
+ { 117, 27, 100,{ 19674,58 },{ 19732,86 },{ 19818,31 },{ 19674,58 },{ 19732,86 },{ 19818,31 }}, // Tamil/Tamil/India
+ { 117, 27, 130,{ 19674,58 },{ 19732,86 },{ 19818,31 },{ 19674,58 },{ 19732,86 },{ 19818,31 }}, // Tamil/Tamil/Malaysia
+ { 117, 27, 190,{ 19674,58 },{ 19732,86 },{ 19818,31 },{ 19674,58 },{ 19732,86 },{ 19818,31 }}, // Tamil/Tamil/Singapore
+ { 117, 27, 198,{ 19674,58 },{ 19732,86 },{ 19818,31 },{ 19674,58 },{ 19732,86 },{ 19818,31 }}, // Tamil/Tamil/Sri Lanka
+ { 118, 2, 178,{ 19849,62 },{ 19911,81 },{ 418,27 },{ 19849,62 },{ 19911,81 },{ 418,27 }}, // Tatar/Cyrillic/Russia
+ { 119, 28, 100,{ 19992,62 },{ 20054,86 },{ 20140,31 },{ 19992,62 },{ 20054,86 },{ 20140,31 }}, // Telugu/Telugu/India
+ { 120, 30, 211,{ 20171,63 },{ 20234,98 },{ 20171,63 },{ 20171,63 },{ 20234,98 },{ 20171,63 }}, // Thai/Thai/Thailand
+ { 121, 31, 44,{ 2704,63 },{ 20332,159 },{ 418,27 },{ 2704,63 },{ 20491,147 },{ 418,27 }}, // Tibetan/Tibetan/China
+ { 121, 31, 100,{ 2704,63 },{ 20332,159 },{ 418,27 },{ 2704,63 },{ 20491,147 },{ 418,27 }}, // Tibetan/Tibetan/India
+ { 122, 14, 69,{ 20638,36 },{ 20674,54 },{ 20728,24 },{ 20638,36 },{ 20674,54 },{ 20728,24 }}, // Tigrinya/Ethiopic/Ethiopia
+ { 122, 14, 67,{ 20638,36 },{ 20674,54 },{ 20728,24 },{ 20638,36 },{ 20674,54 },{ 20728,24 }}, // Tigrinya/Ethiopic/Eritrea
+ { 123, 7, 214,{ 20752,51 },{ 20803,87 },{ 20890,24 },{ 20752,51 },{ 20803,87 },{ 20890,24 }}, // Tongan/Latin/Tonga
{ 124, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tsonga/Latin/South Africa
- { 125, 7, 217,{ 20719,48 },{ 20767,75 },{ 20842,24 },{ 20719,48 },{ 20767,75 },{ 20842,24 }}, // Turkish/Latin/Turkey
- { 125, 7, 56,{ 20719,48 },{ 20767,75 },{ 20842,24 },{ 20719,48 },{ 20767,75 },{ 20842,24 }}, // Turkish/Latin/Cyprus
- { 126, 7, 218,{ 20866,50 },{ 20916,77 },{ 20993,24 },{ 21017,51 },{ 21068,77 },{ 20993,24 }}, // Turkmen/Latin/Turkmenistan
- { 128, 1, 44,{ 21145,84 },{ 21145,84 },{ 418,27 },{ 21145,84 },{ 21145,84 },{ 418,27 }}, // Uighur/Arabic/China
- { 129, 2, 222,{ 21229,48 },{ 21277,95 },{ 21372,24 },{ 21396,67 },{ 21463,87 },{ 21550,24 }}, // Ukrainian/Cyrillic/Ukraine
- { 130, 1, 163,{ 21574,68 },{ 21574,68 },{ 134,24 },{ 21574,68 },{ 21574,68 },{ 134,24 }}, // Urdu/Arabic/Pakistan
- { 130, 1, 100,{ 21574,68 },{ 21574,68 },{ 134,24 },{ 21574,68 },{ 21574,68 },{ 134,24 }}, // Urdu/Arabic/India
- { 131, 7, 228,{ 21642,48 },{ 21690,75 },{ 21765,24 },{ 21789,48 },{ 21837,75 },{ 21765,24 }}, // Uzbek/Latin/Uzbekistan
- { 131, 1, 1,{ 21912,47 },{ 15131,68 },{ 418,27 },{ 21912,47 },{ 15131,68 },{ 418,27 }}, // Uzbek/Arabic/Afghanistan
- { 131, 2, 228,{ 21959,48 },{ 22007,71 },{ 11087,24 },{ 21959,48 },{ 22007,71 },{ 11087,24 }}, // Uzbek/Cyrillic/Uzbekistan
- { 132, 7, 232,{ 22078,75 },{ 22153,99 },{ 418,27 },{ 22252,75 },{ 22327,99 },{ 418,27 }}, // Vietnamese/Latin/Vietnam
- { 133, 7, 260,{ 22426,48 },{ 22474,74 },{ 22548,24 },{ 22572,48 },{ 22474,74 },{ 22548,24 }}, // Volapuk/Latin/World
- { 134, 7, 224,{ 22620,52 },{ 22672,87 },{ 22759,26 },{ 22785,59 },{ 22672,87 },{ 22759,26 }}, // Welsh/Latin/United Kingdom
- { 135, 7, 187,{ 22844,47 },{ 22891,84 },{ 418,27 },{ 22844,47 },{ 22891,84 },{ 418,27 }}, // Wolof/Latin/Senegal
- { 136, 7, 195,{ 22975,48 },{ 23023,91 },{ 418,27 },{ 22975,48 },{ 23023,91 },{ 418,27 }}, // Xhosa/Latin/South Africa
- { 137, 18, 260,{ 23114,58 },{ 23172,92 },{ 418,27 },{ 23172,92 },{ 23172,92 },{ 418,27 }}, // Yiddish/Hebrew/World
- { 138, 7, 157,{ 23264,40 },{ 23304,73 },{ 23377,27 },{ 23404,55 },{ 23459,121 },{ 23377,27 }}, // Yoruba/Latin/Nigeria
- { 138, 7, 23,{ 23580,41 },{ 23621,74 },{ 23695,27 },{ 23722,56 },{ 23778,134 },{ 23695,27 }}, // Yoruba/Latin/Benin
- { 140, 7, 195,{ 23912,48 },{ 23960,91 },{ 134,24 },{ 23912,48 },{ 23960,91 },{ 24051,24 }}, // Zulu/Latin/South Africa
- { 141, 7, 161,{ 5685,48 },{ 14532,83 },{ 134,24 },{ 24075,59 },{ 14532,83 },{ 134,24 }}, // Norwegian Nynorsk/Latin/Norway
- { 142, 7, 27,{ 8365,48 },{ 24134,83 },{ 9771,24 },{ 8365,48 },{ 24134,83 },{ 9771,24 }}, // Bosnian/Latin/Bosnia And Herzegowina
- { 142, 2, 27,{ 24217,48 },{ 24265,83 },{ 12727,24 },{ 24217,48 },{ 24265,83 },{ 12727,24 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
+ { 125, 7, 217,{ 20914,48 },{ 20962,75 },{ 21037,24 },{ 20914,48 },{ 20962,75 },{ 21037,24 }}, // Turkish/Latin/Turkey
+ { 125, 7, 56,{ 20914,48 },{ 20962,75 },{ 21037,24 },{ 20914,48 },{ 20962,75 },{ 21037,24 }}, // Turkish/Latin/Cyprus
+ { 126, 7, 218,{ 21061,50 },{ 21111,77 },{ 21188,24 },{ 21212,51 },{ 21263,77 },{ 21188,24 }}, // Turkmen/Latin/Turkmenistan
+ { 128, 1, 44,{ 21340,84 },{ 21340,84 },{ 418,27 },{ 21340,84 },{ 21340,84 },{ 418,27 }}, // Uighur/Arabic/China
+ { 129, 2, 222,{ 21424,48 },{ 21472,95 },{ 21567,24 },{ 21591,67 },{ 21658,87 },{ 21745,24 }}, // Ukrainian/Cyrillic/Ukraine
+ { 130, 1, 163,{ 21769,68 },{ 21769,68 },{ 134,24 },{ 21769,68 },{ 21769,68 },{ 134,24 }}, // Urdu/Arabic/Pakistan
+ { 130, 1, 100,{ 21769,68 },{ 21769,68 },{ 134,24 },{ 21769,68 },{ 21769,68 },{ 134,24 }}, // Urdu/Arabic/India
+ { 131, 7, 228,{ 21837,48 },{ 21885,75 },{ 21960,24 },{ 21984,48 },{ 22032,75 },{ 21960,24 }}, // Uzbek/Latin/Uzbekistan
+ { 131, 1, 1,{ 22107,47 },{ 15247,68 },{ 418,27 },{ 22107,47 },{ 15247,68 },{ 418,27 }}, // Uzbek/Arabic/Afghanistan
+ { 131, 2, 228,{ 22154,48 },{ 22202,71 },{ 11203,24 },{ 22154,48 },{ 22202,71 },{ 11203,24 }}, // Uzbek/Cyrillic/Uzbekistan
+ { 132, 7, 232,{ 22273,75 },{ 22348,99 },{ 418,27 },{ 22447,75 },{ 22522,99 },{ 418,27 }}, // Vietnamese/Latin/Vietnam
+ { 133, 7, 260,{ 22621,48 },{ 22669,74 },{ 22743,24 },{ 22767,48 },{ 22669,74 },{ 22743,24 }}, // Volapuk/Latin/World
+ { 134, 7, 224,{ 22815,52 },{ 22867,87 },{ 22954,26 },{ 22980,56 },{ 22867,87 },{ 22954,26 }}, // Welsh/Latin/United Kingdom
+ { 135, 7, 187,{ 23036,47 },{ 23083,84 },{ 418,27 },{ 23036,47 },{ 23083,84 },{ 418,27 }}, // Wolof/Latin/Senegal
+ { 136, 7, 195,{ 23167,48 },{ 23215,91 },{ 418,27 },{ 23167,48 },{ 23215,91 },{ 418,27 }}, // Xhosa/Latin/South Africa
+ { 137, 18, 260,{ 23306,58 },{ 23364,92 },{ 418,27 },{ 23364,92 },{ 23364,92 },{ 418,27 }}, // Yiddish/Hebrew/World
+ { 138, 7, 157,{ 23456,40 },{ 23496,73 },{ 23569,27 },{ 23596,55 },{ 23651,121 },{ 23569,27 }}, // Yoruba/Latin/Nigeria
+ { 138, 7, 23,{ 23772,41 },{ 23813,74 },{ 23887,27 },{ 23914,56 },{ 23970,134 },{ 23887,27 }}, // Yoruba/Latin/Benin
+ { 140, 7, 195,{ 24104,48 },{ 24152,91 },{ 134,24 },{ 24104,48 },{ 24152,91 },{ 24243,24 }}, // Zulu/Latin/South Africa
+ { 141, 7, 161,{ 5685,48 },{ 14648,83 },{ 134,24 },{ 24267,59 },{ 14648,83 },{ 134,24 }}, // Norwegian Nynorsk/Latin/Norway
+ { 142, 7, 27,{ 24326,48 },{ 24374,83 },{ 9887,24 },{ 24326,48 },{ 24374,83 },{ 9887,24 }}, // Bosnian/Latin/Bosnia And Herzegowina
+ { 142, 2, 27,{ 24457,48 },{ 24505,83 },{ 12843,24 },{ 24457,48 },{ 24505,83 },{ 12843,24 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina
{ 143, 29, 131,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Divehi/Thaana/Maldives
- { 144, 7, 251,{ 24348,102 },{ 24450,140 },{ 418,27 },{ 24348,102 },{ 24450,140 },{ 418,27 }}, // Manx/Latin/Isle Of Man
- { 145, 7, 224,{ 24590,46 },{ 24636,130 },{ 418,27 },{ 24590,46 },{ 24636,130 },{ 418,27 }}, // Cornish/Latin/United Kingdom
- { 146, 7, 83,{ 24766,48 },{ 24814,192 },{ 418,27 },{ 24766,48 },{ 24814,192 },{ 418,27 }}, // Akan/Latin/Ghana
- { 147, 13, 100,{ 25006,88 },{ 25006,88 },{ 418,27 },{ 25006,88 },{ 25006,88 },{ 418,27 }}, // Konkani/Devanagari/India
+ { 144, 7, 251,{ 24588,102 },{ 24690,140 },{ 418,27 },{ 24588,102 },{ 24690,140 },{ 418,27 }}, // Manx/Latin/Isle Of Man
+ { 145, 7, 224,{ 24830,46 },{ 24876,130 },{ 418,27 },{ 24830,46 },{ 24876,130 },{ 418,27 }}, // Cornish/Latin/United Kingdom
+ { 146, 7, 83,{ 25006,48 },{ 25054,192 },{ 418,27 },{ 25006,48 },{ 25054,192 },{ 418,27 }}, // Akan/Latin/Ghana
+ { 147, 13, 100,{ 25246,88 },{ 25246,88 },{ 418,27 },{ 25246,88 },{ 25246,88 },{ 418,27 }}, // Konkani/Devanagari/India
{ 148, 7, 83,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Ga/Latin/Ghana
- { 149, 7, 157,{ 25094,48 },{ 25142,87 },{ 25229,24 },{ 25094,48 },{ 25142,87 },{ 25229,24 }}, // Igbo/Latin/Nigeria
- { 150, 7, 111,{ 25253,48 },{ 25301,189 },{ 25490,24 },{ 25253,48 },{ 25301,189 },{ 25490,24 }}, // Kamba/Latin/Kenya
+ { 149, 7, 157,{ 25334,48 },{ 25382,87 },{ 25469,24 },{ 25334,48 },{ 25382,87 },{ 25469,24 }}, // Igbo/Latin/Nigeria
+ { 150, 7, 111,{ 25493,48 },{ 25541,189 },{ 25730,24 },{ 25493,48 },{ 25541,189 },{ 25730,24 }}, // Kamba/Latin/Kenya
{ 151, 33, 103,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Syriac/Syriac/Iraq
{ 152, 14, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Blin/Ethiopic/Eritrea
{ 153, 14, 69,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Geez/Ethiopic/Ethiopia
@@ -516,146 +518,151 @@ static const QCalendarLocale locale_data[] = {
{ 156, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Atsam/Latin/Nigeria
{ 157, 14, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tigre/Ethiopic/Eritrea
{ 158, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Jju/Latin/Nigeria
- { 159, 7, 106,{ 25514,48 },{ 25562,77 },{ 25639,24 },{ 25514,48 },{ 25562,77 },{ 25639,24 }}, // Friulian/Latin/Italy
+ { 159, 7, 106,{ 25754,48 },{ 25802,77 },{ 25879,24 },{ 25754,48 },{ 25802,77 },{ 25879,24 }}, // Friulian/Latin/Italy
{ 160, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Venda/Latin/South Africa
- { 161, 7, 83,{ 25663,48 },{ 25711,87 },{ 25798,24 },{ 25663,48 },{ 25711,87 },{ 25798,24 }}, // Ewe/Latin/Ghana
- { 161, 7, 212,{ 25663,48 },{ 25711,87 },{ 25798,24 },{ 25663,48 },{ 25711,87 },{ 25798,24 }}, // Ewe/Latin/Togo
+ { 161, 7, 83,{ 25903,48 },{ 25951,87 },{ 26038,24 },{ 25903,48 },{ 25951,87 },{ 26038,24 }}, // Ewe/Latin/Ghana
+ { 161, 7, 212,{ 25903,48 },{ 25951,87 },{ 26038,24 },{ 25903,48 },{ 25951,87 },{ 26038,24 }}, // Ewe/Latin/Togo
{ 162, 14, 69,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Walamo/Ethiopic/Ethiopia
- { 163, 7, 225,{ 25822,59 },{ 25881,95 },{ 418,27 },{ 25822,59 },{ 25881,95 },{ 418,27 }}, // Hawaiian/Latin/United States
+ { 163, 7, 225,{ 26062,59 },{ 26121,95 },{ 418,27 },{ 26062,59 },{ 26121,95 },{ 418,27 }}, // Hawaiian/Latin/United States
{ 164, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tyap/Latin/Nigeria
{ 165, 7, 129,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Nyanja/Latin/Malawi
- { 166, 7, 170,{ 25976,48 },{ 26024,88 },{ 26112,38 },{ 25976,48 },{ 26024,88 },{ 25976,48 }}, // Filipino/Latin/Philippines
- { 167, 7, 206,{ 7630,48 },{ 26150,86 },{ 134,24 },{ 7630,48 },{ 26150,86 },{ 134,24 }}, // Swiss German/Latin/Switzerland
- { 167, 7, 74,{ 7630,48 },{ 26150,86 },{ 134,24 },{ 7630,48 },{ 26150,86 },{ 134,24 }}, // Swiss German/Latin/France
- { 167, 7, 123,{ 7630,48 },{ 26150,86 },{ 134,24 },{ 7630,48 },{ 26150,86 },{ 134,24 }}, // Swiss German/Latin/Liechtenstein
- { 168, 34, 44,{ 26236,38 },{ 26236,38 },{ 418,27 },{ 26236,38 },{ 26236,38 },{ 418,27 }}, // Sichuan Yi/Yi/China
+ { 166, 7, 170,{ 26216,48 },{ 26264,88 },{ 26352,38 },{ 26216,48 },{ 26264,88 },{ 26216,48 }}, // Filipino/Latin/Philippines
+ { 167, 7, 206,{ 7630,48 },{ 26390,86 },{ 134,24 },{ 7630,48 },{ 26390,86 },{ 134,24 }}, // Swiss German/Latin/Switzerland
+ { 167, 7, 74,{ 7630,48 },{ 26390,86 },{ 134,24 },{ 7630,48 },{ 26390,86 },{ 134,24 }}, // Swiss German/Latin/France
+ { 167, 7, 123,{ 7630,48 },{ 26390,86 },{ 134,24 },{ 7630,48 },{ 26390,86 },{ 134,24 }}, // Swiss German/Latin/Liechtenstein
+ { 168, 34, 44,{ 26476,38 },{ 26476,38 },{ 418,27 },{ 26476,38 },{ 26476,38 },{ 418,27 }}, // Sichuan Yi/Yi/China
{ 169, 7, 121,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kpelle/Latin/Liberia
- { 170, 7, 82,{ 26274,59 },{ 26333,85 },{ 134,24 },{ 26274,59 },{ 26333,85 },{ 134,24 }}, // Low German/Latin/Germany
- { 170, 7, 151,{ 26274,59 },{ 26333,85 },{ 134,24 },{ 26274,59 },{ 26333,85 },{ 134,24 }}, // Low German/Latin/Netherlands
+ { 170, 7, 82,{ 26514,59 },{ 26573,85 },{ 134,24 },{ 26514,59 },{ 26573,85 },{ 134,24 }}, // Low German/Latin/Germany
+ { 170, 7, 151,{ 26514,59 },{ 26573,85 },{ 134,24 },{ 26514,59 },{ 26573,85 },{ 134,24 }}, // Low German/Latin/Netherlands
{ 171, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // South Ndebele/Latin/South Africa
{ 172, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Northern Sotho/Latin/South Africa
- { 173, 7, 161,{ 26418,59 },{ 26477,145 },{ 26622,24 },{ 26418,59 },{ 26477,145 },{ 26622,24 }}, // Northern Sami/Latin/Norway
- { 173, 7, 73,{ 26646,60 },{ 26477,145 },{ 26622,24 },{ 26646,60 },{ 26477,145 },{ 26622,24 }}, // Northern Sami/Latin/Finland
- { 173, 7, 205,{ 26418,59 },{ 26477,145 },{ 26622,24 },{ 26418,59 },{ 26477,145 },{ 26622,24 }}, // Northern Sami/Latin/Sweden
+ { 173, 7, 161,{ 26658,59 },{ 26717,145 },{ 26862,24 },{ 26658,59 },{ 26717,145 },{ 26862,24 }}, // Northern Sami/Latin/Norway
+ { 173, 7, 73,{ 26886,60 },{ 26717,145 },{ 26862,24 },{ 26886,60 },{ 26717,145 },{ 26862,24 }}, // Northern Sami/Latin/Finland
+ { 173, 7, 205,{ 26658,59 },{ 26717,145 },{ 26862,24 },{ 26658,59 },{ 26717,145 },{ 26862,24 }}, // Northern Sami/Latin/Sweden
{ 174, 7, 208,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Taroko/Latin/Taiwan
- { 175, 7, 111,{ 26706,48 },{ 26754,88 },{ 26842,24 },{ 26706,48 },{ 26754,88 },{ 26842,24 }}, // Gusii/Latin/Kenya
- { 176, 7, 111,{ 26866,48 },{ 26914,221 },{ 27135,24 },{ 26866,48 },{ 26914,221 },{ 27135,24 }}, // Taita/Latin/Kenya
- { 177, 7, 187,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Senegal
- { 177, 7, 34,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Burkina Faso
- { 177, 7, 37,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Cameroon
- { 177, 7, 80,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Gambia
- { 177, 7, 83,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Ghana
- { 177, 7, 91,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Guinea
- { 177, 7, 92,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Guinea Bissau
- { 177, 7, 121,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Liberia
- { 177, 7, 136,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Mauritania
- { 177, 7, 156,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Niger
- { 177, 7, 157,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Nigeria
- { 177, 7, 189,{ 27159,48 },{ 27207,77 },{ 27284,24 },{ 27159,48 },{ 27207,77 },{ 27284,24 }}, // Fulah/Latin/Sierra Leone
+ { 175, 7, 111,{ 26946,48 },{ 26994,88 },{ 27082,24 },{ 26946,48 },{ 26994,88 },{ 27082,24 }}, // Gusii/Latin/Kenya
+ { 176, 7, 111,{ 27106,48 },{ 27154,221 },{ 27375,24 },{ 27106,48 },{ 27154,221 },{ 27375,24 }}, // Taita/Latin/Kenya
+ { 177, 7, 187,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Senegal
+ { 177, 7, 34,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Burkina Faso
+ { 177, 7, 37,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Cameroon
+ { 177, 7, 80,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Gambia
+ { 177, 7, 83,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Ghana
+ { 177, 7, 91,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Guinea
+ { 177, 7, 92,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Guinea Bissau
+ { 177, 7, 121,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Liberia
+ { 177, 7, 136,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Mauritania
+ { 177, 7, 156,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Niger
+ { 177, 7, 157,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Nigeria
+ { 177, 7, 189,{ 27399,48 },{ 27447,77 },{ 27524,24 },{ 27399,48 },{ 27447,77 },{ 27524,24 }}, // Fulah/Latin/Sierra Leone
{ 177, 134, 91,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Fulah/Adlam/Guinea
- { 178, 7, 111,{ 27308,48 },{ 27356,185 },{ 27541,24 },{ 27308,48 },{ 27356,185 },{ 27541,24 }}, // Kikuyu/Latin/Kenya
- { 179, 7, 111,{ 27565,48 },{ 27613,173 },{ 27786,24 },{ 27565,48 },{ 27613,173 },{ 27786,24 }}, // Samburu/Latin/Kenya
- { 180, 7, 146,{ 27810,48 },{ 27858,88 },{ 134,24 },{ 27810,48 },{ 27858,88 },{ 134,24 }}, // Sena/Latin/Mozambique
- { 181, 7, 240,{ 27946,52 },{ 27998,112 },{ 28110,24 },{ 27946,52 },{ 27998,112 },{ 28110,24 }}, // North Ndebele/Latin/Zimbabwe
- { 182, 7, 210,{ 28134,39 },{ 28173,194 },{ 28367,24 },{ 28134,39 },{ 28173,194 },{ 28367,24 }}, // Rombo/Latin/Tanzania
- { 183, 9, 145,{ 28391,48 },{ 28439,81 },{ 28520,24 },{ 28391,48 },{ 28439,81 },{ 28520,24 }}, // Tachelhit/Tifinagh/Morocco
- { 183, 7, 145,{ 28544,48 },{ 28592,81 },{ 28673,24 },{ 28544,48 },{ 28592,81 },{ 28673,24 }}, // Tachelhit/Latin/Morocco
- { 184, 7, 3,{ 28697,48 },{ 28745,82 },{ 28827,24 },{ 28851,48 },{ 28899,84 },{ 28983,24 }}, // Kabyle/Latin/Algeria
- { 185, 7, 221,{ 29007,48 },{ 29055,152 },{ 134,24 },{ 29007,48 },{ 29055,152 },{ 134,24 }}, // Nyankole/Latin/Uganda
- { 186, 7, 210,{ 29207,48 },{ 29255,254 },{ 29509,24 },{ 29207,48 },{ 29255,254 },{ 29509,24 }}, // Bena/Latin/Tanzania
- { 187, 7, 210,{ 19131,48 },{ 29533,87 },{ 134,24 },{ 19131,48 },{ 29533,87 },{ 134,24 }}, // Vunjo/Latin/Tanzania
- { 188, 7, 132,{ 29620,47 },{ 29667,92 },{ 29759,24 },{ 29620,47 },{ 29667,92 },{ 29759,24 }}, // Bambara/Latin/Mali
+ { 178, 7, 111,{ 27548,48 },{ 27596,185 },{ 27781,24 },{ 27548,48 },{ 27596,185 },{ 27781,24 }}, // Kikuyu/Latin/Kenya
+ { 179, 7, 111,{ 27805,48 },{ 27853,173 },{ 28026,24 },{ 27805,48 },{ 27853,173 },{ 28026,24 }}, // Samburu/Latin/Kenya
+ { 180, 7, 146,{ 28050,48 },{ 28098,88 },{ 134,24 },{ 28050,48 },{ 28098,88 },{ 134,24 }}, // Sena/Latin/Mozambique
+ { 181, 7, 240,{ 28186,52 },{ 28238,112 },{ 28350,24 },{ 28186,52 },{ 28238,112 },{ 28350,24 }}, // North Ndebele/Latin/Zimbabwe
+ { 182, 7, 210,{ 28374,39 },{ 28413,194 },{ 28607,24 },{ 28374,39 },{ 28413,194 },{ 28607,24 }}, // Rombo/Latin/Tanzania
+ { 183, 9, 145,{ 28631,48 },{ 28679,81 },{ 28760,24 },{ 28631,48 },{ 28679,81 },{ 28760,24 }}, // Tachelhit/Tifinagh/Morocco
+ { 183, 7, 145,{ 28784,48 },{ 28832,81 },{ 28913,24 },{ 28784,48 },{ 28832,81 },{ 28913,24 }}, // Tachelhit/Latin/Morocco
+ { 184, 7, 3,{ 28937,48 },{ 28985,82 },{ 29067,24 },{ 29091,48 },{ 29139,84 },{ 29223,24 }}, // Kabyle/Latin/Algeria
+ { 185, 7, 221,{ 29247,48 },{ 29295,152 },{ 134,24 },{ 29247,48 },{ 29295,152 },{ 134,24 }}, // Nyankole/Latin/Uganda
+ { 186, 7, 210,{ 29447,48 },{ 29495,254 },{ 29749,24 },{ 29447,48 },{ 29495,254 },{ 29749,24 }}, // Bena/Latin/Tanzania
+ { 187, 7, 210,{ 19326,48 },{ 29773,87 },{ 134,24 },{ 19326,48 },{ 29773,87 },{ 134,24 }}, // Vunjo/Latin/Tanzania
+ { 188, 7, 132,{ 29860,47 },{ 29907,92 },{ 29999,24 },{ 29860,47 },{ 29907,92 },{ 29999,24 }}, // Bambara/Latin/Mali
{ 188, 75, 132,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Bambara/Nko/Mali
- { 189, 7, 111,{ 29783,48 },{ 29831,207 },{ 30038,24 },{ 29783,48 },{ 29831,207 },{ 30038,24 }}, // Embu/Latin/Kenya
- { 190, 12, 225,{ 30062,36 },{ 30098,58 },{ 30156,24 },{ 30062,36 },{ 30098,58 },{ 30156,24 }}, // Cherokee/Cherokee/United States
- { 191, 7, 137,{ 30180,47 },{ 30227,68 },{ 30295,24 },{ 30180,47 },{ 30227,68 },{ 30295,24 }}, // Morisyen/Latin/Mauritius
- { 192, 7, 210,{ 19131,48 },{ 30319,264 },{ 134,24 },{ 19131,48 },{ 30319,264 },{ 134,24 }}, // Makonde/Latin/Tanzania
- { 193, 7, 210,{ 30583,83 },{ 30666,111 },{ 30777,24 },{ 30583,83 },{ 30666,111 },{ 30777,24 }}, // Langi/Latin/Tanzania
- { 194, 7, 221,{ 30801,48 },{ 30849,97 },{ 134,24 },{ 30801,48 },{ 30849,97 },{ 134,24 }}, // Ganda/Latin/Uganda
- { 195, 7, 239,{ 30946,48 },{ 30994,83 },{ 31077,24 },{ 30946,48 },{ 30994,83 },{ 31077,24 }}, // Bemba/Latin/Zambia
- { 196, 7, 39,{ 31101,48 },{ 31149,85 },{ 134,24 },{ 31101,48 },{ 31149,85 },{ 134,24 }}, // Kabuverdianu/Latin/Cape Verde
- { 197, 7, 111,{ 31234,48 },{ 31282,86 },{ 31368,24 },{ 31234,48 },{ 31282,86 },{ 31368,24 }}, // Meru/Latin/Kenya
- { 198, 7, 111,{ 31392,49 },{ 31441,121 },{ 31562,24 },{ 31392,49 },{ 31441,121 },{ 31562,24 }}, // Kalenjin/Latin/Kenya
- { 199, 7, 148,{ 0,48 },{ 31586,136 },{ 134,24 },{ 0,48 },{ 31586,136 },{ 134,24 }}, // Nama/Latin/Namibia
- { 200, 7, 210,{ 19131,48 },{ 29533,87 },{ 134,24 },{ 19131,48 },{ 29533,87 },{ 134,24 }}, // Machame/Latin/Tanzania
- { 201, 7, 82,{ 31722,59 },{ 31781,87 },{ 13021,24 },{ 31868,48 },{ 31781,87 },{ 13021,24 }}, // Colognian/Latin/Germany
- { 202, 7, 111,{ 31916,51 },{ 31967,132 },{ 418,27 },{ 31916,51 },{ 31967,132 },{ 418,27 }}, // Masai/Latin/Kenya
- { 202, 7, 210,{ 31916,51 },{ 31967,132 },{ 418,27 },{ 31916,51 },{ 31967,132 },{ 418,27 }}, // Masai/Latin/Tanzania
- { 203, 7, 221,{ 30801,48 },{ 30849,97 },{ 134,24 },{ 30801,48 },{ 30849,97 },{ 134,24 }}, // Soga/Latin/Uganda
- { 204, 7, 111,{ 32099,48 },{ 19179,84 },{ 134,24 },{ 32099,48 },{ 19179,84 },{ 134,24 }}, // Luyia/Latin/Kenya
- { 205, 7, 210,{ 32147,48 },{ 19179,84 },{ 134,24 },{ 32147,48 },{ 19179,84 },{ 134,24 }}, // Asu/Latin/Tanzania
- { 206, 7, 221,{ 32195,48 },{ 32243,94 },{ 32337,24 },{ 32195,48 },{ 32243,94 },{ 32337,24 }}, // Teso/Latin/Uganda
- { 206, 7, 111,{ 32195,48 },{ 32243,94 },{ 32337,24 },{ 32195,48 },{ 32243,94 },{ 32337,24 }}, // Teso/Latin/Kenya
+ { 189, 7, 111,{ 30023,48 },{ 30071,207 },{ 30278,24 },{ 30023,48 },{ 30071,207 },{ 30278,24 }}, // Embu/Latin/Kenya
+ { 190, 12, 225,{ 30302,36 },{ 30338,58 },{ 30396,24 },{ 30302,36 },{ 30338,58 },{ 30396,24 }}, // Cherokee/Cherokee/United States
+ { 191, 7, 137,{ 30420,47 },{ 30467,68 },{ 30535,24 },{ 30420,47 },{ 30467,68 },{ 30535,24 }}, // Morisyen/Latin/Mauritius
+ { 192, 7, 210,{ 19326,48 },{ 30559,264 },{ 134,24 },{ 19326,48 },{ 30559,264 },{ 134,24 }}, // Makonde/Latin/Tanzania
+ { 193, 7, 210,{ 30823,83 },{ 30906,111 },{ 31017,24 },{ 30823,83 },{ 30906,111 },{ 31017,24 }}, // Langi/Latin/Tanzania
+ { 194, 7, 221,{ 31041,48 },{ 31089,97 },{ 134,24 },{ 31041,48 },{ 31089,97 },{ 134,24 }}, // Ganda/Latin/Uganda
+ { 195, 7, 239,{ 31186,48 },{ 31234,83 },{ 31317,24 },{ 31186,48 },{ 31234,83 },{ 31317,24 }}, // Bemba/Latin/Zambia
+ { 196, 7, 39,{ 31341,48 },{ 31389,85 },{ 134,24 },{ 31341,48 },{ 31389,85 },{ 134,24 }}, // Kabuverdianu/Latin/Cape Verde
+ { 197, 7, 111,{ 31474,48 },{ 31522,86 },{ 31608,24 },{ 31474,48 },{ 31522,86 },{ 31608,24 }}, // Meru/Latin/Kenya
+ { 198, 7, 111,{ 31632,49 },{ 31681,121 },{ 31802,24 },{ 31632,49 },{ 31681,121 },{ 31802,24 }}, // Kalenjin/Latin/Kenya
+ { 199, 7, 148,{ 0,48 },{ 31826,136 },{ 134,24 },{ 0,48 },{ 31826,136 },{ 134,24 }}, // Nama/Latin/Namibia
+ { 200, 7, 210,{ 19326,48 },{ 29773,87 },{ 134,24 },{ 19326,48 },{ 29773,87 },{ 134,24 }}, // Machame/Latin/Tanzania
+ { 201, 7, 82,{ 31962,59 },{ 32021,87 },{ 13137,24 },{ 32108,48 },{ 32021,87 },{ 13137,24 }}, // Colognian/Latin/Germany
+ { 202, 7, 111,{ 32156,51 },{ 32207,132 },{ 418,27 },{ 32156,51 },{ 32207,132 },{ 418,27 }}, // Masai/Latin/Kenya
+ { 202, 7, 210,{ 32156,51 },{ 32207,132 },{ 418,27 },{ 32156,51 },{ 32207,132 },{ 418,27 }}, // Masai/Latin/Tanzania
+ { 203, 7, 221,{ 31041,48 },{ 31089,97 },{ 134,24 },{ 31041,48 },{ 31089,97 },{ 134,24 }}, // Soga/Latin/Uganda
+ { 204, 7, 111,{ 32339,48 },{ 19374,84 },{ 134,24 },{ 32339,48 },{ 19374,84 },{ 134,24 }}, // Luyia/Latin/Kenya
+ { 205, 7, 210,{ 32387,48 },{ 19374,84 },{ 134,24 },{ 32387,48 },{ 19374,84 },{ 134,24 }}, // Asu/Latin/Tanzania
+ { 206, 7, 221,{ 32435,48 },{ 32483,94 },{ 32577,24 },{ 32435,48 },{ 32483,94 },{ 32577,24 }}, // Teso/Latin/Uganda
+ { 206, 7, 111,{ 32435,48 },{ 32483,94 },{ 32577,24 },{ 32435,48 },{ 32483,94 },{ 32577,24 }}, // Teso/Latin/Kenya
{ 207, 7, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Saho/Latin/Eritrea
- { 208, 7, 132,{ 32361,46 },{ 32407,88 },{ 32495,24 },{ 32361,46 },{ 32407,88 },{ 32495,24 }}, // Koyra Chiini/Latin/Mali
- { 209, 7, 210,{ 19131,48 },{ 29533,87 },{ 134,24 },{ 19131,48 },{ 29533,87 },{ 134,24 }}, // Rwa/Latin/Tanzania
- { 210, 7, 111,{ 32519,48 },{ 32567,186 },{ 32753,24 },{ 32519,48 },{ 32567,186 },{ 32753,24 }}, // Luo/Latin/Kenya
- { 211, 7, 221,{ 29007,48 },{ 29055,152 },{ 134,24 },{ 29007,48 },{ 29055,152 },{ 134,24 }}, // Chiga/Latin/Uganda
- { 212, 7, 145,{ 32777,48 },{ 32825,86 },{ 32911,24 },{ 32777,48 },{ 32825,86 },{ 32911,24 }}, // Central Morocco Tamazight/Latin/Morocco
- { 213, 7, 132,{ 32361,46 },{ 32407,88 },{ 32495,24 },{ 32361,46 },{ 32407,88 },{ 32495,24 }}, // Koyraboro Senni/Latin/Mali
- { 214, 7, 210,{ 19131,48 },{ 32935,84 },{ 134,24 },{ 19131,48 },{ 32935,84 },{ 134,24 }}, // Shambala/Latin/Tanzania
- { 215, 13, 100,{ 33019,88 },{ 33019,88 },{ 33107,31 },{ 33019,88 },{ 33019,88 },{ 33107,31 }}, // Bodo/Devanagari/India
- { 218, 2, 178,{ 21959,48 },{ 11170,80 },{ 11087,24 },{ 21959,48 },{ 11170,80 },{ 11087,24 }}, // Chechen/Cyrillic/Russia
- { 219, 2, 178,{ 33138,65 },{ 33203,117 },{ 33320,30 },{ 33138,65 },{ 33350,117 },{ 33320,30 }}, // Church/Cyrillic/Russia
+ { 208, 7, 132,{ 32601,46 },{ 32647,88 },{ 32735,24 },{ 32601,46 },{ 32647,88 },{ 32735,24 }}, // Koyra Chiini/Latin/Mali
+ { 209, 7, 210,{ 19326,48 },{ 29773,87 },{ 134,24 },{ 19326,48 },{ 29773,87 },{ 134,24 }}, // Rwa/Latin/Tanzania
+ { 210, 7, 111,{ 32759,48 },{ 32807,186 },{ 32993,24 },{ 32759,48 },{ 32807,186 },{ 32993,24 }}, // Luo/Latin/Kenya
+ { 211, 7, 221,{ 29247,48 },{ 29295,152 },{ 134,24 },{ 29247,48 },{ 29295,152 },{ 134,24 }}, // Chiga/Latin/Uganda
+ { 212, 7, 145,{ 33017,48 },{ 33065,86 },{ 33151,24 },{ 33017,48 },{ 33065,86 },{ 33151,24 }}, // Central Morocco Tamazight/Latin/Morocco
+ { 213, 7, 132,{ 32601,46 },{ 32647,88 },{ 32735,24 },{ 32601,46 },{ 32647,88 },{ 32735,24 }}, // Koyraboro Senni/Latin/Mali
+ { 214, 7, 210,{ 19326,48 },{ 33175,84 },{ 134,24 },{ 19326,48 },{ 33175,84 },{ 134,24 }}, // Shambala/Latin/Tanzania
+ { 215, 13, 100,{ 33259,88 },{ 33259,88 },{ 33347,31 },{ 33259,88 },{ 33259,88 },{ 33347,31 }}, // Bodo/Devanagari/India
+ { 218, 2, 178,{ 22154,48 },{ 11286,80 },{ 11203,24 },{ 22154,48 },{ 11286,80 },{ 11203,24 }}, // Chechen/Cyrillic/Russia
+ { 219, 2, 178,{ 33378,65 },{ 33443,117 },{ 33560,30 },{ 33378,65 },{ 33590,117 },{ 33560,30 }}, // Church/Cyrillic/Russia
{ 220, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Chuvash/Cyrillic/Russia
- { 230, 7, 49,{ 33467,49 },{ 33516,99 },{ 33615,24 },{ 33467,49 },{ 33516,99 },{ 33615,24 }}, // Luba Katanga/Latin/Congo Kinshasa
- { 231, 7, 125,{ 33639,48 },{ 33687,85 },{ 134,24 },{ 33772,59 },{ 33687,85 },{ 134,24 }}, // Luxembourgish/Latin/Luxembourg
+ { 230, 7, 49,{ 33707,49 },{ 33756,99 },{ 33855,24 },{ 33707,49 },{ 33756,99 },{ 33855,24 }}, // Luba Katanga/Latin/Congo Kinshasa
+ { 231, 7, 125,{ 33879,48 },{ 33927,85 },{ 134,24 },{ 34012,59 },{ 33927,85 },{ 134,24 }}, // Luxembourgish/Latin/Luxembourg
{ 236, 7, 21,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Walloon/Latin/Belgium
- { 237, 7, 37,{ 33831,48 },{ 33879,195 },{ 34074,24 },{ 33831,48 },{ 33879,195 },{ 34074,24 }}, // Aghem/Latin/Cameroon
- { 238, 7, 37,{ 34098,48 },{ 34146,90 },{ 34236,24 },{ 34098,48 },{ 34146,90 },{ 34236,24 }}, // Basaa/Latin/Cameroon
- { 239, 7, 156,{ 32361,46 },{ 32407,88 },{ 32495,24 },{ 32361,46 },{ 32407,88 },{ 32495,24 }}, // Zarma/Latin/Niger
- { 240, 7, 37,{ 34260,49 },{ 34309,99 },{ 34408,24 },{ 34260,49 },{ 34309,99 },{ 34408,24 }}, // Duala/Latin/Cameroon
- { 241, 7, 187,{ 34432,36 },{ 34468,82 },{ 34550,24 },{ 34432,36 },{ 34468,82 },{ 34550,24 }}, // Jola Fonyi/Latin/Senegal
- { 242, 7, 37,{ 34574,50 },{ 34624,141 },{ 34765,24 },{ 34574,50 },{ 34624,141 },{ 34765,24 }}, // Ewondo/Latin/Cameroon
- { 243, 7, 37,{ 34789,39 },{ 34828,191 },{ 418,27 },{ 34789,39 },{ 34828,191 },{ 418,27 }}, // Bafia/Latin/Cameroon
- { 244, 7, 146,{ 35019,48 },{ 35067,213 },{ 35280,24 },{ 35019,48 },{ 35067,213 },{ 35280,24 }}, // Makhuwa Meetto/Latin/Mozambique
- { 245, 7, 37,{ 35304,48 },{ 35352,139 },{ 35491,24 },{ 35304,48 },{ 35352,139 },{ 35491,24 }}, // Mundang/Latin/Cameroon
- { 246, 7, 37,{ 35515,51 },{ 35566,143 },{ 418,27 },{ 35515,51 },{ 35566,143 },{ 418,27 }}, // Kwasio/Latin/Cameroon
- { 247, 7, 254,{ 35709,54 },{ 35763,96 },{ 35859,24 },{ 35709,54 },{ 35763,96 },{ 35859,24 }}, // Nuer/Latin/South Sudan
- { 248, 2, 178,{ 35883,50 },{ 35933,116 },{ 36049,24 },{ 35883,50 },{ 36073,121 },{ 36049,24 }}, // Sakha/Cyrillic/Russia
- { 249, 7, 210,{ 36194,48 },{ 36242,117 },{ 418,27 },{ 36194,48 },{ 36242,117 },{ 418,27 }}, // Sangu/Latin/Tanzania
- { 251, 7, 156,{ 32361,46 },{ 32407,88 },{ 32495,24 },{ 32361,46 },{ 32407,88 },{ 32495,24 }}, // Tasawaq/Latin/Niger
- { 252, 35, 121,{ 36359,38 },{ 36397,61 },{ 418,27 },{ 36359,38 },{ 36397,61 },{ 418,27 }}, // Vai/Vai/Liberia
- { 252, 7, 121,{ 36458,81 },{ 36458,81 },{ 418,27 },{ 36458,81 },{ 36458,81 },{ 418,27 }}, // Vai/Latin/Liberia
- { 253, 7, 206,{ 36539,48 },{ 36587,99 },{ 36686,24 },{ 36539,48 },{ 36587,99 },{ 36686,24 }}, // Walser/Latin/Switzerland
- { 254, 7, 37,{ 36710,51 },{ 36761,191 },{ 418,27 },{ 36710,51 },{ 36761,191 },{ 418,27 }}, // Yangben/Latin/Cameroon
- { 256, 7, 197,{ 36952,48 },{ 37000,85 },{ 37085,24 },{ 37109,48 },{ 37157,117 },{ 37085,24 }}, // Asturian/Latin/Spain
- { 257, 7, 37,{ 37274,174 },{ 37274,174 },{ 418,27 },{ 37274,174 },{ 37274,174 },{ 418,27 }}, // Ngomba/Latin/Cameroon
- { 258, 7, 37,{ 37448,102 },{ 37448,102 },{ 418,27 },{ 37448,102 },{ 37448,102 },{ 418,27 }}, // Kako/Latin/Cameroon
- { 259, 7, 37,{ 37550,137 },{ 37687,142 },{ 37829,36 },{ 37550,137 },{ 37687,142 },{ 37829,36 }}, // Meta/Latin/Cameroon
- { 260, 7, 37,{ 37865,165 },{ 37865,165 },{ 418,27 },{ 37865,165 },{ 37865,165 },{ 418,27 }}, // Ngiemboon/Latin/Cameroon
+ { 237, 7, 37,{ 34071,48 },{ 34119,195 },{ 34314,24 },{ 34071,48 },{ 34119,195 },{ 34314,24 }}, // Aghem/Latin/Cameroon
+ { 238, 7, 37,{ 34338,48 },{ 34386,90 },{ 34476,24 },{ 34338,48 },{ 34386,90 },{ 34476,24 }}, // Basaa/Latin/Cameroon
+ { 239, 7, 156,{ 32601,46 },{ 32647,88 },{ 32735,24 },{ 32601,46 },{ 32647,88 },{ 32735,24 }}, // Zarma/Latin/Niger
+ { 240, 7, 37,{ 34500,49 },{ 34549,99 },{ 34648,24 },{ 34500,49 },{ 34549,99 },{ 34648,24 }}, // Duala/Latin/Cameroon
+ { 241, 7, 187,{ 34672,36 },{ 34708,82 },{ 34790,24 },{ 34672,36 },{ 34708,82 },{ 34790,24 }}, // Jola Fonyi/Latin/Senegal
+ { 242, 7, 37,{ 34814,50 },{ 34864,141 },{ 35005,24 },{ 34814,50 },{ 34864,141 },{ 35005,24 }}, // Ewondo/Latin/Cameroon
+ { 243, 7, 37,{ 35029,39 },{ 35068,191 },{ 418,27 },{ 35029,39 },{ 35068,191 },{ 418,27 }}, // Bafia/Latin/Cameroon
+ { 244, 7, 146,{ 35259,48 },{ 35307,213 },{ 35520,24 },{ 35259,48 },{ 35307,213 },{ 35520,24 }}, // Makhuwa Meetto/Latin/Mozambique
+ { 245, 7, 37,{ 35544,48 },{ 35592,139 },{ 35731,24 },{ 35544,48 },{ 35592,139 },{ 35731,24 }}, // Mundang/Latin/Cameroon
+ { 246, 7, 37,{ 35755,51 },{ 35806,143 },{ 418,27 },{ 35755,51 },{ 35806,143 },{ 418,27 }}, // Kwasio/Latin/Cameroon
+ { 247, 7, 254,{ 35949,54 },{ 36003,96 },{ 36099,24 },{ 35949,54 },{ 36003,96 },{ 36099,24 }}, // Nuer/Latin/South Sudan
+ { 248, 2, 178,{ 36123,50 },{ 36173,116 },{ 36289,24 },{ 36123,50 },{ 36313,121 },{ 36289,24 }}, // Sakha/Cyrillic/Russia
+ { 249, 7, 210,{ 36434,48 },{ 36482,117 },{ 418,27 },{ 36434,48 },{ 36482,117 },{ 418,27 }}, // Sangu/Latin/Tanzania
+ { 251, 7, 156,{ 32601,46 },{ 32647,88 },{ 32735,24 },{ 32601,46 },{ 32647,88 },{ 32735,24 }}, // Tasawaq/Latin/Niger
+ { 252, 35, 121,{ 36599,38 },{ 36637,61 },{ 418,27 },{ 36599,38 },{ 36637,61 },{ 418,27 }}, // Vai/Vai/Liberia
+ { 252, 7, 121,{ 36698,81 },{ 36698,81 },{ 418,27 },{ 36698,81 },{ 36698,81 },{ 418,27 }}, // Vai/Latin/Liberia
+ { 253, 7, 206,{ 36779,48 },{ 36827,99 },{ 36926,24 },{ 36779,48 },{ 36827,99 },{ 36926,24 }}, // Walser/Latin/Switzerland
+ { 254, 7, 37,{ 36950,51 },{ 37001,191 },{ 418,27 },{ 36950,51 },{ 37001,191 },{ 418,27 }}, // Yangben/Latin/Cameroon
+ { 256, 7, 197,{ 37192,48 },{ 37240,85 },{ 37325,24 },{ 37349,48 },{ 37397,117 },{ 37325,24 }}, // Asturian/Latin/Spain
+ { 257, 7, 37,{ 37514,174 },{ 37514,174 },{ 418,27 },{ 37514,174 },{ 37514,174 },{ 418,27 }}, // Ngomba/Latin/Cameroon
+ { 258, 7, 37,{ 37688,102 },{ 37688,102 },{ 418,27 },{ 37688,102 },{ 37688,102 },{ 418,27 }}, // Kako/Latin/Cameroon
+ { 259, 7, 37,{ 37790,137 },{ 37927,142 },{ 38069,36 },{ 37790,137 },{ 37927,142 },{ 38069,36 }}, // Meta/Latin/Cameroon
+ { 260, 7, 37,{ 38105,165 },{ 38105,165 },{ 418,27 },{ 38105,165 },{ 38105,165 },{ 418,27 }}, // Ngiemboon/Latin/Cameroon
+ { 261, 7, 197,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Aragonese/Latin/Spain
{ 290, 11, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Manipuri/Bengali/India
{ 309, 100, 232,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tai Dam/Tai Viet/Vietnam
{ 312, 7, 37,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Akoose/Latin/Cameroon
- { 313, 7, 225,{ 38030,180 },{ 38030,180 },{ 418,27 },{ 38030,180 },{ 38030,180 },{ 418,27 }}, // Lakota/Latin/United States
- { 314, 9, 145,{ 28391,48 },{ 28439,81 },{ 28520,24 },{ 28391,48 },{ 28439,81 },{ 28520,24 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco
+ { 313, 7, 225,{ 38270,180 },{ 38270,180 },{ 418,27 },{ 38270,180 },{ 38270,180 },{ 418,27 }}, // Lakota/Latin/United States
+ { 314, 9, 145,{ 28631,48 },{ 28679,81 },{ 28760,24 },{ 28631,48 },{ 28679,81 },{ 28760,24 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco
{ 315, 7, 43,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mapuche/Latin/Chile
- { 316, 1, 103,{ 38210,105 },{ 38210,105 },{ 38315,24 },{ 38210,105 },{ 38210,105 },{ 38315,24 }}, // Central Kurdish/Arabic/Iraq
- { 316, 1, 102,{ 38210,105 },{ 38210,105 },{ 38315,24 },{ 38210,105 },{ 38210,105 },{ 38315,24 }}, // Central Kurdish/Arabic/Iran
- { 317, 7, 82,{ 38339,48 },{ 38387,85 },{ 9771,24 },{ 38472,60 },{ 38532,93 },{ 9771,24 }}, // Lower Sorbian/Latin/Germany
- { 318, 7, 82,{ 38625,48 },{ 38673,86 },{ 9771,24 },{ 38759,60 },{ 38819,93 },{ 9771,24 }}, // Upper Sorbian/Latin/Germany
+ { 316, 1, 103,{ 38450,105 },{ 38450,105 },{ 38555,24 },{ 38450,105 },{ 38450,105 },{ 38555,24 }}, // Central Kurdish/Arabic/Iraq
+ { 316, 1, 102,{ 38450,105 },{ 38450,105 },{ 38555,24 },{ 38450,105 },{ 38450,105 },{ 38555,24 }}, // Central Kurdish/Arabic/Iran
+ { 317, 7, 82,{ 38579,48 },{ 38627,85 },{ 9887,24 },{ 38712,60 },{ 38772,93 },{ 9887,24 }}, // Lower Sorbian/Latin/Germany
+ { 318, 7, 82,{ 38865,48 },{ 38913,86 },{ 9887,24 },{ 38999,60 },{ 39059,93 },{ 9887,24 }}, // Upper Sorbian/Latin/Germany
{ 319, 7, 37,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kenyang/Latin/Cameroon
{ 320, 7, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mohawk/Latin/Canada
{ 321, 75, 91,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Nko/Nko/Guinea
- { 322, 7, 260,{ 38912,48 },{ 38960,91 },{ 39051,24 },{ 38912,48 },{ 38960,91 },{ 39051,24 }}, // Prussian/Latin/World
+ { 322, 7, 260,{ 39152,48 },{ 39200,91 },{ 39291,24 },{ 39152,48 },{ 39200,91 },{ 39291,24 }}, // Prussian/Latin/World
{ 323, 7, 90,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kiche/Latin/Guatemala
{ 324, 7, 205,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Sami/Latin/Sweden
{ 325, 7, 205,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Lule Sami/Latin/Sweden
- { 326, 7, 73,{ 39075,77 },{ 39152,140 },{ 39292,25 },{ 39075,77 },{ 39152,140 },{ 39292,25 }}, // Inari Sami/Latin/Finland
+ { 326, 7, 73,{ 39315,77 },{ 39392,140 },{ 39532,25 },{ 39315,77 },{ 39392,140 },{ 39532,25 }}, // Inari Sami/Latin/Finland
{ 327, 7, 73,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Skolt Sami/Latin/Finland
{ 328, 7, 13,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Warlpiri/Latin/Australia
- { 346, 1, 102,{ 14963,70 },{ 14963,70 },{ 418,27 },{ 14963,70 },{ 14963,70 },{ 418,27 }}, // Mazanderani/Arabic/Iran
- { 349, 1, 102,{ 39317,77 },{ 39317,77 },{ 418,27 },{ 39317,77 },{ 39317,77 },{ 418,27 }}, // Northern Luri/Arabic/Iran
- { 349, 1, 103,{ 39317,77 },{ 39317,77 },{ 418,27 },{ 39317,77 },{ 39317,77 },{ 418,27 }}, // Northern Luri/Arabic/Iraq
+ { 346, 1, 102,{ 15079,70 },{ 15079,70 },{ 418,27 },{ 15079,70 },{ 15079,70 },{ 418,27 }}, // Mazanderani/Arabic/Iran
+ { 349, 1, 102,{ 39557,77 },{ 39557,77 },{ 418,27 },{ 39557,77 },{ 39557,77 },{ 418,27 }}, // Northern Luri/Arabic/Iran
+ { 349, 1, 103,{ 39557,77 },{ 39557,77 },{ 418,27 },{ 39557,77 },{ 39557,77 },{ 418,27 }}, // Northern Luri/Arabic/Iraq
{ 357, 6, 97,{ 4452,39 },{ 4452,39 },{ 418,27 },{ 4452,39 },{ 4452,39 },{ 418,27 }}, // Cantonese/Traditional Han/Hong Kong
{ 357, 5, 44,{ 4452,39 },{ 4491,38 },{ 418,27 },{ 4452,39 },{ 4491,38 },{ 418,27 }}, // Cantonese/Simplified Han/China
+ { 358, 138, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Osage/Osage/United States
{ 360, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Ido/Latin/World
{ 361, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Lojban/Latin/World
{ 362, 7, 106,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sicilian/Latin/Italy
{ 363, 1, 102,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Kurdish/Arabic/Iran
{ 364, 1, 163,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Western Balochi/Arabic/Pakistan
- { 365, 7, 170,{ 39394,46 },{ 39440,88 },{ 39528,24 },{ 39394,46 },{ 39440,88 },{ 39528,24 }}, // Cebuano/Latin/Philippines
+ { 365, 7, 170,{ 39634,46 },{ 26264,88 },{ 39680,24 },{ 39634,46 },{ 26264,88 },{ 39680,24 }}, // Cebuano/Latin/Philippines
{ 366, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Erzya/Cyrillic/Russia
+ { 367, 7, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Chickasaw/Latin/United States
+ { 368, 7, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Muscogee/Latin/United States
+ { 369, 7, 172,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Silesian/Latin/Poland
{ 0, 0, 0,{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0}}, // trailing zeros
};
@@ -758,11 +765,11 @@ static const ushort months_data[] = {
0x3b, 0x9ab, 0x3b, 0x9ae, 0x3b, 0x98f, 0x3b, 0x9ae, 0x3b, 0x99c, 0x3b, 0x99c, 0x3b, 0x986, 0x3b, 0x99b, 0x3b, 0x985, 0x3b, 0x9a8,
0x3b, 0x9a1, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d,
0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f,
-0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65,
-0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b,
+0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65,
+0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b,
0x130, 0x79, 0x75, 0x6e, 0x3b, 0x130, 0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e,
0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72,
-0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61,
+0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61,
0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75,
0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x79, 0x61,
0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65,
@@ -1078,795 +1085,807 @@ static const ushort months_data[] = {
0x3af, 0x3bf, 0x3c5, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c5, 0x3b3, 0x3bf, 0x3cd, 0x3c3, 0x3c4, 0x3bf,
0x3c5, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3c4, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3c9, 0x3b2, 0x3c1,
0x3af, 0x3bf, 0x3c5, 0x3b, 0x39d, 0x3bf, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b5, 0x3bc, 0x3b2,
-0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72,
-0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70,
-0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69,
-0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x72,
-0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x6a, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61,
-0x75, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b,
-0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x69, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b, 0x64,
-0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x69, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd,
-0xab0, 0xac1, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c,
-0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7,
-0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0x3b, 0xaa8, 0xab5, 0xac7, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd,
-0xaaf, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd,
-0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe,
-0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa91, 0xa95,
-0xacd, 0xa9f, 0xacb, 0xaac, 0xab0, 0x3b, 0xaa8, 0xab5, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0xaae, 0xacd,
-0xaac, 0xab0, 0x3b, 0xa9c, 0xabe, 0x3b, 0xaab, 0xac7, 0x3b, 0xaae, 0xabe, 0x3b, 0xa8f, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0x3b,
-0xa9c, 0xac1, 0x3b, 0xa91, 0x3b, 0xab8, 0x3b, 0xa91, 0x3b, 0xaa8, 0x3b, 0xaa1, 0xabf, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x61,
-0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x66, 0x69, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75,
-0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x75, 0x77, 0x3b, 0x44, 0x69,
-0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x46, 0x61, 0x62, 0x75, 0x72, 0x61, 0x69, 0x72, 0x75, 0x3b,
-0x4d, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x41, 0x66, 0x69, 0x72, 0x69, 0x6c, 0x75, 0x3b, 0x4d, 0x61, 0x79, 0x75, 0x3b, 0x59,
-0x75, 0x6e, 0x69, 0x3b, 0x59, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x74, 0x75,
-0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x75, 0x77, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x44,
-0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59,
-0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5f3, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5f3,
-0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5f3, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5f3, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5f3, 0x3b, 0x5e0,
-0x5d5, 0x5d1, 0x5f3, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5f3, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5d5, 0x5d0,
-0x5e8, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9,
-0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5de, 0x5d1, 0x5e8, 0x3b,
-0x5d0, 0x5d5, 0x5e7, 0x5d8, 0x5d5, 0x5d1, 0x5e8, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5d1, 0x5e8,
-0x3b, 0x91c, 0x928, 0x970, 0x3b, 0x92b, 0x93c, 0x930, 0x970, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930,
-0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x970, 0x3b, 0x905, 0x917, 0x970, 0x3b, 0x938,
-0x93f, 0x924, 0x970, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x970, 0x3b, 0x928, 0x935, 0x970, 0x3b, 0x926, 0x93f, 0x938, 0x970, 0x3b,
-0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x93c, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905,
-0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905,
-0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x3b,
-0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, 0x93e,
-0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b,
-0x926, 0x93f, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x2e, 0x3b,
-0xe1, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x6a, 0x2e, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b,
-0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76,
-0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1,
-0x72, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x69, 0x75, 0x73, 0x3b, 0xe1, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0xe1,
-0x6a, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6e, 0x69, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6c, 0x69, 0x75, 0x73, 0x3b, 0x61, 0x75,
-0x67, 0x75, 0x73, 0x7a, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f,
-0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65,
-0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0xc1, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41,
-0x3b, 0x53, 0x7a, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b,
-0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a,
-0xfa, 0x6c, 0x2e, 0x3b, 0xe1, 0x67, 0xfa, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e,
-0xf3, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0xfa, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72,
-0xfa, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a,
-0xfa, 0x6e, 0xed, 0x3b, 0x6a, 0xfa, 0x6c, 0xed, 0x3b, 0xe1, 0x67, 0xfa, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65,
-0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0xf3, 0x76, 0x65, 0x6d, 0x62, 0x65,
-0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d,
-0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0xc1, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46,
-0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a,
-0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44,
-0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b,
-0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69,
-0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d,
-0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72,
-0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61,
-0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75,
-0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61,
-0x6e, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72,
-0x74, 0x69, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f,
-0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65,
-0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72,
-0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d,
-0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x45, 0x61, 0x6e, 0x3b, 0x46,
-0x65, 0x61, 0x62, 0x68, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x3b,
-0x4d, 0x65, 0x69, 0x74, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x3b, 0x4d, 0x46, 0xf3, 0x6d, 0x68,
-0x3b, 0x44, 0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, 0x3b, 0x45, 0x61, 0x6e,
-0xe1, 0x69, 0x72, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x72, 0x61, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69,
-0x62, 0x72, 0x65, 0xe1, 0x6e, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4d, 0x65, 0x69, 0x74,
-0x68, 0x65, 0x61, 0x6d, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x61, 0x73, 0x61, 0x3b, 0x4d, 0x65,
-0xe1, 0x6e, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x44, 0x65, 0x69, 0x72, 0x65, 0x61, 0x64, 0x68, 0x20,
-0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c,
-0x61, 0x69, 0x67, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4c, 0x3b,
-0x4d, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x67, 0x65, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b,
-0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x67, 0x3b, 0x67, 0x69, 0x75, 0x3b, 0x6c, 0x75, 0x67, 0x3b, 0x61, 0x67, 0x6f, 0x3b,
-0x73, 0x65, 0x74, 0x3b, 0x6f, 0x74, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, 0x67, 0x65, 0x6e, 0x6e,
-0x61, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61,
-0x70, 0x72, 0x69, 0x6c, 0x65, 0x3b, 0x6d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x67, 0x69, 0x75, 0x67, 0x6e, 0x6f, 0x3b,
-0x6c, 0x75, 0x67, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d,
-0x62, 0x72, 0x65, 0x3b, 0x6f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65,
-0x3b, 0x64, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b,
-0x47, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65,
-0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75,
-0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65,
-0x73, 0x3b, 0xc9c, 0xca8, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa,
-0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b,
-0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1,
-0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b,
-0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0xcb2, 0xccd, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2,
-0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0xcb8, 0xccd, 0xc9f, 0xccd, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f,
-0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0xcac,
-0xcb0, 0xccd, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc9c, 0x3b, 0xcab, 0xcc6, 0x3b, 0xcae, 0xcbe, 0x3b,
-0xc8f, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0x3b, 0xc9c, 0xcc1, 0x3b, 0xc86, 0x3b, 0xcb8, 0xcc6, 0x3b, 0xc85, 0x3b, 0xca8, 0x3b,
-0xca1, 0xcbf, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcbe,
-0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c,
-0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb,
-0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0x62c, 0x646, 0x624, 0x631, 0x6cc, 0x3b, 0x641, 0x631,
-0x624, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x655, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x654, 0x3b,
-0x62c, 0x648, 0x657, 0x646, 0x3b, 0x62c, 0x648, 0x657, 0x644, 0x627, 0x6cc, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a,
-0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x657, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633,
-0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b,
-0x633, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x49b, 0x430, 0x4a3, 0x2e, 0x3b, 0x430, 0x49b, 0x43f, 0x2e, 0x3b, 0x43d, 0x430,
-0x443, 0x2e, 0x3b, 0x441, 0x4d9, 0x443, 0x2e, 0x3b, 0x43c, 0x430, 0x43c, 0x2e, 0x3b, 0x43c, 0x430, 0x443, 0x2e, 0x3b, 0x448, 0x456,
-0x43b, 0x2e, 0x3b, 0x442, 0x430, 0x43c, 0x2e, 0x3b, 0x49b, 0x44b, 0x440, 0x2e, 0x3b, 0x49b, 0x430, 0x437, 0x2e, 0x3b, 0x49b, 0x430,
-0x440, 0x2e, 0x3b, 0x436, 0x435, 0x43b, 0x2e, 0x3b, 0x49a, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x410, 0x49b, 0x43f, 0x430, 0x43d,
-0x3b, 0x41d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x421, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x41c, 0x430, 0x43c, 0x44b, 0x440, 0x3b,
-0x41c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x428, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x422, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49a,
-0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49a, 0x430, 0x440, 0x430, 0x448, 0x430,
-0x3b, 0x416, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x49a, 0x3b, 0x410, 0x3b, 0x41d, 0x3b, 0x421, 0x3b, 0x41c,
-0x3b, 0x41c, 0x3b, 0x428, 0x3b, 0x422, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x416, 0x3b, 0x49b, 0x430, 0x4a3, 0x442, 0x430,
-0x440, 0x3b, 0x430, 0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x43d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x441, 0x4d9, 0x443, 0x456, 0x440,
-0x3b, 0x43c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, 0x43c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x448, 0x456, 0x43b, 0x434, 0x435, 0x3b,
-0x442, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49b, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49b, 0x430, 0x437, 0x430, 0x43d,
-0x3b, 0x49b, 0x430, 0x440, 0x430, 0x448, 0x430, 0x3b, 0x436, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x6d, 0x75,
-0x74, 0x2e, 0x3b, 0x67, 0x61, 0x73, 0x2e, 0x3b, 0x77, 0x65, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x2e, 0x3b, 0x67, 0x69,
-0x63, 0x2e, 0x3b, 0x6b, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x79, 0x61, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x6e, 0x7a,
-0x65, 0x2e, 0x3b, 0x75, 0x6b, 0x77, 0x2e, 0x3b, 0x75, 0x67, 0x75, 0x2e, 0x3b, 0x75, 0x6b, 0x75, 0x2e, 0x3b, 0x4d, 0x75,
-0x74, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0x47, 0x61, 0x73, 0x68, 0x79, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x3b, 0x57,
-0x65, 0x72, 0x75, 0x72, 0x77, 0x65, 0x3b, 0x4d, 0x61, 0x74, 0x61, 0x3b, 0x47, 0x69, 0x63, 0x75, 0x72, 0x61, 0x6e, 0x73,
-0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x61,
-0x6e, 0x61, 0x6d, 0x61, 0x3b, 0x4e, 0x7a, 0x65, 0x6c, 0x69, 0x3b, 0x55, 0x6b, 0x77, 0x61, 0x6b, 0x69, 0x72, 0x61, 0x3b,
-0x55, 0x67, 0x75, 0x73, 0x68, 0x79, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x55, 0x6b, 0x75, 0x62, 0x6f, 0x7a, 0x61, 0x3b, 0x42f,
-0x43d, 0x432, 0x3b, 0x424, 0x435, 0x432, 0x3b, 0x41c, 0x430, 0x440, 0x3b, 0x410, 0x43f, 0x440, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418,
-0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x3b, 0x421, 0x435, 0x43d, 0x3b, 0x41e, 0x43a, 0x442, 0x3b, 0x41d,
-0x43e, 0x44f, 0x3b, 0x414, 0x435, 0x43a, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b,
-0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e,
-0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f,
-0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x414,
-0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x42f, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x3b, 0x41c, 0x3b, 0x418, 0x3b, 0x418,
-0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x41e, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e,
-0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b,
-0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b,
-0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x444, 0x435, 0x432,
-0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439,
-0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435,
-0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440,
-0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x31, 0xc6d4, 0x3b, 0x32, 0xc6d4, 0x3b, 0x33, 0xc6d4, 0x3b, 0x34,
-0xc6d4, 0x3b, 0x35, 0xc6d4, 0x3b, 0x36, 0xc6d4, 0x3b, 0x37, 0xc6d4, 0x3b, 0x38, 0xc6d4, 0x3b, 0x39, 0xc6d4, 0x3b, 0x31, 0x30, 0xc6d4,
-0x3b, 0x31, 0x31, 0xc6d4, 0x3b, 0x31, 0x32, 0xc6d4, 0x3b, 0x72, 0xea, 0x62, 0x3b, 0x72, 0x65, 0x15f, 0x3b, 0x61, 0x64, 0x61,
-0x3b, 0x61, 0x76, 0x72, 0x3b, 0x67, 0x75, 0x6c, 0x3b, 0x70, 0xfb, 0x15f, 0x3b, 0x74, 0xee, 0x72, 0x3b, 0x67, 0x65, 0x6c,
-0x3b, 0x72, 0x65, 0x7a, 0x3b, 0x6b, 0x65, 0x77, 0x3b, 0x73, 0x65, 0x72, 0x3b, 0x62, 0x65, 0x72, 0x3b, 0x72, 0xea, 0x62,
-0x65, 0x6e, 0x64, 0x61, 0x6e, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x61, 0x64, 0x61, 0x72, 0x3b, 0x61, 0x76,
-0x72, 0xea, 0x6c, 0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0x3b, 0x74, 0xee, 0x72,
-0x6d, 0x65, 0x68, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, 0x3b, 0x6b,
-0x65, 0x77, 0xe7, 0xea, 0x72, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0x3b, 0x62, 0x65, 0x72, 0x66, 0x61,
-0x6e, 0x62, 0x61, 0x72, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x47,
-0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0xea, 0x3b, 0x72,
-0x65, 0x15f, 0x65, 0x6d, 0x69, 0x79, 0xea, 0x3b, 0x61, 0x64, 0x61, 0x72, 0xea, 0x3b, 0x61, 0x76, 0x72, 0xea, 0x6c, 0xea,
-0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0xea, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0xea, 0x3b, 0x74, 0xee, 0x72, 0x6d,
-0x65, 0x68, 0xea, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0xea, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, 0xea,
-0x3b, 0x6b, 0x65, 0x77, 0xe7, 0xea, 0x72, 0xea, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0xea, 0x3b, 0x62,
-0x65, 0x72, 0x66, 0x61, 0x6e, 0x62, 0x61, 0x72, 0xea, 0x3b, 0x4d, 0x75, 0x74, 0x2e, 0x3b, 0x47, 0x61, 0x73, 0x2e, 0x3b,
-0x57, 0x65, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x74, 0x2e, 0x3b, 0x47, 0x69, 0x63, 0x2e, 0x3b, 0x4b, 0x61, 0x6d, 0x2e, 0x3b,
-0x4e, 0x79, 0x61, 0x2e, 0x3b, 0x4b, 0x61, 0x6e, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x2e, 0x3b, 0x55, 0x6b, 0x77, 0x2e, 0x3b,
-0x55, 0x67, 0x75, 0x2e, 0x3b, 0x55, 0x6b, 0x75, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x52, 0x75, 0x68, 0x75,
-0x68, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x74, 0x77, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x3b, 0x4e, 0x64, 0x61, 0x6d, 0x75,
-0x6b, 0x69, 0x7a, 0x61, 0x3b, 0x52, 0x75, 0x73, 0x61, 0x6d, 0x61, 0x3b, 0x52, 0x75, 0x68, 0x65, 0x73, 0x68, 0x69, 0x3b,
-0x4d, 0x75, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x61, 0x72, 0x6f, 0x3b,
-0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x47, 0x69, 0x74, 0x75, 0x67, 0x75, 0x74, 0x75, 0x3b, 0x4d, 0x75,
-0x6e, 0x79, 0x6f, 0x6e, 0x79, 0x6f, 0x3b, 0x4b, 0x69, 0x67, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0xea1, 0x2e, 0xe81, 0x2e,
-0x3b, 0xe81, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0x2e, 0xe99, 0x2e, 0x3b, 0xea1, 0x2e, 0xeaa, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe9e, 0x2e,
-0x3b, 0xea1, 0xeb4, 0x2e, 0xe96, 0x2e, 0x3b, 0xe81, 0x2e, 0xea5, 0x2e, 0x3b, 0xeaa, 0x2e, 0xeab, 0x2e, 0x3b, 0xe81, 0x2e, 0xe8d,
-0x2e, 0x3b, 0xe95, 0x2e, 0xea5, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe88, 0x2e, 0x3b, 0xe97, 0x2e, 0xea7, 0x2e, 0x3b, 0xea1, 0xeb1, 0xe87,
-0xe81, 0xead, 0xe99, 0x3b, 0xe81, 0xeb8, 0xea1, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb5, 0xe99, 0xeb2, 0x3b, 0xec0, 0xea1, 0xeaa, 0xeb2, 0x3b,
-0xe9e, 0xeb6, 0xe94, 0xeaa, 0xeb0, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb4, 0xe96, 0xeb8, 0xe99, 0xeb2, 0x3b, 0xe81, 0xecd, 0xea5, 0xeb0, 0xe81,
-0xebb, 0xe94, 0x3b, 0xeaa, 0xeb4, 0xe87, 0xeab, 0xeb2, 0x3b, 0xe81, 0xeb1, 0xe99, 0xe8d, 0xeb2, 0x3b, 0xe95, 0xeb8, 0xea5, 0xeb2, 0x3b,
-0xe9e, 0xeb0, 0xe88, 0xeb4, 0xe81, 0x3b, 0xe97, 0xeb1, 0xe99, 0xea7, 0xeb2, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0x65,
-0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73,
-0x3b, 0x6a, 0x16b, 0x6e, 0x2e, 0x3b, 0x6a, 0x16b, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74,
+0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70,
+0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65,
+0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61,
+0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x69, 0x3b,
+0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6a, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b,
+0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x67, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d,
+0x62, 0x61, 0x72, 0x69, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62,
+0x61, 0x72, 0x69, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x61,
+0x72, 0x69, 0x70, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x69,
+0x70, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x70, 0x3b, 0x6d, 0x61, 0x61, 0x6a, 0x69, 0x70, 0x3b, 0x6a, 0x75,
+0x75, 0x6e, 0x69, 0x70, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x70, 0x3b, 0x61, 0x67, 0x67, 0x75, 0x73, 0x74, 0x69, 0x70,
+0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72,
+0x69, 0x70, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62,
+0x61, 0x72, 0x69, 0x70, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0x3b, 0xaae,
+0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c,
+0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0x3b, 0xa91, 0xa95, 0xacd,
+0xa9f, 0xacb, 0x3b, 0xaa8, 0xab5, 0xac7, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0xa86, 0xab0,
+0xac0, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa,
+0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97,
+0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0xaac,
+0xab0, 0x3b, 0xaa8, 0xab5, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa9c,
+0xabe, 0x3b, 0xaab, 0xac7, 0x3b, 0xaae, 0xabe, 0x3b, 0xa8f, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0x3b, 0xa9c, 0xac1, 0x3b, 0xa91,
+0x3b, 0xab8, 0x3b, 0xa91, 0x3b, 0xaa8, 0x3b, 0xaa1, 0xabf, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x61, 0x62, 0x3b, 0x4d, 0x61,
+0x72, 0x3b, 0x41, 0x66, 0x69, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x41, 0x67,
+0x75, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x75, 0x77, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61,
+0x6e, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x46, 0x61, 0x62, 0x75, 0x72, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x4d, 0x61, 0x72, 0x69,
+0x73, 0x3b, 0x41, 0x66, 0x69, 0x72, 0x69, 0x6c, 0x75, 0x3b, 0x4d, 0x61, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x69, 0x3b,
+0x59, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x3b,
+0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x75, 0x77, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d,
+0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x41, 0x3b, 0x53,
+0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5f3, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5e8, 0x5e5,
+0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b,
+0x5d0, 0x5d5, 0x5d2, 0x5f3, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5f3, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5f3, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5f3, 0x3b,
+0x5d3, 0x5e6, 0x5de, 0x5f3, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5de, 0x5e8,
+0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc,
+0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5d8,
+0x5d5, 0x5d1, 0x5e8, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x91c, 0x928, 0x970,
+0x3b, 0x92b, 0x93c, 0x930, 0x970, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e,
+0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x970, 0x3b, 0x905, 0x917, 0x970, 0x3b, 0x938, 0x93f, 0x924, 0x970, 0x3b,
+0x905, 0x915, 0x94d, 0x924, 0x942, 0x970, 0x3b, 0x928, 0x935, 0x970, 0x3b, 0x926, 0x93f, 0x938, 0x970, 0x3b, 0x91c, 0x928, 0x935, 0x930,
+0x940, 0x3b, 0x92b, 0x93c, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948,
+0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x924,
+0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, 0x92c,
+0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, 0x93e, 0x3b, 0x905, 0x3b, 0x92e,
+0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x6a,
+0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x2e, 0x3b, 0xe1, 0x70, 0x72, 0x2e,
+0x3b, 0x6d, 0xe1, 0x6a, 0x2e, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e,
+0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65,
+0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0xe1,
+0x72, 0x63, 0x69, 0x75, 0x73, 0x3b, 0xe1, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0xe1, 0x6a, 0x75, 0x73, 0x3b,
+0x6a, 0xfa, 0x6e, 0x69, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6c, 0x69, 0x75, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x7a,
+0x74, 0x75, 0x73, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62,
+0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72,
+0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0xc1, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x7a, 0x3b,
+0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e,
+0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b,
+0xe1, 0x67, 0xfa, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0xf3, 0x76, 0x2e, 0x3b,
+0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0xfa, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0xfa, 0x61, 0x72, 0x3b,
+0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0xed, 0x3b,
+0x6a, 0xfa, 0x6c, 0xed, 0x3b, 0xe1, 0x67, 0xfa, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72,
+0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0xf3, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65,
+0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a,
+0x3b, 0xc1, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
+0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41,
+0x67, 0x75, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a,
+0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x72, 0x65,
+0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c,
+0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b,
+0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73,
+0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70,
+0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65,
+0x70, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72,
+0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x6f, 0x3b,
+0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c,
+0x69, 0x6f, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65,
+0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65,
+0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a,
+0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x45, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68,
+0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x74,
+0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x3b, 0x4d, 0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x44, 0x46, 0xf3,
+0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, 0x3b, 0x45, 0x61, 0x6e, 0xe1, 0x69, 0x72, 0x3b,
+0x46, 0x65, 0x61, 0x62, 0x68, 0x72, 0x61, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x72, 0x65, 0xe1,
+0x6e, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4d, 0x65, 0x69, 0x74, 0x68, 0x65, 0x61, 0x6d,
+0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x61, 0x73, 0x61, 0x3b, 0x4d, 0x65, 0xe1, 0x6e, 0x20, 0x46,
+0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x44, 0x65, 0x69, 0x72, 0x65, 0x61, 0x64, 0x68, 0x20, 0x46, 0xf3, 0x6d, 0x68,
+0x61, 0x69, 0x72, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, 0x61, 0x69, 0x67, 0x3b,
+0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x44, 0x3b,
+0x53, 0x3b, 0x4e, 0x3b, 0x67, 0x65, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b,
+0x6d, 0x61, 0x67, 0x3b, 0x67, 0x69, 0x75, 0x3b, 0x6c, 0x75, 0x67, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b,
+0x6f, 0x74, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, 0x67, 0x65, 0x6e, 0x6e, 0x61, 0x69, 0x6f, 0x3b,
+0x66, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c,
+0x65, 0x3b, 0x6d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x67, 0x69, 0x75, 0x67, 0x6e, 0x6f, 0x3b, 0x6c, 0x75, 0x67, 0x6c,
+0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b,
+0x6f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63,
+0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x4c, 0x3b,
+0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61,
+0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67,
+0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0xc9c, 0xca8,
+0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b,
+0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd,
+0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82,
+0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd,
+0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0xcb2, 0xccd, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c,
+0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0xcb8, 0xccd, 0xc9f, 0xccd, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0xcac, 0xcb0,
+0xccd, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca1,
+0xcbf, 0xcb8, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc9c, 0x3b, 0xcab, 0xcc6, 0x3b, 0xcae, 0xcbe, 0x3b, 0xc8f, 0x3b, 0xcae, 0xcc7,
+0x3b, 0xc9c, 0xcc2, 0x3b, 0xc9c, 0xcc1, 0x3b, 0xc86, 0x3b, 0xcb8, 0xcc6, 0x3b, 0xc85, 0x3b, 0xca8, 0x3b, 0xca1, 0xcbf, 0x3b, 0xc9c,
+0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd,
+0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b,
+0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6,
+0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0x62c, 0x646, 0x624, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x624, 0x631, 0x6cc, 0x3b,
+0x645, 0x627, 0x631, 0x655, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x654, 0x3b, 0x62c, 0x648, 0x657, 0x646,
+0x3b, 0x62c, 0x648, 0x657, 0x644, 0x627, 0x6cc, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b,
+0x627, 0x6a9, 0x62a, 0x648, 0x657, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b,
+0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x633, 0x3b,
+0x627, 0x3b, 0x646, 0x3b, 0x49b, 0x430, 0x4a3, 0x2e, 0x3b, 0x430, 0x49b, 0x43f, 0x2e, 0x3b, 0x43d, 0x430, 0x443, 0x2e, 0x3b, 0x441,
+0x4d9, 0x443, 0x2e, 0x3b, 0x43c, 0x430, 0x43c, 0x2e, 0x3b, 0x43c, 0x430, 0x443, 0x2e, 0x3b, 0x448, 0x456, 0x43b, 0x2e, 0x3b, 0x442,
+0x430, 0x43c, 0x2e, 0x3b, 0x49b, 0x44b, 0x440, 0x2e, 0x3b, 0x49b, 0x430, 0x437, 0x2e, 0x3b, 0x49b, 0x430, 0x440, 0x2e, 0x3b, 0x436,
+0x435, 0x43b, 0x2e, 0x3b, 0x49a, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x410, 0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x41d, 0x430, 0x443,
+0x440, 0x44b, 0x437, 0x3b, 0x421, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x41c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, 0x41c, 0x430, 0x443, 0x441,
+0x44b, 0x43c, 0x3b, 0x428, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x422, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49a, 0x44b, 0x440, 0x43a, 0x4af,
+0x439, 0x435, 0x43a, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49a, 0x430, 0x440, 0x430, 0x448, 0x430, 0x3b, 0x416, 0x435, 0x43b,
+0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x49a, 0x3b, 0x410, 0x3b, 0x41d, 0x3b, 0x421, 0x3b, 0x41c, 0x3b, 0x41c, 0x3b, 0x428,
+0x3b, 0x422, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x416, 0x3b, 0x49b, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x430, 0x49b,
+0x43f, 0x430, 0x43d, 0x3b, 0x43d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x441, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x43c, 0x430, 0x43c,
+0x44b, 0x440, 0x3b, 0x43c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x448, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x442, 0x430, 0x43c, 0x44b,
+0x437, 0x3b, 0x49b, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49b, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49b, 0x430, 0x440,
+0x430, 0x448, 0x430, 0x3b, 0x436, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x6d, 0x75, 0x74, 0x2e, 0x3b, 0x67,
+0x61, 0x73, 0x2e, 0x3b, 0x77, 0x65, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x2e, 0x3b, 0x67, 0x69, 0x63, 0x2e, 0x3b, 0x6b,
+0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x79, 0x61, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x6e, 0x7a, 0x65, 0x2e, 0x3b, 0x75,
+0x6b, 0x77, 0x2e, 0x3b, 0x75, 0x67, 0x75, 0x2e, 0x3b, 0x75, 0x6b, 0x75, 0x2e, 0x3b, 0x4d, 0x75, 0x74, 0x61, 0x72, 0x61,
+0x6d, 0x61, 0x3b, 0x47, 0x61, 0x73, 0x68, 0x79, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x3b, 0x57, 0x65, 0x72, 0x75, 0x72,
+0x77, 0x65, 0x3b, 0x4d, 0x61, 0x74, 0x61, 0x3b, 0x47, 0x69, 0x63, 0x75, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x3b, 0x4b, 0x61,
+0x6d, 0x65, 0x6e, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x61, 0x6e, 0x61, 0x6d, 0x61,
+0x3b, 0x4e, 0x7a, 0x65, 0x6c, 0x69, 0x3b, 0x55, 0x6b, 0x77, 0x61, 0x6b, 0x69, 0x72, 0x61, 0x3b, 0x55, 0x67, 0x75, 0x73,
+0x68, 0x79, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x55, 0x6b, 0x75, 0x62, 0x6f, 0x7a, 0x61, 0x3b, 0x42f, 0x43d, 0x432, 0x3b, 0x424,
+0x435, 0x432, 0x3b, 0x41c, 0x430, 0x440, 0x3b, 0x410, 0x43f, 0x440, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b, 0x418,
+0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x3b, 0x421, 0x435, 0x43d, 0x3b, 0x41e, 0x43a, 0x442, 0x3b, 0x41d, 0x43e, 0x44f, 0x3b, 0x414,
+0x435, 0x43a, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x41c, 0x430,
+0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418,
+0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b,
+0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431,
+0x440, 0x44c, 0x3b, 0x42f, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x3b, 0x41c, 0x3b, 0x418, 0x3b, 0x418, 0x3b, 0x410, 0x3b, 0x421,
+0x3b, 0x41e, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440,
+0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e,
+0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x2e,
+0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c,
+0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d,
+0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431,
+0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435,
+0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x31, 0xc6d4, 0x3b, 0x32, 0xc6d4, 0x3b, 0x33, 0xc6d4, 0x3b, 0x34, 0xc6d4, 0x3b, 0x35, 0xc6d4,
+0x3b, 0x36, 0xc6d4, 0x3b, 0x37, 0xc6d4, 0x3b, 0x38, 0xc6d4, 0x3b, 0x39, 0xc6d4, 0x3b, 0x31, 0x30, 0xc6d4, 0x3b, 0x31, 0x31, 0xc6d4,
+0x3b, 0x31, 0x32, 0xc6d4, 0x3b, 0x72, 0xea, 0x62, 0x3b, 0x72, 0x65, 0x15f, 0x3b, 0x61, 0x64, 0x61, 0x3b, 0x61, 0x76, 0x72,
+0x3b, 0x67, 0x75, 0x6c, 0x3b, 0x70, 0xfb, 0x15f, 0x3b, 0x74, 0xee, 0x72, 0x3b, 0x67, 0x65, 0x6c, 0x3b, 0x72, 0x65, 0x7a,
+0x3b, 0x6b, 0x65, 0x77, 0x3b, 0x73, 0x65, 0x72, 0x3b, 0x62, 0x65, 0x72, 0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61,
+0x6e, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x61, 0x64, 0x61, 0x72, 0x3b, 0x61, 0x76, 0x72, 0xea, 0x6c, 0x3b,
+0x67, 0x75, 0x6c, 0x61, 0x6e, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0x3b, 0x74, 0xee, 0x72, 0x6d, 0x65, 0x68, 0x3b,
+0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, 0x3b, 0x6b, 0x65, 0x77, 0xe7, 0xea,
+0x72, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0x3b, 0x62, 0x65, 0x72, 0x66, 0x61, 0x6e, 0x62, 0x61, 0x72,
+0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x47, 0x3b, 0x52, 0x3b, 0x4b,
+0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0xea, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d,
+0x69, 0x79, 0xea, 0x3b, 0x61, 0x64, 0x61, 0x72, 0xea, 0x3b, 0x61, 0x76, 0x72, 0xea, 0x6c, 0xea, 0x3b, 0x67, 0x75, 0x6c,
+0x61, 0x6e, 0xea, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0xea, 0x3b, 0x74, 0xee, 0x72, 0x6d, 0x65, 0x68, 0xea, 0x3b,
+0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0xea, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, 0xea, 0x3b, 0x6b, 0x65, 0x77,
+0xe7, 0xea, 0x72, 0xea, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0xea, 0x3b, 0x62, 0x65, 0x72, 0x66, 0x61,
+0x6e, 0x62, 0x61, 0x72, 0xea, 0x3b, 0x4d, 0x75, 0x74, 0x2e, 0x3b, 0x47, 0x61, 0x73, 0x2e, 0x3b, 0x57, 0x65, 0x72, 0x2e,
+0x3b, 0x4d, 0x61, 0x74, 0x2e, 0x3b, 0x47, 0x69, 0x63, 0x2e, 0x3b, 0x4b, 0x61, 0x6d, 0x2e, 0x3b, 0x4e, 0x79, 0x61, 0x2e,
+0x3b, 0x4b, 0x61, 0x6e, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x2e, 0x3b, 0x55, 0x6b, 0x77, 0x2e, 0x3b, 0x55, 0x67, 0x75, 0x2e,
+0x3b, 0x55, 0x6b, 0x75, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x52, 0x75, 0x68, 0x75, 0x68, 0x75, 0x6d, 0x61,
+0x3b, 0x4e, 0x74, 0x77, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x3b, 0x4e, 0x64, 0x61, 0x6d, 0x75, 0x6b, 0x69, 0x7a, 0x61,
+0x3b, 0x52, 0x75, 0x73, 0x61, 0x6d, 0x61, 0x3b, 0x52, 0x75, 0x68, 0x65, 0x73, 0x68, 0x69, 0x3b, 0x4d, 0x75, 0x6b, 0x61,
+0x6b, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6b,
+0x61, 0x6e, 0x67, 0x61, 0x3b, 0x47, 0x69, 0x74, 0x75, 0x67, 0x75, 0x74, 0x75, 0x3b, 0x4d, 0x75, 0x6e, 0x79, 0x6f, 0x6e,
+0x79, 0x6f, 0x3b, 0x4b, 0x69, 0x67, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0xea1, 0x2e, 0xe81, 0x2e, 0x3b, 0xe81, 0x2e, 0xe9e,
+0x2e, 0x3b, 0xea1, 0x2e, 0xe99, 0x2e, 0x3b, 0xea1, 0x2e, 0xeaa, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0xeb4, 0x2e,
+0xe96, 0x2e, 0x3b, 0xe81, 0x2e, 0xea5, 0x2e, 0x3b, 0xeaa, 0x2e, 0xeab, 0x2e, 0x3b, 0xe81, 0x2e, 0xe8d, 0x2e, 0x3b, 0xe95, 0x2e,
+0xea5, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe88, 0x2e, 0x3b, 0xe97, 0x2e, 0xea7, 0x2e, 0x3b, 0xea1, 0xeb1, 0xe87, 0xe81, 0xead, 0xe99, 0x3b,
+0xe81, 0xeb8, 0xea1, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb5, 0xe99, 0xeb2, 0x3b, 0xec0, 0xea1, 0xeaa, 0xeb2, 0x3b, 0xe9e, 0xeb6, 0xe94, 0xeaa,
+0xeb0, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb4, 0xe96, 0xeb8, 0xe99, 0xeb2, 0x3b, 0xe81, 0xecd, 0xea5, 0xeb0, 0xe81, 0xebb, 0xe94, 0x3b, 0xeaa,
+0xeb4, 0xe87, 0xeab, 0xeb2, 0x3b, 0xe81, 0xeb1, 0xe99, 0xe8d, 0xeb2, 0x3b, 0xe95, 0xeb8, 0xea5, 0xeb2, 0x3b, 0xe9e, 0xeb0, 0xe88, 0xeb4,
+0xe81, 0x3b, 0xe97, 0xeb1, 0xe99, 0xea7, 0xeb2, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b,
+0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e,
+0x2e, 0x3b, 0x6a, 0x16b, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b,
+0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x101, 0x72, 0x69,
+0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70,
+0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e, 0x69, 0x6a, 0x73, 0x3b, 0x6a,
+0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d,
+0x62, 0x72, 0x69, 0x73, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62,
+0x72, 0x69, 0x73, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x62,
+0x6c, 0x3b, 0x6d, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75,
+0x6c, 0x3b, 0x61, 0x67, 0x74, 0x3b, 0x73, 0x74, 0x62, 0x3b, 0x254, 0x74, 0x62, 0x3b, 0x6e, 0x76, 0x62, 0x3b, 0x64, 0x73,
+0x62, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e,
+0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79,
+0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed,
+0x6e, 0x65, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b,
+0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x6f, 0x74, 0xf3, 0x62, 0xe1, 0x3b, 0x73, 0xe1, 0x6e, 0x7a,
+0xe1, 0x20, 0x79, 0x61, 0x20, 0x6e, 0x73, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61,
+0x20, 0x6d, 0x77, 0x61, 0x6d, 0x62, 0x65, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6c, 0x69, 0x62,
+0x77, 0x61, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x3b, 0x73, 0xe1, 0x6e,
+0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x254, 0x30c, 0x6b, 0x254, 0x301,
+0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0xed,
+0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x79, 0x3b, 0x79, 0x3b, 0x61,
+0x3b, 0x73, 0x3b, 0x254, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x2e, 0x3b, 0x76, 0x61, 0x73, 0x2e, 0x3b,
+0x6b, 0x6f, 0x76, 0x2e, 0x3b, 0x62, 0x61, 0x6c, 0x2e, 0x3b, 0x67, 0x65, 0x67, 0x2e, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x2e,
+0x3b, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x2e, 0x3b, 0x73,
+0x70, 0x61, 0x6c, 0x2e, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x2e, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x2e, 0x3b, 0x73,
+0x61, 0x75, 0x73, 0x69, 0x73, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x6b, 0x6f, 0x76, 0x61, 0x73, 0x3b,
+0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, 0x3b, 0x62, 0x69, 0x72, 0x17e,
+0x65, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x61, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x6a, 0x16b, 0x74, 0x69, 0x73,
+0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x69, 0x73, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x61, 0x70,
+0x6b, 0x72, 0x69, 0x74, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x69, 0x73, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4b,
+0x3b, 0x42, 0x3b, 0x47, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73,
+0x61, 0x75, 0x73, 0x69, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6b, 0x6f, 0x76, 0x6f, 0x3b, 0x62,
+0x61, 0x6c, 0x61, 0x6e, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, 0x73, 0x3b, 0x62, 0x69, 0x72,
+0x17e, 0x65, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x6f, 0x73, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x6a, 0x16b, 0x10d,
+0x69, 0x6f, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x6f, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x61,
+0x70, 0x6b, 0x72, 0x69, 0x10d, 0x69, 0x6f, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x458, 0x430, 0x43d,
+0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x458,
+0x3b, 0x458, 0x443, 0x43d, 0x2e, 0x3b, 0x458, 0x443, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43f, 0x442,
+0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x458, 0x430,
+0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b,
+0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, 0x458, 0x443, 0x43b, 0x438, 0x3b,
+0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43e, 0x43a, 0x442,
+0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x43c, 0x432,
+0x440, 0x438, 0x3b, 0x458, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x458, 0x3b, 0x458, 0x3b, 0x430, 0x3b, 0x441,
+0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41,
+0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x3b, 0x4a, 0x6f, 0x6c, 0x3b, 0x41, 0x6f, 0x67, 0x3b, 0x53,
+0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6f, 0x61,
+0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x73, 0x61, 0x3b, 0x41,
+0x70, 0x72, 0x69, 0x6c, 0x79, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x61, 0x3b, 0x4a, 0x6f, 0x6c, 0x61, 0x79,
+0x3b, 0x41, 0x6f, 0x67, 0x6f, 0x73, 0x69, 0x74, 0x72, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x61, 0x6d, 0x62, 0x72, 0x61,
+0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x44, 0x65,
+0x73, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41,
+0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x6f, 0x3b, 0x53,
+0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61,
+0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x69,
+0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, 0x6f, 0x73,
+0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e,
+0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46,
+0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44,
+0x3b, 0xd1c, 0xd28, 0xd41, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30,
+0xd3f, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0x3b, 0xd38,
+0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0x3b, 0xd12, 0xd15, 0xd4d, 0xd1f, 0xd4b, 0x3b, 0xd28, 0xd35, 0xd02, 0x3b, 0xd21, 0xd3f,
+0xd38, 0xd02, 0x3b, 0xd1c, 0xd28, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b,
+0xd2e, 0xd3e, 0xd7c, 0xd1a, 0xd4d, 0xd1a, 0xd4d, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0xd7d, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b,
+0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0xd38, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd4d, 0x3b, 0xd38, 0xd46,
+0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd12, 0xd15, 0xd4d, 0x200c, 0xd1f, 0xd4b, 0xd2c, 0xd7c, 0x3b, 0xd28, 0xd35,
+0xd02, 0xd2c, 0xd7c, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd1c, 0x3b, 0xd2b, 0xd46, 0x3b, 0xd2e, 0xd3e, 0x3b, 0xd0f,
+0x3b, 0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, 0x3b, 0xd38, 0xd46, 0x3b, 0xd12, 0x3b, 0xd28, 0x3b,
+0xd21, 0xd3f, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d,
+0x65, 0x6a, 0x3b, 0x120, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x77, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f,
+0x74, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x10b, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61, 0x72, 0x3b, 0x46, 0x72,
+0x61, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x6a, 0x6a, 0x75,
+0x3b, 0x120, 0x75, 0x6e, 0x6a, 0x75, 0x3b, 0x4c, 0x75, 0x6c, 0x6a, 0x75, 0x3b, 0x41, 0x77, 0x77, 0x69, 0x73, 0x73, 0x75,
+0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x74, 0x75, 0x62, 0x72, 0x75, 0x3b, 0x4e,
+0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x10b, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4a, 0x6e, 0x3b,
+0x46, 0x72, 0x3b, 0x4d, 0x7a, 0x3b, 0x41, 0x70, 0x3b, 0x4d, 0x6a, 0x3b, 0x120, 0x6e, 0x3b, 0x4c, 0x6a, 0x3b, 0x41, 0x77,
+0x3b, 0x53, 0x74, 0x3b, 0x4f, 0x62, 0x3b, 0x4e, 0x76, 0x3b, 0x44, 0x10b, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41,
+0x3b, 0x4d, 0x3b, 0x120, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4b, 0x6f, 0x68,
+0x69, 0x3b, 0x48, 0x75, 0x69, 0x3b, 0x50, 0x6f, 0x75, 0x3b, 0x50, 0x61, 0x65, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x3b, 0x50,
+0x69, 0x70, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x4d, 0x61, 0x68, 0x75, 0x3b,
+0x4e, 0x75, 0x6b, 0x75, 0x3b, 0x52, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, 0x3b, 0x4b, 0x6f, 0x68, 0x69,
+0x74, 0x101, 0x74, 0x65, 0x61, 0x3b, 0x48, 0x75, 0x69, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x50, 0x6f, 0x75,
+0x74, 0x16b, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x50, 0x61, 0x65, 0x6e, 0x67, 0x61, 0x77, 0x68, 0x101, 0x77,
+0x68, 0x101, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x74, 0x75, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x48, 0x14d,
+0x6e, 0x67, 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x69, 0x6b, 0x14d, 0x6b, 0x101,
+0x3b, 0x4d, 0x61, 0x68, 0x75, 0x72, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x2d, 0x101, 0x2d, 0x6e,
+0x75, 0x6b, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x2d, 0x101, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x69,
+0x3b, 0x48, 0x61, 0x6b, 0x69, 0x68, 0x65, 0x61, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x50, 0x3b, 0x50, 0x3b, 0x48, 0x3b, 0x50,
+0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x48, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x3b, 0x92b, 0x947,
+0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x3b, 0x92e, 0x947, 0x3b,
+0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x3b, 0x911,
+0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x3b, 0x91c,
+0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e,
+0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c,
+0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x911,
+0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938,
+0x947, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x93e, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c,
+0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x911, 0x3b, 0x938, 0x3b, 0x911, 0x3b, 0x928, 0x94b, 0x3b, 0x921, 0x93f, 0x3b, 0x31, 0x2d, 0x440,
+0x20, 0x441, 0x430, 0x440, 0x3b, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x33, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440,
+0x3b, 0x34, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x35, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x36, 0x2d, 0x440,
+0x20, 0x441, 0x430, 0x440, 0x3b, 0x37, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x38, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440,
+0x3b, 0x39, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x30, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x31,
+0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x41d, 0x44d, 0x433, 0x434,
+0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x425, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440,
+0x20, 0x441, 0x430, 0x440, 0x3b, 0x413, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440,
+0x3b, 0x414, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x422, 0x430, 0x432,
+0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x417, 0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433,
+0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20,
+0x441, 0x430, 0x440, 0x3b, 0x41d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x415,
+0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430,
+0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d,
+0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433,
+0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x49, 0x3b, 0x49, 0x49, 0x3b, 0x49, 0x49, 0x49, 0x3b, 0x49, 0x56, 0x3b,
+0x56, 0x3b, 0x56, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x49, 0x3b, 0x49, 0x58, 0x3b, 0x58, 0x3b, 0x58,
+0x49, 0x3b, 0x58, 0x49, 0x49, 0x3b, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b,
+0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x433, 0x443, 0x440, 0x430, 0x432,
+0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d,
+0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x442, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440,
+0x3b, 0x437, 0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, 0x43e,
+0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x43d, 0x430, 0x439, 0x43c, 0x434, 0x443,
+0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x435, 0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430,
+0x440, 0x3b, 0x430, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x432,
+0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x432,
+0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x91c, 0x928,
+0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b,
+0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b,
+0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d,
+0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x92e, 0x94d,
+0x92c, 0x930, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d,
+0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b,
+0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x91c, 0x928, 0x3b, 0x92b,
+0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928,
+0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b,
+0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75,
+0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75,
+0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65,
+0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65,
+0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb1c, 0xb3e, 0xb28, 0xb41, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2b,
+0xb47, 0xb2c, 0xb43, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2e, 0xb3e, 0xb30, 0xb4d, 0xb1a, 0xb4d, 0xb1a, 0x3b, 0xb05, 0xb2a, 0xb4d, 0xb30, 0xb47,
+0xb32, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0xb28, 0x3b, 0xb1c, 0xb41, 0xb32, 0xb3e, 0xb07, 0x3b, 0xb05, 0xb17, 0xb37, 0xb4d, 0xb1f,
+0x3b, 0xb38, 0xb47, 0xb2a, 0xb4d, 0xb1f, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb05, 0xb15, 0xb4d, 0xb1f, 0xb4b, 0xb2c, 0xb30, 0x3b,
+0xb28, 0xb2d, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb21, 0xb3f, 0xb38, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb1c, 0xb3e, 0x3b,
+0xb2b, 0xb47, 0x3b, 0xb2e, 0xb3e, 0x3b, 0xb05, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb05, 0x3b, 0xb38,
+0xb47, 0x3b, 0xb05, 0x3b, 0xb28, 0x3b, 0xb21, 0xb3f, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631,
+0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b,
+0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9,
+0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648,
+0x631, 0x64a, 0x3b, 0x641, 0x6d0, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc,
+0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b,
+0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b,
+0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645,
+0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644,
+0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648,
+0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645,
+0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698,
+0x627, 0x646, 0x648, 0x6cc, 0x647, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631,
+0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x3b, 0x627, 0x648, 0x62a,
+0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x627, 0x645, 0x628,
+0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x698, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x622, 0x3b, 0x645, 0x3b, 0x698,
+0x3b, 0x698, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x654,
+0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x654, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645,
+0x647, 0x654, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x654, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633,
+0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b,
+0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b,
+0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648,
+0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648,
+0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641,
+0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b,
+0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b,
+0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x73, 0x74, 0x79,
+0x3b, 0x6c, 0x75, 0x74, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6b, 0x77, 0x69, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65,
+0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, 0x69, 0x65, 0x3b, 0x77, 0x72, 0x7a, 0x3b, 0x70, 0x61, 0x17a, 0x3b, 0x6c, 0x69, 0x73,
+0x3b, 0x67, 0x72, 0x75, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x65, 0x144, 0x3b, 0x6c, 0x75, 0x74, 0x79, 0x3b, 0x6d, 0x61,
+0x72, 0x7a, 0x65, 0x63, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x63, 0x69, 0x65, 0x144, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a,
+0x65, 0x72, 0x77, 0x69, 0x65, 0x63, 0x3b, 0x6c, 0x69, 0x70, 0x69, 0x65, 0x63, 0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x69,
+0x65, 0x144, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x73, 0x69, 0x65, 0x144, 0x3b, 0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72,
+0x6e, 0x69, 0x6b, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x67, 0x72, 0x75, 0x64, 0x7a, 0x69, 0x65,
+0x144, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x57, 0x3b,
+0x50, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x6e, 0x69, 0x61, 0x3b, 0x6c, 0x75, 0x74, 0x65, 0x67,
+0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x74, 0x6e, 0x69, 0x61, 0x3b, 0x6d, 0x61, 0x6a,
+0x61, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x63, 0x61, 0x3b, 0x73, 0x69, 0x65, 0x72,
+0x70, 0x6e, 0x69, 0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, 0x61, 0x3b, 0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69,
+0x65, 0x72, 0x6e, 0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b, 0x67, 0x72, 0x75,
+0x64, 0x6e, 0x69, 0x61, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x63, 0x3b, 0x6c, 0x3b, 0x73,
+0x3b, 0x77, 0x3b, 0x70, 0x3b, 0x6c, 0x3b, 0x67, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x76, 0x2e, 0x3b, 0x6d,
+0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a,
+0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x75, 0x74, 0x2e, 0x3b, 0x6e,
+0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x7a, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x76,
+0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d,
+0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73,
+0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b,
+0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0xa1c, 0xa28,
+0x3b, 0xa2b, 0xa3c, 0xa30, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c,
+0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0x3b, 0xa05, 0xa17, 0x3b, 0xa38, 0xa24, 0xa70, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0x3b,
+0xa28, 0xa35, 0xa70, 0x3b, 0xa26, 0xa38, 0xa70, 0x3b, 0xa1c, 0xa28, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2b, 0xa3c, 0xa30, 0xa35, 0xa30, 0xa40,
+0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0xa32, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b,
+0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b, 0xa05, 0xa17, 0xa38, 0xa24, 0x3b, 0xa38, 0xa24, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa05, 0xa15, 0xa24,
+0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa26, 0xa38, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa1c, 0x3b, 0xa2b, 0xa3c,
+0x3b, 0xa2e, 0xa3e, 0x3b, 0xa05, 0x3b, 0xa2e, 0x3b, 0xa1c, 0xa42, 0x3b, 0xa1c, 0xa41, 0x3b, 0xa05, 0x3b, 0xa38, 0x3b, 0xa05, 0x3b,
+0xa28, 0x3b, 0xa26, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686,
+0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc,
+0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646,
+0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x45, 0x6e, 0x65, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
+0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41,
+0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x45,
+0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41,
+0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x69,
+0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f,
+0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x63,
+0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x2e, 0x3b,
+0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c,
+0x2e, 0x3b, 0x66, 0x61, 0x6e, 0x2e, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x2e, 0x3b, 0x6f,
+0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x65,
+0x72, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c,
+0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x66, 0x61, 0x6e, 0x61,
+0x64, 0x75, 0x72, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b,
+0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63,
+0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x46, 0x3b,
+0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, 0x61, 0x20, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x65, 0x72,
+0x3b, 0x64, 0x61, 0x20, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x64,
+0x2019, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x64, 0x61, 0x20, 0x7a,
+0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x66, 0x61, 0x6e, 0x61, 0x64, 0x75, 0x72, 0x3b,
+0x64, 0x2019, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x64, 0x61, 0x20, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72,
+0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62,
+0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x69, 0x61, 0x6e, 0x2e, 0x3b,
+0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69,
+0x75, 0x6e, 0x2e, 0x3b, 0x69, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b,
+0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x69, 0x61, 0x6e, 0x75, 0x61,
+0x72, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x65,
+0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x69, 0x65, 0x3b, 0x69,
+0x75, 0x6c, 0x69, 0x65, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72,
+0x69, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6e, 0x6f, 0x69, 0x65, 0x6d, 0x62, 0x72,
+0x69, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41,
+0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44f, 0x43d, 0x432,
+0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430,
+0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d,
+0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f,
+0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b,
+0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441,
+0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e,
+0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44f, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x440, 0x442,
+0x430, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x44f, 0x3b, 0x438, 0x44e,
+0x43b, 0x44f, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b,
+0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431,
+0x440, 0x44f, 0x3b, 0x4e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x3b, 0x4d, 0x62, 0xe4, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x42,
+0xea, 0x6c, 0x3b, 0x46, 0xf6, 0x6e, 0x3b, 0x4c, 0x65, 0x6e, 0x3b, 0x4b, 0xfc, 0x6b, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x4e,
+0x67, 0x62, 0x3b, 0x4e, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6b, 0x3b, 0x4e, 0x79, 0x65, 0x6e, 0x79, 0x65, 0x3b, 0x46, 0x75,
+0x6c, 0x75, 0x6e, 0x64, 0xef, 0x67, 0x69, 0x3b, 0x4d, 0x62, 0xe4, 0x6e, 0x67, 0xfc, 0x3b, 0x4e, 0x67, 0x75, 0x62, 0xf9,
+0x65, 0x3b, 0x42, 0xea, 0x6c, 0xe4, 0x77, 0xfc, 0x3b, 0x46, 0xf6, 0x6e, 0x64, 0x6f, 0x3b, 0x4c, 0x65, 0x6e, 0x67, 0x75,
+0x61, 0x3b, 0x4b, 0xfc, 0x6b, 0xfc, 0x72, 0xfc, 0x3b, 0x4d, 0x76, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x67, 0x62, 0x65, 0x72,
+0x65, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x62, 0xe4, 0x6e, 0x64, 0xfc, 0x72, 0x75, 0x3b, 0x4b, 0x61, 0x6b, 0x61, 0x75, 0x6b,
+0x61, 0x3b, 0x4e, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x46, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b,
+0x4e, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f,
+0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435,
+0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440,
+0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b,
+0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441,
+0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432,
+0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444,
+0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b,
+0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432,
+0x3b, 0x434, 0x435, 0x446, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72,
+0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70,
+0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b,
+0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d,
+0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65,
+0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65,
+0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65,
+0x62, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a,
+0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b,
+0x64, 0x65, 0x63, 0x3b, 0x42f, 0x43d, 0x432, 0x2e, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x2e,
+0x3b, 0x410, 0x43f, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b,
+0x410, 0x432, 0x433, 0x2e, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x41e, 0x43a, 0x442, 0x2e, 0x3b, 0x41d, 0x43e, 0x44f, 0x431,
+0x2e, 0x3b, 0x414, 0x435, 0x43a, 0x2e, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b,
+0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b,
+0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d,
+0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c,
+0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c,
+0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438,
+0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d,
+0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44b, 0x3b, 0x444, 0x435, 0x432, 0x440,
+0x430, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x439, 0x44b, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44b, 0x3b,
+0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441,
+0x442, 0x44b, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b,
+0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44b, 0x3b, 0x4e, 0x64, 0x69, 0x3b, 0x4b,
+0x75, 0x6b, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x4b, 0x75, 0x62, 0x3b, 0x43, 0x68, 0x76, 0x3b, 0x43, 0x68, 0x6b, 0x3b, 0x43,
+0x68, 0x67, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x47, 0x75, 0x6e, 0x3b, 0x47, 0x75, 0x6d, 0x3b, 0x4d, 0x62, 0x75, 0x3b, 0x5a,
+0x76, 0x69, 0x3b, 0x4e, 0x64, 0x69, 0x72, 0x61, 0x3b, 0x4b, 0x75, 0x6b, 0x61, 0x64, 0x7a, 0x69, 0x3b, 0x4b, 0x75, 0x72,
+0x75, 0x6d, 0x65, 0x3b, 0x4b, 0x75, 0x62, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x76, 0x61, 0x62, 0x76,
+0x75, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6e, 0x67, 0x75, 0x72, 0x75,
+0x3b, 0x4e, 0x79, 0x61, 0x6d, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68, 0x75, 0x3b, 0x47, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x61,
+0x3b, 0x47, 0x75, 0x6d, 0x69, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4d, 0x62, 0x75, 0x64, 0x7a, 0x69, 0x3b, 0x5a, 0x76, 0x69,
+0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4e, 0x3b, 0x47,
+0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x64a, 0x628, 0x631, 0x648, 0x631, 0x64a,
+0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x626, 0x64a, 0x3b, 0x62c, 0x648, 0x646, 0x3b,
+0x62c, 0x648, 0x644, 0x627, 0x621, 0x650, 0x3b, 0x622, 0x6af, 0x633, 0x67d, 0x3b, 0x633, 0x64a, 0x67e, 0x67d, 0x645, 0x628, 0x631, 0x3b,
+0x622, 0x6aa, 0x67d, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x68a, 0x633, 0x645, 0x628, 0x631, 0x3b, 0xda2,
+0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b,
+0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3,
+0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0xda2, 0xdb1,
+0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0xdbb, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4,
+0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b,
+0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0xdc3, 0xdca, 0xdad, 0xdd4, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0xdad, 0xdd0, 0xdb8,
+0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0xdad, 0xddd, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0xdb8, 0xdca,
+0xdb6, 0xdbb, 0xdca, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xda2, 0x3b, 0xdb4, 0xdd9, 0x3b, 0xdb8,
+0xdcf, 0x3b, 0xd85, 0x3b, 0xdb8, 0xdd0, 0x3b, 0xda2, 0xdd6, 0x3b, 0xda2, 0xdd6, 0x3b, 0xd85, 0x3b, 0xdc3, 0xdd0, 0x3b, 0xd94, 0x3b,
+0xdb1, 0xdd9, 0x3b, 0xdaf, 0xdd9, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b,
+0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2,
+0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0,
+0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61,
+0x70, 0x72, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73,
+0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1,
+0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0xed,
+0x6c, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74,
+0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e,
+0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e,
+0x75, 0xe1, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b,
+0x61, 0x70, 0x72, 0xed, 0x6c, 0x61, 0x3b, 0x6d, 0xe1, 0x6a, 0x61, 0x3b, 0x6a, 0xfa, 0x6e, 0x61, 0x3b, 0x6a, 0xfa, 0x6c,
+0x61, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b,
+0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63,
+0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e,
+0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b,
+0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b,
+0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b,
+0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69,
+0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65,
+0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65,
+0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
+0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x4f,
+0x67, 0x73, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x66, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a,
+0x61, 0x6e, 0x6e, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x4d, 0x61, 0x61,
+0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x3b,
+0x4c, 0x75, 0x75, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x62, 0x74, 0x65, 0x6d,
+0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x66, 0x65, 0x6d, 0x62, 0x61,
+0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d,
+0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61,
+0x20, 0x4b, 0x6f, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x61,
+0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x64, 0x64, 0x65, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69,
+0x73, 0x68, 0x61, 0x20, 0x41, 0x66, 0x72, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x68, 0x61,
+0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x69, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69,
+0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x64, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53,
+0x69, 0x64, 0x65, 0x65, 0x64, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x67, 0x61, 0x61,
+0x6c, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42,
+0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x77, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64,
+0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e,
+0x61, 0x61, 0x64, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61,
+0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61,
+0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b,
+0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d,
+0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69,
+0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x69,
+0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d,
+0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b,
+0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x65, 0x6e,
+0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61,
+0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65,
+0x70, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x45, 0x6e,
+0x65, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61,
+0x79, 0x2e, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65,
+0x74, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e,
+0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61,
+0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65,
+0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e,
+0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62,
+0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f,
+0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63,
+0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69,
+0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70,
+0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65,
+0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72,
+0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72,
+0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41,
+0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62,
+0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x6a, 0x61,
+0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61,
+0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70,
0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e,
-0x76, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74,
-0x73, 0x3b, 0x61, 0x70, 0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e, 0x69,
-0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x73, 0x3b, 0x73, 0x65,
-0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6e, 0x6f,
-0x76, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x79, 0x61,
-0x6e, 0x3b, 0x66, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x79, 0x75,
-0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x74, 0x3b, 0x73, 0x74, 0x62, 0x3b, 0x254, 0x74, 0x62, 0x3b, 0x6e, 0x76,
-0x62, 0x3b, 0x64, 0x73, 0x62, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, 0x6f,
-0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x73, 0xe1, 0x6e,
-0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79,
-0x61, 0x20, 0x6d, 0xed, 0x6e, 0x65, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x74,
-0xe1, 0x6e, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x6f, 0x74, 0xf3, 0x62, 0xe1, 0x3b,
-0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6e, 0x73, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a,
-0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x77, 0x61, 0x6d, 0x62, 0x65, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61,
-0x20, 0x6c, 0x69, 0x62, 0x77, 0x61, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69,
-0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x254,
-0x30c, 0x6b, 0x254, 0x301, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e,
-0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x79,
-0x3b, 0x79, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x254, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x2e, 0x3b, 0x76,
-0x61, 0x73, 0x2e, 0x3b, 0x6b, 0x6f, 0x76, 0x2e, 0x3b, 0x62, 0x61, 0x6c, 0x2e, 0x3b, 0x67, 0x65, 0x67, 0x2e, 0x3b, 0x62,
-0x69, 0x72, 0x17e, 0x2e, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67,
-0x73, 0x2e, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x2e, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x2e, 0x3b, 0x67, 0x72, 0x75, 0x6f,
-0x64, 0x2e, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x73, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x6b, 0x6f,
-0x76, 0x61, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, 0x3b,
-0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x61, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x6a,
-0x16b, 0x74, 0x69, 0x73, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x69, 0x73, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x69, 0x73,
-0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x74, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x69, 0x73, 0x3b, 0x53,
-0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x42, 0x3b, 0x47, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4c,
-0x3b, 0x47, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6b, 0x6f,
-0x76, 0x6f, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, 0x73,
-0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x6f, 0x73, 0x3b, 0x72, 0x75, 0x67,
-0x70, 0x6a, 0x16b, 0x10d, 0x69, 0x6f, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x6f, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x69,
-0x6f, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x10d, 0x69, 0x6f, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x17e, 0x69, 0x6f,
-0x3b, 0x458, 0x430, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e,
-0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x2e, 0x3b, 0x458, 0x443, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b,
-0x441, 0x435, 0x43f, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x2e, 0x3b, 0x434, 0x435, 0x43a,
-0x2e, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x43c,
-0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, 0x458,
-0x443, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, 0x438,
-0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, 0x435,
-0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x458, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x458, 0x3b, 0x458,
-0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
-0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x3b, 0x4a, 0x6f, 0x6c, 0x3b, 0x41,
-0x6f, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a,
-0x61, 0x6e, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x4d, 0x61, 0x72, 0x74,
-0x73, 0x61, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x61, 0x3b, 0x4a,
-0x6f, 0x6c, 0x61, 0x79, 0x3b, 0x41, 0x6f, 0x67, 0x6f, 0x73, 0x69, 0x74, 0x72, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x61,
-0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x61, 0x6d, 0x62, 0x72,
-0x61, 0x3b, 0x44, 0x65, 0x73, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
-0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f,
-0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a,
-0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x3b,
-0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b,
-0x4f, 0x67, 0x6f, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62,
-0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72,
-0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f,
-0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xd1c, 0xd28, 0xd41, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0x3b,
-0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b,
-0xd13, 0xd17, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0x3b, 0xd12, 0xd15, 0xd4d, 0xd1f, 0xd4b, 0x3b, 0xd28, 0xd35,
-0xd02, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0x3b, 0xd1c, 0xd28, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41,
-0xd35, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0xd1a, 0xd4d, 0xd1a, 0xd4d, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0xd7d, 0x3b, 0xd2e,
-0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0xd38, 0xd4d, 0xd31, 0xd4d, 0xd31,
-0xd4d, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd12, 0xd15, 0xd4d, 0x200c, 0xd1f, 0xd4b, 0xd2c,
-0xd7c, 0x3b, 0xd28, 0xd35, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd1c, 0x3b, 0xd2b, 0xd46, 0x3b,
-0xd2e, 0xd3e, 0x3b, 0xd0f, 0x3b, 0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, 0x3b, 0xd38, 0xd46, 0x3b,
-0xd12, 0x3b, 0xd28, 0x3b, 0xd21, 0xd3f, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41,
-0x70, 0x72, 0x3b, 0x4d, 0x65, 0x6a, 0x3b, 0x120, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x77, 0x3b, 0x53,
-0x65, 0x74, 0x3b, 0x4f, 0x74, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x10b, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61,
-0x72, 0x3b, 0x46, 0x72, 0x61, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d,
-0x65, 0x6a, 0x6a, 0x75, 0x3b, 0x120, 0x75, 0x6e, 0x6a, 0x75, 0x3b, 0x4c, 0x75, 0x6c, 0x6a, 0x75, 0x3b, 0x41, 0x77, 0x77,
-0x69, 0x73, 0x73, 0x75, 0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x74, 0x75, 0x62,
-0x72, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x10b, 0x65, 0x6d, 0x62, 0x72, 0x75,
-0x3b, 0x4a, 0x6e, 0x3b, 0x46, 0x72, 0x3b, 0x4d, 0x7a, 0x3b, 0x41, 0x70, 0x3b, 0x4d, 0x6a, 0x3b, 0x120, 0x6e, 0x3b, 0x4c,
-0x6a, 0x3b, 0x41, 0x77, 0x3b, 0x53, 0x74, 0x3b, 0x4f, 0x62, 0x3b, 0x4e, 0x76, 0x3b, 0x44, 0x10b, 0x3b, 0x4a, 0x3b, 0x46,
-0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x120, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44,
-0x3b, 0x4b, 0x6f, 0x68, 0x69, 0x3b, 0x48, 0x75, 0x69, 0x3b, 0x50, 0x6f, 0x75, 0x3b, 0x50, 0x61, 0x65, 0x3b, 0x48, 0x61,
-0x72, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x4d,
-0x61, 0x68, 0x75, 0x3b, 0x4e, 0x75, 0x6b, 0x75, 0x3b, 0x52, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, 0x3b,
-0x4b, 0x6f, 0x68, 0x69, 0x74, 0x101, 0x74, 0x65, 0x61, 0x3b, 0x48, 0x75, 0x69, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x72, 0x75,
-0x3b, 0x50, 0x6f, 0x75, 0x74, 0x16b, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x50, 0x61, 0x65, 0x6e, 0x67, 0x61,
-0x77, 0x68, 0x101, 0x77, 0x68, 0x101, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x74, 0x75, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, 0x72,
-0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x69,
-0x6b, 0x14d, 0x6b, 0x101, 0x3b, 0x4d, 0x61, 0x68, 0x75, 0x72, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61,
-0x2d, 0x101, 0x2d, 0x6e, 0x75, 0x6b, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x2d, 0x101, 0x2d, 0x72,
-0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, 0x68, 0x65, 0x61, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x50, 0x3b, 0x50,
-0x3b, 0x48, 0x3b, 0x50, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x48, 0x3b, 0x91c, 0x93e, 0x928,
-0x947, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f,
-0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, 0x91f,
-0x947, 0x902, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x3b, 0x921, 0x93f, 0x938,
-0x947, 0x902, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e,
-0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c,
-0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902,
-0x92c, 0x930, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, 0x930,
-0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x93e, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b,
-0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x911, 0x3b, 0x938, 0x3b, 0x911, 0x3b, 0x928, 0x94b, 0x3b, 0x921, 0x93f,
-0x3b, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x33, 0x2d, 0x440,
-0x20, 0x441, 0x430, 0x440, 0x3b, 0x34, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x35, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440,
-0x3b, 0x36, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x37, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x38, 0x2d, 0x440,
-0x20, 0x441, 0x430, 0x440, 0x3b, 0x39, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x30, 0x2d, 0x440, 0x20, 0x441, 0x430,
-0x440, 0x3b, 0x31, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b,
-0x41d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x425, 0x43e, 0x451, 0x440, 0x434, 0x443,
-0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x413, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440,
-0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440,
-0x3b, 0x422, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x417, 0x443, 0x440, 0x433, 0x430,
-0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433,
-0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x41d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441,
-0x430, 0x440, 0x3b, 0x415, 0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x430, 0x432,
-0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433,
-0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451,
-0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x49, 0x3b, 0x49, 0x49, 0x3b, 0x49, 0x49, 0x49,
-0x3b, 0x49, 0x56, 0x3b, 0x56, 0x3b, 0x56, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x49, 0x3b, 0x49, 0x58,
-0x3b, 0x58, 0x3b, 0x58, 0x49, 0x3b, 0x58, 0x49, 0x49, 0x3b, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20,
-0x441, 0x430, 0x440, 0x3b, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x433,
-0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, 0x4e9, 0x440, 0x4e9, 0x432,
-0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x442, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440,
-0x20, 0x441, 0x430, 0x440, 0x3b, 0x437, 0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430,
-0x440, 0x3b, 0x434, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x43d, 0x430,
-0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x435, 0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d,
-0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440,
-0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440,
-0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430,
-0x440, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, 0x940, 0x3b, 0x92e, 0x93e,
-0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941,
-0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, 0x92e, 0x94d, 0x92c, 0x930,
-0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x921, 0x93f,
-0x938, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a,
-0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b,
-0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b,
-0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, 0x947,
-0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, 0x91f,
-0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66,
-0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61,
-0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73,
-0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76,
-0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb1c, 0xb3e, 0xb28, 0xb41, 0xb06,
-0xb30, 0xb40, 0x3b, 0xb2b, 0xb47, 0xb2c, 0xb43, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2e, 0xb3e, 0xb30, 0xb4d, 0xb1a, 0xb4d, 0xb1a, 0x3b, 0xb05,
-0xb2a, 0xb4d, 0xb30, 0xb47, 0xb32, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0xb28, 0x3b, 0xb1c, 0xb41, 0xb32, 0xb3e, 0xb07, 0x3b, 0xb05,
-0xb17, 0xb37, 0xb4d, 0xb1f, 0x3b, 0xb38, 0xb47, 0xb2a, 0xb4d, 0xb1f, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb05, 0xb15, 0xb4d, 0xb1f,
-0xb4b, 0xb2c, 0xb30, 0x3b, 0xb28, 0xb2d, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb21, 0xb3f, 0xb38, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30,
-0x3b, 0xb1c, 0xb3e, 0x3b, 0xb2b, 0xb47, 0x3b, 0xb2e, 0xb3e, 0x3b, 0xb05, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb1c, 0xb41,
-0x3b, 0xb05, 0x3b, 0xb38, 0xb47, 0x3b, 0xb05, 0x3b, 0xb28, 0x3b, 0xb21, 0xb3f, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641,
-0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b,
-0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628,
-0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631,
-0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x6d0, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b,
-0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627,
-0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648,
-0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648,
-0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646,
-0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b,
-0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c,
-0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646,
-0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x3b, 0x645, 0x627, 0x631, 0x633,
-0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647,
-0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646,
-0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x698, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x622,
-0x3b, 0x645, 0x3b, 0x698, 0x3b, 0x698, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646,
-0x648, 0x6cc, 0x647, 0x654, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x654, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631,
-0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x654, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x654, 0x3b, 0x627,
-0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x627,
-0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x628, 0x631,
-0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648,
-0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b,
-0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c,
-0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644,
-0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a,
-0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645,
-0x3b, 0x73, 0x74, 0x79, 0x3b, 0x6c, 0x75, 0x74, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6b, 0x77, 0x69, 0x3b, 0x6d, 0x61, 0x6a,
-0x3b, 0x63, 0x7a, 0x65, 0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, 0x69, 0x65, 0x3b, 0x77, 0x72, 0x7a, 0x3b, 0x70, 0x61, 0x17a,
-0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x65, 0x144, 0x3b, 0x6c, 0x75, 0x74,
-0x79, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x65, 0x63, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x63, 0x69, 0x65, 0x144, 0x3b, 0x6d, 0x61,
-0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x69, 0x65, 0x63, 0x3b, 0x6c, 0x69, 0x70, 0x69, 0x65, 0x63, 0x3b, 0x73, 0x69,
-0x65, 0x72, 0x70, 0x69, 0x65, 0x144, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x73, 0x69, 0x65, 0x144, 0x3b, 0x70, 0x61, 0x17a, 0x64,
-0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x67, 0x72, 0x75,
-0x64, 0x7a, 0x69, 0x65, 0x144, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x4c, 0x3b,
-0x53, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x6e, 0x69, 0x61, 0x3b, 0x6c,
-0x75, 0x74, 0x65, 0x67, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x74, 0x6e, 0x69, 0x61,
-0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x63, 0x61, 0x3b,
-0x73, 0x69, 0x65, 0x72, 0x70, 0x6e, 0x69, 0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, 0x61, 0x3b, 0x70, 0x61,
-0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61,
-0x3b, 0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, 0x61, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x63,
-0x3b, 0x6c, 0x3b, 0x73, 0x3b, 0x77, 0x3b, 0x70, 0x3b, 0x6c, 0x3b, 0x67, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76,
-0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c,
-0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x7a,
-0x3b, 0x6a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d,
-0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68,
-0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d,
-0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f,
-0x3b, 0x64, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0xa1c, 0xa28, 0x3b, 0xa2b, 0xa3c, 0xa30, 0x3b, 0xa2e, 0xa3e, 0xa30,
-0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0x3b,
-0xa05, 0xa17, 0x3b, 0xa38, 0xa24, 0xa70, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0x3b, 0xa28, 0xa35, 0xa70, 0x3b, 0xa26, 0xa38, 0xa70, 0x3b,
-0xa1c, 0xa28, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2b, 0xa3c, 0xa30, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a,
-0xa4d, 0xa30, 0xa48, 0xa32, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b, 0xa05, 0xa17,
-0xa38, 0xa24, 0x3b, 0xa38, 0xa24, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35, 0xa70, 0xa2c,
-0xa30, 0x3b, 0xa26, 0xa38, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa1c, 0x3b, 0xa2b, 0xa3c, 0x3b, 0xa2e, 0xa3e, 0x3b, 0xa05, 0x3b, 0xa2e, 0x3b,
-0xa1c, 0xa42, 0x3b, 0xa1c, 0xa41, 0x3b, 0xa05, 0x3b, 0xa38, 0x3b, 0xa05, 0x3b, 0xa28, 0x3b, 0xa26, 0x3b, 0x62c, 0x646, 0x648, 0x631,
-0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645,
-0x626, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a,
-0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645,
-0x628, 0x631, 0x3b, 0x45, 0x6e, 0x65, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d,
-0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f,
-0x63, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x62,
-0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79,
-0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f,
-0x3b, 0x53, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e,
-0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x73,
-0x63, 0x68, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72,
-0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x2e, 0x3b, 0x66, 0x61, 0x6e, 0x2e, 0x3b, 0x61,
-0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e,
-0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x65, 0x72, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72,
-0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65,
-0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x66, 0x61, 0x6e, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x61, 0x76, 0x75, 0x73,
-0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b,
-0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x53, 0x3b,
-0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b,
-0x44, 0x3b, 0x69, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72,
-0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x2e, 0x3b, 0x69, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e,
-0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63,
-0x2e, 0x3b, 0x69, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x65,
-0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x65, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x69, 0x3b,
-0x69, 0x75, 0x6e, 0x69, 0x65, 0x3b, 0x69, 0x75, 0x6c, 0x69, 0x65, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73,
-0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b,
-0x6e, 0x6f, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b,
-0x49, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b,
-0x4e, 0x3b, 0x44, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b,
-0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430,
-0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e,
-0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440,
-0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e,
-0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f,
-0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44f, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430,
-0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x44f, 0x3b,
-0x438, 0x44e, 0x43d, 0x44f, 0x3b, 0x438, 0x44e, 0x43b, 0x44f, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435,
-0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440,
-0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44f, 0x3b, 0x4e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x3b, 0x4d, 0x62,
-0xe4, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x42, 0xea, 0x6c, 0x3b, 0x46, 0xf6, 0x6e, 0x3b, 0x4c, 0x65, 0x6e, 0x3b, 0x4b, 0xfc,
-0x6b, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x4e, 0x67, 0x62, 0x3b, 0x4e, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6b, 0x3b, 0x4e, 0x79,
-0x65, 0x6e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x75, 0x6e, 0x64, 0xef, 0x67, 0x69, 0x3b, 0x4d, 0x62, 0xe4, 0x6e, 0x67,
-0xfc, 0x3b, 0x4e, 0x67, 0x75, 0x62, 0xf9, 0x65, 0x3b, 0x42, 0xea, 0x6c, 0xe4, 0x77, 0xfc, 0x3b, 0x46, 0xf6, 0x6e, 0x64,
-0x6f, 0x3b, 0x4c, 0x65, 0x6e, 0x67, 0x75, 0x61, 0x3b, 0x4b, 0xfc, 0x6b, 0xfc, 0x72, 0xfc, 0x3b, 0x4d, 0x76, 0x75, 0x6b,
-0x61, 0x3b, 0x4e, 0x67, 0x62, 0x65, 0x72, 0x65, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x62, 0xe4, 0x6e, 0x64, 0xfc, 0x72, 0x75,
-0x3b, 0x4b, 0x61, 0x6b, 0x61, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x46,
-0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431,
-0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b,
-0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446,
-0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442,
-0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430,
-0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e,
-0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430,
-0x440, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d,
-0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b,
-0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66,
-0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61,
-0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70,
-0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d,
-0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62,
-0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c,
-0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63,
-0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x2e,
-0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65,
-0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x458,
-0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b,
-0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442,
-0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x42f, 0x43d, 0x432, 0x2e, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x2e, 0x3b,
-0x41c, 0x430, 0x440, 0x442, 0x2e, 0x3b, 0x410, 0x43f, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b,
-0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x2e, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x41e, 0x43a, 0x442, 0x2e,
-0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x414, 0x435, 0x43a, 0x2e, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424,
-0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c,
-0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441,
-0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d,
-0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444,
-0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438,
-0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e,
-0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44b,
-0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x439, 0x44b, 0x3b, 0x430, 0x43f,
-0x440, 0x435, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b,
-0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x44b, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43e, 0x43a, 0x442,
-0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44b, 0x3b,
-0x4e, 0x64, 0x69, 0x3b, 0x4b, 0x75, 0x6b, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x4b, 0x75, 0x62, 0x3b, 0x43, 0x68, 0x76, 0x3b,
-0x43, 0x68, 0x6b, 0x3b, 0x43, 0x68, 0x67, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x47, 0x75, 0x6e, 0x3b, 0x47, 0x75, 0x6d, 0x3b,
-0x4d, 0x62, 0x75, 0x3b, 0x5a, 0x76, 0x69, 0x3b, 0x4e, 0x64, 0x69, 0x72, 0x61, 0x3b, 0x4b, 0x75, 0x6b, 0x61, 0x64, 0x7a,
-0x69, 0x3b, 0x4b, 0x75, 0x72, 0x75, 0x6d, 0x65, 0x3b, 0x4b, 0x75, 0x62, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x3b, 0x43, 0x68,
-0x69, 0x76, 0x61, 0x62, 0x76, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75,
-0x6e, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4e, 0x79, 0x61, 0x6d, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68, 0x75, 0x3b, 0x47, 0x75,
-0x6e, 0x79, 0x61, 0x6e, 0x61, 0x3b, 0x47, 0x75, 0x6d, 0x69, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4d, 0x62, 0x75, 0x64, 0x7a,
-0x69, 0x3b, 0x5a, 0x76, 0x69, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x43, 0x3b,
-0x43, 0x3b, 0x4e, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x64a,
-0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x626, 0x64a,
-0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x621, 0x650, 0x3b, 0x622, 0x6af, 0x633, 0x67d, 0x3b, 0x633, 0x64a, 0x67e,
-0x67d, 0x645, 0x628, 0x631, 0x3b, 0x622, 0x6aa, 0x67d, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x68a, 0x633,
-0x645, 0x628, 0x631, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d,
-0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b,
-0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9,
-0xdc3, 0xdd0, 0x3b, 0xda2, 0xdb1, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0xdbb, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb8,
-0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b,
-0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0xdc3, 0xdca, 0xdad, 0xdd4, 0x3b, 0xdc3, 0xdd0,
-0xdb4, 0xdca, 0xdad, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0xdad, 0xddd, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdb1,
-0xddc, 0xdc0, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xda2,
-0x3b, 0xdb4, 0xdd9, 0x3b, 0xdb8, 0xdcf, 0x3b, 0xd85, 0x3b, 0xdb8, 0xdd0, 0x3b, 0xda2, 0xdd6, 0x3b, 0xda2, 0xdd6, 0x3b, 0xd85, 0x3b,
-0xdc3, 0xdd0, 0x3b, 0xd94, 0x3b, 0xdb1, 0xdd9, 0x3b, 0xdaf, 0xdd9, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf,
-0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2,
-0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a,
-0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b,
-0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b,
-0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b,
-0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63,
-0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b, 0x61,
-0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3,
-0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65,
-0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x6d,
-0x61, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x61, 0x3b, 0x6d, 0xe1, 0x6a, 0x61, 0x3b, 0x6a, 0xfa, 0x6e,
-0x61, 0x3b, 0x6a, 0xfa, 0x6c, 0x61, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65,
-0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72,
-0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e,
-0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b,
-0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b,
-0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62,
-0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a,
-0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b,
-0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f,
-0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b,
-0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b,
-0x4c, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x73, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x66, 0x3b,
-0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x61, 0x61, 0x79,
-0x6f, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b,
-0x4a, 0x75, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x75, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x53,
-0x65, 0x62, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f,
-0x66, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b,
-0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b,
-0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20,
-0x4c, 0x61, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x64, 0x64, 0x65, 0x78, 0x61,
-0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x41, 0x66, 0x72, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68,
-0x61, 0x20, 0x53, 0x68, 0x61, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x69, 0x78, 0x61,
-0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x64, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69,
-0x73, 0x68, 0x61, 0x20, 0x53, 0x69, 0x64, 0x65, 0x65, 0x64, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20,
-0x53, 0x61, 0x67, 0x61, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x62, 0x6e,
-0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x77, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f,
-0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x20, 0x69, 0x79, 0x6f,
-0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d,
-0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a,
-0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b,
-0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72,
-0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f,
-0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b,
-0x73, 0x65, 0x70, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e,
-0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45,
-0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e,
-0x3b, 0x44, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62,
-0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67,
-0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69,
-0x63, 0x2e, 0x3b, 0x45, 0x6e, 0x65, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x62,
-0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x2e, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x67,
-0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x69,
-0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62,
-0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67,
-0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69,
-0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72,
-0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b,
-0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62,
-0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65,
-0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d,
-0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41,
-0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a,
-0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68,
-0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75,
-0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b,
-0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d,
-0x62, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70,
-0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67,
-0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63,
-0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d,
-0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a,
-0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65,
-0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64,
-0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b,
-0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b,
-0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41e,
-0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0xb9c,
-0xba9, 0x2e, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0x2e, 0x3b,
-0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbaa,
-0xbcd, 0x2e, 0x3b, 0xb85, 0xb95, 0xbcd, 0x2e, 0x3b, 0xba8, 0xbb5, 0x2e, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0x2e, 0x3b, 0xb9c, 0xba9, 0xbb5,
-0xbb0, 0xbbf, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0xb9a, 0xbcd, 0x3b, 0xb8f,
-0xbaa, 0xbcd, 0xbb0, 0xbb2, 0xbcd, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86,
-0xb95, 0xbb8, 0xbcd, 0xb9f, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xb95, 0xbcd,
-0xb9f, 0xbcb, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0xbae, 0xbcd, 0xbaa,
-0xbb0, 0xbcd, 0x3b, 0xb9c, 0x3b, 0xbaa, 0xbbf, 0x3b, 0xbae, 0xbbe, 0x3b, 0xb8f, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb9c,
-0xbc2, 0x3b, 0xb86, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xb85, 0x3b, 0xba8, 0x3b, 0xb9f, 0xbbf, 0x3b, 0x433, 0x44b, 0x439, 0x43d, 0x2e, 0x3b,
-0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438,
-0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b,
-0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x433, 0x44b, 0x439, 0x43d,
-0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440,
-0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432,
-0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440,
-0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0xc1c, 0xc28, 0x3b,
-0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0x3b, 0xc2e,
-0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f,
-0xc46, 0xc02, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0x3b, 0xc1c,
-0xc28, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f,
-0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0xc32, 0xc4d, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32,
-0xc48, 0x3b, 0xc06, 0xc17, 0xc38, 0xc4d, 0xc1f, 0xc41, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b,
-0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc28, 0xc35, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46,
-0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc1c, 0x3b, 0xc2b, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0x3b, 0xc0f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42,
-0x3b, 0xc1c, 0xc41, 0x3b, 0xc06, 0x3b, 0xc38, 0xc46, 0x3b, 0xc05, 0x3b, 0xc28, 0x3b, 0xc21, 0xc3f, 0x3b, 0xe21, 0x2e, 0xe04, 0x2e,
-0x3b, 0xe01, 0x2e, 0xe1e, 0x2e, 0x3b, 0xe21, 0xe35, 0x2e, 0xe04, 0x2e, 0x3b, 0xe40, 0xe21, 0x2e, 0xe22, 0x2e, 0x3b, 0xe1e, 0x2e,
-0xe04, 0x2e, 0x3b, 0xe21, 0xe34, 0x2e, 0xe22, 0x2e, 0x3b, 0xe01, 0x2e, 0xe04, 0x2e, 0x3b, 0xe2a, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01,
-0x2e, 0xe22, 0x2e, 0x3b, 0xe15, 0x2e, 0xe04, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe22, 0x2e, 0x3b, 0xe18, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21,
-0xe01, 0xe23, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe38, 0xe21, 0xe20, 0xe32, 0xe1e, 0xe31, 0xe19, 0xe18, 0xe4c, 0x3b, 0xe21, 0xe35, 0xe19,
-0xe32, 0xe04, 0xe21, 0x3b, 0xe40, 0xe21, 0xe29, 0xe32, 0xe22, 0xe19, 0x3b, 0xe1e, 0xe24, 0xe29, 0xe20, 0xe32, 0xe04, 0xe21, 0x3b, 0xe21,
-0xe34, 0xe16, 0xe38, 0xe19, 0xe32, 0xe22, 0xe19, 0x3b, 0xe01, 0xe23, 0xe01, 0xe0e, 0xe32, 0xe04, 0xe21, 0x3b, 0xe2a, 0xe34, 0xe07, 0xe2b,
-0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe31, 0xe19, 0xe22, 0xe32, 0xe22, 0xe19, 0x3b, 0xe15, 0xe38, 0xe25, 0xe32, 0xe04, 0xe21, 0x3b, 0xe1e,
-0xe24, 0xe28, 0xe08, 0xe34, 0xe01, 0xe32, 0xe22, 0xe19, 0x3b, 0xe18, 0xe31, 0xe19, 0xe27, 0xe32, 0xe04, 0xe21, 0x3b, 0xf5f, 0xfb3, 0xf0b,
-0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54,
-0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b,
-0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3,
-0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53,
-0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3,
-0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54,
-0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f,
-0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56,
-0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0xf5f,
-0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b,
-0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74,
-0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56,
-0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0x3b,
-0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b,
-0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66,
-0xf0b, 0xf54, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x3b, 0x1218, 0x130b, 0x3b, 0x121a, 0x12eb, 0x3b, 0x130d, 0x1295, 0x3b, 0x1230, 0x1290,
-0x3b, 0x1213, 0x121d, 0x3b, 0x1290, 0x1213, 0x3b, 0x1218, 0x1235, 0x3b, 0x1325, 0x1245, 0x3b, 0x1215, 0x12f3, 0x3b, 0x1273, 0x1215, 0x3b, 0x1325,
-0x122a, 0x3b, 0x1208, 0x12ab, 0x1272, 0x1275, 0x3b, 0x1218, 0x130b, 0x1262, 0x1275, 0x3b, 0x121a, 0x12eb, 0x12dd, 0x12eb, 0x3b, 0x130d, 0x1295, 0x1266,
-0x1275, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, 0x3b, 0x1218, 0x1235, 0x12a8, 0x1228, 0x121d, 0x3b, 0x1325,
-0x1245, 0x121d, 0x1272, 0x3b, 0x1215, 0x12f3, 0x122d, 0x3b, 0x1273, 0x1215, 0x1233, 0x1235, 0x3b, 0x1325, 0x3b, 0x1208, 0x3b, 0x1218, 0x3b, 0x121a,
-0x3b, 0x130d, 0x3b, 0x1230, 0x3b, 0x1213, 0x3b, 0x1290, 0x3b, 0x1218, 0x3b, 0x1325, 0x3b, 0x1215, 0x3b, 0x1273, 0x3b, 0x53, 0x101, 0x6e,
-0x3b, 0x46, 0x113, 0x70, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75,
-0x6e, 0x3b, 0x53, 0x69, 0x75, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x3b,
-0x4e, 0x14d, 0x76, 0x3b, 0x54, 0x12b, 0x73, 0x3b, 0x53, 0x101, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46, 0x113, 0x70, 0x75,
-0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x73, 0x69, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x6c, 0x65, 0x6c, 0x69, 0x3b,
-0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x6f,
-0x73, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x74, 0x6f, 0x70, 0x61,
-0x3b, 0x4e, 0x14d, 0x76, 0x65, 0x6d, 0x61, 0x3b, 0x54, 0x12b, 0x73, 0x65, 0x6d, 0x61, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d,
-0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4f,
-0x63, 0x61, 0x3b, 0x15e, 0x75, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4e, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48,
-0x61, 0x7a, 0x3b, 0x54, 0x65, 0x6d, 0x3b, 0x41, 0x11f, 0x75, 0x3b, 0x45, 0x79, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x3b, 0x4b,
-0x61, 0x73, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x4f, 0x63, 0x61, 0x6b, 0x3b, 0x15e, 0x75, 0x62, 0x61, 0x74, 0x3b, 0x4d, 0x61,
-0x72, 0x74, 0x3b, 0x4e, 0x69, 0x73, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x79, 0x131, 0x73, 0x3b, 0x48, 0x61, 0x7a, 0x69, 0x72,
-0x61, 0x6e, 0x3b, 0x54, 0x65, 0x6d, 0x6d, 0x75, 0x7a, 0x3b, 0x41, 0x11f, 0x75, 0x73, 0x74, 0x6f, 0x73, 0x3b, 0x45, 0x79,
-0x6c, 0xfc, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x73, 0x131, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6c, 0x131,
-0x6b, 0x3b, 0x4f, 0x3b, 0x15e, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x45, 0x3b,
-0x45, 0x3b, 0x4b, 0x3b, 0x41, 0x3b, 0xdd, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70,
-0x72, 0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x3b,
-0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0xfd, 0x3b, 0x44, 0x65, 0x6b, 0x3b, 0xdd, 0x61, 0x6e, 0x77,
-0x61, 0x72, 0x3b, 0x46, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c,
-0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x75, 0x73,
-0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4e,
-0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0xdd, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41,
-0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xfd, 0x61, 0x6e,
-0x3b, 0x66, 0x65, 0x77, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd,
-0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b,
-0x6e, 0x6f, 0xfd, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0xfd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x77, 0x72, 0x61,
-0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75,
-0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0xfd, 0x61,
-0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65,
-0x6b, 0x61, 0x62, 0x72, 0x3b, 0x64a, 0x627, 0x646, 0x6cb, 0x627, 0x631, 0x3b, 0x641, 0x6d0, 0x6cb, 0x631, 0x627, 0x644, 0x3b, 0x645,
-0x627, 0x631, 0x62a, 0x3b, 0x626, 0x627, 0x67e, 0x631, 0x6d0, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x646,
-0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x644, 0x3b, 0x626, 0x627, 0x6cb, 0x63a, 0x6c7, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x646, 0x62a, 0x6d5,
-0x628, 0x649, 0x631, 0x3b, 0x626, 0x6c6, 0x643, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x646, 0x648, 0x64a, 0x627, 0x628, 0x649, 0x631,
-0x3b, 0x62f, 0x6d0, 0x643, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x441, 0x456, 0x447, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x431, 0x435, 0x440,
-0x3b, 0x43a, 0x432, 0x456, 0x3b, 0x442, 0x440, 0x430, 0x3b, 0x447, 0x435, 0x440, 0x3b, 0x43b, 0x438, 0x43f, 0x3b, 0x441, 0x435, 0x440,
-0x3b, 0x432, 0x435, 0x440, 0x3b, 0x436, 0x43e, 0x432, 0x3b, 0x43b, 0x438, 0x441, 0x3b, 0x433, 0x440, 0x443, 0x3b, 0x441, 0x456, 0x447,
-0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x44e, 0x442, 0x438, 0x439, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x435, 0x43d, 0x44c, 0x3b, 0x43a,
-0x432, 0x456, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x435,
-0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435,
-0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e,
-0x43f, 0x430, 0x434, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x435, 0x43d, 0x44c, 0x3b, 0x421, 0x3b, 0x41b, 0x3b, 0x411, 0x3b, 0x41a, 0x3b,
-0x422, 0x3b, 0x427, 0x3b, 0x41b, 0x3b, 0x421, 0x3b, 0x412, 0x3b, 0x416, 0x3b, 0x41b, 0x3b, 0x413, 0x3b, 0x441, 0x456, 0x447, 0x2e,
-0x3b, 0x43b, 0x44e, 0x442, 0x2e, 0x3b, 0x431, 0x435, 0x440, 0x2e, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x2e, 0x3b, 0x442, 0x440, 0x430,
-0x432, 0x2e, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x2e, 0x3b, 0x43b, 0x438, 0x43f, 0x2e, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x2e, 0x3b,
-0x432, 0x435, 0x440, 0x2e, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x2e, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x2e, 0x3b, 0x433, 0x440, 0x443,
-0x434, 0x2e, 0x3b, 0x441, 0x456, 0x447, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x43e, 0x433, 0x43e, 0x3b, 0x431, 0x435, 0x440, 0x435,
-0x437, 0x43d, 0x44f, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x43d, 0x44f, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x43d, 0x44f, 0x3b, 0x447, 0x435,
-0x440, 0x432, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x43f, 0x43d, 0x44f, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x43d, 0x44f, 0x3b, 0x432, 0x435,
-0x440, 0x435, 0x441, 0x43d, 0x44f, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430,
-0x434, 0x430, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x43d, 0x44f, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x431, 0x3b, 0x43a, 0x3b, 0x442, 0x3b,
-0x447, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x432, 0x3b, 0x436, 0x3b, 0x43b, 0x3b, 0x433, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b,
-0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc,
-0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645,
-0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628,
-0x631, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61,
-0x79, 0x3b, 0x49, 0x79, 0x6e, 0x3b, 0x49, 0x79, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b,
-0x74, 0x3b, 0x4e, 0x6f, 0x79, 0x3b, 0x44, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x76,
-0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49,
-0x79, 0x75, 0x6e, 0x3b, 0x49, 0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74,
-0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65,
-0x6b, 0x61, 0x62, 0x72, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41,
-0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72,
-0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x67,
-0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e,
-0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65,
-0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75,
-0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f,
-0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x3b,
-0x645, 0x627, 0x631, 0x3b, 0x627, 0x67e, 0x631, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627,
-0x6af, 0x633, 0x3b, 0x633, 0x67e, 0x62a, 0x3b, 0x627, 0x6a9, 0x62a, 0x3b, 0x646, 0x648, 0x645, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x44f,
-0x43d, 0x432, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438,
-0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43d, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d,
-0x43e, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b,
-0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438,
-0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43e, 0x43a,
-0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x54, 0x68,
-0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0x67, 0x20,
-0x34, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x37, 0x3b,
-0x54, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54,
-0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31,
-0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0xe1,
-0x6e, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36,
-0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0xe1,
-0x6e, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20,
-0x31, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68,
-0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0x67, 0x20,
-0x35, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x38, 0x3b,
-0x74, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b,
-0x74, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67,
-0x20, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x74,
-0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67,
-0x20, 0x37, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x74,
-0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0xe1,
-0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0xe4, 0x7a, 0x3b, 0x70, 0x72,
-0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x67, 0x73, 0x74, 0x3b, 0x73, 0x65,
-0x74, 0x3b, 0x74, 0x6f, 0x62, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x75, 0x6c, 0x3b,
-0x66, 0x65, 0x62, 0x75, 0x6c, 0x3b, 0x6d, 0xe4, 0x7a, 0x75, 0x6c, 0x3b, 0x70, 0x72, 0x69, 0x6c, 0x75, 0x6c, 0x3b, 0x6d,
-0x61, 0x79, 0x75, 0x6c, 0x3b, 0x79, 0x75, 0x6e, 0x75, 0x6c, 0x3b, 0x79, 0x75, 0x6c, 0x75, 0x6c, 0x3b, 0x67, 0x75, 0x73,
-0x74, 0x75, 0x6c, 0x3b, 0x73, 0x65, 0x74, 0x75, 0x6c, 0x3b, 0x74, 0x6f, 0x62, 0x75, 0x6c, 0x3b, 0x6e, 0x6f, 0x76, 0x75,
-0x6c, 0x3b, 0x64, 0x65, 0x6b, 0x75, 0x6c, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x59, 0x3b,
-0x59, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b,
-0x6d, 0xe4, 0x7a, 0x3b, 0x70, 0x72, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b,
-0x67, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x74, 0x6f, 0x6e, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x6b, 0x3b,
-0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b,
-0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79,
-0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x49, 0x6f, 0x6e, 0x61, 0x77, 0x72, 0x3b, 0x43,
-0x68, 0x77, 0x65, 0x66, 0x72, 0x6f, 0x72, 0x3b, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x69, 0x6c,
-0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x65, 0x66, 0x69, 0x6e, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x65,
-0x6e, 0x6e, 0x61, 0x66, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x72, 0x65,
-0x66, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x77, 0x65, 0x64, 0x64, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x66, 0x79, 0x72, 0x3b, 0x49,
-0x3b, 0x43, 0x68, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b,
-0x54, 0x3b, 0x52, 0x68, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45,
-0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x3b,
-0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52,
-0x68, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x72, 0x3b,
-0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x3b, 0x4f,
-0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x77, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x77, 0x69, 0x79, 0x65, 0x65, 0x3b,
-0x46, 0x65, 0x77, 0x72, 0x69, 0x79, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x77, 0x72, 0x69, 0x6c, 0x3b,
-0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x65, 0x3b, 0x53, 0x75, 0x6c, 0x65, 0x74, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0,
-0x74, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x77,
-0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46,
-0x65, 0x62, 0x3b, 0x4d, 0x61, 0x74, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a,
-0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44,
-0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x79, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61,
-0x72, 0x69, 0x3b, 0x4d, 0x61, 0x74, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79,
-0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69,
-0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f,
-0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x3b, 0x5e4,
-0x5bf, 0x5e2, 0x5d1, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9,
-0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x3b, 0x5d0,
-0x5e7, 0x5d8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x5d5, 0x5d0, 0x5b7, 0x5e8,
-0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5b7, 0x5e8, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc,
-0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5,
-0x5d9, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x5d8, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d0, 0x5e7, 0x5d8,
-0x5d0, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x5e2, 0x5de,
-0x5d1, 0x5e2, 0x5e8, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0x3b, 0x1eb8, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x1eb8, 0x300, 0x62,
-0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f, 0x77, 0x3b, 0x1ecc, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b,
-0x1ecc, 0x300, 0x70, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x1eb8, 0x72, 0x1eb9,
-0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64,
-0x75, 0x3b, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x1ecc,
-0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x3b, 0xc8,
-0x3b, 0x1eb8, 0x3b, 0xcc, 0x3b, 0x1eb8, 0x300, 0x3b, 0xd2, 0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x1ecc, 0x300, 0x3b, 0x42,
-0x3b, 0x1ecc, 0x300, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0x3b,
-0xcc, 0x67, 0x62, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x1eb9, 0x3b, 0xd2, 0x67, 0xfa,
-0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x3b, 0x4f,
-0x1e63, 0xf9, 0x20, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b,
-0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b,
-0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75,
-0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b,
-0x4f, 0x1e63, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0,
-0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b,
-0x53, 0x68, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0x3b, 0x190, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x190, 0x300, 0x62, 0x3b, 0xd2, 0x6b,
-0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f, 0x77, 0x3b, 0x186, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x186, 0x300, 0x70,
-0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e,
-0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b,
-0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77,
-0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, 0x190,
-0x3b, 0xcc, 0x3b, 0x190, 0x300, 0x3b, 0xd2, 0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x186, 0x300, 0x3b, 0x42, 0x3b, 0x186,
-0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0x3b, 0xcc,
-0x67, 0x62, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x25b, 0x3b, 0xd2, 0x67, 0xfa, 0x3b,
-0x4f, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x3b, 0x4f, 0x73,
-0x68, 0xf9, 0x20, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c,
-0xe8, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xcc,
-0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x73, 0x68, 0xf9,
-0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0x4f, 0x73,
-0x68, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f,
-0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa,
-0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b,
-0x4d, 0x61, 0x73, 0x3b, 0x45, 0x70, 0x68, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b,
-0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b,
-0x4a, 0x61, 0x6e, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d,
-0x61, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x68, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75,
-0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70,
-0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d,
-0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d,
-0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b,
-0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a,
-0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f,
-0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72,
+0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61,
+0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61,
+0x75, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74,
+0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62,
+0x65, 0x72, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442,
+0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410,
+0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440,
+0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0xb9c, 0xba9, 0x2e, 0x3b, 0xbaa, 0xbbf,
+0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2,
+0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xb85, 0xb95,
+0xbcd, 0x2e, 0x3b, 0xba8, 0xbb5, 0x2e, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0x2e, 0x3b, 0xb9c, 0xba9, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbaa, 0xbbf,
+0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0xb9a, 0xbcd, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0xbb0, 0xbb2, 0xbcd,
+0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0xbb8, 0xbcd, 0xb9f, 0xbcd,
+0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xb95, 0xbcd, 0xb9f, 0xbcb, 0xbaa, 0xbb0, 0xbcd,
+0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9c, 0x3b,
+0xbaa, 0xbbf, 0x3b, 0xbae, 0xbbe, 0x3b, 0xb8f, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb86, 0x3b, 0xb9a,
+0xbc6, 0x3b, 0xb85, 0x3b, 0xba8, 0x3b, 0xb9f, 0xbbf, 0x3b, 0x433, 0x44b, 0x439, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b,
+0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438,
+0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b,
+0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x433, 0x44b, 0x439, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444,
+0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c,
+0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b,
+0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f,
+0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0xc1c, 0xc28, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30,
+0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28,
+0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0x3b, 0xc05, 0xc15,
+0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0x3b, 0xc1c, 0xc28, 0xc35, 0xc30, 0xc3f, 0x3b,
+0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30,
+0xc3f, 0xc32, 0xc4d, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0xc38,
+0xc4d, 0xc1f, 0xc41, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b,
+0xc2c, 0xc30, 0xc4d, 0x3b, 0xc28, 0xc35, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b,
+0xc1c, 0x3b, 0xc2b, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0x3b, 0xc0f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0x3b, 0xc1c, 0xc41, 0x3b, 0xc06,
+0x3b, 0xc38, 0xc46, 0x3b, 0xc05, 0x3b, 0xc28, 0x3b, 0xc21, 0xc3f, 0x3b, 0xe21, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe1e, 0x2e,
+0x3b, 0xe21, 0xe35, 0x2e, 0xe04, 0x2e, 0x3b, 0xe40, 0xe21, 0x2e, 0xe22, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe34,
+0x2e, 0xe22, 0x2e, 0x3b, 0xe01, 0x2e, 0xe04, 0x2e, 0x3b, 0xe2a, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe22, 0x2e, 0x3b, 0xe15,
+0x2e, 0xe04, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe22, 0x2e, 0x3b, 0xe18, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe01, 0xe23, 0xe32, 0xe04, 0xe21,
+0x3b, 0xe01, 0xe38, 0xe21, 0xe20, 0xe32, 0xe1e, 0xe31, 0xe19, 0xe18, 0xe4c, 0x3b, 0xe21, 0xe35, 0xe19, 0xe32, 0xe04, 0xe21, 0x3b, 0xe40,
+0xe21, 0xe29, 0xe32, 0xe22, 0xe19, 0x3b, 0xe1e, 0xe24, 0xe29, 0xe20, 0xe32, 0xe04, 0xe21, 0x3b, 0xe21, 0xe34, 0xe16, 0xe38, 0xe19, 0xe32,
+0xe22, 0xe19, 0x3b, 0xe01, 0xe23, 0xe01, 0xe0e, 0xe32, 0xe04, 0xe21, 0x3b, 0xe2a, 0xe34, 0xe07, 0xe2b, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01,
+0xe31, 0xe19, 0xe22, 0xe32, 0xe22, 0xe19, 0x3b, 0xe15, 0xe38, 0xe25, 0xe32, 0xe04, 0xe21, 0x3b, 0xe1e, 0xe24, 0xe28, 0xe08, 0xe34, 0xe01,
+0xe32, 0xe22, 0xe19, 0x3b, 0xe18, 0xe31, 0xe19, 0xe27, 0xe32, 0xe04, 0xe21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b,
+0xf54, 0xf7c, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b,
+0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54,
+0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2,
+0xf74, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f,
+0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42,
+0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b,
+0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56,
+0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54,
+0xf7c, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42,
+0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b,
+0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f,
+0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1,
+0xf51, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b,
+0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b,
+0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0x1325, 0x122a,
+0x3b, 0x1208, 0x12ab, 0x3b, 0x1218, 0x130b, 0x3b, 0x121a, 0x12eb, 0x3b, 0x130d, 0x1295, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x3b, 0x1290,
+0x1213, 0x3b, 0x1218, 0x1235, 0x3b, 0x1325, 0x1245, 0x3b, 0x1215, 0x12f3, 0x3b, 0x1273, 0x1215, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x1272,
+0x1275, 0x3b, 0x1218, 0x130b, 0x1262, 0x1275, 0x3b, 0x121a, 0x12eb, 0x12dd, 0x12eb, 0x3b, 0x130d, 0x1295, 0x1266, 0x1275, 0x3b, 0x1230, 0x1290, 0x3b,
+0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, 0x3b, 0x1218, 0x1235, 0x12a8, 0x1228, 0x121d, 0x3b, 0x1325, 0x1245, 0x121d, 0x1272, 0x3b, 0x1215,
+0x12f3, 0x122d, 0x3b, 0x1273, 0x1215, 0x1233, 0x1235, 0x3b, 0x1325, 0x3b, 0x1208, 0x3b, 0x1218, 0x3b, 0x121a, 0x3b, 0x130d, 0x3b, 0x1230, 0x3b,
+0x1213, 0x3b, 0x1290, 0x3b, 0x1218, 0x3b, 0x1325, 0x3b, 0x1215, 0x3b, 0x1273, 0x3b, 0x53, 0x101, 0x6e, 0x3b, 0x46, 0x113, 0x70, 0x3b,
+0x4d, 0x61, 0x2bb, 0x61, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x53, 0x69, 0x75,
+0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x3b, 0x54,
+0x12b, 0x73, 0x3b, 0x53, 0x101, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46, 0x113, 0x70, 0x75, 0x65, 0x6c, 0x69, 0x3b, 0x4d,
+0x61, 0x2bb, 0x61, 0x73, 0x69, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x6c, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75,
+0x6e, 0x65, 0x3b, 0x53, 0x69, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x65,
+0x70, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x74, 0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x65,
+0x6d, 0x61, 0x3b, 0x54, 0x12b, 0x73, 0x65, 0x6d, 0x61, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b,
+0x53, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4f, 0x63, 0x61, 0x3b, 0x15e, 0x75,
+0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4e, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x61, 0x7a, 0x3b, 0x54, 0x65,
+0x6d, 0x3b, 0x41, 0x11f, 0x75, 0x3b, 0x45, 0x79, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x41, 0x72,
+0x61, 0x3b, 0x4f, 0x63, 0x61, 0x6b, 0x3b, 0x15e, 0x75, 0x62, 0x61, 0x74, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x4e, 0x69,
+0x73, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x79, 0x131, 0x73, 0x3b, 0x48, 0x61, 0x7a, 0x69, 0x72, 0x61, 0x6e, 0x3b, 0x54, 0x65,
+0x6d, 0x6d, 0x75, 0x7a, 0x3b, 0x41, 0x11f, 0x75, 0x73, 0x74, 0x6f, 0x73, 0x3b, 0x45, 0x79, 0x6c, 0xfc, 0x6c, 0x3b, 0x45,
+0x6b, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x73, 0x131, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6c, 0x131, 0x6b, 0x3b, 0x4f, 0x3b, 0x15e,
+0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x45, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, 0x41,
+0x3b, 0xdd, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0xfd,
+0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f,
+0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0xfd, 0x3b, 0x44, 0x65, 0x6b, 0x3b, 0xdd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x46, 0x65,
+0x77, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0xfd, 0x3b,
+0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e,
+0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0xfd, 0x61, 0x62, 0x72,
+0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0xdd, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b,
+0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xfd, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x77, 0x3b,
+0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd,
+0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0xfd, 0x3b, 0x64,
+0x65, 0x6b, 0x3b, 0xfd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72,
+0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75,
+0x6c, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b,
+0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b,
+0x64a, 0x627, 0x646, 0x6cb, 0x627, 0x631, 0x3b, 0x641, 0x6d0, 0x6cb, 0x631, 0x627, 0x644, 0x3b, 0x645, 0x627, 0x631, 0x62a, 0x3b, 0x626,
+0x627, 0x67e, 0x631, 0x6d0, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x646, 0x3b, 0x626, 0x649, 0x64a, 0x6c7,
+0x644, 0x3b, 0x626, 0x627, 0x6cb, 0x63a, 0x6c7, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x646, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x626,
+0x6c6, 0x643, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x646, 0x648, 0x64a, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x62f, 0x6d0, 0x643, 0x627,
+0x628, 0x649, 0x631, 0x3b, 0x441, 0x456, 0x447, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x431, 0x435, 0x440, 0x3b, 0x43a, 0x432, 0x456, 0x3b,
+0x442, 0x440, 0x430, 0x3b, 0x447, 0x435, 0x440, 0x3b, 0x43b, 0x438, 0x43f, 0x3b, 0x441, 0x435, 0x440, 0x3b, 0x432, 0x435, 0x440, 0x3b,
+0x436, 0x43e, 0x432, 0x3b, 0x43b, 0x438, 0x441, 0x3b, 0x433, 0x440, 0x443, 0x3b, 0x441, 0x456, 0x447, 0x435, 0x43d, 0x44c, 0x3b, 0x43b,
+0x44e, 0x442, 0x438, 0x439, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x435, 0x43d, 0x44c, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x435, 0x43d,
+0x44c, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438,
+0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x435, 0x43d,
+0x44c, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x3b, 0x433,
+0x440, 0x443, 0x434, 0x435, 0x43d, 0x44c, 0x3b, 0x421, 0x3b, 0x41b, 0x3b, 0x411, 0x3b, 0x41a, 0x3b, 0x422, 0x3b, 0x427, 0x3b, 0x41b,
+0x3b, 0x421, 0x3b, 0x412, 0x3b, 0x416, 0x3b, 0x41b, 0x3b, 0x413, 0x3b, 0x441, 0x456, 0x447, 0x2e, 0x3b, 0x43b, 0x44e, 0x442, 0x2e,
+0x3b, 0x431, 0x435, 0x440, 0x2e, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x2e, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x2e, 0x3b, 0x447, 0x435,
+0x440, 0x432, 0x2e, 0x3b, 0x43b, 0x438, 0x43f, 0x2e, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x2e, 0x3b, 0x432, 0x435, 0x440, 0x2e, 0x3b,
+0x436, 0x43e, 0x432, 0x442, 0x2e, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x2e, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x2e, 0x3b, 0x441, 0x456,
+0x447, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x43e, 0x433, 0x43e, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x43d, 0x44f, 0x3b, 0x43a,
+0x432, 0x456, 0x442, 0x43d, 0x44f, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x43d, 0x44f, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x43d, 0x44f, 0x3b,
+0x43b, 0x438, 0x43f, 0x43d, 0x44f, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x43d, 0x44f, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x43d, 0x44f,
+0x3b, 0x436, 0x43e, 0x432, 0x442, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x433, 0x440,
+0x443, 0x434, 0x43d, 0x44f, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x431, 0x3b, 0x43a, 0x3b, 0x442, 0x3b, 0x447, 0x3b, 0x43b, 0x3b, 0x441,
+0x3b, 0x432, 0x3b, 0x436, 0x3b, 0x43b, 0x3b, 0x433, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc,
+0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b,
+0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9,
+0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x59, 0x61, 0x6e,
+0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x6e,
+0x3b, 0x49, 0x79, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x79,
+0x3b, 0x44, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d,
+0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x75, 0x6e, 0x3b, 0x49,
+0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4f,
+0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b,
+0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b,
+0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b,
+0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b,
+0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66,
+0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79,
+0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65,
+0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b,
+0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x3b, 0x627,
+0x67e, 0x631, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x3b, 0x633, 0x67e,
+0x62a, 0x3b, 0x627, 0x6a9, 0x62a, 0x3b, 0x646, 0x648, 0x645, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x44f, 0x43d, 0x432, 0x3b, 0x444, 0x435,
+0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438, 0x44e,
+0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43d, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x44f, 0x3b, 0x434, 0x435,
+0x43a, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b,
+0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432,
+0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b,
+0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x54,
+0x68, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x67,
+0x20, 0x35, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x38,
+0x3b, 0x54, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x31,
+0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e,
+0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b,
+0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0xe1, 0x6e,
+0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b,
+0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68,
+0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x74,
+0x68, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0x67,
+0x20, 0x36, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x39,
+0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31,
+0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68,
+0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20,
+0x35, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68,
+0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20,
+0x31, 0x30, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32,
+0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0xe4, 0x7a, 0x3b, 0x70, 0x72, 0x6c, 0x3b, 0x6d, 0x61, 0x79,
+0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x67, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x74, 0x6f, 0x62,
+0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x75, 0x6c, 0x3b, 0x66, 0x65, 0x62, 0x75, 0x6c,
+0x3b, 0x6d, 0xe4, 0x7a, 0x75, 0x6c, 0x3b, 0x70, 0x72, 0x69, 0x6c, 0x75, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x75, 0x6c, 0x3b,
+0x79, 0x75, 0x6e, 0x75, 0x6c, 0x3b, 0x79, 0x75, 0x6c, 0x75, 0x6c, 0x3b, 0x67, 0x75, 0x73, 0x74, 0x75, 0x6c, 0x3b, 0x73,
+0x65, 0x74, 0x75, 0x6c, 0x3b, 0x74, 0x6f, 0x62, 0x75, 0x6c, 0x3b, 0x6e, 0x6f, 0x76, 0x75, 0x6c, 0x3b, 0x64, 0x65, 0x6b,
+0x75, 0x6c, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x47, 0x3b, 0x53,
+0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0xe4, 0x7a, 0x3b, 0x70,
+0x72, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x67, 0x73, 0x74, 0x3b, 0x73,
+0x65, 0x74, 0x3b, 0x74, 0x6f, 0x6e, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43,
+0x68, 0x77, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47,
+0x6f, 0x72, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63,
+0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x49, 0x6f, 0x6e, 0x61, 0x77, 0x72, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x72,
+0x6f, 0x72, 0x3b, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69,
+0x3b, 0x4d, 0x65, 0x68, 0x65, 0x66, 0x69, 0x6e, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x65, 0x6e, 0x6e, 0x61, 0x66, 0x3b,
+0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x72, 0x65, 0x66, 0x3b, 0x54, 0x61, 0x63,
+0x68, 0x77, 0x65, 0x64, 0x64, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x66, 0x79, 0x72, 0x3b, 0x49, 0x3b, 0x43, 0x68, 0x3b, 0x4d,
+0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x52, 0x68, 0x3b,
+0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61,
+0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64,
+0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x3b,
+0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x3b,
+0x53, 0x75, 0x6c, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x77, 0x3b, 0x44,
+0x65, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x77, 0x69, 0x79, 0x65, 0x65, 0x3b, 0x46, 0x65, 0x77, 0x72, 0x69, 0x79, 0x65, 0x65,
+0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x77, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x65,
+0x3b, 0x53, 0x75, 0x6c, 0x65, 0x74, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x72, 0x3b,
+0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x77, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65,
+0x73, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x74, 0x3b, 0x45,
+0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53,
+0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x79, 0x75,
+0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x74, 0x73, 0x68,
+0x69, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a,
+0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62,
+0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69,
+0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5,
+0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9,
+0x3b, 0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x3b, 0x5d0, 0x5e7, 0x5d8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x3b,
+0x5d3, 0x5e2, 0x5e6, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x5d5, 0x5d0, 0x5b7, 0x5e8, 0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x5e8, 0x5d5, 0x5d0,
+0x5b7, 0x5e8, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b,
+0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e2,
+0x5e4, 0x5bc, 0x5d8, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d0, 0x5e7, 0x5d8, 0x5d0, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5e0, 0x5d0, 0x5d5,
+0x5d5, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x3b,
+0xc8, 0x72, 0x3b, 0x1eb8, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x1eb8, 0x300, 0x62, 0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2,
+0x67, 0x3b, 0x4f, 0x77, 0x3b, 0x1ecc, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x1ecc, 0x300, 0x70, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72,
+0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9,
+0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b,
+0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9,
+0x6c, 0xfa, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, 0x1eb8, 0x3b, 0xcc, 0x3b, 0x1eb8, 0x300, 0x3b,
+0xd2, 0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x1ecc, 0x300, 0x3b, 0x42, 0x3b, 0x1ecc, 0x300, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72,
+0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0x3b, 0xcc, 0x67, 0x62, 0x3b, 0x1eb8, 0x300, 0x62, 0x69,
+0x3b, 0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x1eb9, 0x3b, 0xd2, 0x67, 0xfa, 0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77,
+0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9,
+0x301, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x72, 0x1eb9, 0x300,
+0x6e, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x300, 0x62, 0x69,
+0x62, 0x69, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x41, 0x67, 0x1eb9,
+0x6d, 0x1ecd, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77,
+0x65, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x42, 0xe9, 0x6c,
+0xfa, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0x3b,
+0x190, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x190, 0x300, 0x62, 0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f,
+0x77, 0x3b, 0x186, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x186, 0x300, 0x70, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301,
+0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x190,
+0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0xd2, 0x67,
+0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa,
+0x3b, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, 0x190, 0x3b, 0xcc, 0x3b, 0x190, 0x300, 0x3b, 0xd2, 0x3b,
+0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x186, 0x300, 0x3b, 0x42, 0x3b, 0x186, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x3b,
+0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0x3b, 0xcc, 0x67, 0x62, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x3b,
+0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x25b, 0x3b, 0xd2, 0x67, 0xfa, 0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0,
+0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x53, 0x68, 0x25b, 0x301, 0x72,
+0x25b, 0x301, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190,
+0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x73, 0x68, 0xf9,
+0x20, 0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f,
+0x73, 0x68, 0xf9, 0x20, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b,
+0x4f, 0x73, 0x68, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x77, 0xe0,
+0x72, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300,
+0x70, 0x25b, 0x300, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x73, 0x3b, 0x45, 0x70, 0x68, 0x3b,
+0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b,
+0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x77, 0x61, 0x72, 0x69,
+0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x68,
+0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79,
+0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f,
+0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d,
+0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53,
+0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72,
+0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69,
+0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e,
+0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70,
+0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65,
+0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72,
0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b,
0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74,
0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e,
@@ -2632,12 +2651,8 @@ static const ushort months_data[] = {
0x646, 0x648, 0x6a4, 0x627, 0x645, 0x631, 0x3b, 0x62f, 0x626, 0x633, 0x627, 0x645, 0x631, 0x3b, 0x45, 0x6e, 0x3b, 0x50, 0x65, 0x62,
0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, 0x75, 0x6c,
0x3b, 0x41, 0x67, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b,
-0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x50, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x6f, 0x3b,
-0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6e, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6c,
-0x79, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b,
-0x4f, 0x6b, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x62, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69,
-0x73, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b,
-0x48, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b
+0x45, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b,
+0x4e, 0x3b, 0x44, 0x3b
};
// GENERATED PART ENDS HERE
diff --git a/src/corelib/time/qtimezoneprivate_data_p.h b/src/corelib/time/qtimezoneprivate_data_p.h
index 40d6c972c2..822af9c703 100644
--- a/src/corelib/time/qtimezoneprivate_data_p.h
+++ b/src/corelib/time/qtimezoneprivate_data_p.h
@@ -1,5 +1,6 @@
/****************************************************************************
**
+** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2013 John Layt <jlayt@kde.org>
** Contact: https://www.qt.io/licensing/
**
@@ -114,8 +115,8 @@ struct QUtcData {
// GENERATED PART STARTS HERE
/*
- This part of the file was generated on 2019-05-28 from the
- Common Locale Data Repository v35.1 supplemental/windowsZones.xml file $Revision: 14742 $
+ This part of the file was generated on 2019-10-24 from the
+ Common Locale Data Repository v36 supplemental/windowsZones.xml file $Revision$
http://www.unicode.org/cldr/
@@ -125,557 +126,560 @@ struct QUtcData {
// Windows ID Key, Country Enum, IANA ID Index
static const QZoneData zoneDataTable[] = {
- { 131, 143, 0 }, // W. Mongolia Standard Time / Mongolia
- { 124, 112, 10 }, // UTC+12 / Kiribati
- { 52, 94, 25 }, // Haiti Standard Time / Haiti
- { 32, 44, 48 }, // China Standard Time / China
- { 95, 244, 62 }, // SA Western Standard Time / Saint Barthelemy
- { 25, 116, 84 }, // Central Asia Standard Time / Kyrgyzstan
- { 36, 8, 97 }, // E. Africa Standard Time / Antarctica
- { 33, 154, 114 }, // Chatham Islands Standard Time / New Zealand
- { 95, 144, 130 }, // SA Western Standard Time / Montserrat
- { 37, 13, 149 }, // E. Australia Standard Time / Australia
- { 61, 0, 187 }, // Line Islands Standard Time / AnyCountry
- { 132, 218, 198 }, // West Asia Standard Time / Turkmenistan
- { 122, 30, 212 }, // UTC-02 / Brazil
- { 24, 52, 228 }, // Central America Standard Time / Costa Rica
- { 36, 67, 247 }, // E. Africa Standard Time / Eritrea
- { 128, 8, 261 }, // W. Australia Standard Time / Antarctica
- { 101, 101, 278 }, // SE Asia Standard Time / Indonesia
- { 93, 8, 306 }, // SA Eastern Standard Time / Antarctica
- { 4, 178, 325 }, // Altai Standard Time / Russia
- { 95, 256, 338 }, // SA Western Standard Time / Sint Maarten
- { 95, 60, 360 }, // SA Western Standard Time / Dominica
- { 134, 167, 377 }, // West Pacific Standard Time / Papua New Guinea
- { 13, 13, 398 }, // AUS Eastern Standard Time / Australia
- { 69, 236, 435 }, // Morocco Standard Time / Western Sahara
- { 39, 30, 451 }, // E. South America Standard Time / Brazil
- { 124, 134, 469 }, // UTC+12 / Marshall Islands
- { 125, 112, 502 }, // UTC+13 / Kiribati
- { 103, 146, 520 }, // South Africa Standard Time / Mozambique
- { 94, 30, 534 }, // SA Pacific Standard Time / Brazil
- { 88, 74, 570 }, // Romance Standard Time / France
- { 71, 38, 583 }, // Mountain Standard Time / Canada
- { 72, 147, 657 }, // Myanmar Standard Time / Myanmar
- { 26, 30, 670 }, // Central Brazilian Standard Time / Brazil
- { 130, 123, 706 }, // W. Europe Standard Time / Liechtenstein
- { 46, 73, 719 }, // FLE Standard Time / Finland
- { 93, 70, 735 }, // SA Eastern Standard Time / Falkland Islands
- { 78, 159, 752 }, // Norfolk Standard Time / Norfolk Island
- { 53, 0, 768 }, // Hawaiian Standard Time / AnyCountry
- { 28, 54, 779 }, // Central European Standard Time / Croatia
- { 75, 150, 793 }, // Nepal Standard Time / Nepal
- { 46, 33, 807 }, // FLE Standard Time / Bulgaria
- { 6, 162, 820 }, // Arabian Standard Time / Oman
- { 132, 131, 832 }, // West Asia Standard Time / Maldives
- { 88, 197, 848 }, // Romance Standard Time / Spain
- { 50, 91, 875 }, // Greenwich Standard Time / Guinea
- { 5, 237, 890 }, // Arab Standard Time / Yemen
- { 92, 222, 900 }, // Russian Standard Time / Ukraine
- { 103, 204, 918 }, // South Africa Standard Time / Swaziland
- { 130, 203, 933 }, // W. Europe Standard Time / Svalbard And Jan Mayen Islands
- { 7, 103, 953 }, // Arabic Standard Time / Iraq
- { 119, 226, 966 }, // UTC-11 / United States Minor Outlying Islands
- { 5, 115, 981 }, // Arab Standard Time / Kuwait
- { 50, 189, 993 }, // Greenwich Standard Time / Sierra Leone
- { 31, 0, 1009 }, // Central Standard Time / AnyCountry
- { 53, 51, 1017 }, // Hawaiian Standard Time / Cook Islands
- { 129, 50, 1035 }, // W. Central Africa Standard Time / Congo Brazzaville
- { 64, 43, 1054 }, // Magallanes Standard Time / Chile
- { 119, 0, 1075 }, // UTC-11 / AnyCountry
- { 84, 38, 1086 }, // Pacific Standard Time / Canada
- { 22, 11, 1138 }, // Caucasus Standard Time / Armenia
- { 130, 142, 1151 }, // W. Europe Standard Time / Monaco
- { 103, 239, 1165 }, // South Africa Standard Time / Zambia
- { 46, 222, 1179 }, // FLE Standard Time / Ukraine
- { 87, 168, 1225 }, // Paraguay Standard Time / Paraguay
- { 57, 109, 1242 }, // Jordan Standard Time / Jordan
- { 109, 30, 1253 }, // Tocantins Standard Time / Brazil
- { 55, 102, 1271 }, // Iran Standard Time / Iran
- { 101, 8, 1283 }, // SE Asia Standard Time / Antarctica
- { 27, 57, 1300 }, // Central Europe Standard Time / Czech Republic
- { 95, 215, 1314 }, // SA Western Standard Time / Trinidad And Tobago
- { 103, 28, 1336 }, // South Africa Standard Time / Botswana
- { 132, 0, 1352 }, // West Asia Standard Time / AnyCountry
- { 94, 63, 1362 }, // SA Pacific Standard Time / Ecuador
- { 51, 85, 1380 }, // GTB Standard Time / Greece
- { 36, 128, 1394 }, // E. Africa Standard Time / Madagascar
- { 53, 226, 1414 }, // Hawaiian Standard Time / United States Minor Outlying Islands
- { 94, 107, 1431 }, // SA Pacific Standard Time / Jamaica
- { 104, 198, 1447 }, // Sri Lanka Standard Time / Sri Lanka
- { 27, 243, 1460 }, // Central Europe Standard Time / Serbia
- { 25, 110, 1476 }, // Central Asia Standard Time / Kazakhstan
- { 125, 0, 1502 }, // UTC+13 / AnyCountry
- { 94, 38, 1513 }, // SA Pacific Standard Time / Canada
- { 25, 31, 1535 }, // Central Asia Standard Time / British Indian Ocean Territory
- { 108, 13, 1549 }, // Tasmania Standard Time / Australia
- { 95, 174, 1583 }, // SA Western Standard Time / Puerto Rico
- { 95, 180, 1603 }, // SA Western Standard Time / Saint Kitts And Nevis
- { 130, 206, 1620 }, // W. Europe Standard Time / Switzerland
- { 117, 225, 1634 }, // US Eastern Standard Time / United States
- { 29, 140, 1701 }, // Central Pacific Standard Time / Micronesia
- { 120, 77, 1731 }, // UTC-09 / French Polynesia
- { 129, 156, 1747 }, // W. Central Africa Standard Time / Niger
- { 118, 139, 1761 }, // US Mountain Standard Time / Mexico
- { 36, 194, 1780 }, // E. Africa Standard Time / Somalia
- { 118, 0, 1797 }, // US Mountain Standard Time / AnyCountry
- { 10, 24, 1807 }, // Atlantic Standard Time / Bermuda
- { 103, 240, 1824 }, // South Africa Standard Time / Zimbabwe
- { 32, 126, 1838 }, // China Standard Time / Macau
- { 129, 66, 1849 }, // W. Central Africa Standard Time / Equatorial Guinea
- { 66, 137, 1863 }, // Mauritius Standard Time / Mauritius
- { 46, 68, 1880 }, // FLE Standard Time / Estonia
- { 50, 187, 1895 }, // Greenwich Standard Time / Senegal
- { 132, 110, 1908 }, // West Asia Standard Time / Kazakhstan
- { 25, 44, 1968 }, // Central Asia Standard Time / China
- { 130, 106, 1980 }, // W. Europe Standard Time / Italy
- { 48, 251, 1992 }, // GMT Standard Time / Isle Of Man
- { 36, 210, 2011 }, // E. Africa Standard Time / Tanzania
- { 10, 86, 2032 }, // Atlantic Standard Time / Greenland
- { 123, 86, 2046 }, // UTC / Greenland
- { 20, 38, 2067 }, // Canada Central Standard Time / Canada
- { 15, 86, 2104 }, // Azores Standard Time / Greenland
- { 69, 145, 2125 }, // Morocco Standard Time / Morocco
- { 115, 219, 2143 }, // Turks And Caicos Standard Time / Turks And Caicos Islands
- { 50, 80, 2162 }, // Greenwich Standard Time / Gambia
- { 129, 42, 2176 }, // W. Central Africa Standard Time / Chad
- { 56, 105, 2192 }, // Israel Standard Time / Israel
- { 64, 8, 2207 }, // Magallanes Standard Time / Antarctica
- { 12, 13, 2225 }, // Aus Central W. Standard Time / Australia
- { 24, 155, 2241 }, // Central America Standard Time / Nicaragua
- { 102, 170, 2257 }, // Singapore Standard Time / Philippines
- { 134, 160, 2269 }, // West Pacific Standard Time / Northern Mariana Islands
- { 43, 64, 2284 }, // Egypt Standard Time / Egypt
- { 88, 21, 2297 }, // Romance Standard Time / Belgium
- { 76, 8, 2313 }, // New Zealand Standard Time / Antarctica
- { 51, 177, 2332 }, // GTB Standard Time / Romania
- { 103, 0, 2349 }, // South Africa Standard Time / AnyCountry
- { 41, 225, 2359 }, // Eastern Standard Time / United States
- { 129, 23, 2516 }, // W. Central Africa Standard Time / Benin
- { 79, 178, 2534 }, // North Asia East Standard Time / Russia
- { 116, 143, 2547 }, // Ulaanbaatar Standard Time / Mongolia
- { 130, 14, 2580 }, // W. Europe Standard Time / Austria
- { 41, 38, 2594 }, // Eastern Standard Time / Canada
- { 95, 255, 2699 }, // SA Western Standard Time / Bonaire
- { 124, 149, 2718 }, // UTC+12 / Nauru
- { 134, 8, 2732 }, // West Pacific Standard Time / Antarctica
- { 63, 178, 2758 }, // Magadan Standard Time / Russia
- { 130, 161, 2771 }, // W. Europe Standard Time / Norway
- { 110, 0, 2783 }, // Tokyo Standard Time / AnyCountry
- { 24, 63, 2793 }, // Central America Standard Time / Ecuador
- { 103, 35, 2811 }, // South Africa Standard Time / Burundi
- { 10, 38, 2828 }, // Atlantic Standard Time / Canada
- { 29, 0, 2896 }, // Central Pacific Standard Time / AnyCountry
- { 95, 87, 2907 }, // SA Western Standard Time / Grenada
- { 29, 153, 2923 }, // Central Pacific Standard Time / New Caledonia
- { 42, 139, 2938 }, // Eastern Standard Time (Mexico) / Mexico
- { 2, 225, 2953 }, // Alaskan Standard Time / United States
- { 49, 86, 3029 }, // Greenland Standard Time / Greenland
- { 50, 92, 3045 }, // Greenwich Standard Time / Guinea Bissau
- { 130, 184, 3059 }, // W. Europe Standard Time / San Marino
- { 27, 98, 3077 }, // Central Europe Standard Time / Hungary
- { 24, 96, 3093 }, // Central America Standard Time / Honduras
- { 62, 13, 3113 }, // Lord Howe Standard Time / Australia
- { 36, 0, 3133 }, // E. Africa Standard Time / AnyCountry
- { 129, 79, 3143 }, // W. Central Africa Standard Time / Gabon
- { 95, 182, 3161 }, // SA Western Standard Time / Saint Vincent And The Grenadines
- { 48, 224, 3180 }, // GMT Standard Time / United Kingdom
- { 68, 227, 3194 }, // Montevideo Standard Time / Uruguay
- { 124, 0, 3213 }, // UTC+12 / AnyCountry
- { 130, 230, 3224 }, // W. Europe Standard Time / Vatican City State
- { 50, 99, 3239 }, // Greenwich Standard Time / Iceland
- { 34, 55, 3258 }, // Cuba Standard Time / Cuba
- { 41, 16, 3273 }, // Eastern Standard Time / Bahamas
- { 122, 196, 3288 }, // UTC-02 / South Georgia And The South Sandwich Islands
- { 24, 65, 3311 }, // Central America Standard Time / El Salvador
- { 31, 225, 3331 }, // Central Standard Time / United States
- { 95, 0, 3499 }, // SA Western Standard Time / AnyCountry
- { 94, 166, 3509 }, // SA Pacific Standard Time / Panama
- { 94, 47, 3524 }, // SA Pacific Standard Time / Colombia
- { 70, 139, 3539 }, // Mountain Standard Time (Mexico) / Mexico
- { 124, 220, 3574 }, // UTC+12 / Tuvalu
- { 130, 84, 3591 }, // W. Europe Standard Time / Gibraltar
- { 82, 178, 3608 }, // Omsk Standard Time / Russia
- { 60, 122, 3618 }, // Libya Standard Time / Libya
- { 25, 8, 3633 }, // Central Asia Standard Time / Antarctica
- { 95, 12, 3651 }, // SA Western Standard Time / Aruba
- { 67, 119, 3665 }, // Middle East Standard Time / Lebanon
- { 102, 0, 3677 }, // Singapore Standard Time / AnyCountry
- { 74, 148, 3687 }, // Namibia Standard Time / Namibia
- { 126, 231, 3703 }, // Venezuela Standard Time / Venezuela
- { 95, 234, 3719 }, // SA Western Standard Time / United States Virgin Islands
- { 21, 0, 3737 }, // Cape Verde Standard Time / AnyCountry
- { 95, 9, 3747 }, // SA Western Standard Time / Antigua And Barbuda
- { 94, 169, 3763 }, // SA Pacific Standard Time / Peru
- { 46, 248, 3776 }, // FLE Standard Time / Aland Islands
- { 50, 199, 3793 }, // Greenwich Standard Time / Saint Helena
- { 134, 140, 3812 }, // West Pacific Standard Time / Micronesia
- { 102, 190, 3825 }, // Singapore Standard Time / Singapore
- { 95, 61, 3840 }, // SA Western Standard Time / Dominican Republic
- { 103, 129, 3862 }, // South Africa Standard Time / Malawi
- { 30, 139, 3878 }, // Central Standard Time (Mexico) / Mexico
- { 102, 130, 3954 }, // Singapore Standard Time / Malaysia
- { 45, 72, 3985 }, // Fiji Standard Time / Fiji
- { 118, 225, 3998 }, // US Mountain Standard Time / United States
- { 17, 25, 4014 }, // Bangladesh Standard Time / Bhutan
- { 130, 133, 4027 }, // W. Europe Standard Time / Malta
- { 92, 178, 4040 }, // Russian Standard Time / Russia
- { 95, 135, 4084 }, // SA Western Standard Time / Martinique
- { 35, 0, 4103 }, // Dateline Standard Time / AnyCountry
- { 135, 178, 4114 }, // Yakutsk Standard Time / Russia
- { 1, 1, 4141 }, // Afghanistan Standard Time / Afghanistan
- { 123, 0, 4152 }, // UTC / AnyCountry
- { 31, 139, 4168 }, // Central Standard Time / Mexico
- { 6, 0, 4186 }, // Arabian Standard Time / AnyCountry
- { 101, 45, 4196 }, // SE Asia Standard Time / Christmas Island
- { 15, 173, 4213 }, // Azores Standard Time / Portugal
- { 129, 0, 4229 }, // W. Central Africa Standard Time / AnyCountry
- { 17, 18, 4239 }, // Bangladesh Standard Time / Bangladesh
- { 31, 38, 4250 }, // Central Standard Time / Canada
- { 94, 0, 4325 }, // SA Pacific Standard Time / AnyCountry
- { 125, 213, 4335 }, // UTC+13 / Tokelau
- { 73, 178, 4351 }, // N. Central Asia Standard Time / Russia
- { 133, 165, 4368 }, // West Bank Standard Time / Palestinian Territories
- { 114, 217, 4390 }, // Turkey Standard Time / Turkey
- { 3, 225, 4406 }, // Aleutian Standard Time / United States
- { 101, 0, 4419 }, // SE Asia Standard Time / AnyCountry
- { 71, 225, 4429 }, // Mountain Standard Time / United States
- { 36, 69, 4458 }, // E. Africa Standard Time / Ethiopia
- { 130, 151, 4477 }, // W. Europe Standard Time / Netherlands
- { 95, 245, 4494 }, // SA Western Standard Time / Saint Martin
- { 48, 173, 4510 }, // GMT Standard Time / Portugal
- { 46, 124, 4541 }, // FLE Standard Time / Lithuania
- { 130, 82, 4556 }, // W. Europe Standard Time / Germany
- { 65, 77, 4586 }, // Marquesas Standard Time / French Polynesia
- { 80, 178, 4604 }, // North Asia Standard Time / Russia
- { 61, 112, 4639 }, // Line Islands Standard Time / Kiribati
- { 96, 200, 4658 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon
- { 48, 104, 4675 }, // GMT Standard Time / Ireland
- { 5, 186, 4689 }, // Arab Standard Time / Saudi Arabia
- { 83, 43, 4701 }, // Pacific SA Standard Time / Chile
- { 91, 178, 4718 }, // Russia Time Zone 11 / Russia
- { 36, 48, 4745 }, // E. Africa Standard Time / Comoros
- { 95, 152, 4759 }, // SA Western Standard Time / Cura Sao
- { 38, 141, 4775 }, // E. Europe Standard Time / Moldova
- { 24, 22, 4791 }, // Central America Standard Time / Belize
- { 103, 195, 4806 }, // South Africa Standard Time / South Africa
- { 127, 178, 4826 }, // Vladivostok Standard Time / Russia
- { 122, 0, 4857 }, // UTC-02 / AnyCountry
- { 106, 207, 4867 }, // Syria Standard Time / Syria
- { 93, 76, 4881 }, // SA Eastern Standard Time / French Guiana
- { 50, 136, 4897 }, // Greenwich Standard Time / Mauritania
- { 41, 0, 4915 }, // Eastern Standard Time / AnyCountry
- { 16, 30, 4923 }, // Bahia Standard Time / Brazil
- { 40, 43, 4937 }, // Easter Island Standard Time / Chile
- { 93, 0, 4952 }, // SA Eastern Standard Time / AnyCountry
- { 9, 178, 4962 }, // Astrakhan Standard Time / Russia
- { 95, 30, 4996 }, // SA Western Standard Time / Brazil
- { 18, 20, 5049 }, // Belarus Standard Time / Belarus
- { 95, 181, 5062 }, // SA Western Standard Time / Saint Lucia
- { 129, 6, 5079 }, // W. Central Africa Standard Time / Angola
- { 129, 157, 5093 }, // W. Central Africa Standard Time / Nigeria
- { 130, 5, 5106 }, // W. Europe Standard Time / Andorra
- { 58, 178, 5121 }, // Kaliningrad Standard Time / Russia
- { 71, 0, 5140 }, // Mountain Standard Time / AnyCountry
- { 95, 7, 5148 }, // SA Western Standard Time / Anguilla
- { 124, 235, 5165 }, // UTC+12 / Wallis And Futuna Islands
- { 6, 223, 5180 }, // Arabian Standard Time / United Arab Emirates
- { 94, 40, 5191 }, // SA Pacific Standard Time / Cayman Islands
- { 101, 211, 5206 }, // SE Asia Standard Time / Thailand
- { 29, 193, 5219 }, // Central Pacific Standard Time / Solomon Islands
- { 47, 81, 5239 }, // Georgian Standard Time / Georgia
- { 101, 36, 5252 }, // SE Asia Standard Time / Cambodia
- { 132, 228, 5268 }, // West Asia Standard Time / Uzbekistan
- { 51, 56, 5297 }, // GTB Standard Time / Cyprus
- { 95, 88, 5325 }, // SA Western Standard Time / Guadeloupe
- { 101, 232, 5344 }, // SE Asia Standard Time / Vietnam
- { 113, 178, 5356 }, // Transbaikal Standard Time / Russia
- { 50, 121, 5367 }, // Greenwich Standard Time / Liberia
- { 95, 233, 5383 }, // SA Western Standard Time / British Virgin Islands
- { 129, 49, 5399 }, // W. Central Africa Standard Time / Congo Kinshasa
- { 97, 178, 5415 }, // Sakhalin Standard Time / Russia
- { 124, 226, 5429 }, // UTC+12 / United States Minor Outlying Islands
- { 50, 83, 5442 }, // Greenwich Standard Time / Ghana
- { 76, 154, 5455 }, // New Zealand Standard Time / New Zealand
- { 23, 13, 5472 }, // Cen. Australia Standard Time / Australia
- { 53, 77, 5513 }, // Hawaiian Standard Time / French Polynesia
- { 50, 34, 5528 }, // Greenwich Standard Time / Burkina Faso
- { 132, 78, 5547 }, // West Asia Standard Time / French Southern Territories
- { 121, 0, 5564 }, // UTC-08 / AnyCountry
- { 27, 2, 5574 }, // Central Europe Standard Time / Albania
- { 107, 208, 5588 }, // Taipei Standard Time / Taiwan
- { 88, 58, 5600 }, // Romance Standard Time / Denmark
- { 36, 221, 5618 }, // E. Africa Standard Time / Uganda
- { 95, 19, 5633 }, // SA Western Standard Time / Barbados
- { 14, 15, 5650 }, // Azerbaijan Standard Time / Azerbaijan
- { 32, 97, 5660 }, // China Standard Time / Hong Kong
- { 110, 101, 5675 }, // Tokyo Standard Time / Indonesia
- { 53, 225, 5689 }, // Hawaiian Standard Time / United States
- { 36, 111, 5706 }, // E. Africa Standard Time / Kenya
- { 134, 89, 5721 }, // West Pacific Standard Time / Guam
- { 36, 254, 5734 }, // E. Africa Standard Time / South Sudan
- { 48, 71, 5746 }, // GMT Standard Time / Faroe Islands
- { 90, 178, 5762 }, // Russia Time Zone 10 / Russia
- { 119, 158, 5781 }, // UTC-11 / Niue
- { 129, 3, 5794 }, // W. Central Africa Standard Time / Algeria
- { 110, 62, 5809 }, // Tokyo Standard Time / East Timor
- { 93, 30, 5819 }, // SA Eastern Standard Time / Brazil
- { 27, 242, 5898 }, // Central Europe Standard Time / Montenegro
- { 129, 37, 5915 }, // W. Central Africa Standard Time / Cameroon
- { 101, 117, 5929 }, // SE Asia Standard Time / Laos
- { 85, 139, 5944 }, // Pacific Standard Time (Mexico) / Mexico
- { 50, 212, 5981 }, // Greenwich Standard Time / Togo
- { 46, 118, 5993 }, // FLE Standard Time / Latvia
- { 95, 38, 6005 }, // SA Western Standard Time / Canada
- { 132, 209, 6026 }, // West Asia Standard Time / Tajikistan
- { 77, 38, 6040 }, // Newfoundland Standard Time / Canada
- { 110, 108, 6057 }, // Tokyo Standard Time / Japan
- { 25, 0, 6068 }, // Central Asia Standard Time / AnyCountry
- { 28, 27, 6078 }, // Central European Standard Time / Bosnia And Herzegowina
- { 27, 191, 6094 }, // Central Europe Standard Time / Slovakia
- { 95, 93, 6112 }, // SA Western Standard Time / Guyana
- { 48, 197, 6127 }, // GMT Standard Time / Spain
- { 19, 167, 6143 }, // Bougainville Standard Time / Papua New Guinea
- { 5, 17, 6164 }, // Arab Standard Time / Bahrain
- { 24, 90, 6177 }, // Central America Standard Time / Guatemala
- { 95, 26, 6195 }, // SA Western Standard Time / Bolivia
- { 81, 113, 6210 }, // North Korea Standard Time / North Korea
- { 119, 4, 6225 }, // UTC-11 / American Samoa
- { 66, 176, 6243 }, // Mauritius Standard Time / Reunion
- { 103, 120, 6258 }, // South Africa Standard Time / Lesotho
- { 84, 0, 6272 }, // Pacific Standard Time / AnyCountry
- { 120, 0, 6280 }, // UTC-09 / AnyCountry
- { 129, 216, 6290 }, // W. Central Africa Standard Time / Tunisia
- { 99, 185, 6303 }, // Sao Tome Standard Time / Sao Tome And Principe
- { 100, 178, 6319 }, // Saratov Standard Time / Russia
- { 105, 201, 6334 }, // Sudan Standard Time / Sudan
- { 48, 252, 6350 }, // GMT Standard Time / Jersey
- { 29, 13, 6364 }, // Central Pacific Standard Time / Australia
- { 71, 139, 6385 }, // Mountain Standard Time / Mexico
- { 21, 39, 6401 }, // Cape Verde Standard Time / Cape Verde
- { 102, 101, 6421 }, // Singapore Standard Time / Indonesia
- { 27, 192, 6435 }, // Central Europe Standard Time / Slovenia
- { 48, 75, 6452 }, // GMT Standard Time / Guernsey
- { 132, 8, 6468 }, // West Asia Standard Time / Antarctica
- { 8, 10, 6486 }, // Argentina Standard Time / Argentina
- { 98, 183, 6759 }, // Samoa Standard Time / Samoa
- { 129, 41, 6772 }, // W. Central Africa Standard Time / Central African Republic
- { 111, 178, 6786 }, // Tomsk Standard Time / Russia
- { 110, 164, 6797 }, // Tokyo Standard Time / Palau
- { 11, 13, 6811 }, // AUS Central Standard Time / Australia
- { 121, 171, 6828 }, // UTC-08 / Pitcairn
- { 102, 32, 6845 }, // Singapore Standard Time / Brunei
- { 112, 214, 6857 }, // Tonga Standard Time / Tonga
- { 89, 178, 6875 }, // Russia Time Zone 3 / Russia
- { 128, 13, 6889 }, // W. Australia Standard Time / Australia
- { 28, 172, 6905 }, // Central European Standard Time / Poland
- { 72, 46, 6919 }, // Myanmar Standard Time / Cocos Islands
- { 66, 188, 6932 }, // Mauritius Standard Time / Seychelles
- { 84, 225, 6944 }, // Pacific Standard Time / United States
- { 54, 100, 6983 }, // India Standard Time / India
- { 50, 53, 6997 }, // Greenwich Standard Time / Ivory Coast
- { 24, 0, 7012 }, // Central America Standard Time / AnyCountry
- { 29, 229, 7022 }, // Central Pacific Standard Time / Vanuatu
- { 130, 125, 7036 }, // W. Europe Standard Time / Luxembourg
- { 50, 132, 7054 }, // Greenwich Standard Time / Mali
- { 103, 179, 7068 }, // South Africa Standard Time / Rwanda
- { 5, 175, 7082 }, // Arab Standard Time / Qatar
- { 86, 163, 7093 }, // Pakistan Standard Time / Pakistan
- { 134, 0, 7106 }, // West Pacific Standard Time / AnyCountry
- { 36, 59, 7117 }, // E. Africa Standard Time / Djibouti
- { 44, 178, 7133 }, // Ekaterinburg Standard Time / Russia
- { 118, 38, 7152 }, // US Mountain Standard Time / Canada
- { 36, 138, 7209 }, // E. Africa Standard Time / Mayotte
- { 28, 127, 7224 }, // Central European Standard Time / Macedonia
- { 59, 114, 7238 }, // Korea Standard Time / South Korea
- { 93, 202, 7249 }, // SA Eastern Standard Time / Suriname
- { 130, 205, 7268 }, // W. Europe Standard Time / Sweden
- { 103, 49, 7285 }, // South Africa Standard Time / Congo Kinshasa
+ { 1, 1, 0 }, // Afghanistan Standard Time / Afghanistan
+ { 2, 225, 11 }, // Alaskan Standard Time / United States
+ { 3, 225, 106 }, // Aleutian Standard Time / United States
+ { 4, 178, 119 }, // Altai Standard Time / Russia
+ { 5, 17, 132 }, // Arab Standard Time / Bahrain
+ { 5, 115, 145 }, // Arab Standard Time / Kuwait
+ { 5, 175, 157 }, // Arab Standard Time / Qatar
+ { 5, 186, 168 }, // Arab Standard Time / Saudi Arabia
+ { 5, 237, 180 }, // Arab Standard Time / Yemen
+ { 6, 0, 190 }, // Arabian Standard Time / AnyCountry
+ { 6, 162, 200 }, // Arabian Standard Time / Oman
+ { 6, 223, 212 }, // Arabian Standard Time / United Arab Emirates
+ { 7, 103, 223 }, // Arabic Standard Time / Iraq
+ { 8, 10, 236 }, // Argentina Standard Time / Argentina
+ { 9, 178, 509 }, // Astrakhan Standard Time / Russia
+ { 10, 24, 543 }, // Atlantic Standard Time / Bermuda
+ { 10, 38, 560 }, // Atlantic Standard Time / Canada
+ { 10, 86, 628 }, // Atlantic Standard Time / Greenland
+ { 11, 13, 642 }, // AUS Central Standard Time / Australia
+ { 12, 13, 659 }, // Aus Central W. Standard Time / Australia
+ { 13, 13, 675 }, // AUS Eastern Standard Time / Australia
+ { 14, 15, 712 }, // Azerbaijan Standard Time / Azerbaijan
+ { 15, 86, 722 }, // Azores Standard Time / Greenland
+ { 15, 173, 743 }, // Azores Standard Time / Portugal
+ { 16, 30, 759 }, // Bahia Standard Time / Brazil
+ { 17, 18, 773 }, // Bangladesh Standard Time / Bangladesh
+ { 17, 25, 784 }, // Bangladesh Standard Time / Bhutan
+ { 18, 20, 797 }, // Belarus Standard Time / Belarus
+ { 19, 167, 810 }, // Bougainville Standard Time / Papua New Guinea
+ { 20, 38, 831 }, // Canada Central Standard Time / Canada
+ { 21, 0, 868 }, // Cape Verde Standard Time / AnyCountry
+ { 21, 39, 878 }, // Cape Verde Standard Time / Cape Verde
+ { 22, 11, 898 }, // Caucasus Standard Time / Armenia
+ { 23, 13, 911 }, // Cen. Australia Standard Time / Australia
+ { 24, 0, 952 }, // Central America Standard Time / AnyCountry
+ { 24, 22, 962 }, // Central America Standard Time / Belize
+ { 24, 52, 977 }, // Central America Standard Time / Costa Rica
+ { 24, 63, 996 }, // Central America Standard Time / Ecuador
+ { 24, 65, 1014 }, // Central America Standard Time / El Salvador
+ { 24, 90, 1034 }, // Central America Standard Time / Guatemala
+ { 24, 96, 1052 }, // Central America Standard Time / Honduras
+ { 24, 155, 1072 }, // Central America Standard Time / Nicaragua
+ { 25, 0, 1088 }, // Central Asia Standard Time / AnyCountry
+ { 25, 8, 1098 }, // Central Asia Standard Time / Antarctica
+ { 25, 31, 1116 }, // Central Asia Standard Time / British Indian Ocean Territory
+ { 25, 44, 1130 }, // Central Asia Standard Time / China
+ { 25, 110, 1142 }, // Central Asia Standard Time / Kazakhstan
+ { 25, 116, 1168 }, // Central Asia Standard Time / Kyrgyzstan
+ { 26, 30, 1181 }, // Central Brazilian Standard Time / Brazil
+ { 27, 2, 1217 }, // Central Europe Standard Time / Albania
+ { 27, 57, 1231 }, // Central Europe Standard Time / Czech Republic
+ { 27, 98, 1245 }, // Central Europe Standard Time / Hungary
+ { 27, 191, 1261 }, // Central Europe Standard Time / Slovakia
+ { 27, 192, 1279 }, // Central Europe Standard Time / Slovenia
+ { 27, 242, 1296 }, // Central Europe Standard Time / Montenegro
+ { 27, 243, 1313 }, // Central Europe Standard Time / Serbia
+ { 28, 27, 1329 }, // Central European Standard Time / Bosnia And Herzegowina
+ { 28, 54, 1345 }, // Central European Standard Time / Croatia
+ { 28, 127, 1359 }, // Central European Standard Time / Macedonia
+ { 28, 172, 1373 }, // Central European Standard Time / Poland
+ { 29, 0, 1387 }, // Central Pacific Standard Time / AnyCountry
+ { 29, 13, 1398 }, // Central Pacific Standard Time / Australia
+ { 29, 140, 1419 }, // Central Pacific Standard Time / Micronesia
+ { 29, 153, 1449 }, // Central Pacific Standard Time / New Caledonia
+ { 29, 193, 1464 }, // Central Pacific Standard Time / Solomon Islands
+ { 29, 229, 1484 }, // Central Pacific Standard Time / Vanuatu
+ { 30, 139, 1498 }, // Central Standard Time (Mexico) / Mexico
+ { 31, 0, 1574 }, // Central Standard Time / AnyCountry
+ { 31, 38, 1582 }, // Central Standard Time / Canada
+ { 31, 139, 1657 }, // Central Standard Time / Mexico
+ { 31, 225, 1675 }, // Central Standard Time / United States
+ { 32, 44, 1843 }, // China Standard Time / China
+ { 32, 97, 1857 }, // China Standard Time / Hong Kong
+ { 32, 126, 1872 }, // China Standard Time / Macau
+ { 33, 154, 1883 }, // Chatham Islands Standard Time / New Zealand
+ { 34, 55, 1899 }, // Cuba Standard Time / Cuba
+ { 35, 0, 1914 }, // Dateline Standard Time / AnyCountry
+ { 36, 0, 1925 }, // E. Africa Standard Time / AnyCountry
+ { 36, 8, 1935 }, // E. Africa Standard Time / Antarctica
+ { 36, 48, 1952 }, // E. Africa Standard Time / Comoros
+ { 36, 59, 1966 }, // E. Africa Standard Time / Djibouti
+ { 36, 67, 1982 }, // E. Africa Standard Time / Eritrea
+ { 36, 69, 1996 }, // E. Africa Standard Time / Ethiopia
+ { 36, 111, 2015 }, // E. Africa Standard Time / Kenya
+ { 36, 128, 2030 }, // E. Africa Standard Time / Madagascar
+ { 36, 138, 2050 }, // E. Africa Standard Time / Mayotte
+ { 36, 194, 2065 }, // E. Africa Standard Time / Somalia
+ { 36, 210, 2082 }, // E. Africa Standard Time / Tanzania
+ { 36, 221, 2103 }, // E. Africa Standard Time / Uganda
+ { 36, 254, 2118 }, // E. Africa Standard Time / South Sudan
+ { 37, 13, 2130 }, // E. Australia Standard Time / Australia
+ { 38, 141, 2168 }, // E. Europe Standard Time / Moldova
+ { 39, 30, 2184 }, // E. South America Standard Time / Brazil
+ { 40, 43, 2202 }, // Easter Island Standard Time / Chile
+ { 41, 0, 2217 }, // Eastern Standard Time / AnyCountry
+ { 41, 16, 2225 }, // Eastern Standard Time / Bahamas
+ { 41, 38, 2240 }, // Eastern Standard Time / Canada
+ { 41, 225, 2345 }, // Eastern Standard Time / United States
+ { 42, 139, 2502 }, // Eastern Standard Time (Mexico) / Mexico
+ { 43, 64, 2517 }, // Egypt Standard Time / Egypt
+ { 44, 178, 2530 }, // Ekaterinburg Standard Time / Russia
+ { 45, 72, 2549 }, // Fiji Standard Time / Fiji
+ { 46, 33, 2562 }, // FLE Standard Time / Bulgaria
+ { 46, 68, 2575 }, // FLE Standard Time / Estonia
+ { 46, 73, 2590 }, // FLE Standard Time / Finland
+ { 46, 118, 2606 }, // FLE Standard Time / Latvia
+ { 46, 124, 2618 }, // FLE Standard Time / Lithuania
+ { 46, 222, 2633 }, // FLE Standard Time / Ukraine
+ { 46, 248, 2679 }, // FLE Standard Time / Aland Islands
+ { 47, 81, 2696 }, // Georgian Standard Time / Georgia
+ { 48, 71, 2709 }, // GMT Standard Time / Faroe Islands
+ { 48, 75, 2725 }, // GMT Standard Time / Guernsey
+ { 48, 104, 2741 }, // GMT Standard Time / Ireland
+ { 48, 173, 2755 }, // GMT Standard Time / Portugal
+ { 48, 197, 2786 }, // GMT Standard Time / Spain
+ { 48, 224, 2802 }, // GMT Standard Time / United Kingdom
+ { 48, 251, 2816 }, // GMT Standard Time / Isle Of Man
+ { 48, 252, 2835 }, // GMT Standard Time / Jersey
+ { 49, 86, 2849 }, // Greenland Standard Time / Greenland
+ { 50, 34, 2865 }, // Greenwich Standard Time / Burkina Faso
+ { 50, 53, 2884 }, // Greenwich Standard Time / Ivory Coast
+ { 50, 80, 2899 }, // Greenwich Standard Time / Gambia
+ { 50, 83, 2913 }, // Greenwich Standard Time / Ghana
+ { 50, 91, 2926 }, // Greenwich Standard Time / Guinea
+ { 50, 92, 2941 }, // Greenwich Standard Time / Guinea Bissau
+ { 50, 99, 2955 }, // Greenwich Standard Time / Iceland
+ { 50, 121, 2974 }, // Greenwich Standard Time / Liberia
+ { 50, 132, 2990 }, // Greenwich Standard Time / Mali
+ { 50, 136, 3004 }, // Greenwich Standard Time / Mauritania
+ { 50, 187, 3022 }, // Greenwich Standard Time / Senegal
+ { 50, 189, 3035 }, // Greenwich Standard Time / Sierra Leone
+ { 50, 199, 3051 }, // Greenwich Standard Time / Saint Helena
+ { 50, 212, 3070 }, // Greenwich Standard Time / Togo
+ { 51, 56, 3082 }, // GTB Standard Time / Cyprus
+ { 51, 85, 3110 }, // GTB Standard Time / Greece
+ { 51, 177, 3124 }, // GTB Standard Time / Romania
+ { 52, 94, 3141 }, // Haiti Standard Time / Haiti
+ { 53, 0, 3164 }, // Hawaiian Standard Time / AnyCountry
+ { 53, 51, 3175 }, // Hawaiian Standard Time / Cook Islands
+ { 53, 77, 3193 }, // Hawaiian Standard Time / French Polynesia
+ { 53, 225, 3208 }, // Hawaiian Standard Time / United States
+ { 53, 226, 3225 }, // Hawaiian Standard Time / United States Minor Outlying Islands
+ { 54, 100, 3242 }, // India Standard Time / India
+ { 55, 102, 3256 }, // Iran Standard Time / Iran
+ { 56, 105, 3268 }, // Israel Standard Time / Israel
+ { 57, 109, 3283 }, // Jordan Standard Time / Jordan
+ { 58, 178, 3294 }, // Kaliningrad Standard Time / Russia
+ { 59, 114, 3313 }, // Korea Standard Time / South Korea
+ { 60, 122, 3324 }, // Libya Standard Time / Libya
+ { 61, 0, 3339 }, // Line Islands Standard Time / AnyCountry
+ { 61, 112, 3350 }, // Line Islands Standard Time / Kiribati
+ { 62, 13, 3369 }, // Lord Howe Standard Time / Australia
+ { 63, 178, 3389 }, // Magadan Standard Time / Russia
+ { 64, 43, 3402 }, // Magallanes Standard Time / Chile
+ { 65, 77, 3423 }, // Marquesas Standard Time / French Polynesia
+ { 66, 137, 3441 }, // Mauritius Standard Time / Mauritius
+ { 66, 176, 3458 }, // Mauritius Standard Time / Reunion
+ { 66, 188, 3473 }, // Mauritius Standard Time / Seychelles
+ { 67, 119, 3485 }, // Middle East Standard Time / Lebanon
+ { 68, 227, 3497 }, // Montevideo Standard Time / Uruguay
+ { 69, 145, 3516 }, // Morocco Standard Time / Morocco
+ { 69, 236, 3534 }, // Morocco Standard Time / Western Sahara
+ { 70, 139, 3550 }, // Mountain Standard Time (Mexico) / Mexico
+ { 71, 0, 3585 }, // Mountain Standard Time / AnyCountry
+ { 71, 38, 3593 }, // Mountain Standard Time / Canada
+ { 71, 139, 3667 }, // Mountain Standard Time / Mexico
+ { 71, 225, 3683 }, // Mountain Standard Time / United States
+ { 72, 46, 3712 }, // Myanmar Standard Time / Cocos Islands
+ { 72, 147, 3725 }, // Myanmar Standard Time / Myanmar
+ { 73, 178, 3738 }, // N. Central Asia Standard Time / Russia
+ { 74, 148, 3755 }, // Namibia Standard Time / Namibia
+ { 75, 150, 3771 }, // Nepal Standard Time / Nepal
+ { 76, 8, 3785 }, // New Zealand Standard Time / Antarctica
+ { 76, 154, 3804 }, // New Zealand Standard Time / New Zealand
+ { 77, 38, 3821 }, // Newfoundland Standard Time / Canada
+ { 78, 159, 3838 }, // Norfolk Standard Time / Norfolk Island
+ { 79, 178, 3854 }, // North Asia East Standard Time / Russia
+ { 80, 178, 3867 }, // North Asia Standard Time / Russia
+ { 81, 113, 3902 }, // North Korea Standard Time / North Korea
+ { 82, 178, 3917 }, // Omsk Standard Time / Russia
+ { 83, 43, 3927 }, // Pacific SA Standard Time / Chile
+ { 84, 0, 3944 }, // Pacific Standard Time / AnyCountry
+ { 84, 38, 3952 }, // Pacific Standard Time / Canada
+ { 84, 225, 4004 }, // Pacific Standard Time / United States
+ { 85, 139, 4024 }, // Pacific Standard Time (Mexico) / Mexico
+ { 86, 163, 4061 }, // Pakistan Standard Time / Pakistan
+ { 87, 168, 4074 }, // Paraguay Standard Time / Paraguay
+ { 88, 110, 4091 }, // Qyzylorda Standard Time / Kazakhstan
+ { 89, 21, 4106 }, // Romance Standard Time / Belgium
+ { 89, 58, 4122 }, // Romance Standard Time / Denmark
+ { 89, 74, 4140 }, // Romance Standard Time / France
+ { 89, 197, 4153 }, // Romance Standard Time / Spain
+ { 90, 178, 4180 }, // Russia Time Zone 3 / Russia
+ { 91, 178, 4194 }, // Russia Time Zone 10 / Russia
+ { 92, 178, 4213 }, // Russia Time Zone 11 / Russia
+ { 93, 178, 4240 }, // Russian Standard Time / Russia
+ { 93, 222, 4267 }, // Russian Standard Time / Ukraine
+ { 94, 0, 4285 }, // SA Eastern Standard Time / AnyCountry
+ { 94, 8, 4295 }, // SA Eastern Standard Time / Antarctica
+ { 94, 30, 4332 }, // SA Eastern Standard Time / Brazil
+ { 94, 70, 4411 }, // SA Eastern Standard Time / Falkland Islands
+ { 94, 76, 4428 }, // SA Eastern Standard Time / French Guiana
+ { 94, 202, 4444 }, // SA Eastern Standard Time / Suriname
+ { 95, 0, 4463 }, // SA Pacific Standard Time / AnyCountry
+ { 95, 30, 4473 }, // SA Pacific Standard Time / Brazil
+ { 95, 38, 4509 }, // SA Pacific Standard Time / Canada
+ { 95, 40, 4531 }, // SA Pacific Standard Time / Cayman Islands
+ { 95, 47, 4546 }, // SA Pacific Standard Time / Colombia
+ { 95, 63, 4561 }, // SA Pacific Standard Time / Ecuador
+ { 95, 107, 4579 }, // SA Pacific Standard Time / Jamaica
+ { 95, 166, 4595 }, // SA Pacific Standard Time / Panama
+ { 95, 169, 4610 }, // SA Pacific Standard Time / Peru
+ { 96, 0, 4623 }, // SA Western Standard Time / AnyCountry
+ { 96, 7, 4633 }, // SA Western Standard Time / Anguilla
+ { 96, 9, 4650 }, // SA Western Standard Time / Antigua And Barbuda
+ { 96, 12, 4666 }, // SA Western Standard Time / Aruba
+ { 96, 19, 4680 }, // SA Western Standard Time / Barbados
+ { 96, 26, 4697 }, // SA Western Standard Time / Bolivia
+ { 96, 30, 4712 }, // SA Western Standard Time / Brazil
+ { 96, 38, 4765 }, // SA Western Standard Time / Canada
+ { 96, 60, 4786 }, // SA Western Standard Time / Dominica
+ { 96, 61, 4803 }, // SA Western Standard Time / Dominican Republic
+ { 96, 87, 4825 }, // SA Western Standard Time / Grenada
+ { 96, 88, 4841 }, // SA Western Standard Time / Guadeloupe
+ { 96, 93, 4860 }, // SA Western Standard Time / Guyana
+ { 96, 135, 4875 }, // SA Western Standard Time / Martinique
+ { 96, 144, 4894 }, // SA Western Standard Time / Montserrat
+ { 96, 152, 4913 }, // SA Western Standard Time / Cura Sao
+ { 96, 174, 4929 }, // SA Western Standard Time / Puerto Rico
+ { 96, 180, 4949 }, // SA Western Standard Time / Saint Kitts And Nevis
+ { 96, 181, 4966 }, // SA Western Standard Time / Saint Lucia
+ { 96, 182, 4983 }, // SA Western Standard Time / Saint Vincent And The Grenadines
+ { 96, 215, 5002 }, // SA Western Standard Time / Trinidad And Tobago
+ { 96, 233, 5024 }, // SA Western Standard Time / British Virgin Islands
+ { 96, 234, 5040 }, // SA Western Standard Time / United States Virgin Islands
+ { 96, 244, 5058 }, // SA Western Standard Time / Saint Barthelemy
+ { 96, 245, 5080 }, // SA Western Standard Time / Saint Martin
+ { 96, 255, 5096 }, // SA Western Standard Time / Bonaire
+ { 96, 256, 5115 }, // SA Western Standard Time / Sint Maarten
+ { 97, 200, 5137 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon
+ { 98, 178, 5154 }, // Sakhalin Standard Time / Russia
+ { 99, 183, 5168 }, // Samoa Standard Time / Samoa
+ { 100, 185, 5181 }, // Sao Tome Standard Time / Sao Tome And Principe
+ { 101, 178, 5197 }, // Saratov Standard Time / Russia
+ { 102, 0, 5212 }, // SE Asia Standard Time / AnyCountry
+ { 102, 8, 5222 }, // SE Asia Standard Time / Antarctica
+ { 102, 36, 5239 }, // SE Asia Standard Time / Cambodia
+ { 102, 45, 5255 }, // SE Asia Standard Time / Christmas Island
+ { 102, 101, 5272 }, // SE Asia Standard Time / Indonesia
+ { 102, 117, 5300 }, // SE Asia Standard Time / Laos
+ { 102, 211, 5315 }, // SE Asia Standard Time / Thailand
+ { 102, 232, 5328 }, // SE Asia Standard Time / Vietnam
+ { 103, 0, 5340 }, // Singapore Standard Time / AnyCountry
+ { 103, 8, 5350 }, // Singapore Standard Time / Antarctica
+ { 103, 32, 5367 }, // Singapore Standard Time / Brunei
+ { 103, 101, 5379 }, // Singapore Standard Time / Indonesia
+ { 103, 130, 5393 }, // Singapore Standard Time / Malaysia
+ { 103, 170, 5424 }, // Singapore Standard Time / Philippines
+ { 103, 190, 5436 }, // Singapore Standard Time / Singapore
+ { 104, 0, 5451 }, // South Africa Standard Time / AnyCountry
+ { 104, 28, 5461 }, // South Africa Standard Time / Botswana
+ { 104, 35, 5477 }, // South Africa Standard Time / Burundi
+ { 104, 49, 5494 }, // South Africa Standard Time / Congo Kinshasa
+ { 104, 120, 5512 }, // South Africa Standard Time / Lesotho
+ { 104, 129, 5526 }, // South Africa Standard Time / Malawi
+ { 104, 146, 5542 }, // South Africa Standard Time / Mozambique
+ { 104, 179, 5556 }, // South Africa Standard Time / Rwanda
+ { 104, 195, 5570 }, // South Africa Standard Time / South Africa
+ { 104, 204, 5590 }, // South Africa Standard Time / Swaziland
+ { 104, 239, 5605 }, // South Africa Standard Time / Zambia
+ { 104, 240, 5619 }, // South Africa Standard Time / Zimbabwe
+ { 105, 198, 5633 }, // Sri Lanka Standard Time / Sri Lanka
+ { 106, 201, 5646 }, // Sudan Standard Time / Sudan
+ { 107, 207, 5662 }, // Syria Standard Time / Syria
+ { 108, 208, 5676 }, // Taipei Standard Time / Taiwan
+ { 109, 13, 5688 }, // Tasmania Standard Time / Australia
+ { 110, 30, 5722 }, // Tocantins Standard Time / Brazil
+ { 111, 0, 5740 }, // Tokyo Standard Time / AnyCountry
+ { 111, 62, 5750 }, // Tokyo Standard Time / East Timor
+ { 111, 101, 5760 }, // Tokyo Standard Time / Indonesia
+ { 111, 108, 5774 }, // Tokyo Standard Time / Japan
+ { 111, 164, 5785 }, // Tokyo Standard Time / Palau
+ { 112, 178, 5799 }, // Tomsk Standard Time / Russia
+ { 113, 214, 5810 }, // Tonga Standard Time / Tonga
+ { 114, 178, 5828 }, // Transbaikal Standard Time / Russia
+ { 115, 217, 5839 }, // Turkey Standard Time / Turkey
+ { 116, 219, 5855 }, // Turks And Caicos Standard Time / Turks And Caicos Islands
+ { 117, 143, 5874 }, // Ulaanbaatar Standard Time / Mongolia
+ { 118, 225, 5907 }, // US Eastern Standard Time / United States
+ { 119, 0, 5974 }, // US Mountain Standard Time / AnyCountry
+ { 119, 38, 5984 }, // US Mountain Standard Time / Canada
+ { 119, 139, 6041 }, // US Mountain Standard Time / Mexico
+ { 119, 225, 6060 }, // US Mountain Standard Time / United States
+ { 120, 0, 6076 }, // UTC-11 / AnyCountry
+ { 120, 4, 6087 }, // UTC-11 / American Samoa
+ { 120, 158, 6105 }, // UTC-11 / Niue
+ { 120, 226, 6118 }, // UTC-11 / United States Minor Outlying Islands
+ { 121, 0, 6133 }, // UTC-09 / AnyCountry
+ { 121, 77, 6143 }, // UTC-09 / French Polynesia
+ { 122, 0, 6159 }, // UTC-08 / AnyCountry
+ { 122, 171, 6169 }, // UTC-08 / Pitcairn
+ { 123, 0, 6186 }, // UTC-02 / AnyCountry
+ { 123, 30, 6196 }, // UTC-02 / Brazil
+ { 123, 196, 6212 }, // UTC-02 / South Georgia And The South Sandwich Islands
+ { 124, 0, 6235 }, // UTC / AnyCountry
+ { 124, 86, 6251 }, // UTC / Greenland
+ { 125, 0, 6272 }, // UTC+12 / AnyCountry
+ { 125, 112, 6283 }, // UTC+12 / Kiribati
+ { 125, 134, 6298 }, // UTC+12 / Marshall Islands
+ { 125, 149, 6331 }, // UTC+12 / Nauru
+ { 125, 220, 6345 }, // UTC+12 / Tuvalu
+ { 125, 226, 6362 }, // UTC+12 / United States Minor Outlying Islands
+ { 125, 235, 6375 }, // UTC+12 / Wallis And Futuna Islands
+ { 126, 0, 6390 }, // UTC+13 / AnyCountry
+ { 126, 112, 6401 }, // UTC+13 / Kiribati
+ { 126, 213, 6419 }, // UTC+13 / Tokelau
+ { 127, 231, 6435 }, // Venezuela Standard Time / Venezuela
+ { 128, 178, 6451 }, // Vladivostok Standard Time / Russia
+ { 129, 178, 6482 }, // Volgograd Standard Time / Russia
+ { 130, 13, 6499 }, // W. Australia Standard Time / Australia
+ { 131, 0, 6515 }, // W. Central Africa Standard Time / AnyCountry
+ { 131, 3, 6525 }, // W. Central Africa Standard Time / Algeria
+ { 131, 6, 6540 }, // W. Central Africa Standard Time / Angola
+ { 131, 23, 6554 }, // W. Central Africa Standard Time / Benin
+ { 131, 37, 6572 }, // W. Central Africa Standard Time / Cameroon
+ { 131, 41, 6586 }, // W. Central Africa Standard Time / Central African Republic
+ { 131, 42, 6600 }, // W. Central Africa Standard Time / Chad
+ { 131, 49, 6616 }, // W. Central Africa Standard Time / Congo Kinshasa
+ { 131, 50, 6632 }, // W. Central Africa Standard Time / Congo Brazzaville
+ { 131, 66, 6651 }, // W. Central Africa Standard Time / Equatorial Guinea
+ { 131, 79, 6665 }, // W. Central Africa Standard Time / Gabon
+ { 131, 156, 6683 }, // W. Central Africa Standard Time / Niger
+ { 131, 157, 6697 }, // W. Central Africa Standard Time / Nigeria
+ { 131, 216, 6710 }, // W. Central Africa Standard Time / Tunisia
+ { 132, 5, 6723 }, // W. Europe Standard Time / Andorra
+ { 132, 14, 6738 }, // W. Europe Standard Time / Austria
+ { 132, 82, 6752 }, // W. Europe Standard Time / Germany
+ { 132, 84, 6782 }, // W. Europe Standard Time / Gibraltar
+ { 132, 106, 6799 }, // W. Europe Standard Time / Italy
+ { 132, 123, 6811 }, // W. Europe Standard Time / Liechtenstein
+ { 132, 125, 6824 }, // W. Europe Standard Time / Luxembourg
+ { 132, 133, 6842 }, // W. Europe Standard Time / Malta
+ { 132, 142, 6855 }, // W. Europe Standard Time / Monaco
+ { 132, 151, 6869 }, // W. Europe Standard Time / Netherlands
+ { 132, 161, 6886 }, // W. Europe Standard Time / Norway
+ { 132, 184, 6898 }, // W. Europe Standard Time / San Marino
+ { 132, 203, 6916 }, // W. Europe Standard Time / Svalbard And Jan Mayen Islands
+ { 132, 205, 6936 }, // W. Europe Standard Time / Sweden
+ { 132, 206, 6953 }, // W. Europe Standard Time / Switzerland
+ { 132, 230, 6967 }, // W. Europe Standard Time / Vatican City State
+ { 133, 143, 6982 }, // W. Mongolia Standard Time / Mongolia
+ { 134, 0, 6992 }, // West Asia Standard Time / AnyCountry
+ { 134, 8, 7002 }, // West Asia Standard Time / Antarctica
+ { 134, 78, 7020 }, // West Asia Standard Time / French Southern Territories
+ { 134, 110, 7037 }, // West Asia Standard Time / Kazakhstan
+ { 134, 131, 7082 }, // West Asia Standard Time / Maldives
+ { 134, 209, 7098 }, // West Asia Standard Time / Tajikistan
+ { 134, 218, 7112 }, // West Asia Standard Time / Turkmenistan
+ { 134, 228, 7126 }, // West Asia Standard Time / Uzbekistan
+ { 135, 165, 7155 }, // West Bank Standard Time / Palestinian Territories
+ { 136, 0, 7177 }, // West Pacific Standard Time / AnyCountry
+ { 136, 8, 7188 }, // West Pacific Standard Time / Antarctica
+ { 136, 89, 7214 }, // West Pacific Standard Time / Guam
+ { 136, 140, 7227 }, // West Pacific Standard Time / Micronesia
+ { 136, 160, 7240 }, // West Pacific Standard Time / Northern Mariana Islands
+ { 136, 167, 7255 }, // West Pacific Standard Time / Papua New Guinea
+ { 137, 178, 7276 }, // Yakutsk Standard Time / Russia
{ 0, 0, 0 } // Trailing zeroes
};
// Windows ID Key, Windows ID Index, IANA ID Index, UTC Offset
static const QWindowsData windowsDataTable[] = {
- { 1, 0, 4141, 16200 }, // Afghanistan Standard Time
+ { 1, 0, 0, 16200 }, // Afghanistan Standard Time
{ 2, 26, 7303,-32400 }, // Alaskan Standard Time
- { 3, 48, 4406,-36000 }, // Aleutian Standard Time
- { 4, 71, 325, 25200 }, // Altai Standard Time
- { 5, 91, 4689, 10800 }, // Arab Standard Time
- { 6, 110, 5180, 14400 }, // Arabian Standard Time
- { 7, 132, 953, 10800 }, // Arabic Standard Time
+ { 3, 48, 106,-36000 }, // Aleutian Standard Time
+ { 4, 71, 119, 25200 }, // Altai Standard Time
+ { 5, 91, 168, 10800 }, // Arab Standard Time
+ { 6, 110, 212, 14400 }, // Arabian Standard Time
+ { 7, 132, 223, 10800 }, // Arabic Standard Time
{ 8, 153, 7321,-10800 }, // Argentina Standard Time
{ 9, 177, 7342, 14400 }, // Astrakhan Standard Time
{ 10, 201, 7359,-14400 }, // Atlantic Standard Time
- { 11, 224, 6811, 34200 }, // AUS Central Standard Time
- { 12, 250, 2225, 31500 }, // Aus Central W. Standard Time
+ { 11, 224, 642, 34200 }, // AUS Central Standard Time
+ { 12, 250, 659, 31500 }, // Aus Central W. Standard Time
{ 13, 279, 7375, 36000 }, // AUS Eastern Standard Time
- { 14, 305, 5650, 14400 }, // Azerbaijan Standard Time
- { 15, 330, 4213, -3600 }, // Azores Standard Time
- { 16, 351, 4923,-10800 }, // Bahia Standard Time
- { 17, 371, 4239, 21600 }, // Bangladesh Standard Time
- { 18, 396, 5049, 10800 }, // Belarus Standard Time
- { 19, 418, 6143, 39600 }, // Bougainville Standard Time
+ { 14, 305, 712, 14400 }, // Azerbaijan Standard Time
+ { 15, 330, 743, -3600 }, // Azores Standard Time
+ { 16, 351, 759,-10800 }, // Bahia Standard Time
+ { 17, 371, 773, 21600 }, // Bangladesh Standard Time
+ { 18, 396, 797, 10800 }, // Belarus Standard Time
+ { 19, 418, 810, 39600 }, // Bougainville Standard Time
{ 20, 445, 7392,-21600 }, // Canada Central Standard Time
- { 21, 474, 6401, -3600 }, // Cape Verde Standard Time
- { 22, 499, 1138, 14400 }, // Caucasus Standard Time
+ { 21, 474, 878, -3600 }, // Cape Verde Standard Time
+ { 22, 499, 898, 14400 }, // Caucasus Standard Time
{ 23, 522, 7407, 34200 }, // Cen. Australia Standard Time
- { 24, 551, 6177,-21600 }, // Central America Standard Time
+ { 24, 551, 1034,-21600 }, // Central America Standard Time
{ 25, 581, 7426, 21600 }, // Central Asia Standard Time
{ 26, 608, 7438,-14400 }, // Central Brazilian Standard Time
- { 27, 640, 3077, 3600 }, // Central Europe Standard Time
- { 28, 669, 6905, 3600 }, // Central European Standard Time
- { 29, 700, 5219, 39600 }, // Central Pacific Standard Time
+ { 27, 640, 1245, 3600 }, // Central Europe Standard Time
+ { 28, 669, 1373, 3600 }, // Central European Standard Time
+ { 29, 700, 1464, 39600 }, // Central Pacific Standard Time
{ 30, 730, 7453,-21600 }, // Central Standard Time (Mexico)
{ 31, 761, 7473,-21600 }, // Central Standard Time
- { 32, 783, 48, 28800 }, // China Standard Time
- { 33, 803, 114, 45900 }, // Chatham Islands Standard Time
- { 34, 833, 3258,-18000 }, // Cuba Standard Time
- { 35, 852, 4103,-43200 }, // Dateline Standard Time
- { 36, 875, 5706, 10800 }, // E. Africa Standard Time
+ { 32, 783, 1843, 28800 }, // China Standard Time
+ { 33, 803, 1883, 45900 }, // Chatham Islands Standard Time
+ { 34, 833, 1899,-18000 }, // Cuba Standard Time
+ { 35, 852, 1914,-43200 }, // Dateline Standard Time
+ { 36, 875, 2015, 10800 }, // E. Africa Standard Time
{ 37, 899, 7489, 36000 }, // E. Australia Standard Time
- { 38, 926, 4775, 7200 }, // E. Europe Standard Time
- { 39, 950, 451,-10800 }, // E. South America Standard Time
- { 40, 981, 4937,-21600 }, // Easter Island Standard Time
+ { 38, 926, 2168, 7200 }, // E. Europe Standard Time
+ { 39, 950, 2184,-10800 }, // E. South America Standard Time
+ { 40, 981, 2202,-21600 }, // Easter Island Standard Time
{ 41, 1009, 7508,-18000 }, // Eastern Standard Time
- { 42, 1031, 2938,-18000 }, // Eastern Standard Time (Mexico)
- { 43, 1062, 2284, 7200 }, // Egypt Standard Time
- { 44, 1082, 7133, 18000 }, // Ekaterinburg Standard Time
- { 45, 1109, 3985, 43200 }, // Fiji Standard Time
+ { 42, 1031, 2502,-18000 }, // Eastern Standard Time (Mexico)
+ { 43, 1062, 2517, 7200 }, // Egypt Standard Time
+ { 44, 1082, 2530, 18000 }, // Ekaterinburg Standard Time
+ { 45, 1109, 2549, 43200 }, // Fiji Standard Time
{ 46, 1128, 7525, 7200 }, // FLE Standard Time
- { 47, 1146, 5239, 14400 }, // Georgian Standard Time
- { 48, 1169, 3180, 0 }, // GMT Standard Time
- { 49, 1187, 3029,-10800 }, // Greenland Standard Time
- { 50, 1211, 3239, 0 }, // Greenwich Standard Time
- { 51, 1235, 2332, 7200 }, // GTB Standard Time
- { 52, 1253, 25,-18000 }, // Haiti Standard Time
- { 53, 1273, 5689,-36000 }, // Hawaiian Standard Time
- { 54, 1296, 6983, 19800 }, // India Standard Time
- { 55, 1316, 1271, 12600 }, // Iran Standard Time
- { 56, 1335, 2192, 7200 }, // Israel Standard Time
- { 57, 1356, 1242, 7200 }, // Jordan Standard Time
- { 58, 1377, 5121, 7200 }, // Kaliningrad Standard Time
- { 59, 1403, 7238, 32400 }, // Korea Standard Time
- { 60, 1423, 3618, 7200 }, // Libya Standard Time
- { 61, 1443, 4639, 50400 }, // Line Islands Standard Time
- { 62, 1470, 3113, 37800 }, // Lord Howe Standard Time
- { 63, 1494, 2758, 36000 }, // Magadan Standard Time
- { 64, 1516, 1054,-10800 }, // Magallanes Standard Time
- { 65, 1541, 4586,-34200 }, // Marquesas Standard Time
- { 66, 1565, 1863, 14400 }, // Mauritius Standard Time
- { 67, 1589, 3665, 7200 }, // Middle East Standard Time
- { 68, 1615, 3194,-10800 }, // Montevideo Standard Time
- { 69, 1640, 2125, 0 }, // Morocco Standard Time
+ { 47, 1146, 2696, 14400 }, // Georgian Standard Time
+ { 48, 1169, 2802, 0 }, // GMT Standard Time
+ { 49, 1187, 2849,-10800 }, // Greenland Standard Time
+ { 50, 1211, 2955, 0 }, // Greenwich Standard Time
+ { 51, 1235, 3124, 7200 }, // GTB Standard Time
+ { 52, 1253, 3141,-18000 }, // Haiti Standard Time
+ { 53, 1273, 3208,-36000 }, // Hawaiian Standard Time
+ { 54, 1296, 3242, 19800 }, // India Standard Time
+ { 55, 1316, 3256, 12600 }, // Iran Standard Time
+ { 56, 1335, 3268, 7200 }, // Israel Standard Time
+ { 57, 1356, 3283, 7200 }, // Jordan Standard Time
+ { 58, 1377, 3294, 7200 }, // Kaliningrad Standard Time
+ { 59, 1403, 3313, 32400 }, // Korea Standard Time
+ { 60, 1423, 3324, 7200 }, // Libya Standard Time
+ { 61, 1443, 3350, 50400 }, // Line Islands Standard Time
+ { 62, 1470, 3369, 37800 }, // Lord Howe Standard Time
+ { 63, 1494, 3389, 36000 }, // Magadan Standard Time
+ { 64, 1516, 3402,-10800 }, // Magallanes Standard Time
+ { 65, 1541, 3423,-34200 }, // Marquesas Standard Time
+ { 66, 1565, 3441, 14400 }, // Mauritius Standard Time
+ { 67, 1589, 3485, 7200 }, // Middle East Standard Time
+ { 68, 1615, 3497,-10800 }, // Montevideo Standard Time
+ { 69, 1640, 3516, 0 }, // Morocco Standard Time
{ 70, 1662, 7537,-25200 }, // Mountain Standard Time (Mexico)
{ 71, 1694, 7555,-25200 }, // Mountain Standard Time
- { 72, 1717, 657, 23400 }, // Myanmar Standard Time
- { 73, 1739, 4351, 21600 }, // N. Central Asia Standard Time
- { 74, 1769, 3687, 3600 }, // Namibia Standard Time
- { 75, 1791, 793, 20700 }, // Nepal Standard Time
- { 76, 1811, 5455, 43200 }, // New Zealand Standard Time
- { 77, 1837, 6040,-12600 }, // Newfoundland Standard Time
- { 78, 1864, 752, 39600 }, // Norfolk Standard Time
- { 79, 1886, 2534, 28800 }, // North Asia East Standard Time
+ { 72, 1717, 3725, 23400 }, // Myanmar Standard Time
+ { 73, 1739, 3738, 21600 }, // N. Central Asia Standard Time
+ { 74, 1769, 3755, 3600 }, // Namibia Standard Time
+ { 75, 1791, 3771, 20700 }, // Nepal Standard Time
+ { 76, 1811, 3804, 43200 }, // New Zealand Standard Time
+ { 77, 1837, 3821,-12600 }, // Newfoundland Standard Time
+ { 78, 1864, 3838, 39600 }, // Norfolk Standard Time
+ { 79, 1886, 3854, 28800 }, // North Asia East Standard Time
{ 80, 1916, 7570, 25200 }, // North Asia Standard Time
- { 81, 1941, 6210, 30600 }, // North Korea Standard Time
- { 82, 1967, 3608, 21600 }, // Omsk Standard Time
- { 83, 1986, 4701,-10800 }, // Pacific SA Standard Time
- { 84, 2011, 7587,-28800 }, // Pacific Standard Time
- { 85, 2033, 7607,-28800 }, // Pacific Standard Time (Mexico)
- { 86, 2064, 7093, 18000 }, // Pakistan Standard Time
- { 87, 2087, 1225,-14400 }, // Paraguay Standard Time
- { 88, 2110, 570, 3600 }, // Romance Standard Time
- { 89, 2132, 6875, 14400 }, // Russia Time Zone 3
- { 90, 2151, 5762, 39600 }, // Russia Time Zone 10
- { 91, 2171, 7623, 43200 }, // Russia Time Zone 11
- { 92, 2191, 7638, 10800 }, // Russian Standard Time
- { 93, 2213, 4881,-10800 }, // SA Eastern Standard Time
- { 94, 2238, 3524,-18000 }, // SA Pacific Standard Time
- { 95, 2263, 6195,-14400 }, // SA Western Standard Time
- { 96, 2288, 4658,-10800 }, // Saint Pierre Standard Time
- { 97, 2315, 5415, 39600 }, // Sakhalin Standard Time
- { 98, 2338, 6759, 46800 }, // Samoa Standard Time
- { 99, 2358, 6303, 0 }, // Sao Tome Standard Time
- { 100, 2381, 6319, 14400 }, // Saratov Standard Time
- { 101, 2403, 5206, 25200 }, // SE Asia Standard Time
- { 102, 2425, 3825, 28800 }, // Singapore Standard Time
- { 103, 2449, 4806, 7200 }, // South Africa Standard Time
- { 104, 2476, 1447, 19800 }, // Sri Lanka Standard Time
- { 105, 2500, 6334, 7200 }, // Sudan Standard Time
- { 106, 2520, 4867, 7200 }, // Syria Standard Time
- { 107, 2540, 5588, 28800 }, // Taipei Standard Time
- { 108, 2561, 7652, 36000 }, // Tasmania Standard Time
- { 109, 2584, 1253,-10800 }, // Tocantins Standard Time
- { 110, 2608, 6057, 32400 }, // Tokyo Standard Time
- { 111, 2628, 6786, 25200 }, // Tomsk Standard Time
- { 112, 2648, 6857, 46800 }, // Tonga Standard Time
- { 113, 2668, 5356, 32400 }, // Transbaikal Standard Time
- { 114, 2694, 4390, 7200 }, // Turkey Standard Time
- { 115, 2715, 2143,-14400 }, // Turks And Caicos Standard Time
- { 116, 2746, 7669, 28800 }, // Ulaanbaatar Standard Time
- { 117, 2772, 7686,-18000 }, // US Eastern Standard Time
- { 118, 2797, 3998,-25200 }, // US Mountain Standard Time
- { 119, 2823, 1075,-39600 }, // UTC-11
- { 120, 2830, 6280,-32400 }, // UTC-09
- { 121, 2837, 5564,-28800 }, // UTC-08
- { 122, 2844, 4857, -7200 }, // UTC-02
- { 123, 2851, 7707, 0 }, // UTC
- { 124, 2855, 3213, 43200 }, // UTC+12
- { 125, 2862, 1502, 46800 }, // UTC+13
- { 126, 2869, 3703,-16200 }, // Venezuela Standard Time
- { 127, 2893, 7715, 36000 }, // Vladivostok Standard Time
- { 128, 2919, 6889, 28800 }, // W. Australia Standard Time
- { 129, 2946, 5093, 3600 }, // W. Central Africa Standard Time
- { 130, 2978, 7732, 3600 }, // W. Europe Standard Time
- { 131, 3002, 0, 25200 }, // W. Mongolia Standard Time
- { 132, 3028, 7746, 18000 }, // West Asia Standard Time
- { 133, 3052, 7760, 7200 }, // West Bank Standard Time
- { 134, 3076, 377, 36000 }, // West Pacific Standard Time
- { 135, 3103, 7772, 32400 }, // Yakutsk Standard Time
+ { 81, 1941, 3902, 30600 }, // North Korea Standard Time
+ { 82, 1967, 3917, 21600 }, // Omsk Standard Time
+ { 83, 1986, 3927,-10800 }, // Pacific SA Standard Time
+ { 84, 2011, 4004,-28800 }, // Pacific Standard Time
+ { 85, 2033, 7587,-28800 }, // Pacific Standard Time (Mexico)
+ { 86, 2064, 4061, 18000 }, // Pakistan Standard Time
+ { 87, 2087, 4074,-14400 }, // Paraguay Standard Time
+ { 88, 2110, 4091, 18000 }, // Qyzylorda Standard Time
+ { 89, 2134, 4140, 3600 }, // Romance Standard Time
+ { 90, 2156, 4180, 14400 }, // Russia Time Zone 3
+ { 91, 2175, 4194, 39600 }, // Russia Time Zone 10
+ { 92, 2195, 7603, 43200 }, // Russia Time Zone 11
+ { 93, 2215, 7618, 10800 }, // Russian Standard Time
+ { 94, 2237, 4428,-10800 }, // SA Eastern Standard Time
+ { 95, 2262, 4546,-18000 }, // SA Pacific Standard Time
+ { 96, 2287, 4697,-14400 }, // SA Western Standard Time
+ { 97, 2312, 5137,-10800 }, // Saint Pierre Standard Time
+ { 98, 2339, 5154, 39600 }, // Sakhalin Standard Time
+ { 99, 2362, 5168, 46800 }, // Samoa Standard Time
+ { 100, 2382, 5181, 0 }, // Sao Tome Standard Time
+ { 101, 2405, 5197, 14400 }, // Saratov Standard Time
+ { 102, 2427, 5315, 25200 }, // SE Asia Standard Time
+ { 103, 2449, 5436, 28800 }, // Singapore Standard Time
+ { 104, 2473, 5570, 7200 }, // South Africa Standard Time
+ { 105, 2500, 5633, 19800 }, // Sri Lanka Standard Time
+ { 106, 2524, 5646, 7200 }, // Sudan Standard Time
+ { 107, 2544, 5662, 7200 }, // Syria Standard Time
+ { 108, 2564, 5676, 28800 }, // Taipei Standard Time
+ { 109, 2585, 7632, 36000 }, // Tasmania Standard Time
+ { 110, 2608, 5722,-10800 }, // Tocantins Standard Time
+ { 111, 2632, 5774, 32400 }, // Tokyo Standard Time
+ { 112, 2652, 5799, 25200 }, // Tomsk Standard Time
+ { 113, 2672, 5810, 46800 }, // Tonga Standard Time
+ { 114, 2692, 5828, 32400 }, // Transbaikal Standard Time
+ { 115, 2718, 5839, 7200 }, // Turkey Standard Time
+ { 116, 2739, 5855,-14400 }, // Turks And Caicos Standard Time
+ { 117, 2770, 7649, 28800 }, // Ulaanbaatar Standard Time
+ { 118, 2796, 7666,-18000 }, // US Eastern Standard Time
+ { 119, 2821, 6060,-25200 }, // US Mountain Standard Time
+ { 120, 2847, 6076,-39600 }, // UTC-11
+ { 121, 2854, 6133,-32400 }, // UTC-09
+ { 122, 2861, 6159,-28800 }, // UTC-08
+ { 123, 2868, 6186, -7200 }, // UTC-02
+ { 124, 2875, 7687, 0 }, // UTC
+ { 125, 2879, 6272, 43200 }, // UTC+12
+ { 126, 2886, 6390, 46800 }, // UTC+13
+ { 127, 2893, 6435,-16200 }, // Venezuela Standard Time
+ { 128, 2917, 7695, 36000 }, // Vladivostok Standard Time
+ { 129, 2943, 6482, 14400 }, // Volgograd Standard Time
+ { 130, 2967, 6499, 28800 }, // W. Australia Standard Time
+ { 131, 2994, 6697, 3600 }, // W. Central Africa Standard Time
+ { 132, 3026, 7712, 3600 }, // W. Europe Standard Time
+ { 133, 3050, 6982, 25200 }, // W. Mongolia Standard Time
+ { 134, 3076, 7726, 18000 }, // West Asia Standard Time
+ { 135, 3100, 7740, 7200 }, // West Bank Standard Time
+ { 136, 3124, 7255, 36000 }, // West Pacific Standard Time
+ { 137, 3151, 7752, 32400 }, // Yakutsk Standard Time
{ 0, 0, 0, 0 } // Trailing zeroes
};
// IANA ID Index, UTC Offset
static const QUtcData utcDataTable[] = {
- { 7785, 0 }, // UTC
- { 7789,-50400 }, // UTC-14:00
- { 7799,-46800 }, // UTC-13:00
- { 7809,-43200 }, // UTC-12:00
- { 7819,-39600 }, // UTC-11:00
- { 7829,-36000 }, // UTC-10:00
- { 7839,-32400 }, // UTC-09:00
- { 7849,-28800 }, // UTC-08:00
- { 7859,-25200 }, // UTC-07:00
- { 7869,-21600 }, // UTC-06:00
- { 7879,-18000 }, // UTC-05:00
- { 7889,-16200 }, // UTC-04:30
- { 7899,-14400 }, // UTC-04:00
- { 7909,-12600 }, // UTC-03:30
- { 7919,-10800 }, // UTC-03:00
- { 7929, -7200 }, // UTC-02:00
- { 7939, -3600 }, // UTC-01:00
- { 7949, 0 }, // UTC-00:00
- { 7959, 0 }, // UTC+00:00
- { 7969, 3600 }, // UTC+01:00
- { 7979, 7200 }, // UTC+02:00
- { 7989, 10800 }, // UTC+03:00
- { 7999, 12600 }, // UTC+03:30
- { 8009, 14400 }, // UTC+04:00
- { 8019, 16200 }, // UTC+04:30
- { 8029, 18000 }, // UTC+05:00
- { 8039, 19800 }, // UTC+05:30
- { 8049, 20700 }, // UTC+05:45
- { 8059, 21600 }, // UTC+06:00
- { 8069, 23400 }, // UTC+06:30
- { 8079, 25200 }, // UTC+07:00
- { 8089, 28800 }, // UTC+08:00
- { 8099, 30600 }, // UTC+08:30
- { 8109, 32400 }, // UTC+09:00
- { 8119, 34200 }, // UTC+09:30
- { 8129, 36000 }, // UTC+10:00
- { 8139, 39600 }, // UTC+11:00
- { 8149, 43200 }, // UTC+12:00
- { 8159, 46800 }, // UTC+13:00
- { 8169, 50400 }, // UTC+14:00
+ { 7765, 0 }, // UTC
+ { 7769,-50400 }, // UTC-14:00
+ { 7779,-46800 }, // UTC-13:00
+ { 7789,-43200 }, // UTC-12:00
+ { 7799,-39600 }, // UTC-11:00
+ { 7809,-36000 }, // UTC-10:00
+ { 7819,-32400 }, // UTC-09:00
+ { 7829,-28800 }, // UTC-08:00
+ { 7839,-25200 }, // UTC-07:00
+ { 7849,-21600 }, // UTC-06:00
+ { 7859,-18000 }, // UTC-05:00
+ { 7869,-16200 }, // UTC-04:30
+ { 7879,-14400 }, // UTC-04:00
+ { 7889,-12600 }, // UTC-03:30
+ { 7899,-10800 }, // UTC-03:00
+ { 7909, -7200 }, // UTC-02:00
+ { 7919, -3600 }, // UTC-01:00
+ { 7929, 0 }, // UTC-00:00
+ { 7939, 0 }, // UTC+00:00
+ { 7949, 3600 }, // UTC+01:00
+ { 7959, 7200 }, // UTC+02:00
+ { 7969, 10800 }, // UTC+03:00
+ { 7979, 12600 }, // UTC+03:30
+ { 7989, 14400 }, // UTC+04:00
+ { 7999, 16200 }, // UTC+04:30
+ { 8009, 18000 }, // UTC+05:00
+ { 8019, 19800 }, // UTC+05:30
+ { 8029, 20700 }, // UTC+05:45
+ { 8039, 21600 }, // UTC+06:00
+ { 8049, 23400 }, // UTC+06:30
+ { 8059, 25200 }, // UTC+07:00
+ { 8069, 28800 }, // UTC+08:00
+ { 8079, 30600 }, // UTC+08:30
+ { 8089, 32400 }, // UTC+09:00
+ { 8099, 34200 }, // UTC+09:30
+ { 8109, 36000 }, // UTC+10:00
+ { 8119, 39600 }, // UTC+11:00
+ { 8129, 43200 }, // UTC+12:00
+ { 8139, 46800 }, // UTC+13:00
+ { 8149, 50400 }, // UTC+14:00
{ 0, 0 } // Trailing zeroes
};
@@ -785,427 +789,429 @@ static const char windowsIdData[] = {
0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x28, 0x4d, 0x65, 0x78, 0x69,
0x63, 0x6f, 0x29, 0x0, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x20, 0x53, 0x74, 0x61, 0x6e,
-0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x53, 0x74,
-0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54,
-0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x33, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x30, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x31, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x53,
-0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41, 0x20, 0x45, 0x61, 0x73, 0x74,
-0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41,
-0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x0, 0x53, 0x41, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x20, 0x50, 0x69, 0x65, 0x72, 0x72, 0x65,
-0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61, 0x6b, 0x68, 0x61,
-0x6c, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61,
-0x6d, 0x6f, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61,
-0x6f, 0x20, 0x54, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65,
-0x0, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x0, 0x53, 0x45, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20,
-0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64,
-0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x72, 0x69, 0x20,
-0x4c, 0x61, 0x6e, 0x6b, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0,
-0x53, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0,
-0x53, 0x79, 0x72, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0,
-0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65,
-0x0, 0x54, 0x61, 0x73, 0x6d, 0x61, 0x6e, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54,
-0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x63, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x62, 0x61, 0x69, 0x6b, 0x61, 0x6c, 0x20,
-0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x75, 0x72, 0x6b, 0x65, 0x79,
-0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x75, 0x72, 0x6b, 0x73,
-0x20, 0x41, 0x6e, 0x64, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64,
-0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x53, 0x74,
-0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x53, 0x20, 0x45, 0x61, 0x73, 0x74, 0x65,
-0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x53, 0x20,
-0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39, 0x0, 0x55, 0x54, 0x43,
-0x2d, 0x30, 0x38, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x32, 0x0, 0x55, 0x54, 0x43, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31,
-0x32, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x33, 0x0, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x20, 0x53,
-0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f,
-0x73, 0x74, 0x6f, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57,
-0x2e, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64,
-0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72,
-0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e,
-0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d,
-0x65, 0x0, 0x57, 0x2e, 0x20, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
-0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74,
-0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6e,
-0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74,
-0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69,
-0x6d, 0x65, 0x0, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20,
-0x54, 0x69, 0x6d, 0x65, 0x0
+0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x51, 0x79, 0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x20,
+0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x52, 0x6f, 0x6d, 0x61, 0x6e, 0x63,
+0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x52, 0x75, 0x73, 0x73,
+0x69, 0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x33, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69,
+0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x30, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69,
+0x61, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x5a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x31, 0x0, 0x52, 0x75, 0x73, 0x73, 0x69,
+0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41, 0x20,
+0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d,
+0x65, 0x0, 0x53, 0x41, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
+0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x41, 0x20, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74,
+0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x20, 0x50, 0x69,
+0x65, 0x72, 0x72, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53,
+0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d,
+0x65, 0x0, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d,
+0x65, 0x0, 0x53, 0x61, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20,
+0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
+0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x45, 0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64,
+0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x20, 0x53,
+0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41,
+0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0,
+0x53, 0x72, 0x69, 0x20, 0x4c, 0x61, 0x6e, 0x6b, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54,
+0x69, 0x6d, 0x65, 0x0, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54,
+0x69, 0x6d, 0x65, 0x0, 0x53, 0x79, 0x72, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54,
+0x69, 0x6d, 0x65, 0x0, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20,
+0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x61, 0x73, 0x6d, 0x61, 0x6e, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61,
+0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x63, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x73, 0x20, 0x53, 0x74,
+0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x20, 0x53, 0x74,
+0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x20, 0x53, 0x74,
+0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x20, 0x53, 0x74,
+0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x62, 0x61, 0x69,
+0x6b, 0x61, 0x6c, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54, 0x75,
+0x72, 0x6b, 0x65, 0x79, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x54,
+0x75, 0x72, 0x6b, 0x73, 0x20, 0x41, 0x6e, 0x64, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x53, 0x74, 0x61, 0x6e,
+0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61,
+0x72, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x53, 0x20, 0x45,
+0x61, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65,
+0x0, 0x55, 0x53, 0x20, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
+0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x31, 0x31, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x39,
+0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x38, 0x0, 0x55, 0x54, 0x43, 0x2d, 0x30, 0x32, 0x0, 0x55, 0x54, 0x43, 0x0, 0x55,
+0x54, 0x43, 0x2b, 0x31, 0x32, 0x0, 0x55, 0x54, 0x43, 0x2b, 0x31, 0x33, 0x0, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65,
+0x6c, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x56, 0x6c, 0x61,
+0x64, 0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69,
+0x6d, 0x65, 0x0, 0x56, 0x6f, 0x6c, 0x67, 0x6f, 0x67, 0x72, 0x61, 0x64, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72,
+0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x20,
+0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x43, 0x65, 0x6e,
+0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64,
+0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e,
+0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x2e, 0x20, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69,
+0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74,
+0x20, 0x41, 0x73, 0x69, 0x61, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0,
+0x57, 0x65, 0x73, 0x74, 0x20, 0x42, 0x61, 0x6e, 0x6b, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54,
+0x69, 0x6d, 0x65, 0x0, 0x57, 0x65, 0x73, 0x74, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61,
+0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x53,
+0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x0
};
static const char ianaIdData[] = {
-0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x76, 0x64, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61,
-0x72, 0x61, 0x77, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75,
-0x2d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61,
-0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c,
-0x65, 0x6d, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x68, 0x6b, 0x65, 0x6b, 0x0, 0x41, 0x6e, 0x74,
-0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x79, 0x6f, 0x77, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69,
-0x63, 0x2f, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f,
-0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x42,
-0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x69,
-0x6e, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x41, 0x73, 0x68, 0x67, 0x61, 0x62, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x4e, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x73, 0x74,
-0x61, 0x5f, 0x52, 0x69, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61,
-0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x65, 0x79, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x4a, 0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, 0x74,
-0x69, 0x61, 0x6e, 0x61, 0x6b, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74,
-0x68, 0x65, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x6e, 0x61, 0x75, 0x6c, 0x0, 0x41, 0x6d,
-0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x0, 0x50, 0x61, 0x63,
-0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x0, 0x41, 0x75,
-0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x53, 0x79, 0x64, 0x6e, 0x65, 0x79, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72,
-0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4d, 0x65, 0x6c, 0x62, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x45, 0x6c, 0x5f, 0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53,
-0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x6a,
-0x75, 0x72, 0x6f, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x77, 0x61, 0x6a, 0x61, 0x6c, 0x65, 0x69,
-0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x6e, 0x64, 0x65, 0x72, 0x62, 0x75, 0x72, 0x79, 0x0,
-0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72,
-0x69, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x64, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x42, 0x61,
-0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x75, 0x76, 0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x0, 0x41, 0x73, 0x69,
-0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75,
-0x69, 0x61, 0x62, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x70, 0x6f, 0x5f, 0x47,
-0x72, 0x61, 0x6e, 0x64, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x64, 0x75, 0x7a, 0x0, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e,
-0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f,
-0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x67, 0x72, 0x65, 0x62, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61,
-0x74, 0x6d, 0x61, 0x6e, 0x64, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0,
-0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x75, 0x73, 0x63, 0x61, 0x74, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d,
-0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x64, 0x72, 0x69,
-0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x64, 0x65, 0x6e, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, 0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x72, 0x63, 0x74, 0x69, 0x63, 0x2f,
-0x4c, 0x6f, 0x6e, 0x67, 0x79, 0x65, 0x61, 0x72, 0x62, 0x79, 0x65, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61,
-0x67, 0x68, 0x64, 0x61, 0x64, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x69, 0x64, 0x77, 0x61, 0x79,
-0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x77, 0x61, 0x69, 0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x46, 0x72, 0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x0, 0x50, 0x61, 0x63,
-0x69, 0x66, 0x69, 0x63, 0x2f, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47,
-0x4d, 0x54, 0x2b, 0x31, 0x31, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x61, 0x6e, 0x63, 0x6f, 0x75,
-0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x59, 0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f,
-0x6e, 0x61, 0x63, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, 0x61, 0x6b, 0x61, 0x0, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a,
-0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f,
-0x7a, 0x68, 0x79, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f,
-0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x41, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x65, 0x68, 0x72,
-0x61, 0x6e, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x72, 0x61, 0x67, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x53, 0x70, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d,
-0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x74, 0x68, 0x65, 0x6e, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e,
-0x2f, 0x41, 0x6e, 0x74, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x76, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69,
-0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a,
-0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x65, 0x6c, 0x67, 0x72, 0x61, 0x64, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61,
-0x2f, 0x41, 0x6c, 0x6d, 0x61, 0x74, 0x79, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x6f, 0x73, 0x74, 0x61, 0x6e, 0x61,
-0x79, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x33, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x43, 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61,
-0x6e, 0x2f, 0x43, 0x68, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48,
-0x6f, 0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x72,
-0x69, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69,
-0x63, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x75, 0x72, 0x69, 0x63, 0x68, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79,
-0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x6e, 0x61, 0x70, 0x65, 0x20, 0x50, 0x61, 0x63, 0x69,
-0x66, 0x69, 0x63, 0x2f, 0x4b, 0x6f, 0x73, 0x72, 0x61, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47,
-0x61, 0x6d, 0x62, 0x69, 0x65, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x61, 0x6d, 0x65, 0x79,
-0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x69, 0x6c, 0x6c, 0x6f, 0x0,
-0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x68, 0x75, 0x0, 0x45, 0x74, 0x63,
-0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x37, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x42, 0x65, 0x72, 0x6d,
-0x75, 0x64, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6c, 0x61,
-0x62, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x54, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x61, 0x75, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x6f, 0x62, 0x65,
-0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x74, 0x79, 0x72, 0x61, 0x75, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79,
-0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x72, 0x75, 0x6d, 0x71, 0x69, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49,
-0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61,
-0x72, 0x5f, 0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61, 0x61, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x54, 0x68, 0x75, 0x6c, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6e, 0x6d, 0x61, 0x72,
-0x6b, 0x73, 0x68, 0x61, 0x76, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x67, 0x69, 0x6e,
-0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x43, 0x75, 0x72, 0x72,
-0x65, 0x6e, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79,
-0x73, 0x75, 0x6e, 0x64, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e,
-0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72,
-0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x4e, 0x64, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72,
-0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61,
-0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x45, 0x75, 0x63, 0x6c, 0x61,
-0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x75, 0x61, 0x0, 0x41, 0x73, 0x69,
-0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x53, 0x61, 0x69,
-0x70, 0x61, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x45, 0x75, 0x72,
-0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, 0x73, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74,
-0x69, 0x63, 0x61, 0x2f, 0x4d, 0x63, 0x4d, 0x75, 0x72, 0x64, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42,
-0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x32, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x62, 0x75, 0x72, 0x67, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x69, 0x6e, 0x63, 0x65,
-0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61,
-0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x65, 0x6e,
-0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x2d, 0x4e, 0x6f, 0x76, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49,
-0x72, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61,
-0x74, 0x61, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, 0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x71,
-0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x72, 0x65,
-0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70, 0x69, 0x67, 0x6f, 0x6e, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72, 0x74, 0x75, 0x6e, 0x67, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x79, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x50, 0x61,
-0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x61, 0x75, 0x72, 0x75, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69,
-0x63, 0x61, 0x2f, 0x44, 0x75, 0x6d, 0x6f, 0x6e, 0x74, 0x44, 0x55, 0x72, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4f, 0x73,
-0x6c, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63,
-0x2f, 0x47, 0x61, 0x6c, 0x61, 0x70, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75,
-0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69,
-0x66, 0x61, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x42, 0x61,
-0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x63, 0x74, 0x6f, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f,
-0x47, 0x4d, 0x54, 0x2d, 0x31, 0x31, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61,
-0x64, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x75, 0x6d, 0x65, 0x61, 0x0, 0x41, 0x6d,
-0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a,
-0x75, 0x6e, 0x65, 0x61, 0x75, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x6d, 0x65, 0x20, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x69, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x64,
-0x74, 0x68, 0x61, 0x62, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x0, 0x45, 0x75, 0x72,
-0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x54, 0x65, 0x67, 0x75, 0x63, 0x69, 0x67, 0x61, 0x6c, 0x70, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c,
-0x69, 0x61, 0x2f, 0x4c, 0x6f, 0x72, 0x64, 0x5f, 0x48, 0x6f, 0x77, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54,
-0x2d, 0x33, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x62, 0x72, 0x65, 0x76, 0x69, 0x6c, 0x6c, 0x65,
-0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54,
-0x2d, 0x31, 0x32, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x0, 0x41,
-0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x6d,
-0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x4e, 0x61, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x6f, 0x75,
-0x74, 0x68, 0x5f, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45,
-0x6c, 0x5f, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43,
-0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61,
-0x6e, 0x61, 0x2f, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69,
-0x61, 0x6e, 0x61, 0x2f, 0x54, 0x65, 0x6c, 0x6c, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x42, 0x65, 0x75, 0x6c, 0x61, 0x68, 0x20,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61,
-0x2f, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74,
-0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x53, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x45,
-0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e,
-0x61, 0x6d, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, 0x74, 0x61, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61, 0x74, 0x6c, 0x61, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69,
-0x63, 0x2f, 0x46, 0x75, 0x6e, 0x61, 0x66, 0x75, 0x74, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x69,
-0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74,
-0x69, 0x63, 0x61, 0x2f, 0x56, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41,
-0x72, 0x75, 0x62, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x45, 0x74, 0x63,
-0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x64, 0x68, 0x6f,
-0x65, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x72, 0x61, 0x63, 0x61, 0x73, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, 0x45, 0x74, 0x63,
-0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x74, 0x69, 0x67,
-0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x6d, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f,
-0x70, 0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69,
-0x63, 0x2f, 0x53, 0x74, 0x5f, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f,
-0x54, 0x72, 0x75, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67,
-0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x74, 0x79, 0x72, 0x65, 0x0, 0x41, 0x6d,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x62, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41,
+0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6e,
+0x65, 0x61, 0x75, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x74, 0x6c, 0x61, 0x6b, 0x61, 0x74,
+0x6c, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x6d, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x53, 0x69, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x61,
+0x6b, 0x75, 0x74, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x64, 0x61, 0x6b, 0x0, 0x41,
+0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x6e, 0x61, 0x75, 0x6c, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x68,
+0x72, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x77, 0x61, 0x69, 0x74, 0x0, 0x41, 0x73, 0x69,
+0x61, 0x2f, 0x51, 0x61, 0x74, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x69, 0x79, 0x61, 0x64, 0x68, 0x0,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x64, 0x65, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x34, 0x0,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x75, 0x73, 0x63, 0x61, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x62,
+0x61, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x67, 0x68, 0x64, 0x61, 0x64, 0x0, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x52, 0x69,
+0x6f, 0x6a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e,
+0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x47, 0x61, 0x6c, 0x6c, 0x65, 0x67, 0x6f, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6c, 0x74, 0x61, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6e,
+0x5f, 0x4a, 0x75, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74,
+0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4c, 0x75, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x54, 0x75, 0x63, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x55, 0x73, 0x68,
+0x75, 0x61, 0x69, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6d, 0x61, 0x72,
+0x63, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6a, 0x75, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x4d, 0x65, 0x6e, 0x64, 0x6f, 0x7a, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72,
+0x61, 0x6b, 0x68, 0x61, 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x6c, 0x79, 0x61, 0x6e, 0x6f, 0x76,
+0x73, 0x6b, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69, 0x66, 0x61, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x47, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x47, 0x6f, 0x6f, 0x73, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x4d, 0x6f, 0x6e, 0x63, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6c,
+0x65, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x77, 0x69, 0x6e, 0x0, 0x41,
+0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x45, 0x75, 0x63, 0x6c, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72,
+0x61, 0x6c, 0x69, 0x61, 0x2f, 0x53, 0x79, 0x64, 0x6e, 0x65, 0x79, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69,
+0x61, 0x2f, 0x4d, 0x65, 0x6c, 0x62, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6b,
+0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x73, 0x75,
+0x6e, 0x64, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x41, 0x7a, 0x6f, 0x72, 0x65, 0x73, 0x0, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x68,
+0x61, 0x6b, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x68, 0x69, 0x6d, 0x70, 0x68, 0x75, 0x0, 0x45, 0x75, 0x72,
+0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x69, 0x6e, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x42, 0x6f,
+0x75, 0x67, 0x61, 0x69, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52,
+0x65, 0x67, 0x69, 0x6e, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x77, 0x69, 0x66, 0x74, 0x5f,
+0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x0, 0x41, 0x74,
+0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x70, 0x65, 0x5f, 0x56, 0x65, 0x72, 0x64, 0x65, 0x0, 0x41, 0x73,
+0x69, 0x61, 0x2f, 0x59, 0x65, 0x72, 0x65, 0x76, 0x61, 0x6e, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61,
+0x2f, 0x41, 0x64, 0x65, 0x6c, 0x61, 0x69, 0x64, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f,
+0x42, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x48, 0x69, 0x6c, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b,
+0x36, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x0, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x5f, 0x52, 0x69, 0x63, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69,
+0x66, 0x69, 0x63, 0x2f, 0x47, 0x61, 0x6c, 0x61, 0x70, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x45, 0x6c, 0x5f, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x54, 0x65, 0x67, 0x75, 0x63, 0x69, 0x67, 0x61, 0x6c, 0x70, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x4d, 0x61, 0x6e, 0x61, 0x67, 0x75, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x36, 0x0, 0x41, 0x6e,
+0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x0, 0x49, 0x6e, 0x64, 0x69,
+0x61, 0x6e, 0x2f, 0x43, 0x68, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x72, 0x75, 0x6d, 0x71,
+0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6c, 0x6d, 0x61, 0x74, 0x79, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51,
+0x6f, 0x73, 0x74, 0x61, 0x6e, 0x61, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x68, 0x6b, 0x65, 0x6b,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x69, 0x61, 0x62, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x70, 0x6f, 0x5f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x65, 0x0, 0x45, 0x75, 0x72,
+0x6f, 0x70, 0x65, 0x2f, 0x54, 0x69, 0x72, 0x61, 0x6e, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x72,
+0x61, 0x67, 0x75, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74,
+0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x61, 0x74, 0x69, 0x73, 0x6c, 0x61, 0x76, 0x61, 0x0, 0x45,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6a, 0x75, 0x62, 0x6c, 0x6a, 0x61, 0x6e, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f,
+0x70, 0x65, 0x2f, 0x50, 0x6f, 0x64, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
+0x42, 0x65, 0x6c, 0x67, 0x72, 0x61, 0x64, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61,
+0x6a, 0x65, 0x76, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x67, 0x72, 0x65, 0x62, 0x0, 0x45,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6b, 0x6f, 0x70, 0x6a, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
+0x57, 0x61, 0x72, 0x73, 0x61, 0x77, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x31, 0x0, 0x41, 0x6e,
+0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x50,
+0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x6e, 0x61, 0x70, 0x65, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69,
+0x63, 0x2f, 0x4b, 0x6f, 0x73, 0x72, 0x61, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x75,
+0x6d, 0x65, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61,
+0x6e, 0x61, 0x6c, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x66, 0x61, 0x74, 0x65, 0x0, 0x41, 0x6d,
0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d,
0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x5f, 0x42, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x73,
0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x72, 0x69, 0x64, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b,
-0x75, 0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x63,
-0x68, 0x69, 0x6e, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, 0x69, 0x0, 0x41, 0x6d,
-0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54,
-0x68, 0x69, 0x6d, 0x70, 0x68, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x6c, 0x74, 0x61, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65,
-0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, 0x6c, 0x67, 0x6f, 0x67,
-0x72, 0x61, 0x64, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71,
-0x75, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x32, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59,
-0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x6e, 0x64, 0x79, 0x67, 0x61,
-0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x62, 0x75, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x20,
-0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x74, 0x61,
-0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x34, 0x0, 0x49, 0x6e, 0x64, 0x69,
-0x61, 0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69,
-0x63, 0x2f, 0x41, 0x7a, 0x6f, 0x72, 0x65, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x0, 0x41,
-0x73, 0x69, 0x61, 0x2f, 0x44, 0x68, 0x61, 0x6b, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69,
-0x6e, 0x6e, 0x69, 0x70, 0x65, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x69, 0x6e, 0x79,
-0x5f, 0x52, 0x69, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x6b, 0x69,
-0x6e, 0x5f, 0x49, 0x6e, 0x6c, 0x65, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x73, 0x6f,
-0x6c, 0x75, 0x74, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66,
-0x69, 0x63, 0x2f, 0x46, 0x61, 0x6b, 0x61, 0x6f, 0x66, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f,
-0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x20,
-0x41, 0x73, 0x69, 0x61, 0x2f, 0x47, 0x61, 0x7a, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74,
-0x61, 0x6e, 0x62, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x64, 0x61, 0x6b, 0x0, 0x45,
-0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e,
-0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x64, 0x64, 0x69, 0x73, 0x5f, 0x41, 0x62, 0x61, 0x62, 0x61, 0x0, 0x45, 0x75, 0x72,
-0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6d, 0x73, 0x74, 0x65, 0x72, 0x64, 0x61, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x69, 0x73,
-0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x64, 0x65, 0x69, 0x72, 0x61,
-0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f,
-0x70, 0x65, 0x2f, 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x73,
-0x69, 0x6e, 0x67, 0x65, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65,
-0x73, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b,
-0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73, 0x6b, 0x0, 0x50,
-0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x6d,
-0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
-0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x69, 0x79, 0x61, 0x64, 0x68,
-0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e,
-0x61, 0x64, 0x79, 0x72, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x6f, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
-0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69, 0x6e, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42,
-0x65, 0x6c, 0x69, 0x7a, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, 0x6e, 0x65,
-0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64, 0x69, 0x76, 0x6f, 0x73, 0x74,
-0x6f, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x73, 0x74, 0x2d, 0x4e, 0x65, 0x72, 0x61, 0x0, 0x45, 0x74, 0x63,
-0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x32, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73,
-0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74, 0x74, 0x0, 0x45, 0x53, 0x54, 0x35, 0x45,
-0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x0, 0x50, 0x61, 0x63,
-0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b,
-0x33, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72, 0x61, 0x6b, 0x68, 0x61, 0x6e, 0x20, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x6c, 0x79, 0x61, 0x6e, 0x6f, 0x76, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42,
-0x6f, 0x61, 0x5f, 0x56, 0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72,
-0x74, 0x6f, 0x5f, 0x56, 0x65, 0x6c, 0x68, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x69, 0x6e, 0x73,
-0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x0, 0x41,
-0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x61, 0x6e, 0x64, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x4c, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61,
-0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0,
-0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x67, 0x75,
-0x69, 0x6c, 0x6c, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x0,
-0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x62, 0x61, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43,
-0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x50,
-0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x0, 0x41,
-0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e,
-0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e,
-0x74, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x73, 0x69,
-0x61, 0x2f, 0x46, 0x61, 0x6d, 0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63,
-0x6f, 0x73, 0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f,
-0x75, 0x70, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61,
-0x2f, 0x43, 0x68, 0x69, 0x74, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x72, 0x6f, 0x76,
-0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, 0x61, 0x0, 0x41,
-0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f,
-0x53, 0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6b,
-0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x63, 0x63, 0x72, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66,
-0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69,
-0x61, 0x2f, 0x41, 0x64, 0x65, 0x6c, 0x61, 0x69, 0x64, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61,
-0x2f, 0x42, 0x72, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x48, 0x69, 0x6c, 0x6c, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63,
-0x2f, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61,
-0x64, 0x6f, 0x75, 0x67, 0x6f, 0x75, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4b, 0x65, 0x72, 0x67, 0x75, 0x65,
-0x6c, 0x65, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x38, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65,
-0x2f, 0x54, 0x69, 0x72, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0,
-0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, 0x0, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x6b, 0x75, 0x0,
-0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x6e, 0x67, 0x5f, 0x4b, 0x6f, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f,
-0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e,
-0x6f, 0x6c, 0x75, 0x6c, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69,
-0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x6d, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x65, 0x72, 0x6f,
-0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b,
-0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x69, 0x75, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x41, 0x6c, 0x67, 0x69, 0x65, 0x72, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, 0x41,
-0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d,
-0x61, 0x63, 0x65, 0x69, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x63, 0x69, 0x66, 0x65,
-0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x6d, 0x0, 0x45, 0x75,
-0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x6f, 0x64, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x44, 0x6f, 0x75, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x74, 0x69,
-0x61, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, 0x61, 0x20,
+0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 0x0, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44,
+0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x6e, 0x69, 0x70, 0x65, 0x67, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x69, 0x6e, 0x79, 0x5f, 0x52, 0x69, 0x76, 0x65, 0x72, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x5f, 0x49, 0x6e, 0x6c, 0x65, 0x74, 0x20,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x0, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x74, 0x61, 0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49,
+0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x54, 0x65, 0x6c, 0x6c, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d,
+0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x42, 0x65, 0x75,
+0x6c, 0x61, 0x68, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61,
+0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x53, 0x61, 0x6c,
+0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x0, 0x41, 0x73, 0x69,
+0x61, 0x2f, 0x48, 0x6f, 0x6e, 0x67, 0x5f, 0x4b, 0x6f, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x63,
+0x61, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6d, 0x0, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d,
+0x54, 0x2b, 0x31, 0x32, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72,
+0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x79, 0x6f, 0x77, 0x61, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43,
+0x6f, 0x6d, 0x6f, 0x72, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74,
+0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x41, 0x64, 0x64, 0x69, 0x73, 0x5f, 0x41, 0x62, 0x61, 0x62, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x4e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x41, 0x6e, 0x74,
+0x61, 0x6e, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x76, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79,
+0x6f, 0x74, 0x74, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x68,
+0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x5f, 0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61,
+0x61, 0x6d, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f,
+0x42, 0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c,
+0x69, 0x6e, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69,
+0x6e, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c,
+0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x53, 0x54,
+0x35, 0x45, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x73, 0x73, 0x61, 0x75, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x4d, 0x6f, 0x6e, 0x74, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70,
+0x69, 0x67, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72,
+0x74, 0x75, 0x6e, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72,
+0x5f, 0x42, 0x61, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72,
+0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d,
+0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73,
+0x62, 0x75, 0x72, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61,
+0x2f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49,
+0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x4b, 0x65, 0x6e, 0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c,
+0x6c, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c,
+0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x66, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x6b, 0x61, 0x74,
+0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a,
+0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
+0x65, 0x2f, 0x54, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c,
+0x73, 0x69, 0x6e, 0x6b, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, 0x61, 0x0, 0x45, 0x75,
+0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
+0x4b, 0x69, 0x65, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64,
+0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, 0x79, 0x65, 0x0, 0x45,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61,
+0x2f, 0x54, 0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61,
+0x65, 0x72, 0x6f, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79,
+0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
+0x65, 0x2f, 0x4c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, 0x61,
+0x64, 0x65, 0x69, 0x72, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x6e, 0x61, 0x72,
+0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f,
+0x70, 0x65, 0x2f, 0x49, 0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
+0x65, 0x2f, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x64,
+0x74, 0x68, 0x61, 0x62, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61, 0x64, 0x6f, 0x75,
+0x67, 0x6f, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x41,
+0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x41, 0x63, 0x63, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79,
+0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e,
+0x74, 0x69, 0x63, 0x2f, 0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x4d, 0x6f, 0x6e, 0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6d,
+0x61, 0x6b, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74,
+0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x46, 0x72, 0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f,
+0x53, 0x74, 0x5f, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d,
+0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f,
+0x46, 0x61, 0x6d, 0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x74, 0x68,
+0x65, 0x6e, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x50, 0x72, 0x69,
+0x6e, 0x63, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66,
+0x69, 0x63, 0x2f, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63,
+0x2f, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e, 0x6f,
+0x6c, 0x75, 0x6c, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f,
+0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61,
+0x2f, 0x54, 0x65, 0x68, 0x72, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c,
+0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65,
+0x2f, 0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x65,
+0x6f, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x45,
+0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69,
+0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c,
+0x6f, 0x72, 0x64, 0x5f, 0x48, 0x6f, 0x77, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61,
+0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e,
+0x61, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x61, 0x73,
+0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x0, 0x49, 0x6e,
+0x64, 0x69, 0x61, 0x6e, 0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f,
+0x4d, 0x61, 0x68, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x45, 0x6c, 0x5f, 0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68,
+0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61,
+0x74, 0x6c, 0x61, 0x6e, 0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x45, 0x64, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61,
+0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x49, 0x6e, 0x75, 0x76, 0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f,
+0x77, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61,
+0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d,
+0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43,
+0x6f, 0x63, 0x6f, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x73,
+0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x57, 0x69, 0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x74, 0x6d,
+0x61, 0x6e, 0x64, 0x75, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x63, 0x4d, 0x75,
+0x72, 0x64, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x50, 0x61,
+0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49,
+0x72, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61,
+0x72, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73,
+0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69,
+0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69,
+0x61, 0x67, 0x6f, 0x0, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x56, 0x61, 0x6e, 0x63, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61,
+0x77, 0x73, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f,
+0x72, 0x73, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, 0x67, 0x65,
+0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, 0x61, 0x20,
0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, 0x65, 0x6c,
-0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
-0x52, 0x69, 0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, 0x2d, 0x53,
-0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x65, 0x0,
-0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x41, 0x73, 0x69,
-0x61, 0x2f, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x36, 0x0, 0x45, 0x75,
-0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x6a, 0x65, 0x76, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65,
-0x2f, 0x42, 0x72, 0x61, 0x74, 0x69, 0x73, 0x6c, 0x61, 0x76, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x6e, 0x61,
-0x72, 0x79, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x42, 0x6f, 0x75, 0x67, 0x61, 0x69, 0x6e, 0x76, 0x69,
-0x6c, 0x6c, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x72, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67,
-0x79, 0x61, 0x6e, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x67, 0x6f, 0x5f, 0x50, 0x61,
-0x67, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x66,
-0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0,
-0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x39, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x75, 0x6e,
-0x69, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45,
-0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x4b, 0x68, 0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4a, 0x65, 0x72,
-0x73, 0x65, 0x79, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x71, 0x75,
-0x61, 0x72, 0x69, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61,
-0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x70, 0x65, 0x5f, 0x56, 0x65, 0x72, 0x64, 0x65,
-0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
-0x65, 0x2f, 0x4c, 0x6a, 0x75, 0x62, 0x6c, 0x6a, 0x61, 0x6e, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47,
-0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d,
-0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73,
-0x5f, 0x41, 0x69, 0x72, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e,
-0x74, 0x69, 0x6e, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x52, 0x69, 0x6f, 0x6a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
-0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x47, 0x61, 0x6c, 0x6c,
-0x65, 0x67, 0x6f, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69,
-0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6c, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67,
-0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4a, 0x75, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4c, 0x75,
-0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61,
-0x2f, 0x54, 0x75, 0x63, 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x67,
-0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x2f, 0x55, 0x73, 0x68, 0x75, 0x61, 0x69, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69,
-0x63, 0x61, 0x2f, 0x43, 0x61, 0x74, 0x61, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x6a,
-0x75, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x64, 0x6f, 0x7a, 0x61, 0x0, 0x50,
-0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42,
-0x61, 0x6e, 0x67, 0x75, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63,
-0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61,
-0x2f, 0x44, 0x61, 0x72, 0x77, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x69, 0x74, 0x63,
-0x61, 0x69, 0x72, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x0, 0x50, 0x61, 0x63,
-0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
-0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x50,
-0x65, 0x72, 0x74, 0x68, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x57, 0x61, 0x72, 0x73, 0x61, 0x77, 0x0, 0x49,
-0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x63, 0x6f, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d,
-0x61, 0x68, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, 0x67, 0x65,
-0x6c, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x74, 0x6c, 0x61, 0x6b, 0x61, 0x74,
-0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x66, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b,
-0x36, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x66, 0x61, 0x74, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f,
-0x70, 0x65, 0x2f, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x42, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c,
-0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x61, 0x74, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61,
-0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x30, 0x0, 0x41, 0x66, 0x72,
-0x69, 0x63, 0x61, 0x2f, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65,
-0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
-0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
-0x2f, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72,
-0x74, 0x5f, 0x4e, 0x65, 0x6c, 0x73, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79, 0x6f,
-0x74, 0x74, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6b, 0x6f, 0x70, 0x6a, 0x65, 0x0, 0x41, 0x73,
-0x69, 0x61, 0x2f, 0x53, 0x65, 0x6f, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x72,
-0x61, 0x6d, 0x61, 0x72, 0x69, 0x62, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x74, 0x6f, 0x63, 0x6b,
-0x68, 0x6f, 0x6c, 0x6d, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73,
-0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65,
+0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79, 0x7a, 0x79,
+0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c,
+0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, 0x0,
+0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
+0x4d, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, 0x61, 0x0,
+0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53,
+0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61,
+0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, 0x72, 0x0,
+0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65,
+0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, 0x65, 0x72,
+0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72,
+0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63,
+0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65,
+0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x20, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x6d, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f,
+0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x65,
+0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x72, 0x69,
+0x62, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x72,
+0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43,
+0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, 0x74, 0x61,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, 0x0, 0x41,
+0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69,
+0x6d, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e,
+0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, 0x61, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, 0x5f, 0x56,
+0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x5f, 0x56,
+0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, 0x2d, 0x53,
+0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69,
+0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, 0x6f, 0x6d,
+0x69, 0x6e, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63,
+0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x65,
+0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f,
+0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, 0x75, 0x63,
+0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e,
+0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x53, 0x70,
+0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, 0x61, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x6d,
+0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, 0x79, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65,
+0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53,
+0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61,
+0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72,
+0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d,
+0x37, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, 0x0, 0x41,
+0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61,
+0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x6b,
+0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x61, 0x6b, 0x0,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f,
+0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, 0x6e, 0x0,
+0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61,
+0x2f, 0x43, 0x61, 0x73, 0x65, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x0, 0x41,
+0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75,
+0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x63, 0x68,
+0x69, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61,
+0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x32,
+0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d,
+0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x74, 0x79, 0x72,
+0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68,
+0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x62, 0x61,
+0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, 0x61, 0x6b, 0x61, 0x0, 0x41,
+0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x6f,
+0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x72, 0x74, 0x6f, 0x75,
+0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61,
+0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48, 0x6f,
+0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x72, 0x69,
+0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69, 0x6e, 0x61, 0x0,
+0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54,
+0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x6c, 0x61, 0x75, 0x0, 0x41,
+0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f,
+0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x74, 0x61, 0x0, 0x45,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55,
+0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69,
+0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61,
+0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69,
+0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f,
+0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d,
+0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43,
+0x72, 0x65, 0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e,
+0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x5f, 0x4e, 0x65, 0x6c, 0x73, 0x6f, 0x6e,
+0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x69, 0x6c, 0x6c, 0x6f, 0x0,
+0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x0, 0x45, 0x74, 0x63, 0x2f,
+0x47, 0x4d, 0x54, 0x2b, 0x31, 0x31, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x67, 0x6f, 0x5f,
+0x50, 0x61, 0x67, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x69, 0x75, 0x65, 0x0, 0x50, 0x61,
+0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x69, 0x64, 0x77, 0x61, 0x79, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54,
+0x2b, 0x39, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x65, 0x72, 0x0, 0x45,
+0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x38, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x69, 0x74,
+0x63, 0x61, 0x69, 0x72, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x32, 0x0, 0x41, 0x6d, 0x65, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x6f, 0x6e, 0x68, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63,
+0x2f, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x5f, 0x47, 0x65, 0x6f, 0x72, 0x67, 0x69, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47,
+0x4d, 0x54, 0x20, 0x45, 0x74, 0x63, 0x2f, 0x55, 0x54, 0x43, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44,
+0x61, 0x6e, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x68, 0x61, 0x76, 0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d,
+0x31, 0x32, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x72, 0x61, 0x77, 0x61, 0x0, 0x50, 0x61,
+0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x6a, 0x75, 0x72, 0x6f, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63,
+0x2f, 0x4b, 0x77, 0x61, 0x6a, 0x61, 0x6c, 0x65, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e,
+0x61, 0x75, 0x72, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x75, 0x6e, 0x61, 0x66, 0x75, 0x74,
+0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x57, 0x61, 0x6b, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66,
+0x69, 0x63, 0x2f, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x33,
+0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x6e, 0x64, 0x65, 0x72, 0x62, 0x75, 0x72, 0x79, 0x0, 0x50,
+0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x6b, 0x61, 0x6f, 0x66, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x43, 0x61, 0x72, 0x61, 0x63, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x6c, 0x61, 0x64,
+0x69, 0x76, 0x6f, 0x73, 0x74, 0x6f, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x73, 0x74, 0x2d, 0x4e, 0x65, 0x72,
+0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x6f, 0x6c, 0x67, 0x6f, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41,
+0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x50, 0x65, 0x72, 0x74, 0x68, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47,
+0x4d, 0x54, 0x2d, 0x31, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6c, 0x67, 0x69, 0x65, 0x72, 0x73, 0x0,
+0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x61, 0x6e, 0x64, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61,
+0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x2d, 0x4e, 0x6f, 0x76, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44,
+0x6f, 0x75, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x75, 0x69, 0x0,
+0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x64, 0x6a, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69,
+0x63, 0x61, 0x2f, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42,
+0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61,
+0x6c, 0x61, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, 0x62, 0x72, 0x65, 0x76, 0x69, 0x6c,
+0x6c, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x61, 0x6d, 0x65, 0x79, 0x0, 0x41, 0x66, 0x72,
+0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x67, 0x6f, 0x73, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x75, 0x6e,
+0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6e, 0x64, 0x6f, 0x72, 0x72, 0x61, 0x0, 0x45, 0x75,
+0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x6e, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42,
+0x65, 0x72, 0x6c, 0x69, 0x6e, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x65,
+0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x0, 0x45,
+0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61,
+0x64, 0x75, 0x7a, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72,
+0x67, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x6c, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70,
+0x65, 0x2f, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x6d, 0x73, 0x74,
+0x65, 0x72, 0x64, 0x61, 0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4f, 0x73, 0x6c, 0x6f, 0x0, 0x45, 0x75,
+0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6e, 0x5f, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x0, 0x41, 0x72, 0x63, 0x74,
+0x69, 0x63, 0x2f, 0x4c, 0x6f, 0x6e, 0x67, 0x79, 0x65, 0x61, 0x72, 0x62, 0x79, 0x65, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f,
+0x70, 0x65, 0x2f, 0x53, 0x74, 0x6f, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x6d, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f,
+0x5a, 0x75, 0x72, 0x69, 0x63, 0x68, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x61, 0x74, 0x69, 0x63, 0x61,
+0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, 0x76, 0x64, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d,
+0x35, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x0,
+0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4b, 0x65, 0x72, 0x67, 0x75, 0x65, 0x6c, 0x65, 0x6e, 0x0, 0x41, 0x73, 0x69,
+0x61, 0x2f, 0x4f, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x61, 0x75, 0x20, 0x41, 0x73,
+0x69, 0x61, 0x2f, 0x41, 0x71, 0x74, 0x6f, 0x62, 0x65, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x74, 0x79, 0x72, 0x61,
+0x75, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x6c, 0x64, 0x69, 0x76, 0x65, 0x73, 0x0, 0x41, 0x73,
+0x69, 0x61, 0x2f, 0x44, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x73, 0x68,
+0x67, 0x61, 0x62, 0x61, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x73, 0x68, 0x6b, 0x65, 0x6e, 0x74, 0x20,
+0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f,
+0x48, 0x65, 0x62, 0x72, 0x6f, 0x6e, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x47, 0x61, 0x7a, 0x61, 0x0, 0x45, 0x74, 0x63,
+0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x30, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44,
+0x75, 0x6d, 0x6f, 0x6e, 0x74, 0x44, 0x55, 0x72, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69,
+0x63, 0x2f, 0x47, 0x75, 0x61, 0x6d, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x72, 0x75, 0x6b, 0x0,
+0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x53, 0x61, 0x69, 0x70, 0x61, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66,
+0x69, 0x63, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x4d, 0x6f, 0x72, 0x65, 0x73, 0x62, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61,
+0x2f, 0x59, 0x61, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x6e, 0x64, 0x79,
+0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x61, 0x67, 0x65,
0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x65, 0x6e, 0x6f, 0x73, 0x5f, 0x41, 0x69, 0x72, 0x65,
0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x73, 0x74, 0x72, 0x61, 0x6b, 0x68, 0x61, 0x6e, 0x0, 0x41,
0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x6c, 0x69, 0x66, 0x61, 0x78, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72,
@@ -1219,8 +1225,7 @@ static const char ianaIdData[] = {
0x59, 0x6f, 0x72, 0x6b, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, 0x0, 0x41, 0x6d, 0x65,
0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69,
0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e,
-0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41,
-0x6e, 0x67, 0x65, 0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61,
+0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61,
0x6e, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x0, 0x45, 0x75,
0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69,
0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62,
diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp
index 36a221f728..ed7dfe2e41 100644
--- a/src/corelib/tools/qarraydata.cpp
+++ b/src/corelib/tools/qarraydata.cpp
@@ -164,8 +164,6 @@ static const QArrayData qt_array[3] = {
QT_WARNING_POP
static const QArrayData &qt_array_empty = qt_array[0];
-static const QArrayData &qt_array_unsharable_empty = qt_array[1];
-
static inline size_t calculateBlockSize(size_t &capacity, size_t objectSize, size_t headerSize,
uint options)
{
@@ -193,26 +191,21 @@ QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment,
size_t capacity, AllocationOptions options) noexcept
{
// Alignment is a power of two
- Q_ASSERT(alignment >= Q_ALIGNOF(QArrayData)
+ Q_ASSERT(alignment >= alignof(QArrayData)
&& !(alignment & (alignment - 1)));
// Don't allocate empty headers
- if (!(options & RawData) && !capacity) {
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- if (options & Unsharable)
- return const_cast<QArrayData *>(&qt_array_unsharable_empty);
-#endif
+ if (!(options & RawData) && !capacity)
return const_cast<QArrayData *>(&qt_array_empty);
- }
size_t headerSize = sizeof(QArrayData);
- // Allocate extra (alignment - Q_ALIGNOF(QArrayData)) padding bytes so we
+ // Allocate extra (alignment - alignof(QArrayData)) padding bytes so we
// can properly align the data array. This assumes malloc is able to
// provide appropriate alignment for the header -- as it should!
// Padding is skipped when allocating a header for RawData.
if (!(options & RawData))
- headerSize += (alignment - Q_ALIGNOF(QArrayData));
+ headerSize += (alignment - alignof(QArrayData));
if (headerSize > size_t(MaxAllocSize))
return nullptr;
@@ -223,11 +216,7 @@ QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment,
quintptr data = (quintptr(header) + sizeof(QArrayData) + alignment - 1)
& ~(alignment - 1);
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- header->ref.atomic.storeRelaxed(bool(!(options & Unsharable)));
-#else
header->ref.atomic.storeRelaxed(1);
-#endif
header->size = 0;
header->alloc = capacity;
header->capacityReserved = bool(options & CapacityReserved);
@@ -256,15 +245,10 @@ void QArrayData::deallocate(QArrayData *data, size_t objectSize,
size_t alignment) noexcept
{
// Alignment is a power of two
- Q_ASSERT(alignment >= Q_ALIGNOF(QArrayData)
+ Q_ASSERT(alignment >= alignof(QArrayData)
&& !(alignment & (alignment - 1)));
Q_UNUSED(objectSize) Q_UNUSED(alignment)
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- if (data == &qt_array_unsharable_empty)
- return;
-#endif
-
Q_ASSERT_X(data == 0 || !data->ref.isStatic(), "QArrayData::deallocate",
"Static data cannot be deleted");
::free(data);
diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h
index dcd95924c1..0063cf046f 100644
--- a/src/corelib/tools/qarraydata.h
+++ b/src/corelib/tools/qarraydata.h
@@ -78,9 +78,6 @@ struct Q_CORE_EXPORT QArrayData
enum AllocationOption {
CapacityReserved = 0x1,
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- Unsharable = 0x2,
-#endif
RawData = 0x4,
Grow = 0x8,
@@ -222,7 +219,7 @@ struct QTypedArrayData
{
Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData));
return static_cast<QTypedArrayData *>(QArrayData::allocate(sizeof(T),
- Q_ALIGNOF(AlignmentDummy), capacity, options));
+ alignof(AlignmentDummy), capacity, options));
}
static QTypedArrayData *reallocateUnaligned(QTypedArrayData *data, size_t capacity,
@@ -236,7 +233,7 @@ struct QTypedArrayData
static void deallocate(QArrayData *data)
{
Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData));
- QArrayData::deallocate(data, sizeof(T), Q_ALIGNOF(AlignmentDummy));
+ QArrayData::deallocate(data, sizeof(T), alignof(AlignmentDummy));
}
static QTypedArrayData *fromRawData(const T *data, size_t n,
@@ -265,14 +262,6 @@ struct QTypedArrayData
Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData));
return allocate(/* capacity */ 0);
}
-
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- static QTypedArrayData *unsharableEmpty()
- {
- Q_STATIC_ASSERT(sizeof(QTypedArrayData) == sizeof(QArrayData));
- return allocate(/* capacity */ 0, Unsharable);
- }
-#endif
};
template <class T, size_t N>
@@ -295,7 +284,7 @@ struct QArrayDataPointerRef
#define Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER(type, size) \
Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(size,\
- ((sizeof(QArrayData) + (Q_ALIGNOF(type) - 1)) & ~(Q_ALIGNOF(type) - 1) )) \
+ ((sizeof(QArrayData) + (alignof(type) - 1)) & ~(alignof(type) - 1) )) \
/**/
////////////////////////////////////////////////////////////////////////////////
diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h
index af5173c9ad..b8a1ef5d68 100644
--- a/src/corelib/tools/qarraydatapointer.h
+++ b/src/corelib/tools/qarraydatapointer.h
@@ -131,23 +131,6 @@ public:
return (!d->isMutable() || d->ref.isShared());
}
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- void setSharable(bool sharable)
- {
- if (needsDetach()) {
- Data *detached = clone(sharable
- ? d->detachFlags() & ~QArrayData::Unsharable
- : d->detachFlags() | QArrayData::Unsharable);
- QArrayDataPointer old(d);
- d = detached;
- } else {
- d->ref.setSharable(sharable);
- }
- }
-
- bool isSharable() const { return d->isSharable(); }
-#endif
-
void swap(QArrayDataPointer &other) noexcept
{
qSwap(d, other.d);
diff --git a/src/corelib/tools/qcontainerfwd.h b/src/corelib/tools/qcontainerfwd.h
index 532b4c95ce..f6efa99b6a 100644
--- a/src/corelib/tools/qcontainerfwd.h
+++ b/src/corelib/tools/qcontainerfwd.h
@@ -50,7 +50,6 @@ template <class Key, class T> class QHash;
#ifndef QT_NO_LINKED_LIST
template <class T> class QLinkedList;
#endif
-template <class T> class QList;
template <class Key, class T> class QMap;
template <class Key, class T> class QMultiHash;
template <class Key, class T> class QMultiMap;
@@ -60,6 +59,7 @@ template <class T> class QSet;
template <class T> class QStack;
template<class T, int Prealloc = 256> class QVarLengthArray;
template <class T> class QVector;
+template<typename T> using QList = QVector<T>;
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h
index 7b74b4f526..8cae7d1651 100644
--- a/src/corelib/tools/qcontiguouscache.h
+++ b/src/corelib/tools/qcontiguouscache.h
@@ -102,9 +102,6 @@ public:
inline void detach() { if (d->ref.loadRelaxed() != 1) detach_helper(); }
inline bool isDetached() const { return d->ref.loadRelaxed() == 1; }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
-#endif
QContiguousCache<T> &operator=(const QContiguousCache<T> &other);
inline QContiguousCache<T> &operator=(QContiguousCache<T> &&other) noexcept
@@ -166,7 +163,7 @@ private:
}
int alignOfTypedData() const
{
- return qMax<int>(sizeof(void*), Q_ALIGNOF(Data));
+ return qMax<int>(sizeof(void*), alignof(Data));
}
};
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 236e433101..9fd96686f5 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -235,7 +235,7 @@ class QHash
return reinterpret_cast<Node *>(node);
}
- static inline int alignOfNode() { return qMax<int>(sizeof(void*), Q_ALIGNOF(Node)); }
+ static inline int alignOfNode() { return qMax<int>(sizeof(void*), alignof(Node)); }
public:
inline QHash() noexcept : d(const_cast<QHashData *>(&QHashData::shared_null)) { }
@@ -290,9 +290,6 @@ public:
inline void detach() { if (d->ref.isShared()) detach_helper(); }
inline bool isDetached() const { return !d->ref.isShared(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable) { if (!sharable) detach(); if (d != &QHashData::shared_null) d->sharable = sharable; }
-#endif
bool isSharedWith(const QHash &other) const { return d == other.d; }
void clear();
@@ -366,13 +363,8 @@ public:
inline iterator &operator-=(int j) { return *this = *this - j; }
friend inline iterator operator+(int j, iterator k) { return k + j; }
-#ifndef QT_STRICT_ITERATORS
- public:
- inline bool operator==(const const_iterator &o) const
- { return i == o.i; }
- inline bool operator!=(const const_iterator &o) const
- { return i != o.i; }
-#endif
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
};
friend class iterator;
@@ -393,11 +385,7 @@ public:
Q_DECL_CONSTEXPR inline const_iterator() : i(nullptr) { }
explicit inline const_iterator(void *node)
: i(reinterpret_cast<QHashData::Node *>(node)) { }
-#ifdef QT_STRICT_ITERATORS
- explicit inline const_iterator(const iterator &o)
-#else
inline const_iterator(const iterator &o)
-#endif
{ i = o.i; }
inline const Key &key() const { return concrete(i)->key; }
@@ -431,13 +419,6 @@ public:
inline const_iterator &operator+=(int j) { return *this = *this + j; }
inline const_iterator &operator-=(int j) { return *this = *this - j; }
friend inline const_iterator operator+(int j, const_iterator k) { return k + j; }
-
- // ### Qt 5: not sure this is necessary anymore
-#ifdef QT_STRICT_ITERATORS
- private:
- inline bool operator==(const iterator &o) const { return operator==(const_iterator(o)); }
- inline bool operator!=(const iterator &o) const { return operator!=(const_iterator(o)); }
-#endif
};
friend class const_iterator;
diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h
index 8970d39be0..e3713d2c1c 100644
--- a/src/corelib/tools/qlinkedlist.h
+++ b/src/corelib/tools/qlinkedlist.h
@@ -107,9 +107,6 @@ public:
inline void detach()
{ if (d->ref.isShared()) detach_helper2(this->e); }
inline bool isDetached() const { return !d->ref.isShared(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable) { if (!sharable) detach(); if (d != &QLinkedListData::shared_null) d->sharable = sharable; }
-#endif
inline bool isSharedWith(const QLinkedList<T> &other) const { return d == other.d; }
inline bool isEmpty() const { return d->size == 0; }
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index 3dc962236c..62201fd5d6 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -63,2017 +63,4 @@ template class Q_CORE_EXPORT QVector<QPointF>;
template class Q_CORE_EXPORT QVector<QPoint>;
#endif
-
-/*
- QList as an array-list combines the easy-of-use of a random
- access interface with fast list operations and the low memory
- management overhead of an array. Accessing elements by index,
- appending, prepending, and removing elements from both the front
- and the back all happen in constant time O(1). Inserting or
- removing elements at random index positions \ai happens in linear
- time, or more precisly in O(min{i,n-i}) <= O(n/2), with n being
- the number of elements in the list.
-*/
-
-const QListData::Data QListData::shared_null = { Q_REFCOUNT_INITIALIZE_STATIC, 0, 0, 0, { nullptr } };
-
-/*!
- * Detaches the QListData by allocating new memory for a list which will be bigger
- * than the copied one and is expected to grow further.
- * *idx is the desired insertion point and is clamped to the actual size of the list.
- * num is the number of new elements to insert at the insertion point.
- * Returns the old (shared) data, it is up to the caller to deref() and free().
- * For the new data node_copy needs to be called.
- *
- * \internal
- */
-QListData::Data *QListData::detach_grow(int *idx, int num)
-{
- Data *x = d;
- int l = x->end - x->begin;
- int nl = l + num;
- auto blockInfo = qCalculateGrowingBlockSize(nl, sizeof(void *), DataHeaderSize);
- Data* t = static_cast<Data *>(::malloc(blockInfo.size));
- Q_CHECK_PTR(t);
- t->alloc = int(uint(blockInfo.elementCount));
-
- t->ref.initializeOwned();
- // The space reservation algorithm's optimization is biased towards appending:
- // Something which looks like an append will put the data at the beginning,
- // while something which looks like a prepend will put it in the middle
- // instead of at the end. That's based on the assumption that prepending
- // is uncommon and even an initial prepend will eventually be followed by
- // at least some appends.
- int bg;
- if (*idx < 0) {
- *idx = 0;
- bg = (t->alloc - nl) >> 1;
- } else if (*idx > l) {
- *idx = l;
- bg = 0;
- } else if (*idx < (l >> 1)) {
- bg = (t->alloc - nl) >> 1;
- } else {
- bg = 0;
- }
- t->begin = bg;
- t->end = bg + nl;
- d = t;
-
- return x;
-}
-
-/*!
- * Detaches the QListData by allocating new memory for a list which possibly
- * has a different size than the copied one.
- * Returns the old (shared) data, it is up to the caller to deref() and free()
- * For the new data node_copy needs to be called.
- *
- * \internal
- */
-QListData::Data *QListData::detach(int alloc)
-{
- Data *x = d;
- Data* t = static_cast<Data *>(::malloc(qCalculateBlockSize(alloc, sizeof(void*), DataHeaderSize)));
- Q_CHECK_PTR(t);
-
- t->ref.initializeOwned();
- t->alloc = alloc;
- if (!alloc) {
- t->begin = 0;
- t->end = 0;
- } else {
- t->begin = x->begin;
- t->end = x->end;
- }
- d = t;
-
- return x;
-}
-
-void QListData::realloc(int alloc)
-{
- Q_ASSERT(!d->ref.isShared());
- Data *x = static_cast<Data *>(::realloc(d, qCalculateBlockSize(alloc, sizeof(void *), DataHeaderSize)));
- Q_CHECK_PTR(x);
-
- d = x;
- d->alloc = alloc;
- if (!alloc)
- d->begin = d->end = 0;
-}
-
-void QListData::realloc_grow(int growth)
-{
- Q_ASSERT(!d->ref.isShared());
- auto r = qCalculateGrowingBlockSize(d->alloc + growth, sizeof(void *), DataHeaderSize);
- Data *x = static_cast<Data *>(::realloc(d, r.size));
- Q_CHECK_PTR(x);
-
- d = x;
- d->alloc = int(uint(r.elementCount));
-}
-
-void QListData::dispose(Data *d)
-{
- Q_ASSERT(!d->ref.isShared());
- free(d);
-}
-
-// ensures that enough space is available to append n elements
-void **QListData::append(int n)
-{
- Q_ASSERT(!d->ref.isShared());
- int e = d->end;
- if (e + n > d->alloc) {
- int b = d->begin;
- if (b - n >= 2 * d->alloc / 3) {
- // we have enough space. Just not at the end -> move it.
- e -= b;
- ::memcpy(d->array, d->array + b, e * sizeof(void *));
- d->begin = 0;
- } else {
- realloc_grow(n);
- }
- }
- d->end = e + n;
- return d->array + e;
-}
-
-// ensures that enough space is available to append one element
-void **QListData::append()
-{
- return append(1);
-}
-
-// ensures that enough space is available to append the list
-void **QListData::append(const QListData& l)
-{
- return append(l.d->end - l.d->begin);
-}
-
-void **QListData::prepend()
-{
- Q_ASSERT(!d->ref.isShared());
- if (d->begin == 0) {
- if (d->end >= d->alloc / 3)
- realloc_grow(1);
-
- if (d->end < d->alloc / 3)
- d->begin = d->alloc - 2 * d->end;
- else
- d->begin = d->alloc - d->end;
-
- ::memmove(d->array + d->begin, d->array, d->end * sizeof(void *));
- d->end += d->begin;
- }
- return d->array + --d->begin;
-}
-
-void **QListData::insert(int i)
-{
- Q_ASSERT(!d->ref.isShared());
- if (i <= 0)
- return prepend();
- int size = d->end - d->begin;
- if (i >= size)
- return append();
-
- bool leftward = false;
-
- if (d->begin == 0) {
- if (d->end == d->alloc) {
- // If the array is full, we expand it and move some items rightward
- realloc_grow(1);
- } else {
- // If there is free space at the end of the array, we move some items rightward
- }
- } else {
- if (d->end == d->alloc) {
- // If there is free space at the beginning of the array, we move some items leftward
- leftward = true;
- } else {
- // If there is free space at both ends, we move as few items as possible
- leftward = (i < size - i);
- }
- }
-
- if (leftward) {
- --d->begin;
- ::memmove(d->array + d->begin, d->array + d->begin + 1, i * sizeof(void *));
- } else {
- ::memmove(d->array + d->begin + i + 1, d->array + d->begin + i,
- (size - i) * sizeof(void *));
- ++d->end;
- }
- return d->array + d->begin + i;
-}
-
-void QListData::remove(int i)
-{
- Q_ASSERT(!d->ref.isShared());
- i += d->begin;
- if (i - d->begin < d->end - i) {
- if (int offset = i - d->begin)
- ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *));
- d->begin++;
- } else {
- if (int offset = d->end - i - 1)
- ::memmove(d->array + i, d->array + i + 1, offset * sizeof(void *));
- d->end--;
- }
-}
-
-void QListData::remove(int i, int n)
-{
- Q_ASSERT(!d->ref.isShared());
- i += d->begin;
- int middle = i + n/2;
- if (middle - d->begin < d->end - middle) {
- ::memmove(d->array + d->begin + n, d->array + d->begin,
- (i - d->begin) * sizeof(void*));
- d->begin += n;
- } else {
- ::memmove(d->array + i, d->array + i + n,
- (d->end - i - n) * sizeof(void*));
- d->end -= n;
- }
-}
-
-void QListData::move(int from, int to)
-{
- Q_ASSERT(!d->ref.isShared());
- if (from == to)
- return;
-
- from += d->begin;
- to += d->begin;
- void *t = d->array[from];
-
- if (from < to) {
- if (d->end == d->alloc || 3 * (to - from) < 2 * (d->end - d->begin)) {
- ::memmove(d->array + from, d->array + from + 1, (to - from) * sizeof(void *));
- } else {
- // optimization
- if (int offset = from - d->begin)
- ::memmove(d->array + d->begin + 1, d->array + d->begin, offset * sizeof(void *));
- if (int offset = d->end - (to + 1))
- ::memmove(d->array + to + 2, d->array + to + 1, offset * sizeof(void *));
- ++d->begin;
- ++d->end;
- ++to;
- }
- } else {
- if (d->begin == 0 || 3 * (from - to) < 2 * (d->end - d->begin)) {
- ::memmove(d->array + to + 1, d->array + to, (from - to) * sizeof(void *));
- } else {
- // optimization
- if (int offset = to - d->begin)
- ::memmove(d->array + d->begin - 1, d->array + d->begin, offset * sizeof(void *));
- if (int offset = d->end - (from + 1))
- ::memmove(d->array + from, d->array + from + 1, offset * sizeof(void *));
- --d->begin;
- --d->end;
- --to;
- }
- }
- d->array[to] = t;
-}
-
-void **QListData::erase(void **xi)
-{
- Q_ASSERT(!d->ref.isShared());
- int i = xi - (d->array + d->begin);
- remove(i);
- return d->array + d->begin + i;
-}
-
-/*! \class QList
- \inmodule QtCore
- \brief The QList class is a template class that provides lists.
-
- \ingroup tools
- \ingroup shared
-
- \reentrant
-
- QList\<T\> is one of Qt's generic \l{container classes}. It
- stores items in a list that provides fast index-based access
- and index-based insertions and removals.
-
- QList\<T\>, QLinkedList\<T\>, and QVector\<T\> provide similar
- APIs and functionality. They are often interchangeable, but there
- are performance consequences. Here is an overview of use cases:
-
- \list
- \li QVector should be your default first choice.
- QVector\<T\> will usually give better performance than QList\<T\>,
- because QVector\<T\> always stores its items sequentially in memory,
- where QList\<T\> will allocate its items on the heap unless
- \c {sizeof(T) <= sizeof(void*)} and T has been declared to be
- either a \c{Q_MOVABLE_TYPE} or a \c{Q_PRIMITIVE_TYPE} using
- \l {Q_DECLARE_TYPEINFO}. See the \l {Pros and Cons of Using QList}
- for an explanation.
- \li However, QList is used throughout the Qt APIs for passing
- parameters and for returning values. Use QList to interface with
- those APIs.
- \li If you need a real linked list, which guarantees
- \l {Algorithmic Complexity}{constant time} insertions mid-list and
- uses iterators to items rather than indexes, use QLinkedList.
- \endlist
-
- \note QVector and QVarLengthArray both guarantee C-compatible
- array layout. QList does not. This might be important if your
- application must interface with a C API.
-
- \note Iterators into a QLinkedList and references into
- heap-allocating QLists remain valid as long as the referenced items
- remain in the container. This is not true for iterators and
- references into a QVector and non-heap-allocating QLists.
-
- Internally, QList\<T\> is represented as an array of T if
- \c{sizeof(T) <= sizeof(void*)} and T has been declared to be
- either a \c{Q_MOVABLE_TYPE} or a \c{Q_PRIMITIVE_TYPE} using
- \l {Q_DECLARE_TYPEINFO}. Otherwise, QList\<T\> is represented
- as an array of T* and the items are allocated on the heap.
-
- The array representation allows very fast insertions and
- index-based access. The prepend() and append() operations are
- also very fast because QList preallocates memory at both
- ends of its internal array. (See \l{Algorithmic Complexity} for
- details.
-
- Note, however, that when the conditions specified above are not met,
- each append or insert of a new item requires allocating the new item
- on the heap, and this per item allocation will make QVector a better
- choice for use cases that do a lot of appending or inserting, because
- QVector can allocate memory for many items in a single heap allocation.
-
- Note that the internal array only ever gets bigger over the life
- of the list. It never shrinks. The internal array is deallocated
- by the destructor and by the assignment operator, when one list
- is assigned to another.
-
- Here's an example of a QList that stores integers and
- a QList that stores QDate values:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 0
-
- Qt includes a QStringList class that inherits QList\<QString\>
- and adds a few convenience functions, such as QStringList::join()
- and QStringList::filter(). QString::split() creates QStringLists
- from strings.
-
- QList stores a list of items. The default constructor creates an
- empty list. You can use the initializer-list constructor to create
- a list with elements:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 1a
-
- QList provides these basic functions to add, move, and remove
- items: insert(), replace(), removeAt(), move(), and swap(). In
- addition, it provides the following convenience functions:
- append(), \l{operator<<()}, \l{operator+=()}, prepend(), removeFirst(),
- and removeLast().
-
- \l{operator<<()} allows to conveniently add multiple elements to a list:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 1b
-
- QList uses 0-based indexes, just like C++ arrays. To access the
- item at a particular index position, you can use operator[](). On
- non-const lists, operator[]() returns a reference to the item and
- can be used on the left side of an assignment:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 2
-
- Because QList is implemented as an array of pointers for types
- that are larger than a pointer or are not movable, this operation
- requires (\l{Algorithmic Complexity}{constant time}). For read-only
- access, an alternative syntax is to use at():
-
- \snippet code/src_corelib_tools_qlistdata.cpp 3
-
- at() can be faster than operator[](), because it never causes a
- \l{deep copy} to occur.
-
- A common requirement is to remove an item from a list and do
- something with it. For this, QList provides takeAt(), takeFirst(),
- and takeLast(). Here's a loop that removes the items from a list
- one at a time and calls \c delete on them:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 4
-
- Inserting and removing items at either end of the list is very
- fast (\l{Algorithmic Complexity}{constant time} in most cases),
- because QList preallocates extra space on both sides of its
- internal buffer to allow for fast growth at both ends of the list.
-
- If you want to find all occurrences of a particular value in a
- list, use indexOf() or lastIndexOf(). The former searches forward
- starting from a given index position, the latter searches
- backward. Both return the index of a matching item if they find
- it; otherwise, they return -1. For example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 5
-
- If you simply want to check whether a list contains a particular
- value, use contains(). If you want to find out how many times a
- particular value occurs in the list, use count(). If you want to
- replace all occurrences of a particular value with another, use
- replace().
-
- QList's value type must be an \l{assignable data type}. This
- covers most data types that are commonly used, but the compiler
- won't let you, for example, store a QWidget as a value; instead,
- store a QWidget *. A few functions have additional requirements;
- for example, indexOf() and lastIndexOf() expect the value type to
- support \c operator==(). These requirements are documented on a
- per-function basis.
-
- Like the other container classes, QList provides \l{Java-style
- iterators} (QListIterator and QMutableListIterator) and
- \l{STL-style iterators} (QList::const_iterator and
- QList::iterator). In practice, these are rarely used, because you
- can use indexes into the QList. QList is implemented in such a way
- that direct index-based access is just as fast as using iterators.
-
- QList does \e not support inserting, prepending, appending or
- replacing with references to its own values. Doing so will cause
- your application to abort with an error message.
-
- To make QList as efficient as possible, its member functions don't
- validate their input before using it. Except for isEmpty(), member
- functions always assume the list is \e not empty. Member functions
- that take index values as parameters always assume their index
- value parameters are in the valid range. This means QList member
- functions can fail. If you define QT_NO_DEBUG when you compile,
- failures will not be detected. If you \e don't define QT_NO_DEBUG,
- failures will be detected using Q_ASSERT() or Q_ASSERT_X() with an
- appropriate message.
-
- To avoid failures when your list can be empty, call isEmpty()
- before calling other member functions. If you must pass an index
- value that might not be in the valid range, check that it is less
- than the value returned by size() but \e not less than 0.
-
- \section1 More Members
-
- If T is a QByteArray, this class has a couple more members that can be
- used. See the documentation for QByteArrayList for more information.
-
- If T is QString, this class has the following additional members:
- \l{QStringList::filter()}{filter},
- \l{QStringList::join()}{join},
- \l{QStringList::removeDuplicates()}{removeDuplicates},
- \l{QStringList::sort()}{sort}.
-
- \section1 More Information on Using Qt Containers
-
- For a detailed discussion comparing Qt containers with each other and
- with STL containers, see \l {Understand the Qt Containers}.
-
- \sa QListIterator, QMutableListIterator, QLinkedList, QVector
-*/
-
-/*!
- \fn template <class T> QList<T>::QList(QList<T> &&other)
-
- Move-constructs a QList instance, making it point at the same
- object that \a other was pointing to.
-
- \since 5.2
-*/
-
-/*! \fn template <class T> template<typename InputIterator> QList<T>::QList(InputIterator first, InputIterator last)
- \since 5.14
-
- Constructs a QList with the contents in the iterator range [\a first, \a last).
-
- The value type of \c InputIterator must be convertible to \c T.
-*/
-
-/*!
- \fn template <class T> QList<T> QList<T>::mid(int pos, int length) const
-
- Returns a sub-list which includes elements from this list,
- starting at position \a pos. If \a length is -1 (the default), all
- elements from \a pos are included; otherwise \a length elements (or
- all remaining elements if there are less than \a length elements)
- are included.
-*/
-
-/*! \fn template <class T> QList<T>::QList()
-
- Constructs an empty list.
-*/
-
-/*! \fn template <class T> QList<T>::QList(const QList<T> &other)
-
- Constructs a copy of \a other.
-
- This operation takes \l{Algorithmic Complexity}{constant time},
- because QList is \l{implicitly shared}. This makes returning a
- QList from a function very fast. If a shared instance is modified,
- it will be copied (copy-on-write), and that takes
- \l{Algorithmic Complexity}{linear time}.
-
- \sa operator=()
-*/
-
-/*! \fn template <class T> QList<T>::QList(std::initializer_list<T> args)
- \since 4.8
-
- Construct a list from the std::initializer_list specified by \a args.
-
- This constructor is only enabled if the compiler supports C++11 initializer
- lists.
-*/
-
-/*! \fn template <class T> QList<T>::~QList()
-
- Destroys the list. References to the values in the list and all
- iterators of this list become invalid.
-*/
-
-/*! \fn template <class T> QList<T> &QList<T>::operator=(const QList<T> &other)
-
- Assigns \a other to this list and returns a reference to this
- list.
-*/
-
-/*!
- \fn template <class T> QList &QList<T>::operator=(QList<T> &&other)
-
- Move-assigns \a other to this QList instance.
-
- \since 5.2
-*/
-
-/*! \fn template <class T> void QList<T>::swap(QList<T> &other)
- \since 4.8
-
- Swaps list \a other with this list. This operation is very
- fast and never fails.
-*/
-
-/*! \fn template <class T> bool QList<T>::operator==(const QList<T> &other) const
-
- Returns \c true if \a other is equal to this list; otherwise returns
- false.
-
- Two lists are considered equal if they contain the same values in
- the same order.
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa operator!=()
-*/
-
-/*! \fn template <class T> bool QList<T>::operator!=(const QList<T> &other) const
-
- Returns \c true if \a other is not equal to this list; otherwise
- returns \c false.
-
- Two lists are considered equal if they contain the same values in
- the same order.
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa operator==()
-*/
-
-/*! \fn template <class T> bool operator<(const QList<T> &lhs, const QList<T> &rhs)
- \since 5.6
- \relates QList
-
- Returns \c true if list \a lhs is
- \l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically less than} \a rhs; otherwise returns \c false.
-
- This function requires the value type to have an implementation
- of \c operator<().
-*/
-
-/*! \fn template <class T> bool operator<=(const QList<T> &lhs, const QList<T> &rhs)
- \since 5.6
- \relates QList
-
- Returns \c true if list \a lhs is
- \l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically less than or equal to} \a rhs; otherwise returns \c false.
-
- This function requires the value type to have an implementation
- of \c operator<().
-*/
-
-/*! \fn template <class T> bool operator>(const QList<T> &lhs, const QList<T> &rhs)
- \since 5.6
- \relates QList
-
- Returns \c true if list \a lhs is
- \l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically greater than} \a rhs; otherwise returns \c false.
-
- This function requires the value type to have an implementation
- of \c operator<().
-*/
-
-/*! \fn template <class T> bool operator>=(const QList<T> &lhs, const QList<T> &rhs)
- \since 5.6
- \relates QList
-
- Returns \c true if list \a lhs is
- \l{http://en.cppreference.com/w/cpp/algorithm/lexicographical_compare}
- {lexicographically greater than or equal to} \a rhs; otherwise returns \c false.
-
- This function requires the value type to have an implementation
- of \c operator<().
-*/
-
-/*!
- \fn template <class T> uint qHash(const QList<T> &key, uint seed = 0)
- \since 5.6
- \relates QList
-
- Returns the hash value for \a key,
- using \a seed to seed the calculation.
-
- This function requires qHash() to be overloaded for the value type \c T.
-*/
-
-/*!
- \fn template <class T> int QList<T>::size() const
-
- Returns the number of items in the list.
-
- \sa isEmpty(), count()
-*/
-
-/*! \fn template <class T> void QList<T>::detach()
-
- \internal
-*/
-
-/*! \fn template <class T> void QList<T>::detachShared()
-
- \internal
-
- like detach(), but does nothing if we're shared_null.
- This prevents needless mallocs, and makes QList more exception safe
- in case of cleanup work done in destructors on empty lists.
-*/
-
-/*! \fn template <class T> bool QList<T>::isDetached() const
-
- \internal
-*/
-
-/*! \fn template <class T> void QList<T>::setSharable(bool sharable)
-
- \internal
-*/
-
-/*! \fn template <class T> bool QList<T>::isSharedWith(const QList<T> &other) const
-
- \internal
-*/
-
-/*! \fn template <class T> bool QList<T>::isEmpty() const
-
- Returns \c true if the list contains no items; otherwise returns
- false.
-
- \sa size()
-*/
-
-/*! \fn template <class T> void QList<T>::clear()
-
- Removes all items from the list.
-
- \sa removeAll()
-*/
-
-/*! \fn template <class T> const T &QList<T>::at(int i) const
-
- Returns the item at index position \a i in the list. \a i must be
- a valid index position in the list (i.e., 0 <= \a i < size()).
-
- This function is very fast (\l{Algorithmic Complexity}{constant time}).
-
- \sa value(), operator[]()
-*/
-
-/*! \fn template <class T> T &QList<T>::operator[](int i)
-
- Returns the item at index position \a i as a modifiable reference.
- \a i must be a valid index position in the list (i.e., 0 <= \a i <
- size()).
-
- If this function is called on a list that is currently being shared, it
- will trigger a copy of all elements. Otherwise, this function runs in
- \l{Algorithmic Complexity}{constant time}. If you do not want to modify
- the list you should use QList::at().
-
- \sa at(), value()
-*/
-
-/*! \fn template <class T> const T &QList<T>::operator[](int i) const
-
- \overload
-
- Same as at(). This function runs in \l{Algorithmic Complexity}{constant time}.
-*/
-
-/*! \fn template <class T> void QList<T>::reserve(int alloc)
-
- Reserve space for \a alloc elements.
-
- If \a alloc is smaller than the current size of the list, nothing will happen.
-
- Use this function to avoid repetetive reallocation of QList's internal
- data if you can predict how many elements will be appended.
- Note that the reservation applies only to the internal pointer array.
-
- \since 4.7
-*/
-
-/*! \fn template <class T> void QList<T>::append(const T &value)
-
- Inserts \a value at the end of the list.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 6
-
- This is the same as list.insert(size(), \a value).
-
- If this list is not shared, this operation is typically
- very fast (amortized \l{Algorithmic Complexity}{constant time}),
- because QList preallocates extra space on both sides of its
- internal buffer to allow for fast growth at both ends of the list.
-
- \sa operator<<(), prepend(), insert()
-*/
-
-/*! \fn template <class T> void QList<T>::append(const QList<T> &value)
-
- \overload
-
- \since 4.5
-
- Appends the items of the \a value list to this list.
-
- \sa operator<<(), operator+=()
-*/
-
-/*! \fn template <class T> void QList<T>::prepend(const T &value)
-
- Inserts \a value at the beginning of the list.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 7
-
- This is the same as list.insert(0, \a value).
-
- If this list is not shared, this operation is typically
- very fast (amortized \l{Algorithmic Complexity}{constant time}),
- because QList preallocates extra space on both sides of its
- internal buffer to allow for fast growth at both ends of the list.
-
- \sa append(), insert()
-*/
-
-/*! \fn template <class T> void QList<T>::insert(int i, const T &value)
-
- Inserts \a value at index position \a i in the list.
-
- If \a i == 0, the value is prepended to the list. If \a i == size(),
- the value is appended to the list.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 8
-
- \sa append(), prepend(), replace(), removeAt()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::insert(iterator before, const T &value)
-
- \overload
-
- Inserts \a value in front of the item pointed to by the
- iterator \a before. Returns an iterator pointing at the inserted
- item. Note that the iterator passed to the function will be
- invalid after the call; the returned iterator should be used
- instead.
-*/
-
-/*! \fn template <class T> void QList<T>::replace(int i, const T &value)
-
- Replaces the item at index position \a i with \a value. \a i must
- be a valid index position in the list (i.e., 0 <= \a i < size()).
-
- \sa operator[](), removeAt()
-*/
-
-/*!
- \fn template <class T> int QList<T>::removeAll(const T &value)
-
- Removes all occurrences of \a value in the list and returns the
- number of entries removed.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 9
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa removeOne(), removeAt(), takeAt(), replace()
-*/
-
-/*!
- \fn template <class T> bool QList<T>::removeOne(const T &value)
- \since 4.4
-
- Removes the first occurrence of \a value in the list and returns
- true on success; otherwise returns \c false.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 10
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa removeAll(), removeAt(), takeAt(), replace()
-*/
-
-/*! \fn template <class T> void QList<T>::removeAt(int i)
-
- Removes the item at index position \a i. \a i must be a valid
- index position in the list (i.e., 0 <= \a i < size()).
-
- \sa takeAt(), removeFirst(), removeLast(), removeOne()
-*/
-
-/*! \fn template <class T> T QList<T>::takeAt(int i)
-
- Removes the item at index position \a i and returns it. \a i must
- be a valid index position in the list (i.e., 0 <= \a i < size()).
-
- If you don't use the return value, removeAt() is more efficient.
-
- \sa removeAt(), takeFirst(), takeLast()
-*/
-
-/*! \fn template <class T> T QList<T>::takeFirst()
-
- Removes the first item in the list and returns it. This is the
- same as takeAt(0). This function assumes the list is not empty. To
- avoid failure, call isEmpty() before calling this function.
-
- If this list is not shared, this operation takes
- \l {Algorithmic Complexity}{constant time}.
-
- If you don't use the return value, removeFirst() is more
- efficient.
-
- \sa takeLast(), takeAt(), removeFirst()
-*/
-
-/*! \fn template <class T> T QList<T>::takeLast()
-
- Removes the last item in the list and returns it. This is the
- same as takeAt(size() - 1). This function assumes the list is
- not empty. To avoid failure, call isEmpty() before calling this
- function.
-
- If this list is not shared, this operation takes
- \l {Algorithmic Complexity}{constant time}.
-
- If you don't use the return value, removeLast() is more
- efficient.
-
- \sa takeFirst(), takeAt(), removeLast()
-*/
-
-/*! \fn template <class T> void QList<T>::move(int from, int to)
-
- Moves the item at index position \a from to index position \a to.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 11
-
- This is the same as insert(\a{to}, takeAt(\a{from})).This function
- assumes that both \a from and \a to are at least 0 but less than
- size(). To avoid failure, test that both \a from and \a to are at
- least 0 and less than size().
-
- \sa swap(), insert(), takeAt()
-*/
-
-/*! \fn template <class T> void QList<T>::swap(int i, int j)
-
- \obsolete Use swapItemsAt()
-
- \sa move(), swapItemsAt()
-*/
-
-/*! \fn template <class T> void QList<T>::swapItemsAt(int i, int j)
- \since 5.13
-
- Exchange the item at index position \a i with the item at index
- position \a j. This function assumes that both \a i and \a j are
- at least 0 but less than size(). To avoid failure, test that both
- \a i and \a j are at least 0 and less than size().
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 12
-
- \sa move()
-*/
-
-/*! \fn template <class T> int QList<T>::indexOf(const T &value, int from = 0) const
-
- Returns the index position of the first occurrence of \a value in
- the list, searching forward from index position \a from. Returns
- -1 if no item matched.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 13
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- Note that QList uses 0-based indexes, just like C++ arrays. Negative
- indexes are not supported with the exception of the value mentioned
- above.
-
- \sa lastIndexOf(), contains()
-*/
-
-/*! \fn template <class T> int QList<T>::lastIndexOf(const T &value, int from = -1) const
-
- Returns the index position of the last occurrence of \a value in
- the list, searching backward from index position \a from. If \a
- from is -1 (the default), the search starts at the last item.
- Returns -1 if no item matched.
-
- Example:
- \snippet code/src_corelib_tools_qlistdata.cpp 14
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- Note that QList uses 0-based indexes, just like C++ arrays. Negative
- indexes are not supported with the exception of the value mentioned
- above.
-
- \sa indexOf()
-*/
-
-/*! \fn template <class T> bool QList<T>::contains(const T &value) const
-
- Returns \c true if the list contains an occurrence of \a value;
- otherwise returns \c false.
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa indexOf(), count()
-*/
-
-/*! \fn template <class T> int QList<T>::count(const T &value) const
-
- Returns the number of occurrences of \a value in the list.
-
- This function requires the value type to have an implementation of
- \c operator==().
-
- \sa contains(), indexOf()
-*/
-
-/*! \fn template <class T> bool QList<T>::startsWith(const T &value) const
- \since 4.5
-
- Returns \c true if this list is not empty and its first
- item is equal to \a value; otherwise returns \c false.
-
- \sa isEmpty(), contains()
-*/
-
-/*! \fn template <class T> bool QList<T>::endsWith(const T &value) const
- \since 4.5
-
- Returns \c true if this list is not empty and its last
- item is equal to \a value; otherwise returns \c false.
-
- \sa isEmpty(), contains()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::begin()
-
- Returns an \l{STL-style iterators}{STL-style iterator} pointing to the first item in
- the list.
-
- \sa constBegin(), end()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::begin() const
-
- \overload
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::cbegin() const
- \since 5.0
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first item
- in the list.
-
- \sa begin(), cend()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::constBegin() const
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first item
- in the list.
-
- \sa begin(), constEnd()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::end()
-
- Returns an \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item
- after the last item in the list.
-
- \sa begin(), constEnd()
-*/
-
-/*! \fn template <class T> const_iterator QList<T>::end() const
-
- \overload
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::cend() const
- \since 5.0
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary
- item after the last item in the list.
-
- \sa cbegin(), end()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::constEnd() const
-
- Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary
- item after the last item in the list.
-
- \sa constBegin(), end()
-*/
-
-/*! \fn template <class T> QList<T>::reverse_iterator QList<T>::rbegin()
- \since 5.6
-
- Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to the first
- item in the list, in reverse order.
-
- \sa begin(), crbegin(), rend()
-*/
-
-/*! \fn template <class T> QList<T>::const_reverse_iterator QList<T>::rbegin() const
- \since 5.6
- \overload
-*/
-
-/*! \fn template <class T> QList<T>::const_reverse_iterator QList<T>::crbegin() const
- \since 5.6
-
- Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to the first
- item in the list, in reverse order.
-
- \sa begin(), rbegin(), rend()
-*/
-
-/*! \fn template <class T> QList<T>::reverse_iterator QList<T>::rend()
- \since 5.6
-
- Returns a \l{STL-style iterators}{STL-style} reverse iterator pointing to one past
- the last item in the list, in reverse order.
-
- \sa end(), crend(), rbegin()
-*/
-
-/*! \fn template <class T> QList<T>::const_reverse_iterator QList<T>::rend() const
- \since 5.6
- \overload
-*/
-
-/*! \fn template <class T> QList<T>::const_reverse_iterator QList<T>::crend() const
- \since 5.6
-
- Returns a const \l{STL-style iterators}{STL-style} reverse iterator pointing to one
- past the last item in the list, in reverse order.
-
- \sa end(), rend(), rbegin()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::erase(iterator pos)
-
- Removes the item associated with the iterator \a pos from the
- list, and returns an iterator to the next item in the list (which
- may be end()).
-
- \sa insert(), removeAt()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::erase(iterator begin, iterator end)
-
- \overload
-
- Removes all the items from \a begin up to (but not including) \a
- end. Returns an iterator to the same item that \a end referred to
- before the call.
-*/
-
-/*! \typedef QList::Iterator
-
- Qt-style synonym for QList::iterator.
-*/
-
-/*! \typedef QList::ConstIterator
-
- Qt-style synonym for QList::const_iterator.
-*/
-
-/*!
- \typedef QList::size_type
-
- Typedef for int. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::value_type
-
- Typedef for T. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::difference_type
-
- Typedef for ptrdiff_t. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::pointer
-
- Typedef for T *. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::const_pointer
-
- Typedef for const T *. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::reference
-
- Typedef for T &. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QList::const_reference
-
- Typedef for const T &. Provided for STL compatibility.
-*/
-
-/*! \typedef QList::reverse_iterator
- \since 5.6
-
- The QList::reverse_iterator typedef provides an STL-style non-const
- reverse iterator for QList.
-
- It is simply a typedef for \c{std::reverse_iterator<iterator>}.
-
- \warning Iterators on implicitly shared containers do not work
- exactly like STL-iterators. You should avoid copying a container
- while iterators are active on that container. For more information,
- read \l{Implicit sharing iterator problem}.
-
- \sa QList::rbegin(), QList::rend(), QList::const_reverse_iterator, QList::iterator
-*/
-
-/*! \typedef QList::const_reverse_iterator
- \since 5.6
-
- The QList::const_reverse_iterator typedef provides an STL-style const
- reverse iterator for QList.
-
- It is simply a typedef for \c{std::reverse_iterator<const_iterator>}.
-
- \warning Iterators on implicitly shared containers do not work
- exactly like STL-iterators. You should avoid copying a container
- while iterators are active on that container. For more information,
- read \l{Implicit sharing iterator problem}.
-
- \sa QList::rbegin(), QList::rend(), QList::reverse_iterator, QList::const_iterator
-*/
-
-/*! \fn template <class T> int QList<T>::count() const
-
- Returns the number of items in the list. This is effectively the
- same as size().
-*/
-
-/*! \fn template <class T> int QList<T>::length() const
- \since 4.5
-
- This function is identical to count().
-
- \sa count()
-*/
-
-/*! \fn template <class T> T& QList<T>::first()
-
- Returns a reference to the first item in the list. The list must
- not be empty. If the list can be empty, call isEmpty() before
- calling this function.
-
- \sa constFirst(), last(), isEmpty()
-*/
-
-/*! \fn template <class T> const T& QList<T>::first() const
-
- \overload
-*/
-
-/*! \fn template <class T> const T& QList<T>::constFirst() const
- \since 5.6
-
- Returns a const reference to the first item in the list. The list must
- not be empty. If the list can be empty, call isEmpty() before
- calling this function.
-
- \sa constLast(), isEmpty(), first()
-*/
-
-/*! \fn template <class T> T& QList<T>::last()
-
- Returns a reference to the last item in the list. The list must
- not be empty. If the list can be empty, call isEmpty() before
- calling this function.
-
- \sa constLast(), first(), isEmpty()
-*/
-
-/*! \fn template <class T> const T& QList<T>::last() const
-
- \overload
-*/
-
-/*! \fn template <class T> const T& QList<T>::constLast() const
- \since 5.6
-
- Returns a reference to the last item in the list. The list must
- not be empty. If the list can be empty, call isEmpty() before
- calling this function.
-
- \sa constFirst(), isEmpty(), last()
-*/
-
-/*! \fn template <class T> void QList<T>::removeFirst()
-
- Removes the first item in the list. Calling this function is
- equivalent to calling removeAt(0). The list must not be empty. If
- the list can be empty, call isEmpty() before calling this
- function.
-
- \sa removeAt(), takeFirst()
-*/
-
-/*! \fn template <class T> void QList<T>::removeLast()
-
- Removes the last item in the list. Calling this function is
- equivalent to calling removeAt(size() - 1). The list must not be
- empty. If the list can be empty, call isEmpty() before calling
- this function.
-
- \sa removeAt(), takeLast()
-*/
-
-/*! \fn template <class T> T QList<T>::value(int i) const
-
- Returns the value at index position \a i in the list.
-
- If the index \a i is out of bounds, the function returns a
- \l{default-constructed value}. If you are certain that the index
- is going to be within bounds, you can use at() instead, which is
- slightly faster.
-
- \sa at(), operator[]()
-*/
-
-/*! \fn template <class T> T QList<T>::value(int i, const T &defaultValue) const
-
- \overload
-
- If the index \a i is out of bounds, the function returns
- \a defaultValue.
-*/
-
-/*! \fn template <class T> void QList<T>::push_back(const T &value)
-
- This function is provided for STL compatibility. It is equivalent
- to \l{QList::append()}{append(\a value)}.
-*/
-
-/*! \fn template <class T> void QList<T>::push_front(const T &value)
-
- This function is provided for STL compatibility. It is equivalent
- to \l{QList::prepend()}{prepend(\a value)}.
-*/
-
-/*! \fn template <class T> T& QList<T>::front()
-
- This function is provided for STL compatibility. It is equivalent
- to first(). The list must not be empty. If the list can be empty,
- call isEmpty() before calling this function.
-*/
-
-/*! \fn template <class T> const T& QList<T>::front() const
-
- \overload
-*/
-
-/*! \fn template <class T> T& QList<T>::back()
-
- This function is provided for STL compatibility. It is equivalent
- to last(). The list must not be empty. If the list can be empty,
- call isEmpty() before calling this function.
-*/
-
-/*! \fn template <class T> const T& QList<T>::back() const
-
- \overload
-*/
-
-/*! \fn template <class T> void QList<T>::pop_front()
-
- This function is provided for STL compatibility. It is equivalent
- to removeFirst(). The list must not be empty. If the list can be
- empty, call isEmpty() before calling this function.
-*/
-
-/*! \fn template <class T> void QList<T>::pop_back()
-
- This function is provided for STL compatibility. It is equivalent
- to removeLast(). The list must not be empty. If the list can be
- empty, call isEmpty() before calling this function.
-*/
-
-/*! \fn template <class T> bool QList<T>::empty() const
-
- This function is provided for STL compatibility. It is equivalent
- to isEmpty() and returns \c true if the list is empty.
-*/
-
-/*! \fn template <class T> QList<T> &QList<T>::operator+=(const QList<T> &other)
-
- Appends the items of the \a other list to this list and returns a
- reference to this list.
-
- \sa operator+(), append()
-*/
-
-/*! \fn template <class T> void QList<T>::operator+=(const T &value)
-
- \overload
-
- Appends \a value to the list.
-
- \sa append(), operator<<()
-*/
-
-/*! \fn template <class T> QList<T> QList<T>::operator+(const QList<T> &other) const
-
- Returns a list that contains all the items in this list followed
- by all the items in the \a other list.
-
- \sa operator+=()
-*/
-
-/*! \fn template <class T> QList<T> &QList<T>::operator<<(const QList<T> &other)
-
- Appends the items of the \a other list to this list and returns a
- reference to this list.
-
- \sa operator+=(), append()
-*/
-
-/*! \fn template <class T> void QList<T>::operator<<(const T &value)
-
- \overload
-
- Appends \a value to the list.
-*/
-
-/*! \class QList::iterator
- \inmodule QtCore
- \brief The QList::iterator class provides an STL-style non-const iterator for QList and QQueue.
-
- QList features both \l{STL-style iterators} and \l{Java-style
- iterators}. The STL-style iterators are more low-level and more
- cumbersome to use; on the other hand, they are slightly faster
- and, for developers who already know STL, have the advantage of
- familiarity.
-
- QList\<T\>::iterator allows you to iterate over a QList\<T\> (or
- QQueue\<T\>) and to modify the list item associated with the
- iterator. If you want to iterate over a const QList, use
- QList::const_iterator instead. It is generally good practice to
- use QList::const_iterator on a non-const QList as well, unless
- you need to change the QList through the iterator. Const
- iterators are slightly faster, and can improve code readability.
-
- The default QList::iterator constructor creates an uninitialized
- iterator. You must initialize it using a QList function like
- QList::begin(), QList::end(), or QList::insert() before you can
- start iterating. Here's a typical loop that prints all the items
- stored in a list:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 15
-
- Let's see a few examples of things we can do with a
- QList::iterator that we cannot do with a QList::const_iterator.
- Here's an example that increments every value stored in a
- QList\<int\> by 2:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 16
-
- Most QList functions accept an integer index rather than an
- iterator. For that reason, iterators are rarely useful in
- connection with QList. One place where STL-style iterators do
- make sense is as arguments to \l{generic algorithms}.
-
- For example, here's how to delete all the widgets stored in a
- QList\<QWidget *\>:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 17
-
- Multiple iterators can be used on the same list. However, be
- aware that any non-const function call performed on the QList
- will render all existing iterators undefined. If you need to keep
- iterators over a long period of time, we recommend that you use
- QLinkedList rather than QList.
-
- \warning Iterators on implicitly shared containers do not work
- exactly like STL-iterators. You should avoid copying a container
- while iterators are active on that container. For more information,
- read \l{Implicit sharing iterator problem}.
-
- \sa QList::const_iterator, QMutableListIterator
-*/
-
-/*! \typedef QList::iterator::iterator_category
-
- A synonym for \e {std::random_access_iterator_tag} indicating
- this iterator is a random access iterator.
-*/
-
-/*! \typedef QList::iterator::difference_type
-
- \internal
-*/
-
-/*! \typedef QList::iterator::value_type
-
- \internal
-*/
-
-/*! \typedef QList::iterator::pointer
-
- \internal
-*/
-
-/*! \typedef QList::iterator::reference
-
- \internal
-*/
-
-/*! \fn template <class T> QList<T>::iterator::iterator()
-
- Constructs an uninitialized iterator.
-
- Functions like operator*() and operator++() should not be called
- on an uninitialized iterator. Use operator=() to assign a value
- to it before using it.
-
- \sa QList::begin(), QList::end()
-*/
-
-/*! \fn template <class T> QList<T>::iterator::iterator(Node *node)
-
- \internal
-*/
-
-/*! \fn template <class T> QList<T>::iterator::iterator(const iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*! \fn template <class T> T &QList<T>::iterator::operator*() const
-
- Returns a modifiable reference to the current item.
-
- You can change the value of an item by using operator*() on the
- left side of an assignment, for example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 18
-
- \sa operator->()
-*/
-
-/*! \fn template <class T> T *QList<T>::iterator::operator->() const
-
- Returns a pointer to the current item.
-
- \sa operator*()
-*/
-
-/*! \fn template <class T> T &QList<T>::iterator::operator[](difference_type j) const
-
- Returns a modifiable reference to the item at position *this +
- \a{j}.
-
- This function is provided to make QList iterators behave like C++
- pointers.
-
- \sa operator+()
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator==(const iterator &other) const
- \fn template <class T> bool QList<T>::iterator::operator==(const const_iterator &other) const
-
- Returns \c true if \a other points to the same item as this
- iterator; otherwise returns \c false.
-
- \sa operator!=()
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator!=(const iterator &other) const
- \fn template <class T> bool QList<T>::iterator::operator!=(const const_iterator &other) const
-
- Returns \c true if \a other points to a different item than this
- iterator; otherwise returns \c false.
-
- \sa operator==()
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator<(const iterator& other) const
- \fn template <class T> bool QList<T>::iterator::operator<(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is less than
- the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator<=(const iterator& other) const
- \fn template <class T> bool QList<T>::iterator::operator<=(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is less than
- or equal to the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator>(const iterator& other) const
- \fn template <class T> bool QList<T>::iterator::operator>(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is greater
- than the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::iterator::operator>=(const iterator& other) const
- \fn template <class T> bool QList<T>::iterator::operator>=(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is greater
- than or equal to the item pointed to by the \a other iterator.
-*/
-
-/*! \fn template <class T> QList<T>::iterator &QList<T>::iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the
- next item in the list and returns an iterator to the new current
- item.
-
- Calling this function on QList::end() leads to undefined results.
-
- \sa operator--()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the
- next item in the list and returns an iterator to the previously
- current item.
-*/
-
-/*! \fn template <class T> QList<T>::iterator &QList<T>::iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding item
- current and returns an iterator to the new current item.
-
- Calling this function on QList::begin() leads to undefined results.
-
- \sa operator++()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding item
- current and returns an iterator to the previously current item.
-*/
-
-/*! \fn template <class T> QList<T>::iterator &QList<T>::iterator::operator+=(difference_type j)
-
- Advances the iterator by \a j items. (If \a j is negative, the
- iterator goes backward.)
-
- \sa operator-=(), operator+()
-*/
-
-/*! \fn template <class T> QList<T>::iterator &QList<T>::iterator::operator-=(difference_type j)
-
- Makes the iterator go back by \a j items. (If \a j is negative,
- the iterator goes forward.)
-
- \sa operator+=(), operator-()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::iterator::operator+(difference_type j) const
-
- Returns an iterator to the item at \a j positions forward from
- this iterator. (If \a j is negative, the iterator goes backward.)
-
- \sa operator-(), operator+=()
-*/
-
-/*! \fn template <class T> QList<T>::iterator QList<T>::iterator::operator-(difference_type j) const
-
- Returns an iterator to the item at \a j positions backward from
- this iterator. (If \a j is negative, the iterator goes forward.)
-
- \sa operator+(), operator-=()
-*/
-
-/*! \fn template <class T> int QList<T>::iterator::operator-(iterator other) const
-
- Returns the number of items between the item pointed to by \a
- other and the item pointed to by this iterator.
-*/
-
-/*! \class QList::const_iterator
- \inmodule QtCore
- \brief The QList::const_iterator class provides an STL-style const iterator for QList and QQueue.
-
- QList provides both \l{STL-style iterators} and \l{Java-style
- iterators}. The STL-style iterators are more low-level and more
- cumbersome to use; on the other hand, they are slightly faster
- and, for developers who already know STL, have the advantage of
- familiarity.
-
- QList\<T\>::const_iterator allows you to iterate over a
- QList\<T\> (or a QQueue\<T\>). If you want to modify the QList as
- you iterate over it, use QList::iterator instead. It is generally
- good practice to use QList::const_iterator on a non-const QList
- as well, unless you need to change the QList through the
- iterator. Const iterators are slightly faster, and can improve
- code readability.
-
- The default QList::const_iterator constructor creates an
- uninitialized iterator. You must initialize it using a QList
- function like QList::constBegin(), QList::constEnd(), or
- QList::insert() before you can start iterating. Here's a typical
- loop that prints all the items stored in a list:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 19
-
- Most QList functions accept an integer index rather than an
- iterator. For that reason, iterators are rarely useful in
- connection with QList. One place where STL-style iterators do
- make sense is as arguments to \l{generic algorithms}.
-
- For example, here's how to delete all the widgets stored in a
- QList\<QWidget *\>:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 20
-
- Multiple iterators can be used on the same list. However, be
- aware that any non-const function call performed on the QList
- will render all existing iterators undefined. If you need to keep
- iterators over a long period of time, we recommend that you use
- QLinkedList rather than QList.
-
- \warning Iterators on implicitly shared containers do not work
- exactly like STL-iterators. You should avoid copying a container
- while iterators are active on that container. For more information,
- read \l{Implicit sharing iterator problem}.
-
- \sa QList::iterator, QListIterator
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator::const_iterator()
-
- Constructs an uninitialized iterator.
-
- Functions like operator*() and operator++() should not be called
- on an uninitialized iterator. Use operator=() to assign a value
- to it before using it.
-
- \sa QList::constBegin(), QList::constEnd()
-*/
-
-/*! \typedef QList::const_iterator::iterator_category
-
- A synonym for \e {std::random_access_iterator_tag} indicating
- this iterator is a random access iterator.
-*/
-
-/*! \typedef QList::const_iterator::difference_type
-
- \internal
-*/
-
-/*! \typedef QList::const_iterator::value_type
-
- \internal
-*/
-
-/*! \typedef QList::const_iterator::pointer
-
- \internal
-*/
-
-/*! \typedef QList::const_iterator::reference
-
- \internal
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator::const_iterator(Node *node)
-
- \internal
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator::const_iterator(const const_iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator::const_iterator(const iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*! \fn template <class T> const T &QList<T>::const_iterator::operator*() const
-
- Returns the current item.
-
- \sa operator->()
-*/
-
-/*! \fn template <class T> const T *QList<T>::const_iterator::operator->() const
-
- Returns a pointer to the current item.
-
- \sa operator*()
-*/
-
-/*! \fn template <class T> const T &QList<T>::const_iterator::operator[](difference_type j) const
-
- Returns the item at position *this + \a{j}.
-
- This function is provided to make QList iterators behave like C++
- pointers.
-
- \sa operator+()
-*/
-
-/*! \fn template <class T> bool QList<T>::const_iterator::operator==(const const_iterator &other) const
-
- Returns \c true if \a other points to the same item as this
- iterator; otherwise returns \c false.
-
- \sa operator!=()
-*/
-
-/*! \fn template <class T> bool QList<T>::const_iterator::operator!=(const const_iterator &other) const
-
- Returns \c true if \a other points to a different item than this
- iterator; otherwise returns \c false.
-
- \sa operator==()
-*/
-
-/*!
- \fn template <class T> bool QList<T>::const_iterator::operator<(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is less than
- the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::const_iterator::operator<=(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is less than
- or equal to the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::const_iterator::operator>(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is greater
- than the item pointed to by the \a other iterator.
-*/
-
-/*!
- \fn template <class T> bool QList<T>::const_iterator::operator>=(const const_iterator& other) const
-
- Returns \c true if the item pointed to by this iterator is greater
- than or equal to the item pointed to by the \a other iterator.
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator &QList<T>::const_iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the
- next item in the list and returns an iterator to the new current
- item.
-
- Calling this function on QList::end() leads to undefined results.
-
- \sa operator--()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::const_iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the
- next item in the list and returns an iterator to the previously
- current item.
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator &QList<T>::const_iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding item
- current and returns an iterator to the new current item.
-
- Calling this function on QList::begin() leads to undefined results.
-
- \sa operator++()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::const_iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding item
- current and returns an iterator to the previously current item.
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator &QList<T>::const_iterator::operator+=(difference_type j)
-
- Advances the iterator by \a j items. (If \a j is negative, the
- iterator goes backward.)
-
- \sa operator-=(), operator+()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator &QList<T>::const_iterator::operator-=(difference_type j)
-
- Makes the iterator go back by \a j items. (If \a j is negative,
- the iterator goes forward.)
-
- \sa operator+=(), operator-()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::const_iterator::operator+(difference_type j) const
-
- Returns an iterator to the item at \a j positions forward from
- this iterator. (If \a j is negative, the iterator goes backward.)
-
- \sa operator-(), operator+=()
-*/
-
-/*! \fn template <class T> QList<T>::const_iterator QList<T>::const_iterator::operator-(difference_type j) const
-
- Returns an iterator to the item at \a j positions backward from
- this iterator. (If \a j is negative, the iterator goes forward.)
-
- \sa operator+(), operator-=()
-*/
-
-/*! \fn template <class T> int QList<T>::const_iterator::operator-(const_iterator other) const
-
- Returns the number of items between the item pointed to by \a
- other and the item pointed to by this iterator.
-*/
-
-/*! \fn template <class T> QDataStream &operator<<(QDataStream &out, const QList<T> &list)
- \relates QList
-
- Writes the list \a list to stream \a out.
-
- This function requires the value type to implement \c
- operator<<().
-
- \sa{Serializing Qt Data Types}{Format of the QDataStream operators}
-*/
-
-/*! \fn template <class T> QDataStream &operator>>(QDataStream &in, QList<T> &list)
- \relates QList
-
- Reads a list from stream \a in into \a list.
-
- This function requires the value type to implement \c
- operator>>().
-
- \sa{Serializing Qt Data Types}{Format of the QDataStream operators}
-*/
-
-/*! \fn template <class T> QList<T> QList<T>::fromVector(const QVector<T> &vector)
-
- Returns a QList object with the data contained in \a vector.
-
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 21
-
- \sa fromSet(), toVector(), QVector::toList()
-*/
-
-/*! \fn template <class T> QVector<T> QList<T>::toVector() const
-
- Returns a QVector object with the data contained in this QList.
-
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 22
-
- \sa toSet(), fromVector(), QVector::fromList()
-*/
-
-/*! \fn template <class T> QList<T> QList<T>::fromSet(const QSet<T> &set)
-
- Returns a QList object with the data contained in \a set. The
- order of the elements in the QList is undefined.
-
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 23
-
- \sa fromVector(), toSet(), QSet::toList()
-*/
-
-/*! \fn template <class T> QSet<T> QList<T>::toSet() const
-
- Returns a QSet object with the data contained in this QList.
- Since QSet doesn't allow duplicates, the resulting QSet might be
- smaller than the original list was.
-
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 24
-
- \sa toVector(), fromSet(), QSet::fromList()
-*/
-
-/*! \fn template <class T> QList<T> QList<T>::fromStdList(const std::list<T> &list)
-
- Returns a QList object with the data contained in \a list. The
- order of the elements in the QList is the same as in \a list.
-
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 25
-
- \sa toStdList(), QVector::fromStdVector()
-*/
-
-/*! \fn template <class T> std::list<T> QList<T>::toStdList() const
-
- Returns a std::list object with the data contained in this QList.
- Example:
-
- \snippet code/src_corelib_tools_qlistdata.cpp 26
-
- \sa fromStdList(), QVector::toStdVector()
-*/
-
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index ffd470efcd..515fba6530 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -40,1160 +40,19 @@
#ifndef QLIST_H
#define QLIST_H
-#include <QtCore/qalgorithms.h>
-#include <QtCore/qiterator.h>
-#include <QtCore/qrefcount.h>
-#include <QtCore/qarraydata.h>
-#include <QtCore/qhashfunctions.h>
#include <QtCore/qvector.h>
-#include <QtCore/qcontainertools_impl.h>
-
-#include <algorithm>
-#include <initializer_list>
-#include <iterator>
-#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
-#include <list>
-#endif
-
-#include <stdlib.h>
-#include <new>
-#include <limits.h>
-#include <string.h>
-
-#ifdef Q_CC_MSVC
-#pragma warning( push )
-#pragma warning( disable : 4127 ) // "conditional expression is constant"
-#endif
+#include <QtCore/qcontainerfwd.h>
+#if !defined(QT_NO_JAVA_STYLE_ITERATORS)
QT_BEGIN_NAMESPACE
-
-
-template <typename T> class QVector;
-template <typename T> class QSet;
-
-template <typename T> struct QListSpecialMethods
-{
-protected:
- ~QListSpecialMethods() = default;
-};
-template <> struct QListSpecialMethods<QByteArray>;
-template <> struct QListSpecialMethods<QString>;
-
-struct Q_CORE_EXPORT QListData {
- // tags for tag-dispatching of QList implementations,
- // based on QList's three different memory layouts:
- struct NotArrayCompatibleLayout {};
- struct NotIndirectLayout {};
- struct ArrayCompatibleLayout : NotIndirectLayout {}; // data laid out like a C array
- struct InlineWithPaddingLayout : NotArrayCompatibleLayout, NotIndirectLayout {}; // data laid out like a C array with padding
- struct IndirectLayout : NotArrayCompatibleLayout {}; // data allocated on the heap
-
- struct Data {
- QtPrivate::RefCount ref;
- int alloc, begin, end;
- void *array[1];
- };
- enum { DataHeaderSize = sizeof(Data) - sizeof(void *) };
-
- Data *detach(int alloc);
- Data *detach_grow(int *i, int n);
- void realloc(int alloc);
- void realloc_grow(int growth);
- inline void dispose() { dispose(d); }
- static void dispose(Data *d);
- static const Data shared_null;
- Data *d;
- void **erase(void **xi);
- void **append(int n);
- void **append();
- void **append(const QListData &l);
- void **prepend();
- void **insert(int i);
- void remove(int i);
- void remove(int i, int n);
- void move(int from, int to);
- inline int size() const noexcept { return int(d->end - d->begin); } // q6sizetype
- inline bool isEmpty() const noexcept { return d->end == d->begin; }
- inline void **at(int i) const noexcept { return d->array + d->begin + i; }
- inline void **begin() const noexcept { return d->array + d->begin; }
- inline void **end() const noexcept { return d->array + d->end; }
-};
-
-namespace QtPrivate {
- template <typename V, typename U> int indexOf(const QList<V> &list, const U &u, int from);
- template <typename V, typename U> int lastIndexOf(const QList<V> &list, const U &u, int from);
-}
-
-template <typename T>
-class QList
-#ifndef Q_QDOC
- : public QListSpecialMethods<T>
-#endif
-{
-public:
- struct MemoryLayout
- : std::conditional<
- // must stay isStatic until ### Qt 6 for BC reasons (don't use !isRelocatable)!
- QTypeInfo<T>::isStatic || QTypeInfo<T>::isLarge,
- QListData::IndirectLayout,
- typename std::conditional<
- sizeof(T) == sizeof(void*),
- QListData::ArrayCompatibleLayout,
- QListData::InlineWithPaddingLayout
- >::type>::type {};
-private:
- template <typename V, typename U> friend int QtPrivate::indexOf(const QList<V> &list, const U &u, int from);
- template <typename V, typename U> friend int QtPrivate::lastIndexOf(const QList<V> &list, const U &u, int from);
- struct Node { void *v;
-#if defined(Q_CC_BOR)
- Q_INLINE_TEMPLATE T &t();
-#else
- Q_INLINE_TEMPLATE T &t()
- { return *reinterpret_cast<T*>(QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic
- ? v : this); }
-#endif
- };
-
- union { QListData p; QListData::Data *d; };
-
-public:
- inline QList() noexcept : d(const_cast<QListData::Data *>(&QListData::shared_null)) { }
- QList(const QList<T> &l);
- ~QList();
- QList<T> &operator=(const QList<T> &l);
- inline QList(QList<T> &&other) noexcept
- : d(other.d) { other.d = const_cast<QListData::Data *>(&QListData::shared_null); }
- inline QList &operator=(QList<T> &&other) noexcept
- { QList moved(std::move(other)); swap(moved); return *this; }
- inline void swap(QList<T> &other) noexcept { qSwap(d, other.d); }
- inline QList(std::initializer_list<T> args)
- : QList(args.begin(), args.end()) {}
- template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true>
- QList(InputIterator first, InputIterator last);
- bool operator==(const QList<T> &l) const;
- inline bool operator!=(const QList<T> &l) const { return !(*this == l); }
-
- inline int size() const noexcept { return p.size(); }
-
- inline void detach() { if (d->ref.isShared()) detach_helper(); }
-
- inline void detachShared()
- {
- // The "this->" qualification is needed for GCCE.
- if (d->ref.isShared() && this->d != &QListData::shared_null)
- detach_helper();
- }
-
- inline bool isDetached() const { return !d->ref.isShared(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable)
- {
- if (sharable == d->ref.isSharable())
- return;
- if (!sharable)
- detach();
- if (d != &QListData::shared_null)
- d->ref.setSharable(sharable);
- }
-#endif
- inline bool isSharedWith(const QList<T> &other) const noexcept { return d == other.d; }
-
- inline bool isEmpty() const noexcept { return p.isEmpty(); }
-
- void clear();
-
- const T &at(int i) const;
- const T &operator[](int i) const;
- T &operator[](int i);
-
- void reserve(int size);
- void append(const T &t);
- void append(const QList<T> &t);
- void prepend(const T &t);
- void insert(int i, const T &t);
- void replace(int i, const T &t);
- void removeAt(int i);
- int removeAll(const T &t);
- bool removeOne(const T &t);
- T takeAt(int i);
- T takeFirst();
- T takeLast();
- void move(int from, int to);
- void swapItemsAt(int i, int j);
-#if QT_DEPRECATED_SINCE(5, 13) && QT_VERSION < QT_VERSION_CHECK(6,0,0)
- QT_DEPRECATED_X("Use QList<T>::swapItemsAt()")
- void swap(int i, int j) { swapItemsAt(i, j); }
-#endif
- int indexOf(const T &t, int from = 0) const;
- int lastIndexOf(const T &t, int from = -1) const;
- bool contains(const T &t) const;
- int count(const T &t) const;
-
- class const_iterator;
-
- class iterator {
- public:
- Node *i;
- typedef std::random_access_iterator_tag iterator_category;
- // ### Qt6: use int
- typedef qptrdiff difference_type;
- typedef T value_type;
- typedef T *pointer;
- typedef T &reference;
-
- inline iterator() noexcept : i(nullptr) {}
- inline iterator(Node *n) noexcept : i(n) {}
-#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
- // can't remove it in Qt 5, since doing so would make the type trivial,
- // which changes the way it's passed to functions by value.
- inline iterator(const iterator &o) noexcept : i(o.i){}
- inline iterator &operator=(const iterator &o) noexcept
- { i = o.i; return *this; }
-#endif
- inline T &operator*() const { return i->t(); }
- inline T *operator->() const { return &i->t(); }
- inline T &operator[](difference_type j) const { return i[j].t(); }
- inline bool operator==(const iterator &o) const noexcept { return i == o.i; }
- inline bool operator!=(const iterator &o) const noexcept { return i != o.i; }
- inline bool operator<(const iterator& other) const noexcept { return i < other.i; }
- inline bool operator<=(const iterator& other) const noexcept { return i <= other.i; }
- inline bool operator>(const iterator& other) const noexcept { return i > other.i; }
- inline bool operator>=(const iterator& other) const noexcept { return i >= other.i; }
-#ifndef QT_STRICT_ITERATORS
- inline bool operator==(const const_iterator &o) const noexcept
- { return i == o.i; }
- inline bool operator!=(const const_iterator &o) const noexcept
- { return i != o.i; }
- inline bool operator<(const const_iterator& other) const noexcept
- { return i < other.i; }
- inline bool operator<=(const const_iterator& other) const noexcept
- { return i <= other.i; }
- inline bool operator>(const const_iterator& other) const noexcept
- { return i > other.i; }
- inline bool operator>=(const const_iterator& other) const noexcept
- { return i >= other.i; }
-#endif
- inline iterator &operator++() { ++i; return *this; }
- inline iterator operator++(int) { Node *n = i; ++i; return n; }
- inline iterator &operator--() { i--; return *this; }
- inline iterator operator--(int) { Node *n = i; i--; return n; }
- inline iterator &operator+=(difference_type j) { i+=j; return *this; }
- inline iterator &operator-=(difference_type j) { i-=j; return *this; }
- inline iterator operator+(difference_type j) const { return iterator(i+j); }
- inline iterator operator-(difference_type j) const { return iterator(i-j); }
- friend inline iterator operator+(difference_type j, iterator k) { return k + j; }
- inline int operator-(iterator j) const { return int(i - j.i); }
- };
- friend class iterator;
-
- class const_iterator {
- public:
- Node *i;
- typedef std::random_access_iterator_tag iterator_category;
- // ### Qt6: use int
- typedef qptrdiff difference_type;
- typedef T value_type;
- typedef const T *pointer;
- typedef const T &reference;
-
- inline const_iterator() noexcept : i(nullptr) {}
- inline const_iterator(Node *n) noexcept : i(n) {}
-#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
- // can't remove it in Qt 5, since doing so would make the type trivial,
- // which changes the way it's passed to functions by value.
- inline const_iterator(const const_iterator &o) noexcept : i(o.i) {}
- inline const_iterator &operator=(const const_iterator &o) noexcept
- { i = o.i; return *this; }
-#endif
-#ifdef QT_STRICT_ITERATORS
- inline explicit const_iterator(const iterator &o) noexcept : i(o.i) {}
-#else
- inline const_iterator(const iterator &o) noexcept : i(o.i) {}
-#endif
- inline const T &operator*() const { return i->t(); }
- inline const T *operator->() const { return &i->t(); }
- inline const T &operator[](difference_type j) const { return i[j].t(); }
- inline bool operator==(const const_iterator &o) const noexcept { return i == o.i; }
- inline bool operator!=(const const_iterator &o) const noexcept { return i != o.i; }
- inline bool operator<(const const_iterator& other) const noexcept { return i < other.i; }
- inline bool operator<=(const const_iterator& other) const noexcept { return i <= other.i; }
- inline bool operator>(const const_iterator& other) const noexcept { return i > other.i; }
- inline bool operator>=(const const_iterator& other) const noexcept { return i >= other.i; }
- inline const_iterator &operator++() { ++i; return *this; }
- inline const_iterator operator++(int) { Node *n = i; ++i; return n; }
- inline const_iterator &operator--() { i--; return *this; }
- inline const_iterator operator--(int) { Node *n = i; i--; return n; }
- inline const_iterator &operator+=(difference_type j) { i+=j; return *this; }
- inline const_iterator &operator-=(difference_type j) { i-=j; return *this; }
- inline const_iterator operator+(difference_type j) const { return const_iterator(i+j); }
- inline const_iterator operator-(difference_type j) const { return const_iterator(i-j); }
- friend inline const_iterator operator+(difference_type j, const_iterator k) { return k + j; }
- inline int operator-(const_iterator j) const { return int(i - j.i); }
- };
- friend class const_iterator;
-
- // stl style
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- inline iterator begin() { detach(); return reinterpret_cast<Node *>(p.begin()); }
- inline const_iterator begin() const noexcept { return reinterpret_cast<Node *>(p.begin()); }
- inline const_iterator cbegin() const noexcept { return reinterpret_cast<Node *>(p.begin()); }
- inline const_iterator constBegin() const noexcept { return reinterpret_cast<Node *>(p.begin()); }
- inline iterator end() { detach(); return reinterpret_cast<Node *>(p.end()); }
- inline const_iterator end() const noexcept { return reinterpret_cast<Node *>(p.end()); }
- inline const_iterator cend() const noexcept { return reinterpret_cast<Node *>(p.end()); }
- inline const_iterator constEnd() const noexcept { return reinterpret_cast<Node *>(p.end()); }
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); }
- const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(end()); }
- const_reverse_iterator crend() const noexcept { return const_reverse_iterator(begin()); }
- iterator insert(iterator before, const T &t);
- iterator erase(iterator pos);
- iterator erase(iterator first, iterator last);
-
- // more Qt
- typedef iterator Iterator;
- typedef const_iterator ConstIterator;
- inline int count() const { return p.size(); }
- inline int length() const { return p.size(); } // Same as count()
- inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); }
- inline const T& constFirst() const { return first(); }
- inline const T& first() const { Q_ASSERT(!isEmpty()); return at(0); }
- T& last() { Q_ASSERT(!isEmpty()); return *(--end()); }
- const T& last() const { Q_ASSERT(!isEmpty()); return at(count() - 1); }
- inline const T& constLast() const { return last(); }
- inline void removeFirst() { Q_ASSERT(!isEmpty()); erase(begin()); }
- inline void removeLast() { Q_ASSERT(!isEmpty()); erase(--end()); }
- inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; }
- inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; }
- QList<T> mid(int pos, int length = -1) const;
-
- T value(int i) const;
- T value(int i, const T &defaultValue) const;
-
- // stl compatibility
- inline void push_back(const T &t) { append(t); }
- inline void push_front(const T &t) { prepend(t); }
- inline T& front() { return first(); }
- inline const T& front() const { return first(); }
- inline T& back() { return last(); }
- inline const T& back() const { return last(); }
- inline void pop_front() { removeFirst(); }
- inline void pop_back() { removeLast(); }
- inline bool empty() const { return isEmpty(); }
- typedef int size_type;
- typedef T value_type;
- typedef value_type *pointer;
- typedef const value_type *const_pointer;
- typedef value_type &reference;
- typedef const value_type &const_reference;
- // ### Qt6: use int
- typedef qptrdiff difference_type;
-
- // comfort
- QList<T> &operator+=(const QList<T> &l);
- inline QList<T> operator+(const QList<T> &l) const
- { QList n = *this; n += l; return n; }
- inline QList<T> &operator+=(const T &t)
- { append(t); return *this; }
- inline QList<T> &operator<< (const T &t)
- { append(t); return *this; }
- inline QList<T> &operator<<(const QList<T> &l)
- { *this += l; return *this; }
-
- static QList<T> fromVector(const QVector<T> &vector);
- QVector<T> toVector() const;
-
-#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
- Q_DECL_DEPRECATED_X("Use QList<T>(set.begin(), set.end()) instead.")
- static QList<T> fromSet(const QSet<T> &set);
- Q_DECL_DEPRECATED_X("Use QSet<T>(list.begin(), list.end()) instead.")
- QSet<T> toSet() const;
-
- Q_DECL_DEPRECATED_X("Use QList<T>(list.begin(), list.end()) instead.")
- static inline QList<T> fromStdList(const std::list<T> &list)
- { return QList<T>(list.begin(), list.end()); }
- Q_DECL_DEPRECATED_X("Use std::list<T>(list.begin(), list.end()) instead.")
- inline std::list<T> toStdList() const
- { return std::list<T>(begin(), end()); }
-#endif
-
-private:
- Node *detach_helper_grow(int i, int n);
- void detach_helper(int alloc);
- void detach_helper();
- void dealloc(QListData::Data *d);
-
- void node_construct(Node *n, const T &t);
- void node_destruct(Node *n);
- void node_copy(Node *from, Node *to, Node *src);
- void node_destruct(Node *from, Node *to);
-
- bool isValidIterator(const iterator &i) const noexcept
- {
- const std::less<const Node *> less = {};
- return !less(i.i, cbegin().i) && !less(cend().i, i.i);
- }
-
-private:
- inline bool op_eq_impl(const QList &other, QListData::NotArrayCompatibleLayout) const;
- inline bool op_eq_impl(const QList &other, QListData::ArrayCompatibleLayout) const;
- inline bool contains_impl(const T &, QListData::NotArrayCompatibleLayout) const;
- inline bool contains_impl(const T &, QListData::ArrayCompatibleLayout) const;
- inline int count_impl(const T &, QListData::NotArrayCompatibleLayout) const;
- inline int count_impl(const T &, QListData::ArrayCompatibleLayout) const;
-};
-
-#if defined(__cpp_deduction_guides) && __cpp_deduction_guides >= 201606
-template <typename InputIterator,
- typename ValueType = typename std::iterator_traits<InputIterator>::value_type,
- QtPrivate::IfIsInputIterator<InputIterator> = true>
-QList(InputIterator, InputIterator) -> QList<ValueType>;
-#endif
-
-#if defined(Q_CC_BOR)
-template <typename T>
-Q_INLINE_TEMPLATE T &QList<T>::Node::t()
-{ return QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic ? *(T*)v:*(T*)this; }
-#endif
-
-template <typename T>
-Q_INLINE_TEMPLATE void QList<T>::node_construct(Node *n, const T &t)
-{
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t);
- else if (QTypeInfo<T>::isComplex) new (n) T(t);
-#if (defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__IBMCPP__)) && !defined(__OPTIMIZE__)
- // This violates pointer aliasing rules, but it is known to be safe (and silent)
- // in unoptimized GCC builds (-fno-strict-aliasing). The other compilers which
- // set the same define are assumed to be safe.
- else *reinterpret_cast<T*>(n) = t;
-#else
- // This is always safe, but penaltizes unoptimized builds a lot.
- else ::memcpy(n, static_cast<const void *>(&t), sizeof(T));
-#endif
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE void QList<T>::node_destruct(Node *n)
-{
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) delete reinterpret_cast<T*>(n->v);
- else if (QTypeInfo<T>::isComplex) reinterpret_cast<T*>(n)->~T();
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE void QList<T>::node_copy(Node *from, Node *to, Node *src)
-{
- Node *current = from;
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
- QT_TRY {
- while(current != to) {
- current->v = new T(*reinterpret_cast<T*>(src->v));
- ++current;
- ++src;
- }
- } QT_CATCH(...) {
- while (current-- != from)
- delete reinterpret_cast<T*>(current->v);
- QT_RETHROW;
- }
-
- } else if (QTypeInfo<T>::isComplex) {
- QT_TRY {
- while(current != to) {
- new (current) T(*reinterpret_cast<T*>(src));
- ++current;
- ++src;
- }
- } QT_CATCH(...) {
- while (current-- != from)
- (reinterpret_cast<T*>(current))->~T();
- QT_RETHROW;
- }
- } else {
- if (src != from && to - from > 0)
- memcpy(from, src, (to - from) * sizeof(Node));
- }
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE void QList<T>::node_destruct(Node *from, Node *to)
-{
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
- while(from != to) --to, delete reinterpret_cast<T*>(to->v);
- else if (QTypeInfo<T>::isComplex)
- while (from != to) --to, reinterpret_cast<T*>(to)->~T();
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE QList<T> &QList<T>::operator=(const QList<T> &l)
-{
- if (d != l.d) {
- QList<T> tmp(l);
- tmp.swap(*this);
- }
- return *this;
-}
-template <typename T>
-inline typename QList<T>::iterator QList<T>::insert(iterator before, const T &t)
-{
- Q_ASSERT_X(isValidIterator(before), "QList::insert", "The specified iterator argument 'before' is invalid");
-
- int iBefore = int(before.i - reinterpret_cast<Node *>(p.begin()));
- Node *n = nullptr;
- if (d->ref.isShared())
- n = detach_helper_grow(iBefore, 1);
- else
- n = reinterpret_cast<Node *>(p.insert(iBefore));
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- p.remove(iBefore);
- QT_RETHROW;
- }
- return n;
-}
-template <typename T>
-inline typename QList<T>::iterator QList<T>::erase(iterator it)
-{
- Q_ASSERT_X(isValidIterator(it), "QList::erase", "The specified iterator argument 'it' is invalid");
- if (d->ref.isShared()) {
- int offset = int(it.i - reinterpret_cast<Node *>(p.begin()));
- it = begin(); // implies detach()
- it += offset;
- }
- node_destruct(it.i);
- return reinterpret_cast<Node *>(p.erase(reinterpret_cast<void**>(it.i)));
-}
-template <typename T>
-inline const T &QList<T>::at(int i) const
-{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::at", "index out of range");
- return reinterpret_cast<Node *>(p.at(i))->t(); }
-template <typename T>
-inline const T &QList<T>::operator[](int i) const
-{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range");
- return reinterpret_cast<Node *>(p.at(i))->t(); }
-template <typename T>
-inline T &QList<T>::operator[](int i)
-{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range");
- detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
-template <typename T>
-inline void QList<T>::removeAt(int i)
-{
-#if !QT_DEPRECATED_SINCE(5, 15)
- Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::removeAt", "index out of range");
-#elif !defined(QT_NO_DEBUG)
- if (i < 0 || i >= p.size())
- qWarning("QList::removeAt(): Index out of range.");
-#endif
- detach();
- node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i);
-}
-template <typename T>
-inline T QList<T>::takeAt(int i)
-{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::take", "index out of range");
- detach(); Node *n = reinterpret_cast<Node *>(p.at(i)); T t = std::move(n->t()); node_destruct(n);
- p.remove(i); return t; }
-template <typename T>
-inline T QList<T>::takeFirst()
-{ T t = std::move(first()); removeFirst(); return t; }
-template <typename T>
-inline T QList<T>::takeLast()
-{ T t = std::move(last()); removeLast(); return t; }
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::reserve(int alloc)
-{
- if (d->alloc < alloc) {
- if (d->ref.isShared())
- detach_helper(alloc);
- else
- p.realloc(alloc);
- }
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::append(const T &t)
-{
- if (d->ref.isShared()) {
- Node *n = detach_helper_grow(INT_MAX, 1);
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- --d->end;
- QT_RETHROW;
- }
- } else {
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
- Node *n = reinterpret_cast<Node *>(p.append());
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- --d->end;
- QT_RETHROW;
- }
- } else {
- Node *n, copy;
- node_construct(&copy, t); // t might be a reference to an object in the array
- QT_TRY {
- n = reinterpret_cast<Node *>(p.append());;
- } QT_CATCH(...) {
- node_destruct(&copy);
- QT_RETHROW;
- }
- *n = copy;
- }
- }
-}
-
-template <typename T>
-inline void QList<T>::prepend(const T &t)
-{
- if (d->ref.isShared()) {
- Node *n = detach_helper_grow(0, 1);
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- ++d->begin;
- QT_RETHROW;
- }
- } else {
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
- Node *n = reinterpret_cast<Node *>(p.prepend());
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- ++d->begin;
- QT_RETHROW;
- }
- } else {
- Node *n, copy;
- node_construct(&copy, t); // t might be a reference to an object in the array
- QT_TRY {
- n = reinterpret_cast<Node *>(p.prepend());;
- } QT_CATCH(...) {
- node_destruct(&copy);
- QT_RETHROW;
- }
- *n = copy;
- }
- }
-}
-
-template <typename T>
-inline void QList<T>::insert(int i, const T &t)
-{
-#if !QT_DEPRECATED_SINCE(5, 15)
- Q_ASSERT_X(i >= 0 && i <= p.size(), "QList<T>::insert", "index out of range");
-#elif !defined(QT_NO_DEBUG)
- if (i < 0 || i > p.size())
- qWarning("QList::insert(): Index out of range.");
-#endif
- if (d->ref.isShared()) {
- Node *n = detach_helper_grow(i, 1);
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- p.remove(i);
- QT_RETHROW;
- }
- } else {
- if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
- Node *n = reinterpret_cast<Node *>(p.insert(i));
- QT_TRY {
- node_construct(n, t);
- } QT_CATCH(...) {
- p.remove(i);
- QT_RETHROW;
- }
- } else {
- Node *n, copy;
- node_construct(&copy, t); // t might be a reference to an object in the array
- QT_TRY {
- n = reinterpret_cast<Node *>(p.insert(i));;
- } QT_CATCH(...) {
- node_destruct(&copy);
- QT_RETHROW;
- }
- *n = copy;
- }
- }
-}
-
-template <typename T>
-inline void QList<T>::replace(int i, const T &t)
-{
- Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::replace", "index out of range");
- detach();
- reinterpret_cast<Node *>(p.at(i))->t() = t;
-}
-
-template <typename T>
-inline void QList<T>::swapItemsAt(int i, int j)
-{
- Q_ASSERT_X(i >= 0 && i < p.size() && j >= 0 && j < p.size(),
- "QList<T>::swap", "index out of range");
- detach();
- qSwap(d->array[d->begin + i], d->array[d->begin + j]);
-}
-
-template <typename T>
-inline void QList<T>::move(int from, int to)
-{
- Q_ASSERT_X(from >= 0 && from < p.size() && to >= 0 && to < p.size(),
- "QList<T>::move", "index out of range");
- detach();
- p.move(from, to);
-}
-
-template<typename T>
-Q_OUTOFLINE_TEMPLATE QList<T> QList<T>::mid(int pos, int alength) const
-{
- using namespace QtPrivate;
- switch (QContainerImplHelper::mid(size(), &pos, &alength)) {
- case QContainerImplHelper::Null:
- case QContainerImplHelper::Empty:
- return QList<T>();
- case QContainerImplHelper::Full:
- return *this;
- case QContainerImplHelper::Subset:
- break;
- }
-
- QList<T> cpy;
- if (alength <= 0)
- return cpy;
- cpy.reserve(alength);
- cpy.d->end = alength;
- QT_TRY {
- cpy.node_copy(reinterpret_cast<Node *>(cpy.p.begin()),
- reinterpret_cast<Node *>(cpy.p.end()),
- reinterpret_cast<Node *>(p.begin() + pos));
- } QT_CATCH(...) {
- // restore the old end
- cpy.d->end = 0;
- QT_RETHROW;
- }
- return cpy;
-}
-
template<typename T>
-Q_OUTOFLINE_TEMPLATE T QList<T>::value(int i) const
-{
- if (i < 0 || i >= p.size()) {
- return T();
- }
- return reinterpret_cast<Node *>(p.at(i))->t();
-}
-
+using QMutableListIterator = QMutableVectorIterator<T>;
template<typename T>
-Q_OUTOFLINE_TEMPLATE T QList<T>::value(int i, const T& defaultValue) const
-{
- return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast<Node *>(p.at(i))->t());
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE typename QList<T>::Node *QList<T>::detach_helper_grow(int i, int c)
-{
- Node *n = reinterpret_cast<Node *>(p.begin());
- QListData::Data *x = p.detach_grow(&i, c);
- QT_TRY {
- node_copy(reinterpret_cast<Node *>(p.begin()),
- reinterpret_cast<Node *>(p.begin() + i), n);
- } QT_CATCH(...) {
- p.dispose();
- d = x;
- QT_RETHROW;
- }
- QT_TRY {
- node_copy(reinterpret_cast<Node *>(p.begin() + i + c),
- reinterpret_cast<Node *>(p.end()), n + i);
- } QT_CATCH(...) {
- node_destruct(reinterpret_cast<Node *>(p.begin()),
- reinterpret_cast<Node *>(p.begin() + i));
- p.dispose();
- d = x;
- QT_RETHROW;
- }
-
- if (!x->ref.deref())
- dealloc(x);
-
- return reinterpret_cast<Node *>(p.begin() + i);
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::detach_helper(int alloc)
-{
- Node *n = reinterpret_cast<Node *>(p.begin());
- QListData::Data *x = p.detach(alloc);
- QT_TRY {
- node_copy(reinterpret_cast<Node *>(p.begin()), reinterpret_cast<Node *>(p.end()), n);
- } QT_CATCH(...) {
- p.dispose();
- d = x;
- QT_RETHROW;
- }
-
- if (!x->ref.deref())
- dealloc(x);
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::detach_helper()
-{
- detach_helper(d->alloc);
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE QList<T>::QList(const QList<T> &l)
- : QListSpecialMethods<T>(l), d(l.d)
-{
- if (!d->ref.ref()) {
- p.detach(d->alloc);
-
- QT_TRY {
- node_copy(reinterpret_cast<Node *>(p.begin()),
- reinterpret_cast<Node *>(p.end()),
- reinterpret_cast<Node *>(l.p.begin()));
- } QT_CATCH(...) {
- QListData::dispose(d);
- QT_RETHROW;
- }
- }
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE QList<T>::~QList()
-{
- if (!d->ref.deref())
- dealloc(d);
-}
-
-template <typename T>
-template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator>>
-QList<T>::QList(InputIterator first, InputIterator last)
- : QList()
-{
- QtPrivate::reserveIfForwardIterator(this, first, last);
- std::copy(first, last, std::back_inserter(*this));
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE bool QList<T>::operator==(const QList<T> &l) const
-{
- if (d == l.d)
- return true;
- if (p.size() != l.p.size())
- return false;
- return this->op_eq_impl(l, MemoryLayout());
-}
-
-template <typename T>
-inline bool QList<T>::op_eq_impl(const QList &l, QListData::NotArrayCompatibleLayout) const
-{
- Node *i = reinterpret_cast<Node *>(p.begin());
- Node *e = reinterpret_cast<Node *>(p.end());
- Node *li = reinterpret_cast<Node *>(l.p.begin());
- for (; i != e; ++i, ++li) {
- if (!(i->t() == li->t()))
- return false;
- }
- return true;
-}
-
-template <typename T>
-inline bool QList<T>::op_eq_impl(const QList &l, QListData::ArrayCompatibleLayout) const
-{
- const T *lb = reinterpret_cast<const T*>(l.p.begin());
- const T *b = reinterpret_cast<const T*>(p.begin());
- const T *e = reinterpret_cast<const T*>(p.end());
- return std::equal(b, e, QT_MAKE_CHECKED_ARRAY_ITERATOR(lb, l.p.size()));
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::dealloc(QListData::Data *data)
-{
- node_destruct(reinterpret_cast<Node *>(data->array + data->begin),
- reinterpret_cast<Node *>(data->array + data->end));
- QListData::dispose(data);
-}
-
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE void QList<T>::clear()
-{
- *this = QList<T>();
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE int QList<T>::removeAll(const T &_t)
-{
- int index = indexOf(_t);
- if (index == -1)
- return 0;
-
- const T t = _t;
- detach();
-
- Node *i = reinterpret_cast<Node *>(p.at(index));
- Node *e = reinterpret_cast<Node *>(p.end());
- Node *n = i;
- node_destruct(i);
- while (++i != e) {
- if (i->t() == t)
- node_destruct(i);
- else
- *n++ = *i;
- }
-
- int removedCount = int(e - n);
- d->end -= removedCount;
- return removedCount;
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE bool QList<T>::removeOne(const T &_t)
-{
- int index = indexOf(_t);
- if (index != -1) {
- removeAt(index);
- return true;
- }
- return false;
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE typename QList<T>::iterator QList<T>::erase(typename QList<T>::iterator afirst,
- typename QList<T>::iterator alast)
-{
- Q_ASSERT_X(isValidIterator(afirst), "QList::erase", "The specified iterator argument 'afirst' is invalid");
- Q_ASSERT_X(isValidIterator(alast), "QList::erase", "The specified iterator argument 'alast' is invalid");
-
- if (d->ref.isShared()) {
- // ### A block is erased and a detach is needed. We should shrink and only copy relevant items.
- int offsetfirst = int(afirst.i - reinterpret_cast<Node *>(p.begin()));
- int offsetlast = int(alast.i - reinterpret_cast<Node *>(p.begin()));
- afirst = begin(); // implies detach()
- alast = afirst;
- afirst += offsetfirst;
- alast += offsetlast;
- }
-
- for (Node *n = afirst.i; n < alast.i; ++n)
- node_destruct(n);
- int idx = afirst - begin();
- p.remove(idx, alast - afirst);
- return begin() + idx;
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE QList<T> &QList<T>::operator+=(const QList<T> &l)
-{
- if (!l.isEmpty()) {
- if (d == &QListData::shared_null) {
- *this = l;
- } else {
- Node *n = (d->ref.isShared())
- ? detach_helper_grow(INT_MAX, l.size())
- : reinterpret_cast<Node *>(p.append(l.p));
- QT_TRY {
- node_copy(n, reinterpret_cast<Node *>(p.end()),
- reinterpret_cast<Node *>(l.p.begin()));
- } QT_CATCH(...) {
- // restore the old end
- d->end -= int(reinterpret_cast<Node *>(p.end()) - n);
- QT_RETHROW;
- }
- }
- }
- return *this;
-}
-
-template <typename T>
-inline void QList<T>::append(const QList<T> &t)
-{
- *this += t;
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE int QList<T>::indexOf(const T &t, int from) const
-{
- return QtPrivate::indexOf<T, T>(*this, t, from);
-}
-
-namespace QtPrivate
-{
-template <typename T, typename U>
-int indexOf(const QList<T> &list, const U &u, int from)
-{
- typedef typename QList<T>::Node Node;
-
- if (from < 0)
- from = qMax(from + list.p.size(), 0);
- if (from < list.p.size()) {
- Node *n = reinterpret_cast<Node *>(list.p.at(from -1));
- Node *e = reinterpret_cast<Node *>(list.p.end());
- while (++n != e)
- if (n->t() == u)
- return int(n - reinterpret_cast<Node *>(list.p.begin()));
- }
- return -1;
-}
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE int QList<T>::lastIndexOf(const T &t, int from) const
-{
- return QtPrivate::lastIndexOf<T, T>(*this, t, from);
-}
-
-namespace QtPrivate
-{
-template <typename T, typename U>
-int lastIndexOf(const QList<T> &list, const U &u, int from)
-{
- typedef typename QList<T>::Node Node;
-
- if (from < 0)
- from += list.p.size();
- else if (from >= list.p.size())
- from = list.p.size()-1;
- if (from >= 0) {
- Node *b = reinterpret_cast<Node *>(list.p.begin());
- Node *n = reinterpret_cast<Node *>(list.p.at(from + 1));
- while (n-- != b) {
- if (n->t() == u)
- return int(n - b);
- }
- }
- return -1;
-}
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE bool QList<T>::contains(const T &t) const
-{
- return contains_impl(t, MemoryLayout());
-}
-
-template <typename T>
-inline bool QList<T>::contains_impl(const T &t, QListData::NotArrayCompatibleLayout) const
-{
- Node *e = reinterpret_cast<Node *>(p.end());
- Node *i = reinterpret_cast<Node *>(p.begin());
- for (; i != e; ++i)
- if (i->t() == t)
- return true;
- return false;
-}
-
-template <typename T>
-inline bool QList<T>::contains_impl(const T &t, QListData::ArrayCompatibleLayout) const
-{
- const T *b = reinterpret_cast<const T*>(p.begin());
- const T *e = reinterpret_cast<const T*>(p.end());
- return std::find(b, e, t) != e;
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE int QList<T>::count(const T &t) const
-{
- return this->count_impl(t, MemoryLayout());
-}
-
-template <typename T>
-inline int QList<T>::count_impl(const T &t, QListData::NotArrayCompatibleLayout) const
-{
- int c = 0;
- Node *e = reinterpret_cast<Node *>(p.end());
- Node *i = reinterpret_cast<Node *>(p.begin());
- for (; i != e; ++i)
- if (i->t() == t)
- ++c;
- return c;
-}
-
-template <typename T>
-inline int QList<T>::count_impl(const T &t, QListData::ArrayCompatibleLayout) const
-{
- return int(std::count(reinterpret_cast<const T*>(p.begin()),
- reinterpret_cast<const T*>(p.end()),
- t));
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE QVector<T> QList<T>::toVector() const
-{
- return QVector<T>(begin(), end());
-}
-
-template <typename T>
-QList<T> QList<T>::fromVector(const QVector<T> &vector)
-{
- return vector.toList();
-}
-
-template <typename T>
-Q_OUTOFLINE_TEMPLATE QList<T> QVector<T>::toList() const
-{
- return QList<T>(begin(), end());
-}
-
-template <typename T>
-QVector<T> QVector<T>::fromList(const QList<T> &list)
-{
- return list.toVector();
-}
-
-Q_DECLARE_SEQUENTIAL_ITERATOR(List)
-Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(List)
-
-template <typename T>
-uint qHash(const QList<T> &key, uint seed = 0)
- noexcept(noexcept(qHashRange(key.cbegin(), key.cend(), seed)))
-{
- return qHashRange(key.cbegin(), key.cend(), seed);
-}
-
-template <typename T>
-bool operator<(const QList<T> &lhs, const QList<T> &rhs)
- noexcept(noexcept(std::lexicographical_compare(lhs.begin(), lhs.end(),
- rhs.begin(), rhs.end())))
-{
- return std::lexicographical_compare(lhs.begin(), lhs.end(),
- rhs.begin(), rhs.end());
-}
-
-template <typename T>
-inline bool operator>(const QList<T> &lhs, const QList<T> &rhs)
- noexcept(noexcept(lhs < rhs))
-{
- return rhs < lhs;
-}
-
-template <typename T>
-inline bool operator<=(const QList<T> &lhs, const QList<T> &rhs)
- noexcept(noexcept(lhs < rhs))
-{
- return !(lhs > rhs);
-}
-
-template <typename T>
-inline bool operator>=(const QList<T> &lhs, const QList<T> &rhs)
- noexcept(noexcept(lhs < rhs))
-{
- return !(lhs < rhs);
-}
-
+using QListIterator = QVectorIterator<T>;
QT_END_NAMESPACE
+#endif
#include <QtCore/qbytearraylist.h>
#include <QtCore/qstringlist.h>
-#ifdef Q_CC_MSVC
-#pragma warning( pop )
-#endif
-
#endif // QLIST_H
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index 18c681581f..f169ed5e49 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -219,7 +219,7 @@ struct QMapData : public QMapDataBase
Node *createNode(const Key &k, const T &v, Node *parent = nullptr, bool left = false)
{
- Node *n = static_cast<Node *>(QMapDataBase::createNode(sizeof(Node), Q_ALIGNOF(Node),
+ Node *n = static_cast<Node *>(QMapDataBase::createNode(sizeof(Node), alignof(Node),
parent, left));
QT_TRY {
new (&n->key) Key(k);
@@ -243,7 +243,7 @@ struct QMapData : public QMapDataBase
void destroy() {
if (root()) {
root()->destroySubTree();
- freeTree(header.left, Q_ALIGNOF(Node));
+ freeTree(header.left, alignof(Node));
}
freeData(this);
}
@@ -356,17 +356,6 @@ public:
inline void detach() { if (d->ref.isShared()) detach_helper(); }
inline bool isDetached() const { return !d->ref.isShared(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable)
- {
- if (sharable == d->ref.isSharable())
- return;
- if (!sharable)
- detach();
- // Don't call on shared_null
- d->ref.setSharable(sharable);
- }
-#endif
inline bool isSharedWith(const QMap<Key, T> &other) const { return d == other.d; }
void clear();
@@ -444,13 +433,8 @@ public:
inline iterator &operator-=(int j) { return *this = *this - j; }
friend inline iterator operator+(int j, iterator k) { return k + j; }
-#ifndef QT_STRICT_ITERATORS
- public:
- inline bool operator==(const const_iterator &o) const
- { return i == o.i; }
- inline bool operator!=(const const_iterator &o) const
- { return i != o.i; }
-#endif
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
friend class QMap<Key, T>;
};
friend class iterator;
@@ -469,12 +453,7 @@ public:
Q_DECL_CONSTEXPR inline const_iterator() : i(nullptr) { }
inline const_iterator(const Node *node) : i(node) { }
-#ifdef QT_STRICT_ITERATORS
- explicit inline const_iterator(const iterator &o)
-#else
- inline const_iterator(const iterator &o)
-#endif
- { i = o.i; }
+ inline const_iterator(const iterator &o) { i = o.i; }
inline const Key &key() const { return i->key; }
inline const T &value() const { return i->value; }
@@ -508,11 +487,6 @@ public:
inline const_iterator &operator-=(int j) { return *this = *this - j; }
friend inline const_iterator operator+(int j, const_iterator k) { return k + j; }
-#ifdef QT_STRICT_ITERATORS
- private:
- inline bool operator==(const iterator &o) const { return operator==(const_iterator(o)); }
- inline bool operator!=(const iterator &o) const { return operator!=(const_iterator(o)); }
-#endif
friend class QMap<Key, T>;
};
friend class const_iterator;
diff --git a/src/corelib/tools/qrefcount.h b/src/corelib/tools/qrefcount.h
index 2e5388ad9a..982a9c2bbf 100644
--- a/src/corelib/tools/qrefcount.h
+++ b/src/corelib/tools/qrefcount.h
@@ -53,10 +53,6 @@ class RefCount
public:
inline bool ref() noexcept {
int count = atomic.loadRelaxed();
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- if (count == 0) // !isSharable
- return false;
-#endif
if (count != -1) // !isStatic
atomic.ref();
return true;
@@ -64,32 +60,11 @@ public:
inline bool deref() noexcept {
int count = atomic.loadRelaxed();
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- if (count == 0) // !isSharable
- return false;
-#endif
if (count == -1) // isStatic
return true;
return atomic.deref();
}
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- bool setSharable(bool sharable) noexcept
- {
- Q_ASSERT(!isShared());
- if (sharable)
- return atomic.testAndSetRelaxed(0, 1);
- else
- return atomic.testAndSetRelaxed(1, 0);
- }
-
- bool isSharable() const noexcept
- {
- // Sharable === Shared ownership.
- return atomic.loadRelaxed() != 0;
- }
-#endif
-
bool isStatic() const noexcept
{
// Persistent object, never deleted
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h
index 923411c34c..f98bb051ec 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -86,9 +86,6 @@ public:
inline void detach() { q_hash.detach(); }
inline bool isDetached() const { return q_hash.isDetached(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable) { q_hash.setSharable(sharable); }
-#endif
inline void clear() { q_hash.clear(); }
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index 7c752d0318..33a0697e12 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -1005,6 +1005,8 @@
\snippet code/doc_src_qset.cpp 13
+ \include containers-range-constructor.qdocinc
+
\sa fromList(), QList::fromSet()
*/
@@ -1015,6 +1017,8 @@
This is the same as toList().
+ \include containers-range-constructor.qdocinc
+
\sa fromList(), QList::fromSet()
*/
@@ -1030,6 +1034,8 @@
\snippet code/doc_src_qset.cpp 14
+ \include containers-range-constructor.qdocinc
+
\sa toList(), QList::toSet()
*/
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 198cc58c38..362d57fb9a 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -71,21 +71,6 @@ QT_END_NAMESPACE
QT_BEGIN_NAMESPACE
-
-// Macro QSHAREDPOINTER_VERIFY_AUTO_CAST
-// generates a compiler error if the following construct isn't valid:
-// T *ptr1;
-// X *ptr2 = ptr1;
-//
-#ifdef QT_NO_DEBUG
-# define QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X) qt_noop()
-#else
-
-template<typename T> inline void qt_sharedpointer_cast_check(T *) { }
-# define QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X) \
- qt_sharedpointer_cast_check<T>(static_cast<X *>(0))
-#endif
-
//
// forward declarations
//
@@ -299,6 +284,9 @@ template <class T> class QSharedPointer
{
typedef T *QSharedPointer:: *RestrictedBool;
typedef QtSharedPointer::ExternalRefCountData Data;
+ template <typename X>
+ using IfCompatible = typename std::enable_if<std::is_convertible<X*, T*>::value, bool>::type;
+
public:
typedef T Type;
typedef T element_type;
@@ -322,11 +310,11 @@ public:
Q_DECL_CONSTEXPR QSharedPointer(std::nullptr_t) noexcept : value(nullptr), d(nullptr) { }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline explicit QSharedPointer(X *ptr) : value(ptr) // noexcept
{ internalConstruct(ptr, QtSharedPointer::NormalDeleter()); }
- template <class X, typename Deleter>
+ template <class X, typename Deleter, IfCompatible<X> = true>
inline QSharedPointer(X *ptr, Deleter deleter) : value(ptr) // throws
{ internalConstruct(ptr, deleter); }
@@ -354,7 +342,7 @@ public:
return *this;
}
- template <class X>
+ template <class X, IfCompatible<X> = true>
QSharedPointer(QSharedPointer<X> &&other) noexcept
: value(other.value), d(other.d)
{
@@ -362,7 +350,7 @@ public:
other.value = nullptr;
}
- template <class X>
+ template <class X, IfCompatible<X> = true>
QSharedPointer &operator=(QSharedPointer<X> &&other) noexcept
{
QSharedPointer moved(std::move(other));
@@ -370,11 +358,11 @@ public:
return *this;
}
- template <class X>
+ template <class X, IfCompatible<X> = true>
QSharedPointer(const QSharedPointer<X> &other) noexcept : value(other.value), d(other.d)
{ if (d) ref(); }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QSharedPointer &operator=(const QSharedPointer<X> &other)
{
QSharedPointer copy(other);
@@ -382,11 +370,11 @@ public:
return *this;
}
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QSharedPointer(const QWeakPointer<X> &other) : value(nullptr), d(nullptr)
{ *this = other; }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QSharedPointer<T> &operator=(const QWeakPointer<X> &other)
{ internalSet(other.d, other.value); return *this; }
@@ -556,6 +544,8 @@ class QWeakPointer
{
typedef T *QWeakPointer:: *RestrictedBool;
typedef QtSharedPointer::ExternalRefCountData Data;
+ template <typename X>
+ using IfCompatible = typename std::enable_if<std::is_convertible<X*, T*>::value, bool>::type;
public:
typedef T element_type;
@@ -581,14 +571,14 @@ public:
#ifndef QT_NO_QOBJECT
// special constructor that is enabled only if X derives from QObject
#if QT_DEPRECATED_SINCE(5, 0)
- template <class X>
+ template <class X, IfCompatible<X> = true>
QT_DEPRECATED inline QWeakPointer(X *ptr) : d(ptr ? Data::getAndRef(ptr) : nullptr), value(ptr)
{ }
#endif
#endif
#if QT_DEPRECATED_SINCE(5, 0)
- template <class X>
+ template <class X, IfCompatible<X> = true>
QT_DEPRECATED inline QWeakPointer &operator=(X *ptr)
{ return *this = QWeakPointer(ptr); }
#endif
@@ -624,11 +614,11 @@ public:
return *this;
}
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QWeakPointer(const QWeakPointer<X> &o) : d(nullptr), value(nullptr)
{ *this = o; }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QWeakPointer &operator=(const QWeakPointer<X> &o)
{
// conversion between X and T could require access to the virtual table
@@ -645,14 +635,13 @@ public:
bool operator!=(const QWeakPointer<X> &o) const noexcept
{ return !(*this == o); }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QWeakPointer(const QSharedPointer<X> &o) : d(nullptr), value(nullptr)
{ *this = o; }
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QWeakPointer &operator=(const QSharedPointer<X> &o)
{
- QSHAREDPOINTER_VERIFY_AUTO_CAST(T, X); // if you get an error in this line, the cast is invalid
internalSet(o.d, o.data());
return *this;
}
@@ -689,7 +678,7 @@ public:
{ return *this = QWeakPointer<X>(ptr, true); }
#ifndef QT_NO_QOBJECT
- template <class X>
+ template <class X, IfCompatible<X> = true>
inline QWeakPointer(X *ptr, bool) : d(ptr ? Data::getAndRef(ptr) : nullptr), value(ptr)
{ }
#endif
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 62fbdb4a2a..5def2eceb2 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -59,12 +59,31 @@
QT_BEGIN_NAMESPACE
+namespace QtPrivate {
+ template <typename V, typename U> int indexOf(const QVector<V> &list, const U &u, int from);
+ template <typename V, typename U> int lastIndexOf(const QVector<V> &list, const U &u, int from);
+}
+
+template <typename T> struct QVectorSpecialMethods
+{
+protected:
+ ~QVectorSpecialMethods() = default;
+};
+template <> struct QVectorSpecialMethods<QByteArray>;
+template <> struct QVectorSpecialMethods<QString>;
+
template <typename T>
class QVector
+#ifndef Q_QDOC
+ : public QVectorSpecialMethods<T>
+#endif
{
typedef QTypedArrayData<T> Data;
Data *d;
+ template <typename V, typename U> friend int QtPrivate::indexOf(const QVector<V> &list, const U &u, int from);
+ template <typename V, typename U> friend int QtPrivate::lastIndexOf(const QVector<V> &list, const U &u, int from);
+
public:
inline QVector() noexcept : d(Data::sharedNull()) { }
explicit QVector(int size);
@@ -111,23 +130,6 @@ public:
inline void detach();
inline bool isDetached() const { return !d->ref.isShared(); }
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- inline void setSharable(bool sharable)
- {
- if (sharable == d->ref.isSharable())
- return;
- if (!sharable)
- detach();
-
- if (d == Data::unsharableEmpty()) {
- if (sharable)
- d = Data::sharedNull();
- } else {
- d->ref.setSharable(sharable);
- }
- Q_ASSERT(d->ref.isSharable() == sharable);
- }
-#endif
inline bool isSharedWith(const QVector<T> &other) const { return d == other.d; }
@@ -206,7 +208,6 @@ public:
typedef typename Data::const_iterator const_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#if !defined(QT_STRICT_ITERATORS) || defined(Q_CLANG_QDOC)
inline iterator begin() { detach(); return d->begin(); }
inline const_iterator begin() const noexcept { return d->constBegin(); }
inline const_iterator cbegin() const noexcept { return d->constBegin(); }
@@ -215,16 +216,6 @@ public:
inline const_iterator end() const noexcept { return d->constEnd(); }
inline const_iterator cend() const noexcept { return d->constEnd(); }
inline const_iterator constEnd() const noexcept { return d->constEnd(); }
-#else
- inline iterator begin(iterator = iterator()) { detach(); return d->begin(); }
- inline const_iterator begin(const_iterator = const_iterator()) const noexcept { return d->constBegin(); }
- inline const_iterator cbegin(const_iterator = const_iterator()) const noexcept { return d->constBegin(); }
- inline const_iterator constBegin(const_iterator = const_iterator()) const noexcept { return d->constBegin(); }
- inline iterator end(iterator = iterator()) { detach(); return d->end(); }
- inline const_iterator end(const_iterator = const_iterator()) const noexcept { return d->constEnd(); }
- inline const_iterator cend(const_iterator = const_iterator()) const noexcept { return d->constEnd(); }
- inline const_iterator constEnd(const_iterator = const_iterator()) const noexcept { return d->constEnd(); }
-#endif
reverse_iterator rbegin() { return reverse_iterator(end()); }
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); }
@@ -298,9 +289,6 @@ public:
inline QVector<T> &operator<<(T &&t)
{ append(std::move(t)); return *this; }
- static QVector<T> fromList(const QList<T> &list);
- QList<T> toList() const;
-
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
Q_DECL_DEPRECATED_X("Use QVector<T>(vector.begin(), vector.end()) instead.")
static inline QVector<T> fromStdVector(const std::vector<T> &vector)
@@ -309,6 +297,14 @@ public:
inline std::vector<T> toStdVector() const
{ return std::vector<T>(d->begin(), d->end()); }
#endif
+
+ // Consider deprecating in 6.4 or later
+ static QVector<T> fromList(const QVector<T> &list) { return list; }
+ QVector<T> toList() const { return *this; }
+
+ static inline QVector<T> fromVector(const QVector<T> &vector) { return vector; }
+ inline QVector<T> toVector() const { return *this; }
+
private:
// ### Qt6: remove methods, they are unused
void reallocData(const int size, const int alloc, QArrayData::AllocationOptions options = QArrayData::Default);
@@ -402,14 +398,11 @@ inline QVector<T>::QVector(const QVector<T> &v)
template <typename T>
void QVector<T>::detach()
{
- if (!isDetached()) {
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- if (!d->alloc)
- d = Data::unsharableEmpty();
- else
-#endif
- realloc(int(d->alloc));
- }
+ if (d->ref.isStatic())
+ return;
+
+ if (!isDetached())
+ realloc(int(d->alloc));
Q_ASSERT(isDetached());
}
@@ -418,11 +411,7 @@ void QVector<T>::reserve(int asize)
{
if (asize > int(d->alloc))
realloc(asize);
- if (isDetached()
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- && d != Data::unsharableEmpty()
-#endif
- )
+ if (isDetached())
d->capacityReserved = 1;
Q_ASSERT(capacity() >= asize);
}
@@ -605,9 +594,6 @@ void QVector<T>::reallocData(const int asize, const int aalloc, QArrayData::Allo
x = Data::allocate(aalloc, options);
Q_CHECK_PTR(x);
// aalloc is bigger then 0 so it is not [un]sharedEmpty
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- Q_ASSERT(x->ref.isSharable() || options.testFlag(QArrayData::Unsharable));
-#endif
Q_ASSERT(!x->ref.isStatic());
x->size = asize;
@@ -688,9 +674,6 @@ void QVector<T>::reallocData(const int asize, const int aalloc, QArrayData::Allo
Q_ASSERT(d->data());
Q_ASSERT(uint(d->size) <= d->alloc);
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- Q_ASSERT(d != Data::unsharableEmpty());
-#endif
Q_ASSERT(aalloc ? d != Data::sharedNull() : d == Data::sharedNull());
Q_ASSERT(d->alloc >= uint(aalloc));
Q_ASSERT(d->size == asize);
@@ -709,9 +692,6 @@ void QVector<T>::realloc(int aalloc, QArrayData::AllocationOptions options)
x = Data::allocate(aalloc, options);
Q_CHECK_PTR(x);
// aalloc is bigger then 0 so it is not [un]sharedEmpty
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- Q_ASSERT(x->ref.isSharable() || options.testFlag(QArrayData::Unsharable));
-#endif
Q_ASSERT(!x->ref.isStatic());
x->size = d->size;
@@ -759,9 +739,6 @@ void QVector<T>::realloc(int aalloc, QArrayData::AllocationOptions options)
Q_ASSERT(d->data());
Q_ASSERT(uint(d->size) <= d->alloc);
-#if !defined(QT_NO_UNSHARABLE_CONTAINERS)
- Q_ASSERT(d != Data::unsharableEmpty());
-#endif
Q_ASSERT(d != Data::sharedNull());
Q_ASSERT(d->alloc >= uint(aalloc));
}
@@ -1004,38 +981,52 @@ QVector<T> &QVector<T>::operator+=(const QVector &l)
return *this;
}
-template <typename T>
-int QVector<T>::indexOf(const T &t, int from) const
+namespace QtPrivate {
+template <typename T, typename U>
+int indexOf(const QVector<T> &vector, const U &u, int from)
{
if (from < 0)
- from = qMax(from + d->size, 0);
- if (from < d->size) {
- T* n = d->begin() + from - 1;
- T* e = d->end();
+ from = qMax(from + vector.size(), 0);
+ if (from < vector.size()) {
+ auto n = vector.begin() + from - 1;
+ auto e = vector.end();
while (++n != e)
- if (*n == t)
- return n - d->begin();
+ if (*n == u)
+ return n - vector.begin();
}
return -1;
}
-template <typename T>
-int QVector<T>::lastIndexOf(const T &t, int from) const
+template <typename T, typename U>
+int lastIndexOf(const QVector<T> &vector, const U &u, int from)
{
if (from < 0)
- from += d->size;
- else if (from >= d->size)
- from = d->size-1;
+ from += vector.d->size;
+ else if (from >= vector.size())
+ from = vector.size() - 1;
if (from >= 0) {
- T* b = d->begin();
- T* n = d->begin() + from + 1;
+ auto b = vector.begin();
+ auto n = vector.begin() + from + 1;
while (n != b) {
- if (*--n == t)
+ if (*--n == u)
return n - b;
}
}
return -1;
}
+}
+
+template <typename T>
+int QVector<T>::indexOf(const T &t, int from) const
+{
+ return QtPrivate::indexOf<T, T>(*this, t, from);
+}
+
+template <typename T>
+int QVector<T>::lastIndexOf(const T &t, int from) const
+{
+ return QtPrivate::lastIndexOf(*this, t, from);
+}
template <typename T>
bool QVector<T>::contains(const T &t) const
@@ -1153,4 +1144,7 @@ QVector<QStringRef> QStringRef::split(QChar sep, Qt::SplitBehavior behavior, Qt:
QT_END_NAMESPACE
+#include <QtCore/qbytearraylist.h>
+#include <QtCore/qstringlist.h>
+
#endif // QVECTOR_H
diff --git a/src/corelib/tools/qvector.qdoc b/src/corelib/tools/qvector.qdoc
index 8765b7fbd6..116d962411 100644
--- a/src/corelib/tools/qvector.qdoc
+++ b/src/corelib/tools/qvector.qdoc
@@ -1359,6 +1359,8 @@
\snippet code/src_corelib_tools_qvector.cpp 14
+ \include containers-range-constructor.qdocinc
+
\sa fromList(), QList::fromVector()
*/
@@ -1370,6 +1372,8 @@
\snippet code/src_corelib_tools_qvector.cpp 15
+ \include containers-range-constructor.qdocinc
+
\sa toList(), QList::toVector()
*/
@@ -1382,6 +1386,8 @@
\snippet code/src_corelib_tools_qvector.cpp 16
+ \include containers-range-constructor.qdocinc
+
\sa toStdVector(), QList::fromStdList()
*/
@@ -1392,6 +1398,8 @@
\snippet code/src_corelib_tools_qvector.cpp 17
+ \include containers-range-constructor.qdocinc
+
\sa fromStdVector(), QList::toStdList()
*/
diff --git a/src/corelib/tools/qvector_msvc.cpp b/src/corelib/tools/qvector_msvc.cpp
index cee343e72b..7e87467d42 100644
--- a/src/corelib/tools/qvector_msvc.cpp
+++ b/src/corelib/tools/qvector_msvc.cpp
@@ -47,12 +47,5 @@
# error "This file must be compiled with no precompiled headers"
#endif
-// invert the setting of QT_STRICT_ITERATORS, whichever it was
-#ifdef QT_STRICT_ITERATORS
-# undef QT_STRICT_ITERATORS
-#else
-# define QT_STRICT_ITERATORS
-#endif
-
// the Q_TEMPLATE_EXTERN at the bottom of qvector.h will do the trick
#include <QtCore/qvector.h>
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index eb8f61c783..ce1546db92 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -153,7 +153,7 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QVector<in
QList<QByteArray>::ConstIterator it = parameterTypes.constBegin();
QList<QByteArray>::ConstIterator end = parameterTypes.constEnd();
for ( ; it != end; ++it) {
- const QByteArray &type = *it;
+ QByteArray type = *it;
if (type.endsWith('*')) {
errorMsg = QLatin1String("Pointers are not supported: ") + QLatin1String(type);
return -1;
@@ -180,6 +180,9 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QVector<in
return -1; // not allowed
}
+ if (type.startsWith("QList<"))
+ type = "QVector<" + type.mid(sizeof("QList<") - 1);
+
int id = QMetaType::type(type);
#ifdef QT_BOOTSTRAPPED
// in bootstrap mode QDBusMessage isn't included, thus we need to resolve it manually here
diff --git a/src/gui/configure.json b/src/gui/configure.json
index d5cbe6f78a..766ee8b8b2 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -1636,15 +1636,9 @@
"condition": "features.imageformat_xpm",
"output": [ "publicFeature", "feature" ]
},
- "shortcut": {
- "label": "QShortcut",
- "purpose": "Provides keyboard accelerators and shortcuts.",
- "section": "Kernel",
- "output": [ "publicFeature", "feature" ]
- },
"action": {
- "label": "QAction",
- "purpose": "Provides widget actions.",
+ "label": "Q(Gui)Action(Group)",
+ "purpose": "Provides abstract user interface actions.",
"section": "Kernel",
"output": [ "publicFeature", "feature" ]
},
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 45c8c05162..decfb364cf 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -35,7 +35,7 @@ testcocoon {
osx: LIBS_PRIVATE += -framework AppKit
darwin: LIBS_PRIVATE += -framework CoreGraphics
-CONFIG += simd optimize_full
+CONFIG += simd optimize_full metatypes install_metatypes
include(accessible/accessible.pri)
include(kernel/kernel.pri)
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index dda407181a..2779b97fbd 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -4145,11 +4145,11 @@ QPaintEngine *QImage::paintEngine() const
if (!d->paintEngine) {
QPaintDevice *paintDevice = const_cast<QImage *>(this);
- QPaintEngine *paintEngine = 0;
QPlatformIntegration *platformIntegration = QGuiApplicationPrivate::platformIntegration();
if (platformIntegration)
- paintEngine = platformIntegration->createImagePaintEngine(paintDevice);
- d->paintEngine = paintEngine ? paintEngine : new QRasterPaintEngine(paintDevice);
+ d->paintEngine = platformIntegration->createImagePaintEngine(paintDevice);
+ if (!d->paintEngine)
+ d->paintEngine = new QRasterPaintEngine(paintDevice);
}
return d->paintEngine;
diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri
index 9c80f1e2cc..3784abdacc 100644
--- a/src/gui/kernel/kernel.pri
+++ b/src/gui/kernel/kernel.pri
@@ -48,11 +48,8 @@ HEADERS += \
kernel/qinputmethod.h \
kernel/qinputmethod_p.h \
kernel/qinternalmimedata_p.h \
- kernel/qkeysequence.h \
- kernel/qkeysequence_p.h \
kernel/qkeymapper_p.h \
kernel/qpalette.h \
- kernel/qshortcutmap_p.h \
kernel/qsessionmanager.h \
kernel/qsessionmanager_p.h \
kernel/qwindowdefs.h \
@@ -108,12 +105,10 @@ SOURCES += \
kernel/qevent.cpp \
kernel/qinputmethod.cpp \
kernel/qinternalmimedata.cpp \
- kernel/qkeysequence.cpp \
kernel/qkeymapper.cpp \
kernel/qpalette.cpp \
kernel/qguivariant.cpp \
kernel/qscreen.cpp \
- kernel/qshortcutmap.cpp \
kernel/qstylehints.cpp \
kernel/qtouchdevice.cpp \
kernel/qplatformsharedgraphicscache.cpp \
@@ -131,6 +126,18 @@ SOURCES += \
kernel/qhighdpiscaling.cpp \
kernel/qtestsupport_gui.cpp
+qtConfig(action) {
+ HEADERS += \
+ kernel/qguiaction.h \
+ kernel/qguiaction_p.h \
+ kernel/qguiactiongroup.h \
+ kernel/qguiactiongroup_p.h
+
+ SOURCES += \
+ kernel/qguiactiongroup.cpp \
+ kernel/qguiaction.cpp
+}
+
qtConfig(draganddrop) {
HEADERS += \
kernel/qdnd_p.h \
@@ -160,4 +167,17 @@ qtConfig(opengl) {
kernel/qopenglwindow.cpp
}
+qtConfig(shortcut) {
+ HEADERS += \
+ kernel/qguishortcut.h \
+ kernel/qguishortcut_p.h \
+ kernel/qshortcutmap_p.h \
+ kernel/qkeysequence.h \
+ kernel/qkeysequence_p.h
+ SOURCES += \
+ kernel/qguishortcut.cpp \
+ kernel/qshortcutmap.cpp \
+ kernel/qkeysequence.cpp
+}
+
win32:HEADERS+=kernel/qwindowdefs_win.h
diff --git a/src/gui/kernel/qdnd.cpp b/src/gui/kernel/qdnd.cpp
index 5c5f166554..dd541af3b8 100644
--- a/src/gui/kernel/qdnd.cpp
+++ b/src/gui/kernel/qdnd.cpp
@@ -113,11 +113,12 @@ Qt::DropAction QDragManager::drag(QDrag *o)
m_object->d_func()->target = 0;
- QGuiApplicationPrivate::instance()->notifyDragStarted(o);
+ QGuiApplicationPrivate::instance()->notifyDragStarted(m_object.data());
const Qt::DropAction result = m_platformDrag->drag(m_object);
- m_object = 0;
- if (!m_platformDrag->ownsDragObject())
- o->deleteLater();
+ if (!m_object.isNull() && !m_platformDrag->ownsDragObject())
+ m_object->deleteLater();
+
+ m_object.clear();
return result;
}
diff --git a/src/gui/kernel/qdnd_p.h b/src/gui/kernel/qdnd_p.h
index b1219c8658..abb30986a5 100644
--- a/src/gui/kernel/qdnd_p.h
+++ b/src/gui/kernel/qdnd_p.h
@@ -101,13 +101,13 @@ public:
void setCurrentTarget(QObject *target, bool dropped = false);
QObject *currentTarget() const;
- QDrag *object() const { return m_object; }
+ QPointer<QDrag> object() const { return m_object; }
QObject *source() const;
private:
QObject *m_currentDropTarget;
QPlatformDrag *m_platformDrag;
- QDrag *m_object;
+ QPointer<QDrag> m_object;
static QDragManager *m_instance;
Q_DISABLE_COPY_MOVE(QDragManager)
diff --git a/src/gui/kernel/qdrag.cpp b/src/gui/kernel/qdrag.cpp
index dcd0d13d5c..8e2f7be23e 100644
--- a/src/gui/kernel/qdrag.cpp
+++ b/src/gui/kernel/qdrag.cpp
@@ -279,8 +279,11 @@ Qt::DropAction QDrag::exec(Qt::DropActions supportedActions, Qt::DropAction defa
}
d->supported_actions = supportedActions;
d->default_action = transformedDefaultDropAction;
- d->executed_action = QDragManager::self()->drag(this);
-
+ QPointer<QDrag> self = this;
+ auto executed_action = QDragManager::self()->drag(self.data());
+ if (self.isNull())
+ return Qt::IgnoreAction;
+ d->executed_action = executed_action;
return d->executed_action;
}
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index f2f083c277..23defef50c 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1224,7 +1224,7 @@ Qt::KeyboardModifiers QKeyEvent::modifiers() const
return QInputEvent::modifiers();
}
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
/*!
\fn bool QKeyEvent::matches(QKeySequence::StandardKey key) const
\since 4.2
@@ -1240,7 +1240,7 @@ bool QKeyEvent::matches(QKeySequence::StandardKey matchKey) const
const QList<QKeySequence> bindings = QKeySequence::keyBindings(matchKey);
return bindings.contains(QKeySequence(searchkey));
}
-#endif // QT_NO_SHORTCUT
+#endif // QT_CONFIG(shortcut)
/*!
@@ -3324,18 +3324,18 @@ QWhatsThisClickedEvent::~QWhatsThisClickedEvent()
/*!
\class QActionEvent
\brief The QActionEvent class provides an event that is generated
- when a QAction is added, removed, or changed.
+ when a QGuiAction is added, removed, or changed.
\ingroup events
\inmodule QtGui
- Actions can be added to widgets using QWidget::addAction(). This
- generates an \l ActionAdded event, which you can handle to provide
+ Actions can be added to controls, for example by using QWidget::addAction().
+ This generates an \l ActionAdded event, which you can handle to provide
custom behavior. For example, QToolBar reimplements
QWidget::actionEvent() to create \l{QToolButton}s for the
actions.
- \sa QAction, QWidget::addAction(), QWidget::removeAction(), QWidget::actions()
+ \sa QGuiAction, QWidget::addAction(), QWidget::removeAction(), QWidget::actions()
*/
/*!
@@ -3346,7 +3346,7 @@ QWhatsThisClickedEvent::~QWhatsThisClickedEvent()
type is ActionAdded, the action is to be inserted before the
action \a before. If \a before is 0, the action is appended.
*/
-QActionEvent::QActionEvent(int type, QAction *action, QAction *before)
+QActionEvent::QActionEvent(int type, QGuiAction *action, QGuiAction *before)
: QEvent(static_cast<QEvent::Type>(type)), act(action), bef(before)
{}
@@ -3581,7 +3581,7 @@ QToolBarChangeEvent::~QToolBarChangeEvent()
#endif // QT_NO_TOOLBAR
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
/*!
Constructs a shortcut event for the given \a key press,
@@ -3602,7 +3602,7 @@ QShortcutEvent::~QShortcutEvent()
{
}
-#endif // QT_NO_SHORTCUT
+#endif // QT_CONFIG(shortcut)
#ifndef QT_NO_DEBUG_STREAM
@@ -3956,7 +3956,7 @@ QT_WARNING_POP
dbg << ')';
}
break;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
case QEvent::Shortcut: {
const QShortcutEvent *se = static_cast<const QShortcutEvent *>(e);
dbg << "QShortcutEvent(" << se->key().toString() << ", id=" << se->shortcutId();
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index 8a0e42f592..6f3215652b 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -45,7 +45,9 @@
#include <QtGui/qregion.h>
#include <QtCore/qnamespace.h>
#include <QtCore/qstring.h>
-#include <QtGui/qkeysequence.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/qkeysequence.h>
+#endif
#include <QtCore/qcoreevent.h>
#include <QtCore/qvariant.h>
#include <QtCore/qmap.h> // ### Qt 6: Remove
@@ -59,7 +61,7 @@
QT_BEGIN_NAMESPACE
-class QAction;
+class QGuiAction;
#ifndef QT_NO_GESTURES
class QGesture;
#endif
@@ -375,7 +377,7 @@ public:
~QKeyEvent();
int key() const { return k; }
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
bool matches(QKeySequence::StandardKey key) const;
#endif
Qt::KeyboardModifiers modifiers() const;
@@ -751,18 +753,18 @@ private:
};
#endif
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
class Q_GUI_EXPORT QActionEvent : public QEvent
{
- QAction *act, *bef;
+ QGuiAction *act, *bef;
public:
- QActionEvent(int type, QAction *action, QAction *before = nullptr);
+ QActionEvent(int type, QGuiAction *action, QGuiAction *before = nullptr);
~QActionEvent();
- inline QAction *action() const { return act; }
- inline QAction *before() const { return bef; }
+ inline QGuiAction *action() const { return act; }
+ inline QGuiAction *before() const { return bef; }
};
-#endif
+#endif // QT_CONFIG(action)
class Q_GUI_EXPORT QFileOpenEvent : public QEvent
{
@@ -792,7 +794,7 @@ private:
};
#endif
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
class Q_GUI_EXPORT QShortcutEvent : public QEvent
{
public:
@@ -827,10 +829,10 @@ private:
Q_GUI_EXPORT QDebug operator<<(QDebug, const QEvent *);
#endif
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
-#endif // QT_NO_SHORTCUT
+#endif // QT_CONFIG(shortcut)
class Q_GUI_EXPORT QPointingDeviceUniqueId
{
diff --git a/src/gui/kernel/qguiaction.cpp b/src/gui/kernel/qguiaction.cpp
new file mode 100644
index 0000000000..7c7d86f5ab
--- /dev/null
+++ b/src/gui/kernel/qguiaction.cpp
@@ -0,0 +1,1214 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qguiaction.h"
+#include "qguiactiongroup.h"
+
+#include "qguiaction_p.h"
+#include "qguiapplication.h"
+#include "qevent.h"
+#include "qlist.h"
+#include "qstylehints.h"
+#if QT_CONFIG(shortcut)
+# include <private/qshortcutmap_p.h>
+#endif
+#include <private/qguiapplication_p.h>
+#include <private/qdebug_p.h>
+
+#define QAPP_CHECK(functionName) \
+ if (Q_UNLIKELY(!QCoreApplication::instance())) { \
+ qWarning("QAction: Initialize Q(Gui)Application before calling '" functionName "'."); \
+ return; \
+ }
+
+QT_BEGIN_NAMESPACE
+
+/*
+ internal: guesses a descriptive text from a text suited for a menu entry
+ */
+static QString qt_strippedText(QString s)
+{
+ s.remove(QLatin1String("..."));
+ for (int i = 0; i < s.size(); ++i) {
+ if (s.at(i) == QLatin1Char('&'))
+ s.remove(i, 1);
+ }
+ return s.trimmed();
+}
+
+QGuiActionPrivate::QGuiActionPrivate() :
+#if QT_CONFIG(shortcut)
+ autorepeat(1),
+#endif
+ enabled(1), forceDisabled(0), visible(1), forceInvisible(0), checkable(0),
+ checked(0), separator(0), fontSet(false),
+ iconVisibleInMenu(-1), shortcutVisibleInContextMenu(-1)
+{
+}
+
+#if QT_CONFIG(shortcut)
+static bool dummy(QObject *, Qt::ShortcutContext) { return false; } // only for GUI testing.
+
+QShortcutMap::ContextMatcher QGuiActionPrivate::contextMatcher() const
+{
+ return dummy;
+}
+#endif // QT_CONFIG(shortcut)
+
+QGuiActionPrivate::~QGuiActionPrivate() = default;
+
+void QGuiActionPrivate::sendDataChanged()
+{
+ Q_Q(QGuiAction);
+ QActionEvent e(QEvent::ActionChanged, q);
+ QCoreApplication::sendEvent(q, &e);
+
+ emit q->changed();
+}
+
+#if QT_CONFIG(shortcut)
+void QGuiActionPrivate::redoGrab(QShortcutMap &map)
+{
+ Q_Q(QGuiAction);
+ if (shortcutId)
+ map.removeShortcut(shortcutId, q);
+ if (shortcut.isEmpty())
+ return;
+ shortcutId = map.addShortcut(q, shortcut, shortcutContext, contextMatcher());
+ if (!enabled)
+ map.setShortcutEnabled(false, shortcutId, q);
+ if (!autorepeat)
+ map.setShortcutAutoRepeat(false, shortcutId, q);
+}
+
+void QGuiActionPrivate::redoGrabAlternate(QShortcutMap &map)
+{
+ Q_Q(QGuiAction);
+ for(int i = 0; i < alternateShortcutIds.count(); ++i) {
+ if (const int id = alternateShortcutIds.at(i))
+ map.removeShortcut(id, q);
+ }
+ alternateShortcutIds.clear();
+ if (alternateShortcuts.isEmpty())
+ return;
+ for(int i = 0; i < alternateShortcuts.count(); ++i) {
+ const QKeySequence& alternate = alternateShortcuts.at(i);
+ if (!alternate.isEmpty())
+ alternateShortcutIds.append(map.addShortcut(q, alternate, shortcutContext, contextMatcher()));
+ else
+ alternateShortcutIds.append(0);
+ }
+ if (!enabled) {
+ for(int i = 0; i < alternateShortcutIds.count(); ++i) {
+ const int id = alternateShortcutIds.at(i);
+ map.setShortcutEnabled(false, id, q);
+ }
+ }
+ if (!autorepeat) {
+ for(int i = 0; i < alternateShortcutIds.count(); ++i) {
+ const int id = alternateShortcutIds.at(i);
+ map.setShortcutAutoRepeat(false, id, q);
+ }
+ }
+}
+
+void QGuiActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map)
+{
+ Q_Q(QGuiAction);
+ if (shortcutId)
+ map.setShortcutEnabled(enable, shortcutId, q);
+ for(int i = 0; i < alternateShortcutIds.count(); ++i) {
+ if (const int id = alternateShortcutIds.at(i))
+ map.setShortcutEnabled(enable, id, q);
+ }
+}
+#endif // QT_NO_SHORTCUT
+
+
+/*!
+ \class QGuiAction
+ \brief QGuiAction is the base class for actions, an abstract user interface
+ action that can be inserted into widgets.
+ \since 6.0
+
+ \inmodule QtGui
+
+ In applications many common commands can be invoked via menus,
+ toolbar buttons, and keyboard shortcuts. Since the user expects
+ each command to be performed in the same way, regardless of the
+ user interface used, it is useful to represent each command as
+ an \e action.
+
+ Actions can be added to menus and toolbars, and will
+ automatically keep them in sync. For example, in a word processor,
+ if the user presses a Bold toolbar button, the Bold menu item
+ will automatically be checked.
+
+ Actions can be created as independent objects, but they may
+ also be created during the construction of menus; the QMenu class
+ contains convenience functions for creating actions suitable for
+ use as menu items.
+
+ A QGuiAction may contain an icon, menu text, a shortcut, status text,
+ "What's This?" text, and a tooltip. Most of these can be set in
+ the constructor. They can also be set independently with
+ setIcon(), setText(), setIconText(), setShortcut(),
+ setStatusTip(), setWhatsThis(), and setToolTip(). For menu items,
+ it is possible to set an individual font with setFont().
+
+ We recommend that actions are created as children of the window
+ they are used in. In most cases actions will be children of
+ the application's main window.
+
+ \sa QMenu, QToolBar, {Application Example}
+*/
+
+/*!
+ \fn void QGuiAction::trigger()
+
+ This is a convenience slot that calls activate(Trigger).
+*/
+
+/*!
+ \fn void QGuiAction::hover()
+
+ This is a convenience slot that calls activate(Hover).
+*/
+
+/*!
+ \enum QGuiAction::MenuRole
+
+ This enum describes how an action should be moved into the application menu on \macos.
+
+ \value NoRole This action should not be put into the application menu
+ \value TextHeuristicRole This action should be put in the application menu based on the action's text
+ as described in the QMenuBar documentation.
+ \value ApplicationSpecificRole This action should be put in the application menu with an application specific role
+ \value AboutQtRole This action handles the "About Qt" menu item.
+ \value AboutRole This action should be placed where the "About" menu item is in the application menu. The text of
+ the menu item will be set to "About <application name>". The application name is fetched from the
+ \c{Info.plist} file in the application's bundle (See \l{Qt for macOS - Deployment}).
+ \value PreferencesRole This action should be placed where the "Preferences..." menu item is in the application menu.
+ \value QuitRole This action should be placed where the Quit menu item is in the application menu.
+
+ Setting this value only has effect on items that are in the immediate menus
+ of the menubar, not the submenus of those menus. For example, if you have
+ File menu in your menubar and the File menu has a submenu, setting the
+ MenuRole for the actions in that submenu have no effect. They will never be moved.
+*/
+
+/*!
+ Constructs an action with \a parent. If \a parent is an action
+ group the action will be automatically inserted into the group.
+
+ \note The \a parent argument is optional since Qt 5.7.
+*/
+QGuiAction::QGuiAction(QObject *parent)
+ : QGuiAction(*new QGuiActionPrivate, parent)
+{
+}
+
+/*!
+ Constructs an action with some \a text and \a parent. If \a
+ parent is an action group the action will be automatically
+ inserted into the group.
+
+ The action uses a stripped version of \a text (e.g. "\&Menu
+ Option..." becomes "Menu Option") as descriptive text for
+ tool buttons. You can override this by setting a specific
+ description with setText(). The same text will be used for
+ tooltips unless you specify a different text using
+ setToolTip().
+
+*/
+QGuiAction::QGuiAction(const QString &text, QObject *parent)
+ : QGuiAction(parent)
+{
+ Q_D(QGuiAction);
+ d->text = text;
+}
+
+/*!
+ Constructs an action with an \a icon and some \a text and \a
+ parent. If \a parent is an action group the action will be
+ automatically inserted into the group.
+
+ The action uses a stripped version of \a text (e.g. "\&Menu
+ Option..." becomes "Menu Option") as descriptive text for
+ tool buttons. You can override this by setting a specific
+ description with setText(). The same text will be used for
+ tooltips unless you specify a different text using
+ setToolTip().
+*/
+QGuiAction::QGuiAction(const QIcon &icon, const QString &text, QObject *parent)
+ : QGuiAction(text, parent)
+{
+ Q_D(QGuiAction);
+ d->icon = icon;
+}
+
+/*!
+ \internal
+*/
+QGuiAction::QGuiAction(QGuiActionPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+ Q_D(QGuiAction);
+ d->group = qobject_cast<QGuiActionGroup *>(parent);
+ if (d->group)
+ d->group->addAction(this);
+}
+
+#if QT_CONFIG(shortcut)
+/*!
+ \property QGuiAction::shortcut
+ \brief the action's primary shortcut key
+
+ Valid keycodes for this property can be found in \l Qt::Key and
+ \l Qt::Modifier. There is no default shortcut key.
+*/
+void QGuiAction::setShortcut(const QKeySequence &shortcut)
+{
+ QAPP_CHECK("setShortcut");
+
+ Q_D(QGuiAction);
+ if (d->shortcut == shortcut)
+ return;
+
+ d->shortcut = shortcut;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->sendDataChanged();
+}
+
+/*!
+ Sets \a shortcuts as the list of shortcuts that trigger the
+ action. The first element of the list is the primary shortcut.
+
+ \sa shortcut
+*/
+void QGuiAction::setShortcuts(const QList<QKeySequence> &shortcuts)
+{
+ Q_D(QGuiAction);
+
+ QList <QKeySequence> listCopy = shortcuts;
+
+ QKeySequence primary;
+ if (!listCopy.isEmpty())
+ primary = listCopy.takeFirst();
+
+ if (d->shortcut == primary && d->alternateShortcuts == listCopy)
+ return;
+
+ QAPP_CHECK("setShortcuts");
+
+ d->shortcut = primary;
+ d->alternateShortcuts = listCopy;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->sendDataChanged();
+}
+
+/*!
+ Sets a platform dependent list of shortcuts based on the \a key.
+ The result of calling this function will depend on the currently running platform.
+ Note that more than one shortcut can assigned by this action.
+ If only the primary shortcut is required, use setShortcut instead.
+
+ \sa QKeySequence::keyBindings()
+*/
+void QGuiAction::setShortcuts(QKeySequence::StandardKey key)
+{
+ QList <QKeySequence> list = QKeySequence::keyBindings(key);
+ setShortcuts(list);
+}
+
+/*!
+ Returns the primary shortcut.
+
+ \sa setShortcuts()
+*/
+QKeySequence QGuiAction::shortcut() const
+{
+ Q_D(const QGuiAction);
+ return d->shortcut;
+}
+
+/*!
+ Returns the list of shortcuts, with the primary shortcut as
+ the first element of the list.
+
+ \sa setShortcuts()
+*/
+QList<QKeySequence> QGuiAction::shortcuts() const
+{
+ Q_D(const QGuiAction);
+ QList <QKeySequence> shortcuts;
+ if (!d->shortcut.isEmpty())
+ shortcuts << d->shortcut;
+ if (!d->alternateShortcuts.isEmpty())
+ shortcuts << d->alternateShortcuts;
+ return shortcuts;
+}
+
+/*!
+ \property QGuiAction::shortcutContext
+ \brief the context for the action's shortcut
+
+ Valid values for this property can be found in \l Qt::ShortcutContext.
+ The default value is Qt::WindowShortcut.
+*/
+void QGuiAction::setShortcutContext(Qt::ShortcutContext context)
+{
+ Q_D(QGuiAction);
+ if (d->shortcutContext == context)
+ return;
+ QAPP_CHECK("setShortcutContext");
+ d->shortcutContext = context;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->sendDataChanged();
+}
+
+Qt::ShortcutContext QGuiAction::shortcutContext() const
+{
+ Q_D(const QGuiAction);
+ return d->shortcutContext;
+}
+
+/*!
+ \property QGuiAction::autoRepeat
+ \brief whether the action can auto repeat
+
+ If true, the action will auto repeat when the keyboard shortcut
+ combination is held down, provided that keyboard auto repeat is
+ enabled on the system.
+ The default value is true.
+*/
+void QGuiAction::setAutoRepeat(bool on)
+{
+ Q_D(QGuiAction);
+ if (d->autorepeat == on)
+ return;
+ QAPP_CHECK("setAutoRepeat");
+ d->autorepeat = on;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
+ d->sendDataChanged();
+}
+
+bool QGuiAction::autoRepeat() const
+{
+ Q_D(const QGuiAction);
+ return d->autorepeat;
+}
+#endif // QT_CONFIG(shortcut)
+
+/*!
+ \property QGuiAction::font
+ \brief the action's font
+
+ The font property is used to render the text set on the
+ QAction. The font will can be considered a hint as it will not be
+ consulted in all cases based upon application and style.
+
+ By default, this property contains the application's default font.
+
+ \sa setText()
+*/
+void QGuiAction::setFont(const QFont &font)
+{
+ Q_D(QGuiAction);
+ if (d->font == font)
+ return;
+
+ d->fontSet = true;
+ d->font = font;
+ d->sendDataChanged();
+}
+
+QFont QGuiAction::font() const
+{
+ Q_D(const QGuiAction);
+ return d->font;
+}
+
+
+/*!
+ Destroys the object and frees allocated resources.
+*/
+QGuiAction::~QGuiAction()
+{
+ Q_D(QGuiAction);
+ if (d->group)
+ d->group->removeAction(this);
+#if QT_CONFIG(shortcut)
+ if (d->shortcutId && qApp) {
+ QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(d->shortcutId, this);
+ for (int id : qAsConst(d->alternateShortcutIds))
+ QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(id, this);
+ }
+#endif
+}
+
+/*!
+ Sets this action group to \a group. The action will be automatically
+ added to the group's list of actions.
+
+ Actions within the group will be mutually exclusive.
+
+ \sa QGuiActionGroup, guiActionGroup()
+*/
+void QGuiAction::setActionGroup(QGuiActionGroup *group)
+{
+ Q_D(QGuiAction);
+ if(group == d->group)
+ return;
+
+ if(d->group)
+ d->group->removeAction(this);
+ d->group = group;
+ if(group)
+ group->addAction(this);
+ d->sendDataChanged();
+}
+
+/*!
+ Returns the action group for this action. If no action group manages
+ this action, then \nullptr will be returned.
+
+ \sa QGuiActionGroup, setActionGroup()
+*/
+QGuiActionGroup *QGuiAction::guiActionGroup() const
+{
+ Q_D(const QGuiAction);
+ return d->group;
+}
+
+
+/*!
+ \property QGuiAction::icon
+ \brief the action's icon
+
+ In toolbars, the icon is used as the tool button icon; in menus,
+ it is displayed to the left of the menu text. There is no default
+ icon.
+
+ If a null icon (QIcon::isNull()) is passed into this function,
+ the icon of the action is cleared.
+*/
+void QGuiAction::setIcon(const QIcon &icon)
+{
+ Q_D(QGuiAction);
+ d->icon = icon;
+ d->sendDataChanged();
+}
+
+QIcon QGuiAction::icon() const
+{
+ Q_D(const QGuiAction);
+ return d->icon;
+}
+
+/*!
+ If \a b is true then this action will be considered a separator.
+
+ How a separator is represented depends on the widget it is inserted
+ into. Under most circumstances the text, submenu, and icon will be
+ ignored for separator actions.
+
+ \sa isSeparator()
+*/
+void QGuiAction::setSeparator(bool b)
+{
+ Q_D(QGuiAction);
+ if (d->separator == b)
+ return;
+
+ d->separator = b;
+ d->sendDataChanged();
+}
+
+/*!
+ Returns \c true if this action is a separator action; otherwise it
+ returns \c false.
+
+ \sa setSeparator()
+*/
+bool QGuiAction::isSeparator() const
+{
+ Q_D(const QGuiAction);
+ return d->separator;
+}
+
+/*!
+ \property QGuiAction::text
+ \brief the action's descriptive text
+
+ If the action is added to a menu, the menu option will consist of
+ the icon (if there is one), the text, and the shortcut (if there
+ is one). If the text is not explicitly set in the constructor, or
+ by using setText(), the action's description icon text will be
+ used as text. There is no default text.
+
+ \sa iconText
+*/
+void QGuiAction::setText(const QString &text)
+{
+ Q_D(QGuiAction);
+ if (d->text == text)
+ return;
+
+ d->text = text;
+ d->sendDataChanged();
+}
+
+QString QGuiAction::text() const
+{
+ Q_D(const QGuiAction);
+ QString s = d->text;
+ if(s.isEmpty()) {
+ s = d->iconText;
+ s.replace(QLatin1Char('&'), QLatin1String("&&"));
+ }
+ return s;
+}
+
+/*!
+ \property QGuiAction::iconText
+ \brief the action's descriptive icon text
+
+ If QToolBar::toolButtonStyle is set to a value that permits text to
+ be displayed, the text defined held in this property appears as a
+ label in the relevant tool button.
+
+ It also serves as the default text in menus and tooltips if the action
+ has not been defined with setText() or setToolTip(), and will
+ also be used in toolbar buttons if no icon has been defined using setIcon().
+
+ If the icon text is not explicitly set, the action's normal text will be
+ used for the icon text.
+
+ By default, this property contains an empty string.
+
+ \sa setToolTip(), setStatusTip()
+*/
+void QGuiAction::setIconText(const QString &text)
+{
+ Q_D(QGuiAction);
+ if (d->iconText == text)
+ return;
+
+ d->iconText = text;
+ d->sendDataChanged();
+}
+
+QString QGuiAction::iconText() const
+{
+ Q_D(const QGuiAction);
+ if (d->iconText.isEmpty())
+ return qt_strippedText(d->text);
+ return d->iconText;
+}
+
+/*!
+ \property QGuiAction::toolTip
+ \brief the action's tooltip
+
+ This text is used for the tooltip. If no tooltip is specified,
+ the action's text is used.
+
+ By default, this property contains the action's text.
+
+ \sa setStatusTip(), setShortcut()
+*/
+void QGuiAction::setToolTip(const QString &tooltip)
+{
+ Q_D(QGuiAction);
+ if (d->tooltip == tooltip)
+ return;
+
+ d->tooltip = tooltip;
+ d->sendDataChanged();
+}
+
+QString QGuiAction::toolTip() const
+{
+ Q_D(const QGuiAction);
+ if (d->tooltip.isEmpty()) {
+ if (!d->text.isEmpty())
+ return qt_strippedText(d->text);
+ return qt_strippedText(d->iconText);
+ }
+ return d->tooltip;
+}
+
+/*!
+ \property QGuiAction::statusTip
+ \brief the action's status tip
+
+ The status tip is displayed on all status bars provided by the
+ action's top-level parent widget.
+
+ By default, this property contains an empty string.
+
+ \sa setToolTip(), showStatusText()
+*/
+void QGuiAction::setStatusTip(const QString &statustip)
+{
+ Q_D(QGuiAction);
+ if (d->statustip == statustip)
+ return;
+
+ d->statustip = statustip;
+ d->sendDataChanged();
+}
+
+QString QGuiAction::statusTip() const
+{
+ Q_D(const QGuiAction);
+ return d->statustip;
+}
+
+/*!
+ \property QGuiAction::whatsThis
+ \brief the action's "What's This?" help text
+
+ The "What's This?" text is used to provide a brief description of
+ the action. The text may contain rich text. There is no default
+ "What's This?" text.
+
+ \sa QWhatsThis
+*/
+void QGuiAction::setWhatsThis(const QString &whatsthis)
+{
+ Q_D(QGuiAction);
+ if (d->whatsthis == whatsthis)
+ return;
+
+ d->whatsthis = whatsthis;
+ d->sendDataChanged();
+}
+
+QString QGuiAction::whatsThis() const
+{
+ Q_D(const QGuiAction);
+ return d->whatsthis;
+}
+
+/*!
+ \enum QGuiAction::Priority
+
+ This enum defines priorities for actions in user interface.
+
+ \value LowPriority The action should not be prioritized in
+ the user interface.
+
+ \value NormalPriority
+
+ \value HighPriority The action should be prioritized in
+ the user interface.
+
+ \sa priority
+*/
+
+
+/*!
+ \property QGuiAction::priority
+
+ \brief the actions's priority in the user interface.
+
+ This property can be set to indicate how the action should be prioritized
+ in the user interface.
+
+ For instance, when toolbars have the Qt::ToolButtonTextBesideIcon
+ mode set, then actions with LowPriority will not show the text
+ labels.
+*/
+void QGuiAction::setPriority(Priority priority)
+{
+ Q_D(QGuiAction);
+ if (d->priority == priority)
+ return;
+
+ d->priority = priority;
+ d->sendDataChanged();
+}
+
+QGuiAction::Priority QGuiAction::priority() const
+{
+ Q_D(const QGuiAction);
+ return d->priority;
+}
+
+/*!
+ \property QGuiAction::checkable
+ \brief whether the action is a checkable action
+
+ A checkable action is one which has an on/off state. For example,
+ in a word processor, a Bold toolbar button may be either on or
+ off. An action which is not a toggle action is a command action;
+ a command action is simply executed, e.g. file save.
+ By default, this property is \c false.
+
+ In some situations, the state of one toggle action should depend
+ on the state of others. For example, "Left Align", "Center" and
+ "Right Align" toggle actions are mutually exclusive. To achieve
+ exclusive toggling, add the relevant toggle actions to a
+ QGuiActionGroup with the QGuiActionGroup::exclusive property set to
+ true.
+
+ \sa setChecked()
+*/
+void QGuiAction::setCheckable(bool b)
+{
+ Q_D(QGuiAction);
+ if (d->checkable == b)
+ return;
+
+ d->checkable = b;
+ d->checked = false;
+ d->sendDataChanged();
+}
+
+bool QGuiAction::isCheckable() const
+{
+ Q_D(const QGuiAction);
+ return d->checkable;
+}
+
+/*!
+ \fn void QGuiAction::toggle()
+
+ This is a convenience function for the \l checked property.
+ Connect to it to change the checked state to its opposite state.
+*/
+void QGuiAction::toggle()
+{
+ Q_D(QGuiAction);
+ setChecked(!d->checked);
+}
+
+/*!
+ \property QGuiAction::checked
+ \brief whether the action is checked.
+
+ Only checkable actions can be checked. By default, this is false
+ (the action is unchecked).
+
+ \note The notifier signal for this property is toggled(). As toggling
+ a QAction changes its state, it will also emit a changed() signal.
+
+ \sa checkable, toggled()
+*/
+void QGuiAction::setChecked(bool b)
+{
+ Q_D(QGuiAction);
+ if (!d->checkable || d->checked == b)
+ return;
+
+ QPointer<QGuiAction> guard(this);
+ d->checked = b;
+ d->sendDataChanged();
+ if (guard)
+ emit toggled(b);
+}
+
+bool QGuiAction::isChecked() const
+{
+ Q_D(const QGuiAction);
+ return d->checked;
+}
+
+/*!
+ \fn void QGuiAction::setDisabled(bool b)
+
+ This is a convenience function for the \l enabled property, that
+ is useful for signals--slots connections. If \a b is true the
+ action is disabled; otherwise it is enabled.
+*/
+
+/*!
+ \property QGuiAction::enabled
+ \brief whether the action is enabled
+
+ Disabled actions cannot be chosen by the user. They do not
+ disappear from menus or toolbars, but they are displayed in a way
+ which indicates that they are unavailable. For example, they might
+ be displayed using only shades of gray.
+
+ \uicontrol{What's This?} help on disabled actions is still available, provided
+ that the QAction::whatsThis property is set.
+
+ An action will be disabled when all widgets to which it is added
+ (with QWidget::addAction()) are disabled or not visible. When an
+ action is disabled, it is not possible to trigger it through its
+ shortcut.
+
+ By default, this property is \c true (actions are enabled).
+
+ \sa text
+*/
+void QGuiAction::setEnabled(bool b)
+{
+ Q_D(QGuiAction);
+ if (b == d->enabled && b != d->forceDisabled)
+ return;
+ d->forceDisabled = !b;
+ if (b && (!d->visible || (d->group && !d->group->isEnabled())))
+ return;
+ QAPP_CHECK("setEnabled");
+ d->enabled = b;
+#if QT_CONFIG(shortcut)
+ d->setShortcutEnabled(b, QGuiApplicationPrivate::instance()->shortcutMap);
+#endif
+ d->sendDataChanged();
+}
+
+bool QGuiAction::isEnabled() const
+{
+ Q_D(const QGuiAction);
+ return d->enabled;
+}
+
+/*!
+ \property QGuiAction::visible
+ \brief whether the action can be seen (e.g. in menus and toolbars)
+
+ If \e visible is true the action can be seen (e.g. in menus and
+ toolbars) and chosen by the user; if \e visible is false the
+ action cannot be seen or chosen by the user.
+
+ Actions which are not visible are \e not grayed out; they do not
+ appear at all.
+
+ By default, this property is \c true (actions are visible).
+*/
+void QGuiAction::setVisible(bool b)
+{
+ Q_D(QGuiAction);
+ if (b == d->visible && b != d->forceInvisible)
+ return;
+ QAPP_CHECK("setVisible");
+ d->forceInvisible = !b;
+ d->visible = b;
+ d->enabled = b && !d->forceDisabled && (!d->group || d->group->isEnabled()) ;
+#if QT_CONFIG(shortcut)
+ d->setShortcutEnabled(d->enabled, QGuiApplicationPrivate::instance()->shortcutMap);
+#endif
+ d->sendDataChanged();
+}
+
+
+bool QGuiAction::isVisible() const
+{
+ Q_D(const QGuiAction);
+ return d->visible;
+}
+
+/*!
+ \reimp
+*/
+bool QGuiAction::event(QEvent *e)
+{
+#if QT_CONFIG(shortcut)
+ if (e->type() == QEvent::Shortcut) {
+ QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
+ Q_ASSERT_X(se->key() == d_func()->shortcut || d_func()->alternateShortcuts.contains(se->key()),
+ "QAction::event",
+ "Received shortcut event from incorrect shortcut");
+ if (se->isAmbiguous())
+ qWarning("QAction::event: Ambiguous shortcut overload: %s", se->key().toString(QKeySequence::NativeText).toLatin1().constData());
+ else
+ activate(Trigger);
+ return true;
+ }
+#endif // QT_CONFIG(shortcut)
+ return QObject::event(e);
+}
+
+/*!
+ Returns the user data as set in QAction::setData.
+
+ \sa setData()
+*/
+QVariant QGuiAction::data() const
+{
+ Q_D(const QGuiAction);
+ return d->userData;
+}
+
+/*!
+ Sets the action's internal data to the given \a userData.
+
+ \sa data()
+*/
+void QGuiAction::setData(const QVariant &data)
+{
+ Q_D(QGuiAction);
+ if (d->userData == data)
+ return;
+ d->userData = data;
+ d->sendDataChanged();
+}
+
+/*!
+ Sends the relevant signals for ActionEvent \a event.
+
+ Action based widgets use this API to cause the QAction
+ to emit signals as well as emitting their own.
+*/
+void QGuiAction::activate(ActionEvent event)
+{
+ Q_D(QGuiAction);
+ if(event == Trigger) {
+ QPointer<QObject> guard = this;
+ if(d->checkable) {
+ // the checked action of an exclusive group may not be unchecked
+ if (d->checked && (d->group
+ && d->group->exclusionPolicy() == QGuiActionGroup::ExclusionPolicy::Exclusive
+ && d->group->checkedGuiAction() == this)) {
+ if (!guard.isNull())
+ emit triggered(true);
+ return;
+ }
+ setChecked(!d->checked);
+ }
+ if (!guard.isNull())
+ emit triggered(d->checked);
+ } else if(event == Hover) {
+ emit hovered();
+ }
+}
+
+/*!
+ \fn void QGuiAction::triggered(bool checked)
+
+ This signal is emitted when an action is activated by the user;
+ for example, when the user clicks a menu option, toolbar button,
+ or presses an action's shortcut key combination, or when trigger()
+ was called. Notably, it is \e not emitted when setChecked() or
+ toggle() is called.
+
+ If the action is checkable, \a checked is true if the action is
+ checked, or false if the action is unchecked.
+
+ \sa activate(), toggled(), checked
+*/
+
+/*!
+ \fn void QGuiAction::toggled(bool checked)
+
+ This signal is emitted whenever a checkable action changes its
+ isChecked() status. This can be the result of a user interaction,
+ or because setChecked() was called. As setChecked() changes the
+ QAction, it emits changed() in addition to toggled().
+
+ \a checked is true if the action is checked, or false if the
+ action is unchecked.
+
+ \sa activate(), triggered(), checked
+*/
+
+/*!
+ \fn void QGuiAction::hovered()
+
+ This signal is emitted when an action is highlighted by the user;
+ for example, when the user pauses with the cursor over a menu option,
+ toolbar button, or presses an action's shortcut key combination.
+
+ \sa activate()
+*/
+
+/*!
+ \fn void QGuiAction::changed()
+
+ This signal is emitted when an action has changed. If you
+ are only interested in actions in a given widget, you can
+ watch for QWidget::actionEvent() sent with an
+ QEvent::ActionChanged.
+
+ \sa QWidget::actionEvent()
+*/
+
+/*!
+ \enum QGuiAction::ActionEvent
+
+ This enum type is used when calling QAction::activate()
+
+ \value Trigger this will cause the QAction::triggered() signal to be emitted.
+
+ \value Hover this will cause the QAction::hovered() signal to be emitted.
+*/
+
+/*!
+ \property QGuiAction::menuRole
+ \brief the action's menu role
+
+ This indicates what role the action serves in the application menu on
+ \macos. By default all actions have the TextHeuristicRole, which means that
+ the action is added based on its text (see QMenuBar for more information).
+
+ The menu role can only be changed before the actions are put into the menu
+ bar in \macos (usually just before the first application window is
+ shown).
+*/
+void QGuiAction::setMenuRole(MenuRole menuRole)
+{
+ Q_D(QGuiAction);
+ if (d->menuRole == menuRole)
+ return;
+
+ d->menuRole = menuRole;
+ d->sendDataChanged();
+}
+
+QGuiAction::MenuRole QGuiAction::menuRole() const
+{
+ Q_D(const QGuiAction);
+ return d->menuRole;
+}
+
+/*!
+ \property QGuiAction::iconVisibleInMenu
+ \brief Whether or not an action should show an icon in a menu
+
+ In some applications, it may make sense to have actions with icons in the
+ toolbar, but not in menus. If true, the icon (if valid) is shown in the menu, when it
+ is false, it is not shown.
+
+ The default is to follow whether the Qt::AA_DontShowIconsInMenus attribute
+ is set for the application. Explicitly settings this property overrides
+ the presence (or abscence) of the attribute.
+
+ For example:
+ \snippet code/src_gui_kernel_qaction.cpp 0
+
+ \sa icon, QCoreApplication::setAttribute()
+*/
+void QGuiAction::setIconVisibleInMenu(bool visible)
+{
+ Q_D(QGuiAction);
+ if (d->iconVisibleInMenu == -1 || visible != bool(d->iconVisibleInMenu)) {
+ int oldValue = d->iconVisibleInMenu;
+ d->iconVisibleInMenu = visible;
+ // Only send data changed if we really need to.
+ if (oldValue != -1
+ || visible == !QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus)) {
+ d->sendDataChanged();
+ }
+ }
+}
+
+bool QGuiAction::isIconVisibleInMenu() const
+{
+ Q_D(const QGuiAction);
+ if (d->iconVisibleInMenu == -1) {
+ return !QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus);
+ }
+ return d->iconVisibleInMenu;
+}
+
+/*!
+ \property QGuiAction::shortcutVisibleInContextMenu
+ \brief Whether or not an action should show a shortcut in a context menu
+
+ In some applications, it may make sense to have actions with shortcuts in
+ context menus. If true, the shortcut (if valid) is shown when the action is
+ shown via a context menu, when it is false, it is not shown.
+
+ The default is to follow whether the Qt::AA_DontShowShortcutsInContextMenus attribute
+ is set for the application, falling back to the widget style hint.
+ Explicitly setting this property overrides the presence (or abscence) of the attribute.
+
+ \sa shortcut, QCoreApplication::setAttribute()
+*/
+void QGuiAction::setShortcutVisibleInContextMenu(bool visible)
+{
+ Q_D(QGuiAction);
+ if (d->shortcutVisibleInContextMenu == -1 || visible != bool(d->shortcutVisibleInContextMenu)) {
+ int oldValue = d->shortcutVisibleInContextMenu;
+ d->shortcutVisibleInContextMenu = visible;
+ // Only send data changed if we really need to.
+ if (oldValue != -1
+ || visible == !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus)) {
+ d->sendDataChanged();
+ }
+ }
+}
+
+bool QGuiAction::isShortcutVisibleInContextMenu() const
+{
+ Q_D(const QGuiAction);
+ if (d->shortcutVisibleInContextMenu == -1) {
+ return !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus)
+ && QGuiApplication::styleHints()->showShortcutsInContextMenus();
+ }
+ return d->shortcutVisibleInContextMenu;
+}
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_GUI_EXPORT QDebug operator<<(QDebug d, const QGuiAction *action)
+{
+ QDebugStateSaver saver(d);
+ d.nospace();
+ d << "QAction(" << static_cast<const void *>(action);
+ if (action) {
+ d << " text=" << action->text();
+ if (!action->toolTip().isEmpty())
+ d << " toolTip=" << action->toolTip();
+ if (action->isCheckable())
+ d << " checked=" << action->isChecked();
+#if QT_CONFIG(shortcut)
+ if (!action->shortcut().isEmpty())
+ d << " shortcut=" << action->shortcut();
+#endif
+ d << " menuRole=";
+ QtDebugUtils::formatQEnum(d, action->menuRole());
+ d << " visible=" << action->isVisible();
+ } else {
+ d << '0';
+ }
+ d << ')';
+ return d;
+}
+#endif // QT_NO_DEBUG_STREAM
+
+QT_END_NAMESPACE
+
+#include "moc_qguiaction.cpp"
diff --git a/src/gui/kernel/qguiaction.h b/src/gui/kernel/qguiaction.h
new file mode 100644
index 0000000000..bd7d13e156
--- /dev/null
+++ b/src/gui/kernel/qguiaction.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUIACTION_H
+#define QGUIACTION_H
+
+#include <QtGui/qtguiglobal.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/qkeysequence.h>
+#endif
+#include <QtGui/qicon.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qvariant.h>
+
+QT_REQUIRE_CONFIG(action);
+
+QT_BEGIN_NAMESPACE
+
+class QActionEvent;
+class QGuiActionGroup;
+class QGuiActionPrivate;
+
+class Q_GUI_EXPORT QGuiAction : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QGuiAction)
+
+ Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY changed)
+ Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled)
+ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY changed)
+ Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY changed)
+ Q_PROPERTY(QString text READ text WRITE setText NOTIFY changed)
+ Q_PROPERTY(QString iconText READ iconText WRITE setIconText NOTIFY changed)
+ Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip NOTIFY changed)
+ Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip NOTIFY changed)
+ Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis NOTIFY changed)
+ Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed)
+#if QT_CONFIG(shortcut)
+ Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut NOTIFY changed)
+ Q_PROPERTY(Qt::ShortcutContext shortcutContext READ shortcutContext WRITE setShortcutContext NOTIFY changed)
+ Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY changed)
+#endif // QT_CONFIG(shortcut)
+ Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY changed)
+ Q_PROPERTY(MenuRole menuRole READ menuRole WRITE setMenuRole NOTIFY changed)
+ Q_PROPERTY(bool iconVisibleInMenu READ isIconVisibleInMenu WRITE setIconVisibleInMenu NOTIFY changed)
+ Q_PROPERTY(bool shortcutVisibleInContextMenu READ isShortcutVisibleInContextMenu WRITE setShortcutVisibleInContextMenu NOTIFY changed)
+ Q_PROPERTY(Priority priority READ priority WRITE setPriority)
+
+public:
+ // note this is copied into qplatformmenu.h, which must stay in sync
+ enum MenuRole { NoRole = 0, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole,
+ AboutRole, PreferencesRole, QuitRole };
+ Q_ENUM(MenuRole)
+ enum Priority { LowPriority = 0,
+ NormalPriority = 128,
+ HighPriority = 256};
+ Q_ENUM(Priority)
+ explicit QGuiAction(QObject *parent = nullptr);
+ explicit QGuiAction(const QString &text, QObject *parent = nullptr);
+ explicit QGuiAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);
+
+ ~QGuiAction();
+
+ void setActionGroup(QGuiActionGroup *group);
+ QGuiActionGroup *guiActionGroup() const;
+ void setIcon(const QIcon &icon);
+ QIcon icon() const;
+
+ void setText(const QString &text);
+ QString text() const;
+
+ void setIconText(const QString &text);
+ QString iconText() const;
+
+ void setToolTip(const QString &tip);
+ QString toolTip() const;
+
+ void setStatusTip(const QString &statusTip);
+ QString statusTip() const;
+
+ void setWhatsThis(const QString &what);
+ QString whatsThis() const;
+
+ void setPriority(Priority priority);
+ Priority priority() const;
+
+ void setSeparator(bool b);
+ bool isSeparator() const;
+
+#if QT_CONFIG(shortcut)
+ void setShortcut(const QKeySequence &shortcut);
+ QKeySequence shortcut() const;
+
+ void setShortcuts(const QList<QKeySequence> &shortcuts);
+ void setShortcuts(QKeySequence::StandardKey);
+ QList<QKeySequence> shortcuts() const;
+
+ void setShortcutContext(Qt::ShortcutContext context);
+ Qt::ShortcutContext shortcutContext() const;
+
+ void setAutoRepeat(bool);
+ bool autoRepeat() const;
+#endif // QT_CONFIG(shortcut)
+
+ void setFont(const QFont &font);
+ QFont font() const;
+
+ void setCheckable(bool);
+ bool isCheckable() const;
+
+ QVariant data() const;
+ void setData(const QVariant &var);
+
+ bool isChecked() const;
+
+ bool isEnabled() const;
+
+ bool isVisible() const;
+
+ enum ActionEvent { Trigger, Hover };
+ void activate(ActionEvent event);
+
+ void setMenuRole(MenuRole menuRole);
+ MenuRole menuRole() const;
+
+ void setIconVisibleInMenu(bool visible);
+ bool isIconVisibleInMenu() const;
+
+ void setShortcutVisibleInContextMenu(bool show);
+ bool isShortcutVisibleInContextMenu() const;
+
+protected:
+ bool event(QEvent *) override;
+ QGuiAction(QGuiActionPrivate &dd, QObject *parent);
+
+public Q_SLOTS:
+ void trigger() { activate(Trigger); }
+ void hover() { activate(Hover); }
+ void setChecked(bool);
+ void toggle();
+ void setEnabled(bool);
+ inline void setDisabled(bool b) { setEnabled(!b); }
+ void setVisible(bool);
+
+Q_SIGNALS:
+ void changed();
+ void triggered(bool checked = false);
+ void hovered();
+ void toggled(bool);
+
+private:
+ Q_DISABLE_COPY(QGuiAction)
+ friend class QGuiActionGroup;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_GUI_EXPORT QDebug operator<<(QDebug, const QGuiAction *);
+#endif
+
+QT_END_NAMESPACE
+
+#endif // QGUIACTION_H
diff --git a/src/gui/kernel/qguiaction_p.h b/src/gui/kernel/qguiaction_p.h
new file mode 100644
index 0000000000..3358ed1070
--- /dev/null
+++ b/src/gui/kernel/qguiaction_p.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUIACTION_P_H
+#define QGUIACTION_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtGui/private/qtguiglobal_p.h>
+#include <QtGui/qguiaction.h>
+#include <QtGui/qfont.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/private/qshortcutmap_p.h>
+#endif
+#include "private/qobject_p.h"
+
+QT_REQUIRE_CONFIG(action);
+
+QT_BEGIN_NAMESPACE
+
+class QShortcutMap;
+
+class Q_GUI_EXPORT QGuiActionPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QGuiAction)
+public:
+ QGuiActionPrivate();
+ ~QGuiActionPrivate();
+
+#if QT_CONFIG(shortcut)
+ virtual QShortcutMap::ContextMatcher contextMatcher() const;
+#endif
+
+ static QGuiActionPrivate *get(QGuiAction *q)
+ {
+ return q->d_func();
+ }
+
+
+ QPointer<QGuiActionGroup> group;
+ QString text;
+ QString iconText;
+ QIcon icon;
+ QString tooltip;
+ QString statustip;
+ QString whatsthis;
+#if QT_CONFIG(shortcut)
+ QKeySequence shortcut;
+ QList<QKeySequence> alternateShortcuts;
+#endif
+ QVariant userData;
+#if QT_CONFIG(shortcut)
+ int shortcutId = 0;
+ QVector<int> alternateShortcutIds;
+ Qt::ShortcutContext shortcutContext = Qt::WindowShortcut;
+ uint autorepeat : 1;
+#endif
+ QFont font;
+ uint enabled : 1, forceDisabled : 1;
+ uint visible : 1, forceInvisible : 1;
+ uint checkable : 1;
+ uint checked : 1;
+ uint separator : 1;
+ uint fontSet : 1;
+
+ int iconVisibleInMenu : 2; // Only has values -1, 0, and 1
+ int shortcutVisibleInContextMenu : 2; // Only has values -1, 0, and 1
+
+ QGuiAction::MenuRole menuRole = QGuiAction::TextHeuristicRole;
+ QGuiAction::Priority priority = QGuiAction::NormalPriority;
+
+#if QT_CONFIG(shortcut)
+ void redoGrab(QShortcutMap &map);
+ void redoGrabAlternate(QShortcutMap &map);
+ void setShortcutEnabled(bool enable, QShortcutMap &map);
+#endif // QT_NO_SHORTCUT
+
+ void sendDataChanged();
+};
+
+QT_END_NAMESPACE
+
+#endif // QACTION_P_H
diff --git a/src/gui/kernel/qguiactiongroup.cpp b/src/gui/kernel/qguiactiongroup.cpp
new file mode 100644
index 0000000000..82f5e0a0af
--- /dev/null
+++ b/src/gui/kernel/qguiactiongroup.cpp
@@ -0,0 +1,345 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qguiactiongroup.h"
+
+#include "qguiaction.h"
+#include "qguiaction_p.h"
+#include "qguiactiongroup_p.h"
+#include "qevent.h"
+#include "qlist.h"
+
+QT_BEGIN_NAMESPACE
+
+QGuiActionGroupPrivate::QGuiActionGroupPrivate() :
+ enabled(1), visible(1)
+{
+}
+
+QGuiActionGroupPrivate::~QGuiActionGroupPrivate() = default;
+
+void QGuiActionGroup::_q_actionChanged()
+{
+ Q_D(QGuiActionGroup);
+ auto action = qobject_cast<QGuiAction*>(sender());
+ Q_ASSERT_X(action != nullptr, "QGuiActionGroup::_q_actionChanged", "internal error");
+ if (d->exclusionPolicy != QGuiActionGroup::ExclusionPolicy::None) {
+ if (action->isChecked()) {
+ if (action != d->current) {
+ if (!d->current.isNull())
+ d->current->setChecked(false);
+ d->current = action;
+ }
+ } else if (action == d->current) {
+ d->current = nullptr;
+ }
+ }
+}
+
+void QGuiActionGroup::_q_actionTriggered()
+{
+ Q_D(QGuiActionGroup);
+ auto action = qobject_cast<QGuiAction*>(sender());
+ Q_ASSERT_X(action != nullptr, "QGuiActionGroup::_q_actionTriggered", "internal error");
+ d->emitSignal(QGuiActionGroupPrivate::Triggered, action);
+}
+
+void QGuiActionGroup::_q_actionHovered()
+{
+ Q_D(QGuiActionGroup);
+ auto action = qobject_cast<QGuiAction*>(sender());
+ Q_ASSERT_X(action != nullptr, "QGuiActionGroup::_q_actionHovered", "internal error");
+ d->emitSignal(QGuiActionGroupPrivate::Hovered, action);
+}
+
+/*!
+ \class QGuiActionGroup
+ \brief The QGuiActionGroup class groups actions together.
+ \since 6.0
+
+ \inmodule QtGui
+
+ QGuiActionGroup is a base class for classes grouping
+ classes inhheriting QGuiAction objects together.
+
+ In some situations it is useful to group QGuiAction objects together.
+ For example, if you have a \uicontrol{Left Align} action, a \uicontrol{Right
+ Align} action, a \uicontrol{Justify} action, and a \uicontrol{Center} action,
+ only one of these actions should be active at any one time. One
+ simple way of achieving this is to group the actions together in
+ an action group, inheriting QGuiActionGroup.
+
+ \sa QGuiAction
+*/
+
+/*!
+ \enum QGuiActionGroup::ExclusionPolicy
+
+ This enum specifies the different policies that can be used to
+ control how the group performs exclusive checking on checkable actions.
+
+ \value None
+ The actions in the group can be checked independently of each other.
+
+ \value Exclusive
+ Exactly one action can be checked at any one time.
+ This is the default policy.
+
+ \value ExclusiveOptional
+ At most one action can be checked at any one time. The actions
+ can also be all unchecked.
+
+ \sa exclusionPolicy
+*/
+
+/*!
+ Constructs an action group for the \a parent object.
+
+ The action group is exclusive by default. Call setExclusive(false)
+ to make the action group non-exclusive. To make the group exclusive
+ but allow unchecking the active action call instead
+ setExclusionPolicy(QGuiActionGroup::ExclusionPolicy::ExclusiveOptional)
+*/
+QGuiActionGroup::QGuiActionGroup(QObject* parent) :
+ QGuiActionGroup(*new QGuiActionGroupPrivate, parent)
+{
+}
+
+QGuiActionGroup::QGuiActionGroup(QGuiActionGroupPrivate &dd, QObject *parent) :
+ QObject(dd, parent)
+{
+}
+
+/*!
+ Destroys the action group.
+*/
+QGuiActionGroup::~QGuiActionGroup() = default;
+
+/*!
+ \fn QGuiAction *QGuiActionGroup::addAction(QGuiAction *action)
+
+ Adds the \a action to this group, and returns it.
+
+ Normally an action is added to a group by creating it with the
+ group as its parent, so this function is not usually used.
+
+ \sa QGuiAction::setActionGroup()
+*/
+QGuiAction *QGuiActionGroup::addAction(QGuiAction* a)
+{
+ Q_D(QGuiActionGroup);
+ if (!d->actions.contains(a)) {
+ d->actions.append(a);
+ QObject::connect(a, &QGuiAction::triggered, this, &QGuiActionGroup::_q_actionTriggered);
+ QObject::connect(a, &QGuiAction::changed, this, &QGuiActionGroup::_q_actionChanged);
+ QObject::connect(a, &QGuiAction::hovered, this, &QGuiActionGroup::_q_actionHovered);
+ }
+ if (!a->d_func()->forceDisabled) {
+ a->setEnabled(d->enabled);
+ a->d_func()->forceDisabled = false;
+ }
+ if (!a->d_func()->forceInvisible) {
+ a->setVisible(d->visible);
+ a->d_func()->forceInvisible = false;
+ }
+ if (a->isChecked())
+ d->current = a;
+ QGuiActionGroup *oldGroup = a->d_func()->group;
+ if (oldGroup != this) {
+ if (oldGroup)
+ oldGroup->removeAction(a);
+ a->d_func()->group = this;
+ a->d_func()->sendDataChanged();
+ }
+ return a;
+}
+
+/*!
+ Removes the \a action from this group. The action will have no
+ parent as a result.
+
+ \sa QGuiAction::setActionGroup()
+*/
+void QGuiActionGroup::removeAction(QGuiAction *action)
+{
+ Q_D(QGuiActionGroup);
+ if (d->actions.removeAll(action)) {
+ if (action == d->current)
+ d->current = nullptr;
+ QObject::disconnect(action, &QGuiAction::triggered, this, &QGuiActionGroup::_q_actionTriggered);
+ QObject::disconnect(action, &QGuiAction::changed, this, &QGuiActionGroup::_q_actionChanged);
+ QObject::disconnect(action, &QGuiAction::hovered, this, &QGuiActionGroup::_q_actionHovered);
+ action->d_func()->group = nullptr;
+ }
+}
+
+/*!
+ Returns the list of this groups's actions. This may be empty.
+*/
+QList<QGuiAction*> QGuiActionGroup::guiActions() const
+{
+ Q_D(const QGuiActionGroup);
+ return d->actions;
+}
+
+/*!
+ \brief Enable or disable the group exclusion checking
+
+ This is a convenience method that calls
+ setExclusionPolicy(ExclusionPolicy::Exclusive).
+
+ \sa QGuiActionGroup::exclusionPolicy
+*/
+void QGuiActionGroup::setExclusive(bool b)
+{
+ setExclusionPolicy(b ? QGuiActionGroup::ExclusionPolicy::Exclusive
+ : QGuiActionGroup::ExclusionPolicy::None);
+}
+
+/*!
+ \brief Returs true if the group is exclusive
+
+ The group is exclusive if the ExclusionPolicy is either Exclusive
+ or ExclusionOptional.
+
+*/
+bool QGuiActionGroup::isExclusive() const
+{
+ return exclusionPolicy() != QGuiActionGroup::ExclusionPolicy::None;
+}
+
+/*!
+ \property QGuiActionGroup::exclusionPolicy
+ \brief This property holds the group exclusive checking policy
+
+ If exclusionPolicy is set to Exclusive, only one checkable
+ action in the action group can ever be active at any time. If the user
+ chooses another checkable action in the group, the one they chose becomes
+ active and the one that was active becomes inactive. If exclusionPolicy is
+ set to ExclusionOptional the group is exclusive but the active checkable
+ action in the group can be unchecked leaving the group with no actions
+ checked.
+
+ \sa QGuiAction::checkable
+*/
+void QGuiActionGroup::setExclusionPolicy(QGuiActionGroup::ExclusionPolicy policy)
+{
+ Q_D(QGuiActionGroup);
+ d->exclusionPolicy = policy;
+}
+
+QGuiActionGroup::ExclusionPolicy QGuiActionGroup::exclusionPolicy() const
+{
+ Q_D(const QGuiActionGroup);
+ return d->exclusionPolicy;
+}
+
+/*!
+ \fn void QGuiActionGroup::setDisabled(bool b)
+
+ This is a convenience function for the \l enabled property, that
+ is useful for signals--slots connections. If \a b is true the
+ action group is disabled; otherwise it is enabled.
+*/
+
+/*!
+ \property QGuiActionGroup::enabled
+ \brief whether the action group is enabled
+
+ Each action in the group will be enabled or disabled unless it
+ has been explicitly disabled.
+
+ \sa QGuiAction::setEnabled()
+*/
+void QGuiActionGroup::setEnabled(bool b)
+{
+ Q_D(QGuiActionGroup);
+ d->enabled = b;
+ for (auto action : qAsConst(d->actions)) {
+ if (!action->d_func()->forceDisabled) {
+ action->setEnabled(b);
+ action->d_func()->forceDisabled = false;
+ }
+ }
+}
+
+bool QGuiActionGroup::isEnabled() const
+{
+ Q_D(const QGuiActionGroup);
+ return d->enabled;
+}
+
+/*!
+ Returns the currently checked action in the group, or \nullptr if
+ none are checked.
+*/
+QGuiAction *QGuiActionGroup::checkedGuiAction() const
+{
+ Q_D(const QGuiActionGroup);
+ return d->current.data();
+}
+
+/*!
+ \property QGuiActionGroup::visible
+ \brief whether the action group is visible
+
+ Each action in the action group will match the visible state of
+ this group unless it has been explicitly hidden.
+
+ \sa QGuiAction::setEnabled()
+*/
+void QGuiActionGroup::setVisible(bool b)
+{
+ Q_D(QGuiActionGroup);
+ d->visible = b;
+ for (auto action : qAsConst(d->actions)) {
+ if (!action->d_func()->forceInvisible) {
+ action->setVisible(b);
+ action->d_func()->forceInvisible = false;
+ }
+ }
+}
+
+bool QGuiActionGroup::isVisible() const
+{
+ Q_D(const QGuiActionGroup);
+ return d->visible;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qguiactiongroup.h b/src/gui/kernel/qguiactiongroup.h
new file mode 100644
index 0000000000..ef08fb2e04
--- /dev/null
+++ b/src/gui/kernel/qguiactiongroup.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUIACTIONGROUP_H
+#define QGUIACTIONGROUP_H
+
+#include <QtGui/qtguiglobal.h>
+#include <QtGui/qguiaction.h>
+
+QT_REQUIRE_CONFIG(action);
+
+QT_BEGIN_NAMESPACE
+
+class QGuiActionGroupPrivate;
+
+class Q_GUI_EXPORT QGuiActionGroup : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QGuiActionGroup)
+
+ Q_PROPERTY(QGuiActionGroup::ExclusionPolicy exclusionPolicy READ exclusionPolicy WRITE setExclusionPolicy)
+ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
+ Q_PROPERTY(bool visible READ isVisible WRITE setVisible)
+
+public:
+ enum class ExclusionPolicy {
+ None,
+ Exclusive,
+ ExclusiveOptional
+ };
+ Q_ENUM(ExclusionPolicy)
+
+ explicit QGuiActionGroup(QObject *parent);
+ ~QGuiActionGroup();
+
+ QGuiAction *addAction(QGuiAction *a);
+ void removeAction(QGuiAction *a);
+ QList<QGuiAction*> guiActions() const;
+ QGuiAction *checkedGuiAction() const;
+
+ bool isExclusive() const;
+ bool isEnabled() const;
+ bool isVisible() const;
+ ExclusionPolicy exclusionPolicy() const;
+
+
+public Q_SLOTS:
+ void setEnabled(bool);
+ inline void setDisabled(bool b) { setEnabled(!b); }
+ void setVisible(bool);
+ void setExclusive(bool);
+ void setExclusionPolicy(ExclusionPolicy policy);
+
+private Q_SLOTS:
+ void _q_actionTriggered();
+ void _q_actionHovered();
+ void _q_actionChanged();
+
+protected:
+ QGuiActionGroup(QGuiActionGroupPrivate &dd, QObject *parent);
+
+private:
+ Q_DISABLE_COPY(QGuiActionGroup)
+};
+
+QT_END_NAMESPACE
+
+#endif // QGUIACTIONGROUP_H
diff --git a/src/gui/kernel/qguiactiongroup_p.h b/src/gui/kernel/qguiactiongroup_p.h
new file mode 100644
index 0000000000..99a58262c9
--- /dev/null
+++ b/src/gui/kernel/qguiactiongroup_p.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUIACTIONGROUP_P_H
+#define QGUIACTIONGROUP_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtGui/private/qtguiglobal_p.h>
+#include <QtGui/qguiactiongroup.h>
+#include <QtGui/qfont.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/private/qshortcutmap_p.h>
+#endif
+#include "private/qobject_p.h"
+
+QT_REQUIRE_CONFIG(action);
+
+QT_BEGIN_NAMESPACE
+
+class Q_GUI_EXPORT QGuiActionGroupPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QGuiActionGroup)
+public:
+ enum Signal { Triggered, Hovered };
+
+ QGuiActionGroupPrivate();
+ ~QGuiActionGroupPrivate();
+
+ virtual void emitSignal(Signal, QGuiAction *) {}
+
+ QList<QGuiAction *> actions;
+ QPointer<QGuiAction> current;
+ uint enabled : 1;
+ uint visible : 1;
+ QGuiActionGroup::ExclusionPolicy exclusionPolicy = QGuiActionGroup::ExclusionPolicy::Exclusive;
+
+private:
+ void _q_actionTriggered(); //private slot
+ void _q_actionChanged(); //private slot
+ void _q_actionHovered(); //private slot
+};
+
+QT_END_NAMESPACE
+
+#endif // QACTIONGROUP_P_H
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index fa4c419ef0..f4a5c0e104 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1869,7 +1869,20 @@ bool QGuiApplication::event(QEvent *e)
{
if(e->type() == QEvent::LanguageChange) {
setLayoutDirection(qt_detectRTLLanguage()?Qt::RightToLeft:Qt::LeftToRight);
+ } else if (e->type() == QEvent::Quit) {
+ // Close open windows. This is done in order to deliver de-expose
+ // events while the event loop is still running.
+ for (QWindow *topLevelWindow : QGuiApplication::topLevelWindows()) {
+ // Already closed windows will not have a platform window, skip those
+ if (!topLevelWindow->handle())
+ continue;
+ if (!topLevelWindow->close()) {
+ e->ignore();
+ return true;
+ }
+ }
}
+
return QCoreApplication::event(e);
}
@@ -1946,6 +1959,9 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv
QWindowSystemInterfacePrivate::ApplicationStateChangedEvent * changeEvent = static_cast<QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *>(e);
QGuiApplicationPrivate::setApplicationState(changeEvent->newState, changeEvent->forcePropagate); }
break;
+ case QWindowSystemInterfacePrivate::ApplicationTermination:
+ QGuiApplicationPrivate::processApplicationTermination(e);
+ break;
case QWindowSystemInterfacePrivate::FlushEvents: {
QWindowSystemInterfacePrivate::FlushEventsEvent *flushEventsEvent = static_cast<QWindowSystemInterfacePrivate::FlushEventsEvent *>(e);
QWindowSystemInterface::deferredFlushWindowSystemEvents(flushEventsEvent->flags); }
@@ -3495,6 +3511,13 @@ bool QGuiApplicationPrivate::tryCloseRemainingWindows(QWindowList processedWindo
return true;
}
+void QGuiApplicationPrivate::processApplicationTermination(QWindowSystemInterfacePrivate::WindowSystemEvent *windowSystemEvent)
+{
+ QEvent event(QEvent::Quit);
+ QGuiApplication::sendSpontaneousEvent(QGuiApplication::instance(), &event);
+ windowSystemEvent->eventAccepted = event.isAccepted();
+}
+
/*!
\since 5.2
\fn Qt::ApplicationState QGuiApplication::applicationState()
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index e28607bad6..56a3be1122 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -62,7 +62,10 @@
#include <qpa/qwindowsysteminterface.h>
#include <qpa/qwindowsysteminterface_p.h>
-#include "private/qshortcutmap_p.h"
+#if QT_CONFIG(shortcut)
+# include "private/qshortcutmap_p.h"
+#endif
+
#include <qicon.h>
QT_BEGIN_NAMESPACE
@@ -141,6 +144,8 @@ public:
static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e);
+ static void processApplicationTermination(QWindowSystemInterfacePrivate::WindowSystemEvent *e);
+
static void updateFilteredScreenOrientation(QScreen *screen);
static void reportScreenOrientationChange(QScreen *screen);
static void processScreenOrientationChange(QWindowSystemInterfacePrivate::ScreenOrientationEvent *e);
@@ -261,7 +266,7 @@ public:
QIcon forcedWindowIcon;
static QList<QObject *> generic_plugin_list;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
QShortcutMap shortcutMap;
#endif
diff --git a/src/gui/kernel/qguishortcut.cpp b/src/gui/kernel/qguishortcut.cpp
new file mode 100644
index 0000000000..add1dce12e
--- /dev/null
+++ b/src/gui/kernel/qguishortcut.cpp
@@ -0,0 +1,354 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qguishortcut.h"
+#include "qguishortcut_p.h"
+
+#include <qevent.h>
+#include <qguiapplication.h>
+#include <qwindow.h>
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformmenu.h>
+
+QT_BEGIN_NAMESPACE
+
+#define QAPP_CHECK(functionName) \
+ if (Q_UNLIKELY(!qApp)) { \
+ qWarning("QGuiShortcut: Initialize QGuiApplication before calling '" functionName "'."); \
+ return; \
+ }
+
+/*!
+ \class QGuiShortcut
+ \brief The QGuiShortcut class is a base class for handling keyboard shortcuts.
+
+ \ingroup events
+ \inmodule QtGui
+ \since 6.0
+
+ The QGuiShortcut class is a base class for classes providing a way of
+ connecting keyboard shortcuts to Qt's \l{signals and slots} mechanism,
+ so that objects can be informed when a shortcut is executed. The shortcut
+ can be set up to contain all the key presses necessary to
+ describe a keyboard shortcut, including the states of modifier
+ keys such as \uicontrol Shift, \uicontrol Ctrl, and \uicontrol Alt.
+
+ \target mnemonic
+
+ \sa QShortcutEvent, QKeySequence, QAction
+*/
+
+/*!
+ \fn void QGuiShortcut::activated()
+
+ This signal is emitted when the user types the shortcut's key
+ sequence.
+
+ \sa activatedAmbiguously()
+*/
+
+/*!
+ \fn void QGuiShortcut::activatedAmbiguously()
+
+ When a key sequence is being typed at the keyboard, it is said to
+ be ambiguous as long as it matches the start of more than one
+ shortcut.
+
+ When a shortcut's key sequence is completed,
+ activatedAmbiguously() is emitted if the key sequence is still
+ ambiguous (i.e., it is the start of one or more other shortcuts).
+ The activated() signal is not emitted in this case.
+
+ \sa activated()
+*/
+
+static bool simpleContextMatcher(QObject *object, Qt::ShortcutContext context)
+{
+ auto guiShortcut = qobject_cast<QGuiShortcut *>(object);
+ if (QGuiApplication::applicationState() != Qt::ApplicationActive || guiShortcut == nullptr)
+ return false;
+ if (context == Qt::ApplicationShortcut)
+ return true;
+ auto focusWindow = QGuiApplication::focusWindow();
+ if (!focusWindow)
+ return false;
+ auto window = qobject_cast<const QWindow *>(guiShortcut->parent());
+ if (!window)
+ return false;
+ if (focusWindow == window && focusWindow->isTopLevel())
+ return context == Qt::WindowShortcut || context == Qt::WidgetWithChildrenShortcut;
+ return focusWindow->isAncestorOf(window, QWindow::ExcludeTransients);
+}
+
+QShortcutMap::ContextMatcher QGuiShortcutPrivate::contextMatcher() const
+{
+ return simpleContextMatcher;
+}
+
+void QGuiShortcutPrivate::redoGrab(QShortcutMap &map)
+{
+ Q_Q(QGuiShortcut);
+ if (Q_UNLIKELY(!parent)) {
+ qWarning("QGuiShortcut: No window parent defined");
+ return;
+ }
+
+ if (sc_id)
+ map.removeShortcut(sc_id, q);
+ if (sc_sequence.isEmpty())
+ return;
+ sc_id = map.addShortcut(q, sc_sequence, sc_context, contextMatcher());
+ if (!sc_enabled)
+ map.setShortcutEnabled(false, sc_id, q);
+ if (!sc_autorepeat)
+ map.setShortcutAutoRepeat(false, sc_id, q);
+}
+
+/*!
+ Constructs a QGuiShortcut object for the \a parent window. Since no
+ shortcut key sequence is specified, the shortcut will not emit any
+ signals.
+
+ \sa setKey()
+*/
+QGuiShortcut::QGuiShortcut(QWindow *parent)
+ : QGuiShortcut(*new QGuiShortcutPrivate, parent)
+{
+}
+
+/*!
+ Constructs a QGuiShortcut object for the \a parent window. The shortcut
+ operates on its parent, listening for \l{QShortcutEvent}s that
+ match the \a key sequence. Depending on the ambiguity of the
+ event, the shortcut will call the \a member function, or the \a
+ ambiguousMember function, if the key press was in the shortcut's
+ \a context.
+*/
+QGuiShortcut::QGuiShortcut(const QKeySequence &key, QWindow *parent,
+ const char *member, const char *ambiguousMember,
+ Qt::ShortcutContext context)
+ : QGuiShortcut(*new QGuiShortcutPrivate, key, parent, member, ambiguousMember, context)
+{
+}
+
+/*!
+ \internal
+*/
+QGuiShortcut::QGuiShortcut(QGuiShortcutPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+ Q_ASSERT(parent != nullptr);
+}
+
+/*!
+ \internal
+*/
+QGuiShortcut::QGuiShortcut(QGuiShortcutPrivate &dd,
+ const QKeySequence &key, QObject *parent,
+ const char *member, const char *ambiguousMember,
+ Qt::ShortcutContext context)
+ : QGuiShortcut(dd, parent)
+{
+ QAPP_CHECK("QGuiShortcut");
+
+ Q_D(QGuiShortcut);
+ d->sc_context = context;
+ d->sc_sequence = key;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+ if (member)
+ connect(this, SIGNAL(activated()), parent, member);
+ if (ambiguousMember)
+ connect(this, SIGNAL(activatedAmbiguously()), parent, ambiguousMember);
+}
+
+/*!
+ Destroys the shortcut.
+*/
+QGuiShortcut::~QGuiShortcut()
+{
+ Q_D(QGuiShortcut);
+ if (qApp)
+ QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(d->sc_id, this);
+}
+
+/*!
+ \property QGuiShortcut::key
+ \brief the shortcut's key sequence
+
+ This is a key sequence with an optional combination of Shift, Ctrl,
+ and Alt. The key sequence may be supplied in a number of ways:
+
+ \snippet code/src_gui_kernel_qshortcut.cpp 1
+
+ By default, this property contains an empty key sequence.
+*/
+void QGuiShortcut::setKey(const QKeySequence &key)
+{
+ Q_D(QGuiShortcut);
+ if (d->sc_sequence == key)
+ return;
+ QAPP_CHECK("setKey");
+ d->sc_sequence = key;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+}
+
+QKeySequence QGuiShortcut::key() const
+{
+ Q_D(const QGuiShortcut);
+ return d->sc_sequence;
+}
+
+/*!
+ \property QGuiShortcut::enabled
+ \brief whether the shortcut is enabled
+
+ An enabled shortcut emits the activated() or activatedAmbiguously()
+ signal when a QShortcutEvent occurs that matches the shortcut's
+ key() sequence.
+
+ If the application is in \c WhatsThis mode the shortcut will not emit
+ the signals, but will show the "What's This?" text instead.
+
+ By default, this property is \c true.
+
+ \sa whatsThis
+*/
+void QGuiShortcut::setEnabled(bool enable)
+{
+ Q_D(QGuiShortcut);
+ if (d->sc_enabled == enable)
+ return;
+ QAPP_CHECK("setEnabled");
+ d->sc_enabled = enable;
+ QGuiApplicationPrivate::instance()->shortcutMap.setShortcutEnabled(enable, d->sc_id, this);
+}
+
+bool QGuiShortcut::isEnabled() const
+{
+ Q_D(const QGuiShortcut);
+ return d->sc_enabled;
+}
+
+/*!
+ \property QGuiShortcut::context
+ \brief the context in which the shortcut is valid
+
+ A shortcut's context decides in which circumstances a shortcut is
+ allowed to be triggered. The normal context is Qt::WindowShortcut,
+ which allows the shortcut to trigger if the parent (the widget
+ containing the shortcut) is a subwidget of the active top-level
+ window.
+
+ By default, this property is set to Qt::WindowShortcut.
+*/
+void QGuiShortcut::setContext(Qt::ShortcutContext context)
+{
+ Q_D(QGuiShortcut);
+ if (d->sc_context == context)
+ return;
+ QAPP_CHECK("setContext");
+ d->sc_context = context;
+ d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
+}
+
+Qt::ShortcutContext QGuiShortcut::context() const
+{
+ Q_D(const QGuiShortcut);
+ return d->sc_context;
+}
+
+/*!
+ \property QGuiShortcut::autoRepeat
+ \brief whether the shortcut can auto repeat
+
+ If true, the shortcut will auto repeat when the keyboard shortcut
+ combination is held down, provided that keyboard auto repeat is
+ enabled on the system.
+ The default value is true.
+*/
+void QGuiShortcut::setAutoRepeat(bool on)
+{
+ Q_D(QGuiShortcut);
+ if (d->sc_autorepeat == on)
+ return;
+ QAPP_CHECK("setAutoRepeat");
+ d->sc_autorepeat = on;
+ QGuiApplicationPrivate::instance()->shortcutMap.setShortcutAutoRepeat(on, d->sc_id, this);
+}
+
+bool QGuiShortcut::autoRepeat() const
+{
+ Q_D(const QGuiShortcut);
+ return d->sc_autorepeat;
+}
+
+/*!
+ Returns the shortcut's ID.
+
+ \sa QShortcutEvent::shortcutId()
+*/
+int QGuiShortcut::id() const
+{
+ Q_D(const QGuiShortcut);
+ return d->sc_id;
+}
+
+/*!
+ \internal
+*/
+bool QGuiShortcut::event(QEvent *e)
+{
+ Q_D(QGuiShortcut);
+ if (d->sc_enabled && e->type() == QEvent::Shortcut) {
+ auto se = static_cast<QShortcutEvent *>(e);
+ if (se->shortcutId() == d->sc_id && se->key() == d->sc_sequence
+ && !d->handleWhatsThis()) {
+ if (se->isAmbiguous())
+ emit activatedAmbiguously();
+ else
+ emit activated();
+ return true;
+ }
+ }
+ return QObject::event(e);
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qguishortcut.cpp"
diff --git a/src/gui/kernel/qguishortcut.h b/src/gui/kernel/qguishortcut.h
new file mode 100644
index 0000000000..fb64f10c84
--- /dev/null
+++ b/src/gui/kernel/qguishortcut.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUISHORTCUT_H
+#define QGUISHORTCUT_H
+
+#include <QtGui/qtguiglobal.h>
+#include <QtGui/qkeysequence.h>
+#include <QtCore/qobject.h>
+
+QT_REQUIRE_CONFIG(shortcut);
+
+QT_BEGIN_NAMESPACE
+
+class QGuiShortcutPrivate;
+class QWindow;
+
+class Q_GUI_EXPORT QGuiShortcut : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QGuiShortcut)
+ Q_PROPERTY(QKeySequence key READ key WRITE setKey)
+ Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
+ Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat)
+ Q_PROPERTY(Qt::ShortcutContext context READ context WRITE setContext)
+public:
+ explicit QGuiShortcut(QWindow *parent);
+ explicit QGuiShortcut(const QKeySequence& key, QWindow *parent,
+ const char *member = nullptr, const char *ambiguousMember = nullptr,
+ Qt::ShortcutContext context = Qt::WindowShortcut);
+ ~QGuiShortcut();
+
+ void setKey(const QKeySequence& key);
+ QKeySequence key() const;
+
+ void setEnabled(bool enable);
+ bool isEnabled() const;
+
+ void setContext(Qt::ShortcutContext context);
+ Qt::ShortcutContext context() const;
+
+ void setAutoRepeat(bool on);
+ bool autoRepeat() const;
+
+ int id() const;
+
+Q_SIGNALS:
+ void activated();
+ void activatedAmbiguously();
+
+protected:
+ QGuiShortcut(QGuiShortcutPrivate &dd, QObject *parent);
+ QGuiShortcut(QGuiShortcutPrivate &dd, const QKeySequence& key, QObject *parent,
+ const char *member, const char *ambiguousMember,
+ Qt::ShortcutContext context);
+
+ bool event(QEvent *e) override;
+};
+
+QT_END_NAMESPACE
+
+#endif // QGUISHORTCUT_H
diff --git a/src/gui/kernel/qguishortcut_p.h b/src/gui/kernel/qguishortcut_p.h
new file mode 100644
index 0000000000..420b02ef1a
--- /dev/null
+++ b/src/gui/kernel/qguishortcut_p.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QGUISHORTCUT_P_H
+#define QGUISHORTCUT_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtGui/private/qtguiglobal_p.h>
+#include "qguishortcut.h"
+#include <QtGui/qkeysequence.h>
+
+#include <QtCore/qstring.h>
+#include <QtCore/private/qobject_p.h>
+
+#include <private/qshortcutmap_p.h>
+
+
+
+QT_BEGIN_NAMESPACE
+
+class QShortcutMap;
+
+/*
+ \internal
+ Private data accessed through d-pointer.
+*/
+class Q_GUI_EXPORT QGuiShortcutPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QGuiShortcut)
+public:
+ QGuiShortcutPrivate() = default;
+
+ virtual QShortcutMap::ContextMatcher contextMatcher() const;
+ virtual bool handleWhatsThis() { return false; }
+
+ QKeySequence sc_sequence;
+ Qt::ShortcutContext sc_context = Qt::WindowShortcut;
+ bool sc_enabled = true;
+ bool sc_autorepeat = true;
+ int sc_id = 0;
+ void redoGrab(QShortcutMap &map);
+};
+
+QT_END_NAMESPACE
+
+#endif // QGUISHORTCUT_P_H
diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp
index edca8d9423..2d6d12cc21 100644
--- a/src/gui/kernel/qguivariant.cpp
+++ b/src/gui/kernel/qguivariant.cpp
@@ -44,7 +44,9 @@
#include "qcursor.h"
#include "qfont.h"
#include "qimage.h"
-#include "qkeysequence.h"
+#if QT_CONFIG(shortcut)
+# include "qkeysequence.h"
+#endif
#include "qtransform.h"
#include "qmatrix.h"
#include "qpalette.h"
@@ -188,7 +190,7 @@ static bool convert(const QVariant::Private *d, int t,
case QVariant::String: {
QString *str = static_cast<QString *>(result);
switch (d->type) {
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
case QVariant::KeySequence:
*str = (*v_cast<QKeySequence>(d)).toString(QKeySequence::NativeText);
return true;
@@ -238,7 +240,7 @@ static bool convert(const QVariant::Private *d, int t,
return true;
}
break;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
case QVariant::Int:
if (d->type == QVariant::KeySequence) {
const QKeySequence &seq = *v_cast<QKeySequence>(d);
@@ -277,7 +279,7 @@ static bool convert(const QVariant::Private *d, int t,
return true;
}
break;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
case QVariant::KeySequence: {
QKeySequence *seq = static_cast<QKeySequence *>(result);
switch (d->type) {
diff --git a/src/gui/kernel/qkeymapper_p.h b/src/gui/kernel/qkeymapper_p.h
index 8364557020..fd53747fdd 100644
--- a/src/gui/kernel/qkeymapper_p.h
+++ b/src/gui/kernel/qkeymapper_p.h
@@ -53,7 +53,6 @@
#include <QtGui/private/qtguiglobal_p.h>
#include <qobject.h>
#include <private/qobject_p.h>
-#include <qkeysequence.h>
#include <qlist.h>
#include <qlocale.h>
#include <qevent.h>
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 2a86b340af..d5bdf1f15b 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -42,8 +42,6 @@
#include <qpa/qplatformtheme.h>
#include "private/qguiapplication_p.h"
-#if !defined(QT_NO_SHORTCUT) || defined(Q_CLANG_QDOC)
-
#include "qdebug.h"
#include <QtCore/qhashfunctions.h>
#ifndef QT_NO_DATASTREAM
@@ -492,6 +490,8 @@ static const struct {
{ Qt::Key_LaunchD, QT_TRANSLATE_NOOP("QShortcut", "Launch (D)") },
{ Qt::Key_LaunchE, QT_TRANSLATE_NOOP("QShortcut", "Launch (E)") },
{ Qt::Key_LaunchF, QT_TRANSLATE_NOOP("QShortcut", "Launch (F)") },
+ { Qt::Key_LaunchG, QT_TRANSLATE_NOOP("QShortcut", "Launch (G)") },
+ { Qt::Key_LaunchH, QT_TRANSLATE_NOOP("QShortcut", "Launch (H)") },
{ Qt::Key_MonBrightnessUp, QT_TRANSLATE_NOOP("QShortcut", "Monitor Brightness Up") },
{ Qt::Key_MonBrightnessDown, QT_TRANSLATE_NOOP("QShortcut", "Monitor Brightness Down") },
{ Qt::Key_KeyboardLightOnOff, QT_TRANSLATE_NOOP("QShortcut", "Keyboard Light On/Off") },
@@ -518,9 +518,11 @@ static const struct {
{ Qt::Key_Book, QT_TRANSLATE_NOOP("QShortcut", "Book") },
{ Qt::Key_CD, QT_TRANSLATE_NOOP("QShortcut", "CD") },
{ Qt::Key_Calculator, QT_TRANSLATE_NOOP("QShortcut", "Calculator") },
+ { Qt::Key_Calendar, QT_TRANSLATE_NOOP("QShortcut", "Calendar") },
{ Qt::Key_Clear, QT_TRANSLATE_NOOP("QShortcut", "Clear") },
{ Qt::Key_ClearGrab, QT_TRANSLATE_NOOP("QShortcut", "Clear Grab") },
{ Qt::Key_Close, QT_TRANSLATE_NOOP("QShortcut", "Close") },
+ { Qt::Key_ContrastAdjust, QT_TRANSLATE_NOOP("QShortcut", "Adjust contrast") },
{ Qt::Key_Copy, QT_TRANSLATE_NOOP("QShortcut", "Copy") },
{ Qt::Key_Cut, QT_TRANSLATE_NOOP("QShortcut", "Cut") },
{ Qt::Key_Display, QT_TRANSLATE_NOOP("QShortcut", "Display") },
@@ -534,6 +536,7 @@ static const struct {
{ Qt::Key_LogOff, QT_TRANSLATE_NOOP("QShortcut", "Logoff") },
{ Qt::Key_Market, QT_TRANSLATE_NOOP("QShortcut", "Market") },
{ Qt::Key_Meeting, QT_TRANSLATE_NOOP("QShortcut", "Meeting") },
+ { Qt::Key_Memo, QT_TRANSLATE_NOOP("QShortcut", "Memo") },
{ Qt::Key_MenuKB, QT_TRANSLATE_NOOP("QShortcut", "Keyboard Menu") },
{ Qt::Key_MenuPB, QT_TRANSLATE_NOOP("QShortcut", "Menu PB") },
{ Qt::Key_MySites, QT_TRANSLATE_NOOP("QShortcut", "My Sites") },
@@ -554,6 +557,7 @@ static const struct {
{ Qt::Key_Support, QT_TRANSLATE_NOOP("QShortcut", "Support") },
{ Qt::Key_TaskPane, QT_TRANSLATE_NOOP("QShortcut", "Task Panel") },
{ Qt::Key_Terminal, QT_TRANSLATE_NOOP("QShortcut", "Terminal") },
+ { Qt::Key_ToDoList, QT_TRANSLATE_NOOP("QShortcut", "To-do list") },
{ Qt::Key_Tools, QT_TRANSLATE_NOOP("QShortcut", "Tools") },
{ Qt::Key_Travel, QT_TRANSLATE_NOOP("QShortcut", "Travel") },
{ Qt::Key_Video, QT_TRANSLATE_NOOP("QShortcut", "Video") },
@@ -1673,9 +1677,6 @@ QDebug operator<<(QDebug dbg, const QKeySequence &p)
}
#endif
-#endif // QT_NO_SHORTCUT
-
-
/*!
\typedef QKeySequence::DataPtr
\internal
diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h
index 3dcbbe5941..68f256c37a 100644
--- a/src/gui/kernel/qkeysequence.h
+++ b/src/gui/kernel/qkeysequence.h
@@ -44,10 +44,9 @@
#include <QtCore/qstring.h>
#include <QtCore/qobjectdefs.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(shortcut);
-#if !defined(QT_NO_SHORTCUT) || defined(Q_CLANG_QDOC)
+QT_BEGIN_NAMESPACE
class QKeySequence;
@@ -227,17 +226,6 @@ Q_DECLARE_SHARED(QKeySequence)
Q_GUI_EXPORT QDebug operator<<(QDebug, const QKeySequence &);
#endif
-#else
-
-class Q_GUI_EXPORT QKeySequence
-{
-public:
- QKeySequence() {}
- QKeySequence(int) {}
-};
-
-#endif // QT_NO_SHORTCUT
-
QT_END_NAMESPACE
#endif // QKEYSEQUENCE_H
diff --git a/src/gui/kernel/qkeysequence_p.h b/src/gui/kernel/qkeysequence_p.h
index fbcab5d34e..8c59505561 100644
--- a/src/gui/kernel/qkeysequence_p.h
+++ b/src/gui/kernel/qkeysequence_p.h
@@ -56,9 +56,10 @@
#include <algorithm>
+QT_REQUIRE_CONFIG(shortcut);
+
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_SHORTCUT
struct QKeyBinding
{
QKeySequence::StandardKey standardKey;
@@ -87,7 +88,6 @@ public:
Q_GUI_EXPORT static QString keyName(int key, QKeySequence::SequenceFormat format);
static int decodeString(QString accel, QKeySequence::SequenceFormat format);
};
-#endif // QT_NO_SHORTCUT
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformmenu.h b/src/gui/kernel/qplatformmenu.h
index 28c29a704c..8e470aefd3 100644
--- a/src/gui/kernel/qplatformmenu.h
+++ b/src/gui/kernel/qplatformmenu.h
@@ -52,7 +52,9 @@
#include <QtGui/qtguiglobal.h>
#include <QtCore/qpointer.h>
#include <QtGui/QFont>
-#include <QtGui/QKeySequence>
+#if QT_CONFIG(shortcut)
+# include <QtGui/QKeySequence>
+#endif
#include <QtGui/QIcon>
QT_BEGIN_NAMESPACE
@@ -85,7 +87,7 @@ public:
virtual void setRole(MenuRole role) = 0;
virtual void setCheckable(bool checkable) = 0;
virtual void setChecked(bool isChecked) = 0;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
virtual void setShortcut(const QKeySequence& shortcut) = 0;
#endif
virtual void setEnabled(bool enabled) = 0;
diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp
index f906f808d8..ff6f32de10 100644
--- a/src/gui/kernel/qplatformtheme.cpp
+++ b/src/gui/kernel/qplatformtheme.cpp
@@ -167,7 +167,7 @@ QT_BEGIN_NAMESPACE
*/
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
// Table of key bindings. It must be sorted on key sequence:
// The integer value of VK_KEY | Modifier Keys (e.g., VK_META, and etc.)
// A priority of 1 indicates that this is the primary key binding when multiple are defined.
@@ -623,7 +623,7 @@ static inline int maybeSwapShortcut(int shortcut)
}
#endif
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
// mixed-mode predicate: all of these overloads are actually needed (but not all for every compiler)
struct ByStandardKey {
typedef bool result_type;
@@ -688,6 +688,7 @@ QString QPlatformTheme::standardButtonText(int button) const
return QPlatformTheme::defaultStandardButtonText(button);
}
+#if QT_CONFIG(shortcut)
/*!
Returns the mnemonic that should be used for a standard \a button.
@@ -700,6 +701,7 @@ QKeySequence QPlatformTheme::standardButtonShortcut(int button) const
Q_UNUSED(button)
return QKeySequence();
}
+#endif // QT_CONFIG(shortcut)
QString QPlatformTheme::defaultStandardButtonText(int button)
{
@@ -784,7 +786,7 @@ unsigned QPlatformThemePrivate::currentKeyPlatforms()
{
const uint keyboardScheme = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::KeyboardScheme).toInt();
unsigned result = 1u << keyboardScheme;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
if (keyboardScheme == QPlatformTheme::KdeKeyboardScheme
|| keyboardScheme == QPlatformTheme::GnomeKeyboardScheme
|| keyboardScheme == QPlatformTheme::CdeKeyboardScheme)
diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h
index 356c4ea3ea..7b88af954c 100644
--- a/src/gui/kernel/qplatformtheme.h
+++ b/src/gui/kernel/qplatformtheme.h
@@ -51,7 +51,9 @@
#include <QtGui/qtguiglobal.h>
#include <QtCore/QScopedPointer>
-#include <QtGui/QKeySequence>
+#if QT_CONFIG(shortcut)
+# include <QtGui/QKeySequence>
+#endif
QT_BEGIN_NAMESPACE
@@ -312,12 +314,14 @@ public:
QPlatformTheme::IconOptions iconOptions = nullptr) const;
virtual QIconEngine *createIconEngine(const QString &iconName) const;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
#endif
virtual QString standardButtonText(int button) const;
+#if QT_CONFIG(shortcut)
virtual QKeySequence standardButtonShortcut(int button) const;
+#endif
static QVariant defaultThemeHint(ThemeHint hint);
static QString defaultStandardButtonText(int button);
diff --git a/src/gui/kernel/qplatformtheme_p.h b/src/gui/kernel/qplatformtheme_p.h
index 73deb890bb..2c16fec141 100644
--- a/src/gui/kernel/qplatformtheme_p.h
+++ b/src/gui/kernel/qplatformtheme_p.h
@@ -52,7 +52,9 @@
//
#include <QtGui/private/qtguiglobal_p.h>
-#include "private/qkeysequence_p.h"
+#if QT_CONFIG(shortcut)
+# include "private/qkeysequence_p.h"
+#endif
QT_BEGIN_NAMESPACE
@@ -67,7 +69,7 @@ public:
void initializeSystemPalette();
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
static const QKeyBinding keyBindings[];
static const uint numberOfKeyBindings;
#endif
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
index 0395c1db38..b5cd342138 100644
--- a/src/gui/kernel/qshortcutmap.cpp
+++ b/src/gui/kernel/qshortcutmap.cpp
@@ -48,8 +48,6 @@
#include <algorithm>
-#ifndef QT_NO_SHORTCUT
-
QT_BEGIN_NAMESPACE
// To enable verbose output uncomment below
@@ -714,5 +712,3 @@ void QShortcutMap::dumpMap() const
#endif
QT_END_NAMESPACE
-
-#endif // QT_NO_SHORTCUT
diff --git a/src/gui/kernel/qshortcutmap_p.h b/src/gui/kernel/qshortcutmap_p.h
index 8fc68229fb..aa3dd969f0 100644
--- a/src/gui/kernel/qshortcutmap_p.h
+++ b/src/gui/kernel/qshortcutmap_p.h
@@ -56,9 +56,9 @@
#include "QtCore/qvector.h"
#include "QtCore/qscopedpointer.h"
-QT_BEGIN_NAMESPACE
+QT_REQUIRE_CONFIG(shortcut);
-#ifndef QT_NO_SHORTCUT
+QT_BEGIN_NAMESPACE
// To enable dump output uncomment below
//#define Dump_QShortcutMap
@@ -106,8 +106,6 @@ private:
QScopedPointer<QShortcutMapPrivate> d_ptr;
};
-#endif // QT_NO_SHORTCUT
-
QT_END_NAMESPACE
#endif // QSHORTCUTMAP_P_H
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp
index 5f61853a6d..286dfaa8cc 100644
--- a/src/gui/kernel/qwindowsysteminterface.cpp
+++ b/src/gui/kernel/qwindowsysteminterface.cpp
@@ -285,6 +285,12 @@ QT_DEFINE_QPA_EVENT_HANDLER(void, handleApplicationStateChanged, Qt::Application
QWindowSystemInterfacePrivate::handleWindowSystemEvent<Delivery>(e);
}
+QT_DEFINE_QPA_EVENT_HANDLER(bool, handleApplicationTermination)
+{
+ auto *e = new QWindowSystemInterfacePrivate::WindowSystemEvent(QWindowSystemInterfacePrivate::ApplicationTermination);
+ return QWindowSystemInterfacePrivate::handleWindowSystemEvent<Delivery>(e);
+}
+
QWindowSystemInterfacePrivate::GeometryChangeEvent::GeometryChangeEvent(QWindow *window, const QRect &newGeometry)
: WindowSystemEvent(GeometryChange)
, window(window)
@@ -434,7 +440,7 @@ void QWindowSystemInterface::handleFrameStrutMouseEvent(QWindow *window, ulong t
bool QWindowSystemInterface::handleShortcutEvent(QWindow *window, ulong timestamp, int keyCode, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode,
quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text, bool autorepeat, ushort count)
{
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
if (!window)
window = QGuiApplication::focusWindow();
@@ -822,7 +828,8 @@ void QWindowSystemInterface::handleScreenAdded(QPlatformScreen *ps, bool isPrima
*/
void QWindowSystemInterface::handleScreenRemoved(QPlatformScreen *platformScreen)
{
- // Important to keep this order since the QSceen doesn't own the platform screen
+ // Important to keep this order since the QSceen doesn't own the platform screen.
+ // The QScreen destructor will take care changing the primary screen, so no need here.
delete platformScreen->screen();
delete platformScreen;
}
@@ -1238,7 +1245,7 @@ Q_GUI_EXPORT void qt_handleKeyEvent(QWindow *window, QEvent::Type t, int k, Qt::
Q_GUI_EXPORT bool qt_sendShortcutOverrideEvent(QObject *o, ulong timestamp, int k, Qt::KeyboardModifiers mods, const QString &text = QString(), bool autorep = false, ushort count = 1)
{
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
// FIXME: This method should not allow targeting a specific object, but should
// instead forward the event to a window, which then takes care of normal event
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h
index 4a0bc858a9..d5a4ad30d8 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -215,6 +215,9 @@ public:
template<typename Delivery = QWindowSystemInterface::DefaultDelivery>
static void handleApplicationStateChanged(Qt::ApplicationState newState, bool forcePropagate = false);
+ template<typename Delivery = QWindowSystemInterface::DefaultDelivery>
+ static bool handleApplicationTermination();
+
#if QT_CONFIG(draganddrop)
#if QT_DEPRECATED_SINCE(5, 11)
QT_DEPRECATED static QPlatformDragQtResponse handleDrag(QWindow *window, const QMimeData *dropData,
diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h
index 55fd181ef0..6e4bce607e 100644
--- a/src/gui/kernel/qwindowsysteminterface_p.h
+++ b/src/gui/kernel/qwindowsysteminterface_p.h
@@ -99,7 +99,8 @@ public:
ApplicationStateChanged = 0x19,
FlushEvents = 0x20,
WindowScreenChanged = 0x21,
- SafeAreaMarginsChanged = 0x22
+ SafeAreaMarginsChanged = 0x22,
+ ApplicationTermination = 0x23
};
class WindowSystemEvent {
diff --git a/src/gui/opengl/qopenglfunctions_4_2_compatibility.h b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h
index 6726d5fc44..a48d581c2d 100644
--- a/src/gui/opengl/qopenglfunctions_4_2_compatibility.h
+++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_2_Compatibility : public QAbstractOpenGLFunctions
@@ -5632,6 +5638,10 @@ inline void QOpenGLFunctions_4_2_Compatibility::glVertexAttribI1i(GLuint index,
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_2_core.h b/src/gui/opengl/qopenglfunctions_4_2_core.h
index a921329741..5ca98e9808 100644
--- a/src/gui/opengl/qopenglfunctions_4_2_core.h
+++ b/src/gui/opengl/qopenglfunctions_4_2_core.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_2_Core : public QAbstractOpenGLFunctions
@@ -3027,6 +3033,10 @@ inline void QOpenGLFunctions_4_2_Core::glDrawArraysInstancedBaseInstance(GLenum
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_3_compatibility.h b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h
index b9d4eb1d6f..d969f5b3b4 100644
--- a/src/gui/opengl/qopenglfunctions_4_3_compatibility.h
+++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_3_Compatibility : public QAbstractOpenGLFunctions
@@ -5839,6 +5845,10 @@ inline void QOpenGLFunctions_4_3_Compatibility::glVertexAttribI1i(GLuint index,
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_3_core.h b/src/gui/opengl/qopenglfunctions_4_3_core.h
index da552d64af..13675caf62 100644
--- a/src/gui/opengl/qopenglfunctions_4_3_core.h
+++ b/src/gui/opengl/qopenglfunctions_4_3_core.h
@@ -57,6 +57,13 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_3_Core : public QAbstractOpenGLFunctions
@@ -3230,6 +3237,10 @@ inline void QOpenGLFunctions_4_3_Core::glClearBufferData(GLenum target, GLenum i
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_4_compatibility.h b/src/gui/opengl/qopenglfunctions_4_4_compatibility.h
index 7a05bd802d..0acab349a1 100644
--- a/src/gui/opengl/qopenglfunctions_4_4_compatibility.h
+++ b/src/gui/opengl/qopenglfunctions_4_4_compatibility.h
@@ -59,6 +59,12 @@
QT_BEGIN_NAMESPACE
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
class Q_GUI_EXPORT QOpenGLFunctions_4_4_Compatibility : public QAbstractOpenGLFunctions
{
public:
@@ -5961,6 +5967,10 @@ inline void QOpenGLFunctions_4_4_Compatibility::glVertexP2ui(GLenum type, GLuint
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_4_core.h b/src/gui/opengl/qopenglfunctions_4_4_core.h
index 6b29a9659b..1ad6f40214 100644
--- a/src/gui/opengl/qopenglfunctions_4_4_core.h
+++ b/src/gui/opengl/qopenglfunctions_4_4_core.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_4_Core : public QAbstractOpenGLFunctions
@@ -3415,6 +3421,10 @@ inline void QOpenGLFunctions_4_4_Core::glBufferStorage(GLenum target, GLsizeiptr
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_5_compatibility.h b/src/gui/opengl/qopenglfunctions_4_5_compatibility.h
index a809c1c90b..9d9d14548b 100644
--- a/src/gui/opengl/qopenglfunctions_4_5_compatibility.h
+++ b/src/gui/opengl/qopenglfunctions_4_5_compatibility.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_5_Compatibility : public QAbstractOpenGLFunctions
@@ -6679,6 +6685,10 @@ inline void QOpenGLFunctions_4_5_Compatibility::glGetnMapdv(GLenum target, GLenu
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglfunctions_4_5_core.h b/src/gui/opengl/qopenglfunctions_4_5_core.h
index bb1b17f7b1..bf872c628b 100644
--- a/src/gui/opengl/qopenglfunctions_4_5_core.h
+++ b/src/gui/opengl/qopenglfunctions_4_5_core.h
@@ -57,6 +57,12 @@
#include <QtGui/QOpenGLVersionFunctions>
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class Q_GUI_EXPORT QOpenGLFunctions_4_5_Core : public QAbstractOpenGLFunctions
@@ -4056,6 +4062,11 @@ inline void QOpenGLFunctions_4_5_Core::glClipControl(GLenum origin, GLenum depth
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
+
#endif // QT_NO_OPENGL && !QT_OPENGL_ES_2
#endif
diff --git a/src/gui/opengl/qopenglversionfunctions.h b/src/gui/opengl/qopenglversionfunctions.h
index aa6e49b9ae..4835ea4871 100644
--- a/src/gui/opengl/qopenglversionfunctions.h
+++ b/src/gui/opengl/qopenglversionfunctions.h
@@ -61,6 +61,12 @@
#include <QtCore/qpair.h>
#include <QtGui/qopengl.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class QOpenGLContext;
@@ -1897,6 +1903,10 @@ public:
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL
#endif
diff --git a/src/gui/painting/qcolor.h b/src/gui/painting/qcolor.h
index f0d7dd23ad..c3111f9e3b 100644
--- a/src/gui/painting/qcolor.h
+++ b/src/gui/painting/qcolor.h
@@ -46,6 +46,8 @@
#include <QtCore/qstringlist.h>
#include <QtGui/qrgba64.h>
+#include <limits.h>
+
QT_BEGIN_NAMESPACE
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index e5f752b94e..e8d129d047 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -6044,11 +6044,11 @@ static inline void alphargbblend_argb32(quint32 *dst, uint coverage, const QRgba
// nothing
} else if (coverage == 0xffffffff && qAlpha(src) == 255) {
blend_pixel(*dst, src);
- } else if (!colorProfile) {
- *dst = rgbBlend(*dst, src, coverage);
} else if (*dst < 0xff000000) {
// Give up and do a naive gray alphablend. Needed to deal with ARGB32 and invalid ARGB32_premultiplied, see QTBUG-60571
blend_pixel(*dst, src, qRgbAvg(coverage));
+ } else if (!colorProfile) {
+ *dst = rgbBlend(*dst, src, coverage);
} else if (srcLinear.isOpaque()) {
rgbBlendPixel(dst, coverage, srcLinear, colorProfile);
} else {
diff --git a/src/gui/painting/qdrawhelper_ssse3.cpp b/src/gui/painting/qdrawhelper_ssse3.cpp
index 14d7047bb6..a175b591dd 100644
--- a/src/gui/painting/qdrawhelper_ssse3.cpp
+++ b/src/gui/painting/qdrawhelper_ssse3.cpp
@@ -197,7 +197,7 @@ void qt_memfill24_ssse3(quint24 *dest, quint24 color, qsizetype count)
quint24 *end = dest + count;
constexpr uchar x = 2, y = 1, z = 0;
- Q_DECL_ALIGN(__m128i) static const uchar
+ alignas(__m128i) static const uchar
shuffleMask[16 + 1] = { x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y };
__m128i mval1 = _mm_shuffle_epi8(m, _mm_load_si128(reinterpret_cast<const __m128i *>(shuffleMask)));
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 8c51981120..40c822076b 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -1319,7 +1319,7 @@ void QRasterPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
QPaintEngineEx::clip(rect, op);
return;
- } else if (!setClipRectInDeviceCoords(s->matrix.mapRect(rect), op)) {
+ } else if (!setClipRectInDeviceCoords(s->matrix.mapRect(QRectF(rect)).toRect(), op)) {
QPaintEngineEx::clip(rect, op);
return;
}
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 7696da7d45..d75b66c50b 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1529,12 +1529,12 @@ QRegion QTransform::map(const QRegion &r) const
QRegion res;
if (m11() < 0 || m22() < 0) {
for (const QRect &rect : r)
- res += mapRect(rect);
+ res += mapRect(QRectF(rect)).toRect();
} else {
QVarLengthArray<QRect, 32> rects;
rects.reserve(r.rectCount());
for (const QRect &rect : r) {
- QRect nr = mapRect(rect);
+ QRect nr = mapRect(QRectF(rect)).toRect();
if (!nr.isEmpty())
rects.append(nr);
}
diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp
index dabad35688..8ef98d2e42 100644
--- a/src/gui/rhi/qrhi.cpp
+++ b/src/gui/rhi/qrhi.cpp
@@ -3518,14 +3518,36 @@ QRhiResource::Type QRhiSwapChain::resourceType() const
\c{currentPixelSize() != surfacePixelSize()} then the swapchain needs to be
resized.
+ \note Typical rendering logic will call this function to get the output
+ size when starting to prepare a new frame, and base dependent calculations
+ (such as, the viewport) on the size returned from this function.
+
+ While in many cases the value is the same as \c{QWindow::size() *
+ QWindow::devicePixelRatio()}, relying on the QWindow-reported size is not
+ guaranteed to be correct on all platforms and graphics API implementations.
+ Using this function is therefore strongly recommended whenever there is a
+ need to identify the dimensions, in pixels, of the output layer or surface.
+
+ This also has the added benefit of avoiding potential data races when QRhi
+ is used on a dedicated rendering thread, because the need to call QWindow
+ functions, that may then access data updated on the main thread, is
+ avoided.
+
\sa surfacePixelSize()
*/
/*!
\fn QSize QRhiSwapChain::surfacePixelSize()
- \return The size of the window's associated surface or layer. Do not assume
- this is the same as QWindow::size() * QWindow::devicePixelRatio().
+ \return The size of the window's associated surface or layer.
+
+ \warning Do not assume this is the same as \c{QWindow::size() *
+ QWindow::devicePixelRatio()}. With some graphics APIs and windowing system
+ interfaces (for example, Vulkan) there is a theoretical possibility for a
+ surface to assume a size different from the associated window. To support
+ these cases, rendering logic must always base size-derived calculations
+ (such as, viewports) on the size reported from QRhiSwapChain, and never on
+ the size queried from QWindow.
\note Can also be called before buildOrResize(), if at least window() is
already set) This in combination with currentPixelSize() allows to detect
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp
index dec28cac9b..abee843a74 100644
--- a/src/gui/rhi/qrhigles2.cpp
+++ b/src/gui/rhi/qrhigles2.cpp
@@ -2961,7 +2961,7 @@ bool QRhiGles2::isProgramBinaryDiskCacheEnabled() const
return checker.get(ctx)->isSupported();
}
-static QOpenGLProgramBinaryCache qrhi_programBinaryCache;
+Q_GLOBAL_STATIC(QOpenGLProgramBinaryCache, qrhi_programBinaryCache);
static inline QShader::Stage toShaderStage(QRhiShaderStage::Type type)
{
@@ -2995,7 +2995,7 @@ QRhiGles2::DiskCacheResult QRhiGles2::tryLoadFromDiskCache(const QRhiShaderStage
}
diskCacheKey = binaryProgram.cacheKey();
- if (qrhi_programBinaryCache.load(diskCacheKey, program)) {
+ if (qrhi_programBinaryCache()->load(diskCacheKey, program)) {
qCDebug(lcOpenGLProgramDiskCache, "Program binary received from cache, program %u, key %s",
program, diskCacheKey.constData());
result = QRhiGles2::DiskCacheHit;
@@ -3013,7 +3013,7 @@ void QRhiGles2::trySaveToDiskCache(GLuint program, const QByteArray &cacheKey)
if (isProgramBinaryDiskCacheEnabled()) {
qCDebug(lcOpenGLProgramDiskCache, "Saving program binary, program %u, key %s",
program, cacheKey.constData());
- qrhi_programBinaryCache.save(cacheKey, program);
+ qrhi_programBinaryCache()->save(cacheKey, program);
}
}
diff --git a/src/gui/rhi/qrhimetal.mm b/src/gui/rhi/qrhimetal.mm
index 5f14d917b8..131b2da802 100644
--- a/src/gui/rhi/qrhimetal.mm
+++ b/src/gui/rhi/qrhimetal.mm
@@ -35,8 +35,6 @@
****************************************************************************/
#include "qrhimetal_p_p.h"
-#include "qshader_p.h"
-#include "qshaderdescription_p.h"
#include <QGuiApplication>
#include <QWindow>
#include <qmath.h>
@@ -143,8 +141,10 @@ struct QMetalShader
id<MTLLibrary> lib = nil;
id<MTLFunction> func = nil;
std::array<uint, 3> localSize;
+ QShader::NativeResourceBindingMap nativeResourceBindingMap;
void release() {
+ nativeResourceBindingMap.clear();
[lib release];
lib = nil;
[func release];
@@ -164,7 +164,7 @@ struct QRhiMetalData
const QRhiDepthStencilClearValue &depthStencilClearValue,
int colorAttCount);
id<MTLLibrary> createMetalLib(const QShader &shader, QShader::Variant shaderVariant,
- QString *error, QByteArray *entryPoint);
+ QString *error, QByteArray *entryPoint, QShaderKey *activeKey);
id<MTLFunction> createMSLShaderFunction(id<MTLLibrary> lib, const QByteArray &entryPoint);
struct DeferredReleaseEntry {
@@ -653,18 +653,40 @@ QRhiShaderResourceBindings *QRhiMetal::createShaderResourceBindings()
return new QMetalShaderResourceBindings(this);
}
-void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD, QMetalCommandBuffer *cbD,
+enum class BindingType {
+ Buffer,
+ Texture,
+ Sampler
+};
+
+static inline int mapBinding(int binding,
+ int stageIndex,
+ const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[],
+ BindingType type)
+{
+ const QShader::NativeResourceBindingMap *map = nativeResourceBindingMaps[stageIndex];
+ if (map) {
+ auto it = map->constFind(binding);
+ if (it != map->cend())
+ return type == BindingType::Sampler ? it->second : it->first;
+ }
+ return binding;
+}
+
+void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD,
+ QMetalCommandBuffer *cbD,
int dynamicOffsetCount,
const QRhiCommandBuffer::DynamicOffset *dynamicOffsets,
- bool offsetOnlyChange)
+ bool offsetOnlyChange,
+ const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[SUPPORTED_STAGES])
{
- static const int KNOWN_STAGES = 3;
struct {
QRhiBatchedBindings<id<MTLBuffer> > buffers;
QRhiBatchedBindings<NSUInteger> bufferOffsets;
QRhiBatchedBindings<id<MTLTexture> > textures;
QRhiBatchedBindings<id<MTLSamplerState> > samplers;
- } res[KNOWN_STAGES];
+ } res[SUPPORTED_STAGES];
+ enum { VERTEX = 0, FRAGMENT = 1, COMPUTE = 2 };
for (const QRhiShaderResourceBinding &binding : qAsConst(srbD->sortedBindings)) {
const QRhiShaderResourceBinding::Data *b = binding.data();
@@ -682,16 +704,16 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
}
}
if (b->stage.testFlag(QRhiShaderResourceBinding::VertexStage)) {
- res[0].buffers.feed(b->binding, mtlbuf);
- res[0].bufferOffsets.feed(b->binding, offset);
+ res[VERTEX].buffers.feed(mapBinding(b->binding, VERTEX, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[VERTEX].bufferOffsets.feed(b->binding, offset);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::FragmentStage)) {
- res[1].buffers.feed(b->binding, mtlbuf);
- res[1].bufferOffsets.feed(b->binding, offset);
+ res[FRAGMENT].buffers.feed(mapBinding(b->binding, FRAGMENT, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[FRAGMENT].bufferOffsets.feed(b->binding, offset);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::ComputeStage)) {
- res[2].buffers.feed(b->binding, mtlbuf);
- res[2].bufferOffsets.feed(b->binding, offset);
+ res[COMPUTE].buffers.feed(mapBinding(b->binding, COMPUTE, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[COMPUTE].bufferOffsets.feed(b->binding, offset);
}
}
break;
@@ -700,16 +722,16 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
QMetalTexture *texD = QRHI_RES(QMetalTexture, b->u.stex.tex);
QMetalSampler *samplerD = QRHI_RES(QMetalSampler, b->u.stex.sampler);
if (b->stage.testFlag(QRhiShaderResourceBinding::VertexStage)) {
- res[0].textures.feed(b->binding, texD->d->tex);
- res[0].samplers.feed(b->binding, samplerD->d->samplerState);
+ res[VERTEX].textures.feed(mapBinding(b->binding, VERTEX, nativeResourceBindingMaps, BindingType::Texture), texD->d->tex);
+ res[VERTEX].samplers.feed(mapBinding(b->binding, VERTEX, nativeResourceBindingMaps, BindingType::Sampler), samplerD->d->samplerState);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::FragmentStage)) {
- res[1].textures.feed(b->binding, texD->d->tex);
- res[1].samplers.feed(b->binding, samplerD->d->samplerState);
+ res[FRAGMENT].textures.feed(mapBinding(b->binding, FRAGMENT, nativeResourceBindingMaps, BindingType::Texture), texD->d->tex);
+ res[FRAGMENT].samplers.feed(mapBinding(b->binding, FRAGMENT, nativeResourceBindingMaps, BindingType::Sampler), samplerD->d->samplerState);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::ComputeStage)) {
- res[2].textures.feed(b->binding, texD->d->tex);
- res[2].samplers.feed(b->binding, samplerD->d->samplerState);
+ res[COMPUTE].textures.feed(mapBinding(b->binding, COMPUTE, nativeResourceBindingMaps, BindingType::Texture), texD->d->tex);
+ res[COMPUTE].samplers.feed(mapBinding(b->binding, COMPUTE, nativeResourceBindingMaps, BindingType::Sampler), samplerD->d->samplerState);
}
}
break;
@@ -722,11 +744,11 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
QMetalTexture *texD = QRHI_RES(QMetalTexture, b->u.simage.tex);
id<MTLTexture> t = texD->d->viewForLevel(b->u.simage.level);
if (b->stage.testFlag(QRhiShaderResourceBinding::VertexStage))
- res[0].textures.feed(b->binding, t);
+ res[VERTEX].textures.feed(mapBinding(b->binding, VERTEX, nativeResourceBindingMaps, BindingType::Texture), t);
if (b->stage.testFlag(QRhiShaderResourceBinding::FragmentStage))
- res[1].textures.feed(b->binding, t);
+ res[FRAGMENT].textures.feed(mapBinding(b->binding, FRAGMENT, nativeResourceBindingMaps, BindingType::Texture), t);
if (b->stage.testFlag(QRhiShaderResourceBinding::ComputeStage))
- res[2].textures.feed(b->binding, t);
+ res[COMPUTE].textures.feed(mapBinding(b->binding, COMPUTE, nativeResourceBindingMaps, BindingType::Texture), t);
}
break;
case QRhiShaderResourceBinding::BufferLoad:
@@ -739,16 +761,16 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
id<MTLBuffer> mtlbuf = bufD->d->buf[0];
uint offset = uint(b->u.sbuf.offset);
if (b->stage.testFlag(QRhiShaderResourceBinding::VertexStage)) {
- res[0].buffers.feed(b->binding, mtlbuf);
- res[0].bufferOffsets.feed(b->binding, offset);
+ res[VERTEX].buffers.feed(mapBinding(b->binding, VERTEX, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[VERTEX].bufferOffsets.feed(b->binding, offset);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::FragmentStage)) {
- res[1].buffers.feed(b->binding, mtlbuf);
- res[1].bufferOffsets.feed(b->binding, offset);
+ res[FRAGMENT].buffers.feed(mapBinding(b->binding, FRAGMENT, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[FRAGMENT].bufferOffsets.feed(b->binding, offset);
}
if (b->stage.testFlag(QRhiShaderResourceBinding::ComputeStage)) {
- res[2].buffers.feed(b->binding, mtlbuf);
- res[2].bufferOffsets.feed(b->binding, offset);
+ res[COMPUTE].buffers.feed(mapBinding(b->binding, COMPUTE, nativeResourceBindingMaps, BindingType::Buffer), mtlbuf);
+ res[COMPUTE].bufferOffsets.feed(b->binding, offset);
}
}
break;
@@ -758,25 +780,30 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
}
}
- for (int idx = 0; idx < KNOWN_STAGES; ++idx) {
- res[idx].buffers.finish();
- res[idx].bufferOffsets.finish();
+ for (int stage = 0; stage < SUPPORTED_STAGES; ++stage) {
+ if (cbD->recordingPass != QMetalCommandBuffer::RenderPass && (stage == VERTEX || stage == FRAGMENT))
+ continue;
+ if (cbD->recordingPass != QMetalCommandBuffer::ComputePass && stage == COMPUTE)
+ continue;
+
+ res[stage].buffers.finish();
+ res[stage].bufferOffsets.finish();
- for (int i = 0, ie = res[idx].buffers.batches.count(); i != ie; ++i) {
- const auto &bufferBatch(res[idx].buffers.batches[i]);
- const auto &offsetBatch(res[idx].bufferOffsets.batches[i]);
- switch (idx) {
- case 0:
+ for (int i = 0, ie = res[stage].buffers.batches.count(); i != ie; ++i) {
+ const auto &bufferBatch(res[stage].buffers.batches[i]);
+ const auto &offsetBatch(res[stage].bufferOffsets.batches[i]);
+ switch (stage) {
+ case VERTEX:
[cbD->d->currentRenderPassEncoder setVertexBuffers: bufferBatch.resources.constData()
offsets: offsetBatch.resources.constData()
withRange: NSMakeRange(bufferBatch.startBinding, NSUInteger(bufferBatch.resources.count()))];
break;
- case 1:
+ case FRAGMENT:
[cbD->d->currentRenderPassEncoder setFragmentBuffers: bufferBatch.resources.constData()
offsets: offsetBatch.resources.constData()
withRange: NSMakeRange(bufferBatch.startBinding, NSUInteger(bufferBatch.resources.count()))];
break;
- case 2:
+ case COMPUTE:
[cbD->d->currentComputePassEncoder setBuffers: bufferBatch.resources.constData()
offsets: offsetBatch.resources.constData()
withRange: NSMakeRange(bufferBatch.startBinding, NSUInteger(bufferBatch.resources.count()))];
@@ -790,21 +817,21 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
if (offsetOnlyChange)
continue;
- res[idx].textures.finish();
- res[idx].samplers.finish();
+ res[stage].textures.finish();
+ res[stage].samplers.finish();
- for (int i = 0, ie = res[idx].textures.batches.count(); i != ie; ++i) {
- const auto &batch(res[idx].textures.batches[i]);
- switch (idx) {
- case 0:
+ for (int i = 0, ie = res[stage].textures.batches.count(); i != ie; ++i) {
+ const auto &batch(res[stage].textures.batches[i]);
+ switch (stage) {
+ case VERTEX:
[cbD->d->currentRenderPassEncoder setVertexTextures: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
- case 1:
+ case FRAGMENT:
[cbD->d->currentRenderPassEncoder setFragmentTextures: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
- case 2:
+ case COMPUTE:
[cbD->d->currentComputePassEncoder setTextures: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
@@ -813,18 +840,18 @@ void QRhiMetal::enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD
break;
}
}
- for (int i = 0, ie = res[idx].samplers.batches.count(); i != ie; ++i) {
- const auto &batch(res[idx].samplers.batches[i]);
- switch (idx) {
- case 0:
+ for (int i = 0, ie = res[stage].samplers.batches.count(); i != ie; ++i) {
+ const auto &batch(res[stage].samplers.batches[i]);
+ switch (stage) {
+ case VERTEX:
[cbD->d->currentRenderPassEncoder setVertexSamplerStates: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
- case 1:
+ case FRAGMENT:
[cbD->d->currentRenderPassEncoder setFragmentSamplerStates: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
- case 2:
+ case COMPUTE:
[cbD->d->currentComputePassEncoder setSamplerStates: batch.resources.constData()
withRange: NSMakeRange(batch.startBinding, NSUInteger(batch.resources.count()))];
break;
@@ -973,18 +1000,22 @@ void QRhiMetal::setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBind
// dynamic uniform buffer offsets always trigger a rebind
if (hasDynamicOffsetInSrb || resNeedsRebind || srbChanged || srbRebuilt) {
+ const QShader::NativeResourceBindingMap *resBindMaps[SUPPORTED_STAGES] = { nullptr, nullptr, nullptr };
if (gfxPsD) {
cbD->currentGraphicsSrb = srb;
cbD->currentComputeSrb = nullptr;
+ resBindMaps[0] = &gfxPsD->d->vs.nativeResourceBindingMap;
+ resBindMaps[1] = &gfxPsD->d->fs.nativeResourceBindingMap;
} else {
cbD->currentGraphicsSrb = nullptr;
cbD->currentComputeSrb = srb;
+ resBindMaps[2] = &compPsD->d->cs.nativeResourceBindingMap;
}
cbD->currentSrbGeneration = srbD->generation;
cbD->currentResSlot = resSlot;
const bool offsetOnlyChange = hasDynamicOffsetInSrb && !resNeedsRebind && !srbChanged && !srbRebuilt;
- enqueueShaderResourceBindings(srbD, cbD, dynamicOffsetCount, dynamicOffsets, offsetOnlyChange);
+ enqueueShaderResourceBindings(srbD, cbD, dynamicOffsetCount, dynamicOffsets, offsetOnlyChange, resBindMaps);
}
}
@@ -3081,9 +3112,10 @@ static inline MTLCullMode toMetalCullMode(QRhiGraphicsPipeline::CullMode c)
}
id<MTLLibrary> QRhiMetalData::createMetalLib(const QShader &shader, QShader::Variant shaderVariant,
- QString *error, QByteArray *entryPoint)
+ QString *error, QByteArray *entryPoint, QShaderKey *activeKey)
{
- QShaderCode mtllib = shader.shader({ QShader::MetalLibShader, 12, shaderVariant });
+ QShaderKey key = { QShader::MetalLibShader, 12, shaderVariant };
+ QShaderCode mtllib = shader.shader(key);
if (!mtllib.shader().isEmpty()) {
dispatch_data_t data = dispatch_data_create(mtllib.shader().constData(),
size_t(mtllib.shader().size()),
@@ -3094,6 +3126,7 @@ id<MTLLibrary> QRhiMetalData::createMetalLib(const QShader &shader, QShader::Var
dispatch_release(data);
if (!err) {
*entryPoint = mtllib.entryPoint();
+ *activeKey = key;
return lib;
} else {
const QString msg = QString::fromNSString(err.localizedDescription);
@@ -3101,7 +3134,8 @@ id<MTLLibrary> QRhiMetalData::createMetalLib(const QShader &shader, QShader::Var
}
}
- QShaderCode mslSource = shader.shader({ QShader::MslShader, 12, shaderVariant });
+ key = { QShader::MslShader, 12, shaderVariant };
+ QShaderCode mslSource = shader.shader(key);
if (mslSource.shader().isEmpty()) {
qWarning() << "No MSL 1.2 code found in baked shader" << shader;
return nil;
@@ -3122,6 +3156,7 @@ id<MTLLibrary> QRhiMetalData::createMetalLib(const QShader &shader, QShader::Var
}
*entryPoint = mslSource.entryPoint();
+ *activeKey = key;
return lib;
}
@@ -3195,9 +3230,12 @@ bool QMetalGraphicsPipeline::build()
break;
}
} else {
+ const QShader shader = shaderStage.shader();
QString error;
QByteArray entryPoint;
- id<MTLLibrary> lib = rhiD->d->createMetalLib(shaderStage.shader(), shaderStage.shaderVariant(), &error, &entryPoint);
+ QShaderKey activeKey;
+ id<MTLLibrary> lib = rhiD->d->createMetalLib(shader, shaderStage.shaderVariant(),
+ &error, &entryPoint, &activeKey);
if (!lib) {
qWarning("MSL shader compilation failed: %s", qPrintable(error));
return false;
@@ -3218,6 +3256,8 @@ bool QMetalGraphicsPipeline::build()
case QRhiShaderStage::Vertex:
d->vs.lib = lib;
d->vs.func = func;
+ if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey))
+ d->vs.nativeResourceBindingMap = *map;
rhiD->d->shaderCache.insert(shaderStage, d->vs);
[d->vs.lib retain];
[d->vs.func retain];
@@ -3226,6 +3266,8 @@ bool QMetalGraphicsPipeline::build()
case QRhiShaderStage::Fragment:
d->fs.lib = lib;
d->fs.func = func;
+ if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey))
+ d->fs.nativeResourceBindingMap = *map;
rhiD->d->shaderCache.insert(shaderStage, d->fs);
[d->fs.lib retain];
[d->fs.func retain];
@@ -3360,8 +3402,9 @@ bool QMetalComputePipeline::build()
const QShader shader = m_shaderStage.shader();
QString error;
QByteArray entryPoint;
+ QShaderKey activeKey;
id<MTLLibrary> lib = rhiD->d->createMetalLib(shader, m_shaderStage.shaderVariant(),
- &error, &entryPoint);
+ &error, &entryPoint, &activeKey);
if (!lib) {
qWarning("MSL shader compilation failed: %s", qPrintable(error));
return false;
@@ -3375,6 +3418,8 @@ bool QMetalComputePipeline::build()
d->cs.lib = lib;
d->cs.func = func;
d->cs.localSize = shader.description().computeShaderLocalSize();
+ if (const QShader::NativeResourceBindingMap *map = shader.nativeResourceBindingMap(activeKey))
+ d->cs.nativeResourceBindingMap = *map;
if (rhiD->d->shaderCache.count() >= QRhiMetal::MAX_SHADER_CACHE_ENTRIES) {
for (QMetalShader &s : rhiD->d->shaderCache)
diff --git a/src/gui/rhi/qrhimetal_p_p.h b/src/gui/rhi/qrhimetal_p_p.h
index 688fec8147..2be86db5c8 100644
--- a/src/gui/rhi/qrhimetal_p_p.h
+++ b/src/gui/rhi/qrhimetal_p_p.h
@@ -433,10 +433,13 @@ public:
qsizetype *curOfs);
void enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates);
void executeBufferHostWritesForCurrentFrame(QMetalBuffer *bufD);
- void enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD, QMetalCommandBuffer *cbD,
+ static const int SUPPORTED_STAGES = 3;
+ void enqueueShaderResourceBindings(QMetalShaderResourceBindings *srbD,
+ QMetalCommandBuffer *cbD,
int dynamicOffsetCount,
const QRhiCommandBuffer::DynamicOffset *dynamicOffsets,
- bool offsetOnlyChange);
+ bool offsetOnlyChange,
+ const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[SUPPORTED_STAGES]);
int effectiveSampleCount(int sampleCount) const;
bool importedDevice = false;
diff --git a/src/gui/rhi/qshader.cpp b/src/gui/rhi/qshader.cpp
index 6a2c596557..14d780b4e4 100644
--- a/src/gui/rhi/qshader.cpp
+++ b/src/gui/rhi/qshader.cpp
@@ -214,8 +214,6 @@ QT_BEGIN_NAMESPACE
QShader, it indicates no shader code was found for the requested key.
*/
-static const int QSB_VERSION = 1;
-
/*!
Constructs a new, empty (and thus invalid) QShader instance.
*/
@@ -345,6 +343,14 @@ void QShader::removeShader(const QShaderKey &key)
d->shaders.erase(it);
}
+static void writeShaderKey(QDataStream *ds, const QShaderKey &k)
+{
+ *ds << k.source();
+ *ds << k.sourceVersion().version();
+ *ds << k.sourceVersion().flags();
+ *ds << k.sourceVariant();
+}
+
/*!
\return a serialized binary version of all the data held by the
QShader, suitable for writing to files or other I/O devices.
@@ -359,24 +365,48 @@ QByteArray QShader::serialized() const
if (!buf.open(QIODevice::WriteOnly))
return QByteArray();
- ds << QSB_VERSION;
+ ds << QShaderPrivate::QSB_VERSION;
ds << d->stage;
- ds << d->desc.toBinaryJson();
+ ds << d->desc.toCbor();
ds << d->shaders.count();
for (auto it = d->shaders.cbegin(), itEnd = d->shaders.cend(); it != itEnd; ++it) {
const QShaderKey &k(it.key());
- ds << k.source();
- ds << k.sourceVersion().version();
- ds << k.sourceVersion().flags();
- ds << k.sourceVariant();
+ writeShaderKey(&ds, k);
const QShaderCode &shader(d->shaders.value(k));
ds << shader.shader();
ds << shader.entryPoint();
}
+ ds << d->bindings.count();
+ for (auto it = d->bindings.cbegin(), itEnd = d->bindings.cend(); it != itEnd; ++it) {
+ const QShaderKey &k(it.key());
+ writeShaderKey(&ds, k);
+ const NativeResourceBindingMap &map(it.value());
+ ds << map.count();
+ for (auto mapIt = map.cbegin(), mapItEnd = map.cend(); mapIt != mapItEnd; ++mapIt) {
+ ds << mapIt.key();
+ ds << mapIt.value().first;
+ ds << mapIt.value().second;
+ }
+ }
return qCompress(buf.buffer());
}
+static void readShaderKey(QDataStream *ds, QShaderKey *k)
+{
+ int intVal;
+ *ds >> intVal;
+ k->setSource(QShader::Source(intVal));
+ QShaderVersion ver;
+ *ds >> intVal;
+ ver.setVersion(intVal);
+ *ds >> intVal;
+ ver.setFlags(QShaderVersion::Flags(intVal));
+ k->setSourceVersion(ver);
+ *ds >> intVal;
+ k->setSourceVariant(QShader::Variant(intVal));
+}
+
/*!
Creates a new QShader instance from the given \a data.
@@ -396,28 +426,28 @@ QShader QShader::fromSerialized(const QByteArray &data)
Q_ASSERT(d->ref.loadRelaxed() == 1); // must be detached
int intVal;
ds >> intVal;
- if (intVal != QSB_VERSION)
+ d->qsbVersion = intVal;
+ if (d->qsbVersion != QShaderPrivate::QSB_VERSION
+ && d->qsbVersion != QShaderPrivate::QSB_VERSION_WITH_BINARY_JSON
+ && d->qsbVersion != QShaderPrivate::QSB_VERSION_WITHOUT_BINDINGS)
+ {
+ qWarning("Attempted to deserialize QShader with unknown version %d.", d->qsbVersion);
return QShader();
+ }
ds >> intVal;
d->stage = Stage(intVal);
QByteArray descBin;
ds >> descBin;
- d->desc = QShaderDescription::fromBinaryJson(descBin);
+ if (d->qsbVersion > QShaderPrivate::QSB_VERSION_WITH_BINARY_JSON)
+ d->desc = QShaderDescription::fromCbor(descBin);
+ else
+ d->desc = QShaderDescription::fromBinaryJson(descBin);
int count;
ds >> count;
for (int i = 0; i < count; ++i) {
QShaderKey k;
- ds >> intVal;
- k.setSource(Source(intVal));
- QShaderVersion ver;
- ds >> intVal;
- ver.setVersion(intVal);
- ds >> intVal;
- ver.setFlags(QShaderVersion::Flags(intVal));
- k.setSourceVersion(ver);
- ds >> intVal;
- k.setSourceVariant(Variant(intVal));
+ readShaderKey(&ds, &k);
QShaderCode shader;
QByteArray s;
ds >> s;
@@ -427,6 +457,27 @@ QShader QShader::fromSerialized(const QByteArray &data)
d->shaders[k] = shader;
}
+ if (d->qsbVersion > QShaderPrivate::QSB_VERSION_WITHOUT_BINDINGS) {
+ ds >> count;
+ for (int i = 0; i < count; ++i) {
+ QShaderKey k;
+ readShaderKey(&ds, &k);
+ NativeResourceBindingMap map;
+ int mapSize;
+ ds >> mapSize;
+ for (int b = 0; b < mapSize; ++b) {
+ int binding;
+ ds >> binding;
+ int firstNativeBinding;
+ ds >> firstNativeBinding;
+ int secondNativeBinding;
+ ds >> secondNativeBinding;
+ map.insert(binding, { firstNativeBinding, secondNativeBinding });
+ }
+ d->bindings.insert(k, map);
+ }
+ }
+
return bs;
}
@@ -460,7 +511,7 @@ bool operator==(const QShader &lhs, const QShader &rhs) Q_DECL_NOTHROW
{
return lhs.d->stage == rhs.d->stage
&& lhs.d->shaders == rhs.d->shaders;
- // do not bother with desc, if the shader code is the same, the description must match too
+ // do not bother with desc and bindings, if the shader code is the same, the description must match too
}
/*!
@@ -586,4 +637,66 @@ QDebug operator<<(QDebug dbg, const QShaderVersion &v)
}
#endif // QT_NO_DEBUG_STREAM
+/*!
+ \typedef QShader::NativeResourceBindingMap
+
+ Synonym for QHash<int, QPair<int, int>>.
+
+ The resource binding model QRhi assumes is based on SPIR-V. This means that
+ uniform buffers, storage buffers, combined image samplers, and storage
+ images share a common binding point space. The binding numbers in
+ QShaderDescription and QRhiShaderResourceBinding are expected to match the
+ \c binding layout qualifier in the Vulkan-compatible GLSL shader.
+
+ Graphics APIs other than Vulkan may use a resource binding model that is
+ not fully compatible with this. In addition, the generator of the shader
+ code translated from SPIR-V may choose not to take the SPIR-V binding
+ qualifiers into account, for various reasons. (this is the case with the
+ Metal backend of SPIRV-Cross, for example).
+
+ Therefore, a QShader may expose an additional map that describes what the
+ native binding point for a given SPIR-V binding is. The QRhi backends are
+ expected to use this map automatically, as appropriate. The value is a
+ pair, because combined image samplers may map to two native resources (a
+ texture and a sampler) in some shading languages. In that case the second
+ value refers to the sampler.
+*/
+
+/*!
+ \return the native binding map for \a key or null if no extra mapping is
+ available, or is not applicable.
+ */
+const QShader::NativeResourceBindingMap *QShader::nativeResourceBindingMap(const QShaderKey &key) const
+{
+ auto it = d->bindings.constFind(key);
+ if (it == d->bindings.cend())
+ return nullptr;
+
+ return &it.value();
+}
+
+/*!
+ Stores the given native resource binding \a map associated with \a key.
+
+ \sa nativeResourceBindingMap()
+ */
+void QShader::setResourceBindingMap(const QShaderKey &key, const NativeResourceBindingMap &map)
+{
+ detach();
+ d->bindings[key] = map;
+}
+
+/*!
+ Removes the native resource binding map for \a key.
+ */
+void QShader::removeResourceBindingMap(const QShaderKey &key)
+{
+ auto it = d->bindings.find(key);
+ if (it == d->bindings.end())
+ return;
+
+ detach();
+ d->bindings.erase(it);
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/rhi/qshader_p.h b/src/gui/rhi/qshader_p.h
index 243842a95a..4b561b6fa9 100644
--- a/src/gui/rhi/qshader_p.h
+++ b/src/gui/rhi/qshader_p.h
@@ -149,6 +149,11 @@ public:
QByteArray serialized() const;
static QShader fromSerialized(const QByteArray &data);
+ using NativeResourceBindingMap = QHash<int, QPair<int, int> >; // binding -> native_binding[, native_binding]
+ const NativeResourceBindingMap *nativeResourceBindingMap(const QShaderKey &key) const;
+ void setResourceBindingMap(const QShaderKey &key, const NativeResourceBindingMap &map);
+ void removeResourceBindingMap(const QShaderKey &key);
+
private:
QShaderPrivate *d;
friend struct QShaderPrivate;
diff --git a/src/gui/rhi/qshader_p_p.h b/src/gui/rhi/qshader_p_p.h
index 6473590e95..8c89f2b45f 100644
--- a/src/gui/rhi/qshader_p_p.h
+++ b/src/gui/rhi/qshader_p_p.h
@@ -57,6 +57,10 @@ QT_BEGIN_NAMESPACE
struct Q_GUI_EXPORT QShaderPrivate
{
+ static const int QSB_VERSION = 3;
+ static const int QSB_VERSION_WITH_BINARY_JSON = 2;
+ static const int QSB_VERSION_WITHOUT_BINDINGS = 1;
+
QShaderPrivate()
: ref(1)
{
@@ -64,9 +68,11 @@ struct Q_GUI_EXPORT QShaderPrivate
QShaderPrivate(const QShaderPrivate *other)
: ref(1),
+ qsbVersion(other->qsbVersion),
stage(other->stage),
desc(other->desc),
- shaders(other->shaders)
+ shaders(other->shaders),
+ bindings(other->bindings)
{
}
@@ -74,9 +80,11 @@ struct Q_GUI_EXPORT QShaderPrivate
static const QShaderPrivate *get(const QShader *s) { return s->d; }
QAtomicInt ref;
+ int qsbVersion = QSB_VERSION;
QShader::Stage stage = QShader::VertexStage;
QShaderDescription desc;
QHash<QShaderKey, QShaderCode> shaders;
+ QHash<QShaderKey, QShader::NativeResourceBindingMap> bindings;
};
QT_END_NAMESPACE
diff --git a/src/gui/rhi/qshaderdescription.cpp b/src/gui/rhi/qshaderdescription.cpp
index 179d5f3a07..d0f73f6aa7 100644
--- a/src/gui/rhi/qshaderdescription.cpp
+++ b/src/gui/rhi/qshaderdescription.cpp
@@ -38,6 +38,9 @@
#include <QDebug>
#include <QJsonObject>
#include <QJsonArray>
+#include <QCborValue>
+#include <QCborMap>
+#include <QCborArray>
QT_BEGIN_NAMESPACE
@@ -335,11 +338,27 @@ bool QShaderDescription::isValid() const
/*!
\return a serialized binary version of the data.
- \sa toJson()
+ \sa toJson(), toCbor()
*/
QByteArray QShaderDescription::toBinaryJson() const
{
+#if QT_CONFIG(binaryjson)
return d->makeDoc().toBinaryData();
+#else
+ qWarning("Cannot generate binary JSON from QShaderDescription due to disabled binaryjson feature");
+ return QByteArray();
+#endif
+}
+
+/*!
+ \return a serialized binary version of the data in CBOR (Concise Binary
+ Object Representation) format.
+
+ \sa QCborValue, toBinaryJson(), toJson()
+ */
+QByteArray QShaderDescription::toCbor() const
+{
+ return QCborValue::fromJsonValue(d->makeDoc().object()).toCbor();
}
/*!
@@ -347,7 +366,7 @@ QByteArray QShaderDescription::toBinaryJson() const
\note There is no deserialization method provided for JSON text.
- \sa toBinaryJson()
+ \sa toBinaryJson(), toCbor()
*/
QByteArray QShaderDescription::toJson() const
{
@@ -357,11 +376,38 @@ QByteArray QShaderDescription::toJson() const
/*!
Deserializes the given binary JSON \a data and returns a new
QShaderDescription.
+
+ \sa fromCbor()
*/
QShaderDescription QShaderDescription::fromBinaryJson(const QByteArray &data)
{
QShaderDescription desc;
+#if QT_CONFIG(binaryjson)
QShaderDescriptionPrivate::get(&desc)->loadDoc(QJsonDocument::fromBinaryData(data));
+#else
+ Q_UNUSED(data);
+ qWarning("Cannot load QShaderDescription from binary JSON due to disabled binaryjson feature");
+#endif
+ return desc;
+}
+
+/*!
+ Deserializes the given CBOR \a data and returns a new QShaderDescription.
+
+ \sa fromBinaryJson()
+ */
+QShaderDescription QShaderDescription::fromCbor(const QByteArray &data)
+{
+ QShaderDescription desc;
+ const QCborValue cbor = QCborValue::fromCbor(data);
+ if (cbor.isMap()) {
+ const QJsonDocument doc(cbor.toMap().toJsonObject());
+ QShaderDescriptionPrivate::get(&desc)->loadDoc(doc);
+ }
+ if (cbor.isArray()) {
+ const QJsonDocument doc(cbor.toArray().toJsonArray());
+ QShaderDescriptionPrivate::get(&desc)->loadDoc(doc);
+ }
return desc;
}
@@ -1119,4 +1165,106 @@ void QShaderDescriptionPrivate::loadDoc(const QJsonDocument &doc)
}
}
+/*!
+ Returns \c true if the two QShaderDescription objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription
+ */
+bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW
+{
+ if (lhs.d == rhs.d)
+ return true;
+
+ return lhs.d->inVars == rhs.d->inVars
+ && lhs.d->outVars == rhs.d->outVars
+ && lhs.d->uniformBlocks == rhs.d->uniformBlocks
+ && lhs.d->pushConstantBlocks == rhs.d->pushConstantBlocks
+ && lhs.d->storageBlocks == rhs.d->storageBlocks
+ && lhs.d->combinedImageSamplers == rhs.d->combinedImageSamplers
+ && lhs.d->storageImages == rhs.d->storageImages
+ && lhs.d->localSize == rhs.d->localSize;
+}
+
+/*!
+ Returns \c true if the two InOutVariable objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::InOutVariable
+ */
+bool operator==(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.type == rhs.type
+ && lhs.location == rhs.location
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.imageFormat == rhs.imageFormat
+ && lhs.imageFlags == rhs.imageFlags;
+}
+
+/*!
+ Returns \c true if the two BlockVariable objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::BlockVariable
+ */
+bool operator==(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.type == rhs.type
+ && lhs.offset == rhs.offset
+ && lhs.size == rhs.size
+ && lhs.arrayDims == rhs.arrayDims
+ && lhs.arrayStride == rhs.arrayStride
+ && lhs.matrixStride == rhs.matrixStride
+ && lhs.matrixIsRowMajor == rhs.matrixIsRowMajor
+ && lhs.structMembers == rhs.structMembers;
+}
+
+/*!
+ Returns \c true if the two UniformBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::UniformBlock
+ */
+bool operator==(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.blockName == rhs.blockName
+ && lhs.structName == rhs.structName
+ && lhs.size == rhs.size
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.members == rhs.members;
+}
+
+/*!
+ Returns \c true if the two PushConstantBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::PushConstantBlock
+ */
+bool operator==(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.name == rhs.name
+ && lhs.size == rhs.size
+ && lhs.members == rhs.members;
+}
+
+/*!
+ Returns \c true if the two StorageBlock objects \a lhs and \a rhs are
+ equal.
+
+ \relates QShaderDescription::StorageBlock
+ */
+bool operator==(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW
+{
+ return lhs.blockName == rhs.blockName
+ && lhs.instanceName == rhs.instanceName
+ && lhs.knownSize == rhs.knownSize
+ && lhs.binding == rhs.binding
+ && lhs.descriptorSet == rhs.descriptorSet
+ && lhs.members == rhs.members;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/rhi/qshaderdescription_p.h b/src/gui/rhi/qshaderdescription_p.h
index 5a63b998cd..e02a53dcb5 100644
--- a/src/gui/rhi/qshaderdescription_p.h
+++ b/src/gui/rhi/qshaderdescription_p.h
@@ -69,9 +69,11 @@ public:
bool isValid() const;
QByteArray toBinaryJson() const;
+ QByteArray toCbor() const;
QByteArray toJson() const;
static QShaderDescription fromBinaryJson(const QByteArray &data);
+ static QShaderDescription fromCbor(const QByteArray &data);
enum VariableType {
Unknown = 0,
@@ -263,6 +265,7 @@ private:
#ifndef QT_NO_DEBUG_STREAM
friend Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription &);
#endif
+ friend Q_GUI_EXPORT bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QShaderDescription::ImageFlags)
@@ -276,6 +279,43 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription::PushConstantBlo
Q_GUI_EXPORT QDebug operator<<(QDebug, const QShaderDescription::StorageBlock &);
#endif
+Q_GUI_EXPORT bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW;
+Q_GUI_EXPORT bool operator==(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW;
+
+inline bool operator!=(const QShaderDescription &lhs, const QShaderDescription &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::InOutVariable &lhs, const QShaderDescription::InOutVariable &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::BlockVariable &lhs, const QShaderDescription::BlockVariable &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::UniformBlock &lhs, const QShaderDescription::UniformBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::PushConstantBlock &lhs, const QShaderDescription::PushConstantBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
+inline bool operator!=(const QShaderDescription::StorageBlock &lhs, const QShaderDescription::StorageBlock &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
QT_END_NAMESPACE
#endif
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index a5c78d5372..03e14c737a 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -136,7 +136,7 @@ public:
signed char format = 0;
uchar *data = nullptr;
private:
- Q_DISABLE_COPY(Glyph);
+ Q_DISABLE_COPY(Glyph)
};
virtual ~QFontEngine();
diff --git a/src/gui/text/qfontengine_qpf2.cpp b/src/gui/text/qfontengine_qpf2.cpp
index 409176d41b..36d1cd5b9b 100644
--- a/src/gui/text/qfontengine_qpf2.cpp
+++ b/src/gui/text/qfontengine_qpf2.cpp
@@ -168,7 +168,7 @@ const QFontEngineQPF2::Glyph *QFontEngineQPF2::findGlyph(glyph_t g) const
bool QFontEngineQPF2::verifyHeader(const uchar *data, int size)
{
- VERIFY(quintptr(data) % Q_ALIGNOF(Header) == 0);
+ VERIFY(quintptr(data) % alignof(Header) == 0);
VERIFY(size >= int(sizeof(Header)));
const Header *header = reinterpret_cast<const Header *>(data);
if (header->magic[0] != 'Q'
diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp
index 2f25aea92b..9c8582b43d 100644
--- a/src/gui/text/qharfbuzzng.cpp
+++ b/src/gui/text/qharfbuzzng.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2013 Konstantin Ritt
** Contact: https://www.qt.io/licensing/
**
@@ -216,7 +216,20 @@ static const hb_script_t _qtscript_to_hbscript[] = {
HB_SCRIPT_MASARAM_GONDI,
HB_SCRIPT_NUSHU,
HB_SCRIPT_SOYOMBO,
- HB_SCRIPT_ZANABAZAR_SQUARE
+ HB_SCRIPT_ZANABAZAR_SQUARE,
+
+ // Unicode 12.1 additions (not present in harfbuzz-ng 1.7.4)
+ hb_script_t(HB_TAG('D', 'o', 'g', 'r')), // Script_Dogra
+ hb_script_t(HB_TAG('G', 'o', 'n', 'g')), // Script_GunjalaGondi
+ hb_script_t(HB_TAG('R', 'o', 'h', 'g')), // Script_HanifiRohingya
+ hb_script_t(HB_TAG('M', 'a', 'k', 'a')), // Script_Makasar
+ hb_script_t(HB_TAG('M', 'e', 'd', 'f')), // Script_Medefaidrin
+ hb_script_t(HB_TAG('S', 'o', 'g', 'o')), // Script_OldSogdian
+ hb_script_t(HB_TAG('S', 'o', 'g', 'd')), // Script_Sogdian
+ hb_script_t(HB_TAG('E', 'l', 'y', 'm')), // Script_Elymaic
+ hb_script_t(HB_TAG('N', 'a', 'n', 'd')), // Script_Nandinagari
+ hb_script_t(HB_TAG('H', 'm', 'n', 'p')), // Script_NyiakengPuachueHmong
+ hb_script_t(HB_TAG('W', 'c', 'h', 'o')), // Script_Wancho
};
Q_STATIC_ASSERT(QChar::ScriptCount == sizeof(_qtscript_to_hbscript) / sizeof(_qtscript_to_hbscript[0]));
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 22c249d604..e94f635651 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -3420,7 +3420,7 @@ QString QTextDocument::toMarkdown(QTextDocument::MarkdownFeatures features) cons
#if QT_CONFIG(textmarkdownreader)
void QTextDocument::setMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features)
{
- QTextMarkdownImporter(static_cast<QTextMarkdownImporter::Features>(int(features))).import(this, markdown);
+ QTextMarkdownImporter(features).import(this, markdown);
}
#endif
diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h
index 2fadc40cd2..7d46238257 100644
--- a/src/gui/text/qtextdocument.h
+++ b/src/gui/text/qtextdocument.h
@@ -152,7 +152,6 @@ public:
#endif
#if QT_CONFIG(textmarkdownwriter) || QT_CONFIG(textmarkdownreader)
- // Must be in sync with QTextMarkdownImporter::Features, should be in sync with #define MD_FLAG_* in md4c
enum MarkdownFeature {
MarkdownNoHTML = 0x0020 | 0x0040,
MarkdownDialectCommonMark = 0,
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 7be114adf9..ed23a4d8d9 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -2088,8 +2088,12 @@ void QTextDocumentLayoutPrivate::drawBlock(const QPointF &offset, QPainter *pain
tl->draw(painter, offset, selections, context.clip.isValid() ? (context.clip & clipRect) : clipRect);
- if ((context.cursorPosition >= blpos && context.cursorPosition < blpos + bllen)
- || (context.cursorPosition < -1 && !tl->preeditAreaText().isEmpty())) {
+ // if the block is empty and it precedes a table, do not draw the cursor.
+ // the cursor is drawn later after the table has been drawn so no need
+ // to draw it here.
+ if (!isEmptyBlockBeforeTable(frameIteratorForTextPosition(blpos))
+ && ((context.cursorPosition >= blpos && context.cursorPosition < blpos + bllen)
+ || (context.cursorPosition < -1 && !tl->preeditAreaText().isEmpty()))) {
int cpos = context.cursorPosition;
if (cpos < -1)
cpos = tl->preeditAreaPosition() - (cpos + 2);
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index b37353bf2c..209433dac5 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -2125,22 +2125,7 @@ void QTextEngine::itemize() const
}
#if QT_CONFIG(harfbuzz)
analysis = scriptAnalysis.data();
- if (qt_useHarfbuzzNG()) {
- // ### pretend HB-old behavior for now
- for (int i = 0; i < length; ++i) {
- switch (analysis[i].script) {
- case QChar::Script_Latin:
- case QChar::Script_Hiragana:
- case QChar::Script_Katakana:
- case QChar::Script_Bopomofo:
- case QChar::Script_Han:
- analysis[i].script = QChar::Script_Common;
- break;
- default:
- break;
- }
- }
- } else {
+ if (!qt_useHarfbuzzNG()) {
for (int i = 0; i < length; ++i)
analysis[i].script = hbscript_to_script(script_to_hbscript(analysis[i].script));
}
@@ -3619,7 +3604,12 @@ int QTextEngine::positionInLigature(const QScriptItem *si, int end,
int clusterLength = 0;
if (si->analysis.script != QChar::Script_Common &&
- si->analysis.script != QChar::Script_Greek) {
+ si->analysis.script != QChar::Script_Greek &&
+ si->analysis.script != QChar::Script_Latin &&
+ si->analysis.script != QChar::Script_Hiragana &&
+ si->analysis.script != QChar::Script_Katakana &&
+ si->analysis.script != QChar::Script_Bopomofo &&
+ si->analysis.script != QChar::Script_Han) {
if (glyph_pos == -1)
return si->position + end;
else {
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index fddda7f2f8..76b9757eba 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -351,7 +351,7 @@ struct QScriptItem
Q_DECL_CONSTEXPR QFixed height() const noexcept { return ascent + descent; }
private:
friend class QVector<QScriptItem>;
- QScriptItem() {}; // for QVector, don't use
+ QScriptItem() {} // for QVector, don't use
};
Q_DECLARE_TYPEINFO(QScriptItem, Q_PRIMITIVE_TYPE);
diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp
index fe7e422923..87ade1f973 100644
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -60,6 +60,22 @@ static const QChar Space = QLatin1Char(' ');
// TODO maybe eliminate the margins after all views recognize BlockQuoteLevel, CSS can format it, etc.
static const int BlockQuoteIndent = 40; // pixels, same as in QTextHtmlParserNode::initializeProperties
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureCollapseWhitespace) == MD_FLAG_COLLAPSEWHITESPACE);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeaturePermissiveATXHeaders) == MD_FLAG_PERMISSIVEATXHEADERS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeaturePermissiveURLAutoLinks) == MD_FLAG_PERMISSIVEURLAUTOLINKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeaturePermissiveMailAutoLinks) == MD_FLAG_PERMISSIVEEMAILAUTOLINKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureNoIndentedCodeBlocks) == MD_FLAG_NOINDENTEDCODEBLOCKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureNoHTMLBlocks) == MD_FLAG_NOHTMLBLOCKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureNoHTMLSpans) == MD_FLAG_NOHTMLSPANS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureTables) == MD_FLAG_TABLES);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureStrikeThrough) == MD_FLAG_STRIKETHROUGH);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeaturePermissiveWWWAutoLinks) == MD_FLAG_PERMISSIVEWWWAUTOLINKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeaturePermissiveAutoLinks) == MD_FLAG_PERMISSIVEAUTOLINKS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureTasklists) == MD_FLAG_TASKLISTS);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::FeatureNoHTML) == MD_FLAG_NOHTML);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::DialectCommonMark) == MD_DIALECT_COMMONMARK);
+Q_STATIC_ASSERT(int(QTextMarkdownImporter::DialectGitHub) == MD_DIALECT_GITHUB);
+
// --------------------------------------------------------
// MD4C callback function wrappers
@@ -122,6 +138,11 @@ QTextMarkdownImporter::QTextMarkdownImporter(QTextMarkdownImporter::Features fea
{
}
+QTextMarkdownImporter::QTextMarkdownImporter(QTextDocument::MarkdownFeatures features)
+ : QTextMarkdownImporter(static_cast<QTextMarkdownImporter::Features>(int(features)))
+{
+}
+
void QTextMarkdownImporter::import(QTextDocument *doc, const QString &markdown)
{
MD_PARSER callbacks = {
diff --git a/src/gui/text/qtextmarkdownimporter_p.h b/src/gui/text/qtextmarkdownimporter_p.h
index 35655aff8a..f450da5eb3 100644
--- a/src/gui/text/qtextmarkdownimporter_p.h
+++ b/src/gui/text/qtextmarkdownimporter_p.h
@@ -54,6 +54,7 @@
#include <QtGui/qfont.h>
#include <QtGui/qtguiglobal.h>
#include <QtGui/qpalette.h>
+#include <QtGui/qtextdocument.h>
#include <QtGui/qtextlist.h>
#include <QtCore/qstack.h>
@@ -67,27 +68,28 @@ class Q_GUI_EXPORT QTextMarkdownImporter
{
public:
enum Feature {
- // Must be kept in sync with MD_FLAG_* in md4c.h
- FeatureCollapseWhitespace = 0x0001, // MD_FLAG_COLLAPSEWHITESPACE
- FeaturePermissiveATXHeaders = 0x0002, // MD_FLAG_PERMISSIVEATXHEADERS
- FeaturePermissiveURLAutoLinks = 0x0004, // MD_FLAG_PERMISSIVEURLAUTOLINKS
- FeaturePermissiveMailAutoLinks = 0x0008, // MD_FLAG_PERMISSIVEEMAILAUTOLINKS
- FeatureNoIndentedCodeBlocks = 0x0010, // MD_FLAG_NOINDENTEDCODEBLOCKS
- FeatureNoHTMLBlocks = 0x0020, // MD_FLAG_NOHTMLBLOCKS
- FeatureNoHTMLSpans = 0x0040, // MD_FLAG_NOHTMLSPANS
- FeatureTables = 0x0100, // MD_FLAG_TABLES
- FeatureStrikeThrough = 0x0200, // MD_FLAG_STRIKETHROUGH
- FeaturePermissiveWWWAutoLinks = 0x0400, // MD_FLAG_PERMISSIVEWWWAUTOLINKS
- FeatureTasklists = 0x0800, // MD_FLAG_TASKLISTS
+ FeatureCollapseWhitespace = 0x0001,
+ FeaturePermissiveATXHeaders = 0x0002,
+ FeaturePermissiveURLAutoLinks = 0x0004,
+ FeaturePermissiveMailAutoLinks = 0x0008,
+ FeatureNoIndentedCodeBlocks = 0x0010,
+ FeatureNoHTMLBlocks = 0x0020,
+ FeatureNoHTMLSpans = 0x0040,
+ FeatureTables = 0x0100,
+ FeatureStrikeThrough = 0x0200,
+ FeaturePermissiveWWWAutoLinks = 0x0400,
+ FeatureTasklists = 0x0800,
// composite flags
- FeaturePermissiveAutoLinks = FeaturePermissiveMailAutoLinks | FeaturePermissiveURLAutoLinks | FeaturePermissiveWWWAutoLinks, // MD_FLAG_PERMISSIVEAUTOLINKS
- FeatureNoHTML = FeatureNoHTMLBlocks | FeatureNoHTMLSpans, // MD_FLAG_NOHTML
- DialectCommonMark = 0, // MD_DIALECT_COMMONMARK
- DialectGitHub = FeaturePermissiveAutoLinks | FeatureTables | FeatureStrikeThrough | FeatureTasklists // MD_DIALECT_GITHUB
+ FeaturePermissiveAutoLinks = FeaturePermissiveMailAutoLinks
+ | FeaturePermissiveURLAutoLinks | FeaturePermissiveWWWAutoLinks,
+ FeatureNoHTML = QTextDocument::MarkdownNoHTML,
+ DialectCommonMark = QTextDocument::MarkdownDialectCommonMark,
+ DialectGitHub = QTextDocument::MarkdownDialectGitHub
};
Q_DECLARE_FLAGS(Features, Feature)
QTextMarkdownImporter(Features features);
+ QTextMarkdownImporter(QTextDocument::MarkdownFeatures features);
void import(QTextDocument *doc, const QString &markdown);
diff --git a/src/gui/util/qgridlayoutengine.cpp b/src/gui/util/qgridlayoutengine.cpp
index 33adac40b2..bff5b4ddde 100644
--- a/src/gui/util/qgridlayoutengine.cpp
+++ b/src/gui/util/qgridlayoutengine.cpp
@@ -960,7 +960,7 @@ void QGridLayoutEngine::insertItem(QGridLayoutItem *item, int index)
{
maybeExpandGrid(item->lastRow(), item->lastColumn());
- if (index == -1)
+ if (index < 0 || index >= q_items.size())
q_items.append(item);
else
q_items.insert(index, item);
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 125427493d..f5d30069e8 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -1402,6 +1402,11 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
req.setAttribute(QNetworkRequest::RedirectPolicyAttribute, redirectPolicy());
}
+#if QT_CONFIG(http)
+ if (!req.transferTimeout())
+ req.setTransferTimeout(transferTimeout());
+#endif
+
if (autoDeleteReplies()
&& req.attribute(QNetworkRequest::AutoDeleteReplyOnFinishAttribute).isNull()) {
req.setAttribute(QNetworkRequest::AutoDeleteReplyOnFinishAttribute, true);
@@ -1711,6 +1716,41 @@ void QNetworkAccessManager::setAutoDeleteReplies(bool shouldAutoDelete)
d_func()->autoDeleteReplies = shouldAutoDelete;
}
+/*!
+ \since 5.15
+
+ Returns the timeout used for transfers, in milliseconds.
+
+ This timeout is zero if setTransferTimeout() hasn't been
+ called, which means that the timeout is not used.
+*/
+int QNetworkAccessManager::transferTimeout()
+{
+ return d_func()->transferTimeout;
+}
+
+/*!
+ \since 5.15
+
+ Sets \a timeout as the transfer timeout in milliseconds.
+
+ Transfers are aborted if no bytes are transferred before
+ the timeout expires. Zero means no timer is set. If no
+ argument is provided, the timeout is
+ QNetworkRequest::TransferTimeoutPreset. If this function
+ is not called, the timeout is disabled and has the
+ value zero. The request-specific non-zero timeouts set for
+ the requests that are executed override this value. This means
+ that if QNetworkAccessManager has an enabled timeout, it needs
+ to be disabled to execute a request without a timeout.
+
+ \sa transferTimeout()
+*/
+void QNetworkAccessManager::setTransferTimeout(int timeout)
+{
+ d_func()->transferTimeout = timeout;
+}
+
void QNetworkAccessManagerPrivate::_q_replyFinished()
{
Q_Q(QNetworkAccessManager);
diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h
index a74ece6d5b..8134abd6a2 100644
--- a/src/network/access/qnetworkaccessmanager.h
+++ b/src/network/access/qnetworkaccessmanager.h
@@ -169,6 +169,9 @@ public:
bool autoDeleteReplies() const;
void setAutoDeleteReplies(bool autoDelete);
+ int transferTimeout();
+ void setTransferTimeout(int timeout = QNetworkRequest::TransferTimeoutPreset);
+
Q_SIGNALS:
#ifndef QT_NO_NETWORKPROXY
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h
index 67ea2094b3..d558f61eed 100644
--- a/src/network/access/qnetworkaccessmanager_p.h
+++ b/src/network/access/qnetworkaccessmanager_p.h
@@ -229,6 +229,8 @@ public:
bool autoDeleteReplies = false;
+ int transferTimeout = 0;
+
#ifndef QT_NO_BEARERMANAGEMENT
Q_AUTOTEST_EXPORT static const QWeakPointer<const QNetworkSession> getNetworkSession(const QNetworkAccessManager *manager);
#endif
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 0bd7825186..f4b8661fe7 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -461,6 +461,7 @@ QNetworkReplyHttpImplPrivate::QNetworkReplyHttpImplPrivate()
, preMigrationDownloaded(-1)
, bytesDownloaded(0)
, bytesBuffered(0)
+ , transferTimeout(nullptr)
, downloadBufferReadPosition(0)
, downloadBufferCurrentSize(0)
, downloadZerocopyBuffer(nullptr)
@@ -1064,6 +1065,7 @@ void QNetworkReplyHttpImplPrivate::replyDownloadData(QByteArray d)
if (!isHttpRedirectResponse()) {
buffer.append(d);
bytesDownloaded += d.size();
+ setupTransferTimeout();
}
bytesBuffered += d.size();
@@ -1389,6 +1391,7 @@ void QNetworkReplyHttpImplPrivate::replyDownloadProgressSlot(qint64 bytesReceive
return;
bytesDownloaded = bytesReceived;
+ setupTransferTimeout();
downloadBufferCurrentSize = bytesReceived;
@@ -1845,7 +1848,6 @@ bool QNetworkReplyHttpImplPrivate::startWaitForSession(QSharedPointer<QNetworkSe
void QNetworkReplyHttpImplPrivate::_q_startOperation()
{
Q_Q(QNetworkReplyHttpImpl);
-
if (state == Working) // ensure this function is only being called once
return;
@@ -1885,6 +1887,7 @@ void QNetworkReplyHttpImplPrivate::_q_startOperation()
}
#endif // QT_NO_BEARERMANAGEMENT
+ setupTransferTimeout();
if (synchronous) {
state = Finished;
q_func()->setFinished(true);
@@ -2021,6 +2024,31 @@ void QNetworkReplyHttpImplPrivate::_q_bufferOutgoingData()
}
}
+void QNetworkReplyHttpImplPrivate::_q_transferTimedOut()
+{
+ Q_Q(QNetworkReplyHttpImpl);
+ q->abort();
+}
+
+void QNetworkReplyHttpImplPrivate::setupTransferTimeout()
+{
+ Q_Q(QNetworkReplyHttpImpl);
+ if (!transferTimeout) {
+ transferTimeout = new QTimer(q);
+ QObject::connect(transferTimeout, SIGNAL(timeout()),
+ q, SLOT(_q_transferTimedOut()),
+ Qt::QueuedConnection);
+ }
+ transferTimeout->stop();
+ if (request.transferTimeout()) {
+ transferTimeout->setSingleShot(true);
+ transferTimeout->setInterval(request.transferTimeout());
+ QMetaObject::invokeMethod(transferTimeout, "start",
+ Qt::QueuedConnection);
+
+ }
+}
+
#ifndef QT_NO_BEARERMANAGEMENT
void QNetworkReplyHttpImplPrivate::_q_networkSessionConnected()
{
@@ -2103,6 +2131,8 @@ void QNetworkReplyHttpImplPrivate::emitReplyUploadProgress(qint64 bytesSent, qin
if (isFinished)
return;
+ setupTransferTimeout();
+
if (!emitAllUploadProgressSignals) {
//choke signal emissions, except the first and last signals which are unconditional
if (uploadProgressSignalChoke.isValid()) {
@@ -2114,7 +2144,6 @@ void QNetworkReplyHttpImplPrivate::emitReplyUploadProgress(qint64 bytesSent, qin
uploadProgressSignalChoke.start();
}
}
-
emit q->uploadProgress(bytesSent, bytesTotal);
}
@@ -2147,7 +2176,8 @@ void QNetworkReplyHttpImplPrivate::_q_finished()
void QNetworkReplyHttpImplPrivate::finished()
{
Q_Q(QNetworkReplyHttpImpl);
-
+ if (transferTimeout)
+ transferTimeout->stop();
if (state == Finished || state == Aborted || state == WaitingForSession)
return;
diff --git a/src/network/access/qnetworkreplyhttpimpl_p.h b/src/network/access/qnetworkreplyhttpimpl_p.h
index ef69ce0653..dec0c4c589 100644
--- a/src/network/access/qnetworkreplyhttpimpl_p.h
+++ b/src/network/access/qnetworkreplyhttpimpl_p.h
@@ -59,6 +59,7 @@
#include "QtCore/qdatetime.h"
#include "QtCore/qsharedpointer.h"
#include "QtCore/qscopedpointer.h"
+#include "QtCore/qtimer.h"
#include "qatomic.h"
#include <QtNetwork/QNetworkCacheMetaData>
@@ -100,6 +101,7 @@ public:
Q_PRIVATE_SLOT(d_func(), void _q_cacheLoadReadyRead())
Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingData())
Q_PRIVATE_SLOT(d_func(), void _q_bufferOutgoingDataFinished())
+ Q_PRIVATE_SLOT(d_func(), void _q_transferTimedOut())
#ifndef QT_NO_BEARERMANAGEMENT
Q_PRIVATE_SLOT(d_func(), void _q_networkSessionConnected())
Q_PRIVATE_SLOT(d_func(), void _q_networkSessionFailed())
@@ -181,6 +183,9 @@ public:
void _q_cacheSaveDeviceAboutToClose();
+ void _q_transferTimedOut();
+ void setupTransferTimeout();
+
#ifndef QT_NO_BEARERMANAGEMENT
void _q_networkSessionConnected();
void _q_networkSessionFailed();
@@ -250,6 +255,8 @@ public:
qint64 bytesDownloaded;
qint64 bytesBuffered;
+ QTimer *transferTimeout;
+
// Only used when the "zero copy" style is used.
// Please note that the whole "zero copy" download buffer API is private right now. Do not use it.
qint64 downloadBufferReadPosition;
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 1deaa03f71..06ba3a96da 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -407,6 +407,18 @@ QT_BEGIN_NAMESPACE
based on some app-specific configuration.
*/
+/*!
+ \enum QNetworkRequest::TransferTimeoutConstant
+ \since 5.15
+
+ A constant that can be used for enabling transfer
+ timeouts with a preset value.
+
+ \value TransferTimeoutPreset The transfer timeout in milliseconds.
+ Used if setTimeout() is called
+ without an argument.
+ */
+
class QNetworkRequestPrivate: public QSharedData, public QNetworkHeadersPrivate
{
public:
@@ -417,6 +429,7 @@ public:
, sslConfiguration(0)
#endif
, maxRedirectsAllowed(maxRedirectCount)
+ , transferTimeout(0)
{ qRegisterMetaType<QNetworkRequest>(); }
~QNetworkRequestPrivate()
{
@@ -441,6 +454,7 @@ public:
#if QT_CONFIG(http)
h2Configuration = other.h2Configuration;
#endif
+ transferTimeout = other.transferTimeout;
}
inline bool operator==(const QNetworkRequestPrivate &other) const
@@ -454,6 +468,7 @@ public:
#if QT_CONFIG(http)
&& h2Configuration == other.h2Configuration
#endif
+ && transferTimeout == other.transferTimeout
;
// don't compare cookedHeaders
}
@@ -468,6 +483,7 @@ public:
#if QT_CONFIG(http)
QHttp2Configuration h2Configuration;
#endif
+ int transferTimeout;
};
/*!
@@ -891,6 +907,40 @@ void QNetworkRequest::setHttp2Configuration(const QHttp2Configuration &configura
{
d->h2Configuration = configuration;
}
+
+/*!
+ \since 5.15
+
+ Returns the timeout used for transfers, in milliseconds.
+
+ This timeout is zero if setTransferTimeout hasn't been
+ called, which means that the timeout is not used.
+
+ \sa setTransferTimeout
+*/
+int QNetworkRequest::transferTimeout()
+{
+ return d->transferTimeout;
+}
+
+/*!
+ \since 5.15
+
+ Sets \a timeout as the transfer timeout in milliseconds.
+
+ Transfers are aborted if no bytes are transferred before
+ the timeout expires. Zero means no timer is set. If no
+ argument is provided, the timeout is
+ QNetworkRequest::TransferTimeoutPreset. If this function
+ is not called, the timeout is disabled and has the
+ value zero.
+
+ \sa transferTimeout
+*/
+void QNetworkRequest::setTransferTimeout(int timeout)
+{
+ d->transferTimeout = timeout;
+}
#endif // QT_CONFIG(http) || defined(Q_CLANG_QDOC)
static QByteArray headerName(QNetworkRequest::KnownHeaders header)
diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h
index 95b5dc89b5..e9098accd9 100644
--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -126,6 +126,9 @@ public:
UserVerifiedRedirectPolicy
};
+ enum TransferTimeoutConstant {
+ TransferTimeoutPreset = 30000
+ };
QNetworkRequest();
explicit QNetworkRequest(const QUrl &url);
@@ -177,6 +180,9 @@ public:
#if QT_CONFIG(http) || defined(Q_CLANG_QDOC)
QHttp2Configuration http2Configuration() const;
void setHttp2Configuration(const QHttp2Configuration &configuration);
+
+ int transferTimeout();
+ void setTransferTimeout(int timeout = TransferTimeoutPreset);
#endif // QT_CONFIG(http) || defined(Q_CLANG_QDOC)
private:
QSharedDataPointer<QNetworkRequestPrivate> d;
diff --git a/src/network/configure.json b/src/network/configure.json
index 0ecee2c572..1fc09f67d6 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -61,11 +61,11 @@
"export": "openssl",
"test": {
"tail": [
- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10000000L",
- "# error OpenSSL >= 1.0.0 is required",
+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
+ "# error OpenSSL >= 1.1.0 is required",
"#endif",
- "#if OPENSSL_VERSION_NUMBER-0 >= 0x10002000L && !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
- "# error OpenSSL was reported as >= 1.0.2 but is missing required features, possibly it's libressl which is unsupported",
+ "#if !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
+ "# error OpenSSL was reported as >= 1.1.0 but is missing required features, possibly it's libressl which is unsupported",
"#endif"
]
},
@@ -185,19 +185,6 @@
},
"use": "network"
},
- "openssl11": {
- "label": "OpenSSL 1.1 support",
- "type": "compile",
- "test": {
- "include": "openssl/opensslv.h",
- "tail": [
- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
- "# error OpenSSL >= 1.1 is required",
- "#endif"
- ]
- },
- "use": "openssl"
- },
"dtls": {
"label": "DTLS support in OpenSSL",
"type": "compile",
@@ -335,7 +322,7 @@
},
"opensslv11": {
"label": "OpenSSL 1.1",
- "condition": "features.openssl && tests.openssl11",
+ "condition": "features.openssl",
"output": [ "publicFeature" ]
},
"sctp": {
diff --git a/src/network/kernel/qnetworkproxy_mac.cpp b/src/network/kernel/qnetworkproxy_mac.cpp
index 92f91956b9..67fda24ea6 100644
--- a/src/network/kernel/qnetworkproxy_mac.cpp
+++ b/src/network/kernel/qnetworkproxy_mac.cpp
@@ -210,16 +210,14 @@ QList<QNetworkProxy> macQueryInternal(const QNetworkProxyQuery &query)
QList<QNetworkProxy> result;
// obtain a dictionary to the proxy settings:
- CFDictionaryRef dict = SCDynamicStoreCopyProxies(NULL);
+ const QCFType<CFDictionaryRef> dict = SCDynamicStoreCopyProxies(NULL);
if (!dict) {
qWarning("QNetworkProxyFactory::systemProxyForQuery: SCDynamicStoreCopyProxies returned NULL");
return result; // failed
}
- if (isHostExcluded(dict, query.peerHostName())) {
- CFRelease(dict);
+ if (isHostExcluded(dict, query.peerHostName()))
return result; // no proxy for this host
- }
// is there a PAC enabled? If so, use it first.
CFNumberRef pacEnabled;
@@ -329,7 +327,6 @@ QList<QNetworkProxy> macQueryInternal(const QNetworkProxyQuery &query)
result << https;
}
- CFRelease(dict);
return result;
}
diff --git a/src/network/socket/qlocalserver_p.h b/src/network/socket/qlocalserver_p.h
index 92616e59ce..f331a3f10d 100644
--- a/src/network/socket/qlocalserver_p.h
+++ b/src/network/socket/qlocalserver_p.h
@@ -99,15 +99,18 @@ public:
QMap<quintptr, QTcpSocket*> socketMap;
#elif defined(Q_OS_WIN)
struct Listener {
- HANDLE handle;
+ Listener() = default;
+ HANDLE handle = nullptr;
OVERLAPPED overlapped;
- bool connected;
+ bool connected = false;
+ private:
+ Q_DISABLE_COPY(Listener)
};
void setError(const QString &function);
bool addListener();
- QList<Listener> listeners;
+ std::vector<std::unique_ptr<Listener>> listeners;
HANDLE eventHandle;
QWinEventNotifier *connectionEventNotifier;
#else
diff --git a/src/network/socket/qlocalserver_win.cpp b/src/network/socket/qlocalserver_win.cpp
index 2d71a7e730..6d92ebe93a 100644
--- a/src/network/socket/qlocalserver_win.cpp
+++ b/src/network/socket/qlocalserver_win.cpp
@@ -62,8 +62,8 @@ bool QLocalServerPrivate::addListener()
{
// The object must not change its address once the
// contained OVERLAPPED struct is passed to Windows.
- listeners << Listener();
- Listener &listener = listeners.last();
+ listeners.push_back(std::make_unique<Listener>());
+ auto &listener = listeners.back();
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
@@ -175,7 +175,7 @@ bool QLocalServerPrivate::addListener()
sa.lpSecurityDescriptor = pSD.data();
}
- listener.handle = CreateNamedPipe(
+ listener->handle = CreateNamedPipe(
reinterpret_cast<const wchar_t *>(fullServerName.utf16()), // pipe name
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, // read/write access
PIPE_TYPE_BYTE | // byte type pipe
@@ -187,32 +187,32 @@ bool QLocalServerPrivate::addListener()
3000, // client time-out
&sa);
- if (listener.handle == INVALID_HANDLE_VALUE) {
+ if (listener->handle == INVALID_HANDLE_VALUE) {
setError(QLatin1String("QLocalServerPrivate::addListener"));
- listeners.removeLast();
+ listeners.pop_back();
return false;
}
if (worldSID)
FreeSid(worldSID);
- memset(&listener.overlapped, 0, sizeof(listener.overlapped));
- listener.overlapped.hEvent = eventHandle;
+ memset(&listener->overlapped, 0, sizeof(OVERLAPPED));
+ listener->overlapped.hEvent = eventHandle;
// Beware! ConnectNamedPipe will reset the eventHandle to non-signaled.
// Callers of addListener must check all listeners for connections.
- if (!ConnectNamedPipe(listener.handle, &listener.overlapped)) {
+ if (!ConnectNamedPipe(listener->handle, &listener->overlapped)) {
switch (GetLastError()) {
case ERROR_IO_PENDING:
- listener.connected = false;
+ listener->connected = false;
break;
case ERROR_PIPE_CONNECTED:
- listener.connected = true;
+ listener->connected = true;
break;
default:
- CloseHandle(listener.handle);
+ CloseHandle(listener->handle);
setError(QLatin1String("QLocalServerPrivate::addListener"));
- listeners.removeLast();
+ listeners.pop_back();
return false;
}
} else {
@@ -284,12 +284,12 @@ void QLocalServerPrivate::_q_onNewConnection()
// Testing shows that there is indeed absolutely no guarantee which listener gets
// a client connection first, so there is no way around polling all of them.
- for (int i = 0; i < listeners.size(); ) {
- HANDLE handle = listeners[i].handle;
- if (listeners[i].connected
- || GetOverlappedResult(handle, &listeners[i].overlapped, &dummy, FALSE))
+ for (size_t i = 0; i < listeners.size(); ) {
+ HANDLE handle = listeners[i]->handle;
+ if (listeners[i]->connected
+ || GetOverlappedResult(handle, &listeners[i]->overlapped, &dummy, FALSE))
{
- listeners.removeAt(i);
+ listeners.erase(listeners.begin() + i);
addListener();
@@ -319,8 +319,8 @@ void QLocalServerPrivate::closeServer()
connectionEventNotifier->deleteLater();
connectionEventNotifier = 0;
CloseHandle(eventHandle);
- for (int i = 0; i < listeners.size(); ++i)
- CloseHandle(listeners[i].handle);
+ for (size_t i = 0; i < listeners.size(); ++i)
+ CloseHandle(listeners[i]->handle);
listeners.clear();
}
diff --git a/src/network/ssl/qdtls_openssl.cpp b/src/network/ssl/qdtls_openssl.cpp
index d9ddcceb40..25a6c5f49c 100644
--- a/src/network/ssl/qdtls_openssl.cpp
+++ b/src/network/ssl/qdtls_openssl.cpp
@@ -156,8 +156,6 @@ void delete_connection(SSL *ssl)
q_SSL_free(ssl);
}
-#if QT_CONFIG(opensslv11)
-
void delete_BIO_ADDR(BIO_ADDR *bio)
{
// A deleter for QSharedPointer<BIO_ADDR>
@@ -172,8 +170,6 @@ void delete_bio_method(BIO_METHOD *method)
q_BIO_meth_free(method);
}
-#endif // openssl 1.1
-
// The 'deleter' for QScopedPointer<BIO>.
struct bio_deleter
{
@@ -411,10 +407,6 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
auto dtls = static_cast<dtlsopenssl::DtlsState *>(q_BIO_get_app_data(bio));
Q_ASSERT(dtls);
-#if !QT_CONFIG(opensslv11)
- Q_UNUSED(num)
-#endif
-
switch (cmd) {
// Let's start from the most generic ones, in the order in which they are
// documented (as BIO_ctrl):
@@ -578,11 +570,9 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
// so that OpenSSL does not start suddenly fragmenting the first
// client hello (which will result in DTLSv1_listen rejecting it).
return 0;
-#if QT_CONFIG(opensslv11)
case BIO_CTRL_DGRAM_SET_PEEK_MODE:
dtls->peeking = num;
return 1;
-#endif
default:;
#if QT_DTLS_VERBOSE
qWarning() << "Unexpected cmd (" << cmd << ")";
@@ -594,15 +584,11 @@ extern "C" long q_dgram_ctrl(BIO *bio, int cmd, long num, void *ptr)
extern "C" int q_dgram_create(BIO *bio)
{
-#if QT_CONFIG(opensslv11)
+
q_BIO_set_init(bio, 1);
-#else
- bio->init = 1;
-#endif
// With a custom BIO you'd normally allocate some implementation-specific
- // data and append it to this new BIO: bio->ptr = ... (pre 1.0.2) or
- // BIO_set_data (1.1). We don't need it and thus q_dgram_destroy below
- // is a noop.
+ // data and append it to this new BIO using BIO_set_data. We don't need
+ // it and thus q_dgram_destroy below is a noop.
return 1;
}
@@ -614,39 +600,6 @@ extern "C" int q_dgram_destroy(BIO *bio)
const char * const qdtlsMethodName = "qdtlsbio";
-#if !QT_CONFIG(opensslv11)
-
-/*
-typedef struct bio_method_st {
- int type;
- const char *name;
- int (*bwrite) (BIO *, const char *, int);
- int (*bread) (BIO *, char *, int);
- int (*bputs) (BIO *, const char *);
- int (*bgets) (BIO *, char *, int);
- long (*ctrl) (BIO *, int, long, void *);
- int (*create) (BIO *);
- int (*destroy) (BIO *);
- long (*callback_ctrl) (BIO *, int, bio_info_cb *);
-} BIO_METHOD;
-*/
-
-bio_method_st qdtlsCustomBioMethod =
-{
- BIO_TYPE_DGRAM,
- qdtlsMethodName,
- q_dgram_write,
- q_dgram_read,
- q_dgram_puts,
- nullptr,
- q_dgram_ctrl,
- q_dgram_create,
- q_dgram_destroy,
- nullptr
-};
-
-#endif // openssl < 1.1
-
} // namespace dtlsbio
namespace dtlsopenssl
@@ -777,7 +730,6 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
Q_ASSERT(dtlsBase);
Q_ASSERT(tlsContext.data() && tlsConnection.data());
-#if QT_CONFIG(opensslv11)
BioMethod customMethod(q_BIO_meth_new(BIO_TYPE_DGRAM, dtlsbio::qdtlsMethodName),
dtlsutil::delete_bio_method);
if (!customMethod.data()) {
@@ -793,9 +745,6 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
q_BIO_meth_set_write(biom, dtlsbio::q_dgram_write);
q_BIO_meth_set_puts(biom, dtlsbio::q_dgram_puts);
q_BIO_meth_set_ctrl(biom, dtlsbio::q_dgram_ctrl);
-#else
- BIO_METHOD *biom = &dtlsbio::qdtlsCustomBioMethod;
-#endif // openssl 1.1
QScopedPointer<BIO, dtlsutil::bio_deleter> newBio(q_BIO_new(biom));
BIO *bio = newBio.data();
@@ -808,9 +757,7 @@ bool DtlsState::initBIO(QDtlsBasePrivate *dtlsBase)
q_SSL_set_bio(tlsConnection.data(), bio, bio);
newBio.take();
-#if QT_CONFIG(opensslv11)
bioMethod.swap(customMethod);
-#endif // openssl 1.1
return true;
}
@@ -869,7 +816,6 @@ bool QDtlsClientVerifierOpenSSL::verifyClient(QUdpSocket *socket, const QByteArr
dtls.hashAlgorithm = hashAlgorithm;
Q_ASSERT(dtls.tlsConnection.data());
-#if QT_CONFIG(opensslv11)
QSharedPointer<BIO_ADDR> peer(q_BIO_ADDR_new(), dtlsutil::delete_BIO_ADDR);
if (!peer.data()) {
setDtlsError(QDtlsError::TlsInitializationError,
@@ -883,10 +829,7 @@ bool QDtlsClientVerifierOpenSSL::verifyClient(QUdpSocket *socket, const QByteArr
setDtlsError(QDtlsError::TlsFatalError, QSslSocketBackendPrivate::getErrorsFromOpenSsl());
return false;
}
-#else
- qt_sockaddr peer;
- const int ret = q_DTLSv1_listen(dtls.tlsConnection.data(), &peer);
-#endif
+
if (ret > 0) {
verifiedClientHello = dgram;
return true;
@@ -953,7 +896,6 @@ bool QDtlsPrivateOpenSSL::startHandshake(QUdpSocket *socket, const QByteArray &d
// surprise DTLS/OpenSSL (such a message would be disregarded as
// 'stale or future' in SSL_accept otherwise):
int result = 0;
-#if QT_CONFIG(opensslv11)
QSharedPointer<BIO_ADDR> peer(q_BIO_ADDR_new(), dtlsutil::delete_BIO_ADDR);
if (!peer.data()) {
setDtlsError(QDtlsError::TlsInitializationError,
@@ -967,10 +909,7 @@ bool QDtlsPrivateOpenSSL::startHandshake(QUdpSocket *socket, const QByteArray &d
dtls.writeSuppressed = true;
result = q_DTLSv1_listen(dtls.tlsConnection.data(), peer.data());
dtls.writeSuppressed = false;
-#else
- qt_sockaddr peer;
- result = q_DTLSv1_listen(dtls.tlsConnection.data(), &peer);
-#endif
+
if (result <= 0) {
setDtlsError(QDtlsError::TlsFatalError,
QDtls::tr("Cannot start the handshake, verified client hello expected"));
diff --git a/src/network/ssl/qdtls_openssl_p.h b/src/network/ssl/qdtls_openssl_p.h
index 9306fa2433..35e9f29a5d 100644
--- a/src/network/ssl/qdtls_openssl_p.h
+++ b/src/network/ssl/qdtls_openssl_p.h
@@ -84,9 +84,8 @@ namespace dtlsopenssl
class DtlsState
{
public:
- // Note, bioMethod, if allocated (i.e. OpenSSL version >= 1.1) _must_
- // outlive BIOs it was used to create. Thus the order of declarations
- // here matters.
+ // Note, bioMethod _must_ outlive BIOs it was used to create. Thus
+ // the order of declarations here matters.
using BioMethod = QSharedPointer<BIO_METHOD>;
BioMethod bioMethod;
diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp
index 8566d78aef..562aa4f518 100644
--- a/src/network/ssl/qsslcontext_openssl.cpp
+++ b/src/network/ssl/qsslcontext_openssl.cpp
@@ -3,6 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
** Copyright (C) 2014 Governikus GmbH & Co. KG.
+** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
@@ -39,21 +40,49 @@
**
****************************************************************************/
-
#include <QtNetwork/qsslsocket.h>
+#include <QtNetwork/qssldiffiehellmanparameters.h>
#include "private/qssl_p.h"
+#include "private/qsslsocket_p.h"
#include "private/qsslcontext_openssl_p.h"
#include "private/qsslsocket_openssl_p.h"
#include "private/qsslsocket_openssl_symbols_p.h"
+#include "private/qssldiffiehellmanparameters_p.h"
+
+#include <vector>
QT_BEGIN_NAMESPACE
+// defined in qsslsocket_openssl.cpp:
+extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
+extern QString getErrorsFromOpenSsl();
+
+#if QT_CONFIG(dtls)
+// defined in qdtls_openssl.cpp:
+namespace dtlscallbacks
+{
+extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
+extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
+ unsigned *cookieLength);
+extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
+ unsigned cookieLength);
+}
+#endif // dtls
+
+// Defined in qsslsocket.cpp
+QList<QSslCipher> q_getDefaultDtlsCiphers();
+
static inline QString msgErrorSettingBackendConfig(const QString &why)
{
return QSslSocket::tr("Error when setting the OpenSSL configuration (%1)").arg(why);
}
+static inline QString msgErrorSettingEllipticCurves(const QString &why)
+{
+ return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
+}
+
QSslContext::QSslContext()
: ctx(nullptr),
pkey(nullptr),
@@ -89,7 +118,7 @@ QSharedPointer<QSslContext> QSslContext::sharedFromConfiguration(QSslSocket::Ssl
return sslContext;
}
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
static int next_proto_cb(SSL *, unsigned char **out, unsigned char *outlen,
const unsigned char *in, unsigned int inlen, void *arg)
@@ -126,7 +155,9 @@ QSslContext::NPNContext QSslContext::npnContext() const
{
return m_npnContext;
}
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
+
// Needs to be deleted by caller
SSL* QSslContext::createSsl()
@@ -150,7 +181,7 @@ SSL* QSslContext::createSsl()
}
}
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
QList<QByteArray> protocols = sslConfiguration.d->nextAllowedProtocols;
if (!protocols.isEmpty()) {
m_supportedNPNVersions.clear();
@@ -168,27 +199,22 @@ SSL* QSslContext::createSsl()
m_npnContext.data = reinterpret_cast<unsigned char *>(m_supportedNPNVersions.data());
m_npnContext.len = m_supportedNPNVersions.count();
m_npnContext.status = QSslConfiguration::NextProtocolNegotiationNone;
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) {
- // Callback's type has a parameter 'const unsigned char ** out'
- // since it was introduced in 1.0.2. Internally, OpenSSL's own code
- // (tests/examples) cast it to unsigned char * (since it's 'out').
- // We just re-use our NPN callback and cast here:
- typedef int (*alpn_callback_t) (SSL *, const unsigned char **, unsigned char *,
- const unsigned char *, unsigned int, void *);
- // With ALPN callback is for a server side only, for a client m_npnContext.status
- // will stay in NextProtocolNegotiationNone.
- q_SSL_CTX_set_alpn_select_cb(ctx, alpn_callback_t(next_proto_cb), &m_npnContext);
- // Client:
- q_SSL_set_alpn_protos(ssl, m_npnContext.data, m_npnContext.len);
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-
+ // Callback's type has a parameter 'const unsigned char ** out'
+ // since it was introduced in 1.0.2. Internally, OpenSSL's own code
+ // (tests/examples) cast it to unsigned char * (since it's 'out').
+ // We just re-use our NPN callback and cast here:
+ typedef int (*alpn_callback_t) (SSL *, const unsigned char **, unsigned char *,
+ const unsigned char *, unsigned int, void *);
+ // With ALPN callback is for a server side only, for a client m_npnContext.status
+ // will stay in NextProtocolNegotiationNone.
+ q_SSL_CTX_set_alpn_select_cb(ctx, alpn_callback_t(next_proto_cb), &m_npnContext);
+ // Client:
+ q_SSL_set_alpn_protos(ssl, m_npnContext.data, m_npnContext.len);
// And in case our peer does not support ALPN, but supports NPN:
q_SSL_CTX_set_next_proto_select_cb(ctx, next_proto_cb, &m_npnContext);
}
}
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
return ssl;
}
@@ -247,6 +273,392 @@ QString QSslContext::errorString() const
return errorStr;
}
+void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode,
+ const QSslConfiguration &configuration,
+ bool allowRootCertOnDemandLoading)
+{
+ sslContext->sslConfiguration = configuration;
+ sslContext->errorCode = QSslError::NoError;
+
+ bool client = (mode == QSslSocket::SslClientMode);
+
+ bool reinitialized = false;
+ bool unsupportedProtocol = false;
+ bool isDtls = false;
+init_context:
+ if (sslContext->sslConfiguration.protocol() == QSsl::SslV2) {
+ // SSL 2 is no longer supported, but chosen deliberately -> error
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ } else if (sslContext->sslConfiguration.protocol() == QSsl::SslV3) {
+ // SSL 3 is no longer supported, but chosen deliberately -> error
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ } else {
+ switch (sslContext->sslConfiguration.protocol()) {
+ case QSsl::DtlsV1_0:
+ case QSsl::DtlsV1_0OrLater:
+ case QSsl::DtlsV1_2:
+ case QSsl::DtlsV1_2OrLater:
+#if QT_CONFIG(dtls)
+ isDtls = true;
+ sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
+#else // dtls
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
+
+#endif // dtls
+ break;
+ case QSsl::TlsV1_3:
+ case QSsl::TlsV1_3OrLater:
+#if !defined(TLS1_3_VERSION)
+ qCWarning(lcSsl, "TLS 1.3 is not supported");
+ sslContext->ctx = nullptr;
+ unsupportedProtocol = true;
+ break;
+#endif // TLS1_3_VERSION
+ default:
+ // The ssl options will actually control the supported methods
+ sslContext->ctx = q_SSL_CTX_new(client ? q_TLS_client_method() : q_TLS_server_method());
+ }
+ }
+
+ if (!sslContext->ctx) {
+ // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
+ // by re-initializing the library.
+ if (!reinitialized) {
+ reinitialized = true;
+ if (q_OPENSSL_init_ssl(0, nullptr) == 1)
+ goto init_context;
+ }
+
+ sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
+ unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
+ );
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ const long anyVersion =
+#if QT_CONFIG(dtls)
+ isDtls ? DTLS_ANY_VERSION : TLS_ANY_VERSION;
+#else
+ TLS_ANY_VERSION;
+#endif // dtls
+ long minVersion = anyVersion;
+ long maxVersion = anyVersion;
+
+ switch (sslContext->sslConfiguration.protocol()) {
+ case QSsl::TlsV1_0:
+ minVersion = TLS1_VERSION;
+ maxVersion = TLS1_VERSION;
+ break;
+ case QSsl::TlsV1_1:
+ minVersion = TLS1_1_VERSION;
+ maxVersion = TLS1_1_VERSION;
+ break;
+ case QSsl::TlsV1_2:
+ minVersion = TLS1_2_VERSION;
+ maxVersion = TLS1_2_VERSION;
+ break;
+ case QSsl::TlsV1_3:
+#ifdef TLS1_3_VERSION
+ minVersion = TLS1_3_VERSION;
+ maxVersion = TLS1_3_VERSION;
+#else
+ // This protocol is not supported by OpenSSL 1.1 and we handle
+ // it as an error (see the code above).
+ Q_UNREACHABLE();
+#endif // TLS1_3_VERSION
+ break;
+ // Ranges:
+ case QSsl::TlsV1SslV3:
+ case QSsl::AnyProtocol:
+ case QSsl::SecureProtocols:
+ case QSsl::TlsV1_0OrLater:
+ minVersion = TLS1_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::TlsV1_1OrLater:
+ minVersion = TLS1_1_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::TlsV1_2OrLater:
+ minVersion = TLS1_2_VERSION;
+ maxVersion = 0;
+ break;
+ case QSsl::DtlsV1_0:
+ minVersion = DTLS1_VERSION;
+ maxVersion = DTLS1_VERSION;
+ break;
+ case QSsl::DtlsV1_0OrLater:
+ minVersion = DTLS1_VERSION;
+ maxVersion = DTLS_MAX_VERSION;
+ break;
+ case QSsl::DtlsV1_2:
+ minVersion = DTLS1_2_VERSION;
+ maxVersion = DTLS1_2_VERSION;
+ break;
+ case QSsl::DtlsV1_2OrLater:
+ minVersion = DTLS1_2_VERSION;
+ maxVersion = DTLS_MAX_VERSION;
+ break;
+ case QSsl::TlsV1_3OrLater:
+#ifdef TLS1_3_VERSION
+ minVersion = TLS1_3_VERSION;
+ maxVersion = 0;
+ break;
+#else
+ // This protocol is not supported by OpenSSL 1.1 and we handle
+ // it as an error (see the code above).
+ Q_UNREACHABLE();
+ break;
+#endif // TLS1_3_VERSION
+ case QSsl::SslV2:
+ case QSsl::SslV3:
+ // These protocols are not supported, and we handle
+ // them as an error (see the code above).
+ Q_UNREACHABLE();
+ break;
+ case QSsl::UnknownProtocol:
+ break;
+ }
+
+ if (minVersion != anyVersion
+ && !q_SSL_CTX_set_min_proto_version(sslContext->ctx, minVersion)) {
+ sslContext->errorStr = QSslSocket::tr("Error while setting the minimal protocol version");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (maxVersion != anyVersion
+ && !q_SSL_CTX_set_max_proto_version(sslContext->ctx, maxVersion)) {
+ sslContext->errorStr = QSslSocket::tr("Error while setting the maximum protocol version");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // Enable bug workarounds.
+ long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
+ q_SSL_CTX_set_options(sslContext->ctx, options);
+
+ // Tell OpenSSL to release memory early
+ // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
+ q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
+
+ auto filterCiphers = [](const QList<QSslCipher> &ciphers, bool selectTls13)
+ {
+ QByteArray cipherString;
+ bool first = true;
+
+ for (const QSslCipher &cipher : qAsConst(ciphers)) {
+ const bool isTls13Cipher = cipher.protocol() == QSsl::TlsV1_3 || cipher.protocol() == QSsl::TlsV1_3OrLater;
+ if (selectTls13 != isTls13Cipher)
+ continue;
+
+ if (first)
+ first = false;
+ else
+ cipherString.append(':');
+ cipherString.append(cipher.name().toLatin1());
+ }
+ return cipherString;
+ };
+
+ // Initialize ciphers
+ QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
+ if (ciphers.isEmpty())
+ ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
+
+ const QByteArray preTls13Ciphers = filterCiphers(ciphers, false);
+
+ if (preTls13Ciphers.size()) {
+ if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, preTls13Ciphers.data())) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ }
+
+ const QByteArray tls13Ciphers = filterCiphers(ciphers, true);
+#ifdef TLS1_3_VERSION
+ if (tls13Ciphers.size()) {
+ if (!q_SSL_CTX_set_ciphersuites(sslContext->ctx, tls13Ciphers.data())) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ }
+#endif // TLS1_3_VERSION
+ if (!preTls13Ciphers.size() && !tls13Ciphers.size()) {
+ sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QStringLiteral(""));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ const QDateTime now = QDateTime::currentDateTimeUtc();
+
+ // Add all our CAs to this store.
+ const auto caCertificates = sslContext->sslConfiguration.caCertificates();
+ for (const QSslCertificate &caCertificate : caCertificates) {
+ // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
+ //
+ // If several CA certificates matching the name, key identifier, and
+ // serial number condition are available, only the first one will be
+ // examined. This may lead to unexpected results if the same CA
+ // certificate is available with different expiration dates. If a
+ // ``certificate expired'' verification error occurs, no other
+ // certificate will be searched. Make sure to not have expired
+ // certificates mixed with valid ones.
+ //
+ // See also: QSslSocketBackendPrivate::verify()
+ if (caCertificate.expiryDate() >= now) {
+ q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
+ }
+ }
+
+ if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
+ // tell OpenSSL the directories where to look up the root certs on demand
+ const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
+ for (const QByteArray &unixDir : unixDirs)
+ q_SSL_CTX_load_verify_locations(sslContext->ctx, nullptr, unixDir.constData());
+ }
+
+ if (!sslContext->sslConfiguration.localCertificate().isNull()) {
+ // Require a private key as well.
+ if (sslContext->sslConfiguration.privateKey().isNull()) {
+ sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // Load certificate
+ if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
+ sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
+ sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
+ } else {
+ // Load private key
+ sslContext->pkey = q_EVP_PKEY_new();
+ // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
+ // this lead to a memory leak. Now we use the *_set1_* functions which do not
+ // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
+ if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
+ q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
+ else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
+ q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
+#ifndef OPENSSL_NO_EC
+ else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
+ q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
+#endif
+ }
+
+ if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
+ sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+ if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
+ sslContext->pkey = nullptr; // Don't free the private key, it belongs to QSslKey
+
+ // Check if the certificate matches the private key.
+ if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
+ sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ // If we have any intermediate certificates then we need to add them to our chain
+ bool first = true;
+ for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
+ if (first) {
+ first = false;
+ continue;
+ }
+ q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
+ q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
+ }
+ }
+
+ // Initialize peer verification.
+ if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
+ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, nullptr);
+ } else {
+ q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
+#if QT_CONFIG(dtls)
+ isDtls ? dtlscallbacks::q_X509DtlsCallback :
+#endif // dtls
+ q_X509Callback);
+ }
+
+#if QT_CONFIG(dtls)
+ if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
+ q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
+ q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, dtlscallbacks::q_verify_cookie_callback);
+ }
+#endif // dtls
+
+ // Set verification depth.
+ if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
+ q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
+
+ // set persisted session if the user set it
+ if (!configuration.sessionTicket().isEmpty())
+ sslContext->setSessionASN1(configuration.sessionTicket());
+
+ // Set temp DH params
+ QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
+
+ if (!dhparams.isValid()) {
+ sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+
+ if (!dhparams.isEmpty()) {
+ const QByteArray &params = dhparams.d->derData;
+ const char *ptr = params.constData();
+ DH *dh = q_d2i_DHparams(nullptr, reinterpret_cast<const unsigned char **>(&ptr),
+ params.length());
+ if (dh == nullptr)
+ qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
+ q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
+ q_DH_free(dh);
+ }
+
+#ifndef OPENSSL_NO_PSK
+ if (!client)
+ q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
+#endif // !OPENSSL_NO_PSK
+
+ const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
+ if (!qcurves.isEmpty()) {
+#ifdef OPENSSL_NO_EC
+ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version with disabled elliptic curves"));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+#else
+ // Set the curves to be used.
+ std::vector<int> curves;
+ curves.reserve(qcurves.size());
+ for (const auto &sslCurve : qcurves)
+ curves.push_back(sslCurve.id);
+ if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, long(curves.size()), &curves[0])) {
+ sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ return;
+ }
+#endif
+ }
+
+ applyBackendConfig(sslContext);
+}
+
#if QT_CONFIG(ocsp)
extern "C" int qt_OCSP_status_server_callback(SSL *ssl, void *); // Defined in qsslsocket_openssl.cpp.
#endif // ocsp
@@ -269,65 +681,55 @@ void QSslContext::applyBackendConfig(QSslContext *sslContext)
}
#endif // ocsp
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10002000L) {
- QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
- if (cctx) {
- q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
- q_SSL_CONF_CTX_set_flags(cctx.data(), SSL_CONF_FLAG_FILE);
-
- for (auto i = conf.constBegin(); i != conf.constEnd(); ++i) {
- if (i.key() == "Qt-OCSP-response") // This never goes to SSL_CONF_cmd().
- continue;
-
- if (!i.value().canConvert(QMetaType::QByteArray)) {
- sslContext->errorCode = QSslError::UnspecifiedError;
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Expecting QByteArray for %1").arg(
- QString::fromUtf8(i.key())));
- return;
- }
-
- const QByteArray &value = i.value().toByteArray();
- const int result = q_SSL_CONF_cmd(cctx.data(), i.key().constData(), value.constData());
- if (result == 2)
- continue;
+ QSharedPointer<SSL_CONF_CTX> cctx(q_SSL_CONF_CTX_new(), &q_SSL_CONF_CTX_free);
+ if (cctx) {
+ q_SSL_CONF_CTX_set_ssl_ctx(cctx.data(), sslContext->ctx);
+ q_SSL_CONF_CTX_set_flags(cctx.data(), SSL_CONF_FLAG_FILE);
+
+ for (auto i = conf.constBegin(); i != conf.constEnd(); ++i) {
+ if (i.key() == "Qt-OCSP-response") // This never goes to SSL_CONF_cmd().
+ continue;
+ if (!i.value().canConvert(QMetaType::QByteArray)) {
sslContext->errorCode = QSslError::UnspecifiedError;
- switch (result) {
- case 0:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("An error occurred attempting to set %1 to %2").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- case 1:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Wrong value for %1 (%2)").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- default:
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("Unrecognized command %1 = %2").arg(
- QString::fromUtf8(i.key()), QString::fromUtf8(value)));
- return;
- }
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Expecting QByteArray for %1").arg(
+ QString::fromUtf8(i.key())));
+ return;
}
- if (q_SSL_CONF_CTX_finish(cctx.data()) == 0) {
- sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
- sslContext->errorCode = QSslError::UnspecifiedError;
+ const QByteArray &value = i.value().toByteArray();
+ const int result = q_SSL_CONF_cmd(cctx.data(), i.key().constData(), value.constData());
+ if (result == 2)
+ continue;
+
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ switch (result) {
+ case 0:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("An error occurred attempting to set %1 to %2").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
+ case 1:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Wrong value for %1 (%2)").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
+ default:
+ sslContext->errorStr = msgErrorSettingBackendConfig(
+ QSslSocket::tr("Unrecognized command %1 = %2").arg(
+ QString::fromUtf8(i.key()), QString::fromUtf8(value)));
+ return;
}
- } else {
- sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- }
- } else
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
- {
- // specific algorithms requested, but not possible to set
+ }
+
+ if (q_SSL_CONF_CTX_finish(cctx.data()) == 0) {
+ sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_finish() failed"));
+ sslContext->errorCode = QSslError::UnspecifiedError;
+ }
+ } else {
+ sslContext->errorStr = msgErrorSettingBackendConfig(QSslSocket::tr("SSL_CONF_CTX_new() failed"));
sslContext->errorCode = QSslError::UnspecifiedError;
- sslContext->errorStr = msgErrorSettingBackendConfig(
- QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
}
}
diff --git a/src/network/ssl/qsslcontext_openssl11.cpp b/src/network/ssl/qsslcontext_openssl11.cpp
deleted file mode 100644
index db023b7331..0000000000
--- a/src/network/ssl/qsslcontext_openssl11.cpp
+++ /dev/null
@@ -1,467 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2014 Governikus GmbH & Co. KG.
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtNetwork/qsslsocket.h>
-#include <QtNetwork/qssldiffiehellmanparameters.h>
-
-#include "private/qssl_p.h"
-#include "private/qsslcontext_openssl_p.h"
-#include "private/qsslsocket_p.h"
-#include "private/qsslsocket_openssl_p.h"
-#include "private/qsslsocket_openssl_symbols_p.h"
-#include "private/qssldiffiehellmanparameters_p.h"
-
-#include <vector>
-
-QT_BEGIN_NAMESPACE
-
-// defined in qsslsocket_openssl.cpp:
-extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
-extern QString getErrorsFromOpenSsl();
-
-#if QT_CONFIG(dtls)
-// defined in qdtls_openssl.cpp:
-namespace dtlscallbacks
-{
-extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
-extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
- unsigned *cookieLength);
-extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
- unsigned cookieLength);
-}
-#endif // dtls
-
-static inline QString msgErrorSettingEllipticCurves(const QString &why)
-{
- return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
-}
-
-// Defined in qsslsocket.cpp
-QList<QSslCipher> q_getDefaultDtlsCiphers();
-
-// static
-void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
-{
- sslContext->sslConfiguration = configuration;
- sslContext->errorCode = QSslError::NoError;
-
- bool client = (mode == QSslSocket::SslClientMode);
-
- bool reinitialized = false;
- bool unsupportedProtocol = false;
- bool isDtls = false;
-init_context:
- if (sslContext->sslConfiguration.protocol() == QSsl::SslV2) {
- // SSL 2 is no longer supported, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- } else if (sslContext->sslConfiguration.protocol() == QSsl::SslV3) {
- // SSL 3 is no longer supported, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- } else {
- switch (sslContext->sslConfiguration.protocol()) {
- case QSsl::DtlsV1_0:
- case QSsl::DtlsV1_0OrLater:
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
-#if QT_CONFIG(dtls)
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
-#else // dtls
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
-
-#endif // dtls
- break;
- case QSsl::TlsV1_3:
- case QSsl::TlsV1_3OrLater:
-#if !defined(TLS1_3_VERSION)
- qCWarning(lcSsl, "TLS 1.3 is not supported");
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- break;
-#endif // TLS1_3_VERSION
- default:
- // The ssl options will actually control the supported methods
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLS_client_method() : q_TLS_server_method());
- }
- }
-
- if (!sslContext->ctx) {
- // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
- // by re-initializing the library.
- if (!reinitialized) {
- reinitialized = true;
- if (q_OPENSSL_init_ssl(0, nullptr) == 1)
- goto init_context;
- }
-
- sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
- unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
- );
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const long anyVersion =
-#if QT_CONFIG(dtls)
- isDtls ? DTLS_ANY_VERSION : TLS_ANY_VERSION;
-#else
- TLS_ANY_VERSION;
-#endif // dtls
- long minVersion = anyVersion;
- long maxVersion = anyVersion;
-
- switch (sslContext->sslConfiguration.protocol()) {
- case QSsl::TlsV1_0:
- minVersion = TLS1_VERSION;
- maxVersion = TLS1_VERSION;
- break;
- case QSsl::TlsV1_1:
- minVersion = TLS1_1_VERSION;
- maxVersion = TLS1_1_VERSION;
- break;
- case QSsl::TlsV1_2:
- minVersion = TLS1_2_VERSION;
- maxVersion = TLS1_2_VERSION;
- break;
- case QSsl::TlsV1_3:
-#ifdef TLS1_3_VERSION
- minVersion = TLS1_3_VERSION;
- maxVersion = TLS1_3_VERSION;
-#else
- // This protocol is not supported by OpenSSL 1.1 and we handle
- // it as an error (see the code above).
- Q_UNREACHABLE();
-#endif // TLS1_3_VERSION
- break;
- // Ranges:
- case QSsl::TlsV1SslV3:
- case QSsl::AnyProtocol:
- case QSsl::SecureProtocols:
- case QSsl::TlsV1_0OrLater:
- minVersion = TLS1_VERSION;
- maxVersion = 0;
- break;
- case QSsl::TlsV1_1OrLater:
- minVersion = TLS1_1_VERSION;
- maxVersion = 0;
- break;
- case QSsl::TlsV1_2OrLater:
- minVersion = TLS1_2_VERSION;
- maxVersion = 0;
- break;
- case QSsl::DtlsV1_0:
- minVersion = DTLS1_VERSION;
- maxVersion = DTLS1_VERSION;
- break;
- case QSsl::DtlsV1_0OrLater:
- minVersion = DTLS1_VERSION;
- maxVersion = DTLS_MAX_VERSION;
- break;
- case QSsl::DtlsV1_2:
- minVersion = DTLS1_2_VERSION;
- maxVersion = DTLS1_2_VERSION;
- break;
- case QSsl::DtlsV1_2OrLater:
- minVersion = DTLS1_2_VERSION;
- maxVersion = DTLS_MAX_VERSION;
- break;
- case QSsl::TlsV1_3OrLater:
-#ifdef TLS1_3_VERSION
- minVersion = TLS1_3_VERSION;
- maxVersion = 0;
- break;
-#else
- // This protocol is not supported by OpenSSL 1.1 and we handle
- // it as an error (see the code above).
- Q_UNREACHABLE();
- break;
-#endif // TLS1_3_VERSION
- case QSsl::SslV2:
- case QSsl::SslV3:
- // These protocols are not supported, and we handle
- // them as an error (see the code above).
- Q_UNREACHABLE();
- break;
- case QSsl::UnknownProtocol:
- break;
- }
-
- if (minVersion != anyVersion
- && !q_SSL_CTX_set_min_proto_version(sslContext->ctx, minVersion)) {
- sslContext->errorStr = QSslSocket::tr("Error while setting the minimal protocol version");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (maxVersion != anyVersion
- && !q_SSL_CTX_set_max_proto_version(sslContext->ctx, maxVersion)) {
- sslContext->errorStr = QSslSocket::tr("Error while setting the maximum protocol version");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Enable bug workarounds.
- long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
- q_SSL_CTX_set_options(sslContext->ctx, options);
-
- // Tell OpenSSL to release memory early
- // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
- q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
-
- auto filterCiphers = [](const QList<QSslCipher> &ciphers, bool selectTls13)
- {
- QByteArray cipherString;
- bool first = true;
-
- for (const QSslCipher &cipher : qAsConst(ciphers)) {
- const bool isTls13Cipher = cipher.protocol() == QSsl::TlsV1_3 || cipher.protocol() == QSsl::TlsV1_3OrLater;
- if (selectTls13 != isTls13Cipher)
- continue;
-
- if (first)
- first = false;
- else
- cipherString.append(':');
- cipherString.append(cipher.name().toLatin1());
- }
- return cipherString;
- };
-
- // Initialize ciphers
- QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
- if (ciphers.isEmpty())
- ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
-
- const QByteArray preTls13Ciphers = filterCiphers(ciphers, false);
-
- if (preTls13Ciphers.size()) {
- if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, preTls13Ciphers.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-
- const QByteArray tls13Ciphers = filterCiphers(ciphers, true);
-#ifdef TLS1_3_VERSION
- if (tls13Ciphers.size()) {
- if (!q_SSL_CTX_set_ciphersuites(sslContext->ctx, tls13Ciphers.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-#endif // TLS1_3_VERSION
- if (!preTls13Ciphers.size() && !tls13Ciphers.size()) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QStringLiteral(""));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const QDateTime now = QDateTime::currentDateTimeUtc();
-
- // Add all our CAs to this store.
- const auto caCertificates = sslContext->sslConfiguration.caCertificates();
- for (const QSslCertificate &caCertificate : caCertificates) {
- // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
- //
- // If several CA certificates matching the name, key identifier, and
- // serial number condition are available, only the first one will be
- // examined. This may lead to unexpected results if the same CA
- // certificate is available with different expiration dates. If a
- // ``certificate expired'' verification error occurs, no other
- // certificate will be searched. Make sure to not have expired
- // certificates mixed with valid ones.
- //
- // See also: QSslSocketBackendPrivate::verify()
- if (caCertificate.expiryDate() >= now) {
- q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
- }
- }
-
- if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
- // tell OpenSSL the directories where to look up the root certs on demand
- const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
- for (const QByteArray &unixDir : unixDirs)
- q_SSL_CTX_load_verify_locations(sslContext->ctx, nullptr, unixDir.constData());
- }
-
- if (!sslContext->sslConfiguration.localCertificate().isNull()) {
- // Require a private key as well.
- if (sslContext->sslConfiguration.privateKey().isNull()) {
- sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Load certificate
- if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
- sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
- sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
- } else {
- // Load private key
- sslContext->pkey = q_EVP_PKEY_new();
- // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
- // this lead to a memory leak. Now we use the *_set1_* functions which do not
- // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
- if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
- q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
- else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
- q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
-#ifndef OPENSSL_NO_EC
- else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
- q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
-#endif
- }
-
- if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
- sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
- sslContext->pkey = nullptr; // Don't free the private key, it belongs to QSslKey
-
- // Check if the certificate matches the private key.
- if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
- sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // If we have any intermediate certificates then we need to add them to our chain
- bool first = true;
- for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
- if (first) {
- first = false;
- continue;
- }
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
- q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
- }
- }
-
- // Initialize peer verification.
- if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, nullptr);
- } else {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
-#if QT_CONFIG(dtls)
- isDtls ? dtlscallbacks::q_X509DtlsCallback :
-#endif // dtls
- q_X509Callback);
- }
-
-#if QT_CONFIG(dtls)
- if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
- q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
- q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, dtlscallbacks::q_verify_cookie_callback);
- }
-#endif // dtls
-
- // Set verification depth.
- if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
- q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
-
- // set persisted session if the user set it
- if (!configuration.sessionTicket().isEmpty())
- sslContext->setSessionASN1(configuration.sessionTicket());
-
- // Set temp DH params
- QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
-
- if (!dhparams.isValid()) {
- sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!dhparams.isEmpty()) {
- const QByteArray &params = dhparams.d->derData;
- const char *ptr = params.constData();
- DH *dh = q_d2i_DHparams(nullptr, reinterpret_cast<const unsigned char **>(&ptr),
- params.length());
- if (dh == nullptr)
- qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
- q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
- q_DH_free(dh);
- }
-
-#ifndef OPENSSL_NO_PSK
- if (!client)
- q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
-#endif // !OPENSSL_NO_PSK
-
- const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
- if (!qcurves.isEmpty()) {
-#ifdef OPENSSL_NO_EC
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version with disabled elliptic curves"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
-#else
- // Set the curves to be used.
- std::vector<int> curves;
- curves.reserve(qcurves.size());
- for (const auto &sslCurve : qcurves)
- curves.push_back(sslCurve.id);
- if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, long(curves.size()), &curves[0])) {
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-#endif
- }
-
- applyBackendConfig(sslContext);
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslcontext_openssl_p.h b/src/network/ssl/qsslcontext_openssl_p.h
index 1fa27279c7..70cb97aad8 100644
--- a/src/network/ssl/qsslcontext_openssl_p.h
+++ b/src/network/ssl/qsslcontext_openssl_p.h
@@ -86,7 +86,7 @@ public:
void setSessionASN1(const QByteArray &sessionASN1);
int sessionTicketLifeTimeHint() const;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
// must be public because we want to use it from an OpenSSL callback
struct NPNContext {
NPNContext() : data(nullptr),
@@ -98,7 +98,7 @@ public:
QSslConfiguration::NextProtocolNegotiationStatus status;
};
NPNContext npnContext() const;
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
protected:
QSslContext();
@@ -118,10 +118,10 @@ private:
QSslError::SslError errorCode;
QString errorStr;
QSslConfiguration sslConfiguration;
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
QByteArray m_supportedNPNVersions;
NPNContext m_npnContext;
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
};
#endif // QT_NO_SSL
diff --git a/src/network/ssl/qsslcontext_opensslpre11.cpp b/src/network/ssl/qsslcontext_opensslpre11.cpp
deleted file mode 100644
index 956c5c32ec..0000000000
--- a/src/network/ssl/qsslcontext_opensslpre11.cpp
+++ /dev/null
@@ -1,407 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2014 Governikus GmbH & Co. KG.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtNetwork/qsslsocket.h>
-#include <QtNetwork/qssldiffiehellmanparameters.h>
-
-#include "private/qssl_p.h"
-#include "private/qsslcontext_openssl_p.h"
-#include "private/qsslsocket_p.h"
-#include "private/qsslsocket_openssl_p.h"
-#include "private/qsslsocket_openssl_symbols_p.h"
-#include "private/qssldiffiehellmanparameters_p.h"
-
-QT_BEGIN_NAMESPACE
-
-// defined in qsslsocket_openssl.cpp:
-extern int q_X509Callback(int ok, X509_STORE_CTX *ctx);
-extern QString getErrorsFromOpenSsl();
-
-#if QT_CONFIG(dtls)
-// defined in qdtls_openssl.cpp:
-namespace dtlscallbacks
-{
-extern "C" int q_X509DtlsCallback(int ok, X509_STORE_CTX *ctx);
-extern "C" int q_generate_cookie_callback(SSL *ssl, unsigned char *dst,
- unsigned *cookieLength);
-extern "C" int q_verify_cookie_callback(SSL *ssl, const unsigned char *cookie,
- unsigned cookieLength);
-}
-#endif // dtls
-
-static inline QString msgErrorSettingEllipticCurves(const QString &why)
-{
- return QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(why);
-}
-
-// Defined in qsslsocket.cpp
-QList<QSslCipher> q_getDefaultDtlsCiphers();
-
-// static
-void QSslContext::initSslContext(QSslContext *sslContext, QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
-{
- sslContext->sslConfiguration = configuration;
- sslContext->errorCode = QSslError::NoError;
-
- bool client = (mode == QSslSocket::SslClientMode);
- bool reinitialized = false;
- bool unsupportedProtocol = false;
- bool isDtls = false;
-init_context:
- switch (sslContext->sslConfiguration.protocol()) {
-#if QT_CONFIG(dtls)
- case QSsl::DtlsV1_0:
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLSv1_client_method() : q_DTLSv1_server_method());
- break;
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
- // OpenSSL 1.0.2 and below will probably never receive TLS 1.3, so
- // technically 1.2 or later is 1.2 and will stay so.
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLSv1_2_client_method() : q_DTLSv1_2_server_method());
- break;
- case QSsl::DtlsV1_0OrLater:
- isDtls = true;
- sslContext->ctx = q_SSL_CTX_new(client ? q_DTLS_client_method() : q_DTLS_server_method());
- break;
-#else // dtls
- case QSsl::DtlsV1_0:
- case QSsl::DtlsV1_0OrLater:
- case QSsl::DtlsV1_2:
- case QSsl::DtlsV1_2OrLater:
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- qCWarning(lcSsl, "DTLS protocol requested, but feature 'dtls' is disabled");
- break;
-#endif // dtls
- case QSsl::SslV2:
- case QSsl::SslV3:
- // We don't support SSLv2 / SSLv3.
- sslContext->ctx = 0;
- unsupportedProtocol = true;
- break;
- case QSsl::SecureProtocols:
- // SSLv2 and SSLv3 will be disabled by SSL options
- // But we need q_SSLv23_server_method() otherwise AnyProtocol will be unable to connect on Win32.
- case QSsl::AnyProtocol:
- default:
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
- break;
- case QSsl::TlsV1SslV3:
- case QSsl::TlsV1_0:
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_client_method() : q_TLSv1_server_method());
- break;
- case QSsl::TlsV1_1:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_1_client_method() : q_TLSv1_1_server_method());
-#else
- // TLS 1.1 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_2:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- sslContext->ctx = q_SSL_CTX_new(client ? q_TLSv1_2_client_method() : q_TLSv1_2_server_method());
-#else
- // TLS 1.2 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_0OrLater:
- // Specific protocols will be specified via SSL options.
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
- break;
- case QSsl::TlsV1_1OrLater:
- case QSsl::TlsV1_2OrLater:
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- // Specific protocols will be specified via SSL options.
- sslContext->ctx = q_SSL_CTX_new(client ? q_SSLv23_client_method() : q_SSLv23_server_method());
-#else
- // TLS 1.1/1.2 not supported by the system, but chosen deliberately -> error
- sslContext->ctx = 0;
- unsupportedProtocol = true;
-#endif
- break;
- case QSsl::TlsV1_3:
- case QSsl::TlsV1_3OrLater:
- // TLS 1.3 is not supported by the system, but chosen deliberately -> error
- sslContext->ctx = nullptr;
- unsupportedProtocol = true;
- break;
- }
-
- if (!client && isDtls && configuration.peerVerifyMode() != QSslSocket::VerifyNone) {
- sslContext->errorStr = QSslSocket::tr("DTLS server requires a 'VerifyNone' mode with your version of OpenSSL");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!sslContext->ctx) {
- // After stopping Flash 10 the SSL library loses its ciphers. Try re-adding them
- // by re-initializing the library.
- if (!reinitialized) {
- reinitialized = true;
- if (q_SSL_library_init() == 1)
- goto init_context;
- }
-
- sslContext->errorStr = QSslSocket::tr("Error creating SSL context (%1)").arg(
- unsupportedProtocol ? QSslSocket::tr("unsupported protocol") : QSslSocketBackendPrivate::getErrorsFromOpenSsl()
- );
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Enable bug workarounds.
- // DTLSTODO: check this setupOpenSslOptions ...
- long options = QSslSocketBackendPrivate::setupOpenSslOptions(configuration.protocol(), configuration.d->sslOptions);
- q_SSL_CTX_set_options(sslContext->ctx, options);
-
- // Tell OpenSSL to release memory early
- // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
- q_SSL_CTX_set_mode(sslContext->ctx, SSL_MODE_RELEASE_BUFFERS);
-
- // Initialize ciphers
- QByteArray cipherString;
- bool first = true;
- QList<QSslCipher> ciphers = sslContext->sslConfiguration.ciphers();
- if (ciphers.isEmpty())
- ciphers = isDtls ? q_getDefaultDtlsCiphers() : QSslSocketPrivate::defaultCiphers();
- for (const QSslCipher &cipher : qAsConst(ciphers)) {
- if (first)
- first = false;
- else
- cipherString.append(':');
- cipherString.append(cipher.name().toLatin1());
- }
-
- if (!q_SSL_CTX_set_cipher_list(sslContext->ctx, cipherString.data())) {
- sslContext->errorStr = QSslSocket::tr("Invalid or empty cipher list (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- const QDateTime now = QDateTime::currentDateTimeUtc();
-
- // Add all our CAs to this store.
- const auto caCertificates = sslContext->sslConfiguration.caCertificates();
- for (const QSslCertificate &caCertificate : caCertificates) {
- // From https://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html:
- //
- // If several CA certificates matching the name, key identifier, and
- // serial number condition are available, only the first one will be
- // examined. This may lead to unexpected results if the same CA
- // certificate is available with different expiration dates. If a
- // ``certificate expired'' verification error occurs, no other
- // certificate will be searched. Make sure to not have expired
- // certificates mixed with valid ones.
- //
- // See also: QSslSocketBackendPrivate::verify()
- if (caCertificate.expiryDate() >= now) {
- q_X509_STORE_add_cert(q_SSL_CTX_get_cert_store(sslContext->ctx), (X509 *)caCertificate.handle());
- }
- }
-
- if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
- // tell OpenSSL the directories where to look up the root certs on demand
- const QList<QByteArray> unixDirs = QSslSocketPrivate::unixRootCertDirectories();
- for (const QByteArray &unixDir : unixDirs)
- q_SSL_CTX_load_verify_locations(sslContext->ctx, 0, unixDir.constData());
- }
-
- if (!sslContext->sslConfiguration.localCertificate().isNull()) {
- // Require a private key as well.
- if (sslContext->sslConfiguration.privateKey().isNull()) {
- sslContext->errorStr = QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // Load certificate
- if (!q_SSL_CTX_use_certificate(sslContext->ctx, (X509 *)sslContext->sslConfiguration.localCertificate().handle())) {
- sslContext->errorStr = QSslSocket::tr("Error loading local certificate, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque) {
- sslContext->pkey = reinterpret_cast<EVP_PKEY *>(configuration.d->privateKey.handle());
- } else {
- // Load private key
- sslContext->pkey = q_EVP_PKEY_new();
- // before we were using EVP_PKEY_assign_R* functions and did not use EVP_PKEY_free.
- // this lead to a memory leak. Now we use the *_set1_* functions which do not
- // take ownership of the RSA/DSA key instance because the QSslKey already has ownership.
- if (configuration.d->privateKey.algorithm() == QSsl::Rsa)
- q_EVP_PKEY_set1_RSA(sslContext->pkey, reinterpret_cast<RSA *>(configuration.d->privateKey.handle()));
- else if (configuration.d->privateKey.algorithm() == QSsl::Dsa)
- q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(configuration.d->privateKey.handle()));
-#ifndef OPENSSL_NO_EC
- else if (configuration.d->privateKey.algorithm() == QSsl::Ec)
- q_EVP_PKEY_set1_EC_KEY(sslContext->pkey, reinterpret_cast<EC_KEY *>(configuration.d->privateKey.handle()));
-#endif
- }
-
- if (!q_SSL_CTX_use_PrivateKey(sslContext->ctx, sslContext->pkey)) {
- sslContext->errorStr = QSslSocket::tr("Error loading private key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- if (configuration.d->privateKey.algorithm() == QSsl::Opaque)
- sslContext->pkey = 0; // Don't free the private key, it belongs to QSslKey
-
- // Check if the certificate matches the private key.
- if (!q_SSL_CTX_check_private_key(sslContext->ctx)) {
- sslContext->errorStr = QSslSocket::tr("Private key does not certify public key, %1").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- // If we have any intermediate certificates then we need to add them to our chain
- bool first = true;
- for (const QSslCertificate &cert : qAsConst(configuration.d->localCertificateChain)) {
- if (first) {
- first = false;
- continue;
- }
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_EXTRA_CHAIN_CERT, 0,
- q_X509_dup(reinterpret_cast<X509 *>(cert.handle())));
- }
- }
-
- // Initialize peer verification.
- if (sslContext->sslConfiguration.peerVerifyMode() == QSslSocket::VerifyNone) {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_NONE, 0);
- } else {
- q_SSL_CTX_set_verify(sslContext->ctx, SSL_VERIFY_PEER,
-#if QT_CONFIG(dtls)
- isDtls ? dtlscallbacks::q_X509DtlsCallback :
-#endif // dtls
- q_X509Callback);
- }
-
-#if QT_CONFIG(dtls)
- if (mode == QSslSocket::SslServerMode && isDtls && configuration.dtlsCookieVerificationEnabled()) {
- q_SSL_CTX_set_cookie_generate_cb(sslContext->ctx, dtlscallbacks::q_generate_cookie_callback);
- q_SSL_CTX_set_cookie_verify_cb(sslContext->ctx, CookieVerifyCallback(dtlscallbacks::q_verify_cookie_callback));
- }
-#endif // dtls
-
- // Set verification depth.
- if (sslContext->sslConfiguration.peerVerifyDepth() != 0)
- q_SSL_CTX_set_verify_depth(sslContext->ctx, sslContext->sslConfiguration.peerVerifyDepth());
-
- // set persisted session if the user set it
- if (!configuration.sessionTicket().isEmpty())
- sslContext->setSessionASN1(configuration.sessionTicket());
-
- // Set temp DH params
- QSslDiffieHellmanParameters dhparams = configuration.diffieHellmanParameters();
-
- if (!dhparams.isValid()) {
- sslContext->errorStr = QSslSocket::tr("Diffie-Hellman parameters are not valid");
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
-
- if (!dhparams.isEmpty()) {
- const QByteArray &params = dhparams.d->derData;
- const char *ptr = params.constData();
- DH *dh = q_d2i_DHparams(NULL, reinterpret_cast<const unsigned char **>(&ptr), params.length());
- if (dh == NULL)
- qFatal("q_d2i_DHparams failed to convert QSslDiffieHellmanParameters to DER form");
- q_SSL_CTX_set_tmp_dh(sslContext->ctx, dh);
- q_DH_free(dh);
- }
-
-#ifndef OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L) {
- q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_ECDH_AUTO, 1, NULL);
- } else
-#endif
- {
- // Set temp ECDH params
- EC_KEY *ecdh = 0;
- ecdh = q_EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
- q_SSL_CTX_set_tmp_ecdh(sslContext->ctx, ecdh);
- q_EC_KEY_free(ecdh);
- }
-#endif // OPENSSL_NO_EC
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
- if (!client)
- q_SSL_CTX_use_psk_identity_hint(sslContext->ctx, sslContext->sslConfiguration.preSharedKeyIdentityHint().constData());
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
-
- const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves();
- if (!qcurves.isEmpty()) {
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
- // Set the curves to be used
- if (q_SSLeay() >= 0x10002000L) {
- // SSL_CTX_ctrl wants a non-const pointer as last argument,
- // but let's avoid a copy into a temporary array
- if (!q_SSL_CTX_ctrl(sslContext->ctx,
- SSL_CTRL_SET_CURVES,
- qcurves.size(),
- const_cast<int *>(reinterpret_cast<const int *>(qcurves.data())))) {
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- } else
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
- {
- // specific curves requested, but not possible to set -> error
- sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2"));
- sslContext->errorCode = QSslError::UnspecifiedError;
- return;
- }
- }
-
- applyBackendConfig(sslContext);
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslellipticcurve_openssl.cpp b/src/network/ssl/qsslellipticcurve_openssl.cpp
index b5e38ada53..bb7ad66bd2 100644
--- a/src/network/ssl/qsslellipticcurve_openssl.cpp
+++ b/src/network/ssl/qsslellipticcurve_openssl.cpp
@@ -83,10 +83,8 @@ QSslEllipticCurve QSslEllipticCurve::fromShortName(const QString &name)
const QByteArray curveNameLatin1 = name.toLatin1();
int nid = q_OBJ_sn2nid(curveNameLatin1.data());
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (nid == 0 && QSslSocket::sslLibraryVersionNumber() >= 0x10002000L)
+ if (nid == 0)
nid = q_EC_curve_nist2nid(curveNameLatin1.data());
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
result.id = nid;
diff --git a/src/network/ssl/qsslerror.h b/src/network/ssl/qsslerror.h
index c4a0d52193..28eb1a9ea8 100644
--- a/src/network/ssl/qsslerror.h
+++ b/src/network/ssl/qsslerror.h
@@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE
class QSslErrorPrivate;
class Q_NETWORK_EXPORT QSslError
{
+ Q_GADGET
public:
enum SslError {
NoError,
@@ -94,6 +95,7 @@ public:
OcspStatusUnknown,
UnspecifiedError = -1
};
+ Q_ENUM(SslError)
// RVCT compiler in debug build does not like about default values in const-
// So as an workaround we define all constructor overloads here explicitly
diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp
index 888058df22..43cb8c6de8 100644
--- a/src/network/ssl/qsslkey_openssl.cpp
+++ b/src/network/ssl/qsslkey_openssl.cpp
@@ -93,11 +93,7 @@ bool QSslKeyPrivate::fromEVP_PKEY(EVP_PKEY *pkey)
if (pkey == nullptr)
return false;
-#if QT_CONFIG(opensslv11)
const int keyType = q_EVP_PKEY_type(q_EVP_PKEY_base_id(pkey));
-#else
- const int keyType = pkey->type;
-#endif
if (keyType == EVP_PKEY_RSA) {
isNull = false;
algorithm = QSsl::Rsa;
@@ -350,33 +346,17 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
QByteArray output;
output.resize(data.size() + EVP_MAX_BLOCK_LENGTH);
-#if QT_CONFIG(opensslv11)
EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new();
q_EVP_CIPHER_CTX_reset(ctx);
-#else
- EVP_CIPHER_CTX evpCipherContext;
- EVP_CIPHER_CTX *ctx = &evpCipherContext;
- q_EVP_CIPHER_CTX_init(ctx);
-#endif
-
q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc);
q_EVP_CIPHER_CTX_set_key_length(ctx, key.size());
if (cipher == QSslKeyPrivate::Rc2Cbc)
q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr);
-#if QT_CONFIG(opensslv11)
- // EVP_CipherInit in 1.1 resets the context thus making the calls above useless.
- // We call EVP_CipherInit_ex instead.
q_EVP_CipherInit_ex(ctx, nullptr, nullptr,
reinterpret_cast<const unsigned char *>(key.constData()),
reinterpret_cast<const unsigned char *>(iv.constData()),
enc);
-#else
- q_EVP_CipherInit(ctx, NULL,
- reinterpret_cast<const unsigned char *>(key.constData()),
- reinterpret_cast<const unsigned char *>(iv.constData()), enc);
-#endif // opensslv11
-
q_EVP_CipherUpdate(ctx,
reinterpret_cast<unsigned char *>(output.data()), &len,
reinterpret_cast<const unsigned char *>(data.constData()), data.size());
@@ -384,12 +364,8 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
reinterpret_cast<unsigned char *>(output.data()) + len, &i);
len += i;
-#if QT_CONFIG(opensslv11)
q_EVP_CIPHER_CTX_reset(ctx);
q_EVP_CIPHER_CTX_free(ctx);
-#else
- q_EVP_CIPHER_CTX_cleanup(ctx);
-#endif
return output.left(len);
}
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index d4bad1b1a5..8cd0724d83 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -66,15 +66,12 @@
#include "qsslpresharedkeyauthenticator.h"
#include "qsslpresharedkeyauthenticator_p.h"
#include "qocspresponse_p.h"
+#include "qsslkey.h"
#ifdef Q_OS_WIN
#include "qwindowscarootfetcher_p.h"
#endif
-#if !QT_CONFIG(opensslv11)
-#include <openssl/x509_vfy.h>
-#endif
-
#include <QtCore/qdatetime.h>
#include <QtCore/qdebug.h>
#include <QtCore/qdir.h>
@@ -87,6 +84,8 @@
#include <QtCore/qurl.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qscopedvaluerollback.h>
+#include <QtCore/qlibrary.h>
+#include <QtCore/qoperatingsystemversion.h>
#if QT_CONFIG(ocsp)
#include "qocsp_p.h"
@@ -98,13 +97,12 @@
QT_BEGIN_NAMESPACE
+Q_GLOBAL_STATIC(QRecursiveMutex, qt_opensslInitMutex)
+
bool QSslSocketPrivate::s_libraryLoaded = false;
bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
bool QSslSocketPrivate::s_loadRootCertsOnDemand = false;
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
int QSslSocketBackendPrivate::s_indexForSSLExtraData = -1;
-#endif
QString QSslSocketBackendPrivate::getErrorsFromOpenSsl()
{
@@ -122,7 +120,7 @@ QString QSslSocketBackendPrivate::getErrorsFromOpenSsl()
extern "C" {
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
static unsigned int q_ssl_psk_client_callback(SSL *ssl,
const char *hint,
char *identity, unsigned int max_identity_len,
@@ -143,7 +141,6 @@ static unsigned int q_ssl_psk_server_callback(SSL *ssl,
}
#ifdef TLS1_3_VERSION
-#ifndef OPENSSL_NO_PSK
static unsigned int q_ssl_psk_restore_client(SSL *ssl,
const char *hint,
char *identity, unsigned int max_identity_len,
@@ -164,7 +161,6 @@ static unsigned int q_ssl_psk_restore_client(SSL *ssl,
return 0;
}
-#endif // !OPENSSL_NO_PSK
static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsigned char **id,
size_t *idlen, SSL_SESSION **sess)
@@ -175,7 +171,6 @@ static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsi
Q_UNUSED(idlen);
Q_UNUSED(sess);
-#ifndef OPENSSL_NO_PSK
#ifdef QT_DEBUG
QSslSocketBackendPrivate *d = reinterpret_cast<QSslSocketBackendPrivate *>(q_SSL_get_ex_data(ssl, QSslSocketBackendPrivate::s_indexForSSLExtraData));
Q_ASSERT(d);
@@ -184,13 +179,12 @@ static int q_ssl_psk_use_session_callback(SSL *ssl, const EVP_MD *md, const unsi
// Temporarily rebind the psk because it will be called next. The function will restore it.
q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_restore_client);
-#endif
return 1; // need to return 1 or else "the connection setup fails."
}
#endif // TLS1_3_VERSION
-#endif
+#endif // !OPENSSL_NO_PSK
#if QT_CONFIG(ocsp)
@@ -407,13 +401,8 @@ int q_X509Callback(int ok, X509_STORE_CTX *ctx)
ErrorListPtr errors = nullptr;
// Error list is attached to either 'SSL' or 'X509_STORE'.
- if (X509_STORE *store = q_X509_STORE_CTX_get0_store(ctx)) { // We try store first:
-#if QT_CONFIG(opensslv11)
+ if (X509_STORE *store = q_X509_STORE_CTX_get0_store(ctx)) // We try store first:
errors = ErrorListPtr(q_X509_STORE_get_ex_data(store, 0));
-#else
- errors = ErrorListPtr(q_CRYPTO_get_ex_data(&store->ex_data, 0));
-#endif // opensslv11
- }
if (!errors) {
// Not found on store? Try SSL and its external data then. According to the OpenSSL's
@@ -476,17 +465,12 @@ long QSslSocketBackendPrivate::setupOpenSslOptions(QSsl::SslProtocol protocol, Q
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
else if (protocol == QSsl::TlsV1_0OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3;
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- // Choosing Tlsv1_1OrLater or TlsV1_2OrLater on OpenSSL < 1.0.1
- // will cause an error in QSslContext::fromConfiguration, meaning
- // we will never get here.
else if (protocol == QSsl::TlsV1_1OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1;
else if (protocol == QSsl::TlsV1_2OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1;
else if (protocol == QSsl::TlsV1_3OrLater)
options = SSL_OP_ALL|SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3|SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2;
-#endif
else
options = SSL_OP_ALL;
@@ -590,15 +574,13 @@ bool QSslSocketBackendPrivate::initSslContext()
q_SSL_set_ex_data(ssl, s_indexForSSLExtraData, this);
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
// Set the client callback for PSK
- if (QSslSocket::sslLibraryVersionNumber() >= 0x10001000L) {
- if (mode == QSslSocket::SslClientMode)
- q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback);
- else if (mode == QSslSocket::SslServerMode)
- q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
- }
-#endif
+ if (mode == QSslSocket::SslClientMode)
+ q_SSL_set_psk_client_callback(ssl, &q_ssl_psk_client_callback);
+ else if (mode == QSslSocket::SslServerMode)
+ q_SSL_set_psk_server_callback(ssl, &q_ssl_psk_server_callback);
+
#if OPENSSL_VERSION_NUMBER >= 0x10101006L
// Set the client callback for TLSv1.3 PSK
if (mode == QSslSocket::SslClientMode
@@ -607,6 +589,9 @@ bool QSslSocketBackendPrivate::initSslContext()
}
#endif // openssl version >= 0x10101006L
+#endif // OPENSSL_NO_PSK
+
+
#if QT_CONFIG(ocsp)
if (configuration.ocspStaplingEnabled) {
if (mode == QSslSocket::SslServerMode) {
@@ -673,10 +658,43 @@ bool QSslSocketPrivate::supportsSsl()
/*!
\internal
+ Returns the version number of the SSL library in use. Note that
+ this is the version of the library in use at run-time, not compile
+ time.
+*/
+long QSslSocketPrivate::sslLibraryVersionNumber()
+{
+ if (!supportsSsl())
+ return 0;
+
+ return q_OpenSSL_version_num();
+}
+
+/*!
+ \internal
+
+ Returns the version string of the SSL library in use. Note that
+ this is the version of the library in use at run-time, not compile
+ time. If no SSL support is available then this will return an empty value.
+*/
+QString QSslSocketPrivate::sslLibraryVersionString()
+{
+ if (!supportsSsl())
+ return QString();
+
+ const char *versionString = q_OpenSSL_version(OPENSSL_VERSION);
+ if (!versionString)
+ return QString();
+
+ return QString::fromLatin1(versionString);
+}
+
+/*!
+ \internal
+
Declared static in QSslSocketPrivate, makes sure the SSL libraries have
been initialized.
*/
-
void QSslSocketPrivate::ensureInitialized()
{
if (!supportsSsl())
@@ -685,11 +703,23 @@ void QSslSocketPrivate::ensureInitialized()
ensureCiphersAndCertsLoaded();
}
+/*!
+ \internal
+
+ Returns the version number of the SSL library in use at compile
+ time.
+*/
long QSslSocketPrivate::sslLibraryBuildVersionNumber()
{
return OPENSSL_VERSION_NUMBER;
}
+/*!
+ \internal
+
+ Returns the version string of the SSL library in use at compile
+ time.
+*/
QString QSslSocketPrivate::sslLibraryBuildVersionString()
{
// Using QStringLiteral to store the version string as unicode and
@@ -706,11 +736,7 @@ QString QSslSocketPrivate::sslLibraryBuildVersionString()
*/
void QSslSocketPrivate::resetDefaultCiphers()
{
-#if QT_CONFIG(opensslv11)
SSL_CTX *myCtx = q_SSL_CTX_new(q_TLS_client_method());
-#else
- SSL_CTX *myCtx = q_SSL_CTX_new(q_SSLv23_client_method());
-#endif
// Note, we assert, not just silently return/bail out early:
// this should never happen and problems with OpenSSL's initialization
// must be caught before this (see supportsSsl()).
@@ -1737,6 +1763,174 @@ QSsl::SslProtocol QSslSocketBackendPrivate::sessionProtocol() const
return QSsl::UnknownProtocol;
}
+
+void QSslSocketBackendPrivate::continueHandshake()
+{
+ Q_Q(QSslSocket);
+ // if we have a max read buffer size, reset the plain socket's to match
+ if (readBufferMaxSize)
+ plainSocket->setReadBufferSize(readBufferMaxSize);
+
+ if (q_SSL_session_reused(ssl))
+ configuration.peerSessionShared = true;
+
+#ifdef QT_DECRYPT_SSL_TRAFFIC
+ if (q_SSL_get_session(ssl)) {
+ size_t master_key_len = q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), 0, 0);
+ size_t client_random_len = q_SSL_get_client_random(ssl, 0, 0);
+ QByteArray masterKey(int(master_key_len), 0); // Will not overflow
+ QByteArray clientRandom(int(client_random_len), 0); // Will not overflow
+
+ q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl),
+ reinterpret_cast<unsigned char*>(masterKey.data()),
+ masterKey.size());
+ q_SSL_get_client_random(ssl, reinterpret_cast<unsigned char *>(clientRandom.data()),
+ clientRandom.size());
+
+ QByteArray debugLineClientRandom("CLIENT_RANDOM ");
+ debugLineClientRandom.append(clientRandom.toHex().toUpper());
+ debugLineClientRandom.append(" ");
+ debugLineClientRandom.append(masterKey.toHex().toUpper());
+ debugLineClientRandom.append("\n");
+
+ QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
+ QFile file(sslKeyFile);
+ if (!file.open(QIODevice::Append))
+ qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
+ if (!file.write(debugLineClientRandom))
+ qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
+ file.close();
+ } else {
+ qCWarning(lcSsl, "could not decrypt SSL traffic");
+ }
+#endif
+
+ // Cache this SSL session inside the QSslContext
+ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
+ if (!sslContextPointer->cacheSession(ssl)) {
+ sslContextPointer.clear(); // we could not cache the session
+ } else {
+ // Cache the session for permanent usage as well
+ if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
+ if (!sslContextPointer->sessionASN1().isEmpty())
+ configuration.sslSession = sslContextPointer->sessionASN1();
+ configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
+ }
+ }
+ }
+
+#if !defined(OPENSSL_NO_NEXTPROTONEG)
+
+ configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
+ if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
+ // we could not agree -> be conservative and use HTTP/1.1
+ configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
+ } else {
+ const unsigned char *proto = nullptr;
+ unsigned int proto_len = 0;
+
+ q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
+ if (proto_len && mode == QSslSocket::SslClientMode) {
+ // Client does not have a callback that sets it ...
+ configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
+ }
+
+ if (!proto_len) { // Test if NPN was more lucky ...
+ q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
+ }
+
+ if (proto_len)
+ configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
+ else
+ configuration.nextNegotiatedProtocol.clear();
+ }
+#endif // !defined(OPENSSL_NO_NEXTPROTONEG)
+
+ if (mode == QSslSocket::SslClientMode) {
+ EVP_PKEY *key;
+ if (q_SSL_get_server_tmp_key(ssl, &key))
+ configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
+ }
+
+ connectionEncrypted = true;
+ emit q->encrypted();
+ if (autoStartHandshake && pendingClose) {
+ pendingClose = false;
+ q->disconnectFromHost();
+ }
+}
+
+bool QSslSocketPrivate::ensureLibraryLoaded()
+{
+ if (!q_resolveOpenSslSymbols())
+ return false;
+
+ const QMutexLocker locker(qt_opensslInitMutex);
+
+ if (!s_libraryLoaded) {
+ // Initialize OpenSSL.
+ if (q_OPENSSL_init_ssl(0, nullptr) != 1)
+ return false;
+ q_SSL_load_error_strings();
+ q_OpenSSL_add_all_algorithms();
+
+ QSslSocketBackendPrivate::s_indexForSSLExtraData
+ = q_CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, 0L, nullptr, nullptr,
+ nullptr, nullptr);
+
+ // Initialize OpenSSL's random seed.
+ if (!q_RAND_status()) {
+ qWarning("Random number generator not seeded, disabling SSL support");
+ return false;
+ }
+
+ s_libraryLoaded = true;
+ }
+ return true;
+}
+
+void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
+{
+ const QMutexLocker locker(qt_opensslInitMutex);
+
+ if (s_loadedCiphersAndCerts)
+ return;
+ s_loadedCiphersAndCerts = true;
+
+ resetDefaultCiphers();
+ resetDefaultEllipticCurves();
+
+#if QT_CONFIG(library)
+ //load symbols needed to receive certificates from system store
+#if defined(Q_OS_QNX)
+ s_loadRootCertsOnDemand = true;
+#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
+ // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
+ QList<QByteArray> dirs = unixRootCertDirectories();
+ QStringList symLinkFilter;
+ symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
+ for (int a = 0; a < dirs.count(); ++a) {
+ QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
+ if (iterator.hasNext()) {
+ s_loadRootCertsOnDemand = true;
+ break;
+ }
+ }
+#endif
+#endif // QT_CONFIG(library)
+ // if on-demand loading was not enabled, load the certs now
+ if (!s_loadRootCertsOnDemand)
+ setDefaultCaCertificates(systemCaCertificates());
+#ifdef Q_OS_WIN
+ //Enabled for fetching additional root certs from windows update on windows.
+ //This flag is set false by setDefaultCaCertificates() indicating the app uses
+ //its own cert bundle rather than the system one.
+ //Same logic that disables the unix on demand cert loading.
+ //Unlike unix, we do preload the certificates from the cert store.
+ s_loadRootCertsOnDemand = true;
+#endif
+}
+
QList<QSslCertificate> QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509)
{
ensureInitialized();
@@ -1788,19 +1982,11 @@ QList<QSslError> QSslSocketBackendPrivate::verify(const QList<QSslCertificate> &
}
QVector<QSslErrorEntry> lastErrors;
-#if QT_CONFIG(opensslv11)
if (!q_X509_STORE_set_ex_data(certStore, 0, &lastErrors)) {
qCWarning(lcSsl) << "Unable to attach external data (error list) to a store";
errors << QSslError(QSslError::UnspecifiedError);
return errors;
}
-#else
- if (!q_CRYPTO_set_ex_data(&certStore->ex_data, 0, &lastErrors)) {
- qCWarning(lcSsl) << "Unable to attach external data (error list) to a store";
- errors << QSslError(QSslError::UnspecifiedError);
- return errors;
- }
-#endif // opensslv11
// Register a custom callback to get all verification errors.
q_X509_STORE_set_verify_cb(certStore, q_X509Callback);
diff --git a/src/network/ssl/qsslsocket_openssl11.cpp b/src/network/ssl/qsslsocket_openssl11.cpp
deleted file mode 100644
index 1d935c5217..0000000000
--- a/src/network/ssl/qsslsocket_openssl11.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 Governikus GmbH & Co. KG
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-//#define QT_DECRYPT_SSL_TRAFFIC
-
-#include "qssl_p.h"
-#include "qsslsocket_openssl_p.h"
-#include "qsslsocket_openssl_symbols_p.h"
-#include "qsslsocket.h"
-#include "qsslkey.h"
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qdiriterator.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qmutex.h>
-#include <QtCore/qlibrary.h>
-#include <QtCore/qoperatingsystemversion.h>
-
-QT_BEGIN_NAMESPACE
-
-Q_GLOBAL_STATIC(QRecursiveMutex, qt_opensslInitMutex)
-
-void QSslSocketPrivate::deinitialize()
-{
- // This function exists only for compatibility with the pre-11 code,
- // where deinitialize() actually does some cleanup. To be discarded
- // once we retire < 1.1.
-}
-
-bool QSslSocketPrivate::ensureLibraryLoaded()
-{
- if (!q_resolveOpenSslSymbols())
- return false;
-
- const QMutexLocker locker(qt_opensslInitMutex);
-
- if (!s_libraryLoaded) {
- // Initialize OpenSSL.
- if (q_OPENSSL_init_ssl(0, nullptr) != 1)
- return false;
- q_SSL_load_error_strings();
- q_OpenSSL_add_all_algorithms();
-
- QSslSocketBackendPrivate::s_indexForSSLExtraData
- = q_CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, 0L, nullptr, nullptr,
- nullptr, nullptr);
-
- // Initialize OpenSSL's random seed.
- if (!q_RAND_status()) {
- qWarning("Random number generator not seeded, disabling SSL support");
- return false;
- }
-
- s_libraryLoaded = true;
- }
- return true;
-}
-
-void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
-{
- const QMutexLocker locker(qt_opensslInitMutex);
-
- if (s_loadedCiphersAndCerts)
- return;
- s_loadedCiphersAndCerts = true;
-
- resetDefaultCiphers();
- resetDefaultEllipticCurves();
-
-#if QT_CONFIG(library)
- //load symbols needed to receive certificates from system store
-#if defined(Q_OS_QNX)
- s_loadRootCertsOnDemand = true;
-#elif defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)
- // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
- QList<QByteArray> dirs = unixRootCertDirectories();
- QStringList symLinkFilter;
- symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
- for (int a = 0; a < dirs.count(); ++a) {
- QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
- if (iterator.hasNext()) {
- s_loadRootCertsOnDemand = true;
- break;
- }
- }
-#endif
-#endif // QT_CONFIG(library)
- // if on-demand loading was not enabled, load the certs now
- if (!s_loadRootCertsOnDemand)
- setDefaultCaCertificates(systemCaCertificates());
-#ifdef Q_OS_WIN
- //Enabled for fetching additional root certs from windows update on windows.
- //This flag is set false by setDefaultCaCertificates() indicating the app uses
- //its own cert bundle rather than the system one.
- //Same logic that disables the unix on demand cert loading.
- //Unlike unix, we do preload the certificates from the cert store.
- s_loadRootCertsOnDemand = true;
-#endif
-}
-
-long QSslSocketPrivate::sslLibraryVersionNumber()
-{
- if (!supportsSsl())
- return 0;
-
- return q_OpenSSL_version_num();
-}
-
-QString QSslSocketPrivate::sslLibraryVersionString()
-{
- if (!supportsSsl())
- return QString();
-
- const char *versionString = q_OpenSSL_version(OPENSSL_VERSION);
- if (!versionString)
- return QString();
-
- return QString::fromLatin1(versionString);
-}
-
-void QSslSocketBackendPrivate::continueHandshake()
-{
- Q_Q(QSslSocket);
- // if we have a max read buffer size, reset the plain socket's to match
- if (readBufferMaxSize)
- plainSocket->setReadBufferSize(readBufferMaxSize);
-
- if (q_SSL_session_reused(ssl))
- configuration.peerSessionShared = true;
-
-#ifdef QT_DECRYPT_SSL_TRAFFIC
- if (q_SSL_get_session(ssl)) {
- size_t master_key_len = q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl), 0, 0);
- size_t client_random_len = q_SSL_get_client_random(ssl, 0, 0);
- QByteArray masterKey(int(master_key_len), 0); // Will not overflow
- QByteArray clientRandom(int(client_random_len), 0); // Will not overflow
-
- q_SSL_SESSION_get_master_key(q_SSL_get_session(ssl),
- reinterpret_cast<unsigned char*>(masterKey.data()),
- masterKey.size());
- q_SSL_get_client_random(ssl, reinterpret_cast<unsigned char *>(clientRandom.data()),
- clientRandom.size());
-
- QByteArray debugLineClientRandom("CLIENT_RANDOM ");
- debugLineClientRandom.append(clientRandom.toHex().toUpper());
- debugLineClientRandom.append(" ");
- debugLineClientRandom.append(masterKey.toHex().toUpper());
- debugLineClientRandom.append("\n");
-
- QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
- QFile file(sslKeyFile);
- if (!file.open(QIODevice::Append))
- qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
- if (!file.write(debugLineClientRandom))
- qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
- file.close();
- } else {
- qCWarning(lcSsl, "could not decrypt SSL traffic");
- }
-#endif
-
- // Cache this SSL session inside the QSslContext
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
- if (!sslContextPointer->cacheSession(ssl)) {
- sslContextPointer.clear(); // we could not cache the session
- } else {
- // Cache the session for permanent usage as well
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
- if (!sslContextPointer->sessionASN1().isEmpty())
- configuration.sslSession = sslContextPointer->sessionASN1();
- configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
- }
- }
- }
-
-#if !defined(OPENSSL_NO_NEXTPROTONEG)
-
- configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
- if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
- // we could not agree -> be conservative and use HTTP/1.1
- configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
- } else {
- const unsigned char *proto = nullptr;
- unsigned int proto_len = 0;
-
- q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
- if (proto_len && mode == QSslSocket::SslClientMode) {
- // Client does not have a callback that sets it ...
- configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
- }
-
- if (!proto_len) { // Test if NPN was more lucky ...
- q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
- }
-
- if (proto_len)
- configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
- else
- configuration.nextNegotiatedProtocol.clear();
- }
-#endif // !defined(OPENSSL_NO_NEXTPROTONEG)
-
- if (mode == QSslSocket::SslClientMode) {
- EVP_PKEY *key;
- if (q_SSL_get_server_tmp_key(ssl, &key))
- configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
- }
-
- connectionEncrypted = true;
- emit q->encrypted();
- if (autoStartHandshake && pendingClose) {
- pendingClose = false;
- q->disconnectFromHost();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket_openssl11_symbols_p.h b/src/network/ssl/qsslsocket_openssl11_symbols_p.h
deleted file mode 100644
index 0fe0899d4f..0000000000
--- a/src/network/ssl/qsslsocket_openssl11_symbols_p.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Copyright (C) 2016 Richard J. Moore <rich@kde.org>
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-#ifndef QSSLSOCKET_OPENSSL11_SYMBOLS_P_H
-#define QSSLSOCKET_OPENSSL11_SYMBOLS_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-// Note: this file does not have QT_BEGIN_NAMESPACE/QT_END_NAMESPACE, it's done
-// in qsslsocket_openssl_symbols_p.h.
-
-#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H
-#error "You are not supposed to use this header file, include qsslsocket_openssl_symbols_p.h instead"
-#endif
-
-const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
-
-Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
-Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
-
-int q_DSA_bits(DSA *a);
-int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
-Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
-int q_EVP_PKEY_base_id(EVP_PKEY *a);
-int q_RSA_bits(RSA *a);
-Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
-Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
-Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
-Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
-int q_SSL_session_reused(SSL *a);
-unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
-int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-size_t q_SSL_get_client_random(SSL *a, unsigned char *out, size_t outlen);
-size_t q_SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen);
-int q_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
-const SSL_METHOD *q_TLS_method();
-const SSL_METHOD *q_TLS_client_method();
-const SSL_METHOD *q_TLS_server_method();
-ASN1_TIME *q_X509_getm_notBefore(X509 *a);
-ASN1_TIME *q_X509_getm_notAfter(X509 *a);
-
-Q_AUTOTEST_EXPORT void q_X509_up_ref(X509 *a);
-long q_X509_get_version(X509 *a);
-EVP_PKEY *q_X509_get_pubkey(X509 *a);
-void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
-int q_X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data);
-void *q_X509_STORE_get_ex_data(X509_STORE *r, int idx);
-STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
-void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
-int q_DH_bits(DH *dh);
-
-# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
- | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
-
-#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
-#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
-
-#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
- | OPENSSL_INIT_ADD_ALL_DIGESTS \
- | OPENSSL_INIT_LOAD_CONFIG, NULL)
-#define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
- | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
-
-int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
-void q_CRYPTO_free(void *str, const char *file, int line);
-
-long q_OpenSSL_version_num();
-const char *q_OpenSSL_version(int type);
-
-unsigned long q_SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session);
-unsigned long q_SSL_set_options(SSL *s, unsigned long op);
-
-#ifdef TLS1_3_VERSION
-int q_SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
-#endif
-
-#if QT_CONFIG(dtls)
-// Functions and types required for DTLS support:
-extern "C"
-{
-
-typedef int (*CookieVerifyCallback)(SSL *, const unsigned char *, unsigned);
-typedef int (*DgramWriteCallback) (BIO *, const char *, int);
-typedef int (*DgramReadCallback) (BIO *, char *, int);
-typedef int (*DgramPutsCallback) (BIO *, const char *);
-typedef long (*DgramCtrlCallback) (BIO *, int, long, void *);
-typedef int (*DgramCreateCallback) (BIO *);
-typedef int (*DgramDestroyCallback) (BIO *);
-
-}
-
-int q_DTLSv1_listen(SSL *s, BIO_ADDR *client);
-BIO_ADDR *q_BIO_ADDR_new();
-void q_BIO_ADDR_free(BIO_ADDR *ap);
-
-// API we need for a custom dgram BIO:
-
-BIO_METHOD *q_BIO_meth_new(int type, const char *name);
-void q_BIO_meth_free(BIO_METHOD *biom);
-int q_BIO_meth_set_write(BIO_METHOD *biom, DgramWriteCallback);
-int q_BIO_meth_set_read(BIO_METHOD *biom, DgramReadCallback);
-int q_BIO_meth_set_puts(BIO_METHOD *biom, DgramPutsCallback);
-int q_BIO_meth_set_ctrl(BIO_METHOD *biom, DgramCtrlCallback);
-int q_BIO_meth_set_create(BIO_METHOD *biom, DgramCreateCallback);
-int q_BIO_meth_set_destroy(BIO_METHOD *biom, DgramDestroyCallback);
-
-#endif // dtls
-
-void q_BIO_set_data(BIO *a, void *ptr);
-void *q_BIO_get_data(BIO *a);
-void q_BIO_set_init(BIO *a, int init);
-int q_BIO_get_shutdown(BIO *a);
-void q_BIO_set_shutdown(BIO *a, int shut);
-
-#if QT_CONFIG(ocsp)
-const OCSP_CERTID *q_OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x);
-#endif // ocsp
-
-#define q_SSL_CTX_set_min_proto_version(ctx, version) \
- q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, nullptr)
-
-#define q_SSL_CTX_set_max_proto_version(ctx, version) \
- q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, nullptr)
-
-extern "C" {
-typedef int (*q_SSL_psk_use_session_cb_func_t)(SSL *, const EVP_MD *, const unsigned char **, size_t *,
- SSL_SESSION **);
-}
-void q_SSL_set_psk_use_session_callback(SSL *s, q_SSL_psk_use_session_cb_func_t);
-
-#endif
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index c23234e291..0370a7d2ac 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -130,9 +130,7 @@ public:
BIO *writeBio;
SSL_SESSION *session;
QVector<QSslErrorEntry> errorList;
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
static int s_indexForSSLExtraData; // index used in SSL_get_ex_data to get the matching QSslSocketBackendPrivate
-#endif
bool inSetAndEmitError = false;
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index 1fcfdf9f16..3504924888 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -137,10 +137,6 @@ void qsslSocketCannotResolveSymbolWarning(const char *functionName)
#endif // QT_LINKED_OPENSSL
-#if QT_CONFIG(opensslv11)
-
-// Below are the functions first introduced in version 1.1:
-
DEFINEFUNC(const unsigned char *, ASN1_STRING_get0_data, const ASN1_STRING *a, a, return nullptr, return)
DEFINEFUNC2(int, OPENSSL_init_ssl, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return)
DEFINEFUNC2(int, OPENSSL_init_crypto, uint64_t opts, opts, const OPENSSL_INIT_SETTINGS *settings, settings, return 0, return)
@@ -237,93 +233,6 @@ DEFINEFUNC2(void, BIO_set_init, BIO *a, a, int init, init, return, DUMMYARG)
DEFINEFUNC(int, BIO_get_shutdown, BIO *a, a, return -1, return)
DEFINEFUNC2(void, BIO_set_shutdown, BIO *a, a, int shut, shut, return, DUMMYARG)
-#else // QT_CONFIG(opensslv11)
-
-// Functions below are either deprecated or removed in OpenSSL >= 1.1:
-
-DEFINEFUNC(unsigned char *, ASN1_STRING_data, ASN1_STRING *a, a, return nullptr, return)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC3(void *, ASN1_dup, i2d_of_void *a, a, d2i_of_void *b, b, char *c, c, return nullptr, return)
-#endif
-DEFINEFUNC2(BIO *, BIO_new_file, const char *filename, filename, const char *mode, mode, return nullptr, return)
-DEFINEFUNC(void, ERR_clear_error, DUMMYARG, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(BIO *, BIO_new, BIO_METHOD *a, a, return nullptr, return)
-DEFINEFUNC(BIO_METHOD *, BIO_s_mem, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(int, CRYPTO_num_locks, DUMMYARG, DUMMYARG, return 0, return)
-DEFINEFUNC(void, CRYPTO_set_locking_callback, void (*a)(int, int, const char *, int), a, return, DUMMYARG)
-DEFINEFUNC(void, CRYPTO_set_id_callback, unsigned long (*a)(), a, return, DUMMYARG)
-DEFINEFUNC(void, CRYPTO_free, void *a, a, return, DUMMYARG)
-DEFINEFUNC3(int, CRYPTO_set_ex_data, CRYPTO_EX_DATA *ad, ad, int idx, idx, void *val, val, return 0, return)
-DEFINEFUNC2(void *, CRYPTO_get_ex_data, const CRYPTO_EX_DATA *ad, ad, int idx, idx, return nullptr, return)
-DEFINEFUNC(unsigned long, ERR_peek_last_error, DUMMYARG, DUMMYARG, return 0, return)
-DEFINEFUNC(void, ERR_free_strings, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(void, EVP_CIPHER_CTX_cleanup, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
-DEFINEFUNC(void, EVP_CIPHER_CTX_init, EVP_CIPHER_CTX *a, a, return, DUMMYARG)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC6(void *, PEM_ASN1_read_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return nullptr, return)
-DEFINEFUNC6(void *, PEM_ASN1_write_bio, d2i_of_void *a, a, const char *b, b, BIO *c, c, void **d, d, pem_password_cb *e, e, void *f, f, return nullptr, return)
-#endif // SSLEAY_MACROS
-
-DEFINEFUNC(int, sk_num, STACK *a, a, return -1, return)
-DEFINEFUNC2(void, sk_pop_free, STACK *a, a, void (*b)(void*), b, return, DUMMYARG)
-
-DEFINEFUNC(_STACK *, sk_new_null, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC2(void, sk_push, _STACK *a, a, void *b, b, return, DUMMYARG)
-DEFINEFUNC(void, sk_free, _STACK *a, a, return, DUMMYARG)
-DEFINEFUNC2(void *, sk_value, STACK *a, a, int b, b, return nullptr, return)
-
-DEFINEFUNC(int, SSL_library_init, void, DUMMYARG, return -1, return)
-DEFINEFUNC(void, SSL_load_error_strings, void, DUMMYARG, return, DUMMYARG)
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC5(int, SSL_get_ex_new_index, long argl, argl, void *argp, argp, CRYPTO_EX_new *new_func, new_func, CRYPTO_EX_dup *dup_func, dup_func, CRYPTO_EX_free *free_func, free_func, return -1, return)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L
-
-DEFINEFUNC(const SSL_METHOD *, SSLv23_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_client_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#endif
-DEFINEFUNC(const SSL_METHOD *, SSLv23_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-DEFINEFUNC(const SSL_METHOD *, TLSv1_1_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, TLSv1_2_server_method, DUMMYARG, DUMMYARG, return nullptr, return)
-#endif
-
-DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return nullptr, return)
-
-#ifdef SSLEAY_MACROS
-DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
-DEFINEFUNC2(int, i2d_RSAPrivateKey, const RSA *a, a, unsigned char **b, b, return -1, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC2(int, i2d_ECPrivateKey, const EC_KEY *a, a, unsigned char **b, b, return -1, return)
-#endif
-DEFINEFUNC3(RSA *, d2i_RSAPrivateKey, RSA **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-DEFINEFUNC3(DSA *, d2i_DSAPrivateKey, DSA **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC3(EC_KEY *, d2i_ECPrivateKey, EC_KEY **a, a, unsigned char **b, b, long c, c, return nullptr, return)
-#endif
-#endif
-
-#if QT_CONFIG(dtls)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_server_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_client_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_2_server_method, void, DUMMYARG, return nullptr, return)
-DEFINEFUNC(const SSL_METHOD *, DTLSv1_2_client_method, void, DUMMYARG, return nullptr, return)
-#endif // dtls
-
-DEFINEFUNC(char *, CONF_get1_default_config_file, DUMMYARG, DUMMYARG, return nullptr, return)
-DEFINEFUNC(void, OPENSSL_add_all_algorithms_noconf, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(void, OPENSSL_add_all_algorithms_conf, void, DUMMYARG, return, DUMMYARG)
-DEFINEFUNC(long, SSLeay, void, DUMMYARG, return 0, return)
-DEFINEFUNC(const char *, SSLeay_version, int a, a, return nullptr, return)
-
-#endif // QT_CONFIG(opensslv11)
-
DEFINEFUNC(long, ASN1_INTEGER_get, ASN1_INTEGER *a, a, return 0, return)
DEFINEFUNC2(int, ASN1_INTEGER_cmp, const ASN1_INTEGER *a, a, const ASN1_INTEGER *b, b, return 1, return)
DEFINEFUNC(int, ASN1_STRING_length, ASN1_STRING *a, a, return 0, return)
@@ -392,36 +301,28 @@ DEFINEFUNC(int, OBJ_sn2nid, const char *s, s, return 0, return)
DEFINEFUNC(int, OBJ_ln2nid, const char *s, s, return 0, return)
DEFINEFUNC3(int, i2t_ASN1_OBJECT, char *a, a, int b, b, ASN1_OBJECT *c, c, return -1, return)
DEFINEFUNC4(int, OBJ_obj2txt, char *a, a, int b, b, ASN1_OBJECT *c, c, int d, d, return -1, return)
-
DEFINEFUNC(int, OBJ_obj2nid, const ASN1_OBJECT *a, a, return NID_undef, return)
-
-#ifndef SSLEAY_MACROS
DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PrivateKey, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(DSA *, PEM_read_bio_DSAPrivateKey, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(RSA *, PEM_read_bio_RSAPrivateKey, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
+
#ifndef OPENSSL_NO_EC
DEFINEFUNC4(EC_KEY *, PEM_read_bio_ECPrivateKey, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#endif
+DEFINEFUNC7(int, PEM_write_bio_ECPrivateKey, BIO *a, a, EC_KEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
+DEFINEFUNC4(EC_KEY *, PEM_read_bio_EC_PUBKEY, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
+DEFINEFUNC2(int, PEM_write_bio_EC_PUBKEY, BIO *a, a, EC_KEY *b, b, return 0, return)
+#endif // OPENSSL_NO_EC
+
DEFINEFUNC4(DH *, PEM_read_bio_DHparams, BIO *a, a, DH **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC7(int, PEM_write_bio_DSAPrivateKey, BIO *a, a, DSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
DEFINEFUNC7(int, PEM_write_bio_RSAPrivateKey, BIO *a, a, RSA *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
DEFINEFUNC7(int, PEM_write_bio_PrivateKey, BIO *a, a, EVP_PKEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC7(int, PEM_write_bio_ECPrivateKey, BIO *a, a, EC_KEY *b, b, const EVP_CIPHER *c, c, unsigned char *d, d, int e, e, pem_password_cb *f, f, void *g, g, return 0, return)
-#endif
-#endif // !SSLEAY_MACROS
DEFINEFUNC4(EVP_PKEY *, PEM_read_bio_PUBKEY, BIO *a, a, EVP_PKEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(DSA *, PEM_read_bio_DSA_PUBKEY, BIO *a, a, DSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
DEFINEFUNC4(RSA *, PEM_read_bio_RSA_PUBKEY, BIO *a, a, RSA **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC4(EC_KEY *, PEM_read_bio_EC_PUBKEY, BIO *a, a, EC_KEY **b, b, pem_password_cb *c, c, void *d, d, return nullptr, return)
-#endif
DEFINEFUNC2(int, PEM_write_bio_DSA_PUBKEY, BIO *a, a, DSA *b, b, return 0, return)
DEFINEFUNC2(int, PEM_write_bio_RSA_PUBKEY, BIO *a, a, RSA *b, b, return 0, return)
DEFINEFUNC2(int, PEM_write_bio_PUBKEY, BIO *a, a, EVP_PKEY *b, b, return 0, return)
-#ifndef OPENSSL_NO_EC
-DEFINEFUNC2(int, PEM_write_bio_EC_PUBKEY, BIO *a, a, EC_KEY *b, b, return 0, return)
-#endif
DEFINEFUNC2(void, RAND_seed, const void *a, a, int b, b, return, DUMMYARG)
DEFINEFUNC(int, RAND_status, void, DUMMYARG, return -1, return)
DEFINEFUNC2(int, RAND_bytes, unsigned char *b, b, int n, n, return 0, return)
@@ -448,14 +349,12 @@ DEFINEFUNC2(int, SSL_CTX_use_PrivateKey, SSL_CTX *a, a, EVP_PKEY *b, b, return -
DEFINEFUNC2(int, SSL_CTX_use_RSAPrivateKey, SSL_CTX *a, a, RSA *b, b, return -1, return)
DEFINEFUNC3(int, SSL_CTX_use_PrivateKey_file, SSL_CTX *a, a, const char *b, b, int c, c, return -1, return)
DEFINEFUNC(X509_STORE *, SSL_CTX_get_cert_store, const SSL_CTX *a, a, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC(SSL_CONF_CTX *, SSL_CONF_CTX_new, DUMMYARG, DUMMYARG, return nullptr, return);
DEFINEFUNC(void, SSL_CONF_CTX_free, SSL_CONF_CTX *a, a, return ,return);
DEFINEFUNC2(void, SSL_CONF_CTX_set_ssl_ctx, SSL_CONF_CTX *a, a, SSL_CTX *b, b, return, return);
DEFINEFUNC2(unsigned int, SSL_CONF_CTX_set_flags, SSL_CONF_CTX *a, a, unsigned int b, b, return 0, return);
DEFINEFUNC(int, SSL_CONF_CTX_finish, SSL_CONF_CTX *a, a, return 0, return);
DEFINEFUNC3(int, SSL_CONF_cmd, SSL_CONF_CTX *a, a, const char *b, b, const char *c, c, return 0, return);
-#endif
DEFINEFUNC(void, SSL_free, SSL *a, a, return, DUMMYARG)
DEFINEFUNC(STACK_OF(SSL_CIPHER) *, SSL_get_ciphers, const SSL *a, a, return nullptr, return)
DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr, return)
@@ -477,21 +376,19 @@ DEFINEFUNC2(int, SSL_set_session, SSL* to, to, SSL_SESSION *session, session, re
DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG)
DEFINEFUNC(SSL_SESSION*, SSL_get1_session, SSL *ssl, ssl, return nullptr, return)
DEFINEFUNC(SSL_SESSION*, SSL_get_session, const SSL *ssl, ssl, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
DEFINEFUNC3(int, SSL_set_ex_data, SSL *ssl, ssl, int idx, idx, void *arg, arg, return 0, return)
DEFINEFUNC2(void *, SSL_get_ex_data, const SSL *ssl, ssl, int idx, idx, return nullptr, return)
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+
+#ifndef OPENSSL_NO_PSK
DEFINEFUNC2(void, SSL_set_psk_client_callback, SSL* ssl, ssl, q_psk_client_callback_t callback, callback, return, DUMMYARG)
DEFINEFUNC2(void, SSL_set_psk_server_callback, SSL* ssl, ssl, q_psk_server_callback_t callback, callback, return, DUMMYARG)
DEFINEFUNC2(int, SSL_CTX_use_psk_identity_hint, SSL_CTX* ctx, ctx, const char *hint, hint, return 0, return)
-#endif
+#endif // !OPENSSL_NO_PSK
+
DEFINEFUNC3(int, SSL_write, SSL *a, a, const void *b, b, int c, c, return -1, return)
DEFINEFUNC2(int, X509_cmp, X509 *a, a, X509 *b, b, return -1, return)
DEFINEFUNC4(int, X509_digest, const X509 *x509, x509, const EVP_MD *type, type, unsigned char *md, md, unsigned int *len, len, return -1, return)
-#ifndef SSLEAY_MACROS
DEFINEFUNC(X509 *, X509_dup, X509 *a, a, return nullptr, return)
-#endif
DEFINEFUNC2(void, X509_print, BIO *a, a, X509 *b, b, return, DUMMYARG);
DEFINEFUNC(ASN1_OBJECT *, X509_EXTENSION_get_object, X509_EXTENSION *a, a, return nullptr, return)
DEFINEFUNC(void, X509_free, X509 *a, a, return, DUMMYARG)
@@ -535,7 +432,8 @@ DEFINEFUNC(int, SSL_get_ex_data_X509_STORE_CTX_idx, DUMMYARG, DUMMYARG, return -
DEFINEFUNC3(int, SSL_CTX_load_verify_locations, SSL_CTX *ctx, ctx, const char *CAfile, CAfile, const char *CApath, CApath, return 0, return)
DEFINEFUNC2(int, i2d_SSL_SESSION, SSL_SESSION *in, in, unsigned char **pp, pp, return 0, return)
DEFINEFUNC3(SSL_SESSION *, d2i_SSL_SESSION, SSL_SESSION **a, a, const unsigned char **pp, pp, long length, length, return nullptr, return)
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+
+#ifndef OPENSSL_NO_NEXTPROTONEG
DEFINEFUNC6(int, SSL_select_next_proto, unsigned char **out, out, unsigned char *outlen, outlen,
const unsigned char *in, in, unsigned int inlen, inlen,
const unsigned char *client, client, unsigned int client_len, client_len,
@@ -548,7 +446,6 @@ DEFINEFUNC3(void, SSL_CTX_set_next_proto_select_cb, SSL_CTX *s, s,
void *arg, arg, return, DUMMYARG)
DEFINEFUNC3(void, SSL_get0_next_proto_negotiated, const SSL *s, s,
const unsigned char **data, data, unsigned *len, len, return, DUMMYARG)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC3(int, SSL_set_alpn_protos, SSL *s, s, const unsigned char *protos, protos,
unsigned protos_len, protos_len, return -1, return)
DEFINEFUNC3(void, SSL_CTX_set_alpn_select_cb, SSL_CTX *s, s,
@@ -559,8 +456,7 @@ DEFINEFUNC3(void, SSL_CTX_set_alpn_select_cb, SSL_CTX *s, s,
void *arg, arg, return, DUMMYARG)
DEFINEFUNC3(void, SSL_get0_alpn_selected, const SSL *s, s, const unsigned char **data, data,
unsigned *len, len, return, DUMMYARG)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
// DTLS:
#if QT_CONFIG(dtls)
@@ -581,14 +477,13 @@ DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long len
DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return)
DEFINEFUNC2(int, DH_check, DH *dh, dh, int *codes, codes, return 0, return)
DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return)
+
#ifndef OPENSSL_NO_EC
DEFINEFUNC(EC_KEY *, EC_KEY_dup, const EC_KEY *ec, ec, return nullptr, return)
DEFINEFUNC(EC_KEY *, EC_KEY_new_by_curve_name, int nid, nid, return nullptr, return)
DEFINEFUNC(void, EC_KEY_free, EC_KEY *ecdh, ecdh, return, DUMMYARG)
DEFINEFUNC2(size_t, EC_get_builtin_curves, EC_builtin_curve * r, r, size_t nitems, nitems, return 0, return)
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
DEFINEFUNC(int, EC_curve_nist2nid, const char *name, name, return 0, return)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
#endif // OPENSSL_NO_EC
DEFINEFUNC5(int, PKCS12_parse, PKCS12 *p12, p12, const char *pass, pass, EVP_PKEY **pkey, pkey, \
@@ -760,7 +655,6 @@ static LoadedOpenSsl loadOpenSsl()
{
LoadedOpenSsl result;
-#if QT_CONFIG(opensslv11)
// With OpenSSL 1.1 the names have changed to libssl-1_1(-x64) and libcrypto-1_1(-x64), for builds using
// MSVC and GCC, (-x64 suffix for 64-bit builds).
@@ -774,21 +668,6 @@ static LoadedOpenSsl loadOpenSsl()
QLatin1String("libcrypto-1_1" QT_SSL_SUFFIX), result);
#undef QT_SSL_SUFFIX
-
-#else // QT_CONFIG(opensslv11)
-
- // When OpenSSL is built using MSVC then the libraries are named 'ssleay32.dll' and 'libeay32'dll'.
- // When OpenSSL is built using GCC then different library names are used (depending on the OpenSSL version)
- // The oldest version of a GCC-based OpenSSL which can be detected by the code below is 0.9.8g (released in 2007)
- if (!tryToLoadOpenSslWin32Library(QLatin1String("ssleay32"), QLatin1String("libeay32"), result)) {
- if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-10"), QLatin1String("libcrypto-10"), result)) {
- if (!tryToLoadOpenSslWin32Library(QLatin1String("libssl-8"), QLatin1String("libcrypto-8"), result)) {
- tryToLoadOpenSslWin32Library(QLatin1String("libssl-7"), QLatin1String("libcrypto-7"), result);
- }
- }
- }
-#endif // !QT_CONFIG(opensslv11)
-
return result;
}
#else
@@ -852,27 +731,6 @@ static LoadedOpenSsl loadOpenSsl()
libssl->unload();
libcrypto->unload();
}
-
-#if !QT_CONFIG(opensslv11)
- // first-and-half attempts: for OpenSSL 1.0 try to load some hardcoded sonames:
- // - "1.0.0" is the official upstream one
- // - "1.0.2" is found on some distributions (e.g. Debian) that patch OpenSSL
- static const QLatin1String fallbackSonames[] = {
- QLatin1String("1.0.0"),
- QLatin1String("1.0.2")
- };
-
- for (auto fallbackSoname : fallbackSonames) {
- libssl->setFileNameAndVersion(QLatin1String("ssl"), fallbackSoname);
- libcrypto->setFileNameAndVersion(QLatin1String("crypto"), fallbackSoname);
- if (libcrypto->load() && libssl->load()) {
- return result;
- } else {
- libssl->unload();
- libcrypto->unload();
- }
- }
-#endif
#endif
#ifndef Q_OS_DARWIN
@@ -890,11 +748,9 @@ static LoadedOpenSsl loadOpenSsl()
return defaultSuffix;
return suffix;
};
-# if QT_CONFIG(opensslv11)
+
static QString suffix = QString::fromLatin1(openSSLSuffix("_1_1"));
-# else
- static QString suffix = QString::fromLatin1(openSSLSuffix());
-# endif
+
libssl->setFileNameAndVersion(QLatin1String("ssl") + suffix, -1);
libcrypto->setFileNameAndVersion(QLatin1String("crypto") + suffix, -1);
# else
@@ -968,8 +824,6 @@ bool q_resolveOpenSslSymbols()
// failed to load them
return false;
-#if QT_CONFIG(opensslv11)
-
RESOLVEFUNC(OPENSSL_init_ssl)
RESOLVEFUNC(OPENSSL_init_crypto)
RESOLVEFUNC(ASN1_STRING_get0_data)
@@ -985,10 +839,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(OPENSSL_sk_value)
RESOLVEFUNC(DH_get0_pqg)
RESOLVEFUNC(SSL_CTX_set_options)
+
#ifdef TLS1_3_VERSION
RESOLVEFUNC(SSL_CTX_set_ciphersuites)
RESOLVEFUNC(SSL_set_psk_use_session_callback)
#endif // TLS 1.3 or OpenSSL > 1.1.1
+
RESOLVEFUNC(SSL_get_client_random)
RESOLVEFUNC(SSL_SESSION_get_master_key)
RESOLVEFUNC(SSL_session_reused)
@@ -1010,6 +866,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(CRYPTO_free)
RESOLVEFUNC(OpenSSL_version_num)
RESOLVEFUNC(OpenSSL_version)
+
if (!_q_OpenSSL_version) {
// Apparently, we were built with OpenSSL 1.1 enabled but are now using
// a wrong library.
@@ -1034,6 +891,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(BIO_meth_set_create)
RESOLVEFUNC(BIO_meth_set_destroy)
#endif // dtls
+
#if QT_CONFIG(ocsp)
RESOLVEFUNC(OCSP_SINGLERESP_get0_id)
RESOLVEFUNC(d2i_OCSP_RESPONSE)
@@ -1058,99 +916,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(OCSP_cert_to_id)
RESOLVEFUNC(OCSP_id_cmp)
#endif // ocsp
+
RESOLVEFUNC(BIO_set_data)
RESOLVEFUNC(BIO_get_data)
RESOLVEFUNC(BIO_set_init)
RESOLVEFUNC(BIO_get_shutdown)
RESOLVEFUNC(BIO_set_shutdown)
-#else // !opensslv11
-
- RESOLVEFUNC(ASN1_STRING_data)
-
-#ifdef SSLEAY_MACROS
- RESOLVEFUNC(ASN1_dup)
-#endif // SSLEAY_MACROS
- RESOLVEFUNC(BIO_new_file)
- RESOLVEFUNC(ERR_clear_error)
- RESOLVEFUNC(CRYPTO_free)
- RESOLVEFUNC(CRYPTO_num_locks)
- RESOLVEFUNC(CRYPTO_set_id_callback)
- RESOLVEFUNC(CRYPTO_set_locking_callback)
- RESOLVEFUNC(CRYPTO_set_ex_data)
- RESOLVEFUNC(CRYPTO_get_ex_data)
- RESOLVEFUNC(ERR_peek_last_error)
- RESOLVEFUNC(ERR_free_strings)
- RESOLVEFUNC(EVP_CIPHER_CTX_cleanup)
- RESOLVEFUNC(EVP_CIPHER_CTX_init)
-
-#ifdef SSLEAY_MACROS // ### verify
- RESOLVEFUNC(PEM_ASN1_read_bio)
-#endif // SSLEAY_MACROS
-
- RESOLVEFUNC(sk_new_null)
- RESOLVEFUNC(sk_push)
- RESOLVEFUNC(sk_free)
- RESOLVEFUNC(sk_num)
- RESOLVEFUNC(sk_pop_free)
- RESOLVEFUNC(sk_value)
- RESOLVEFUNC(SSL_library_init)
- RESOLVEFUNC(SSL_load_error_strings)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(SSL_get_ex_new_index)
-#endif
- RESOLVEFUNC(SSLv23_client_method)
- RESOLVEFUNC(TLSv1_client_method)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(TLSv1_1_client_method)
- RESOLVEFUNC(TLSv1_2_client_method)
-#endif
- RESOLVEFUNC(SSLv23_server_method)
- RESOLVEFUNC(TLSv1_server_method)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- RESOLVEFUNC(TLSv1_1_server_method)
- RESOLVEFUNC(TLSv1_2_server_method)
-#endif
- RESOLVEFUNC(X509_STORE_CTX_get_chain)
-#ifdef SSLEAY_MACROS
- RESOLVEFUNC(i2d_DSAPrivateKey)
- RESOLVEFUNC(i2d_RSAPrivateKey)
- RESOLVEFUNC(d2i_DSAPrivateKey)
- RESOLVEFUNC(d2i_RSAPrivateKey)
-#endif
-
-#if QT_CONFIG(dtls)
- RESOLVEFUNC(DTLSv1_server_method)
- RESOLVEFUNC(DTLSv1_client_method)
- RESOLVEFUNC(DTLSv1_2_server_method)
- RESOLVEFUNC(DTLSv1_2_client_method)
-#endif // dtls
-
- RESOLVEFUNC(CONF_get1_default_config_file)
- RESOLVEFUNC(OPENSSL_add_all_algorithms_noconf)
- RESOLVEFUNC(OPENSSL_add_all_algorithms_conf)
- RESOLVEFUNC(SSLeay)
-
- if (!_q_SSLeay || q_SSLeay() >= 0x10100000L) {
- // OpenSSL 1.1 has deprecated and removed SSLeay. We consider a failure to
- // resolve this symbol as a failure to resolve symbols.
- // The right operand of '||' above is ... a bit of paranoia.
- qCWarning(lcSsl, "Incompatible version of OpenSSL");
- return false;
- }
-
-
- RESOLVEFUNC(SSLeay_version)
-
-#ifndef OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L)
- RESOLVEFUNC(EC_curve_nist2nid)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
-#endif // OPENSSL_NO_EC
-
-
-#endif // !opensslv11
-
RESOLVEFUNC(ASN1_INTEGER_get)
RESOLVEFUNC(ASN1_INTEGER_cmp)
RESOLVEFUNC(ASN1_STRING_length)
@@ -1172,9 +943,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EC_GROUP_get_degree)
#endif
RESOLVEFUNC(BN_num_bits)
-#if QT_CONFIG(opensslv11)
RESOLVEFUNC(BN_is_word)
-#endif
RESOLVEFUNC(BN_mod_word)
RESOLVEFUNC(DSA_new)
RESOLVEFUNC(DSA_free)
@@ -1207,17 +976,21 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(EVP_PKEY_set1_RSA)
RESOLVEFUNC(EVP_PKEY_set1_DSA)
RESOLVEFUNC(EVP_PKEY_set1_DH)
+
#ifndef OPENSSL_NO_EC
RESOLVEFUNC(EVP_PKEY_set1_EC_KEY)
-#endif
+ RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
+ RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
+ RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
+ RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
+ RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
+#endif // OPENSSL_NO_EC
+
RESOLVEFUNC(EVP_PKEY_cmp)
RESOLVEFUNC(EVP_PKEY_free)
RESOLVEFUNC(EVP_PKEY_get1_DSA)
RESOLVEFUNC(EVP_PKEY_get1_RSA)
RESOLVEFUNC(EVP_PKEY_get1_DH)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(EVP_PKEY_get1_EC_KEY)
-#endif
RESOLVEFUNC(EVP_PKEY_new)
RESOLVEFUNC(EVP_PKEY_type)
RESOLVEFUNC(OBJ_nid2sn)
@@ -1227,35 +1000,19 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(i2t_ASN1_OBJECT)
RESOLVEFUNC(OBJ_obj2txt)
RESOLVEFUNC(OBJ_obj2nid)
-
-#ifndef SSLEAY_MACROS
RESOLVEFUNC(PEM_read_bio_PrivateKey)
RESOLVEFUNC(PEM_read_bio_DSAPrivateKey)
RESOLVEFUNC(PEM_read_bio_RSAPrivateKey)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_read_bio_ECPrivateKey)
-#endif
RESOLVEFUNC(PEM_read_bio_DHparams)
RESOLVEFUNC(PEM_write_bio_DSAPrivateKey)
RESOLVEFUNC(PEM_write_bio_RSAPrivateKey)
RESOLVEFUNC(PEM_write_bio_PrivateKey)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_write_bio_ECPrivateKey)
-#endif
-#endif // !SSLEAY_MACROS
-
RESOLVEFUNC(PEM_read_bio_PUBKEY)
RESOLVEFUNC(PEM_read_bio_DSA_PUBKEY)
RESOLVEFUNC(PEM_read_bio_RSA_PUBKEY)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_read_bio_EC_PUBKEY)
-#endif
RESOLVEFUNC(PEM_write_bio_DSA_PUBKEY)
RESOLVEFUNC(PEM_write_bio_RSA_PUBKEY)
RESOLVEFUNC(PEM_write_bio_PUBKEY)
-#ifndef OPENSSL_NO_EC
- RESOLVEFUNC(PEM_write_bio_EC_PUBKEY)
-#endif
RESOLVEFUNC(RAND_seed)
RESOLVEFUNC(RAND_status)
RESOLVEFUNC(RAND_bytes)
@@ -1279,14 +1036,12 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_CTX_use_RSAPrivateKey)
RESOLVEFUNC(SSL_CTX_use_PrivateKey_file)
RESOLVEFUNC(SSL_CTX_get_cert_store);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
RESOLVEFUNC(SSL_CONF_CTX_new);
RESOLVEFUNC(SSL_CONF_CTX_free);
RESOLVEFUNC(SSL_CONF_CTX_set_ssl_ctx);
RESOLVEFUNC(SSL_CONF_CTX_set_flags);
RESOLVEFUNC(SSL_CONF_CTX_finish);
RESOLVEFUNC(SSL_CONF_cmd);
-#endif
RESOLVEFUNC(SSL_accept)
RESOLVEFUNC(SSL_clear)
RESOLVEFUNC(SSL_connect)
@@ -1311,16 +1066,16 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_SESSION_free)
RESOLVEFUNC(SSL_get1_session)
RESOLVEFUNC(SSL_get_session)
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
RESOLVEFUNC(SSL_set_ex_data)
RESOLVEFUNC(SSL_get_ex_data)
RESOLVEFUNC(SSL_get_ex_data_X509_STORE_CTX_idx)
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+
+#ifndef OPENSSL_NO_PSK
RESOLVEFUNC(SSL_set_psk_client_callback)
RESOLVEFUNC(SSL_set_psk_server_callback)
RESOLVEFUNC(SSL_CTX_use_psk_identity_hint)
-#endif
+#endif // !OPENSSL_NO_PSK
+
RESOLVEFUNC(SSL_write)
RESOLVEFUNC(X509_NAME_entry_count)
RESOLVEFUNC(X509_NAME_get_entry)
@@ -1340,10 +1095,7 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(X509_STORE_CTX_get0_store)
RESOLVEFUNC(X509_cmp)
RESOLVEFUNC(X509_STORE_CTX_get_ex_data)
-
-#ifndef SSLEAY_MACROS
RESOLVEFUNC(X509_dup)
-#endif
RESOLVEFUNC(X509_print)
RESOLVEFUNC(X509_digest)
RESOLVEFUNC(X509_EXTENSION_get_object)
@@ -1371,22 +1123,23 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(SSL_CTX_load_verify_locations)
RESOLVEFUNC(i2d_SSL_SESSION)
RESOLVEFUNC(d2i_SSL_SESSION)
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+
+#ifndef OPENSSL_NO_NEXTPROTONEG
RESOLVEFUNC(SSL_select_next_proto)
RESOLVEFUNC(SSL_CTX_set_next_proto_select_cb)
RESOLVEFUNC(SSL_get0_next_proto_negotiated)
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
RESOLVEFUNC(SSL_set_alpn_protos)
RESOLVEFUNC(SSL_CTX_set_alpn_select_cb)
RESOLVEFUNC(SSL_get0_alpn_selected)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
#if QT_CONFIG(dtls)
RESOLVEFUNC(SSL_CTX_set_cookie_generate_cb)
RESOLVEFUNC(SSL_CTX_set_cookie_verify_cb)
RESOLVEFUNC(DTLS_server_method)
RESOLVEFUNC(DTLS_client_method)
#endif // dtls
+
RESOLVEFUNC(CRYPTO_malloc)
RESOLVEFUNC(DH_new)
RESOLVEFUNC(DH_free)
@@ -1394,12 +1147,14 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(i2d_DHparams)
RESOLVEFUNC(DH_check)
RESOLVEFUNC(BN_bin2bn)
+
#ifndef OPENSSL_NO_EC
RESOLVEFUNC(EC_KEY_dup)
RESOLVEFUNC(EC_KEY_new_by_curve_name)
RESOLVEFUNC(EC_KEY_free)
RESOLVEFUNC(EC_get_builtin_curves)
#endif // OPENSSL_NO_EC
+
RESOLVEFUNC(PKCS12_parse)
RESOLVEFUNC(d2i_PKCS12_bio)
RESOLVEFUNC(PKCS12_free)
diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
index 69b2b90fbd..baf1a43113 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -220,11 +220,129 @@ QT_BEGIN_NAMESPACE
#endif // !defined QT_LINKED_OPENSSL
-#if QT_CONFIG(opensslv11)
-#include "qsslsocket_openssl11_symbols_p.h"
-#else
-#include "qsslsocket_opensslpre11_symbols_p.h"
-#endif // QT_CONFIG
+// TODO: the following lines previously were a part of 1.1 - specific header.
+// To reduce the amount of the change, I'm directly copying and pasting the
+// content of the header here. Later, can be better sorted/split into groups,
+// depending on the functionality.
+//#include "qsslsocket_openssl11_symbols_p.h"
+
+const unsigned char * q_ASN1_STRING_get0_data(const ASN1_STRING *x);
+
+Q_AUTOTEST_EXPORT BIO *q_BIO_new(const BIO_METHOD *a);
+Q_AUTOTEST_EXPORT const BIO_METHOD *q_BIO_s_mem();
+
+int q_DSA_bits(DSA *a);
+int q_EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
+Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
+int q_EVP_PKEY_base_id(EVP_PKEY *a);
+int q_RSA_bits(RSA *a);
+Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+Q_AUTOTEST_EXPORT OPENSSL_STACK *q_OPENSSL_sk_new_null();
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
+Q_AUTOTEST_EXPORT void q_OPENSSL_sk_free(OPENSSL_STACK *a);
+Q_AUTOTEST_EXPORT void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
+int q_SSL_session_reused(SSL *a);
+unsigned long q_SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op);
+int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+size_t q_SSL_get_client_random(SSL *a, unsigned char *out, size_t outlen);
+size_t q_SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen);
+int q_CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
+const SSL_METHOD *q_TLS_method();
+const SSL_METHOD *q_TLS_client_method();
+const SSL_METHOD *q_TLS_server_method();
+ASN1_TIME *q_X509_getm_notBefore(X509 *a);
+ASN1_TIME *q_X509_getm_notAfter(X509 *a);
+
+Q_AUTOTEST_EXPORT void q_X509_up_ref(X509 *a);
+long q_X509_get_version(X509 *a);
+EVP_PKEY *q_X509_get_pubkey(X509 *a);
+void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
+int q_X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data);
+void *q_X509_STORE_get_ex_data(X509_STORE *r, int idx);
+STACK_OF(X509) *q_X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx);
+void q_DH_get0_pqg(const DH *dh, const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
+int q_DH_bits(DH *dh);
+
+# define q_SSL_load_error_strings() q_OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \
+ | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL)
+
+#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_OPENSSL_sk_num)(st)
+#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_OPENSSL_sk_value)(st, i)
+
+#define q_OPENSSL_add_all_algorithms_conf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
+ | OPENSSL_INIT_ADD_ALL_DIGESTS \
+ | OPENSSL_INIT_LOAD_CONFIG, NULL)
+#define q_OPENSSL_add_all_algorithms_noconf() q_OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
+ | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
+
+int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
+void q_CRYPTO_free(void *str, const char *file, int line);
+
+long q_OpenSSL_version_num();
+const char *q_OpenSSL_version(int type);
+
+unsigned long q_SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *session);
+unsigned long q_SSL_set_options(SSL *s, unsigned long op);
+
+#ifdef TLS1_3_VERSION
+int q_SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str);
+#endif
+
+#if QT_CONFIG(dtls)
+// Functions and types required for DTLS support:
+extern "C"
+{
+
+typedef int (*CookieVerifyCallback)(SSL *, const unsigned char *, unsigned);
+typedef int (*DgramWriteCallback) (BIO *, const char *, int);
+typedef int (*DgramReadCallback) (BIO *, char *, int);
+typedef int (*DgramPutsCallback) (BIO *, const char *);
+typedef long (*DgramCtrlCallback) (BIO *, int, long, void *);
+typedef int (*DgramCreateCallback) (BIO *);
+typedef int (*DgramDestroyCallback) (BIO *);
+
+}
+
+int q_DTLSv1_listen(SSL *s, BIO_ADDR *client);
+BIO_ADDR *q_BIO_ADDR_new();
+void q_BIO_ADDR_free(BIO_ADDR *ap);
+
+// API we need for a custom dgram BIO:
+
+BIO_METHOD *q_BIO_meth_new(int type, const char *name);
+void q_BIO_meth_free(BIO_METHOD *biom);
+int q_BIO_meth_set_write(BIO_METHOD *biom, DgramWriteCallback);
+int q_BIO_meth_set_read(BIO_METHOD *biom, DgramReadCallback);
+int q_BIO_meth_set_puts(BIO_METHOD *biom, DgramPutsCallback);
+int q_BIO_meth_set_ctrl(BIO_METHOD *biom, DgramCtrlCallback);
+int q_BIO_meth_set_create(BIO_METHOD *biom, DgramCreateCallback);
+int q_BIO_meth_set_destroy(BIO_METHOD *biom, DgramDestroyCallback);
+
+#endif // dtls
+
+void q_BIO_set_data(BIO *a, void *ptr);
+void *q_BIO_get_data(BIO *a);
+void q_BIO_set_init(BIO *a, int init);
+int q_BIO_get_shutdown(BIO *a);
+void q_BIO_set_shutdown(BIO *a, int shut);
+
+#if QT_CONFIG(ocsp)
+const OCSP_CERTID *q_OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *x);
+#endif // ocsp
+
+#define q_SSL_CTX_set_min_proto_version(ctx, version) \
+ q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, nullptr)
+
+#define q_SSL_CTX_set_max_proto_version(ctx, version) \
+ q_SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, nullptr)
+
+extern "C" {
+typedef int (*q_SSL_psk_use_session_cb_func_t)(SSL *, const EVP_MD *, const unsigned char **, size_t *,
+ SSL_SESSION **);
+}
+void q_SSL_set_psk_use_session_callback(SSL *s, q_SSL_psk_use_session_cb_func_t);
+// Here the content of the 1.1 header ends.
bool q_resolveOpenSslSymbols();
long q_ASN1_INTEGER_get(ASN1_INTEGER *a);
@@ -237,27 +355,14 @@ BIO *q_BIO_new_mem_buf(void *a, int b);
int q_BIO_read(BIO *a, void *b, int c);
Q_AUTOTEST_EXPORT int q_BIO_write(BIO *a, const void *b, int c);
int q_BN_num_bits(const BIGNUM *a);
-
-#if QT_CONFIG(opensslv11)
int q_BN_is_word(BIGNUM *a, BN_ULONG w);
-#else // opensslv11
-// BN_is_word is implemented purely as a
-// macro in OpenSSL < 1.1. It doesn't
-// call any functions.
-//
-// The implementation of BN_is_word is
-// 100% the same between 1.0.0, 1.0.1
-// and 1.0.2.
-//
-// Users are required to include <openssl/bn.h>.
-#define q_BN_is_word BN_is_word
-#endif // !opensslv11
-
BN_ULONG q_BN_mod_word(const BIGNUM *a, BN_ULONG w);
+
#ifndef OPENSSL_NO_EC
const EC_GROUP* q_EC_KEY_get0_group(const EC_KEY* k);
int q_EC_GROUP_get_degree(const EC_GROUP* g);
-#endif
+#endif // OPENSSL_NO_EC
+
DSA *q_DSA_new();
void q_DSA_free(DSA *a);
X509 *q_d2i_X509(X509 **a, const unsigned char **b, long c);
@@ -277,23 +382,28 @@ const EVP_MD *q_EVP_get_digestbyname(const char *name);
#ifndef OPENSSL_NO_DES
const EVP_CIPHER *q_EVP_des_cbc();
const EVP_CIPHER *q_EVP_des_ede3_cbc();
-#endif
+#endif // OPENSSL_NO_DES
+
#ifndef OPENSSL_NO_RC2
const EVP_CIPHER *q_EVP_rc2_cbc();
-#endif
+#endif // OPENSSL_NO_RC2
+
#ifndef OPENSSL_NO_AES
const EVP_CIPHER *q_EVP_aes_128_cbc();
const EVP_CIPHER *q_EVP_aes_192_cbc();
const EVP_CIPHER *q_EVP_aes_256_cbc();
-#endif
+#endif // OPENSSL_NO_AES
+
Q_AUTOTEST_EXPORT const EVP_MD *q_EVP_sha1();
int q_EVP_PKEY_assign(EVP_PKEY *a, int b, char *c);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_RSA(EVP_PKEY *a, RSA *b);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_DSA(EVP_PKEY *a, DSA *b);
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_DH(EVP_PKEY *a, DH *b);
+
#ifndef OPENSSL_NO_EC
Q_AUTOTEST_EXPORT int q_EVP_PKEY_set1_EC_KEY(EVP_PKEY *a, EC_KEY *b);
#endif
+
Q_AUTOTEST_EXPORT int q_EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
Q_AUTOTEST_EXPORT void q_EVP_PKEY_free(EVP_PKEY *a);
RSA *q_EVP_PKEY_get1_RSA(EVP_PKEY *a);
@@ -313,18 +423,18 @@ int q_i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *obj);
int q_OBJ_obj2txt(char *buf, int buf_len, ASN1_OBJECT *obj, int no_name);
int q_OBJ_obj2nid(const ASN1_OBJECT *a);
#define q_EVP_get_digestbynid(a) q_EVP_get_digestbyname(q_OBJ_nid2sn(a))
-#ifdef SSLEAY_MACROS
-// ### verify
-void *q_PEM_ASN1_read_bio(d2i_of_void *a, const char *b, BIO *c, void **d, pem_password_cb *e,
- void *f);
-// ### ditto for write
-#else
Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PrivateKey(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d);
DSA *q_PEM_read_bio_DSAPrivateKey(BIO *a, DSA **b, pem_password_cb *c, void *d);
RSA *q_PEM_read_bio_RSAPrivateKey(BIO *a, RSA **b, pem_password_cb *c, void *d);
+
#ifndef OPENSSL_NO_EC
EC_KEY *q_PEM_read_bio_ECPrivateKey(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
-#endif
+int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d,
+ int e, pem_password_cb *f, void *g);
+EC_KEY *q_PEM_read_bio_EC_PUBKEY(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
+int q_PEM_write_bio_EC_PUBKEY(BIO *a, EC_KEY *b);
+#endif // OPENSSL_NO_EC
+
DH *q_PEM_read_bio_DHparams(BIO *a, DH **b, pem_password_cb *c, void *d);
int q_PEM_write_bio_DSAPrivateKey(BIO *a, DSA *b, const EVP_CIPHER *c, unsigned char *d,
int e, pem_password_cb *f, void *g);
@@ -332,23 +442,13 @@ int q_PEM_write_bio_RSAPrivateKey(BIO *a, RSA *b, const EVP_CIPHER *c, unsigned
int e, pem_password_cb *f, void *g);
int q_PEM_write_bio_PrivateKey(BIO *a, EVP_PKEY *b, const EVP_CIPHER *c, unsigned char *d,
int e, pem_password_cb *f, void *g);
-#ifndef OPENSSL_NO_EC
-int q_PEM_write_bio_ECPrivateKey(BIO *a, EC_KEY *b, const EVP_CIPHER *c, unsigned char *d,
- int e, pem_password_cb *f, void *g);
-#endif
-#endif // SSLEAY_MACROS
Q_AUTOTEST_EXPORT EVP_PKEY *q_PEM_read_bio_PUBKEY(BIO *a, EVP_PKEY **b, pem_password_cb *c, void *d);
DSA *q_PEM_read_bio_DSA_PUBKEY(BIO *a, DSA **b, pem_password_cb *c, void *d);
RSA *q_PEM_read_bio_RSA_PUBKEY(BIO *a, RSA **b, pem_password_cb *c, void *d);
-#ifndef OPENSSL_NO_EC
-EC_KEY *q_PEM_read_bio_EC_PUBKEY(BIO *a, EC_KEY **b, pem_password_cb *c, void *d);
-#endif
int q_PEM_write_bio_DSA_PUBKEY(BIO *a, DSA *b);
int q_PEM_write_bio_RSA_PUBKEY(BIO *a, RSA *b);
int q_PEM_write_bio_PUBKEY(BIO *a, EVP_PKEY *b);
-#ifndef OPENSSL_NO_EC
-int q_PEM_write_bio_EC_PUBKEY(BIO *a, EC_KEY *b);
-#endif
+
void q_RAND_seed(const void *a, int b);
int q_RAND_status();
int q_RAND_bytes(unsigned char *b, int n);
@@ -378,14 +478,12 @@ int q_SSL_CTX_use_PrivateKey(SSL_CTX *a, EVP_PKEY *b);
int q_SSL_CTX_use_RSAPrivateKey(SSL_CTX *a, RSA *b);
int q_SSL_CTX_use_PrivateKey_file(SSL_CTX *a, const char *b, int c);
X509_STORE *q_SSL_CTX_get_cert_store(const SSL_CTX *a);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
-#endif
void q_SSL_free(SSL *a);
STACK_OF(SSL_CIPHER) *q_SSL_get_ciphers(const SSL *a);
const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
@@ -407,26 +505,18 @@ int q_SSL_set_session(SSL *to, SSL_SESSION *session);
void q_SSL_SESSION_free(SSL_SESSION *ses);
SSL_SESSION *q_SSL_get1_session(SSL *ssl);
SSL_SESSION *q_SSL_get_session(const SSL *ssl);
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
int q_SSL_set_ex_data(SSL *ssl, int idx, void *arg);
void *q_SSL_get_ex_data(const SSL *ssl, int idx);
-#endif
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#ifndef OPENSSL_NO_PSK
typedef unsigned int (*q_psk_client_callback_t)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len);
void q_SSL_set_psk_client_callback(SSL *ssl, q_psk_client_callback_t callback);
typedef unsigned int (*q_psk_server_callback_t)(SSL *ssl, const char *identity, unsigned char *psk, unsigned int max_psk_len);
void q_SSL_set_psk_server_callback(SSL *ssl, q_psk_server_callback_t callback);
int q_SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint);
-#endif // OPENSSL_VERSION_NUMBER >= 0x10001000L && !defined(OPENSSL_NO_PSK)
+#endif // !OPENSSL_NO_PSK
int q_SSL_write(SSL *a, const void *b, int c);
int q_X509_cmp(X509 *a, X509 *b);
-#ifdef SSLEAY_MACROS
-void *q_ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x);
-#define q_X509_dup(x509) (X509 *)q_ASN1_dup((i2d_of_void *)q_i2d_X509, \
- (d2i_of_void *)q_d2i_X509,(char *)x509)
-#else
X509 *q_X509_dup(X509 *a);
-#endif
void q_X509_print(BIO *a, X509*b);
int q_X509_digest(const X509 *x509, const EVP_MD *type, unsigned char *md, unsigned int *len);
ASN1_OBJECT *q_X509_EXTENSION_get_object(X509_EXTENSION *a);
@@ -485,13 +575,10 @@ void q_EC_KEY_free(EC_KEY *ecdh);
// EC curves management
size_t q_EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
int q_EC_curve_nist2nid(const char *name);
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
#endif // OPENSSL_NO_EC
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
+
#define q_SSL_get_server_tmp_key(ssl, key) q_SSL_ctrl((ssl), SSL_CTRL_GET_SERVER_TMP_KEY, 0, (char *)key)
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L
// PKCS#12 support
int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
@@ -521,7 +608,7 @@ int q_SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, const char
int q_i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
SSL_SESSION *q_d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length);
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
+#ifndef OPENSSL_NO_NEXTPROTONEG
int q_SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
const unsigned char *in, unsigned int inlen,
const unsigned char *client, unsigned int client_len);
@@ -533,7 +620,6 @@ void q_SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
void *arg);
void q_SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
unsigned *len);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
int q_SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos,
unsigned protos_len);
void q_SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
@@ -545,8 +631,8 @@ void q_SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx,
void *arg), void *arg);
void q_SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
unsigned *len);
-#endif
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
+#endif // !OPENSSL_NO_NEXTPROTONEG
+
#if QT_CONFIG(dtls)
@@ -586,13 +672,9 @@ int q_BIO_set_ex_data(BIO *b, int idx, void *data);
class QDateTime;
QDateTime q_getTimeFromASN1(const ASN1_TIME *aTime);
-#ifndef OPENSSL_NO_TLSEXT
-
#define q_SSL_set_tlsext_status_type(ssl, type) \
q_SSL_ctrl((ssl), SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE, (type), nullptr)
-#endif // OPENSSL_NO_TLSEXT
-
#if QT_CONFIG(ocsp)
OCSP_RESPONSE *q_d2i_OCSP_RESPONSE(OCSP_RESPONSE **a, const unsigned char **in, long len);
diff --git a/src/network/ssl/qsslsocket_opensslpre11.cpp b/src/network/ssl/qsslsocket_opensslpre11.cpp
deleted file mode 100644
index 2af437f0fa..0000000000
--- a/src/network/ssl/qsslsocket_opensslpre11.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 Governikus GmbH & Co. KG
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-//#define QT_DECRYPT_SSL_TRAFFIC
-
-#include "qssl_p.h"
-#include "qsslsocket_openssl_p.h"
-#include "qsslsocket_openssl_symbols_p.h"
-#include "qsslsocket.h"
-#include "qsslkey.h"
-
-#include <QtCore/qdebug.h>
-#include <QtCore/qdir.h>
-#include <QtCore/qdiriterator.h>
-#include <QtCore/qthread.h>
-#include <QtCore/qfile.h>
-#include <QtCore/qmutex.h>
-
-QT_BEGIN_NAMESPACE
-
-/* \internal
-
- From OpenSSL's thread(3) manual page:
-
- OpenSSL can safely be used in multi-threaded applications provided that at
- least two callback functions are set.
-
- locking_function(int mode, int n, const char *file, int line) is needed to
- perform locking on shared data structures. (Note that OpenSSL uses a
- number of global data structures that will be implicitly shared
- whenever multiple threads use OpenSSL.) Multi-threaded
- applications will crash at random if it is not set. ...
- ...
- id_function(void) is a function that returns a thread ID. It is not
- needed on Windows nor on platforms where getpid() returns a different
- ID for each thread (most notably Linux)
-*/
-
-class QOpenSslLocks
-{
-public:
- QOpenSslLocks()
- : initLocker(QMutex::Recursive),
- locksLocker(QMutex::Recursive)
- {
- QMutexLocker locker(&locksLocker);
- int numLocks = q_CRYPTO_num_locks();
- locks = new QMutex *[numLocks];
- memset(locks, 0, numLocks * sizeof(QMutex *));
- }
- ~QOpenSslLocks()
- {
- QMutexLocker locker(&locksLocker);
- for (int i = 0; i < q_CRYPTO_num_locks(); ++i)
- delete locks[i];
- delete [] locks;
-
- QSslSocketPrivate::deinitialize();
- }
- QMutex *lock(int num)
- {
- QMutexLocker locker(&locksLocker);
- QMutex *tmp = locks[num];
- if (!tmp)
- tmp = locks[num] = new QMutex(QMutex::Recursive);
- return tmp;
- }
-
- QMutex *globalLock()
- {
- return &locksLocker;
- }
-
- QMutex *initLock()
- {
- return &initLocker;
- }
-
-private:
- QMutex initLocker;
- QMutex locksLocker;
- QMutex **locks;
-};
-
-Q_GLOBAL_STATIC(QOpenSslLocks, openssl_locks)
-
-extern "C" {
-static void locking_function(int mode, int lockNumber, const char *, int)
-{
- QMutex *mutex = openssl_locks()->lock(lockNumber);
-
- // Lock or unlock it
- if (mode & CRYPTO_LOCK)
- mutex->lock();
- else
- mutex->unlock();
-}
-static unsigned long id_function()
-{
- return (quintptr)QThread::currentThreadId();
-}
-
-} // extern "C"
-
-static void q_OpenSSL_add_all_algorithms_safe()
-{
-#ifdef Q_OS_WIN
- // Prior to version 1.0.1m an attempt to call OpenSSL_add_all_algorithms on
- // Windows could result in 'exit' call from OPENSSL_config (QTBUG-43843).
- // We can predict this and avoid OPENSSL_add_all_algorithms call.
- // From OpenSSL docs:
- // "An application does not need to add algorithms to use them explicitly,
- // for example by EVP_sha1(). It just needs to add them if it (or any of
- // the functions it calls) needs to lookup algorithms.
- // The cipher and digest lookup functions are used in many parts of the
- // library. If the table is not initialized several functions will
- // misbehave and complain they cannot find algorithms. This includes the
- // PEM, PKCS#12, SSL and S/MIME libraries. This is a common query in
- // the OpenSSL mailing lists."
- //
- // Anyway, as a result, we chose not to call this function if it would exit.
-
- if (q_SSLeay() < 0x100010DFL)
- {
- // Now, before we try to call it, check if an attempt to open config file
- // will result in exit:
- if (char *confFileName = q_CONF_get1_default_config_file()) {
- BIO *confFile = q_BIO_new_file(confFileName, "r");
- const auto lastError = q_ERR_peek_last_error();
- q_CRYPTO_free(confFileName);
- if (confFile) {
- q_BIO_free(confFile);
- } else {
- q_ERR_clear_error();
- if (ERR_GET_REASON(lastError) == ERR_R_SYS_LIB) {
- qCWarning(lcSsl, "failed to open openssl.conf file");
- return;
- }
- }
- }
- }
-#endif // Q_OS_WIN
-
- q_OpenSSL_add_all_algorithms();
-}
-
-
-void QSslSocketPrivate::deinitialize()
-{
- q_CRYPTO_set_id_callback(0);
- q_CRYPTO_set_locking_callback(0);
- q_ERR_free_strings();
-}
-
-
-bool QSslSocketPrivate::ensureLibraryLoaded()
-{
- if (!q_resolveOpenSslSymbols())
- return false;
-
- // Check if the library itself needs to be initialized.
- QMutexLocker locker(openssl_locks()->initLock());
-
- if (!s_libraryLoaded) {
- // Initialize OpenSSL.
- q_CRYPTO_set_id_callback(id_function);
- q_CRYPTO_set_locking_callback(locking_function);
- if (q_SSL_library_init() != 1)
- return false;
- q_SSL_load_error_strings();
- q_OpenSSL_add_all_algorithms_safe();
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
- if (q_SSLeay() >= 0x10001000L)
- QSslSocketBackendPrivate::s_indexForSSLExtraData = q_SSL_get_ex_new_index(0L, NULL, NULL, NULL, NULL);
-#endif
-
- // Initialize OpenSSL's random seed.
- if (!q_RAND_status()) {
- qWarning("Random number generator not seeded, disabling SSL support");
- return false;
- }
-
- s_libraryLoaded = true;
- }
- return true;
-}
-
-void QSslSocketPrivate::ensureCiphersAndCertsLoaded()
-{
- QMutexLocker locker(openssl_locks()->initLock());
- if (s_loadedCiphersAndCerts)
- return;
- s_loadedCiphersAndCerts = true;
-
- resetDefaultCiphers();
- resetDefaultEllipticCurves();
-
-#if QT_CONFIG(library)
- //load symbols needed to receive certificates from system store
-#if defined(Q_OS_QNX)
- s_loadRootCertsOnDemand = true;
-#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
- // check whether we can enable on-demand root-cert loading (i.e. check whether the sym links are there)
- QList<QByteArray> dirs = unixRootCertDirectories();
- QStringList symLinkFilter;
- symLinkFilter << QLatin1String("[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].[0-9]");
- for (int a = 0; a < dirs.count(); ++a) {
- QDirIterator iterator(QLatin1String(dirs.at(a)), symLinkFilter, QDir::Files);
- if (iterator.hasNext()) {
- s_loadRootCertsOnDemand = true;
- break;
- }
- }
-#endif
-#endif // QT_CONFIG(library)
- // if on-demand loading was not enabled, load the certs now
- if (!s_loadRootCertsOnDemand)
- setDefaultCaCertificates(systemCaCertificates());
-#ifdef Q_OS_WIN
- //Enabled for fetching additional root certs from windows update on windows 6+
- //This flag is set false by setDefaultCaCertificates() indicating the app uses
- //its own cert bundle rather than the system one.
- //Same logic that disables the unix on demand cert loading.
- //Unlike unix, we do preload the certificates from the cert store.
- s_loadRootCertsOnDemand = true;
-#endif
-}
-
-long QSslSocketPrivate::sslLibraryVersionNumber()
-{
- if (!supportsSsl())
- return 0;
-
- return q_SSLeay();
-}
-
-QString QSslSocketPrivate::sslLibraryVersionString()
-{
- if (!supportsSsl())
- return QString();
-
- const char *versionString = q_SSLeay_version(SSLEAY_VERSION);
- if (!versionString)
- return QString();
-
- return QString::fromLatin1(versionString);
-}
-
-void QSslSocketBackendPrivate::continueHandshake()
-{
- Q_Q(QSslSocket);
- // if we have a max read buffer size, reset the plain socket's to match
- if (readBufferMaxSize)
- plainSocket->setReadBufferSize(readBufferMaxSize);
-
- if (q_SSL_ctrl((ssl), SSL_CTRL_GET_SESSION_REUSED, 0, NULL))
- configuration.peerSessionShared = true;
-
-#ifdef QT_DECRYPT_SSL_TRAFFIC
- if (ssl->session && ssl->s3) {
- const char *mk = reinterpret_cast<const char *>(ssl->session->master_key);
- QByteArray masterKey(mk, ssl->session->master_key_length);
- const char *random = reinterpret_cast<const char *>(ssl->s3->client_random);
- QByteArray clientRandom(random, SSL3_RANDOM_SIZE);
-
- // different format, needed for e.g. older Wireshark versions:
-// const char *sid = reinterpret_cast<const char *>(ssl->session->session_id);
-// QByteArray sessionID(sid, ssl->session->session_id_length);
-// QByteArray debugLineRSA("RSA Session-ID:");
-// debugLineRSA.append(sessionID.toHex().toUpper());
-// debugLineRSA.append(" Master-Key:");
-// debugLineRSA.append(masterKey.toHex().toUpper());
-// debugLineRSA.append("\n");
-
- QByteArray debugLineClientRandom("CLIENT_RANDOM ");
- debugLineClientRandom.append(clientRandom.toHex().toUpper());
- debugLineClientRandom.append(" ");
- debugLineClientRandom.append(masterKey.toHex().toUpper());
- debugLineClientRandom.append("\n");
-
- QString sslKeyFile = QDir::tempPath() + QLatin1String("/qt-ssl-keys");
- QFile file(sslKeyFile);
- if (!file.open(QIODevice::Append))
- qCWarning(lcSsl) << "could not open file" << sslKeyFile << "for appending";
- if (!file.write(debugLineClientRandom))
- qCWarning(lcSsl) << "could not write to file" << sslKeyFile;
- file.close();
- } else {
- qCWarning(lcSsl, "could not decrypt SSL traffic");
- }
-#endif
-
- // Cache this SSL session inside the QSslContext
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionSharing)) {
- if (!sslContextPointer->cacheSession(ssl)) {
- sslContextPointer.clear(); // we could not cache the session
- } else {
- // Cache the session for permanent usage as well
- if (!(configuration.sslOptions & QSsl::SslOptionDisableSessionPersistence)) {
- if (!sslContextPointer->sessionASN1().isEmpty())
- configuration.sslSession = sslContextPointer->sessionASN1();
- configuration.sslSessionTicketLifeTimeHint = sslContextPointer->sessionTicketLifeTimeHint();
- }
- }
- }
-
-#if OPENSSL_VERSION_NUMBER >= 0x1000100fL && !defined(OPENSSL_NO_NEXTPROTONEG)
-
- configuration.nextProtocolNegotiationStatus = sslContextPointer->npnContext().status;
- if (sslContextPointer->npnContext().status == QSslConfiguration::NextProtocolNegotiationUnsupported) {
- // we could not agree -> be conservative and use HTTP/1.1
- configuration.nextNegotiatedProtocol = QByteArrayLiteral("http/1.1");
- } else {
- const unsigned char *proto = 0;
- unsigned int proto_len = 0;
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L) {
- q_SSL_get0_alpn_selected(ssl, &proto, &proto_len);
- if (proto_len && mode == QSslSocket::SslClientMode) {
- // Client does not have a callback that sets it ...
- configuration.nextProtocolNegotiationStatus = QSslConfiguration::NextProtocolNegotiationNegotiated;
- }
- }
-
- if (!proto_len) { // Test if NPN was more lucky ...
-#else
- {
-#endif
- q_SSL_get0_next_proto_negotiated(ssl, &proto, &proto_len);
- }
-
- if (proto_len)
- configuration.nextNegotiatedProtocol = QByteArray(reinterpret_cast<const char *>(proto), proto_len);
- else
- configuration.nextNegotiatedProtocol.clear();
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x1000100fL ...
-
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
- if (q_SSLeay() >= 0x10002000L && mode == QSslSocket::SslClientMode) {
- EVP_PKEY *key;
- if (q_SSL_get_server_tmp_key(ssl, &key))
- configuration.ephemeralServerKey = QSslKey(key, QSsl::PublicKey);
- }
-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L ...
-
- connectionEncrypted = true;
- emit q->encrypted();
- if (autoStartHandshake && pendingClose) {
- pendingClose = false;
- q->disconnectFromHost();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h b/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h
deleted file mode 100644
index f5626d5d16..0000000000
--- a/src/network/ssl/qsslsocket_opensslpre11_symbols_p.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Copyright (C) 2014 BlackBerry Limited. All rights reserved.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNetwork module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** In addition, as a special exception, the copyright holders listed above give
-** permission to link the code of its release of Qt with the OpenSSL project's
-** "OpenSSL" library (or modified versions of the "OpenSSL" library that use the
-** same license as the original version), and distribute the linked executables.
-**
-** You must comply with the GNU General Public License version 2 in all
-** respects for all of the code used other than the "OpenSSL" code. If you
-** modify this file, you may extend this exception to your version of the file,
-** but you are not obligated to do so. If you do not wish to do so, delete
-** this exception statement from your version of this file.
-**
-****************************************************************************/
-
-
-#ifndef QSSLSOCKET_OPENSSLPRE11_SYMBOLS_P_H
-#define QSSLSOCKET_OPENSSLPRE11_SYMBOLS_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-// Note: this file does not have QT_BEGIN_NAMESPACE/QT_END_NAMESPACE, it's done
-// in qsslsocket_openssl_symbols_p.h.
-
-#ifndef QSSLSOCKET_OPENSSL_SYMBOLS_P_H
-#error "You are not supposed to use this header file, include qsslsocket_openssl_symbols_p.h instead"
-#endif
-
-unsigned char * q_ASN1_STRING_data(ASN1_STRING *a);
-BIO *q_BIO_new_file(const char *filename, const char *mode);
-void q_ERR_clear_error();
-Q_AUTOTEST_EXPORT BIO *q_BIO_new(BIO_METHOD *a);
-Q_AUTOTEST_EXPORT BIO_METHOD *q_BIO_s_mem();
-int q_CRYPTO_num_locks();
-void q_CRYPTO_set_locking_callback(void (*a)(int, int, const char *, int));
-void q_CRYPTO_set_id_callback(unsigned long (*a)());
-void q_CRYPTO_free(void *a);
-int q_CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
-void *q_CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
-unsigned long q_ERR_peek_last_error();
-void q_ERR_free_strings();
-void q_EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
-void q_EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
-
-typedef _STACK STACK;
-
-// The typedef we use to make our pre 1.1 code look more like 1.1 (less ifdefs).
-typedef STACK OPENSSL_STACK;
-
-// We resolve q_sk_ functions, but use q_OPENSSL_sk_ macros in code to reduce
-// the amount of #ifdefs.
-int q_sk_num(STACK *a);
-#define q_OPENSSL_sk_num(a) q_sk_num(a)
-void q_sk_pop_free(STACK *a, void (*b)(void *));
-#define q_OPENSSL_sk_pop_free(a, b) q_sk_pop_free(a, b)
-STACK *q_sk_new_null();
-#define q_OPENSSL_sk_new_null() q_sk_new_null()
-
-void q_sk_free(STACK *a);
-
-// Just a name alias (not a function call expression) since in code we take an
-// address of this:
-#define q_OPENSSL_sk_free q_sk_free
-
-void *q_sk_value(STACK *a, int b);
-void q_sk_push(STACK *st, void *data);
-
-#define q_OPENSSL_sk_value(a, b) q_sk_value(a, b)
-#define q_OPENSSL_sk_push(st, data) q_sk_push(st, data)
-
-SSL_CTX *q_SSL_CTX_new(const SSL_METHOD *a);
-
-int q_SSL_library_init();
-void q_SSL_load_error_strings();
-
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L
-int q_SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
-#endif
-
-const SSL_METHOD *q_SSLv23_client_method();
-const SSL_METHOD *q_TLSv1_client_method();
-const SSL_METHOD *q_TLSv1_1_client_method();
-const SSL_METHOD *q_TLSv1_2_client_method();
-const SSL_METHOD *q_SSLv23_server_method();
-const SSL_METHOD *q_TLSv1_server_method();
-const SSL_METHOD *q_TLSv1_1_server_method();
-const SSL_METHOD *q_TLSv1_2_server_method();
-
-STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
-
-#ifdef SSLEAY_MACROS
-int q_i2d_DSAPrivateKey(const DSA *a, unsigned char **pp);
-int q_i2d_RSAPrivateKey(const RSA *a, unsigned char **pp);
-RSA *q_d2i_RSAPrivateKey(RSA **a, unsigned char **pp, long length);
-DSA *q_d2i_DSAPrivateKey(DSA **a, unsigned char **pp, long length);
-#define q_PEM_read_bio_RSAPrivateKey(bp, x, cb, u) \
- (RSA *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_RSAPrivateKey, PEM_STRING_RSA, bp, (void **)x, cb, u)
-#define q_PEM_read_bio_DSAPrivateKey(bp, x, cb, u) \
- (DSA *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_DSAPrivateKey, PEM_STRING_DSA, bp, (void **)x, cb, u)
-#define q_PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_RSAPrivateKey,PEM_STRING_RSA,\
- bp,(char *)x,enc,kstr,klen,cb,u)
-#define q_PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
- PEM_ASN1_write_bio((int (*)(void*, unsigned char**))q_i2d_DSAPrivateKey,PEM_STRING_DSA,\
- bp,(char *)x,enc,kstr,klen,cb,u)
-#define q_PEM_read_bio_DHparams(bp, dh, cb, u) \
- (DH *)q_PEM_ASN1_read_bio( \
- (void *(*)(void**, const unsigned char**, long int))q_d2i_DHparams, PEM_STRING_DHPARAMS, bp, (void **)x, cb, u)
-#endif // SSLEAY_MACROS
-
-#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
-#define q_SSL_set_options(ssl,op) q_SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),nullptr)
-#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
-#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
-#define q_X509_getm_notAfter(x) X509_get_notAfter(x)
-#define q_X509_getm_notBefore(x) X509_get_notBefore(x)
-
-// "Forward compatibility" with OpenSSL 1.1 (to save on #if-ery elsewhere):
-#define q_X509_get_version(x509) q_ASN1_INTEGER_get((x509)->cert_info->version)
-#define q_ASN1_STRING_get0_data(x) q_ASN1_STRING_data(x)
-#define q_EVP_PKEY_base_id(pkey) ((pkey)->type)
-#define q_X509_get_pubkey(x509) q_X509_PUBKEY_get((x509)->cert_info->key)
-#define q_SSL_SESSION_get_ticket_lifetime_hint(s) ((s)->tlsext_tick_lifetime_hint)
-#define q_RSA_bits(rsa) q_BN_num_bits((rsa)->n)
-#define q_DSA_bits(dsa) q_BN_num_bits((dsa)->p)
-#define q_DH_bits(dsa) q_BN_num_bits((dh)->p)
-#define q_X509_STORE_set_verify_cb(s,c) X509_STORE_set_verify_cb_func((s),(c))
-
-char *q_CONF_get1_default_config_file();
-void q_OPENSSL_add_all_algorithms_noconf();
-void q_OPENSSL_add_all_algorithms_conf();
-
-long q_SSLeay();
-const char *q_SSLeay_version(int type);
-
-#if QT_CONFIG(dtls)
-// DTLS:
-extern "C"
-{
-typedef int (*CookieVerifyCallback)(SSL *, unsigned char *, unsigned);
-}
-
-#define q_DTLSv1_listen(ssl, peer) q_SSL_ctrl(ssl, DTLS_CTRL_LISTEN, 0, (void *)peer)
-
-const SSL_METHOD *q_DTLSv1_server_method();
-const SSL_METHOD *q_DTLSv1_client_method();
-const SSL_METHOD *q_DTLSv1_2_server_method();
-const SSL_METHOD *q_DTLSv1_2_client_method();
-#endif // dtls
-
-#endif // QSSLSOCKET_OPENSSL_PRE11_SYMBOLS_P_H
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index daa9be23f4..1abd18bb32 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -127,7 +127,6 @@ public:
static long sslLibraryBuildVersionNumber();
static QString sslLibraryBuildVersionString();
static void ensureInitialized();
- static void deinitialize();
static QList<QSslCipher> defaultCiphers();
static QList<QSslCipher> supportedCiphers();
static void setDefaultCiphers(const QList<QSslCipher> &ciphers);
diff --git a/src/network/ssl/qsslsocket_schannel.cpp b/src/network/ssl/qsslsocket_schannel.cpp
index d7fb080b49..78d807106b 100644
--- a/src/network/ssl/qsslsocket_schannel.cpp
+++ b/src/network/ssl/qsslsocket_schannel.cpp
@@ -431,6 +431,53 @@ QByteArray createAlpnString(const QByteArrayList &nextAllowedProtocols)
return alpnString;
}
#endif // SUPPORTS_ALPN
+
+qint64 readToBuffer(QByteArray &buffer, QTcpSocket *plainSocket)
+{
+ Q_ASSERT(plainSocket);
+ static const qint64 shrinkCutoff = 1024 * 12;
+ static const qint64 defaultRead = 1024 * 16;
+ qint64 bytesRead = 0;
+
+ const auto toRead = std::min(defaultRead, plainSocket->bytesAvailable());
+ if (toRead > 0) {
+ const auto bufferSize = buffer.size();
+ buffer.reserve(bufferSize + toRead); // avoid growth strategy kicking in
+ buffer.resize(bufferSize + toRead);
+ bytesRead = plainSocket->read(buffer.data() + bufferSize, toRead);
+ buffer.resize(bufferSize + bytesRead);
+ // In case of excessive memory usage we shrink:
+ if (buffer.size() < shrinkCutoff && buffer.capacity() > defaultRead)
+ buffer.shrink_to_fit();
+ }
+
+ return bytesRead;
+}
+
+void retainExtraData(QByteArray &buffer, const SecBuffer &secBuffer)
+{
+ Q_ASSERT(secBuffer.BufferType == SECBUFFER_EXTRA);
+ if (int(secBuffer.cbBuffer) >= buffer.size())
+ return;
+
+#ifdef QSSLSOCKET_DEBUG
+ qCDebug(lcSsl, "We got SECBUFFER_EXTRA, will retain %lu bytes", secBuffer.cbBuffer);
+#endif
+ std::move(buffer.end() - secBuffer.cbBuffer, buffer.end(), buffer.begin());
+ buffer.resize(secBuffer.cbBuffer);
+}
+
+qint64 checkIncompleteData(const SecBuffer &secBuffer)
+{
+ if (secBuffer.BufferType == SECBUFFER_MISSING) {
+#ifdef QSSLSOCKET_DEBUG
+ qCDebug(lcSsl, "Need %lu more bytes.", secBuffer.cbBuffer);
+#endif
+ return secBuffer.cbBuffer;
+}
+ return 0;
+}
+
} // anonymous namespace
bool QSslSocketPrivate::s_loadRootCertsOnDemand = true;
@@ -619,8 +666,8 @@ bool QSslSocketBackendPrivate::acquireCredentialsHandle()
nullptr);
if (!chainContext) {
const QString message = isClient
- ? QSslSocket::tr("The certificate provided cannot be used for a client.")
- : QSslSocket::tr("The certificate provided cannot be used for a server.");
+ ? QSslSocket::tr("The certificate provided cannot be used for a client.")
+ : QSslSocket::tr("The certificate provided cannot be used for a server.");
setErrorAndEmit(QAbstractSocket::SocketError::SslInvalidUserDataError, message);
return false;
}
@@ -774,7 +821,11 @@ bool QSslSocketBackendPrivate::acceptContext()
Q_ASSERT(mode == QSslSocket::SslServerMode);
ULONG contextReq = getContextRequirements();
- intermediateBuffer += plainSocket->read(16384);
+ if (missingData > plainSocket->bytesAvailable())
+ return true;
+
+ missingData = 0;
+ readToBuffer(intermediateBuffer, plainSocket);
if (intermediateBuffer.isEmpty())
return true; // definitely need more data..
@@ -830,6 +881,7 @@ bool QSslSocketBackendPrivate::acceptContext()
if (status == SEC_E_INCOMPLETE_MESSAGE) {
// Need more data
+ missingData = checkIncompleteData(outBuffers[0]);
return true;
}
@@ -837,9 +889,9 @@ bool QSslSocketBackendPrivate::acceptContext()
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// inBuffers[1].cbBuffer indicates the amount of bytes _NOT_ processed, the rest need to
// be stored.
- intermediateBuffer = intermediateBuffer.right(int(inBuffers[1].cbBuffer));
+ retainExtraData(intermediateBuffer, inBuffers[1]);
} else { /* No 'extra' data, message not incomplete */
- intermediateBuffer.clear();
+ intermediateBuffer.resize(0);
}
if (status != SEC_I_CONTINUE_NEEDED) {
@@ -865,11 +917,15 @@ bool QSslSocketBackendPrivate::performHandshake()
Q_ASSERT(schannelState == SchannelState::PerformHandshake);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Bytes available from socket:" << plainSocket->bytesAvailable();
- qCDebug(lcSsl) << "intermediateBuffer size:" << intermediateBuffer.size();
+ qCDebug(lcSsl, "Bytes available from socket: %lld", plainSocket->bytesAvailable());
+ qCDebug(lcSsl, "intermediateBuffer size: %d", intermediateBuffer.size());
#endif
- intermediateBuffer += plainSocket->read(16384);
+ if (missingData > plainSocket->bytesAvailable())
+ return true;
+
+ missingData = 0;
+ readToBuffer(intermediateBuffer, plainSocket);
if (intermediateBuffer.isEmpty())
return true; // no data, will fail
@@ -918,11 +974,10 @@ bool QSslSocketBackendPrivate::performHandshake()
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// inputBuffers[1].cbBuffer indicates the amount of bytes _NOT_ processed, the rest need to
// be stored.
- intermediateBuffer = intermediateBuffer.right(int(inputBuffers[1].cbBuffer));
- } else {
+ retainExtraData(intermediateBuffer, inputBuffers[1]);
+ } else if (status != SEC_E_INCOMPLETE_MESSAGE) {
// Clear the buffer if we weren't asked for more data
- if (status != SEC_E_INCOMPLETE_MESSAGE)
- intermediateBuffer.clear();
+ intermediateBuffer.resize(0);
}
switch (status) {
case SEC_E_OK:
@@ -955,6 +1010,7 @@ bool QSslSocketBackendPrivate::performHandshake()
return true;
case SEC_E_INCOMPLETE_MESSAGE:
// Simply incomplete, wait for more data
+ missingData = checkIncompleteData(outBuffers[0]);
return true;
case SEC_E_ALGORITHM_MISMATCH:
setErrorAndEmit(QAbstractSocket::SslHandshakeFailedError,
@@ -1157,6 +1213,8 @@ void QSslSocketBackendPrivate::reset()
connectionEncrypted = false;
shutdown = false;
renegotiating = false;
+
+ missingData = 0;
}
void QSslSocketBackendPrivate::startClientEncryption()
@@ -1228,8 +1286,7 @@ void QSslSocketBackendPrivate::transmit()
fullMessage.resize(inputBuffers[0].cbBuffer + inputBuffers[1].cbBuffer + inputBuffers[2].cbBuffer);
const qint64 bytesWritten = plainSocket->write(fullMessage);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Wrote" << bytesWritten << "of total"
- << fullMessage.length() << "bytes";
+ qCDebug(lcSsl, "Wrote %lld of total %d bytes", bytesWritten, fullMessage.length());
#endif
if (bytesWritten >= 0) {
totalBytesWritten += bytesWritten;
@@ -1254,36 +1311,32 @@ void QSslSocketBackendPrivate::transmit()
int totalRead = 0;
bool hadIncompleteData = false;
while (!readBufferMaxSize || buffer.size() < readBufferMaxSize) {
- QByteArray ciphertext;
- if (intermediateBuffer.length()) {
+ if (missingData > plainSocket->bytesAvailable()) {
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Restoring data from intermediateBuffer:"
- << intermediateBuffer.length() << "bytes";
+ qCDebug(lcSsl, "We're still missing %lld bytes, will check later.", missingData);
#endif
- ciphertext.swap(intermediateBuffer);
+ break;
}
- int initialLength = ciphertext.length();
- ciphertext += plainSocket->read(16384);
+
+ missingData = 0;
+ const qint64 bytesRead = readToBuffer(intermediateBuffer, plainSocket);
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Read" << ciphertext.length() - initialLength
- << "encrypted bytes from the socket";
+ qCDebug(lcSsl, "Read %lld encrypted bytes from the socket", bytesRead);
#endif
- if (ciphertext.length() == 0 || (hadIncompleteData && initialLength == ciphertext.length())) {
+ if (intermediateBuffer.length() == 0 || (hadIncompleteData && bytesRead == 0)) {
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << (hadIncompleteData ? "No new data received, leaving loop!"
- : "Nothing to decrypt, leaving loop!");
+ qCDebug(lcSsl, (hadIncompleteData ? "No new data received, leaving loop!"
+ : "Nothing to decrypt, leaving loop!"));
#endif
- if (ciphertext.length()) // We have data, it came from intermediateBuffer, swap back
- intermediateBuffer.swap(ciphertext);
break;
}
hadIncompleteData = false;
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Total amount of bytes to decrypt:" << ciphertext.length();
+ qCDebug(lcSsl, "Total amount of bytes to decrypt: %d", intermediateBuffer.length());
#endif
SecBuffer dataBuffer[4]{
- createSecBuffer(ciphertext, SECBUFFER_DATA),
+ createSecBuffer(intermediateBuffer, SECBUFFER_DATA),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY),
createSecBuffer(nullptr, 0, SECBUFFER_EMPTY)
@@ -1299,34 +1352,30 @@ void QSslSocketBackendPrivate::transmit()
if (dataBuffer[1].cbBuffer > 0) {
// It is always decrypted in-place.
// But [0] is the STREAM_HEADER, [1] is the DATA and [2] is the STREAM_TRAILER.
- // The pointers in all of those still point into the 'ciphertext' byte array.
+ // The pointers in all of those still point into 'intermediateBuffer'.
buffer.append(static_cast<char *>(dataBuffer[1].pvBuffer),
dataBuffer[1].cbBuffer);
totalRead += dataBuffer[1].cbBuffer;
#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "Decrypted" << dataBuffer[1].cbBuffer
- << "bytes. New read buffer size:" << buffer.size();
+ qCDebug(lcSsl, "Decrypted %lu bytes. New read buffer size: %d",
+ dataBuffer[1].cbBuffer, buffer.size());
#endif
}
if (dataBuffer[3].BufferType == SECBUFFER_EXTRA) {
// https://docs.microsoft.com/en-us/windows/desktop/secauthn/extra-buffers-returned-by-schannel
// dataBuffer[3].cbBuffer indicates the amount of bytes _NOT_ processed,
// the rest need to be stored.
-#ifdef QSSLSOCKET_DEBUG
- qCDebug(lcSsl) << "We've got excess data, moving it to the intermediate buffer:"
- << dataBuffer[3].cbBuffer << "bytes";
-#endif
- intermediateBuffer = ciphertext.right(int(dataBuffer[3].cbBuffer));
+ retainExtraData(intermediateBuffer, dataBuffer[3]);
+ } else {
+ intermediateBuffer.resize(0);
}
}
if (status == SEC_E_INCOMPLETE_MESSAGE) {
- // Need more data before we can decrypt.. to the buffer it goes!
+ missingData = checkIncompleteData(dataBuffer[0]);
#ifdef QSSLSOCKET_DEBUG
qCDebug(lcSsl, "We didn't have enough data to decrypt anything, will try again!");
#endif
- Q_ASSERT(intermediateBuffer.isEmpty());
- intermediateBuffer.swap(ciphertext);
// We try again, but if we don't get any more data then we leave
hadIncompleteData = true;
} else if (status == SEC_E_INVALID_HANDLE) {
diff --git a/src/network/ssl/qsslsocket_schannel_p.h b/src/network/ssl/qsslsocket_schannel_p.h
index 6ab200e1f9..a184deef49 100644
--- a/src/network/ssl/qsslsocket_schannel_p.h
+++ b/src/network/ssl/qsslsocket_schannel_p.h
@@ -145,6 +145,7 @@ private:
const CERT_CONTEXT *localCertContext = nullptr;
ULONG contextAttributes = 0;
+ qint64 missingData = 0;
bool renegotiating = false;
};
diff --git a/src/network/ssl/qsslsocket_winrt.cpp b/src/network/ssl/qsslsocket_winrt.cpp
index cb0e86fa1f..4286b5ea42 100644
--- a/src/network/ssl/qsslsocket_winrt.cpp
+++ b/src/network/ssl/qsslsocket_winrt.cpp
@@ -157,11 +157,6 @@ QSslSocketBackendPrivate::~QSslSocketBackendPrivate()
g->syncCaCertificates(QSet<QSslCertificate>(), previousCaCertificates);
}
-void QSslSocketPrivate::deinitialize()
-{
- Q_UNIMPLEMENTED();
-}
-
bool QSslSocketPrivate::supportsSsl()
{
return true;
diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri
index 8bb70a2aed..0c8b9ccd40 100644
--- a/src/network/ssl/ssl.pri
+++ b/src/network/ssl/ssl.pri
@@ -102,17 +102,7 @@ qtConfig(ssl) {
qtConfig(ocsp): HEADERS += ssl/qocsp_p.h
- qtConfig(opensslv11) {
- HEADERS += ssl/qsslsocket_openssl11_symbols_p.h
- SOURCES += ssl/qsslsocket_openssl11.cpp \
- ssl/qsslcontext_openssl11.cpp
-
- QMAKE_CXXFLAGS += -DOPENSSL_API_COMPAT=0x10100000L
- } else {
- HEADERS += ssl/qsslsocket_opensslpre11_symbols_p.h
- SOURCES += ssl/qsslsocket_opensslpre11.cpp \
- ssl/qsslcontext_opensslpre11.cpp
- }
+ QMAKE_CXXFLAGS += -DOPENSSL_API_COMPAT=0x10100000L
darwin:SOURCES += ssl/qsslsocket_mac_shared.cpp
diff --git a/src/openglextensions/qopenglextensions.cpp b/src/openglextensions/qopenglextensions.cpp
index 6413ae4a78..1660181e97 100644
--- a/src/openglextensions/qopenglextensions.cpp
+++ b/src/openglextensions/qopenglextensions.cpp
@@ -60,6 +60,12 @@
#include "qopenglextensions.h"
#include <QtGui/qopenglcontext.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
QAbstractOpenGLExtension::~QAbstractOpenGLExtension()
@@ -7720,3 +7726,6 @@ bool QOpenGLExtension_QCOM_tiled_rendering::initializeOpenGLFunctions()
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
diff --git a/src/openglextensions/qopenglextensions.h b/src/openglextensions/qopenglextensions.h
index 439e0e6530..eb473f3699 100644
--- a/src/openglextensions/qopenglextensions.h
+++ b/src/openglextensions/qopenglextensions.h
@@ -66,6 +66,12 @@
#include <QtGui/qopengl.h>
+// MemoryBarrier is a macro on some architectures on Windows
+#ifdef Q_OS_WIN
+#pragma push_macro("MemoryBarrier")
+#undef MemoryBarrier
+#endif
+
QT_BEGIN_NAMESPACE
class QOpenGLContext;
@@ -19473,6 +19479,10 @@ inline void QOpenGLExtension_QCOM_tiled_rendering::glEndTilingQCOM(GLbitfield pr
QT_END_NAMESPACE
+#ifdef Q_OS_WIN
+#pragma pop_macro("MemoryBarrier")
+#endif
+
#endif // QT_NO_OPENGL
#endif
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 7abf295782..48b5a74a9e 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the plugins of the Qt Toolkit.
@@ -260,7 +260,18 @@ static const char specialLanguages[][6] = {
"", // MasaramGondi
"", // Nushu
"", // Soyombo
- "" // ZanabazarSquare
+ "", // ZanabazarSquare
+ "", // Dogra
+ "", // GunjalaGondi
+ "", // HanifiRohingya
+ "", // Makasar
+ "", // Medefaidrin
+ "", // OldSogdian
+ "", // Sogdian
+ "", // Elymaic
+ "", // Nandinagari
+ "", // NyiakengPuachueHmong
+ "" // Wancho
};
Q_STATIC_ASSERT(sizeof specialLanguages / sizeof *specialLanguages == QChar::ScriptCount);
diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
index 8c6cc8fbc1..10f17f0258 100644
--- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
+++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
@@ -1354,50 +1354,65 @@ static inline FT_Matrix QTransformToFTMatrix(const QTransform &matrix)
return m;
}
-QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
+QFontEngineFT::QGlyphSet *QFontEngineFT::TransformedGlyphSets::findSet(const QTransform &matrix, const QFontDef &fontDef)
{
- if (matrix.type() > QTransform::TxShear || !cacheEnabled)
- return 0;
-
- // FT_Set_Transform only supports scalable fonts
- if (!FT_IS_SCALABLE(freetype->face))
- return matrix.type() <= QTransform::TxTranslate ? &defaultGlyphSet : nullptr;
-
FT_Matrix m = QTransformToFTMatrix(matrix);
- QGlyphSet *gs = 0;
-
- for (int i = 0; i < transformedGlyphSets.count(); ++i) {
- const QGlyphSet &g = transformedGlyphSets.at(i);
- if (g.transformationMatrix.xx == m.xx
- && g.transformationMatrix.xy == m.xy
- && g.transformationMatrix.yx == m.yx
- && g.transformationMatrix.yy == m.yy) {
+ int i = 0;
+ for (; i < nSets; ++i) {
+ QGlyphSet *g = sets[i];
+ if (!g)
+ break;
+ if (g->transformationMatrix.xx == m.xx
+ && g->transformationMatrix.xy == m.xy
+ && g->transformationMatrix.yx == m.yx
+ && g->transformationMatrix.yy == m.yy) {
// found a match, move it to the front
- transformedGlyphSets.move(i, 0);
- gs = &transformedGlyphSets[0];
- break;
+ moveToFront(i);
+ return g;
}
}
- if (!gs) {
- // don't cache more than 10 transformations
- if (transformedGlyphSets.count() >= 10) {
- transformedGlyphSets.move(transformedGlyphSets.size() - 1, 0);
- } else {
- transformedGlyphSets.prepend(QGlyphSet());
- }
- gs = &transformedGlyphSets[0];
- gs->clear();
- gs->transformationMatrix = m;
- gs->outline_drawing = fontDef.pixelSize * fontDef.pixelSize * qAbs(matrix.determinant()) > QT_MAX_CACHED_GLYPH_SIZE * QT_MAX_CACHED_GLYPH_SIZE;
- }
+ // don't cache more than nSets transformations
+ if (i == nSets)
+ // reuse the last set
+ --i;
+ moveToFront(nSets - 1);
+ if (!sets[0])
+ sets[0] = new QGlyphSet;
+ QGlyphSet *gs = sets[0];
+ gs->clear();
+ gs->transformationMatrix = m;
+ gs->outline_drawing = fontDef.pixelSize * fontDef.pixelSize * qAbs(matrix.determinant()) > QT_MAX_CACHED_GLYPH_SIZE * QT_MAX_CACHED_GLYPH_SIZE;
Q_ASSERT(gs != 0);
return gs;
}
+void QFontEngineFT::TransformedGlyphSets::moveToFront(int i)
+{
+ QGlyphSet *g = sets[i];
+ while (i > 0) {
+ sets[i] = sets[i - 1];
+ --i;
+ }
+ sets[0] = g;
+}
+
+
+QFontEngineFT::QGlyphSet *QFontEngineFT::loadGlyphSet(const QTransform &matrix)
+{
+ if (matrix.type() > QTransform::TxShear || !cacheEnabled)
+ return 0;
+
+ // FT_Set_Transform only supports scalable fonts
+ if (!FT_IS_SCALABLE(freetype->face))
+ return matrix.type() <= QTransform::TxTranslate ? &defaultGlyphSet : nullptr;
+
+ return transformedGlyphSets.findSet(matrix, fontDef);
+}
+
void QFontEngineFT::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics)
{
FT_Face face = lockFace(Unscaled);
diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h b/src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h
index 2e3aef6979..8019588bf5 100644
--- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h
+++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft_p.h
@@ -63,6 +63,8 @@
#include <qmutex.h>
+#include <string.h>
+
QT_BEGIN_NAMESPACE
class QFontEngineFTRawFont;
@@ -170,6 +172,7 @@ public:
inline bool isGlyphMissing(glyph_t index) const { return missing_glyphs.contains(index); }
inline void setGlyphMissing(glyph_t index) const { missing_glyphs.insert(index); }
private:
+ Q_DISABLE_COPY(QGlyphSet);
mutable QHash<GlyphAndSubPixelPosition, Glyph *> glyph_data; // maps from glyph index to glyph data
mutable QSet<glyph_t> missing_glyphs;
mutable Glyph *fast_glyph_data[256]; // for fast lookup of glyphs < 256
@@ -310,7 +313,18 @@ private:
GlyphFormat defaultFormat;
FT_Matrix matrix;
- QList<QGlyphSet> transformedGlyphSets;
+ struct TransformedGlyphSets {
+ enum { nSets = 10 };
+ QGlyphSet *sets[nSets];
+
+ QGlyphSet *findSet(const QTransform &matrix, const QFontDef &fontDef);
+ TransformedGlyphSets() { std::fill(&sets[0], &sets[nSets], nullptr); }
+ ~TransformedGlyphSets() { qDeleteAll(&sets[0], &sets[nSets]); }
+ private:
+ void moveToFront(int i);
+ Q_DISABLE_COPY(TransformedGlyphSets);
+ };
+ TransformedGlyphSets transformedGlyphSets;
mutable QGlyphSet defaultGlyphSet;
QFontEngine::FaceId face_id;
@@ -326,6 +340,9 @@ private:
QFixed scalableBitmapScaleFactor;
};
+Q_DECLARE_TYPEINFO(QFontEngineFT::QGlyphSet, Q_MOVABLE_TYPE);
+
+
inline uint qHash(const QFontEngineFT::GlyphAndSubPixelPosition &g)
{
return (g.glyph << 8) | (g.subPixelPosition * 10).round().toInt();
diff --git a/src/platformsupport/linuxofono/linuxofono.pro b/src/platformsupport/linuxofono/linuxofono.pro
new file mode 100644
index 0000000000..1bc5b10225
--- /dev/null
+++ b/src/platformsupport/linuxofono/linuxofono.pro
@@ -0,0 +1,15 @@
+TARGET = QtLinuxOfonoSupport
+MODULE = linuxofono_support
+
+QT = core dbus
+CONFIG += static internal_module
+
+DEFINES += QT_NO_CAST_FROM_ASCII
+
+HEADERS += \
+ qofonoservice_linux_p.h
+
+SOURCES += \
+ qofonoservice_linux.cpp
+
+load(qt_module)
diff --git a/src/plugins/bearer/linux_common/qofonoservice_linux.cpp b/src/platformsupport/linuxofono/qofonoservice_linux.cpp
index 05f9b3ca17..792c703966 100644
--- a/src/plugins/bearer/linux_common/qofonoservice_linux.cpp
+++ b/src/platformsupport/linuxofono/qofonoservice_linux.cpp
@@ -148,7 +148,7 @@ QOfonoModemInterface::QOfonoModemInterface(const QString &dbusPathName, QObject
{
QDBusConnection::systemBus().connect(QLatin1String(OFONO_SERVICE),
path(),
- OFONO_MODEM_INTERFACE,
+ QLatin1String(OFONO_MODEM_INTERFACE),
QLatin1String("PropertyChanged"),
this,SLOT(propertyChanged(QString,QDBusVariant)));
}
diff --git a/src/plugins/bearer/linux_common/qofonoservice_linux_p.h b/src/platformsupport/linuxofono/qofonoservice_linux_p.h
index 62df5d4fa7..62df5d4fa7 100644
--- a/src/plugins/bearer/linux_common/qofonoservice_linux_p.h
+++ b/src/platformsupport/linuxofono/qofonoservice_linux_p.h
diff --git a/src/platformsupport/platformsupport.pro b/src/platformsupport/platformsupport.pro
index 6d4f1b93bd..0b2dd8974b 100644
--- a/src/platformsupport/platformsupport.pro
+++ b/src/platformsupport/platformsupport.pro
@@ -45,3 +45,7 @@ darwin {
qtConfig(vulkan): \
SUBDIRS += vkconvenience
+
+!android:linux*:qtHaveModule(dbus) \
+ SUBDIRS += linuxofono
+
diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes.cpp
index 82a13d2fa0..a3c9746869 100644
--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes.cpp
+++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenutypes.cpp
@@ -48,7 +48,9 @@
#include <QDebug>
#include <QtEndian>
#include <QBuffer>
-#include <private/qkeysequence_p.h>
+#if QT_CONFIG(shortcut)
+# include <private/qkeysequence_p.h>
+#endif
#include <qpa/qplatformmenu.h>
#include "qdbusplatformmenu_p.h"
diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
index 8a31f82fb0..aa0f303416 100644
--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
+++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusplatformmenu_p.h
@@ -96,7 +96,7 @@ public:
void setChecked(bool isChecked) override;
bool hasExclusiveGroup() const { return m_hasExclusiveGroup; }
void setHasExclusiveGroup(bool hasExclusiveGroup) override;
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
QKeySequence shortcut() const { return m_shortcut; }
void setShortcut(const QKeySequence& shortcut) override;
#endif
@@ -123,7 +123,9 @@ private:
bool m_hasExclusiveGroup : 1;
short /*unused*/ : 6;
short m_dbusID : 16;
+#if QT_CONFIG(shortcut)
QKeySequence m_shortcut;
+#endif
};
class QDBusPlatformMenu : public QPlatformMenu
diff --git a/src/plugins/bearer/connman/connman.pro b/src/plugins/bearer/connman/connman.pro
index d6577e9d7f..03e94cfe6a 100644
--- a/src/plugins/bearer/connman/connman.pro
+++ b/src/plugins/bearer/connman/connman.pro
@@ -1,14 +1,12 @@
TARGET = qconnmanbearer
-QT = core network-private dbus
+QT = core network-private dbus linuxofono_support_private
HEADERS += qconnmanservice_linux_p.h \
- ../linux_common/qofonoservice_linux_p.h \
qconnmanengine.h
SOURCES += main.cpp \
qconnmanservice_linux.cpp \
- ../linux_common/qofonoservice_linux.cpp \
qconnmanengine.cpp
OTHER_FILES += connman.json
diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h
index eb79dbec1b..969eed45b1 100644
--- a/src/plugins/bearer/connman/qconnmanengine.h
+++ b/src/plugins/bearer/connman/qconnmanengine.h
@@ -54,7 +54,7 @@
#include <private/qbearerengine_impl_p.h>
#include "qconnmanservice_linux_p.h"
-#include "../linux_common/qofonoservice_linux_p.h"
+#include <private/qofonoservice_linux_p.h>
#include <QMap>
#include <QVariant>
diff --git a/src/plugins/bearer/networkmanager/networkmanager.pro b/src/plugins/bearer/networkmanager/networkmanager.pro
index 3fbad07ef5..3ca217f974 100644
--- a/src/plugins/bearer/networkmanager/networkmanager.pro
+++ b/src/plugins/bearer/networkmanager/networkmanager.pro
@@ -1,15 +1,13 @@
TARGET = qnmbearer
-QT = core network-private dbus
+QT = core network-private dbus linuxofono_support_private
HEADERS += qnetworkmanagerservice.h \
- qnetworkmanagerengine.h \
- ../linux_common/qofonoservice_linux_p.h
+ qnetworkmanagerengine.h
SOURCES += main.cpp \
qnetworkmanagerservice.cpp \
- qnetworkmanagerengine.cpp \
- ../linux_common/qofonoservice_linux.cpp
+ qnetworkmanagerengine.cpp
OTHER_FILES += networkmanager.json
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
index d686bc4e51..2fb5b2efbc 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
@@ -53,7 +53,6 @@
#include <QDBusInterface>
#include <QDBusMessage>
#include <QDBusReply>
-#include "../linux_common/qofonoservice_linux_p.h"
#ifndef QT_NO_DBUS
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
index c6c5280eca..c624d6087d 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
@@ -55,7 +55,7 @@
#include "qnetworkmanagerservice.h"
-#include "../linux_common/qofonoservice_linux_p.h"
+#include <private/qofonoservice_linux_p.h>
#include <QMap>
#include <QVariant>
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
index 9cdc5de0e1..56885f2e23 100644
--- a/src/plugins/platforms/android/androidjniinput.cpp
+++ b/src/plugins/platforms/android/androidjniinput.cpp
@@ -195,20 +195,6 @@ namespace QtAndroidInput
angleDelta);
}
- void releaseMouse(int x, int y)
- {
- m_ignoreMouseEvents = true;
- QPoint globalPos(x,y);
- QWindow *tlw = topLevelWindowAt(globalPos);
- QPoint localPos = tlw ? (globalPos-tlw->position()) : globalPos;
-
- // Release left button
- QWindowSystemInterface::handleMouseEvent(tlw,
- localPos,
- globalPos,
- Qt::MouseButtons(Qt::NoButton));
- }
-
static void longPress(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y)
{
QAndroidInputContext *inputContext = QAndroidInputContext::androidInputContext();
diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h
index 2e2470ae8f..cc3070c4aa 100644
--- a/src/plugins/platforms/android/androidjniinput.h
+++ b/src/plugins/platforms/android/androidjniinput.h
@@ -61,8 +61,6 @@ namespace QtAndroidInput
void updateHandles(int handleCount, QPoint editMenuPos = QPoint(), uint32_t editButtons = 0, QPoint cursor = QPoint(), QPoint anchor = QPoint(), bool rtl = false);
bool registerNatives(JNIEnv *env);
-
- void releaseMouse(int x, int y);
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp
index 5614d3b04f..e78c317863 100644
--- a/src/plugins/platforms/android/qandroidinputcontext.cpp
+++ b/src/plugins/platforms/android/qandroidinputcontext.cpp
@@ -827,9 +827,6 @@ void QAndroidInputContext::longPress(int x, int y)
focusObjectStopComposing();
- // Release left button, otherwise the following events will cancel the menu popup
- QtAndroidInput::releaseMouse(x, y);
-
const double pixelDensity =
QGuiApplication::focusWindow()
? QHighDpiScaling::factor(QGuiApplication::focusWindow())
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index 00f5a1bf09..9b0a6b1b86 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -88,10 +88,13 @@
#include <qpa/qwindowsysteminterface.h>
#include <qwindowdefs.h>
+QT_BEGIN_NAMESPACE
+Q_LOGGING_CATEGORY(lcQpaApplication, "qt.qpa.application");
+QT_END_NAMESPACE
+
QT_USE_NAMESPACE
@implementation QCocoaApplicationDelegate {
- bool startedQuit;
NSObject <NSApplicationDelegate> *reflectionDelegate;
bool inLaunch;
}
@@ -140,67 +143,30 @@ QT_USE_NAMESPACE
return [[self.dockMenu retain] autorelease];
}
-- (BOOL)canQuit
-{
- [[NSApp mainMenu] cancelTracking];
-
- bool handle_quit = true;
- NSMenuItem *quitMenuItem = [[QCocoaMenuLoader sharedMenuLoader] quitMenuItem];
- if (!QGuiApplicationPrivate::instance()->modalWindowList.isEmpty()
- && [quitMenuItem isEnabled]) {
- int visible = 0;
- const QWindowList tlws = QGuiApplication::topLevelWindows();
- for (int i = 0; i < tlws.size(); ++i) {
- if (tlws.at(i)->isVisible())
- ++visible;
- }
- handle_quit = (visible <= 1);
- }
-
- if (handle_quit) {
- QCloseEvent ev;
- QGuiApplication::sendEvent(qGuiApp, &ev);
- if (ev.isAccepted()) {
- return YES;
- }
- }
-
- return NO;
-}
-
// This function will only be called when NSApp is actually running.
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
if ([reflectionDelegate respondsToSelector:_cmd])
return [reflectionDelegate applicationShouldTerminate:sender];
- if ([self canQuit]) {
- if (!startedQuit) {
- startedQuit = true;
- // Close open windows. This is done in order to deliver de-expose
- // events while the event loop is still running.
- const QWindowList topLevels = QGuiApplication::topLevelWindows();
- for (int i = 0; i < topLevels.size(); ++i) {
- QWindow *topLevelWindow = topLevels.at(i);
- // Already closed windows will not have a platform window, skip those
- if (topLevelWindow->handle())
- QWindowSystemInterface::handleCloseEvent(topLevelWindow);
- }
- QWindowSystemInterface::flushWindowSystemEvents();
-
- QGuiApplication::exit(0);
- startedQuit = false;
- }
- }
-
if (QGuiApplicationPrivate::instance()->threadData->eventLoops.isEmpty()) {
- // INVARIANT: No event loop is executing. This probably
- // means that Qt is used as a plugin, or as a part of a native
- // Cocoa application. In any case it should be fine to
- // terminate now:
+ // No event loop is executing. This probably means that Qt is used as a plugin,
+ // or as a part of a native Cocoa application. In any case it should be fine to
+ // terminate now.
+ qCDebug(lcQpaApplication) << "No running event loops, terminating now";
return NSTerminateNow;
}
+ if (!QWindowSystemInterface::handleApplicationTermination<QWindowSystemInterface::SynchronousDelivery>()) {
+ qCDebug(lcQpaApplication) << "Application termination canceled";
+ return NSTerminateCancel;
+ }
+
+ // Even if the application termination was accepted by the application we can't
+ // return NSTerminateNow, as that would trigger AppKit to ultimately call exit().
+ // We need to ensure that the runloop continues spinning so that we can return
+ // from our own event loop back to main(), and exit from there.
+ qCDebug(lcQpaApplication) << "Termination accepted, but returning to runloop for exit through main()";
return NSTerminateCancel;
}
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
index e87fc39c42..b3ce9e45dc 100644
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
@@ -293,46 +293,42 @@ bool QCocoaEventDispatcher::hasPendingEvents()
return qGlobalPostedEventsCount() || (qt_is_gui_used && !CFRunLoopIsWaiting(CFRunLoopGetMain()));
}
-static bool IsMouseOrKeyEvent( NSEvent* event )
+static bool isUserInputEvent(NSEvent* event)
{
- bool result = false;
-
- switch( [event type] )
- {
- case NSEventTypeLeftMouseDown:
- case NSEventTypeLeftMouseUp:
- case NSEventTypeRightMouseDown:
- case NSEventTypeRightMouseUp:
- case NSEventTypeMouseMoved: // ??
- case NSEventTypeLeftMouseDragged:
- case NSEventTypeRightMouseDragged:
- case NSEventTypeMouseEntered:
- case NSEventTypeMouseExited:
- case NSEventTypeKeyDown:
- case NSEventTypeKeyUp:
- case NSEventTypeFlagsChanged: // key modifiers changed?
- case NSEventTypeCursorUpdate: // ??
- case NSEventTypeScrollWheel:
- case NSEventTypeTabletPoint:
- case NSEventTypeTabletProximity:
- case NSEventTypeOtherMouseDown:
- case NSEventTypeOtherMouseUp:
- case NSEventTypeOtherMouseDragged:
+ switch ([event type]) {
+ case NSEventTypeLeftMouseDown:
+ case NSEventTypeLeftMouseUp:
+ case NSEventTypeRightMouseDown:
+ case NSEventTypeRightMouseUp:
+ case NSEventTypeMouseMoved: // ??
+ case NSEventTypeLeftMouseDragged:
+ case NSEventTypeRightMouseDragged:
+ case NSEventTypeMouseEntered:
+ case NSEventTypeMouseExited:
+ case NSEventTypeKeyDown:
+ case NSEventTypeKeyUp:
+ case NSEventTypeFlagsChanged: // key modifiers changed?
+ case NSEventTypeCursorUpdate: // ??
+ case NSEventTypeScrollWheel:
+ case NSEventTypeTabletPoint:
+ case NSEventTypeTabletProximity:
+ case NSEventTypeOtherMouseDown:
+ case NSEventTypeOtherMouseUp:
+ case NSEventTypeOtherMouseDragged:
#ifndef QT_NO_GESTURES
- case NSEventTypeGesture: // touch events
- case NSEventTypeMagnify:
- case NSEventTypeSwipe:
- case NSEventTypeRotate:
- case NSEventTypeBeginGesture:
- case NSEventTypeEndGesture:
+ case NSEventTypeGesture: // touch events
+ case NSEventTypeMagnify:
+ case NSEventTypeSwipe:
+ case NSEventTypeRotate:
+ case NSEventTypeBeginGesture:
+ case NSEventTypeEndGesture:
#endif // QT_NO_GESTURES
- result = true;
+ return true;
break;
-
- default:
+ default:
break;
}
- return result;
+ return false;
}
static inline void qt_mac_waitForMoreEvents(NSString *runLoopMode = NSDefaultRunLoopMode)
@@ -465,7 +461,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
dequeue: YES];
if (event) {
- if (IsMouseOrKeyEvent(event)) {
+ if (isUserInputEvent(event)) {
[event retain];
d->queuedUserInputEvents.append(event);
continue;
@@ -485,7 +481,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
if (event) {
if (flags & QEventLoop::ExcludeUserInputEvents) {
- if (IsMouseOrKeyEvent(event)) {
+ if (isUserInputEvent(event)) {
[event retain];
d->queuedUserInputEvents.append(event);
continue;
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.h b/src/plugins/platforms/cocoa/qcocoaglcontext.h
index bb309c0713..4210a4ed3f 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.h
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.h
@@ -50,6 +50,8 @@
QT_BEGIN_NAMESPACE
+class QCocoaWindow;
+
class QCocoaGLContext : public QPlatformOpenGLContext
{
public:
@@ -76,12 +78,12 @@ private:
static NSOpenGLPixelFormat *pixelFormatForSurfaceFormat(const QSurfaceFormat &format);
bool setDrawable(QPlatformSurface *surface);
+ void prepareDrawable(QCocoaWindow *platformWindow);
void updateSurfaceFormat();
NSOpenGLContext *m_context = nil;
NSOpenGLContext *m_shareContext = nil;
QSurfaceFormat m_format;
- bool m_didCheckForSoftwareContext = false;
QVarLengthArray<QMacNotificationObserver, 3> m_updateObservers;
QAtomicInt m_needsUpdate = false;
};
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
index ba7d12ce30..b312e033cd 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
@@ -223,12 +223,10 @@ NSOpenGLPixelFormat *QCocoaGLContext::pixelFormatForSurfaceFormat(const QSurface
attrs << NSOpenGLPFAAllowOfflineRenderers;
}
- // FIXME: Pull this information out of the NSView
- QByteArray useLayer = qgetenv("QT_MAC_WANTS_LAYER");
- if (!useLayer.isEmpty() && useLayer.toInt() > 0) {
- // Disable the software rendering fallback. This makes compositing
- // OpenGL and raster NSViews using Core Animation layers possible.
- attrs << NSOpenGLPFANoRecovery;
+ if (qGuiApp->testAttribute(Qt::AA_UseSoftwareOpenGL)) {
+ // kCGLRendererGenericFloatID is the modern software renderer on macOS,
+ // as opposed to kCGLRendererGenericID, which is deprecated.
+ attrs << NSOpenGLPFARendererID << kCGLRendererGenericFloatID;
}
attrs << 0; // 0-terminate array
@@ -368,23 +366,6 @@ bool QCocoaGLContext::makeCurrent(QPlatformSurface *surface)
[m_context makeCurrentContext];
if (surface->surface()->surfaceClass() == QSurface::Window) {
- // Disable high-resolution surfaces when using the software renderer, which has the
- // problem that the system silently falls back to a to using a low-resolution buffer
- // when a high-resolution buffer is requested. This is not detectable using the NSWindow
- // convertSizeToBacking and backingScaleFactor APIs. A typical result of this is that Qt
- // will display a quarter of the window content when running in a virtual machine.
- if (!m_didCheckForSoftwareContext) {
- // FIXME: This ensures we check only once per context,
- // but the context may be used for multiple surfaces.
- m_didCheckForSoftwareContext = true;
-
- const GLubyte* renderer = glGetString(GL_RENDERER);
- if (qstrcmp((const char *)renderer, "Apple Software Renderer") == 0) {
- NSView *view = static_cast<QCocoaWindow *>(surface)->m_view;
- [view setWantsBestResolutionOpenGLSurface:NO];
- }
- }
-
if (m_needsUpdate.fetchAndStoreRelaxed(false))
update();
}
@@ -413,11 +394,14 @@ bool QCocoaGLContext::setDrawable(QPlatformSurface *surface)
}
Q_ASSERT(surface->surface()->surfaceClass() == QSurface::Window);
- QNSView *view = qnsview_cast(static_cast<QCocoaWindow *>(surface)->view());
+ auto *cocoaWindow = static_cast<QCocoaWindow *>(surface);
+ QNSView *view = qnsview_cast(cocoaWindow->view());
if (view == m_context.view)
return true;
+ prepareDrawable(cocoaWindow);
+
// Setting the drawable may happen on a separate thread as a result of
// a call to makeCurrent, so we need to set up the observers before we
// associate the view with the context. That way we will guarantee that
@@ -460,6 +444,30 @@ bool QCocoaGLContext::setDrawable(QPlatformSurface *surface)
return true;
}
+void QCocoaGLContext::prepareDrawable(QCocoaWindow *platformWindow)
+{
+ // We generally want high-DPI GL surfaces, unless the user has explicitly disabled them
+ bool prefersBestResolutionOpenGLSurface = qt_mac_resolveOption(YES,
+ platformWindow->window(), "_q_mac_wantsBestResolutionOpenGLSurface",
+ "QT_MAC_WANTS_BEST_RESOLUTION_OPENGL_SURFACE");
+
+ auto *view = platformWindow->view();
+
+ // The only case we have to opt out ourselves is when using the Apple software renderer
+ // in combination with surface-backed views, as these together do not support high-DPI.
+ if (prefersBestResolutionOpenGLSurface) {
+ int rendererID = 0;
+ [m_context getValues:&rendererID forParameter:NSOpenGLContextParameterCurrentRendererID];
+ bool isSoftwareRenderer = (rendererID & kCGLRendererIDMatchingMask) == kCGLRendererGenericFloatID;
+ if (isSoftwareRenderer && !view.layer) {
+ qCInfo(lcQpaOpenGLContext) << "Disabling high resolution GL surface due to software renderer";
+ prefersBestResolutionOpenGLSurface = false;
+ }
+ }
+
+ view.wantsBestResolutionOpenGLSurface = prefersBestResolutionOpenGLSurface;
+}
+
// NSOpenGLContext is not re-entrant. Even when using separate contexts per thread,
// view, and window, calls into the API will still deadlock. For more information
// see https://openradar.appspot.com/37064579
@@ -491,6 +499,21 @@ void QCocoaGLContext::swapBuffers(QPlatformSurface *surface)
return;
}
+ if (m_context.view.layer) {
+ // Flushing an NSOpenGLContext will hit the screen immediately, ignoring
+ // any Core Animation transactions in place. This may result in major
+ // visual artifacts if the flush happens out of sync with the size
+ // of the layer, view, and window reflected by other parts of the UI,
+ // e.g. if the application flushes in the resize event or a timer during
+ // window resizing, instead of in the expose event.
+ auto *cocoaWindow = static_cast<QCocoaWindow *>(surface);
+ if (cocoaWindow->geometry().size() != cocoaWindow->m_exposedRect.size()) {
+ qCInfo(lcQpaOpenGLContext) << "Window exposed size does not match geometry (yet)."
+ << "Skipping flush to avoid visual artifacts.";
+ return;
+ }
+ }
+
QMutexLocker locker(&s_reentrancyMutex);
[m_context flushBuffer];
}
diff --git a/src/plugins/platforms/cocoa/qcocoascreen.h b/src/plugins/platforms/cocoa/qcocoascreen.h
index 60243b79be..7ec9a2b5af 100644
--- a/src/plugins/platforms/cocoa/qcocoascreen.h
+++ b/src/plugins/platforms/cocoa/qcocoascreen.h
@@ -99,18 +99,18 @@ private:
static void add(CGDirectDisplayID displayId);
void remove();
- CGDirectDisplayID m_displayId = 0;
+ CGDirectDisplayID m_displayId = kCGNullDirectDisplay;
QRect m_geometry;
QRect m_availableGeometry;
QDpi m_logicalDpi;
- qreal m_refreshRate;
- int m_depth;
+ qreal m_refreshRate = 0;
+ int m_depth = 0;
QString m_name;
QImage::Format m_format;
QSizeF m_physicalSize;
QCocoaCursor *m_cursor;
- qreal m_devicePixelRatio;
+ qreal m_devicePixelRatio = 0;
CVDisplayLinkRef m_displayLink = nullptr;
dispatch_source_t m_displayLinkSource = nullptr;
diff --git a/src/plugins/platforms/cocoa/qcocoascreen.mm b/src/plugins/platforms/cocoa/qcocoascreen.mm
index 392099d083..bd5c95b9d0 100644
--- a/src/plugins/platforms/cocoa/qcocoascreen.mm
+++ b/src/plugins/platforms/cocoa/qcocoascreen.mm
@@ -54,6 +54,23 @@
QT_BEGIN_NAMESPACE
+namespace CoreGraphics {
+ Q_NAMESPACE
+ enum DisplayChange {
+ Moved = kCGDisplayMovedFlag,
+ SetMain = kCGDisplaySetMainFlag,
+ SetMode = kCGDisplaySetModeFlag,
+ Added = kCGDisplayAddFlag,
+ Removed = kCGDisplayRemoveFlag,
+ Enabled = kCGDisplayEnabledFlag,
+ Disabled = kCGDisplayDisabledFlag,
+ Mirrored = kCGDisplayMirrorFlag,
+ UnMirrored = kCGDisplayUnMirrorFlag,
+ DesktopShapeChanged = kCGDisplayDesktopShapeChangedFlag
+ };
+ Q_ENUM_NS(DisplayChange)
+}
+
void QCocoaScreen::initializeScreens()
{
uint32_t displayCount = 0;
@@ -73,6 +90,10 @@ void QCocoaScreen::initializeScreens()
Q_UNUSED(userInfo);
+ qCDebug(lcQpaScreen).verbosity(0).nospace() << "Display reconfiguration"
+ << " (" << QFlags<CoreGraphics::DisplayChange>(flags) << ")"
+ << " for displayId=" << displayId;
+
QCocoaScreen *cocoaScreen = QCocoaScreen::get(displayId);
if ((flags & kCGDisplayAddFlag) || !cocoaScreen) {
@@ -93,22 +114,24 @@ void QCocoaScreen::initializeScreens()
mainDisplay->updateProperties();
qCInfo(lcQpaScreen) << "Primary screen changed to" << mainDisplay;
QWindowSystemInterface::handlePrimaryScreenChanged(mainDisplay);
+ if (cocoaScreen == mainDisplay)
+ return; // Already reconfigured
}
- if (cocoaScreen == mainDisplay)
- return; // Already reconfigured
-
cocoaScreen->updateProperties();
- qCInfo(lcQpaScreen) << "Reconfigured" << cocoaScreen;
+ qCInfo(lcQpaScreen).nospace() << "Reconfigured " <<
+ (primaryScreen() == cocoaScreen ? "primary " : "")
+ << cocoaScreen;
}
}, nullptr);
}
void QCocoaScreen::add(CGDirectDisplayID displayId)
{
+ const bool isPrimary = CGDisplayIsMain(displayId);
QCocoaScreen *cocoaScreen = new QCocoaScreen(displayId);
- qCInfo(lcQpaScreen) << "Adding" << cocoaScreen;
- QWindowSystemInterface::handleScreenAdded(cocoaScreen, CGDisplayIsMain(displayId));
+ qCInfo(lcQpaScreen).nospace() << "Adding " << (isPrimary ? "new primary " : "") << cocoaScreen;
+ QWindowSystemInterface::handleScreenAdded(cocoaScreen, isPrimary);
}
QCocoaScreen::QCocoaScreen(CGDirectDisplayID displayId)
@@ -127,7 +150,7 @@ void QCocoaScreen::cleanupScreens()
void QCocoaScreen::remove()
{
- m_displayId = 0; // Prevent stale references during removal
+ m_displayId = kCGNullDirectDisplay; // Prevent stale references during removal
// This may result in the application responding to QGuiApplication::screenRemoved
// by moving the window to another screen, either by setGeometry, or by setScreen.
@@ -140,6 +163,7 @@ void QCocoaScreen::remove()
// QCocoaWindow::windowDidChangeScreen. At that point the window will appear to have
// already changed its screen, but that's only true if comparing the Qt screens,
// not when comparing the NSScreens.
+ qCInfo(lcQpaScreen).nospace() << "Removing " << (primaryScreen() == this ? "current primary " : "") << this;
QWindowSystemInterface::handleScreenRemoved(this);
}
@@ -351,15 +375,6 @@ void QCocoaScreen::deliverUpdateRequests()
// it on the main thread yet, because the processing of the update request is taking
// too long, or because the update request was deferred due to window live resizing.
qDeferredDebug(screenUpdates) << ", " << framesAheadOfDelivery << " frame(s) ahead";
-
- // We skip the frame completely if we're live-resizing, to not put any extra
- // strain on the main thread runloop. Otherwise we assume we should push frames
- // as fast as possible, and hopefully the callback will be delivered on the
- // main thread just when the previous finished.
- if (qt_apple_sharedApplication().keyWindow.inLiveResize) {
- qDeferredDebug(screenUpdates) << "; waiting for main thread to catch up";
- return;
- }
}
qDeferredDebug(screenUpdates) << "; signaling dispatch source";
@@ -552,10 +567,10 @@ QPixmap QCocoaScreen::grabWindow(WId view, int x, int y, int width, int height)
*/
QCocoaScreen *QCocoaScreen::primaryScreen()
{
- auto screen = static_cast<QCocoaScreen *>(QGuiApplication::primaryScreen()->handle());
- Q_ASSERT_X(screen == get(CGMainDisplayID()), "QCocoaScreen",
- "The application's primary screen should always be in sync with the main display");
- return screen;
+ // Note: The primary screen that Qt knows about may not match the current CGMainDisplayID()
+ // if macOS has not yet been able to inform us that the main display has changed, but we
+ // will update the primary screen accordingly once the reconfiguration callback comes in.
+ return static_cast<QCocoaScreen *>(QGuiApplication::primaryScreen()->handle());
}
QList<QPlatformScreen*> QCocoaScreen::virtualSiblings() const
@@ -597,7 +612,7 @@ NSScreen *QCocoaScreen::nativeScreen() const
QCFType<CFUUIDRef> uuid = CGDisplayCreateUUIDFromDisplayID(m_displayId);
for (NSScreen *screen in [NSScreen screens]) {
- if (CGDisplayCreateUUIDFromDisplayID(screen.qt_displayId) == uuid)
+ if (QCFType<CFUUIDRef>(CGDisplayCreateUUIDFromDisplayID(screen.qt_displayId)) == uuid)
return screen;
}
@@ -639,6 +654,7 @@ QDebug operator<<(QDebug debug, const QCocoaScreen *screen)
debug << ", geometry=" << screen->geometry();
debug << ", dpr=" << screen->devicePixelRatio();
debug << ", name=" << screen->name();
+ debug << ", displayId=" << screen->m_displayId;
debug << ", native=" << screen->nativeScreen();
}
debug << ')';
@@ -646,6 +662,8 @@ QDebug operator<<(QDebug debug, const QCocoaScreen *screen)
}
#endif // !QT_NO_DEBUG_STREAM
+#include "qcocoascreen.moc"
+
QT_END_NAMESPACE
@implementation NSScreen (QtExtras)
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index f212b3e3f0..21366b4f67 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -1509,17 +1509,6 @@ bool QCocoaWindow::updatesWithDisplayLink() const
void QCocoaWindow::deliverUpdateRequest()
{
- // Don't send update requests for views that need display, as the update
- // request doesn't carry any information about dirty rects, so the app
- // may end up painting a smaller region than required. (For some reason
- // the layer and view's needsDisplay status isn't always in sync, even if
- // the view is layer-backed, not layer-hosted, so we check both).
- if (m_view.layer.needsDisplay || m_view.needsDisplay) {
- qCDebug(lcQpaDrawing) << "View needs display, deferring update request for" << window();
- requestUpdate();
- return;
- }
-
qCDebug(lcQpaDrawing) << "Delivering update request to" << window();
QPlatformWindow::deliverUpdateRequest();
}
diff --git a/src/plugins/platforms/cocoa/qnsview_drawing.mm b/src/plugins/platforms/cocoa/qnsview_drawing.mm
index eb9286519d..2fd63fad67 100644
--- a/src/plugins/platforms/cocoa/qnsview_drawing.mm
+++ b/src/plugins/platforms/cocoa/qnsview_drawing.mm
@@ -44,17 +44,6 @@
- (void)initDrawing
{
[self updateLayerBacking];
-
- // Enable high-DPI OpenGL for retina displays. Enabling has the side
- // effect that Cocoa will start calling glViewport(0, 0, width, height),
- // overriding any glViewport calls in application code. This is usually not a
- // problem, except if the application wants to have a "custom" viewport.
- // (like the hellogl example)
- if (m_platformWindow->window()->supportsOpenGL()) {
- self.wantsBestResolutionOpenGLSurface = qt_mac_resolveOption(YES, m_platformWindow->window(),
- "_q_mac_wantsBestResolutionOpenGLSurface", "QT_MAC_WANTS_BEST_RESOLUTION_OPENGL_SURFACE");
- // See also QCocoaGLContext::makeCurrent for software renderer workarounds.
- }
}
- (BOOL)isOpaque
diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm
index 58ad53a6e1..dcb9a85a3c 100644
--- a/src/plugins/platforms/cocoa/qprintengine_mac.mm
+++ b/src/plugins/platforms/cocoa/qprintengine_mac.mm
@@ -59,6 +59,8 @@ QMacPrintEngine::QMacPrintEngine(QPrinter::PrinterMode mode, const QString &devi
QString id = deviceId;
if (id.isEmpty())
id = QCocoaPrinterSupport().defaultPrintDeviceId();
+ else
+ setProperty(QPrintEngine::PPK_PrinterName, deviceId);
d->m_printDevice.reset(new QCocoaPrintDevice(id));
d->m_pageLayout.setPageSize(d->m_printDevice->defaultPageSize());
d->initialize();
diff --git a/src/plugins/platforms/haiku/qhaikuapplication.cpp b/src/plugins/platforms/haiku/qhaikuapplication.cpp
index b75810c453..de4acdfd4a 100644
--- a/src/plugins/platforms/haiku/qhaikuapplication.cpp
+++ b/src/plugins/platforms/haiku/qhaikuapplication.cpp
@@ -42,6 +42,8 @@
#include <QCoreApplication>
#include <QFileOpenEvent>
+#include <qpa/qwindowsysteminterface.h>
+
#include <Entry.h>
#include <Path.h>
@@ -52,8 +54,7 @@ QHaikuApplication::QHaikuApplication(const char *signature)
bool QHaikuApplication::QuitRequested()
{
- QEvent quitEvent(QEvent::Quit);
- QCoreApplication::sendEvent(QCoreApplication::instance(), &quitEvent);
+ QWindowSystemInterface::handleApplicationTermination<QWindowSystemInterface::SynchronousDelivery>();
return true;
}
diff --git a/src/plugins/platforms/wasm/wasm_shell.html b/src/plugins/platforms/wasm/wasm_shell.html
index a118c217f3..d4bf632830 100644
--- a/src/plugins/platforms/wasm/wasm_shell.html
+++ b/src/plugins/platforms/wasm/wasm_shell.html
@@ -17,7 +17,7 @@
<body onload="init()">
<figure style="overflow:visible;" id="qtspinner">
<center style="margin-top:1.5em; line-height:150%">
- <img src="qtlogo.svg"; width=320; height=200; style="display:block"> </img>
+ <img src="qtlogo.svg" width="320" height="200" style="display:block"></img>
<strong>Qt for WebAssembly: @APPNAME@</strong>
<div id="qtstatus"></div>
<noscript>JavaScript is disabled. Please enable JavaScript to use this application.</noscript>
diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp
index 437c9562ab..40f9652cbd 100644
--- a/src/plugins/platforms/windows/qwindowstheme.cpp
+++ b/src/plugins/platforms/windows/qwindowstheme.cpp
@@ -466,6 +466,8 @@ QVariant QWindowsTheme::themeHint(ThemeHint hint) const
result = int(scrollLines);
return QVariant(result);
}
+ case MouseDoubleClickDistance:
+ return GetSystemMetrics(SM_CXDOUBLECLK);
default:
break;
}
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
index 1ce947165d..3d525598ca 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
@@ -354,6 +354,11 @@ bool QXcbDrag::findXdndAwareTarget(const QPoint &globalPos, xcb_window_t *target
void QXcbDrag::move(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods)
{
+ // currentDrag() might be deleted while 'drag' is progressing
+ if (!currentDrag()) {
+ cancel();
+ return;
+ }
// The source sends XdndEnter and XdndPosition to the target.
if (source_sameanswer.contains(globalPos) && source_sameanswer.isValid())
return;
@@ -1076,7 +1081,8 @@ void QXcbDrag::cancel()
send_leave();
// remove canceled object
- currentDrag()->deleteLater();
+ if (currentDrag())
+ currentDrag()->deleteLater();
canceled = true;
}
diff --git a/src/plugins/platforms/xcb/qxcbsessionmanager.cpp b/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
index 2303ccf806..f880d4d722 100644
--- a/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
+++ b/src/plugins/platforms/xcb/qxcbsessionmanager.cpp
@@ -42,6 +42,8 @@
#ifndef QT_NO_SESSIONMANAGER
+#include <qpa/qwindowsysteminterface.h>
+
#include <qguiapplication.h>
#include <qdatetime.h>
#include <qfileinfo.h>
@@ -289,8 +291,7 @@ static void sm_dieCallback(SmcConn smcConn, SmPointer /* clientData */)
if (smcConn != smcConnection)
return;
resetSmState();
- QEvent quitEvent(QEvent::Quit);
- QGuiApplication::sendEvent(qApp, &quitEvent);
+ QWindowSystemInterface::handleApplicationTermination<QWindowSystemInterface::SynchronousDelivery>();
}
static void sm_shutdownCancelledCallback(SmcConn smcConn, SmPointer clientData)
diff --git a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
index 5bf23fdaed..e1ede4aec1 100644
--- a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
+++ b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
@@ -221,18 +221,18 @@ public:
int disconnectCount;
bool hasSQLFetchScroll;
- bool isStmtHandleValid();
+ bool isStmtHandleValid() const;
void updateStmtHandleState();
};
-bool QODBCResultPrivate::isStmtHandleValid()
+bool QODBCResultPrivate::isStmtHandleValid() const
{
- return disconnectCount == drv_d_func()->disconnectCount;
+ return drv_d_func() && disconnectCount == drv_d_func()->disconnectCount;
}
void QODBCResultPrivate::updateStmtHandleState()
{
- disconnectCount = drv_d_func()->disconnectCount;
+ disconnectCount = drv_d_func() ? drv_d_func()->disconnectCount : 0;
}
static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode = 0)
@@ -975,7 +975,7 @@ QODBCResult::QODBCResult(const QODBCDriver *db)
QODBCResult::~QODBCResult()
{
Q_D(QODBCResult);
- if (d->hStmt && d->isStmtHandleValid() && driver()->isOpen()) {
+ if (d->hStmt && d->isStmtHandleValid() && driver() && driver()->isOpen()) {
SQLRETURN r = SQLFreeHandle(SQL_HANDLE_STMT, d->hStmt);
if (r != SQL_SUCCESS)
qSqlWarning(QLatin1String("QODBCDriver: Unable to free statement handle ")
diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp
index b85a1ac4c7..68313b7ff0 100644
--- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
@@ -1078,8 +1078,10 @@ static QPSQLDriver::Protocol qMakePSQLVersion(int vMaj, int vMin)
return QPSQLDriver::Version10;
case 11:
return QPSQLDriver::Version11;
+ case 12:
+ return QPSQLDriver::Version12;
default:
- if (vMaj > 11)
+ if (vMaj > 12)
return QPSQLDriver::UnknownLaterVersion;
break;
}
@@ -1439,26 +1441,29 @@ QSqlRecord QPSQLDriver::record(const QString &tablename) const
schema = stripDelimiters(schema, QSqlDriver::TableName);
tbl = stripDelimiters(tbl, QSqlDriver::TableName);
- QString stmt = QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
- "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "
- "pg_attrdef.adsrc "
- "FROM pg_class, pg_attribute "
- "LEFT JOIN pg_attrdef ON (pg_attrdef.adrelid = "
- "pg_attribute.attrelid AND pg_attrdef.adnum = pg_attribute.attnum) "
- "WHERE %1 "
- "AND pg_class.relname = '%2' "
- "AND pg_attribute.attnum > 0 "
- "AND pg_attribute.attrelid = pg_class.oid "
- "AND pg_attribute.attisdropped = false "
- "ORDER BY pg_attribute.attnum");
- if (schema.isEmpty())
- stmt = stmt.arg(QStringLiteral("pg_table_is_visible(pg_class.oid)"));
- else
- stmt = stmt.arg(QStringLiteral("pg_class.relnamespace = (SELECT oid FROM "
- "pg_namespace WHERE pg_namespace.nspname = '%1')").arg(schema));
+ const QString adsrc = protocol() < Version8
+ ? QStringLiteral("pg_attrdef.adsrc")
+ : QStringLiteral("pg_get_expr(pg_attrdef.adbin, pg_attrdef.adrelid)");
+ const QString nspname = schema.isEmpty()
+ ? QStringLiteral("pg_table_is_visible(pg_class.oid)")
+ : QStringLiteral("pg_class.relnamespace = (SELECT oid FROM "
+ "pg_namespace WHERE pg_namespace.nspname = '%1')").arg(schema);
+ const QString stmt =
+ QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
+ "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "
+ "%1 "
+ "FROM pg_class, pg_attribute "
+ "LEFT JOIN pg_attrdef ON (pg_attrdef.adrelid = "
+ "pg_attribute.attrelid AND pg_attrdef.adnum = pg_attribute.attnum) "
+ "WHERE %2 "
+ "AND pg_class.relname = '%3' "
+ "AND pg_attribute.attnum > 0 "
+ "AND pg_attribute.attrelid = pg_class.oid "
+ "AND pg_attribute.attisdropped = false "
+ "ORDER BY pg_attribute.attnum").arg(adsrc, nspname, tbl);
QSqlQuery query(createResult());
- query.exec(stmt.arg(tbl));
+ query.exec(stmt);
while (query.next()) {
int len = query.value(3).toInt();
int precision = query.value(4).toInt();
diff --git a/src/plugins/sqldrivers/psql/qsql_psql_p.h b/src/plugins/sqldrivers/psql/qsql_psql_p.h
index 99e0b5f60f..9ac1fb50d7 100644
--- a/src/plugins/sqldrivers/psql/qsql_psql_p.h
+++ b/src/plugins/sqldrivers/psql/qsql_psql_p.h
@@ -93,6 +93,7 @@ public:
Version9_6 = 22,
Version10 = 23,
Version11 = 24,
+ Version12 = 25,
UnknownLaterVersion = 100000
};
diff --git a/src/printsupport/dialogs/qprintsettingsoutput.ui b/src/printsupport/dialogs/qprintsettingsoutput.ui
index 290111a98c..360634aaa7 100644
--- a/src/printsupport/dialogs/qprintsettingsoutput.ui
+++ b/src/printsupport/dialogs/qprintsettingsoutput.ui
@@ -351,13 +351,13 @@
<item row="0" column="0">
<widget class="QGroupBox" name="duplex">
<property name="title">
- <string>Duplex Printing</string>
+ <string>Double Sided Printing</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="noDuplex">
<property name="text">
- <string>None</string>
+ <string>Off</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -367,14 +367,14 @@
<item>
<widget class="QRadioButton" name="duplexLong">
<property name="text">
- <string>Long side</string>
+ <string>Long side binding</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="duplexShort">
<property name="text">
- <string>Short side</string>
+ <string>Short side binding</string>
</property>
</widget>
</item>
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index a5232590d0..d6810cc6af 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1369,7 +1369,7 @@ QSqlRecord QSqlTableModel::record(int row) const
// get generated flags from the cache
const QSqlTableModelPrivate::ModifiedRow mrow = d->cache.value(row);
if (mrow.op() != QSqlTableModelPrivate::None) {
- const QSqlRecord crec = mrow.rec();
+ const QSqlRecord &crec = mrow.rec();
for (int i = 0, cnt = rec.count(); i < cnt; ++i)
rec.setGenerated(i, crec.isGenerated(i));
}
diff --git a/src/testlib/doc/snippets/code/src_qtestlib_qtestcase.cpp b/src/testlib/doc/snippets/code/src_qtestlib_qtestcase.cpp
index 202f87af52..5f71828595 100644
--- a/src/testlib/doc/snippets/code/src_qtestlib_qtestcase.cpp
+++ b/src/testlib/doc/snippets/code/src_qtestlib_qtestcase.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -296,3 +296,31 @@ QTest::keyClick(myWindow, Qt::Key_Escape, Qt::ShiftModifier, 200);
}
+//! [30]
+void TestQLocale::initTestCase_data()
+{
+ QTest::addColumn<QLocale>("locale");
+ QTest::newRow("C") << QLocale::c();
+ QTest::newRow("UKish") << QLocale("en_GB");
+ QTest::newRow("USAish") << QLocale(QLocale::English);
+}
+
+void TestQLocale::roundTripInt_data()
+{
+ QTest::addColumn<int>("number");
+ QTest::newRow("one") << 1;
+ QTest::newRow("two") << 2;
+ QTest::newRow("ten") << 10;
+}
+//! [30]
+
+//! [31]
+void TestQLocale::roundTripInt()
+{
+ QFETCH_GLOBAL(QLocale, locale);
+ QFETCH(int, number);
+ bool ok;
+ QCOMPARE(locale.toInt(locale.toString(number), &ok), number);
+ QVERIFY(ok);
+}
+//! [31]
diff --git a/src/testlib/doc/src/qttestlib-manual.qdoc b/src/testlib/doc/src/qttestlib-manual.qdoc
index 65836d0706..bb379fe029 100644
--- a/src/testlib/doc/src/qttestlib-manual.qdoc
+++ b/src/testlib/doc/src/qttestlib-manual.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Copyright (C) 2016 Intel Corporation.
** Contact: https://www.qt.io/licensing/
**
@@ -89,12 +89,14 @@
private slot is a test function in your test. QTest::qExec() can be used to execute
all test functions in the test object.
- In addition, there are four private slots that are \e not treated as test functions.
- They will be executed by the testing framework and can be used to initialize and
- clean up either the entire test or the current test function.
+ In addition, you can define the following private slots that are \e not
+ treated as test functions. When present, they will be executed by the
+ testing framework and can be used to initialize and clean up either the
+ entire test or the current test function.
\list
\li \c{initTestCase()} will be called before the first test function is executed.
+ \li \c{initTestCase_data()} will be called to create a global test data table.
\li \c{cleanupTestCase()} will be called after the last test function was executed.
\li \c{init()} will be called before each test function is executed.
\li \c{cleanup()} will be called after every test function.
@@ -358,18 +360,44 @@
counters can be obtained by running any benchmark executable with the
option \c -perfcounterlist.
- \list
- \li \b Notes:
+ \note
\list
\li Using the performance counter may require enabling access to non-privileged
applications.
\li Devices that do not support high-resolution timers default to
one-millisecond granularity.
\endlist
- \endlist
See \l {Chapter 5: Writing a Benchmark}{Writing a Benchmark} in the Qt Test
Tutorial for more benchmarking examples.
+
+ \section1 Using Global Test Data
+
+ You can define \c{initTestCase_data()} to set up a global test data table.
+ Each test is run once for each row in the global test data table. When the
+ test function itself \l{Chapter 2: Data-driven Testing}{is data-driven},
+ it is run for each local data row, for each global data row. So, if there
+ are \c g rows in the global data table and \c d rows in the test's own
+ data-table, the number of runs of this test is \c g times \c d.
+
+ Global data is fetched from the table using the \l QFETCH_GLOBAL() macro.
+
+ The following are typical use cases for global test data:
+
+ \list
+ \li Selecting among the available database backends in QSql tests to run
+ every test against every database.
+ \li Doing all networking tests with and without SSL (HTTP versus HTTPS)
+ and proxying.
+ \li Testing a timer with a high precision clock and with a coarse one.
+ \li Selecting whether a parser shall read from a QByteArray or from a
+ QIODevice.
+ \endlist
+
+ For example, to test each number provided by \c {roundTripInt_data()} with
+ each locale provided by \c {initTestCase_data()}:
+
+ \snippet code/src_qtestlib_qtestcase.cpp 31
*/
/*!
@@ -513,10 +541,9 @@
QTest::newRow() function. Each set of data will become a
separate row in the test table.
- \l QTest::newRow() takes one argument: a name that will be
- associated with the data set. If the test fails, the name will be
- used in the test log, referencing the failed data. Then we
- stream the data set into the new table row. First an arbitrary
+ \l QTest::newRow() takes one argument: a name that will be associated
+ with the data set and used in the test log to identify the data set.
+ Then we stream the data set into the new table row. First an arbitrary
string, and then the expected result of applying the
QString::toUpper() function to that string.
@@ -548,6 +575,10 @@
\li HELLO
\endtable
+ When data is streamed into the row, each datum is asserted to match
+ the type of the column whose value it supplies. If any assertion fails,
+ the test is aborted.
+
\section1 Rewriting the Test Function
Our test function can now be rewritten:
diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index 5ea6bc5dc7..d532ad478d 100644
--- a/src/testlib/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -48,7 +48,7 @@
\snippet code/doc_src_qsignalspy.cpp 1
- \b {Note:} Non-standard data types need to be registered, using
+ \note Non-standard data types need to be registered, using
the qRegisterMetaType() function, before you can create a
QSignalSpy. For example:
@@ -57,6 +57,18 @@
To retrieve the instance, you can use qvariant_cast:
\snippet code/doc_src_qsignalspy.cpp 3
+
+ \section1 Verifying Signal Emissions
+
+ The QSignalSpy class provides an elegant mechanism for capturing the list
+ of signals emitted by an object. However, you should verify its validity
+ after construction. The constructor does a number of sanity checks, such as
+ verifying that the signal to be spied upon actually exists. To make the
+ diagnosis of test failures easier, the results of these checks should be
+ checked by calling \c QVERIFY(spy.isValid()) before proceeding further with
+ a test.
+
+ \sa QVERIFY()
*/
/*! \fn QSignalSpy::QSignalSpy(const QObject *object, const char *signal)
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 7f5725a60c..cb8061737d 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1528,7 +1528,7 @@ void TestMethods::invokeTests(QObject *testObject) const
QTestResult::setCurrentTestFunction(nullptr);
}
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_WASM)
class FatalSignalHandler
{
public:
@@ -1928,7 +1928,7 @@ int QTest::qRun()
} else
#endif
{
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_WASM)
QScopedPointer<FatalSignalHandler> handler;
if (!noCrashHandler)
handler.reset(new FatalSignalHandler);
diff --git a/src/testlib/qtestcase.qdoc b/src/testlib/qtestcase.qdoc
index 2af016304d..9006d7b401 100644
--- a/src/testlib/qtestcase.qdoc
+++ b/src/testlib/qtestcase.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -220,8 +220,8 @@
\relates QTest
The fetch macro creates a local variable named \a name with the type \a type
- on the stack. \a name has to match the element name from the test's data.
- If no such element exists, the test will assert.
+ on the stack. The \a name and \a type must match a column from the test's
+ data table. This is asserted and the test will abort if the assertion fails.
Assuming a test has the following data:
@@ -235,10 +235,37 @@
\c aString and \c expected are variables on the stack that are initialized with
the current test data.
- \b {Note:} This macro can only be used in a test function that is invoked
+ \note This macro can only be used in a test function that is invoked
by the test framework. The test function must have a _data function.
*/
+/*! \macro QFETCH_GLOBAL(type, name)
+
+ \relates QTest
+
+ This macro fetches a variable named \a name with the type \a type from
+ a row in the global data table. The \a name and \a type must match a
+ column in the global data table. This is asserted and the test will abort
+ if the assertion fails.
+
+ Assuming a test has the following data:
+
+ \snippet code/src_qtestlib_qtestcase.cpp 30
+
+ The test's own data is a single number per row. In this case,
+ \c initTestCase_data() also supplies a locale per row. Therefore,
+ this test will be run with every combination of locale from the
+ latter and number from the former.
+
+ \snippet code/src_qtestlib_qtestcase.cpp 31
+
+ The locale is read from the global data table using QFETCH_GLOBAL(),
+ and the number is read from the local data table using QFETCH().
+
+ \note This macro can only be used in test methods of a class with an
+ \c initTestCase_data() method.
+*/
+
/*! \macro QWARN(message)
\relates QTest
@@ -255,7 +282,7 @@
This macro can be used to force a test failure. The test stops
executing and the failure \a message is appended to the test log.
- \b {Note:} This macro can only be used in a test function that is invoked
+ \note This macro can only be used in a test function that is invoked
by the test framework.
Example:
@@ -332,7 +359,7 @@
\a mode is a \l QTest::TestFailMode and sets whether the test should
continue to execute or not.
- \b {Note:} This macro can only be used in a test function that is invoked
+ \note This macro can only be used in a test function that is invoked
by the test framework.
Example 1:
@@ -394,13 +421,13 @@
test has been installed, and regardless of whether the test's build tree
is equal to the test's source tree.
- \b {Note:} reliable detection of testdata from the source directory requires
+ \note reliable detection of testdata from the source directory requires
either that qmake is used, or the \c{QT_TESTCASE_BUILDDIR} macro is defined to
point to the working directory from which the compiler is invoked, or only
absolute paths to the source files are passed to the compiler. Otherwise, the
absolute path of the source directory cannot be determined.
- \b {Note:} For tests that use the \l QTEST_APPLESS_MAIN() macro to generate a
+ \note For tests that use the \l QTEST_APPLESS_MAIN() macro to generate a
\c{main()} function, \c{QFINDTESTDATA} will not attempt to find test data
relative to QCoreApplication::applicationDirPath(). In practice, this means that
tests using \c{QTEST_APPLESS_MAIN()} will fail to find their test data
@@ -422,7 +449,7 @@
Similarly, if qmake is used and the configuration includes \c{QT += gui}, then
\c QT_GUI_LIB will be defined automatically.
- \b {Note:} On platforms that have keypad navigation enabled by default,
+ \note On platforms that have keypad navigation enabled by default,
this macro will forcefully disable it if \c QT_WIDGETS_LIB is defined. This is done
to simplify the usage of key events when writing autotests. If you wish to write a
test case that uses keypad navigation, you should enable it either in the
@@ -662,7 +689,7 @@
Simulates pressing a \a key with an optional \a modifier on a \a widget. If \a delay
is larger than 0, the test will wait for \a delay milliseconds before pressing the key.
- \b {Note:} At some point you should release the key using \l keyRelease().
+ \note At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
@@ -674,7 +701,7 @@
If \a delay is larger than 0, the test will wait for \a delay milliseconds
before pressing the key.
- \b {Note:} At some point you should release the key using \l keyRelease().
+ \note At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
@@ -686,7 +713,7 @@
Simulates pressing a \a key with an optional \a modifier on a \a window. If \a delay
is larger than 0, the test will wait for \a delay milliseconds before pressing the key.
- \b {Note:} At some point you should release the key using \l keyRelease().
+ \note At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
@@ -699,7 +726,7 @@
If \a delay is larger than 0, the test will wait for \a delay milliseconds
before pressing the key.
- \b {Note:} At some point you should release the key using \l keyRelease().
+ \note At some point you should release the key using \l keyRelease().
\sa QTest::keyRelease(), QTest::keyClick()
*/
@@ -920,12 +947,12 @@
You can add specializations or overloads of this function to your test to enable
verbose output.
- \b {Note:} Starting with Qt 5.5, you should prefer to provide a toString() function
+ \note Starting with Qt 5.5, you should prefer to provide a toString() function
in the type's namespace instead of specializing this template.
If your code needs to continue to work with the QTestLib from Qt 5.4 or
earlier, you need to continue to use specialization.
- \b {Note:} The caller of toString() must delete the returned data
+ \note The caller of toString() must delete the returned data
using \c{delete[]}. Your implementation should return a string
created with \c{new[]} or qstrdup(). The easiest way to do so is to
create a QByteArray or QString and calling QTest::toString() on it
diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h
index e8a7e0d5f5..1882c858c1 100644
--- a/src/testlib/qtestkeyboard.h
+++ b/src/testlib/qtestkeyboard.h
@@ -54,7 +54,9 @@
#include <QtGui/qguiapplication.h>
#include <QtGui/qwindow.h>
#include <QtGui/qevent.h>
-#include <QtGui/qkeysequence.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/qkeysequence.h>
+#endif
#ifdef QT_WIDGETS_LIB
#include <QtWidgets/qwidget.h>
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp
index 5ede55ecf2..a057aede5b 100644
--- a/src/tools/androiddeployqt/main.cpp
+++ b/src/tools/androiddeployqt/main.cpp
@@ -1274,7 +1274,7 @@ bool updateLibsXml(Options *options)
QFileInfo extraLibInfo(extraLib);
QString name = extraLibInfo.fileName().mid(sizeof("lib") - 1);
name.chop(sizeof(".so") - 1);
- extraLibs += QLatin1String(" <item>%1;%2").arg(it.key(), name);
+ extraLibs += QLatin1String(" <item>%1;%2</item>\n").arg(it.key(), name);
}
}
diff --git a/src/tools/androidtestrunner/main.cpp b/src/tools/androidtestrunner/main.cpp
index 18c4a680be..3e82fded67 100644
--- a/src/tools/androidtestrunner/main.cpp
+++ b/src/tools/androidtestrunner/main.cpp
@@ -280,7 +280,7 @@ static void printHelp()
" $PATH will be used.\n"
" --activity <acitvity>: The Activity to run. If missing the first\n"
" activity from AndroidManifest.qml file will be used.\n"
- " --timout <seconds>: Timeout to run the test.\n"
+ " --timeout <seconds>: Timeout to run the test.\n"
" Default is 5 minutes.\n"
" --make <make cmd>: make command, needed to install the qt library.\n"
" If make is missing make sure the --path is set.\n"
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 9863ff5e69..c784e35607 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -63,8 +63,9 @@ SOURCES += \
../../corelib/kernel/qsharedmemory.cpp \
../../corelib/kernel/qsystemsemaphore.cpp \
../../corelib/plugin/quuid.cpp \
+ ../../corelib/serialization/qcborvalue.cpp \
../../corelib/serialization/qdatastream.cpp \
- ../../corelib/serialization/qjson.cpp \
+ ../../corelib/serialization/qjsoncbor.cpp \
../../corelib/serialization/qjsondocument.cpp \
../../corelib/serialization/qjsonobject.cpp \
../../corelib/serialization/qjsonarray.cpp \
@@ -96,7 +97,6 @@ SOURCES += \
../../corelib/tools/qcommandlineoption.cpp \
../../corelib/tools/qcryptographichash.cpp \
../../corelib/tools/qhash.cpp \
- ../../corelib/tools/qlist.cpp \
../../corelib/tools/qmap.cpp \
../../corelib/tools/qringbuffer.cpp \
../../corelib/tools/qpoint.cpp \
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
index ce4232f3e8..019004e126 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -72,9 +72,8 @@ static const char includeList[] =
static const char forwardDeclarations[] =
"QT_BEGIN_NAMESPACE\n"
+ "#include <QtCore/qcontainerfwd.h>\n"
"class QByteArray;\n"
- "template<class T> class QList;\n"
- "template<class Key, class Value> class QMap;\n"
"class QString;\n"
"class QStringList;\n"
"class QVariant;\n"
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index fd5f8c9017..0349061089 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -502,7 +502,7 @@ void WriteInitialization::acceptUI(DomUI *node)
const QString varConn = connection + QLatin1String("Connection");
m_output << m_indent << varConn << " = QSqlDatabase::database("
- << language::charliteral(connection, m_dindent) << ");\n";
+ << language::charliteral(connection, m_dindent) << ")" << language::eol;
}
acceptWidget(node->elementWidget());
@@ -551,7 +551,7 @@ void WriteInitialization::acceptUI(DomUI *node)
m_refreshInitialization += m_indent;
m_refreshInitialization += QLatin1String("(void)");
m_refreshInitialization += varName ;
- m_refreshInitialization += QLatin1String(";\n");
+ m_refreshInitialization += language::eol;
}
m_output << m_option.indent
@@ -682,7 +682,7 @@ void WriteInitialization::acceptWidget(DomWidget *node)
m_output << "Qt" << language::qualifier
<< language::dockWidgetArea(pstyle->elementNumber()) << ", ";
}
- m_output << varName << ");\n";
+ m_output << varName << ")" << language::eol;
} else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"))) {
m_output << m_indent << parentWidget << language::derefPointer
<< "setStatusBar(" << varName << ')' << language::eol;
@@ -881,7 +881,7 @@ void WriteInitialization::acceptLayout(DomLayout *node)
if (!m_layoutChain.top() && !isGroupBox)
m_output << m_driver->findOrInsertWidget(m_widgetChain.top());
- m_output << ");\n";
+ m_output << ")" << language::eol;
// Suppress margin on a read child layout
const bool suppressMarginDefault = m_layoutChain.top();
@@ -979,7 +979,7 @@ void WriteInitialization::acceptSpacer(DomSpacer *node)
{
m_output << m_indent << m_driver->findOrInsertSpacer(node) << " = ";
writeSpacerItem(node, m_output);
- m_output << ";\n";
+ m_output << language::eol;
}
static inline QString formLayoutRole(int column, int colspan)
@@ -1041,7 +1041,7 @@ void WriteInitialization::acceptLayoutItem(DomLayoutItem *node)
if (layout->attributeClass().contains(QLatin1String("Box")) && !node->attributeAlignment().isEmpty())
m_output << ", 0, " << language::enumValue(node->attributeAlignment());
}
- m_output << ");\n\n";
+ m_output << ")" << language::eol << "\n";
}
void WriteInitialization::acceptActionGroup(DomActionGroup *node)
@@ -1053,7 +1053,7 @@ void WriteInitialization::acceptActionGroup(DomActionGroup *node)
varName = m_driver->findOrInsertActionGroup(m_actionGroupChain.top());
m_output << m_indent << actionName << " = " << language::operatorNew
- << "QActionGroup(" << varName << ");\n";
+ << "QActionGroup(" << varName << ")" << language::eol;
writeProperties(actionName, QLatin1String("QActionGroup"), node->elementProperty());
m_actionGroupChain.push(node);
@@ -1536,7 +1536,7 @@ void WriteInitialization::writeProperties(const QString &varName,
if (leftMargin != -1 || topMargin != -1 || rightMargin != -1 || bottomMargin != -1) {
m_output << m_indent << varName << language::derefPointer << "setContentsMargins("
<< leftMargin << ", " << topMargin << ", "
- << rightMargin << ", " << bottomMargin << ");\n";
+ << rightMargin << ", " << bottomMargin << ")" << language::eol;
}
}
@@ -1566,9 +1566,9 @@ QString WriteInitialization::writeSizePolicy(const DomSizePolicy *sp)
m_output << ')' << language::eol;
m_output << m_indent << spName << ".setHorizontalStretch("
- << sp->elementHorStretch() << ");\n";
+ << sp->elementHorStretch() << ")" << language::eol;
m_output << m_indent << spName << ".setVerticalStretch("
- << sp->elementVerStretch() << ");\n";
+ << sp->elementVerStretch() << ")" << language::eol;
return spName;
}
// Check for a font with the given properties in the FontPropertiesNameMap
@@ -1591,11 +1591,11 @@ QString WriteInitialization::writeFontProperties(const DomFont *f)
<< language::eol;
if (f->hasElementFamily() && !f->elementFamily().isEmpty()) {
m_output << m_indent << fontName << ".setFamily("
- << language::qstring(f->elementFamily(), m_dindent) << ");\n";
+ << language::qstring(f->elementFamily(), m_dindent) << ")" << language::eol;
}
if (f->hasElementPointSize() && f->elementPointSize() > 0) {
m_output << m_indent << fontName << ".setPointSize(" << f->elementPointSize()
- << ");\n";
+ << ")" << language::eol;
}
if (f->hasElementBold()) {
@@ -1680,7 +1680,7 @@ static void writeResourceIcon(QTextStream &output,
"Selected", "Off");
}
if (i->hasElementSelectedOn()) {
- writeIconAddFile(output, indent, iconName, i->elementSelectedOff()->text(),
+ writeIconAddFile(output, indent, iconName, i->elementSelectedOn()->text(),
"Selected", "On");
}
}
@@ -1780,7 +1780,7 @@ QString WriteInitialization::writeIconProperties(const DomResourceIcon *i)
if (iconHasStatePixmaps(i)) {
// Theme + default state pixmaps:
// Generate code to check the theme and default to state pixmaps
- m_output << m_indent << language::stackVariable("QIcon", iconName) << ";\n";
+ m_output << m_indent << language::stackVariable("QIcon", iconName) << language::eol;
const char themeNameStringVariableC[] = "iconThemeName";
// Store theme name in a variable
m_output << m_indent;
@@ -1853,7 +1853,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri
m_output << m_indent << paletteName << ".setColor(" << group
<< ", QPalette" << language::qualifier << language::paletteColorRole(i)
<< ", " << domColor2QString(color)
- << ");\n";
+ << ")" << language::eol;
}
// new format
@@ -1871,7 +1871,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri
m_output << m_indent << paletteName << ".setBrush("
<< language::enumValue(group) << ", "
<< "QPalette" << language::qualifier << roleName
- << ", " << brushName << ");\n";
+ << ", " << brushName << ")" << language::eol;
if (!versionAdded.isNull())
m_output << "#endif\n";
}
@@ -2086,12 +2086,12 @@ void WriteInitialization::initializeComboBox(DomWidget *w)
m_output << iconValue << ", ";
if (needsTranslation(text->elementString())) {
- m_output << "QString());\n";
+ m_output << "QString())" << language::eol;
m_refreshOut << m_indent << varName << language::derefPointer
<< "setItemText(" << i << ", " << trCall(text->elementString())
<< ')' << language::eol;
} else {
- m_output << noTrCall(text->elementString()) << ");\n";
+ m_output << noTrCall(text->elementString()) << ")" << language::eol;
}
}
m_refreshOut << "\n";
@@ -2582,7 +2582,7 @@ void WriteInitialization::acceptConnection(DomConnection *connection)
m_output << m_indent;
language::formatConnection(m_output, theSignal, theSlot);
- m_output << ";\n";
+ m_output << language::eol;
}
static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QString> &directives)
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 27e6b09dc7..a55bf1106a 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -41,7 +41,6 @@
#ifndef QT_NO_ACCESSIBILITY
-#include "qaction.h"
#include "qapplication.h"
#if QT_CONFIG(groupbox)
#include "qgroupbox.h"
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index fc00290536..d00a600424 100644
--- a/src/widgets/dialogs/qcolordialog.cpp
+++ b/src/widgets/dialogs/qcolordialog.cpp
@@ -504,7 +504,7 @@ void QWellArray::keyPressEvent(QKeyEvent* e)
// Event filter to be installed on the dialog while in color-picking mode.
class QColorPickingEventFilter : public QObject {
public:
- explicit QColorPickingEventFilter(QColorDialogPrivate *dp, QObject *parent = 0) : QObject(parent), m_dp(dp) {}
+ explicit QColorPickingEventFilter(QColorDialogPrivate *dp, QObject *parent) : QObject(parent), m_dp(dp) {}
bool eventFilter(QObject *, QEvent *event) override
{
@@ -1611,7 +1611,7 @@ void QColorDialogPrivate::_q_pickScreenColor()
{
Q_Q(QColorDialog);
if (!colorPickingEventFilter)
- colorPickingEventFilter = new QColorPickingEventFilter(this);
+ colorPickingEventFilter = new QColorPickingEventFilter(this, q);
q->installEventFilter(colorPickingEventFilter);
// If user pushes Escape, the last color before picking will be restored.
beforeScreenColorPicking = cs->currentColor();
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index a1b9003c1c..65434c96f9 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -49,7 +49,9 @@
#include <qfontmetrics.h>
#include <qaction.h>
#include <qheaderview.h>
-#include <qshortcut.h>
+#if QT_CONFIG(shortcut)
+# include <qshortcut.h>
+#endif
#include <qgridlayout.h>
#if QT_CONFIG(menu)
#include <qmenu.h>
@@ -344,7 +346,9 @@ Q_GLOBAL_STATIC(QUrl, lastVisitedDir)
QT_BEGIN_INCLUDE_NAMESPACE
#include <QMetaEnum>
-#include <qshortcut.h>
+#if QT_CONFIG(shortcut)
+# include <qshortcut.h>
+#endif
QT_END_INCLUDE_NAMESPACE
/*!
diff --git a/src/widgets/dialogs/qprogressdialog.cpp b/src/widgets/dialogs/qprogressdialog.cpp
index e1a6bce5b1..20f89e132a 100644
--- a/src/widgets/dialogs/qprogressdialog.cpp
+++ b/src/widgets/dialogs/qprogressdialog.cpp
@@ -39,7 +39,9 @@
#include "qprogressdialog.h"
-#include "qshortcut.h"
+#if QT_CONFIG(shortcut)
+# include "qshortcut.h"
+#endif
#include "qpainter.h"
#include "qdrawutil.h"
#include "qlabel.h"
diff --git a/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc b/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc
index 098eaf4717..b0d042566f 100644
--- a/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc
+++ b/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc
@@ -1107,10 +1107,10 @@ QMenu::indicator:exclusive:checked:selected {
QMenuBar {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 lightgray, stop:1 darkgray);
+ spacing: 3px; /* spacing between menu bar items */
}
QMenuBar::item {
- spacing: 3px; /* spacing between menu bar items */
padding: 1px 4px;
background: transparent;
border-radius: 4px;
diff --git a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
index 00323eace6..84233e4b62 100644
--- a/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
+++ b/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc
@@ -549,6 +549,10 @@
If the property references an enum declared with Q_ENUMS, you should
reference its constants by name, i.e., not their numeric value.
+ \note Use the qproperty syntax with care, as it modifies the
+ widget that is being painted. Also, the qproperty syntax is evaluated only
+ once, which is when the widget is polished by the style. This means that any
+ attempt to use them in pseudo-states such as QPushButton:hover, will not work.
*/
/*!
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 88baf8015a..b58a8c0b3c 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -4545,6 +4545,8 @@ QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok) co
}
#if QT_DEPRECATED_SINCE(5, 13)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
/*!
\obsolete
@@ -4583,6 +4585,7 @@ void QGraphicsItem::setMatrix(const QMatrix &matrix, bool combine)
// Send post-notification.
itemChange(ItemTransformHasChanged, QVariant::fromValue<QTransform>(newTransform));
}
+QT_WARNING_POP
#endif
/*!
@@ -11519,9 +11522,12 @@ QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemChange change)
str = "ItemFlagsHaveChanged";
break;
#if QT_DEPRECATED_SINCE(5, 14)
+QT_WARNING_PUSH
+QT_WARNING_DISABLE_DEPRECATED
case QGraphicsItem::ItemMatrixChange:
str = "ItemMatrixChange";
break;
+QT_WARNING_POP
#endif
case QGraphicsItem::ItemParentChange:
str = "ItemParentChange";
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index 1208adfd17..a47d0d879d 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -386,7 +386,15 @@ void QGraphicsScenePrivate::_q_emitUpdated()
// Notify the changes to anybody interested.
QList<QRectF> oldUpdatedRects;
- oldUpdatedRects = updateAll ? (QList<QRectF>() << q->sceneRect()) : updatedRects;
+ if (updateAll) {
+ oldUpdatedRects << q->sceneRect();
+ } else {
+ // Switch to a ranged constructor in Qt 6...
+ oldUpdatedRects.reserve(int(updatedRects.size()));
+ std::copy(updatedRects.cbegin(), updatedRects.cend(),
+ std::back_inserter(oldUpdatedRects));
+ }
+
updateAll = false;
updatedRects.clear();
emit q->changed(oldUpdatedRects);
@@ -3219,8 +3227,7 @@ void QGraphicsScene::update(const QRectF &rect)
view->d_func()->updateRectF(rect);
}
} else {
- if (!d->updatedRects.contains(rect))
- d->updatedRects << rect;
+ d->updatedRects.insert(rect);
}
}
diff --git a/src/widgets/graphicsview/qgraphicsscene_p.h b/src/widgets/graphicsview/qgraphicsscene_p.h
index 7934359cee..9ecfca8ebf 100644
--- a/src/widgets/graphicsview/qgraphicsscene_p.h
+++ b/src/widgets/graphicsview/qgraphicsscene_p.h
@@ -69,6 +69,9 @@
#include <QtWidgets/qstyle.h>
#include <QtWidgets/qstyleoption.h>
+#include <set>
+#include <tuple>
+
QT_REQUIRE_CONFIG(graphicsview);
QT_BEGIN_NAMESPACE
@@ -122,7 +125,19 @@ public:
QRectF growingItemsBoundingRect;
void _q_emitUpdated();
- QList<QRectF> updatedRects;
+
+ struct UpdatedRectsCmp
+ {
+ bool operator() (const QRectF &a, const QRectF &b) const noexcept
+ {
+ return std::make_tuple(a.y(), a.x(), a.height(), a.width())
+ < std::make_tuple(b.y(), b.x(), b.height(), b.width());
+ }
+ };
+
+ // std::set was used here instead of std::unordered_set due to requiring only a comparator and
+ // showing equivalent performance in empirical measurements within the ranges of interest...
+ std::set<QRectF, UpdatedRectsCmp> updatedRects;
QPainterPath selectionArea;
int selectionChanging;
diff --git a/src/widgets/graphicsview/qgraphicswidget.h b/src/widgets/graphicsview/qgraphicswidget.h
index 8223b921c9..6c5171cc02 100644
--- a/src/widgets/graphicsview/qgraphicswidget.h
+++ b/src/widgets/graphicsview/qgraphicswidget.h
@@ -42,6 +42,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtGui/qfont.h>
+#if QT_CONFIG(action)
+# include <QtWidgets/qaction.h>
+#endif
#include <QtWidgets/qgraphicslayoutitem.h>
#include <QtWidgets/qgraphicsitem.h>
#include <QtGui/qpalette.h>
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp
index e7dcfac403..c45d41dab5 100644
--- a/src/widgets/itemviews/qlistwidget.cpp
+++ b/src/widgets/itemviews/qlistwidget.cpp
@@ -112,7 +112,7 @@ void QListModel::insert(int row, QListWidgetItem *item)
QList<QListWidgetItem*>::iterator it;
it = sortedInsertionIterator(items.begin(), items.end(),
item->view->sortOrder(), item);
- row = qMax(it - items.begin(), 0);
+ row = qMax<qsizetype>(it - items.begin(), 0);
} else {
if (row < 0)
row = 0;
@@ -391,7 +391,7 @@ void QListModel::ensureSorted(int column, Qt::SortOrder order, int start, int en
--tmpitepos;
lit = tmp.begin() + tmpitepos;
lit = sortedInsertionIterator(lit, tmp.end(), order, item);
- int newRow = qMax(lit - tmp.begin(), 0);
+ int newRow = qMax<qsizetype>(lit - tmp.begin(), 0);
lit = tmp.insert(lit, item);
if (newRow != oldRow) {
changed = true;
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp
index 22067851cb..702e290da3 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.cpp
+++ b/src/widgets/itemviews/qstyleditemdelegate.cpp
@@ -514,15 +514,6 @@ void QStyledItemDelegate::updateEditorGeometry(QWidget *editor,
QStyle *style = widget ? widget->style() : QApplication::style();
QRect geom = style->subElementRect(QStyle::SE_ItemViewItemText, &opt, widget);
- const int delta = qSmartMinSize(editor).width() - geom.width();
- if (delta > 0) {
- //we need to widen the geometry
- if (editor->layoutDirection() == Qt::RightToLeft)
- geom.adjust(-delta, 0, 0, 0);
- else
- geom.adjust(0, 0, delta, 0);
- }
-
editor->setGeometry(geom);
}
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index c50156bbce..11c5be10fd 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -3331,7 +3331,7 @@ void QTableViewPrivate::selectRow(int row, bool anchor)
if (q->selectionMode() != QTableView::SingleSelection
&& command.testFlag(QItemSelectionModel::Toggle)) {
if (anchor)
- ctrlDragSelectionFlag = verticalHeader->selectionModel()->selectedRows().contains(index)
+ ctrlDragSelectionFlag = verticalHeader->selectionModel()->selectedRows(column).contains(index)
? QItemSelectionModel::Deselect : QItemSelectionModel::Select;
command &= ~QItemSelectionModel::Toggle;
command |= ctrlDragSelectionFlag;
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index a2d6e7798d..68338228b2 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -646,7 +646,7 @@ void QTreeModel::ensureSorted(int column, Qt::SortOrder order,
lit = lst.begin() + tmpitepos;
lit = sortedInsertionIterator(lit, lst.end(), order, item);
- int newRow = qMax(lit - lst.begin(), 0);
+ int newRow = qMax<qsizetype>(lit - lst.begin(), 0);
if ((newRow < oldRow) && !(*item < *lst.at(oldRow - 1)) && !(*lst.at(oldRow - 1) < *item ))
newRow = oldRow;
diff --git a/src/widgets/kernel/kernel.pri b/src/widgets/kernel/kernel.pri
index 693af7eb80..58107973d8 100644
--- a/src/widgets/kernel/kernel.pri
+++ b/src/widgets/kernel/kernel.pri
@@ -7,9 +7,6 @@ KERNEL_P= kernel
HEADERS += \
kernel/qtwidgetsglobal.h \
kernel/qtwidgetsglobal_p.h \
- kernel/qaction.h \
- kernel/qaction_p.h \
- kernel/qactiongroup.h \
kernel/qapplication.h \
kernel/qapplication_p.h \
kernel/qwidgetrepaintmanager_p.h \
@@ -20,13 +17,10 @@ HEADERS += \
kernel/qlayout_p.h \
kernel/qlayoutengine_p.h \
kernel/qlayoutitem.h \
- kernel/qshortcut.h \
- kernel/qsizepolicy.h \
+ kernel/qsizepolicy.h \
kernel/qstackedlayout.h \
kernel/qwidget.h \
kernel/qwidget_p.h \
- kernel/qwidgetaction.h \
- kernel/qwidgetaction_p.h \
kernel/qgesture.h \
kernel/qgesture_p.h \
kernel/qstandardgestures_p.h \
@@ -38,8 +32,6 @@ HEADERS += \
kernel/qtestsupport_widgets.h
SOURCES += \
- kernel/qaction.cpp \
- kernel/qactiongroup.cpp \
kernel/qapplication.cpp \
kernel/qwidgetrepaintmanager.cpp \
kernel/qboxlayout.cpp \
@@ -47,11 +39,9 @@ SOURCES += \
kernel/qlayout.cpp \
kernel/qlayoutengine.cpp \
kernel/qlayoutitem.cpp \
- kernel/qshortcut.cpp \
kernel/qsizepolicy.cpp \
kernel/qstackedlayout.cpp \
kernel/qwidget.cpp \
- kernel/qwidgetaction.cpp \
kernel/qgesture.cpp \
kernel/qstandardgestures.cpp \
kernel/qgesturerecognizer.cpp \
@@ -67,6 +57,17 @@ macx: {
SOURCES += kernel/qmacgesturerecognizer.cpp
}
+qtConfig(action) {
+ HEADERS += kernel/qaction.h \
+ kernel/qaction_p.h \
+ kernel/qactiongroup.h \
+ kernel/qwidgetaction.h \
+ kernel/qwidgetaction_p.h
+ SOURCES += kernel/qaction.cpp \
+ kernel/qactiongroup.cpp \
+ kernel/qwidgetaction.cpp
+}
+
qtConfig(opengl) {
HEADERS += kernel/qopenglwidget.h
SOURCES += kernel/qopenglwidget.cpp
@@ -77,6 +78,11 @@ qtConfig(formlayout) {
SOURCES += kernel/qformlayout.cpp
}
+qtConfig(shortcut) {
+ HEADERS += kernel/qshortcut.h
+ SOURCES += kernel/qshortcut.cpp
+}
+
qtConfig(tooltip) {
HEADERS += kernel/qtooltip.h
SOURCES += kernel/qtooltip.cpp
diff --git a/src/widgets/kernel/qaction.cpp b/src/widgets/kernel/qaction.cpp
index 19ad65692b..fdf262c947 100644
--- a/src/widgets/kernel/qaction.cpp
+++ b/src/widgets/kernel/qaction.cpp
@@ -40,52 +40,29 @@
#include "qaction.h"
#include "qactiongroup.h"
-#ifndef QT_NO_ACTION
#include "qaction_p.h"
#include "qapplication.h"
#include "qevent.h"
#include "qlist.h"
#include "qstylehints.h"
-#include <private/qshortcutmap_p.h>
+#if QT_CONFIG(shortcut)
+# include <private/qshortcutmap_p.h>
+#endif
#include <private/qguiapplication_p.h>
#if QT_CONFIG(menu)
#include <private/qmenu_p.h>
#endif
#include <private/qdebug_p.h>
-#define QAPP_CHECK(functionName) \
- if (Q_UNLIKELY(!QCoreApplication::instance())) { \
- qWarning("QAction: Initialize Q(Gui)Application before calling '" functionName "'."); \
- return; \
- }
QT_BEGIN_NAMESPACE
-/*
- internal: guesses a descriptive text from a text suited for a menu entry
- */
-static QString qt_strippedText(QString s)
-{
- s.remove(QLatin1String("..."));
- for (int i = 0; i < s.size(); ++i) {
- if (s.at(i) == QLatin1Char('&'))
- s.remove(i, 1);
- }
- return s.trimmed();
-}
-
-
-QActionPrivate::QActionPrivate() :
#if QT_CONFIG(shortcut)
- autorepeat(1),
-#endif
- enabled(1), forceDisabled(0), visible(1), forceInvisible(0), checkable(0),
- checked(0), separator(0), fontSet(false),
- iconVisibleInMenu(-1), shortcutVisibleInContextMenu(-1)
+QShortcutMap::ContextMatcher QActionPrivate::contextMatcher() const
{
+ return qWidgetShortcutContextMatcher;
}
-
-QActionPrivate::~QActionPrivate() = default;
+#endif // QT_CONFIG(shortcut)
bool QActionPrivate::showStatusText(QWidget *widget, const QString &str)
{
@@ -102,84 +79,6 @@ bool QActionPrivate::showStatusText(QWidget *widget, const QString &str)
return false;
}
-void QActionPrivate::sendDataChanged()
-{
- Q_Q(QAction);
- QActionEvent e(QEvent::ActionChanged, q);
- for (int i = 0; i < widgets.size(); ++i) {
- QWidget *w = widgets.at(i);
- QCoreApplication::sendEvent(w, &e);
- }
-#if QT_CONFIG(graphicsview)
- for (int i = 0; i < graphicsWidgets.size(); ++i) {
- QGraphicsWidget *w = graphicsWidgets.at(i);
- QCoreApplication::sendEvent(w, &e);
- }
-#endif
- QCoreApplication::sendEvent(q, &e);
-
- emit q->changed();
-}
-
-#if QT_CONFIG(shortcut)
-void QActionPrivate::redoGrab(QShortcutMap &map)
-{
- Q_Q(QAction);
- if (shortcutId)
- map.removeShortcut(shortcutId, q);
- if (shortcut.isEmpty())
- return;
- shortcutId = map.addShortcut(q, shortcut, shortcutContext, qWidgetShortcutContextMatcher);
- if (!enabled)
- map.setShortcutEnabled(false, shortcutId, q);
- if (!autorepeat)
- map.setShortcutAutoRepeat(false, shortcutId, q);
-}
-
-void QActionPrivate::redoGrabAlternate(QShortcutMap &map)
-{
- Q_Q(QAction);
- for(int i = 0; i < alternateShortcutIds.count(); ++i) {
- if (const int id = alternateShortcutIds.at(i))
- map.removeShortcut(id, q);
- }
- alternateShortcutIds.clear();
- if (alternateShortcuts.isEmpty())
- return;
- for(int i = 0; i < alternateShortcuts.count(); ++i) {
- const QKeySequence& alternate = alternateShortcuts.at(i);
- if (!alternate.isEmpty())
- alternateShortcutIds.append(map.addShortcut(q, alternate, shortcutContext, qWidgetShortcutContextMatcher));
- else
- alternateShortcutIds.append(0);
- }
- if (!enabled) {
- for(int i = 0; i < alternateShortcutIds.count(); ++i) {
- const int id = alternateShortcutIds.at(i);
- map.setShortcutEnabled(false, id, q);
- }
- }
- if (!autorepeat) {
- for(int i = 0; i < alternateShortcutIds.count(); ++i) {
- const int id = alternateShortcutIds.at(i);
- map.setShortcutAutoRepeat(false, id, q);
- }
- }
-}
-
-void QActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map)
-{
- Q_Q(QAction);
- if (shortcutId)
- map.setShortcutEnabled(enable, shortcutId, q);
- for(int i = 0; i < alternateShortcutIds.count(); ++i) {
- if (const int id = alternateShortcutIds.at(i))
- map.setShortcutEnabled(enable, id, q);
- }
-}
-#endif // QT_NO_SHORTCUT
-
-
/*!
\class QAction
\brief The QAction class provides an abstract user interface
@@ -323,12 +222,26 @@ QAction::QAction(const QIcon &icon, const QString &text, QObject* parent)
\internal
*/
QAction::QAction(QActionPrivate &dd, QObject *parent)
- : QObject(dd, parent)
+ : QGuiAction(dd, parent)
+{
+}
+
+/*!
+ \reimp
+*/
+
+bool QAction::event(QEvent *e)
{
Q_D(QAction);
- d->group = qobject_cast<QActionGroup *>(parent);
- if (d->group)
- d->group->addAction(this);
+ if (e->type() == QEvent::ActionChanged) {
+ for (auto w : qAsConst(d->widgets))
+ QCoreApplication::sendEvent(w, e);
+#if QT_CONFIG(graphicsview)
+ for (auto gw : qAsConst(d->graphicsWidgets))
+ QCoreApplication::sendEvent(gw, e);
+#endif
+ }
+ return QGuiAction::event(e);
}
/*!
@@ -368,190 +281,6 @@ QList<QGraphicsWidget *> QAction::associatedGraphicsWidgets() const
}
#endif
-#if QT_CONFIG(shortcut)
-/*!
- \property QAction::shortcut
- \brief the action's primary shortcut key
-
- Valid keycodes for this property can be found in \l Qt::Key and
- \l Qt::Modifier. There is no default shortcut key.
-*/
-void QAction::setShortcut(const QKeySequence &shortcut)
-{
- QAPP_CHECK("setShortcut");
-
- Q_D(QAction);
- if (d->shortcut == shortcut)
- return;
-
- d->shortcut = shortcut;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
- d->sendDataChanged();
-}
-
-/*!
- \since 4.2
-
- Sets \a shortcuts as the list of shortcuts that trigger the
- action. The first element of the list is the primary shortcut.
-
- \sa shortcut
-*/
-void QAction::setShortcuts(const QList<QKeySequence> &shortcuts)
-{
- Q_D(QAction);
-
- QList <QKeySequence> listCopy = shortcuts;
-
- QKeySequence primary;
- if (!listCopy.isEmpty())
- primary = listCopy.takeFirst();
-
- if (d->shortcut == primary && d->alternateShortcuts == listCopy)
- return;
-
- QAPP_CHECK("setShortcuts");
-
- d->shortcut = primary;
- d->alternateShortcuts = listCopy;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
- d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
- d->sendDataChanged();
-}
-
-/*!
- \since 4.2
-
- Sets a platform dependent list of shortcuts based on the \a key.
- The result of calling this function will depend on the currently running platform.
- Note that more than one shortcut can assigned by this action.
- If only the primary shortcut is required, use setShortcut instead.
-
- \sa QKeySequence::keyBindings()
-*/
-void QAction::setShortcuts(QKeySequence::StandardKey key)
-{
- QList <QKeySequence> list = QKeySequence::keyBindings(key);
- setShortcuts(list);
-}
-
-/*!
- Returns the primary shortcut.
-
- \sa setShortcuts()
-*/
-QKeySequence QAction::shortcut() const
-{
- Q_D(const QAction);
- return d->shortcut;
-}
-
-/*!
- \since 4.2
-
- Returns the list of shortcuts, with the primary shortcut as
- the first element of the list.
-
- \sa setShortcuts()
-*/
-QList<QKeySequence> QAction::shortcuts() const
-{
- Q_D(const QAction);
- QList <QKeySequence> shortcuts;
- if (!d->shortcut.isEmpty())
- shortcuts << d->shortcut;
- if (!d->alternateShortcuts.isEmpty())
- shortcuts << d->alternateShortcuts;
- return shortcuts;
-}
-
-/*!
- \property QAction::shortcutContext
- \brief the context for the action's shortcut
-
- Valid values for this property can be found in \l Qt::ShortcutContext.
- The default value is Qt::WindowShortcut.
-*/
-void QAction::setShortcutContext(Qt::ShortcutContext context)
-{
- Q_D(QAction);
- if (d->shortcutContext == context)
- return;
- QAPP_CHECK("setShortcutContext");
- d->shortcutContext = context;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
- d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
- d->sendDataChanged();
-}
-
-Qt::ShortcutContext QAction::shortcutContext() const
-{
- Q_D(const QAction);
- return d->shortcutContext;
-}
-
-/*!
- \property QAction::autoRepeat
- \brief whether the action can auto repeat
- \since 4.2
-
- If true, the action will auto repeat when the keyboard shortcut
- combination is held down, provided that keyboard auto repeat is
- enabled on the system.
- The default value is true.
-*/
-void QAction::setAutoRepeat(bool on)
-{
- Q_D(QAction);
- if (d->autorepeat == on)
- return;
- QAPP_CHECK("setAutoRepeat");
- d->autorepeat = on;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
- d->redoGrabAlternate(QGuiApplicationPrivate::instance()->shortcutMap);
- d->sendDataChanged();
-}
-
-bool QAction::autoRepeat() const
-{
- Q_D(const QAction);
- return d->autorepeat;
-}
-#endif // QT_NO_SHORTCUT
-
-/*!
- \property QAction::font
- \brief the action's font
-
- The font property is used to render the text set on the
- QAction. The font will can be considered a hint as it will not be
- consulted in all cases based upon application and style.
-
- By default, this property contains the application's default font.
-
- \sa QAction::setText(), QStyle
-*/
-void QAction::setFont(const QFont &font)
-{
- Q_D(QAction);
- if (d->font == font)
- return;
-
- d->fontSet = true;
- d->font = font;
- d->sendDataChanged();
-}
-
-QFont QAction::font() const
-{
- Q_D(const QAction);
- return d->font;
-}
-
-
-/*!
- Destroys the object and frees allocated resources.
-*/
QAction::~QAction()
{
Q_D(QAction);
@@ -565,76 +294,17 @@ QAction::~QAction()
w->removeAction(this);
}
#endif
- if (d->group)
- d->group->removeAction(this);
-#if QT_CONFIG(shortcut)
- if (d->shortcutId && qApp) {
- QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(d->shortcutId, this);
- for(int i = 0; i < d->alternateShortcutIds.count(); ++i) {
- const int id = d->alternateShortcutIds.at(i);
- QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(id, this);
- }
- }
-#endif
}
/*!
- Sets this action group to \a group. The action will be automatically
- added to the group's list of actions.
-
- Actions within the group will be mutually exclusive.
-
- \sa QActionGroup, QAction::actionGroup()
-*/
-void QAction::setActionGroup(QActionGroup *group)
-{
- Q_D(QAction);
- if(group == d->group)
- return;
+ Returns the action group for this action. If no action group manages
+ this action then \nullptr will be returned.
- if(d->group)
- d->group->removeAction(this);
- d->group = group;
- if(group)
- group->addAction(this);
- d->sendDataChanged();
-}
-
-/*!
- Returns the action group for this action. If no action group manages
- this action then 0 will be returned.
-
- \sa QActionGroup, QAction::setActionGroup()
-*/
+ \sa QActionGroup, QAction::setActionGroup()
+ */
QActionGroup *QAction::actionGroup() const
{
- Q_D(const QAction);
- return d->group;
-}
-
-
-/*!
- \property QAction::icon
- \brief the action's icon
-
- In toolbars, the icon is used as the tool button icon; in menus,
- it is displayed to the left of the menu text. There is no default
- icon.
-
- If a null icon (QIcon::isNull()) is passed into this function,
- the icon of the action is cleared.
-*/
-void QAction::setIcon(const QIcon &icon)
-{
- Q_D(QAction);
- d->icon = icon;
- d->sendDataChanged();
-}
-
-QIcon QAction::icon() const
-{
- Q_D(const QAction);
- return d->icon;
+ return static_cast<QActionGroup *>(guiActionGroup());
}
#if QT_CONFIG(menu)
@@ -667,460 +337,6 @@ void QAction::setMenu(QMenu *menu)
#endif // QT_CONFIG(menu)
/*!
- If \a b is true then this action will be considered a separator.
-
- How a separator is represented depends on the widget it is inserted
- into. Under most circumstances the text, submenu, and icon will be
- ignored for separator actions.
-
- \sa QAction::isSeparator()
-*/
-void QAction::setSeparator(bool b)
-{
- Q_D(QAction);
- if (d->separator == b)
- return;
-
- d->separator = b;
- d->sendDataChanged();
-}
-
-/*!
- Returns \c true if this action is a separator action; otherwise it
- returns \c false.
-
- \sa QAction::setSeparator()
-*/
-bool QAction::isSeparator() const
-{
- Q_D(const QAction);
- return d->separator;
-}
-
-/*!
- \property QAction::text
- \brief the action's descriptive text
-
- If the action is added to a menu, the menu option will consist of
- the icon (if there is one), the text, and the shortcut (if there
- is one). If the text is not explicitly set in the constructor, or
- by using setText(), the action's description icon text will be
- used as text. There is no default text.
-
- \sa iconText
-*/
-void QAction::setText(const QString &text)
-{
- Q_D(QAction);
- if (d->text == text)
- return;
-
- d->text = text;
- d->sendDataChanged();
-}
-
-QString QAction::text() const
-{
- Q_D(const QAction);
- QString s = d->text;
- if(s.isEmpty()) {
- s = d->iconText;
- s.replace(QLatin1Char('&'), QLatin1String("&&"));
- }
- return s;
-}
-
-
-
-
-
-/*!
- \property QAction::iconText
- \brief the action's descriptive icon text
-
- If QToolBar::toolButtonStyle is set to a value that permits text to
- be displayed, the text defined held in this property appears as a
- label in the relevant tool button.
-
- It also serves as the default text in menus and tooltips if the action
- has not been defined with setText() or setToolTip(), and will
- also be used in toolbar buttons if no icon has been defined using setIcon().
-
- If the icon text is not explicitly set, the action's normal text will be
- used for the icon text.
-
- By default, this property contains an empty string.
-
- \sa setToolTip(), setStatusTip()
-*/
-void QAction::setIconText(const QString &text)
-{
- Q_D(QAction);
- if (d->iconText == text)
- return;
-
- d->iconText = text;
- d->sendDataChanged();
-}
-
-QString QAction::iconText() const
-{
- Q_D(const QAction);
- if (d->iconText.isEmpty())
- return qt_strippedText(d->text);
- return d->iconText;
-}
-
-/*!
- \property QAction::toolTip
- \brief the action's tooltip
-
- This text is used for the tooltip. If no tooltip is specified,
- the action's text is used.
-
- By default, this property contains the action's text.
-
- \sa setStatusTip(), setShortcut()
-*/
-void QAction::setToolTip(const QString &tooltip)
-{
- Q_D(QAction);
- if (d->tooltip == tooltip)
- return;
-
- d->tooltip = tooltip;
- d->sendDataChanged();
-}
-
-QString QAction::toolTip() const
-{
- Q_D(const QAction);
- if (d->tooltip.isEmpty()) {
- if (!d->text.isEmpty())
- return qt_strippedText(d->text);
- return qt_strippedText(d->iconText);
- }
- return d->tooltip;
-}
-
-/*!
- \property QAction::statusTip
- \brief the action's status tip
-
- The status tip is displayed on all status bars provided by the
- action's top-level parent widget.
-
- By default, this property contains an empty string.
-
- \sa setToolTip(), showStatusText()
-*/
-void QAction::setStatusTip(const QString &statustip)
-{
- Q_D(QAction);
- if (d->statustip == statustip)
- return;
-
- d->statustip = statustip;
- d->sendDataChanged();
-}
-
-QString QAction::statusTip() const
-{
- Q_D(const QAction);
- return d->statustip;
-}
-
-/*!
- \property QAction::whatsThis
- \brief the action's "What's This?" help text
-
- The "What's This?" text is used to provide a brief description of
- the action. The text may contain rich text. There is no default
- "What's This?" text.
-
- \sa QWhatsThis
-*/
-void QAction::setWhatsThis(const QString &whatsthis)
-{
- Q_D(QAction);
- if (d->whatsthis == whatsthis)
- return;
-
- d->whatsthis = whatsthis;
- d->sendDataChanged();
-}
-
-QString QAction::whatsThis() const
-{
- Q_D(const QAction);
- return d->whatsthis;
-}
-
-/*!
- \enum QAction::Priority
- \since 4.6
-
- This enum defines priorities for actions in user interface.
-
- \value LowPriority The action should not be prioritized in
- the user interface.
-
- \value NormalPriority
-
- \value HighPriority The action should be prioritized in
- the user interface.
-
- \sa priority
-*/
-
-
-/*!
- \property QAction::priority
- \since 4.6
-
- \brief the actions's priority in the user interface.
-
- This property can be set to indicate how the action should be prioritized
- in the user interface.
-
- For instance, when toolbars have the Qt::ToolButtonTextBesideIcon
- mode set, then actions with LowPriority will not show the text
- labels.
-*/
-void QAction::setPriority(Priority priority)
-{
- Q_D(QAction);
- if (d->priority == priority)
- return;
-
- d->priority = priority;
- d->sendDataChanged();
-}
-
-QAction::Priority QAction::priority() const
-{
- Q_D(const QAction);
- return d->priority;
-}
-
-/*!
- \property QAction::checkable
- \brief whether the action is a checkable action
-
- A checkable action is one which has an on/off state. For example,
- in a word processor, a Bold toolbar button may be either on or
- off. An action which is not a toggle action is a command action;
- a command action is simply executed, e.g. file save.
- By default, this property is \c false.
-
- In some situations, the state of one toggle action should depend
- on the state of others. For example, "Left Align", "Center" and
- "Right Align" toggle actions are mutually exclusive. To achieve
- exclusive toggling, add the relevant toggle actions to a
- QActionGroup with the QActionGroup::exclusive property set to
- true.
-
- \sa QAction::setChecked()
-*/
-void QAction::setCheckable(bool b)
-{
- Q_D(QAction);
- if (d->checkable == b)
- return;
-
- d->checkable = b;
- d->checked = false;
- d->sendDataChanged();
-}
-
-bool QAction::isCheckable() const
-{
- Q_D(const QAction);
- return d->checkable;
-}
-
-/*!
- \fn void QAction::toggle()
-
- This is a convenience function for the \l checked property.
- Connect to it to change the checked state to its opposite state.
-*/
-void QAction::toggle()
-{
- Q_D(QAction);
- setChecked(!d->checked);
-}
-
-/*!
- \property QAction::checked
- \brief whether the action is checked.
-
- Only checkable actions can be checked. By default, this is false
- (the action is unchecked).
-
- \note The notifier signal for this property is toggled(). As toggling
- a QAction changes its state, it will also emit a changed() signal.
-
- \sa checkable, toggled()
-*/
-void QAction::setChecked(bool b)
-{
- Q_D(QAction);
- if (!d->checkable || d->checked == b)
- return;
-
- QPointer<QAction> guard(this);
- d->checked = b;
- d->sendDataChanged();
- if (guard)
- emit toggled(b);
-}
-
-bool QAction::isChecked() const
-{
- Q_D(const QAction);
- return d->checked;
-}
-
-/*!
- \fn void QAction::setDisabled(bool b)
-
- This is a convenience function for the \l enabled property, that
- is useful for signals--slots connections. If \a b is true the
- action is disabled; otherwise it is enabled.
-*/
-
-/*!
- \property QAction::enabled
- \brief whether the action is enabled
-
- Disabled actions cannot be chosen by the user. They do not
- disappear from menus or toolbars, but they are displayed in a way
- which indicates that they are unavailable. For example, they might
- be displayed using only shades of gray.
-
- \uicontrol{What's This?} help on disabled actions is still available, provided
- that the QAction::whatsThis property is set.
-
- An action will be disabled when all widgets to which it is added
- (with QWidget::addAction()) are disabled or not visible. When an
- action is disabled, it is not possible to trigger it through its
- shortcut.
-
- By default, this property is \c true (actions are enabled).
-
- \sa text
-*/
-void QAction::setEnabled(bool b)
-{
- Q_D(QAction);
- if (b == d->enabled && b != d->forceDisabled)
- return;
- d->forceDisabled = !b;
- if (b && (!d->visible || (d->group && !d->group->isEnabled())))
- return;
- QAPP_CHECK("setEnabled");
- d->enabled = b;
-#if QT_CONFIG(shortcut)
- d->setShortcutEnabled(b, QGuiApplicationPrivate::instance()->shortcutMap);
-#endif
- d->sendDataChanged();
-}
-
-bool QAction::isEnabled() const
-{
- Q_D(const QAction);
- return d->enabled;
-}
-
-/*!
- \property QAction::visible
- \brief whether the action can be seen (e.g. in menus and toolbars)
-
- If \e visible is true the action can be seen (e.g. in menus and
- toolbars) and chosen by the user; if \e visible is false the
- action cannot be seen or chosen by the user.
-
- Actions which are not visible are \e not grayed out; they do not
- appear at all.
-
- By default, this property is \c true (actions are visible).
-*/
-void QAction::setVisible(bool b)
-{
- Q_D(QAction);
- if (b == d->visible && b != d->forceInvisible)
- return;
- QAPP_CHECK("setVisible");
- d->forceInvisible = !b;
- d->visible = b;
- d->enabled = b && !d->forceDisabled && (!d->group || d->group->isEnabled()) ;
-#if QT_CONFIG(shortcut)
- d->setShortcutEnabled(d->enabled, QGuiApplicationPrivate::instance()->shortcutMap);
-#endif
- d->sendDataChanged();
-}
-
-
-bool QAction::isVisible() const
-{
- Q_D(const QAction);
- return d->visible;
-}
-
-/*!
- \reimp
-*/
-bool
-QAction::event(QEvent *e)
-{
-#if QT_CONFIG(shortcut)
- if (e->type() == QEvent::Shortcut) {
- QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
- Q_ASSERT_X(se->key() == d_func()->shortcut || d_func()->alternateShortcuts.contains(se->key()),
- "QAction::event",
- "Received shortcut event from incorrect shortcut");
- if (se->isAmbiguous())
- qWarning("QAction::event: Ambiguous shortcut overload: %s", se->key().toString(QKeySequence::NativeText).toLatin1().constData());
- else
- activate(Trigger);
- return true;
- }
-#endif
- return QObject::event(e);
-}
-
-/*!
- Returns the user data as set in QAction::setData.
-
- \sa setData()
-*/
-QVariant
-QAction::data() const
-{
- Q_D(const QAction);
- return d->userData;
-}
-
-/*!
- \fn void QAction::setData(const QVariant &userData)
-
- Sets the action's internal data to the given \a userData.
-
- \sa data()
-*/
-void
-QAction::setData(const QVariant &data)
-{
- Q_D(QAction);
- if (d->userData == data)
- return;
- d->userData = data;
- d->sendDataChanged();
-}
-
-
-/*!
Updates the relevant status bar for the \a widget specified by sending a
QStatusTipEvent to its parent widget. Returns \c true if an event was sent;
otherwise returns \c false.
@@ -1135,233 +351,4 @@ QAction::showStatusText(QWidget *widget)
return d_func()->showStatusText(widget, statusTip());
}
-/*!
- Sends the relevant signals for ActionEvent \a event.
-
- Action based widgets use this API to cause the QAction
- to emit signals as well as emitting their own.
-*/
-void QAction::activate(ActionEvent event)
-{
- Q_D(QAction);
- if(event == Trigger) {
- QPointer<QObject> guard = this;
- if(d->checkable) {
- // the checked action of an exclusive group may not be unchecked
- if (d->checked && (d->group
- && d->group->exclusionPolicy() == QActionGroup::ExclusionPolicy::Exclusive
- && d->group->checkedAction() == this)) {
- if (!guard.isNull())
- emit triggered(true);
- return;
- }
- setChecked(!d->checked);
- }
- if (!guard.isNull())
- emit triggered(d->checked);
- } else if(event == Hover) {
- emit hovered();
- }
-}
-
-/*!
- \fn void QAction::triggered(bool checked)
-
- This signal is emitted when an action is activated by the user;
- for example, when the user clicks a menu option, toolbar button,
- or presses an action's shortcut key combination, or when trigger()
- was called. Notably, it is \e not emitted when setChecked() or
- toggle() is called.
-
- If the action is checkable, \a checked is true if the action is
- checked, or false if the action is unchecked.
-
- \sa QAction::activate(), QAction::toggled(), checked
-*/
-
-/*!
- \fn void QAction::toggled(bool checked)
-
- This signal is emitted whenever a checkable action changes its
- isChecked() status. This can be the result of a user interaction,
- or because setChecked() was called. As setChecked() changes the
- QAction, it emits changed() in addition to toggled().
-
- \a checked is true if the action is checked, or false if the
- action is unchecked.
-
- \sa QAction::activate(), QAction::triggered(), checked
-*/
-
-/*!
- \fn void QAction::hovered()
-
- This signal is emitted when an action is highlighted by the user;
- for example, when the user pauses with the cursor over a menu option,
- toolbar button, or presses an action's shortcut key combination.
-
- \sa QAction::activate()
-*/
-
-/*!
- \fn void QAction::changed()
-
- This signal is emitted when an action has changed. If you
- are only interested in actions in a given widget, you can
- watch for QWidget::actionEvent() sent with an
- QEvent::ActionChanged.
-
- \sa QWidget::actionEvent()
-*/
-
-/*!
- \enum QAction::ActionEvent
-
- This enum type is used when calling QAction::activate()
-
- \value Trigger this will cause the QAction::triggered() signal to be emitted.
-
- \value Hover this will cause the QAction::hovered() signal to be emitted.
-*/
-
-/*!
- \property QAction::menuRole
- \brief the action's menu role
- \since 4.2
-
- This indicates what role the action serves in the application menu on
- \macos. By default all actions have the TextHeuristicRole, which means that
- the action is added based on its text (see QMenuBar for more information).
-
- The menu role can only be changed before the actions are put into the menu
- bar in \macos (usually just before the first application window is
- shown).
-*/
-void QAction::setMenuRole(MenuRole menuRole)
-{
- Q_D(QAction);
- if (d->menuRole == menuRole)
- return;
-
- d->menuRole = menuRole;
- d->sendDataChanged();
-}
-
-QAction::MenuRole QAction::menuRole() const
-{
- Q_D(const QAction);
- return d->menuRole;
-}
-
-/*!
- \property QAction::iconVisibleInMenu
- \brief Whether or not an action should show an icon in a menu
- \since 4.4
-
- In some applications, it may make sense to have actions with icons in the
- toolbar, but not in menus. If true, the icon (if valid) is shown in the menu, when it
- is false, it is not shown.
-
- The default is to follow whether the Qt::AA_DontShowIconsInMenus attribute
- is set for the application. Explicitly settings this property overrides
- the presence (or abscence) of the attribute.
-
- For example:
- \snippet code/src_gui_kernel_qaction.cpp 0
-
- \sa QAction::icon, QCoreApplication::setAttribute()
-*/
-void QAction::setIconVisibleInMenu(bool visible)
-{
- Q_D(QAction);
- if (d->iconVisibleInMenu == -1 || visible != bool(d->iconVisibleInMenu)) {
- int oldValue = d->iconVisibleInMenu;
- d->iconVisibleInMenu = visible;
- // Only send data changed if we really need to.
- if (oldValue != -1
- || visible == !QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus)) {
- d->sendDataChanged();
- }
- }
-}
-
-bool QAction::isIconVisibleInMenu() const
-{
- Q_D(const QAction);
- if (d->iconVisibleInMenu == -1) {
- return !QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus);
- }
- return d->iconVisibleInMenu;
-}
-
-/*!
- \property QAction::shortcutVisibleInContextMenu
- \brief Whether or not an action should show a shortcut in a context menu
- \since 5.10
-
- In some applications, it may make sense to have actions with shortcuts in
- context menus. If true, the shortcut (if valid) is shown when the action is
- shown via a context menu, when it is false, it is not shown.
-
- The default is to follow whether the Qt::AA_DontShowShortcutsInContextMenus attribute
- is set for the application, falling back to the widget style hint.
- Explicitly setting this property overrides the presence (or abscence) of the attribute.
-
- \sa QAction::shortcut, QCoreApplication::setAttribute()
-*/
-void QAction::setShortcutVisibleInContextMenu(bool visible)
-{
- Q_D(QAction);
- if (d->shortcutVisibleInContextMenu == -1 || visible != bool(d->shortcutVisibleInContextMenu)) {
- int oldValue = d->shortcutVisibleInContextMenu;
- d->shortcutVisibleInContextMenu = visible;
- // Only send data changed if we really need to.
- if (oldValue != -1
- || visible == !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus)) {
- d->sendDataChanged();
- }
- }
-}
-
-bool QAction::isShortcutVisibleInContextMenu() const
-{
- Q_D(const QAction);
- if (d->shortcutVisibleInContextMenu == -1) {
- return !QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus)
- && QGuiApplication::styleHints()->showShortcutsInContextMenus();
- }
- return d->shortcutVisibleInContextMenu;
-}
-
-#ifndef QT_NO_DEBUG_STREAM
-Q_WIDGETS_EXPORT QDebug operator<<(QDebug d, const QAction *action)
-{
- QDebugStateSaver saver(d);
- d.nospace();
- d << "QAction(" << static_cast<const void *>(action);
- if (action) {
- d << " text=" << action->text();
- if (!action->toolTip().isEmpty())
- d << " toolTip=" << action->toolTip();
- if (action->isCheckable())
- d << " checked=" << action->isChecked();
-#if QT_CONFIG(shortcut)
- if (!action->shortcut().isEmpty())
- d << " shortcut=" << action->shortcut();
-#endif
- d << " menuRole=";
- QtDebugUtils::formatQEnum(d, action->menuRole());
- d << " visible=" << action->isVisible();
- } else {
- d << '0';
- }
- d << ')';
- return d;
-}
-#endif // QT_NO_DEBUG_STREAM
-
QT_END_NAMESPACE
-
-#include "moc_qaction.cpp"
-
-#endif // QT_NO_ACTION
diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h
index f7693f4dde..808ee9065d 100644
--- a/src/widgets/kernel/qaction.h
+++ b/src/widgets/kernel/qaction.h
@@ -41,137 +41,39 @@
#define QACTION_H
#include <QtWidgets/qtwidgetsglobal.h>
-#include <QtGui/qkeysequence.h>
+#include <QtGui/qguiaction.h>
#include <QtCore/qstring.h>
#include <QtWidgets/qwidget.h>
#include <QtCore/qvariant.h>
-#include <QtGui/qicon.h>
-
-QT_BEGIN_NAMESPACE
+QT_REQUIRE_CONFIG(action);
-#ifndef QT_NO_ACTION
+QT_BEGIN_NAMESPACE
class QMenu;
class QActionGroup;
class QActionPrivate;
class QGraphicsWidget;
-class Q_WIDGETS_EXPORT QAction : public QObject
+class Q_WIDGETS_EXPORT QAction : public QGuiAction
{
Q_OBJECT
Q_DECLARE_PRIVATE(QAction)
-
- Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY changed)
- Q_PROPERTY(bool checked READ isChecked WRITE setChecked DESIGNABLE isCheckable NOTIFY toggled)
- Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY changed)
- Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY changed)
- Q_PROPERTY(QString text READ text WRITE setText NOTIFY changed)
- Q_PROPERTY(QString iconText READ iconText WRITE setIconText NOTIFY changed)
- Q_PROPERTY(QString toolTip READ toolTip WRITE setToolTip NOTIFY changed)
- Q_PROPERTY(QString statusTip READ statusTip WRITE setStatusTip NOTIFY changed)
- Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis NOTIFY changed)
- Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed)
-#if QT_CONFIG(shortcut)
- Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut NOTIFY changed)
- Q_PROPERTY(Qt::ShortcutContext shortcutContext READ shortcutContext WRITE setShortcutContext NOTIFY changed)
- Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY changed)
-#endif
- Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY changed)
- Q_PROPERTY(MenuRole menuRole READ menuRole WRITE setMenuRole NOTIFY changed)
- Q_PROPERTY(bool iconVisibleInMenu READ isIconVisibleInMenu WRITE setIconVisibleInMenu NOTIFY changed)
- Q_PROPERTY(bool shortcutVisibleInContextMenu READ isShortcutVisibleInContextMenu WRITE setShortcutVisibleInContextMenu NOTIFY changed)
- Q_PROPERTY(Priority priority READ priority WRITE setPriority)
-
public:
- // note this is copied into qplatformmenu.h, which must stay in sync
- enum MenuRole { NoRole = 0, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole,
- AboutRole, PreferencesRole, QuitRole };
- Q_ENUM(MenuRole)
- enum Priority { LowPriority = 0,
- NormalPriority = 128,
- HighPriority = 256};
- Q_ENUM(Priority)
- explicit QAction(QObject *parent = nullptr);
- explicit QAction(const QString &text, QObject *parent = nullptr);
- explicit QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);
-
+ QAction(QObject* parent = nullptr);
+ QAction(const QString &text, QObject* parent = nullptr);
+ QAction(const QIcon &icon, const QString &text, QObject* parent);
~QAction();
- void setActionGroup(QActionGroup *group);
QActionGroup *actionGroup() const;
- void setIcon(const QIcon &icon);
- QIcon icon() const;
-
- void setText(const QString &text);
- QString text() const;
-
- void setIconText(const QString &text);
- QString iconText() const;
-
- void setToolTip(const QString &tip);
- QString toolTip() const;
-
- void setStatusTip(const QString &statusTip);
- QString statusTip() const;
-
- void setWhatsThis(const QString &what);
- QString whatsThis() const;
-
- void setPriority(Priority priority);
- Priority priority() const;
#if QT_CONFIG(menu)
QMenu *menu() const;
void setMenu(QMenu *menu);
#endif
- void setSeparator(bool b);
- bool isSeparator() const;
-
-#if QT_CONFIG(shortcut)
- void setShortcut(const QKeySequence &shortcut);
- QKeySequence shortcut() const;
-
- void setShortcuts(const QList<QKeySequence> &shortcuts);
- void setShortcuts(QKeySequence::StandardKey);
- QList<QKeySequence> shortcuts() const;
-
- void setShortcutContext(Qt::ShortcutContext context);
- Qt::ShortcutContext shortcutContext() const;
-
- void setAutoRepeat(bool);
- bool autoRepeat() const;
-#endif
-
- void setFont(const QFont &font);
- QFont font() const;
-
- void setCheckable(bool);
- bool isCheckable() const;
-
- QVariant data() const;
- void setData(const QVariant &var);
-
- bool isChecked() const;
-
- bool isEnabled() const;
-
- bool isVisible() const;
-
- enum ActionEvent { Trigger, Hover };
- void activate(ActionEvent event);
bool showStatusText(QWidget *widget = nullptr);
- void setMenuRole(MenuRole menuRole);
- MenuRole menuRole() const;
-
- void setIconVisibleInMenu(bool visible);
- bool isIconVisibleInMenu() const;
-
- void setShortcutVisibleInContextMenu(bool show);
- bool isShortcutVisibleInContextMenu() const;
-
QWidget *parentWidget() const;
QList<QWidget *> associatedWidgets() const;
@@ -180,30 +82,14 @@ public:
#endif
protected:
- bool event(QEvent *) override;
QAction(QActionPrivate &dd, QObject *parent);
-
-public Q_SLOTS:
- void trigger() { activate(Trigger); }
- void hover() { activate(Hover); }
- void setChecked(bool);
- void toggle();
- void setEnabled(bool);
- inline void setDisabled(bool b) { setEnabled(!b); }
- void setVisible(bool);
-
-Q_SIGNALS:
- void changed();
- void triggered(bool checked = false);
- void hovered();
- void toggled(bool);
+ bool event(QEvent *) override;
private:
Q_DISABLE_COPY(QAction)
friend class QGraphicsWidget;
friend class QWidget;
- friend class QActionGroup;
friend class QMenu;
friend class QMenuPrivate;
friend class QMenuBar;
@@ -221,8 +107,6 @@ QT_BEGIN_INCLUDE_NAMESPACE
#include <QtWidgets/qactiongroup.h>
QT_END_INCLUDE_NAMESPACE
-#endif // QT_NO_ACTION
-
QT_END_NAMESPACE
#endif // QACTION_H
diff --git a/src/widgets/kernel/qaction_p.h b/src/widgets/kernel/qaction_p.h
index 6b6ca8076f..b865769372 100644
--- a/src/widgets/kernel/qaction_p.h
+++ b/src/widgets/kernel/qaction_p.h
@@ -52,6 +52,7 @@
//
#include <QtWidgets/private/qtwidgetsglobal_p.h>
+#include <QtGui/private/qguiaction_p.h>
#include "QtWidgets/qaction.h"
#if QT_CONFIG(menu)
#include "QtWidgets/qmenu.h"
@@ -68,12 +69,15 @@ QT_BEGIN_NAMESPACE
class QShortcutMap;
-class Q_WIDGETS_EXPORT QActionPrivate : public QObjectPrivate
+class Q_WIDGETS_EXPORT QActionPrivate : public QGuiActionPrivate
{
Q_DECLARE_PUBLIC(QAction)
public:
- QActionPrivate();
- ~QActionPrivate();
+ QActionPrivate() = default;
+
+#if QT_CONFIG(shortcut)
+ QShortcutMap::ContextMatcher contextMatcher() const override;
+#endif
static QActionPrivate *get(QAction *q)
{
@@ -82,50 +86,11 @@ public:
bool showStatusText(QWidget *w, const QString &str);
- QPointer<QActionGroup> group;
- QString text;
- QString iconText;
- QIcon icon;
- QString tooltip;
- QString statustip;
- QString whatsthis;
-#if QT_CONFIG(shortcut)
- QKeySequence shortcut;
- QList<QKeySequence> alternateShortcuts;
-#endif
- QVariant userData;
-#if QT_CONFIG(shortcut)
- int shortcutId = 0;
- QVector<int> alternateShortcutIds;
- Qt::ShortcutContext shortcutContext = Qt::WindowShortcut;
- uint autorepeat : 1;
-#endif
- QFont font;
QPointer<QMenu> menu;
- uint enabled : 1, forceDisabled : 1;
- uint visible : 1, forceInvisible : 1;
- uint checkable : 1;
- uint checked : 1;
- uint separator : 1;
- uint fontSet : 1;
-
- int iconVisibleInMenu : 2; // Only has values -1, 0, and 1
- int shortcutVisibleInContextMenu : 2; // Only has values -1, 0, and 1
-
- QAction::MenuRole menuRole = QAction::TextHeuristicRole;
- QAction::Priority priority = QAction::NormalPriority;
-
QWidgetList widgets;
#if QT_CONFIG(graphicsview)
QList<QGraphicsWidget *> graphicsWidgets;
#endif
-#if QT_CONFIG(shortcut)
- void redoGrab(QShortcutMap &map);
- void redoGrabAlternate(QShortcutMap &map);
- void setShortcutEnabled(bool enable, QShortcutMap &map);
-#endif // QT_NO_SHORTCUT
-
- void sendDataChanged();
};
#endif // QT_NO_ACTION
diff --git a/src/widgets/kernel/qactiongroup.cpp b/src/widgets/kernel/qactiongroup.cpp
index 1d9213de0c..cc900cbb0f 100644
--- a/src/widgets/kernel/qactiongroup.cpp
+++ b/src/widgets/kernel/qactiongroup.cpp
@@ -38,70 +38,32 @@
****************************************************************************/
#include "qactiongroup.h"
+#include <QtGui/private/qguiactiongroup_p.h>
-#ifndef QT_NO_ACTION
-
-#include "qaction_p.h"
-#include "qevent.h"
-#include "qlist.h"
+#include "qaction.h"
QT_BEGIN_NAMESPACE
-class QActionGroupPrivate : public QObjectPrivate
+class QActionGroupPrivate : public QGuiActionGroupPrivate
{
Q_DECLARE_PUBLIC(QActionGroup)
public:
- QActionGroupPrivate() : enabled(1),
- visible(1),
- exclusionPolicy(QActionGroup::ExclusionPolicy::Exclusive)
- {
- }
- QList<QAction *> actions;
- QPointer<QAction> current;
- uint enabled : 1;
- uint visible : 1;
- QActionGroup::ExclusionPolicy exclusionPolicy;
-
-private:
- void _q_actionTriggered(); //private slot
- void _q_actionChanged(); //private slot
- void _q_actionHovered(); //private slot
+ void emitSignal(Signal, QGuiAction *) override;
};
-void QActionGroupPrivate::_q_actionChanged()
+void QActionGroupPrivate::emitSignal(Signal s, QGuiAction *action)
{
Q_Q(QActionGroup);
- QAction *action = qobject_cast<QAction*>(q->sender());
- Q_ASSERT_X(action != nullptr, "QActionGroup::_q_actionChanged", "internal error");
- if (exclusionPolicy != QActionGroup::ExclusionPolicy::None) {
- if (action->isChecked()) {
- if (action != current) {
- if(current)
- current->setChecked(false);
- current = action;
- }
- } else if (action == current) {
- current = 0;
- }
+ switch (s) {
+ case QGuiActionGroupPrivate::Triggered:
+ emit q->triggered(static_cast<QAction *>(action));
+ break;
+ case QGuiActionGroupPrivate::Hovered:
+ emit q->hovered(static_cast<QAction *>(action));
+ break;
}
}
-void QActionGroupPrivate::_q_actionTriggered()
-{
- Q_Q(QActionGroup);
- QAction *action = qobject_cast<QAction*>(q->sender());
- Q_ASSERT_X(action != nullptr, "QActionGroup::_q_actionTriggered", "internal error");
- emit q->triggered(action);
-}
-
-void QActionGroupPrivate::_q_actionHovered()
-{
- Q_Q(QActionGroup);
- QAction *action = qobject_cast<QAction*>(q->sender());
- Q_ASSERT_X(action != nullptr, "QActionGroup::_q_actionHovered", "internal error");
- emit q->hovered(action);
-}
-
/*!
\class QActionGroup
\brief The QActionGroup class groups actions together.
@@ -154,27 +116,6 @@ void QActionGroupPrivate::_q_actionHovered()
*/
/*!
- \enum QActionGroup::ExclusionPolicy
-
- This enum specifies the different policies that can be used to
- control how the group performs exclusive checking on checkable actions.
-
- \value None
- The actions in the group can be checked independently of each other.
-
- \value Exclusive
- Exactly one action can be checked at any one time.
- This is the default policy.
-
- \value ExclusiveOptional
- At most one action can be checked at any one time. The actions
- can also be all unchecked.
-
- \sa exclusionPolicy
- \since 5.14
-*/
-
-/*!
Constructs an action group for the \a parent object.
The action group is exclusive by default. Call setExclusive(false)
@@ -182,53 +123,24 @@ void QActionGroupPrivate::_q_actionHovered()
but allow unchecking the active action call instead
setExclusionPolicy(QActionGroup::ExclusionPolicy::ExclusiveOptional)
*/
-QActionGroup::QActionGroup(QObject* parent) : QObject(*new QActionGroupPrivate, parent)
+QActionGroup::QActionGroup(QObject* parent) :
+ QGuiActionGroup(*new QActionGroupPrivate, parent)
{
}
/*!
Destroys the action group.
*/
-QActionGroup::~QActionGroup()
+QActionGroup::~QActionGroup() = default;
+
+QAction *QActionGroup::checkedAction() const
{
+ return static_cast<QAction *>(checkedGuiAction());
}
-/*!
- \fn QAction *QActionGroup::addAction(QAction *action)
-
- Adds the \a action to this group, and returns it.
-
- Normally an action is added to a group by creating it with the
- group as its parent, so this function is not usually used.
-
- \sa QAction::setActionGroup()
-*/
-QAction *QActionGroup::addAction(QAction* a)
+QAction *QActionGroup::addAction(QAction *a)
{
- Q_D(QActionGroup);
- if(!d->actions.contains(a)) {
- d->actions.append(a);
- QObject::connect(a, SIGNAL(triggered()), this, SLOT(_q_actionTriggered()));
- QObject::connect(a, SIGNAL(changed()), this, SLOT(_q_actionChanged()));
- QObject::connect(a, SIGNAL(hovered()), this, SLOT(_q_actionHovered()));
- }
- if(!a->d_func()->forceDisabled) {
- a->setEnabled(d->enabled);
- a->d_func()->forceDisabled = false;
- }
- if(!a->d_func()->forceInvisible) {
- a->setVisible(d->visible);
- a->d_func()->forceInvisible = false;
- }
- if(a->isChecked())
- d->current = a;
- QActionGroup *oldGroup = a->d_func()->group;
- if(oldGroup != this) {
- if (oldGroup)
- oldGroup->removeAction(a);
- a->d_func()->group = this;
- a->d_func()->sendDataChanged();
- }
+ QGuiActionGroup::addAction(a);
return a;
}
@@ -261,184 +173,16 @@ QAction *QActionGroup::addAction(const QIcon &icon, const QString &text)
}
/*!
- Removes the \a action from this group. The action will have no
- parent as a result.
-
- \sa QAction::setActionGroup()
-*/
-void QActionGroup::removeAction(QAction *action)
-{
- Q_D(QActionGroup);
- if (d->actions.removeAll(action)) {
- if (action == d->current)
- d->current = 0;
- QObject::disconnect(action, SIGNAL(triggered()), this, SLOT(_q_actionTriggered()));
- QObject::disconnect(action, SIGNAL(changed()), this, SLOT(_q_actionChanged()));
- QObject::disconnect(action, SIGNAL(hovered()), this, SLOT(_q_actionHovered()));
- action->d_func()->group = 0;
- }
-}
-
-/*!
Returns the list of this groups's actions. This may be empty.
*/
QList<QAction*> QActionGroup::actions() const
{
- Q_D(const QActionGroup);
- return d->actions;
+ QList<QAction*> result;
+ const auto baseActions = guiActions();
+ result.reserve(baseActions.size());
+ for (auto baseAction : baseActions)
+ result.append(static_cast<QAction*>(baseAction));
+ return result;
}
-/*!
- \brief Enable or disable the group exclusion checking
-
- This is a convenience method that calls
- setExclusionPolicy(ExclusionPolicy::Exclusive).
-
- \sa QActionGroup::exclusionPolicy
-*/
-void QActionGroup::setExclusive(bool b)
-{
- setExclusionPolicy(b ? QActionGroup::ExclusionPolicy::Exclusive
- : QActionGroup::ExclusionPolicy::None);
-}
-
-/*!
- \brief Returs true if the group is exclusive
-
- The group is exclusive if the ExclusionPolicy is either Exclusive
- or ExclusionOptional.
-
-*/
-bool QActionGroup::isExclusive() const
-{
- return exclusionPolicy() != QActionGroup::ExclusionPolicy::None;
-}
-
-/*!
- \property QActionGroup::exclusionPolicy
- \brief This property holds the group exclusive checking policy
-
- If exclusionPolicy is set to Exclusive, only one checkable
- action in the action group can ever be active at any time. If the user
- chooses another checkable action in the group, the one they chose becomes
- active and the one that was active becomes inactive. If exclusionPolicy is
- set to ExclusionOptional the group is exclusive but the active checkable
- action in the group can be unchecked leaving the group with no actions
- checked.
-
- \sa QAction::checkable
- \since 5.14
-*/
-void QActionGroup::setExclusionPolicy(QActionGroup::ExclusionPolicy policy)
-{
- Q_D(QActionGroup);
- d->exclusionPolicy = policy;
-}
-
-QActionGroup::ExclusionPolicy QActionGroup::exclusionPolicy() const
-{
- Q_D(const QActionGroup);
- return d->exclusionPolicy;
-}
-
-/*!
- \fn void QActionGroup::setDisabled(bool b)
-
- This is a convenience function for the \l enabled property, that
- is useful for signals--slots connections. If \a b is true the
- action group is disabled; otherwise it is enabled.
-*/
-
-/*!
- \property QActionGroup::enabled
- \brief whether the action group is enabled
-
- Each action in the group will be enabled or disabled unless it
- has been explicitly disabled.
-
- \sa QAction::setEnabled()
-*/
-void QActionGroup::setEnabled(bool b)
-{
- Q_D(QActionGroup);
- d->enabled = b;
- for (auto action : qAsConst(d->actions)) {
- if (!action->d_func()->forceDisabled) {
- action->setEnabled(b);
- action->d_func()->forceDisabled = false;
- }
- }
-}
-
-bool QActionGroup::isEnabled() const
-{
- Q_D(const QActionGroup);
- return d->enabled;
-}
-
-/*!
- Returns the currently checked action in the group, or \nullptr if
- none are checked.
-*/
-QAction *QActionGroup::checkedAction() const
-{
- Q_D(const QActionGroup);
- return d->current;
-}
-
-/*!
- \property QActionGroup::visible
- \brief whether the action group is visible
-
- Each action in the action group will match the visible state of
- this group unless it has been explicitly hidden.
-
- \sa QAction::setEnabled()
-*/
-void QActionGroup::setVisible(bool b)
-{
- Q_D(QActionGroup);
- d->visible = b;
- for (auto action : qAsConst(d->actions)) {
- if (!action->d_func()->forceInvisible) {
- action->setVisible(b);
- action->d_func()->forceInvisible = false;
- }
- }
-}
-
-bool QActionGroup::isVisible() const
-{
- Q_D(const QActionGroup);
- return d->visible;
-}
-
-/*!
- \fn void QActionGroup::triggered(QAction *action)
-
- This signal is emitted when the given \a action in the action
- group is activated by the user; for example, when the user clicks
- a menu option, toolbar button, or presses an action's shortcut key
- combination.
-
- Connect to this signal for command actions.
-
- \sa QAction::activate()
-*/
-
-/*!
- \fn void QActionGroup::hovered(QAction *action)
-
- This signal is emitted when the given \a action in the action
- group is highlighted by the user; for example, when the user
- pauses with the cursor over a menu option, toolbar button, or
- presses an action's shortcut key combination.
-
- \sa QAction::activate()
-*/
-
QT_END_NAMESPACE
-
-#include "moc_qactiongroup.cpp"
-
-#endif // QT_NO_ACTION
diff --git a/src/widgets/kernel/qactiongroup.h b/src/widgets/kernel/qactiongroup.h
index 90f488bedb..0a6a85f093 100644
--- a/src/widgets/kernel/qactiongroup.h
+++ b/src/widgets/kernel/qactiongroup.h
@@ -41,54 +41,31 @@
#define QACTIONGROUP_H
#include <QtWidgets/qtwidgetsglobal.h>
+#include <QtGui/qguiactiongroup.h>
#include <QtWidgets/qaction.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(action);
-#ifndef QT_NO_ACTION
+QT_BEGIN_NAMESPACE
class QActionGroupPrivate;
-class Q_WIDGETS_EXPORT QActionGroup : public QObject
+class Q_WIDGETS_EXPORT QActionGroup : public QGuiActionGroup
{
Q_OBJECT
Q_DECLARE_PRIVATE(QActionGroup)
- Q_PROPERTY(QActionGroup::ExclusionPolicy exclusionPolicy READ exclusionPolicy WRITE setExclusionPolicy)
- Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
- Q_PROPERTY(bool visible READ isVisible WRITE setVisible)
-
public:
- enum class ExclusionPolicy {
- None,
- Exclusive,
- ExclusiveOptional
- };
- Q_ENUM(ExclusionPolicy)
-
explicit QActionGroup(QObject* parent);
~QActionGroup();
- QAction *addAction(QAction* a);
- QAction *addAction(const QString &text);
- QAction *addAction(const QIcon &icon, const QString &text);
- void removeAction(QAction *a);
- QList<QAction*> actions() const;
-
QAction *checkedAction() const;
- bool isExclusive() const;
- bool isEnabled() const;
- bool isVisible() const;
- ExclusionPolicy exclusionPolicy() const;
+ QAction *addAction(QAction *a);
+ QAction *addAction(const QString &text);
+ QAction *addAction(const QIcon &icon, const QString &text);
-public Q_SLOTS:
- void setEnabled(bool);
- inline void setDisabled(bool b) { setEnabled(!b); }
- void setVisible(bool);
- void setExclusive(bool);
- void setExclusionPolicy(ExclusionPolicy policy);
+ QList<QAction*> actions() const;
Q_SIGNALS:
void triggered(QAction *);
@@ -96,13 +73,8 @@ Q_SIGNALS:
private:
Q_DISABLE_COPY(QActionGroup)
- Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered())
- Q_PRIVATE_SLOT(d_func(), void _q_actionChanged())
- Q_PRIVATE_SLOT(d_func(), void _q_actionHovered())
};
-#endif // QT_NO_ACTION
-
QT_END_NAMESPACE
#endif // QACTIONGROUP_H
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 3223781b63..2d4f114638 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -1395,7 +1395,9 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char*
else
*QApplicationPrivate::set_pal = palette;
QCoreApplication::setAttribute(Qt::AA_SetPalette);
- emit qGuiApp->paletteChanged(*QGuiApplicationPrivate::app_pal);
+
+ if (qGuiApp && QGuiApplicationPrivate::app_pal)
+ emit qGuiApp->paletteChanged(*QGuiApplicationPrivate::app_pal);
}
}
@@ -1866,22 +1868,19 @@ void QApplication::aboutQt()
bool QApplication::event(QEvent *e)
{
Q_D(QApplication);
- if(e->type() == QEvent::Close) {
- QCloseEvent *ce = static_cast<QCloseEvent*>(e);
- ce->accept();
+ if (e->type() == QEvent::Quit) {
closeAllWindows();
-
- const QWidgetList list = topLevelWidgets();
- for (auto *w : list) {
+ for (auto *w : topLevelWidgets()) {
if (w->isVisible() && !(w->windowType() == Qt::Desktop) && !(w->windowType() == Qt::Popup) &&
(!(w->windowType() == Qt::Dialog) || !w->parentWidget())) {
- ce->ignore();
- break;
+ e->ignore();
+ return true;
}
}
- if (ce->isAccepted()) {
- return true;
- }
+ // Explicitly call QCoreApplication instead of QGuiApplication so that
+ // we don't let QGuiApplication close any windows we skipped earlier in
+ // closeAllWindows(). FIXME: Unify all this close magic through closeAllWindows.
+ return QCoreApplication::event(e);
#ifndef Q_OS_WIN
} else if (e->type() == QEvent::LocaleChange) {
// on Windows the event propagation is taken care by the
diff --git a/src/widgets/kernel/qshortcut.cpp b/src/widgets/kernel/qshortcut.cpp
index eec65c8625..904d765d3c 100644
--- a/src/widgets/kernel/qshortcut.cpp
+++ b/src/widgets/kernel/qshortcut.cpp
@@ -40,7 +40,6 @@
#include "qshortcut.h"
#include "private/qwidget_p.h"
-#ifndef QT_NO_SHORTCUT
#include <qevent.h>
#if QT_CONFIG(whatsthis)
#include <qwhatsthis.h>
@@ -53,25 +52,21 @@
#endif
#include <qapplication.h>
#include <private/qapplication_p.h>
+#include "private/qguishortcut_p.h"
#include <private/qshortcutmap_p.h>
-#include <private/qaction_p.h>
+#if QT_CONFIG(action)
+# include <private/qaction_p.h>
+#endif
#include <private/qwidgetwindow_p.h>
#include <qpa/qplatformmenu.h>
QT_BEGIN_NAMESPACE
-#define QAPP_CHECK(functionName) \
- if (Q_UNLIKELY(!qApp)) { \
- qWarning("QShortcut: Initialize QApplication before calling '" functionName "'."); \
- return; \
- }
-
-
static bool correctWidgetContext(Qt::ShortcutContext context, QWidget *w, QWidget *active_window);
#if QT_CONFIG(graphicsview)
static bool correctGraphicsWidgetContext(Qt::ShortcutContext context, QGraphicsWidget *w, QWidget *active_window);
#endif
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
static bool correctActionContext(Qt::ShortcutContext context, QAction *a, QWidget *active_window);
#endif
@@ -108,7 +103,7 @@ bool qWidgetShortcutContextMatcher(QObject *object, Qt::ShortcutContext context)
if (!active_window)
return false;
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
if (auto a = qobject_cast<QAction *>(object))
return correctActionContext(context, a, active_window);
#endif
@@ -284,7 +279,7 @@ static bool correctGraphicsWidgetContext(Qt::ShortcutContext context, QGraphicsW
}
#endif
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
static bool correctActionContext(Qt::ShortcutContext context, QAction *a, QWidget *active_window)
{
const QWidgetList &widgets = static_cast<QActionPrivate *>(QObjectPrivate::get(a))->widgets;
@@ -332,7 +327,7 @@ static bool correctActionContext(Qt::ShortcutContext context, QAction *a, QWidge
#endif
return false;
}
-#endif // QT_NO_ACTION
+#endif // QT_CONFIG(action)
/*!
@@ -395,65 +390,34 @@ static bool correctActionContext(Qt::ShortcutContext context, QAction *a, QWidge
Returns the shortcut's parent widget.
*/
-/*!
- \fn void QShortcut::activated()
-
- This signal is emitted when the user types the shortcut's key
- sequence.
-
- \sa activatedAmbiguously()
-*/
-
-/*!
- \fn void QShortcut::activatedAmbiguously()
-
- When a key sequence is being typed at the keyboard, it is said to
- be ambiguous as long as it matches the start of more than one
- shortcut.
-
- When a shortcut's key sequence is completed,
- activatedAmbiguously() is emitted if the key sequence is still
- ambiguous (i.e., it is the start of one or more other shortcuts).
- The activated() signal is not emitted in this case.
-
- \sa activated()
-*/
-
/*
\internal
Private data accessed through d-pointer.
*/
-class QShortcutPrivate : public QObjectPrivate
+class QShortcutPrivate : public QGuiShortcutPrivate
{
Q_DECLARE_PUBLIC(QShortcut)
public:
QShortcutPrivate() = default;
- QKeySequence sc_sequence;
- Qt::ShortcutContext sc_context = Qt::WindowShortcut;
- bool sc_enabled = true;
- bool sc_autorepeat = true;
- int sc_id = 0;
+
+ QShortcutMap::ContextMatcher contextMatcher() const override
+ { return qWidgetShortcutContextMatcher; }
+
+ bool handleWhatsThis() override;
+
QString sc_whatsthis;
- void redoGrab(QShortcutMap &map);
};
-void QShortcutPrivate::redoGrab(QShortcutMap &map)
+bool QShortcutPrivate::handleWhatsThis()
{
- Q_Q(QShortcut);
- if (Q_UNLIKELY(!parent)) {
- qWarning("QShortcut: No widget parent defined");
- return;
- }
-
- if (sc_id)
- map.removeShortcut(sc_id, q);
- if (sc_sequence.isEmpty())
- return;
- sc_id = map.addShortcut(q, sc_sequence, sc_context, qWidgetShortcutContextMatcher);
- if (!sc_enabled)
- map.setShortcutEnabled(false, sc_id, q);
- if (!sc_autorepeat)
- map.setShortcutAutoRepeat(false, sc_id, q);
+#if QT_CONFIG(whatsthis)
+ const bool result = QWhatsThis::inWhatsThisMode();
+ if (result)
+ QWhatsThis::showText(QCursor::pos(), sc_whatsthis);
+ return result;
+#else
+ return false;
+#endif
}
/*!
@@ -464,9 +428,8 @@ void QShortcutPrivate::redoGrab(QShortcutMap &map)
\sa setKey()
*/
QShortcut::QShortcut(QWidget *parent)
- : QObject(*new QShortcutPrivate, parent)
+ : QGuiShortcut(*new QShortcutPrivate, parent)
{
- Q_ASSERT(parent != nullptr);
}
/*!
@@ -480,114 +443,8 @@ QShortcut::QShortcut(QWidget *parent)
QShortcut::QShortcut(const QKeySequence &key, QWidget *parent,
const char *member, const char *ambiguousMember,
Qt::ShortcutContext context)
- : QShortcut(parent)
-{
- QAPP_CHECK("QShortcut");
-
- Q_D(QShortcut);
- d->sc_context = context;
- d->sc_sequence = key;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
- if (member)
- connect(this, SIGNAL(activated()), parent, member);
- if (ambiguousMember)
- connect(this, SIGNAL(activatedAmbiguously()), parent, ambiguousMember);
-}
-
-/*!
- Destroys the shortcut.
-*/
-QShortcut::~QShortcut()
+ : QGuiShortcut(*new QShortcutPrivate, key, parent, member, ambiguousMember, context)
{
- Q_D(QShortcut);
- if (qApp)
- QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(d->sc_id, this);
-}
-
-/*!
- \property QShortcut::key
- \brief the shortcut's key sequence
-
- This is a key sequence with an optional combination of Shift, Ctrl,
- and Alt. The key sequence may be supplied in a number of ways:
-
- \snippet code/src_gui_kernel_qshortcut.cpp 1
-
- By default, this property contains an empty key sequence.
-*/
-void QShortcut::setKey(const QKeySequence &key)
-{
- Q_D(QShortcut);
- if (d->sc_sequence == key)
- return;
- QAPP_CHECK("setKey");
- d->sc_sequence = key;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
-}
-
-QKeySequence QShortcut::key() const
-{
- Q_D(const QShortcut);
- return d->sc_sequence;
-}
-
-/*!
- \property QShortcut::enabled
- \brief whether the shortcut is enabled
-
- An enabled shortcut emits the activated() or activatedAmbiguously()
- signal when a QShortcutEvent occurs that matches the shortcut's
- key() sequence.
-
- If the application is in \c WhatsThis mode the shortcut will not emit
- the signals, but will show the "What's This?" text instead.
-
- By default, this property is \c true.
-
- \sa whatsThis
-*/
-void QShortcut::setEnabled(bool enable)
-{
- Q_D(QShortcut);
- if (d->sc_enabled == enable)
- return;
- QAPP_CHECK("setEnabled");
- d->sc_enabled = enable;
- QGuiApplicationPrivate::instance()->shortcutMap.setShortcutEnabled(enable, d->sc_id, this);
-}
-
-bool QShortcut::isEnabled() const
-{
- Q_D(const QShortcut);
- return d->sc_enabled;
-}
-
-/*!
- \property QShortcut::context
- \brief the context in which the shortcut is valid
-
- A shortcut's context decides in which circumstances a shortcut is
- allowed to be triggered. The normal context is Qt::WindowShortcut,
- which allows the shortcut to trigger if the parent (the widget
- containing the shortcut) is a subwidget of the active top-level
- window.
-
- By default, this property is set to Qt::WindowShortcut.
-*/
-void QShortcut::setContext(Qt::ShortcutContext context)
-{
- Q_D(QShortcut);
- if(d->sc_context == context)
- return;
- QAPP_CHECK("setContext");
- d->sc_context = context;
- d->redoGrab(QGuiApplicationPrivate::instance()->shortcutMap);
-}
-
-Qt::ShortcutContext QShortcut::context() const
-{
- Q_D(const QShortcut);
- return d->sc_context;
}
/*!
@@ -617,67 +474,8 @@ QString QShortcut::whatsThis() const
}
/*!
- \property QShortcut::autoRepeat
- \brief whether the shortcut can auto repeat
- \since 4.2
-
- If true, the shortcut will auto repeat when the keyboard shortcut
- combination is held down, provided that keyboard auto repeat is
- enabled on the system.
- The default value is true.
-*/
-void QShortcut::setAutoRepeat(bool on)
-{
- Q_D(QShortcut);
- if (d->sc_autorepeat == on)
- return;
- QAPP_CHECK("setAutoRepeat");
- d->sc_autorepeat = on;
- QGuiApplicationPrivate::instance()->shortcutMap.setShortcutAutoRepeat(on, d->sc_id, this);
-}
-
-bool QShortcut::autoRepeat() const
-{
- Q_D(const QShortcut);
- return d->sc_autorepeat;
-}
-
-/*!
- Returns the shortcut's ID.
-
- \sa QShortcutEvent::shortcutId()
-*/
-int QShortcut::id() const
-{
- Q_D(const QShortcut);
- return d->sc_id;
-}
-
-/*!
- \internal
+ Destroys the shortcut.
*/
-bool QShortcut::event(QEvent *e)
-{
- Q_D(QShortcut);
- if (d->sc_enabled && e->type() == QEvent::Shortcut) {
- auto se = static_cast<QShortcutEvent *>(e);
- if (se->shortcutId() == d->sc_id && se->key() == d->sc_sequence){
-#if QT_CONFIG(whatsthis)
- if (QWhatsThis::inWhatsThisMode()) {
- QWhatsThis::showText(QCursor::pos(), d->sc_whatsthis);
- } else
-#endif
- if (se->isAmbiguous())
- emit activatedAmbiguously();
- else
- emit activated();
- return true;
- }
- }
- return QObject::event(e);
-}
-#endif // QT_NO_SHORTCUT
+QShortcut::~QShortcut() = default;
QT_END_NAMESPACE
-
-#include "moc_qshortcut.cpp"
diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h
index 6dcf4971b2..6ac9a37fe3 100644
--- a/src/widgets/kernel/qshortcut.h
+++ b/src/widgets/kernel/qshortcut.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtWidgets module of the Qt Toolkit.
@@ -42,60 +42,32 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qwidget.h>
-#include <QtGui/qkeysequence.h>
-
-QT_BEGIN_NAMESPACE
+#include <QtGui/qguishortcut.h>
+QT_REQUIRE_CONFIG(shortcut);
-#ifndef QT_NO_SHORTCUT
+QT_BEGIN_NAMESPACE
class QShortcutPrivate;
-class Q_WIDGETS_EXPORT QShortcut : public QObject
+class Q_WIDGETS_EXPORT QShortcut : public QGuiShortcut
{
Q_OBJECT
- Q_DECLARE_PRIVATE(QShortcut)
- Q_PROPERTY(QKeySequence key READ key WRITE setKey)
Q_PROPERTY(QString whatsThis READ whatsThis WRITE setWhatsThis)
- Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
- Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat)
- Q_PROPERTY(Qt::ShortcutContext context READ context WRITE setContext)
+ Q_DECLARE_PRIVATE(QShortcut)
public:
explicit QShortcut(QWidget *parent);
- QShortcut(const QKeySequence& key, QWidget *parent,
- const char *member = nullptr, const char *ambiguousMember = nullptr,
- Qt::ShortcutContext context = Qt::WindowShortcut);
+ explicit QShortcut(const QKeySequence& key, QWidget *parent,
+ const char *member = nullptr, const char *ambiguousMember = nullptr,
+ Qt::ShortcutContext context = Qt::WindowShortcut);
~QShortcut();
- void setKey(const QKeySequence& key);
- QKeySequence key() const;
-
- void setEnabled(bool enable);
- bool isEnabled() const;
-
- void setContext(Qt::ShortcutContext context);
- Qt::ShortcutContext context() const;
-
void setWhatsThis(const QString &text);
QString whatsThis() const;
- void setAutoRepeat(bool on);
- bool autoRepeat() const;
-
- int id() const;
-
inline QWidget *parentWidget() const
{ return static_cast<QWidget *>(QObject::parent()); }
-
-Q_SIGNALS:
- void activated();
- void activatedAmbiguously();
-
-protected:
- bool event(QEvent *e) override;
};
-#endif // QT_NO_SHORTCUT
-
QT_END_NAMESPACE
#endif // QSHORTCUT_H
diff --git a/src/widgets/kernel/qt_widgets_pch.h b/src/widgets/kernel/qt_widgets_pch.h
index b70941950b..3551f19e80 100644
--- a/src/widgets/kernel/qt_widgets_pch.h
+++ b/src/widgets/kernel/qt_widgets_pch.h
@@ -53,7 +53,9 @@
#include <qabstractbutton.h>
#include <qabstractscrollarea.h>
#include <qabstractslider.h>
-#include <qaction.h>
+#if QT_CONFIG(action)
+# include <qaction.h>
+#endif
#include <qcommonstyle.h>
#include <qlayout.h>
#include <qstyle.h>
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 0f2e2545cd..efe225a5f5 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -88,7 +88,9 @@
#include "qwidget_p.h"
#include <QtGui/private/qwindow_p.h>
-#include "qaction_p.h"
+#if QT_CONFIG(action)
+# include "qaction_p.h"
+#endif
#include "qlayout_p.h"
#if QT_CONFIG(graphicsview)
#include "QtWidgets/qgraphicsproxywidget.h"
diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h
index 83a6e6d4b3..86f937c4c6 100644
--- a/src/widgets/kernel/qwidget.h
+++ b/src/widgets/kernel/qwidget.h
@@ -53,7 +53,9 @@
#include <QtGui/qregion.h>
#include <QtGui/qbrush.h>
#include <QtGui/qcursor.h>
-#include <QtGui/qkeysequence.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/qkeysequence.h>
+#endif
#ifdef QT_INCLUDE_COMPAT
#include <QtGui/qevent.h>
diff --git a/src/widgets/kernel/qwidgetaction.cpp b/src/widgets/kernel/qwidgetaction.cpp
index 6eebaca42c..14b7bc74c9 100644
--- a/src/widgets/kernel/qwidgetaction.cpp
+++ b/src/widgets/kernel/qwidgetaction.cpp
@@ -40,7 +40,6 @@
#include "qwidgetaction.h"
#include "qdebug.h"
-#ifndef QT_NO_ACTION
#include "qwidgetaction_p.h"
QT_BEGIN_NAMESPACE
@@ -282,5 +281,3 @@ QList<QWidget *> QWidgetAction::createdWidgets() const
QT_END_NAMESPACE
#include "moc_qwidgetaction.cpp"
-
-#endif // QT_NO_ACTION
diff --git a/src/widgets/kernel/qwidgetaction.h b/src/widgets/kernel/qwidgetaction.h
index 4769332a23..4d302e8c61 100644
--- a/src/widgets/kernel/qwidgetaction.h
+++ b/src/widgets/kernel/qwidgetaction.h
@@ -43,10 +43,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qaction.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(action);
-#ifndef QT_NO_ACTION
+QT_BEGIN_NAMESPACE
class QWidgetActionPrivate;
@@ -78,8 +77,6 @@ private:
friend class QToolBar;
};
-#endif // QT_NO_ACTION
-
QT_END_NAMESPACE
#endif // QWIDGETACTION_H
diff --git a/src/widgets/kernel/qwidgetaction_p.h b/src/widgets/kernel/qwidgetaction_p.h
index 1fbcf236a1..0e633a65e4 100644
--- a/src/widgets/kernel/qwidgetaction_p.h
+++ b/src/widgets/kernel/qwidgetaction_p.h
@@ -54,6 +54,8 @@
#include <QtWidgets/private/qtwidgetsglobal_p.h>
#include "private/qaction_p.h"
+QT_REQUIRE_CONFIG(action);
+
QT_BEGIN_NAMESPACE
class QWidgetActionPrivate : public QActionPrivate
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index b9a67edc6a..24f8c5ce43 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -893,7 +893,7 @@ void QWidgetWindow::handleDragEnterEvent(QDragEnterEvent *event, QWidget *widget
void QWidgetWindow::handleDragMoveEvent(QDragMoveEvent *event)
{
- auto *widget = findDnDTarget(m_widget, event->pos());
+ QPointer<QWidget> widget = findDnDTarget(m_widget, event->pos());
if (!widget) {
event->ignore();
if (m_dragTarget) { // Send DragLeave to previous
@@ -916,14 +916,18 @@ void QWidgetWindow::handleDragMoveEvent(QDragMoveEvent *event)
QGuiApplication::forwardEvent(m_dragTarget, &leaveEvent, event);
m_dragTarget = nullptr;
}
- // Send DragEnter to new widget.
- handleDragEnterEvent(static_cast<QDragEnterEvent*>(event), widget);
- // Handling 'DragEnter' should suffice for the application.
- translated.setDropAction(event->dropAction());
- translated.setAccepted(event->isAccepted());
- // The drag enter event is always immediately followed by a drag move event,
- // see QDragEnterEvent documentation.
- QGuiApplication::forwardEvent(m_dragTarget, &translated, event);
+ // widget might have been deleted when handling the leaveEvent
+ if (widget) {
+ // Send DragEnter to new widget.
+ handleDragEnterEvent(static_cast<QDragEnterEvent*>(event), widget);
+ // Handling 'DragEnter' should suffice for the application.
+ translated.setDropAction(event->dropAction());
+ translated.setAccepted(event->isAccepted());
+ // The drag enter event is always immediately followed by a drag move event,
+ // see QDragEnterEvent documentation.
+ if (m_dragTarget)
+ QGuiApplication::forwardEvent(m_dragTarget, &translated, event);
+ }
}
event->setAccepted(translated.isAccepted());
event->setDropAction(translated.dropAction());
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 01cadd9a86..564c6cad00 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -1760,7 +1760,7 @@ QStyleOptionMenuItem::QStyleOptionMenuItem(int version)
\value Exclusive The item is an exclusive check item (like a radio button).
\value NonExclusive The item is a non-exclusive check item (like a check box).
- \sa checkType, QAction::checkable, QAction::checked, QActionGroup::exclusionPolicy
+ \sa checkType, QGuiAction::checkable, QGuiAction::checked, QGuiActionGroup::exclusionPolicy
*/
/*!
diff --git a/src/widgets/util/qundostack.cpp b/src/widgets/util/qundostack.cpp
index 8788c42252..dbe01e4ad8 100644
--- a/src/widgets/util/qundostack.cpp
+++ b/src/widgets/util/qundostack.cpp
@@ -443,7 +443,7 @@ const QUndoCommand *QUndoCommand::child(int index) const
\sa QUndoCommand, QUndoView
*/
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
QUndoAction::QUndoAction(const QString &prefix, QObject *parent)
: QAction(parent)
@@ -473,7 +473,7 @@ void QUndoAction::setTextFormat(const QString &textFormat, const QString &defaul
m_defaultText = defaultText;
}
-#endif // QT_NO_ACTION
+#endif // QT_CONFIG(action)
/*! \internal
Sets the current index to \a idx, emitting appropriate signals. If \a clean is true,
diff --git a/src/widgets/util/qundostack_p.h b/src/widgets/util/qundostack_p.h
index 05c9e0d27e..c44cdd6603 100644
--- a/src/widgets/util/qundostack_p.h
+++ b/src/widgets/util/qundostack_p.h
@@ -44,7 +44,9 @@
#include <private/qobject_p.h>
#include <QtCore/qlist.h>
#include <QtCore/qstring.h>
-#include <QtWidgets/qaction.h>
+#if QT_CONFIG(action)
+# include <QtWidgets/qaction.h>
+#endif
#include "qundostack.h"
diff --git a/src/widgets/widgets.pro b/src/widgets/widgets.pro
index 6f807e1696..2aa56ded93 100644
--- a/src/widgets/widgets.pro
+++ b/src/widgets/widgets.pro
@@ -9,6 +9,8 @@ msvc:equals(QT_ARCH, i386): QMAKE_LFLAGS += /BASE:0x65000000
TRACEPOINT_PROVIDER = $$PWD/qtwidgets.tracepoints
CONFIG += qt_tracepoints
+CONFIG += metatypes install_metatypes
+
QMAKE_DOCS = $$PWD/doc/qtwidgets.qdocconf
#platforms
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index d956d2ba23..c2f8538ab7 100644
--- a/src/widgets/widgets/qabstractbutton.cpp
+++ b/src/widgets/widgets/qabstractbutton.cpp
@@ -52,7 +52,6 @@
#include "qpainter.h"
#include "qapplication.h"
#include "qstyle.h"
-#include "qaction.h"
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
#endif
diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h
index e8dee142f2..c6f6e4c546 100644
--- a/src/widgets/widgets/qabstractbutton.h
+++ b/src/widgets/widgets/qabstractbutton.h
@@ -42,7 +42,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtGui/qicon.h>
-#include <QtGui/qkeysequence.h>
+#if QT_CONFIG(shortcut)
+# include <QtGui/qkeysequence.h>
+#endif
#include <QtWidgets/qwidget.h>
QT_REQUIRE_CONFIG(abstractbutton);
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp
index cc0c51b237..8593001f8b 100644
--- a/src/widgets/widgets/qcalendarwidget.cpp
+++ b/src/widgets/widgets/qcalendarwidget.cpp
@@ -309,15 +309,17 @@ QString QCalendarMonthValidator::text() const
QString QCalendarMonthValidator::text(QDate date, QCalendar cal, int repeat) const
{
- if (repeat <= 1) {
- return QString::number(date.month(cal));
- } else if (repeat == 2) {
- return formatNumber(date.month(cal), 2);
- } else if (repeat == 3) {
- return cal.standaloneMonthName(m_locale, date.month(cal), QLocale::ShortFormat);
- } else /*if (repeat >= 4)*/ {
- return cal.standaloneMonthName(m_locale, date.month(cal), QLocale::LongFormat);
- }
+ const auto parts = cal.partsFromDate(date);
+ // Numeric forms:
+ if (repeat <= 1)
+ return QString::number(parts.month);
+ if (repeat == 2)
+ return formatNumber(parts.month, 2);
+ // Text forms:
+ if (repeat == 3)
+ return cal.standaloneMonthName(m_locale, parts.month, parts.year, QLocale::ShortFormat);
+ /* repeat >= 4 */
+ return cal.standaloneMonthName(m_locale, parts.month, parts.year, QLocale::LongFormat);
}
//////////////////////////////////
@@ -923,6 +925,11 @@ public:
QDate referenceDate() const;
int columnForFirstOfMonth(QDate date) const;
+ QString monthName(const QLocale &locale, int month)
+ {
+ return m_calendar.standaloneMonthName(locale, month, m_shownYear, QLocale::LongFormat);
+ }
+
int m_firstColumn;
int m_firstRow;
QCalendar m_calendar;
@@ -1786,8 +1793,8 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget)
monthButton->setAutoRaise(true);
monthButton->setPopupMode(QToolButton::InstantPopup);
monthMenu = new QMenu(monthButton);
- for (int i = 1; i <= 12; i++) {
- QString monthName(m_model->m_calendar.standaloneMonthName(q->locale(), i, QLocale::LongFormat));
+ for (int i = 1, e = m_model->m_calendar.maximumMonthsInYear(); i <= e; i++) {
+ QString monthName(m_model->monthName(q->locale(), i));
QAction *act = monthMenu->addAction(monthName);
act->setData(i);
monthToAction[i] = act;
@@ -1876,7 +1883,7 @@ void QCalendarWidgetPrivate::updateMonthMenuNames()
Q_Q(QCalendarWidget);
for (int i = 1; i <= 12; i++) {
- QString monthName(m_model->m_calendar.standaloneMonthName(q->locale(), i, QLocale::LongFormat));
+ QString monthName(m_model->monthName(q->locale(), i));
monthToAction[i]->setText(monthName);
}
}
@@ -1979,7 +1986,7 @@ void QCalendarWidgetPrivate::updateNavigationBar()
{
Q_Q(QCalendarWidget);
- QString monthName = m_model->m_calendar.standaloneMonthName(q->locale(), m_model->m_shownMonth, QLocale::LongFormat);
+ QString monthName = m_model->monthName(q->locale(), m_model->m_shownMonth);
monthButton->setText(monthName);
yearEdit->setValue(m_model->m_shownYear);
@@ -2277,7 +2284,7 @@ QSize QCalendarWidget::minimumSizeHint() const
QFontMetrics fm = d->monthButton->fontMetrics();
int monthW = 0;
for (int i = 1; i < 12; i++) {
- QString monthName = d->m_model->m_calendar.standaloneMonthName(locale(), i, QLocale::LongFormat);
+ QString monthName = d->m_model->monthName(locale(), i);
monthW = qMax(monthW, fm.boundingRect(monthName).width());
}
const int buttonDecoMargin = d->monthButton->sizeHint().width() - fm.boundingRect(d->monthButton->text()).width();
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index e26993fb23..f348bbed0e 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -2308,33 +2308,6 @@ void QDateTimeEdit::paintEvent(QPaintEvent *event)
style()->drawComplexControl(QStyle::CC_ComboBox, &optCombo, &p, this);
}
-/*
- Returns the string for AM and PM markers.
-
- If a translation for "AM" and "PM" is installed, then use that.
- Otherwise, use the default implementation, which uses the locale.
-*/
-QString QDateTimeEditPrivate::getAmPmText(AmPm ap, Case cs) const
-{
- QString original;
- QString translated;
- if (ap == AmText) {
- original = QLatin1String(cs == UpperCase ? "AM" : "am");
- translated = (cs == UpperCase ? QDateTimeParser::tr("AM") : QDateTimeParser::tr("am"));
- } else {
- original = QLatin1String(cs == UpperCase ? "PM" : "pm");
- translated = (cs == UpperCase ? QDateTimeParser::tr("PM") : QDateTimeParser::tr("pm"));
- }
-
- // This logic fails if a translation exists but doesn't change the string,
- // which we can accept as a corner-case for which a locale-derived answer
- // will be acceptable.
- if (original != translated)
- return translated;
-
- return QDateTimeParser::getAmPmText(ap, cs);
-}
-
int QDateTimeEditPrivate::absoluteIndex(QDateTimeEdit::Section s, int index) const
{
for (int i=0; i<sectionNodes.size(); ++i) {
diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h
index dcf8863c8b..392bb0c778 100644
--- a/src/widgets/widgets/qdatetimeedit_p.h
+++ b/src/widgets/widgets/qdatetimeedit_p.h
@@ -97,7 +97,6 @@ public:
QDateTime getMinimum() const override { return minimum.toDateTime(); }
QDateTime getMaximum() const override { return maximum.toDateTime(); }
QLocale locale() const override { return q_func()->locale(); }
- QString getAmPmText(AmPm ap, Case cs) const override;
int cursorPosition() const override { return edit ? edit->cursorPosition() : -1; }
int absoluteIndex(QDateTimeEdit::Section s, int index) const;
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index a840bf4ee6..943b30bacc 100644
--- a/src/widgets/widgets/qlabel.cpp
+++ b/src/widgets/widgets/qlabel.cpp
@@ -47,7 +47,6 @@
#include "qstyle.h"
#include "qstyleoption.h"
#include <limits.h>
-#include "qaction.h"
#include "qclipboard.h"
#include <qdebug.h>
#include <qurl.h>
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index 7f482a6a4e..fe0d87d8c1 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -40,7 +40,9 @@
#include "qlineedit.h"
#include "qlineedit_p.h"
-#include "qaction.h"
+#if QT_CONFIG(action)
+# include "qaction.h"
+#endif
#include "qapplication.h"
#include "qclipboard.h"
#if QT_CONFIG(draganddrop)
@@ -78,7 +80,7 @@
#endif
#include "private/qstylesheetstyle_p.h"
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
#include "private/qapplication_p.h"
#include "private/qshortcutmap_p.h"
#include "qkeysequence.h"
@@ -2226,6 +2228,7 @@ QMenu *QLineEdit::createStandardContextMenu()
action = popup->addAction(QLineEdit::tr("Select All") + ACCEL_KEY(QKeySequence::SelectAll));
action->setEnabled(!d->control->text().isEmpty() && !d->control->allSelected());
+ setActionIcon(action, QStringLiteral("edit-select-all"));
d->selectAllAction = action;
connect(action, SIGNAL(triggered()), SLOT(selectAll()));
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index d2b5f87906..462691ffb3 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -47,7 +47,9 @@
#if QT_CONFIG(draganddrop)
#include "qdrag.h"
#endif
-#include "qwidgetaction.h"
+#if QT_CONFIG(action)
+# include "qwidgetaction.h"
+#endif
#include "qclipboard.h"
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
@@ -370,7 +372,7 @@ void QLineEditIconButton::actionEvent(QActionEvent *e)
{
switch (e->type()) {
case QEvent::ActionChanged: {
- const QAction *action = e->action();
+ const auto *action = e->action();
if (isVisibleTo(parentWidget()) != action->isVisible()) {
setVisible(action->isVisible());
if (QLineEditPrivate *lep = lineEditPrivate())
@@ -545,7 +547,8 @@ void QLineEditPrivate::positionSideWidgets()
}
}
-QLineEditPrivate::SideWidgetLocation QLineEditPrivate::findSideWidget(const QAction *a) const
+#if QT_CONFIG(action)
+QLineEditPrivate::SideWidgetLocation QLineEditPrivate::findSideWidget(const QGuiAction *a) const
{
int i = 0;
for (const auto &e : leadingSideWidgets) {
@@ -574,12 +577,10 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE
QWidget *w = 0;
// Store flags about QWidgetAction here since removeAction() may be called from ~QAction,
// in which a qobject_cast<> no longer works.
-#if QT_CONFIG(action)
if (QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(newAction)) {
if ((w = widgetAction->requestWidget(q)))
flags |= SideWidgetCreatedByWidgetAction;
}
-#endif
if (!w) {
#if QT_CONFIG(toolbutton)
QLineEditIconButton *toolButton = new QLineEditIconButton(q);
@@ -634,9 +635,8 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE
return w;
}
-void QLineEditPrivate::removeAction(QAction *action)
+void QLineEditPrivate::removeAction(QGuiAction *action)
{
-#if QT_CONFIG(action)
Q_Q(QLineEdit);
const auto location = findSideWidget(action);
if (!location.isValid())
@@ -652,10 +652,8 @@ void QLineEditPrivate::removeAction(QAction *action)
if (!hasSideWidgets()) // Last widget, remove connection
QObject::disconnect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_textChanged(QString)));
q->update();
-#else
- Q_UNUSED(action);
-#endif // QT_CONFIG(action)
}
+#endif // QT_CONFIG(action)
static int effectiveTextMargin(int defaultMargin, const QLineEditPrivate::SideWidgetEntryList &widgets,
const QLineEditPrivate::SideWidgetParameters &parameters)
diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h
index a11fea6bbe..bb2a0530f1 100644
--- a/src/widgets/widgets/qlineedit_p.h
+++ b/src/widgets/widgets/qlineedit_p.h
@@ -238,8 +238,10 @@ public:
QString placeholderText;
+#if QT_CONFIG(action)
QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0);
- void removeAction(QAction *action);
+ void removeAction(QGuiAction *action);
+#endif
SideWidgetParameters sideWidgetParameters() const;
QIcon clearButtonIcon() const;
void setClearButtonEnabled(bool enabled);
@@ -261,7 +263,9 @@ private:
};
friend class QTypeInfo<SideWidgetLocation>;
- SideWidgetLocation findSideWidget(const QAction *a) const;
+#if QT_CONFIG(action)
+ SideWidgetLocation findSideWidget(const QGuiAction *a) const;
+#endif
SideWidgetEntryList leadingSideWidgets;
SideWidgetEntryList trailingSideWidgets;
diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp
index d58a1d06db..f4d3367a95 100644
--- a/src/widgets/widgets/qmdisubwindow.cpp
+++ b/src/widgets/widgets/qmdisubwindow.cpp
@@ -162,7 +162,9 @@
#include <QDebug>
#include <QMdiArea>
#include <QScopedValueRollback>
-#include <QAction>
+#if QT_CONFIG(action)
+# include <qaction.h>
+#endif
#if QT_CONFIG(menu)
#include <QMenu>
#endif
@@ -895,7 +897,7 @@ QMdiSubWindowPrivate::QMdiSubWindowPrivate()
*/
void QMdiSubWindowPrivate::_q_updateStaysOnTopHint()
{
-#ifndef QT_NO_ACTION
+#if QT_CONFIG(action)
Q_Q(QMdiSubWindow);
if (QAction *senderAction = qobject_cast<QAction *>(q->sender())) {
if (senderAction->isChecked()) {
@@ -906,7 +908,7 @@ void QMdiSubWindowPrivate::_q_updateStaysOnTopHint()
q->lower();
}
}
-#endif // QT_NO_ACTION
+#endif // QT_CONFIG(action)
}
/*!
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index 51b458f03a..0fc89ad2e4 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -157,10 +157,11 @@ public:
Q_D(QTornOffMenu);
if(menu != d->causedMenu)
return;
+ auto action = static_cast<QAction *>(act->action());
if (act->type() == QEvent::ActionAdded) {
- insertAction(act->before(), act->action());
+ insertAction(static_cast<QAction *>(act->before()), action);
} else if (act->type() == QEvent::ActionRemoved)
- removeAction(act->action());
+ removeAction(action);
}
void actionEvent(QActionEvent *e) override
{
@@ -403,7 +404,9 @@ void QMenuPrivate::updateActionRects(const QRect &screen) const
//calculate size
QFontMetrics qfm = q->fontMetrics();
bool previousWasSeparator = true; // this is true to allow removing the leading separators
+#if QT_CONFIG(shortcut)
const bool contextMenu = isContextMenu();
+#endif
for(int i = 0; i <= lastVisibleAction; i++) {
QAction *action = actions.at(i);
const bool isSection = action->isSeparator() && (!action->text().isEmpty() || !action->icon().isNull());
@@ -434,12 +437,12 @@ void QMenuPrivate::updateActionRects(const QRect &screen) const
if (t != -1) {
tabWidth = qMax(int(tabWidth), qfm.horizontalAdvance(s.mid(t+1)));
s = s.left(t);
- #ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
} else if (action->isShortcutVisibleInContextMenu() || !contextMenu) {
QKeySequence seq = action->shortcut();
if (!seq.isEmpty())
tabWidth = qMax(int(tabWidth), qfm.horizontalAdvance(seq.toString(QKeySequence::NativeText)));
- #endif
+#endif
}
sz.setWidth(fm.boundingRect(QRect(), Qt::TextSingleLine | Qt::TextShowMnemonic, s).width());
sz.setHeight(qMax(fm.height(), qfm.height()));
@@ -1767,12 +1770,14 @@ QAction *QMenu::addAction(const QIcon &icon, const QString &text)
\sa QWidget::addAction()
*/
-QAction *QMenu::addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut)
+QAction *QMenu::addAction(const QString &text, const QObject *receiver, const char* member
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut
+#endif
+ )
{
QAction *action = new QAction(text, this);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut);
-#else
+#if QT_CONFIG(shortcut)
action->setShortcut(shortcut);
#endif
QObject::connect(action, SIGNAL(triggered(bool)), receiver, member);
@@ -1860,12 +1865,14 @@ QAction *QMenu::addAction(const QString &text, const QObject *receiver, const ch
\sa QWidget::addAction()
*/
QAction *QMenu::addAction(const QIcon &icon, const QString &text, const QObject *receiver,
- const char* member, const QKeySequence &shortcut)
+ const char* member
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut
+#endif
+ )
{
QAction *action = new QAction(icon, text, this);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut);
-#else
+#if QT_CONFIG(shortcut)
action->setShortcut(shortcut);
#endif
QObject::connect(action, SIGNAL(triggered(bool)), receiver, member);
@@ -3541,15 +3548,16 @@ void QMenu::actionEvent(QActionEvent *e)
wa->releaseWidget(widget);
}
}
- d->widgetItems.remove(e->action());
+ d->widgetItems.remove(static_cast<QAction *>(e->action()));
}
if (!d->platformMenu.isNull()) {
+ auto action = static_cast<QAction *>(e->action());
if (e->type() == QEvent::ActionAdded) {
QPlatformMenuItem *beforeItem = e->before()
? d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->before()))
: nullptr;
- d->insertActionInPlatformMenu(e->action(), beforeItem);
+ d->insertActionInPlatformMenu(action, beforeItem);
} else if (e->type() == QEvent::ActionRemoved) {
QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->action()));
d->platformMenu->removeMenuItem(menuItem);
@@ -3557,7 +3565,7 @@ void QMenu::actionEvent(QActionEvent *e)
} else if (e->type() == QEvent::ActionChanged) {
QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->action()));
if (menuItem) {
- d->copyActionToPlatformItem(e->action(), menuItem);
+ d->copyActionToPlatformItem(action, menuItem);
d->platformMenu->syncMenuItem(menuItem);
}
}
diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h
index 84ab9e027a..35d5a865ff 100644
--- a/src/widgets/widgets/qmenu.h
+++ b/src/widgets/widgets/qmenu.h
@@ -78,8 +78,17 @@ public:
using QWidget::addAction;
QAction *addAction(const QString &text);
QAction *addAction(const QIcon &icon, const QString &text);
- QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);
- QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);
+
+ QAction *addAction(const QString &text, const QObject *receiver, const char* member
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ );
+ QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ );
#ifdef Q_CLANG_QDOC
template<typename Functor>
@@ -95,12 +104,14 @@ public:
template<class Obj, typename Func1>
inline typename std::enable_if<!std::is_same<const char*, Func1>::value
&& QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type
- addAction(const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0)
+ addAction(const QString &text, const Obj *object, Func1 slot
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ )
{
QAction *result = addAction(text);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut)
-#else
+#if QT_CONFIG(shortcut)
result->setShortcut(shortcut);
#endif
connect(result, &QAction::triggered, object, std::move(slot));
@@ -108,12 +119,14 @@ public:
}
// addAction(QString): Connect to a functor or function pointer (without context)
template <typename Func1>
- inline QAction *addAction(const QString &text, Func1 slot, const QKeySequence &shortcut = 0)
+ inline QAction *addAction(const QString &text, Func1 slot
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ )
{
QAction *result = addAction(text);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut)
-#else
+#if QT_CONFIG(shortcut)
result->setShortcut(shortcut);
#endif
connect(result, &QAction::triggered, std::move(slot));
@@ -123,12 +136,15 @@ public:
template<class Obj, typename Func1>
inline typename std::enable_if<!std::is_same<const char*, Func1>::value
&& QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type
- addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0)
+ addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ )
+
{
QAction *result = addAction(actionIcon, text);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut)
-#else
+#if QT_CONFIG(shortcut)
result->setShortcut(shortcut);
#endif
connect(result, &QAction::triggered, object, std::move(slot));
@@ -136,12 +152,14 @@ public:
}
// addAction(QIcon, QString): Connect to a functor or function pointer (without context)
template <typename Func1>
- inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot, const QKeySequence &shortcut = 0)
+ inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot
+#if QT_CONFIG(shortcut)
+ , const QKeySequence &shortcut = {}
+#endif
+ )
{
QAction *result = addAction(actionIcon, text);
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(shortcut)
-#else
+#if QT_CONFIG(shortcut)
result->setShortcut(shortcut);
#endif
connect(result, &QAction::triggered, std::move(slot));
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp
index 69b1c5896f..7c08376a2b 100644
--- a/src/widgets/widgets/qmenubar.cpp
+++ b/src/widgets/widgets/qmenubar.cpp
@@ -1288,21 +1288,22 @@ void QMenuBar::actionEvent(QActionEvent *e)
if (!nativeMenuBar)
return;
+ auto action = static_cast<QAction *>(e->action());
if (e->type() == QEvent::ActionAdded) {
- QPlatformMenu *menu = d->getPlatformMenu(e->action());
+ QPlatformMenu *menu = d->getPlatformMenu(action);
if (menu) {
- d->copyActionToPlatformMenu(e->action(), menu);
+ d->copyActionToPlatformMenu(action, menu);
- QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(e->action());
+ QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(action);
d->platformMenuBar->insertMenu(menu, beforeMenu);
}
} else if (e->type() == QEvent::ActionRemoved) {
- QPlatformMenu *menu = d->getPlatformMenu(e->action());
+ QPlatformMenu *menu = d->getPlatformMenu(action);
if (menu)
d->platformMenuBar->removeMenu(menu);
} else if (e->type() == QEvent::ActionChanged) {
QPlatformMenu *cur = d->platformMenuBar->menuForTag(reinterpret_cast<quintptr>(e->action()));
- QPlatformMenu *menu = d->getPlatformMenu(e->action());
+ QPlatformMenu *menu = d->getPlatformMenu(action);
// the menu associated with the action can change, need to
// remove and/or insert the new platform menu
@@ -1310,13 +1311,13 @@ void QMenuBar::actionEvent(QActionEvent *e)
if (cur)
d->platformMenuBar->removeMenu(cur);
if (menu) {
- d->copyActionToPlatformMenu(e->action(), menu);
+ d->copyActionToPlatformMenu(action, menu);
- QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(e->action());
+ QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(action);
d->platformMenuBar->insertMenu(menu, beforeMenu);
}
} else if (menu) {
- d->copyActionToPlatformMenu(e->action(), menu);
+ d->copyActionToPlatformMenu(action, menu);
d->platformMenuBar->syncMenu(menu);
}
}
diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp
index 58e9c4fd87..4b821f7e41 100644
--- a/src/widgets/widgets/qtoolbar.cpp
+++ b/src/widgets/widgets/qtoolbar.cpp
@@ -961,7 +961,7 @@ QAction *QToolBar::actionAt(const QPoint &p) const
void QToolBar::actionEvent(QActionEvent *event)
{
Q_D(QToolBar);
- QAction *action = event->action();
+ auto action = static_cast<QAction *>(event->action());
QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(action);
switch (event->type()) {
diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp
index 961a261e8f..5752e0700a 100644
--- a/src/widgets/widgets/qtoolbarlayout.cpp
+++ b/src/widgets/widgets/qtoolbarlayout.cpp
@@ -207,7 +207,7 @@ void QToolBarLayout::insertAction(int index, QAction *action)
}
}
-int QToolBarLayout::indexOf(QAction *action) const
+int QToolBarLayout::indexOf(const QGuiAction *action) const
{
for (int i = 0; i < items.count(); ++i) {
if (items.at(i)->action == action)
diff --git a/src/widgets/widgets/qtoolbarlayout_p.h b/src/widgets/widgets/qtoolbarlayout_p.h
index b5dc121b93..1a406a3d29 100644
--- a/src/widgets/widgets/qtoolbarlayout_p.h
+++ b/src/widgets/widgets/qtoolbarlayout_p.h
@@ -96,7 +96,7 @@ public:
QSize sizeHint() const override;
void insertAction(int index, QAction *action);
- int indexOf(QAction *action) const;
+ int indexOf(const QGuiAction *action) const;
using QLayout::indexOf; // bring back the hidden members
bool layoutActions(const QSize &size);
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index b00b219386..cced36738c 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -466,7 +466,7 @@ void QToolButton::paintEvent(QPaintEvent *)
void QToolButton::actionEvent(QActionEvent *event)
{
Q_D(QToolButton);
- QAction *action = event->action();
+ auto action = static_cast<QAction *>(event->action());
switch (event->type()) {
case QEvent::ActionChanged:
if (action == d->defaultAction)
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp
index 094c59a0c9..f5d3f2f9c0 100644
--- a/src/widgets/widgets/qwidgettextcontrol.cpp
+++ b/src/widgets/widgets/qwidgettextcontrol.cpp
@@ -92,7 +92,7 @@
#include <QtGui/qaccessible.h>
#include <QtCore/qmetaobject.h>
-#ifndef QT_NO_SHORTCUT
+#if QT_CONFIG(shortcut)
#include "private/qapplication_p.h"
#include "private/qshortcutmap_p.h"
#include <qkeysequence.h>
@@ -2362,6 +2362,7 @@ QMenu *QWidgetTextControl::createStandardContextMenu(const QPointF &pos, QWidget
a = menu->addAction(tr("Select All") + ACCEL_KEY(QKeySequence::SelectAll), this, SLOT(selectAll()));
a->setEnabled(!d->doc->isEmpty());
a->setObjectName(QStringLiteral("select-all"));
+ setActionIcon(a, QStringLiteral("edit-select-all"));
}
if ((d->interactionFlags & Qt::TextEditable) && QGuiApplication::styleHints()->useRtlExtensions()) {
@@ -2480,7 +2481,7 @@ void QWidgetTextControl::setExtraSelections(const QList<QTextEdit::ExtraSelectio
{
Q_D(QWidgetTextControl);
- QHash<int, int> hash;
+ QMultiHash<int, int> hash;
for (int i = 0; i < d->extraSelections.count(); ++i) {
const QAbstractTextDocumentLayout::Selection &esel = d->extraSelections.at(i);
hash.insert(esel.cursor.anchor(), i);
diff --git a/src/xml/dom/dom.pri b/src/xml/dom/dom.pri
index d86071e84e..36b6087ede 100644
--- a/src/xml/dom/dom.pri
+++ b/src/xml/dom/dom.pri
@@ -1,2 +1,5 @@
-HEADERS += $$PWD/qdom.h
-SOURCES += $$PWD/qdom.cpp
+HEADERS += $$PWD/qdom.h \
+ $$PWD/qdom_p.h \
+ $$PWD/qdomhelpers_p.h
+SOURCES += $$PWD/qdom.cpp \
+ $$PWD/qdomhelpers.cpp
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 3e8b18d449..7dbf864a7c 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -39,15 +39,15 @@
#include <qplatformdefs.h>
#include <qdom.h>
+#include "qdom_p.h"
+#include "qdomhelpers_p.h"
#include "private/qxmlutils_p.h"
#ifndef QT_NO_DOM
#include <qatomic.h>
#include <qbuffer.h>
-#include <qhash.h>
#include <qiodevice.h>
-#include <qlist.h>
#if QT_CONFIG(regularexpression)
#include <qregularexpression.h>
#endif
@@ -56,9 +56,7 @@
#endif
#include <qtextstream.h>
#include <qxml.h>
-#include "private/qxml_p.h"
#include <qvariant.h>
-#include <qmap.h>
#include <qshareddata.h>
#include <qdebug.h>
#include <stdio.h>
@@ -119,510 +117,6 @@ static void qt_split_namespace(QString& prefix, QString& name, const QString& qN
/**************************************************************
*
- * Private class declerations
- *
- **************************************************************/
-
-class QDomImplementationPrivate
-{
-public:
- inline QDomImplementationPrivate() {}
-
- QDomImplementationPrivate* clone();
- QAtomicInt ref;
- static QDomImplementation::InvalidDataPolicy invalidDataPolicy;
-};
-
-class QDomNodePrivate
-{
-public:
- QDomNodePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomNodePrivate(QDomNodePrivate* n, bool deep);
- virtual ~QDomNodePrivate();
-
- QString nodeName() const { return name; }
- QString nodeValue() const { return value; }
- virtual void setNodeValue(const QString& v) { value = v; }
-
- QDomDocumentPrivate* ownerDocument();
- void setOwnerDocument(QDomDocumentPrivate* doc);
-
- virtual QDomNodePrivate* insertBefore(QDomNodePrivate* newChild, QDomNodePrivate* refChild);
- virtual QDomNodePrivate* insertAfter(QDomNodePrivate* newChild, QDomNodePrivate* refChild);
- virtual QDomNodePrivate* replaceChild(QDomNodePrivate* newChild, QDomNodePrivate* oldChild);
- virtual QDomNodePrivate* removeChild(QDomNodePrivate* oldChild);
- virtual QDomNodePrivate* appendChild(QDomNodePrivate* newChild);
-
- QDomNodePrivate* namedItem(const QString& name);
-
- virtual QDomNodePrivate* cloneNode(bool deep = true);
- virtual void normalize();
- virtual void clear();
-
- inline QDomNodePrivate* parent() const { return hasParent ? ownerNode : nullptr; }
- inline void setParent(QDomNodePrivate *p) { ownerNode = p; hasParent = true; }
-
- void setNoParent() {
- ownerNode = hasParent ? (QDomNodePrivate*)ownerDocument() : nullptr;
- hasParent = false;
- }
-
- // Dynamic cast
- bool isAttr() const { return nodeType() == QDomNode::AttributeNode; }
- bool isCDATASection() const { return nodeType() == QDomNode::CDATASectionNode; }
- bool isDocumentFragment() const { return nodeType() == QDomNode::DocumentFragmentNode; }
- bool isDocument() const { return nodeType() == QDomNode::DocumentNode; }
- bool isDocumentType() const { return nodeType() == QDomNode::DocumentTypeNode; }
- bool isElement() const { return nodeType() == QDomNode::ElementNode; }
- bool isEntityReference() const { return nodeType() == QDomNode::EntityReferenceNode; }
- bool isText() const { const QDomNode::NodeType nt = nodeType();
- return (nt == QDomNode::TextNode)
- || (nt == QDomNode::CDATASectionNode); }
- bool isEntity() const { return nodeType() == QDomNode::EntityNode; }
- bool isNotation() const { return nodeType() == QDomNode::NotationNode; }
- bool isProcessingInstruction() const { return nodeType() == QDomNode::ProcessingInstructionNode; }
- bool isCharacterData() const { const QDomNode::NodeType nt = nodeType();
- return (nt == QDomNode::CharacterDataNode)
- || (nt == QDomNode::TextNode)
- || (nt == QDomNode::CommentNode); }
- bool isComment() const { return nodeType() == QDomNode::CommentNode; }
-
- virtual QDomNode::NodeType nodeType() const { return QDomNode::BaseNode; }
-
- virtual void save(QTextStream&, int, int) const;
-
- void setLocation(int lineNumber, int columnNumber);
-
- // Variables
- QAtomicInt ref;
- QDomNodePrivate* prev;
- QDomNodePrivate* next;
- QDomNodePrivate* ownerNode; // either the node's parent or the node's owner document
- QDomNodePrivate* first;
- QDomNodePrivate* last;
-
- QString name; // this is the local name if prefix != null
- QString value;
- QString prefix; // set this only for ElementNode and AttributeNode
- QString namespaceURI; // set this only for ElementNode and AttributeNode
- bool createdWithDom1Interface : 1;
- bool hasParent : 1;
-
- int lineNumber;
- int columnNumber;
-};
-
-class QDomNodeListPrivate
-{
-public:
- QDomNodeListPrivate(QDomNodePrivate*);
- QDomNodeListPrivate(QDomNodePrivate*, const QString& );
- QDomNodeListPrivate(QDomNodePrivate*, const QString&, const QString& );
- ~QDomNodeListPrivate();
-
- bool operator== (const QDomNodeListPrivate&) const;
- bool operator!= (const QDomNodeListPrivate&) const;
-
- void createList();
- QDomNodePrivate* item(int index);
- int length() const;
-
- QAtomicInt ref;
- /*
- This list contains the children of this node.
- */
- QDomNodePrivate* node_impl;
- QString tagname;
- QString nsURI;
- QList<QDomNodePrivate*> list;
- long timestamp;
-};
-
-class QDomNamedNodeMapPrivate
-{
-public:
- QDomNamedNodeMapPrivate(QDomNodePrivate*);
- ~QDomNamedNodeMapPrivate();
-
- QDomNodePrivate* namedItem(const QString& name) const;
- QDomNodePrivate* namedItemNS(const QString& nsURI, const QString& localName) const;
- QDomNodePrivate* setNamedItem(QDomNodePrivate* arg);
- QDomNodePrivate* setNamedItemNS(QDomNodePrivate* arg);
- QDomNodePrivate* removeNamedItem(const QString& name);
- QDomNodePrivate* item(int index) const;
- int length() const;
- bool contains(const QString& name) const;
- bool containsNS(const QString& nsURI, const QString & localName) const;
-
- /**
- * Remove all children from the map.
- */
- void clearMap();
- bool isReadOnly() { return readonly; }
- void setReadOnly(bool r) { readonly = r; }
- bool isAppendToParent() { return appendToParent; }
- /**
- * If true, then the node will redirect insert/remove calls
- * to its parent by calling QDomNodePrivate::appendChild or removeChild.
- * In addition the map won't increase or decrease the reference count
- * of the nodes it contains.
- *
- * By default this value is false and the map will handle reference counting
- * by itself.
- */
- void setAppendToParent(bool b) { appendToParent = b; }
-
- /**
- * Creates a copy of the map. It is a deep copy
- * that means that all children are cloned.
- */
- QDomNamedNodeMapPrivate* clone(QDomNodePrivate* parent);
-
- // Variables
- QAtomicInt ref;
- QHash<QString, QDomNodePrivate *> map;
- QDomNodePrivate* parent;
- bool readonly;
- bool appendToParent;
-};
-
-class QDomDocumentTypePrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentTypePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomDocumentTypePrivate(QDomDocumentTypePrivate* n, bool deep);
- ~QDomDocumentTypePrivate();
- void init();
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNodePrivate* insertBefore(QDomNodePrivate* newChild, QDomNodePrivate* refChild) override;
- QDomNodePrivate* insertAfter(QDomNodePrivate* newChild, QDomNodePrivate* refChild) override;
- QDomNodePrivate* replaceChild(QDomNodePrivate* newChild, QDomNodePrivate* oldChild) override;
- QDomNodePrivate* removeChild(QDomNodePrivate* oldChild) override;
- QDomNodePrivate* appendChild(QDomNodePrivate* newChild) override;
-
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentTypeNode; }
-
- void save(QTextStream& s, int, int) const override;
-
- // Variables
- QDomNamedNodeMapPrivate* entities;
- QDomNamedNodeMapPrivate* notations;
- QString publicId;
- QString systemId;
- QString internalSubset;
-};
-
-class QDomDocumentFragmentPrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentFragmentPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent = nullptr);
- QDomDocumentFragmentPrivate(QDomNodePrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- virtual QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentFragmentNode; }
-};
-
-class QDomCharacterDataPrivate : public QDomNodePrivate
-{
-public:
- QDomCharacterDataPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& data);
- QDomCharacterDataPrivate(QDomCharacterDataPrivate* n, bool deep);
-
- int dataLength() const;
- QString substringData(unsigned long offset, unsigned long count) const;
- void appendData(const QString& arg);
- void insertData(unsigned long offset, const QString& arg);
- void deleteData(unsigned long offset, unsigned long count);
- void replaceData(unsigned long offset, unsigned long count, const QString& arg);
-
- // Reimplemented from QDomNodePrivate
- QDomNode::NodeType nodeType() const override { return QDomNode::CharacterDataNode; }
- QDomNodePrivate* cloneNode(bool deep = true) override;
-};
-
-class QDomTextPrivate : public QDomCharacterDataPrivate
-{
-public:
- QDomTextPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomTextPrivate(QDomTextPrivate* n, bool deep);
-
- QDomTextPrivate* splitText(int offset);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::TextNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomAttrPrivate : public QDomNodePrivate
-{
-public:
- QDomAttrPrivate(QDomDocumentPrivate*, QDomNodePrivate*, const QString& name);
- QDomAttrPrivate(QDomDocumentPrivate*, QDomNodePrivate*, const QString& nsURI, const QString& qName);
- QDomAttrPrivate(QDomAttrPrivate* n, bool deep);
-
- bool specified() const;
-
- // Reimplemented from QDomNodePrivate
- void setNodeValue(const QString& v) override;
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::AttributeNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- bool m_specified;
-};
-
-class QDomElementPrivate : public QDomNodePrivate
-{
-public:
- QDomElementPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name);
- QDomElementPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& nsURI, const QString& qName);
- QDomElementPrivate(QDomElementPrivate* n, bool deep);
- ~QDomElementPrivate();
-
- QString attribute(const QString& name, const QString& defValue) const;
- QString attributeNS(const QString& nsURI, const QString& localName, const QString& defValue) const;
- void setAttribute(const QString& name, const QString& value);
- void setAttributeNS(const QString& nsURI, const QString& qName, const QString& newValue);
- void removeAttribute(const QString& name);
- QDomAttrPrivate* attributeNode(const QString& name);
- QDomAttrPrivate* attributeNodeNS(const QString& nsURI, const QString& localName);
- QDomAttrPrivate* setAttributeNode(QDomAttrPrivate* newAttr);
- QDomAttrPrivate* setAttributeNodeNS(QDomAttrPrivate* newAttr);
- QDomAttrPrivate* removeAttributeNode(QDomAttrPrivate* oldAttr);
- bool hasAttribute(const QString& name);
- bool hasAttributeNS(const QString& nsURI, const QString& localName);
-
- QString text();
-
- // Reimplemented from QDomNodePrivate
- QDomNamedNodeMapPrivate* attributes() { return m_attr; }
- bool hasAttributes() { return (m_attr->length() > 0); }
- QDomNode::NodeType nodeType() const override { return QDomNode::ElementNode; }
- QDomNodePrivate* cloneNode(bool deep = true) override;
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QDomNamedNodeMapPrivate* m_attr;
-};
-
-
-class QDomCommentPrivate : public QDomCharacterDataPrivate
-{
-public:
- QDomCommentPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomCommentPrivate(QDomCommentPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::CommentNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomCDATASectionPrivate : public QDomTextPrivate
-{
-public:
- QDomCDATASectionPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& val);
- QDomCDATASectionPrivate(QDomCDATASectionPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::CDATASectionNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomNotationPrivate : public QDomNodePrivate
-{
-public:
- QDomNotationPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name,
- const QString& pub, const QString& sys);
- QDomNotationPrivate(QDomNotationPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::NotationNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QString m_sys;
- QString m_pub;
-};
-
-class QDomEntityPrivate : public QDomNodePrivate
-{
-public:
- QDomEntityPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name,
- const QString& pub, const QString& sys, const QString& notation);
- QDomEntityPrivate(QDomEntityPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::EntityNode; }
- virtual void save(QTextStream& s, int, int) const override;
-
- // Variables
- QString m_sys;
- QString m_pub;
- QString m_notationName;
-};
-
-class QDomEntityReferencePrivate : public QDomNodePrivate
-{
-public:
- QDomEntityReferencePrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& name);
- QDomEntityReferencePrivate(QDomNodePrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::EntityReferenceNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomProcessingInstructionPrivate : public QDomNodePrivate
-{
-public:
- QDomProcessingInstructionPrivate(QDomDocumentPrivate*, QDomNodePrivate* parent, const QString& target,
- const QString& data);
- QDomProcessingInstructionPrivate(QDomProcessingInstructionPrivate* n, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::ProcessingInstructionNode; }
- virtual void save(QTextStream& s, int, int) const override;
-};
-
-class QDomDocumentPrivate : public QDomNodePrivate
-{
-public:
- QDomDocumentPrivate();
- QDomDocumentPrivate(const QString& name);
- QDomDocumentPrivate(QDomDocumentTypePrivate* dt);
- QDomDocumentPrivate(QDomDocumentPrivate* n, bool deep);
- ~QDomDocumentPrivate();
-
- bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn);
- bool setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader, QString *errorMsg, int *errorLine, int *errorColumn);
-
- // Attributes
- QDomDocumentTypePrivate* doctype() { return type.data(); }
- QDomImplementationPrivate* implementation() { return impl.data(); }
- QDomElementPrivate* documentElement();
-
- // Factories
- QDomElementPrivate* createElement(const QString& tagName);
- QDomElementPrivate* createElementNS(const QString& nsURI, const QString& qName);
- QDomDocumentFragmentPrivate* createDocumentFragment();
- QDomTextPrivate* createTextNode(const QString& data);
- QDomCommentPrivate* createComment(const QString& data);
- QDomCDATASectionPrivate* createCDATASection(const QString& data);
- QDomProcessingInstructionPrivate* createProcessingInstruction(const QString& target, const QString& data);
- QDomAttrPrivate* createAttribute(const QString& name);
- QDomAttrPrivate* createAttributeNS(const QString& nsURI, const QString& qName);
- QDomEntityReferencePrivate* createEntityReference(const QString& name);
-
- QDomNodePrivate* importNode(QDomNodePrivate* importedNode, bool deep);
-
- // Reimplemented from QDomNodePrivate
- QDomNodePrivate* cloneNode(bool deep = true) override;
- QDomNode::NodeType nodeType() const override { return QDomNode::DocumentNode; }
- void clear() override;
-
- // Variables
- QExplicitlySharedDataPointer<QDomImplementationPrivate> impl;
- QExplicitlySharedDataPointer<QDomDocumentTypePrivate> type;
-
- void saveDocument(QTextStream& stream, const int indent, QDomNode::EncodingPolicy encUsed) const;
-
- /* \internal
- Counter for the QDomNodeListPrivate timestamps.
-
- This is a cache optimization, that might in some cases be effective. The
- dilemma is that QDomNode::childNodes() returns a list, but the
- implementation stores the children in a linked list. Hence, in order to
- get the children out through childNodes(), a list must be populated each
- time, which is O(N).
-
- DOM has the requirement of node references being live, see DOM Core
- Level 3, 1.1.1 The DOM Structure Model, which means that changes to the
- underlying documents must be reflected in node lists.
-
- This mechanism, nodeListTime, is a caching optimization that reduces the
- amount of times the node list is rebuilt, by only doing so when the
- document actually changes. However, a change to anywhere in any document
- invalidate all lists, since no dependency tracking is done.
-
- It functions by that all modifying functions(insertBefore() and so on)
- increment the count; each QDomNodeListPrivate copies nodeListTime on
- construction, and compares its own value to nodeListTime in order to
- determine whether it needs to rebuild.
-
- This is reentrant. The nodeListTime may overflow, but that's ok since we
- check for equalness, not whether nodeListTime is smaller than the list's
- stored timestamp.
- */
- long nodeListTime;
-};
-
-/**************************************************************
- *
- * QDomHandler
- *
- **************************************************************/
-
-class QDomHandler : public QXmlDefaultHandler
-{
-public:
- QDomHandler(QDomDocumentPrivate* d, QXmlSimpleReader *reader, bool namespaceProcessing);
- ~QDomHandler();
-
- // content handler
- bool endDocument() override;
- bool startElement(const QString& nsURI, const QString& localName, const QString& qName, const QXmlAttributes& atts) override;
- bool endElement(const QString& nsURI, const QString& localName, const QString& qName) override;
- bool characters(const QString& ch) override;
- bool processingInstruction(const QString& target, const QString& data) override;
- bool skippedEntity(const QString& name) override;
-
- // error handler
- bool fatalError(const QXmlParseException& exception) override;
-
- // lexical handler
- bool startCDATA() override;
- bool endCDATA() override;
- bool startEntity(const QString &) override;
- bool endEntity(const QString &) override;
- bool startDTD(const QString& name, const QString& publicId, const QString& systemId) override;
- bool comment(const QString& ch) override;
-
- // decl handler
- bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) override ;
-
- // DTD handler
- bool notationDecl(const QString & name, const QString & publicId, const QString & systemId) override;
- bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName) override ;
-
- void setDocumentLocator(QXmlLocator *locator) override;
-
- QString errorMsg;
- int errorLine;
- int errorColumn;
-
-private:
- QDomDocumentPrivate *doc;
- QDomNodePrivate *node;
- QString entityName;
- bool cdata;
- bool nsProcessing;
- QXmlLocator *locator;
- QXmlSimpleReader *reader;
-};
-
-/**************************************************************
- *
* Functions for verifying legal data
*
**************************************************************/
@@ -7361,200 +6855,6 @@ QDomComment QDomNode::toComment() const
return QDomComment();
}
-/**************************************************************
- *
- * QDomHandler
- *
- **************************************************************/
-
-QDomHandler::QDomHandler(QDomDocumentPrivate* adoc, QXmlSimpleReader* areader, bool namespaceProcessing)
- : errorLine(0), errorColumn(0), doc(adoc), node(adoc), cdata(false),
- nsProcessing(namespaceProcessing), locator(nullptr), reader(areader)
-{
-}
-
-QDomHandler::~QDomHandler()
-{
-}
-
-bool QDomHandler::endDocument()
-{
- // ### is this really necessary? (rms)
- if (node != doc)
- return false;
- return true;
-}
-
-bool QDomHandler::startDTD(const QString& name, const QString& publicId, const QString& systemId)
-{
- doc->doctype()->name = name;
- doc->doctype()->publicId = publicId;
- doc->doctype()->systemId = systemId;
- return true;
-}
-
-bool QDomHandler::startElement(const QString& nsURI, const QString&, const QString& qName, const QXmlAttributes& atts)
-{
- // tag name
- QDomNodePrivate* n;
- if (nsProcessing) {
- n = doc->createElementNS(nsURI, qName);
- } else {
- n = doc->createElement(qName);
- }
-
- if (!n)
- return false;
-
- n->setLocation(locator->lineNumber(), locator->columnNumber());
-
- node->appendChild(n);
- node = n;
-
- // attributes
- for (int i=0; i<atts.length(); i++)
- {
- if (nsProcessing) {
- ((QDomElementPrivate*)node)->setAttributeNS(atts.uri(i), atts.qName(i), atts.value(i));
- } else {
- ((QDomElementPrivate*)node)->setAttribute(atts.qName(i), atts.value(i));
- }
- }
-
- return true;
-}
-
-bool QDomHandler::endElement(const QString&, const QString&, const QString&)
-{
- if (!node || node == doc)
- return false;
- node = node->parent();
-
- return true;
-}
-
-bool QDomHandler::characters(const QString& ch)
-{
- // No text as child of some document
- if (node == doc)
- return false;
-
- QScopedPointer<QDomNodePrivate> n;
- if (cdata) {
- n.reset(doc->createCDATASection(ch));
- } else if (!entityName.isEmpty()) {
- QScopedPointer<QDomEntityPrivate> e(new QDomEntityPrivate(doc, nullptr, entityName,
- QString(), QString(), QString()));
- e->value = ch;
- e->ref.deref();
- doc->doctype()->appendChild(e.data());
- e.take();
- n.reset(doc->createEntityReference(entityName));
- } else {
- n.reset(doc->createTextNode(ch));
- }
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n.data());
- n.take();
-
- return true;
-}
-
-bool QDomHandler::processingInstruction(const QString& target, const QString& data)
-{
- QDomNodePrivate *n;
- n = doc->createProcessingInstruction(target, data);
- if (n) {
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
- }
- else
- return false;
-}
-
-bool QDomHandler::skippedEntity(const QString& name)
-{
- // we can only handle inserting entity references into content
- if (reader && !reader->d_ptr->skipped_entity_in_content)
- return true;
-
- QDomNodePrivate *n = doc->createEntityReference(name);
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
-}
-
-bool QDomHandler::fatalError(const QXmlParseException& exception)
-{
- errorMsg = exception.message();
- errorLine = exception.lineNumber();
- errorColumn = exception.columnNumber();
- return QXmlDefaultHandler::fatalError(exception);
-}
-
-bool QDomHandler::startCDATA()
-{
- cdata = true;
- return true;
-}
-
-bool QDomHandler::endCDATA()
-{
- cdata = false;
- return true;
-}
-
-bool QDomHandler::startEntity(const QString &name)
-{
- entityName = name;
- return true;
-}
-
-bool QDomHandler::endEntity(const QString &)
-{
- entityName.clear();
- return true;
-}
-
-bool QDomHandler::comment(const QString& ch)
-{
- QDomNodePrivate *n;
- n = doc->createComment(ch);
- n->setLocation(locator->lineNumber(), locator->columnNumber());
- node->appendChild(n);
- return true;
-}
-
-bool QDomHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName)
-{
- QDomEntityPrivate* e = new QDomEntityPrivate(doc, nullptr, name,
- publicId, systemId, notationName);
- // keep the refcount balanced: appendChild() does a ref anyway.
- e->ref.deref();
- doc->doctype()->appendChild(e);
- return true;
-}
-
-bool QDomHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId)
-{
- return unparsedEntityDecl(name, publicId, systemId, QString());
-}
-
-bool QDomHandler::notationDecl(const QString & name, const QString & publicId, const QString & systemId)
-{
- QDomNotationPrivate* n = new QDomNotationPrivate(doc, nullptr, name, publicId, systemId);
- // keep the refcount balanced: appendChild() does a ref anyway.
- n->ref.deref();
- doc->doctype()->appendChild(n);
- return true;
-}
-
-void QDomHandler::setDocumentLocator(QXmlLocator *locator)
-{
- this->locator = locator;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DOM
diff --git a/src/xml/dom/qdom_p.h b/src/xml/dom/qdom_p.h
new file mode 100644
index 0000000000..06ed0d5f0e
--- /dev/null
+++ b/src/xml/dom/qdom_p.h
@@ -0,0 +1,533 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QDOM_P_H
+#define QDOM_P_H
+
+#include "qdom.h"
+
+#include <qglobal.h>
+#include <qhash.h>
+#include <qstring.h>
+#include <qlist.h>
+#include <qxml.h>
+
+QT_BEGIN_NAMESPACE
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience of
+// qxml.cpp and qdom.cpp. This header file may change from version to version without
+// notice, or even be removed.
+//
+// We mean it.
+//
+
+/**************************************************************
+ *
+ * Private class declerations
+ *
+ **************************************************************/
+
+class QDomImplementationPrivate
+{
+public:
+ inline QDomImplementationPrivate() {}
+
+ QDomImplementationPrivate *clone();
+ QAtomicInt ref;
+ static QDomImplementation::InvalidDataPolicy invalidDataPolicy;
+};
+
+class QDomNodePrivate
+{
+public:
+ QDomNodePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomNodePrivate(QDomNodePrivate *n, bool deep);
+ virtual ~QDomNodePrivate();
+
+ QString nodeName() const { return name; }
+ QString nodeValue() const { return value; }
+ virtual void setNodeValue(const QString &v) { value = v; }
+
+ QDomDocumentPrivate *ownerDocument();
+ void setOwnerDocument(QDomDocumentPrivate *doc);
+
+ virtual QDomNodePrivate *insertBefore(QDomNodePrivate *newChild, QDomNodePrivate *refChild);
+ virtual QDomNodePrivate *insertAfter(QDomNodePrivate *newChild, QDomNodePrivate *refChild);
+ virtual QDomNodePrivate *replaceChild(QDomNodePrivate *newChild, QDomNodePrivate *oldChild);
+ virtual QDomNodePrivate *removeChild(QDomNodePrivate *oldChild);
+ virtual QDomNodePrivate *appendChild(QDomNodePrivate *newChild);
+
+ QDomNodePrivate *namedItem(const QString &name);
+
+ virtual QDomNodePrivate *cloneNode(bool deep = true);
+ virtual void normalize();
+ virtual void clear();
+
+ inline QDomNodePrivate *parent() const { return hasParent ? ownerNode : nullptr; }
+ inline void setParent(QDomNodePrivate *p)
+ {
+ ownerNode = p;
+ hasParent = true;
+ }
+
+ void setNoParent()
+ {
+ ownerNode = hasParent ? (QDomNodePrivate *)ownerDocument() : nullptr;
+ hasParent = false;
+ }
+
+ // Dynamic cast
+ bool isAttr() const { return nodeType() == QDomNode::AttributeNode; }
+ bool isCDATASection() const { return nodeType() == QDomNode::CDATASectionNode; }
+ bool isDocumentFragment() const { return nodeType() == QDomNode::DocumentFragmentNode; }
+ bool isDocument() const { return nodeType() == QDomNode::DocumentNode; }
+ bool isDocumentType() const { return nodeType() == QDomNode::DocumentTypeNode; }
+ bool isElement() const { return nodeType() == QDomNode::ElementNode; }
+ bool isEntityReference() const { return nodeType() == QDomNode::EntityReferenceNode; }
+ bool isText() const
+ {
+ const QDomNode::NodeType nt = nodeType();
+ return (nt == QDomNode::TextNode) || (nt == QDomNode::CDATASectionNode);
+ }
+ bool isEntity() const { return nodeType() == QDomNode::EntityNode; }
+ bool isNotation() const { return nodeType() == QDomNode::NotationNode; }
+ bool isProcessingInstruction() const
+ {
+ return nodeType() == QDomNode::ProcessingInstructionNode;
+ }
+ bool isCharacterData() const
+ {
+ const QDomNode::NodeType nt = nodeType();
+ return (nt == QDomNode::CharacterDataNode) || (nt == QDomNode::TextNode)
+ || (nt == QDomNode::CommentNode);
+ }
+ bool isComment() const { return nodeType() == QDomNode::CommentNode; }
+
+ virtual QDomNode::NodeType nodeType() const { return QDomNode::BaseNode; }
+
+ virtual void save(QTextStream &, int, int) const;
+
+ void setLocation(int lineNumber, int columnNumber);
+
+ // Variables
+ QAtomicInt ref;
+ QDomNodePrivate *prev;
+ QDomNodePrivate *next;
+ QDomNodePrivate *ownerNode; // either the node's parent or the node's owner document
+ QDomNodePrivate *first;
+ QDomNodePrivate *last;
+
+ QString name; // this is the local name if prefix != null
+ QString value;
+ QString prefix; // set this only for ElementNode and AttributeNode
+ QString namespaceURI; // set this only for ElementNode and AttributeNode
+ bool createdWithDom1Interface : 1;
+ bool hasParent : 1;
+
+ int lineNumber;
+ int columnNumber;
+};
+
+class QDomNodeListPrivate
+{
+public:
+ QDomNodeListPrivate(QDomNodePrivate *);
+ QDomNodeListPrivate(QDomNodePrivate *, const QString &);
+ QDomNodeListPrivate(QDomNodePrivate *, const QString &, const QString &);
+ ~QDomNodeListPrivate();
+
+ bool operator==(const QDomNodeListPrivate &) const;
+ bool operator!=(const QDomNodeListPrivate &) const;
+
+ void createList();
+ QDomNodePrivate *item(int index);
+ int length() const;
+
+ QAtomicInt ref;
+ /*
+ This list contains the children of this node.
+ */
+ QDomNodePrivate *node_impl;
+ QString tagname;
+ QString nsURI;
+ QList<QDomNodePrivate *> list;
+ long timestamp;
+};
+
+class QDomNamedNodeMapPrivate
+{
+public:
+ QDomNamedNodeMapPrivate(QDomNodePrivate *);
+ ~QDomNamedNodeMapPrivate();
+
+ QDomNodePrivate *namedItem(const QString &name) const;
+ QDomNodePrivate *namedItemNS(const QString &nsURI, const QString &localName) const;
+ QDomNodePrivate *setNamedItem(QDomNodePrivate *arg);
+ QDomNodePrivate *setNamedItemNS(QDomNodePrivate *arg);
+ QDomNodePrivate *removeNamedItem(const QString &name);
+ QDomNodePrivate *item(int index) const;
+ int length() const;
+ bool contains(const QString &name) const;
+ bool containsNS(const QString &nsURI, const QString &localName) const;
+
+ /**
+ * Remove all children from the map.
+ */
+ void clearMap();
+ bool isReadOnly() { return readonly; }
+ void setReadOnly(bool r) { readonly = r; }
+ bool isAppendToParent() { return appendToParent; }
+ /**
+ * If true, then the node will redirect insert/remove calls
+ * to its parent by calling QDomNodePrivate::appendChild or removeChild.
+ * In addition the map won't increase or decrease the reference count
+ * of the nodes it contains.
+ *
+ * By default this value is false and the map will handle reference counting
+ * by itself.
+ */
+ void setAppendToParent(bool b) { appendToParent = b; }
+
+ /**
+ * Creates a copy of the map. It is a deep copy
+ * that means that all children are cloned.
+ */
+ QDomNamedNodeMapPrivate *clone(QDomNodePrivate *parent);
+
+ // Variables
+ QAtomicInt ref;
+ QHash<QString, QDomNodePrivate *> map;
+ QDomNodePrivate *parent;
+ bool readonly;
+ bool appendToParent;
+};
+
+class QDomDocumentTypePrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentTypePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomDocumentTypePrivate(QDomDocumentTypePrivate *n, bool deep);
+ ~QDomDocumentTypePrivate();
+ void init();
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNodePrivate *insertBefore(QDomNodePrivate *newChild, QDomNodePrivate *refChild) override;
+ QDomNodePrivate *insertAfter(QDomNodePrivate *newChild, QDomNodePrivate *refChild) override;
+ QDomNodePrivate *replaceChild(QDomNodePrivate *newChild, QDomNodePrivate *oldChild) override;
+ QDomNodePrivate *removeChild(QDomNodePrivate *oldChild) override;
+ QDomNodePrivate *appendChild(QDomNodePrivate *newChild) override;
+
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentTypeNode; }
+
+ void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QDomNamedNodeMapPrivate *entities;
+ QDomNamedNodeMapPrivate *notations;
+ QString publicId;
+ QString systemId;
+ QString internalSubset;
+};
+
+class QDomDocumentFragmentPrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentFragmentPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent = nullptr);
+ QDomDocumentFragmentPrivate(QDomNodePrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ virtual QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentFragmentNode; }
+};
+
+class QDomCharacterDataPrivate : public QDomNodePrivate
+{
+public:
+ QDomCharacterDataPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &data);
+ QDomCharacterDataPrivate(QDomCharacterDataPrivate *n, bool deep);
+
+ int dataLength() const;
+ QString substringData(unsigned long offset, unsigned long count) const;
+ void appendData(const QString &arg);
+ void insertData(unsigned long offset, const QString &arg);
+ void deleteData(unsigned long offset, unsigned long count);
+ void replaceData(unsigned long offset, unsigned long count, const QString &arg);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNode::NodeType nodeType() const override { return QDomNode::CharacterDataNode; }
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+};
+
+class QDomTextPrivate : public QDomCharacterDataPrivate
+{
+public:
+ QDomTextPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomTextPrivate(QDomTextPrivate *n, bool deep);
+
+ QDomTextPrivate *splitText(int offset);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::TextNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomAttrPrivate : public QDomNodePrivate
+{
+public:
+ QDomAttrPrivate(QDomDocumentPrivate *, QDomNodePrivate *, const QString &name);
+ QDomAttrPrivate(QDomDocumentPrivate *, QDomNodePrivate *, const QString &nsURI,
+ const QString &qName);
+ QDomAttrPrivate(QDomAttrPrivate *n, bool deep);
+
+ bool specified() const;
+
+ // Reimplemented from QDomNodePrivate
+ void setNodeValue(const QString &v) override;
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::AttributeNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ bool m_specified;
+};
+
+class QDomElementPrivate : public QDomNodePrivate
+{
+public:
+ QDomElementPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name);
+ QDomElementPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &nsURI,
+ const QString &qName);
+ QDomElementPrivate(QDomElementPrivate *n, bool deep);
+ ~QDomElementPrivate();
+
+ QString attribute(const QString &name, const QString &defValue) const;
+ QString attributeNS(const QString &nsURI, const QString &localName,
+ const QString &defValue) const;
+ void setAttribute(const QString &name, const QString &value);
+ void setAttributeNS(const QString &nsURI, const QString &qName, const QString &newValue);
+ void removeAttribute(const QString &name);
+ QDomAttrPrivate *attributeNode(const QString &name);
+ QDomAttrPrivate *attributeNodeNS(const QString &nsURI, const QString &localName);
+ QDomAttrPrivate *setAttributeNode(QDomAttrPrivate *newAttr);
+ QDomAttrPrivate *setAttributeNodeNS(QDomAttrPrivate *newAttr);
+ QDomAttrPrivate *removeAttributeNode(QDomAttrPrivate *oldAttr);
+ bool hasAttribute(const QString &name);
+ bool hasAttributeNS(const QString &nsURI, const QString &localName);
+
+ QString text();
+
+ // Reimplemented from QDomNodePrivate
+ QDomNamedNodeMapPrivate *attributes() { return m_attr; }
+ bool hasAttributes() { return (m_attr->length() > 0); }
+ QDomNode::NodeType nodeType() const override { return QDomNode::ElementNode; }
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QDomNamedNodeMapPrivate *m_attr;
+};
+
+class QDomCommentPrivate : public QDomCharacterDataPrivate
+{
+public:
+ QDomCommentPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomCommentPrivate(QDomCommentPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::CommentNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomCDATASectionPrivate : public QDomTextPrivate
+{
+public:
+ QDomCDATASectionPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &val);
+ QDomCDATASectionPrivate(QDomCDATASectionPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::CDATASectionNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomNotationPrivate : public QDomNodePrivate
+{
+public:
+ QDomNotationPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name,
+ const QString &pub, const QString &sys);
+ QDomNotationPrivate(QDomNotationPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::NotationNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QString m_sys;
+ QString m_pub;
+};
+
+class QDomEntityPrivate : public QDomNodePrivate
+{
+public:
+ QDomEntityPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name,
+ const QString &pub, const QString &sys, const QString &notation);
+ QDomEntityPrivate(QDomEntityPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::EntityNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+
+ // Variables
+ QString m_sys;
+ QString m_pub;
+ QString m_notationName;
+};
+
+class QDomEntityReferencePrivate : public QDomNodePrivate
+{
+public:
+ QDomEntityReferencePrivate(QDomDocumentPrivate *, QDomNodePrivate *parent, const QString &name);
+ QDomEntityReferencePrivate(QDomNodePrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::EntityReferenceNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomProcessingInstructionPrivate : public QDomNodePrivate
+{
+public:
+ QDomProcessingInstructionPrivate(QDomDocumentPrivate *, QDomNodePrivate *parent,
+ const QString &target, const QString &data);
+ QDomProcessingInstructionPrivate(QDomProcessingInstructionPrivate *n, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::ProcessingInstructionNode; }
+ virtual void save(QTextStream &s, int, int) const override;
+};
+
+class QDomDocumentPrivate : public QDomNodePrivate
+{
+public:
+ QDomDocumentPrivate();
+ QDomDocumentPrivate(const QString &name);
+ QDomDocumentPrivate(QDomDocumentTypePrivate *dt);
+ QDomDocumentPrivate(QDomDocumentPrivate *n, bool deep);
+ ~QDomDocumentPrivate();
+
+ bool setContent(QXmlInputSource *source, bool namespaceProcessing, QString *errorMsg,
+ int *errorLine, int *errorColumn);
+ bool setContent(QXmlInputSource *source, QXmlReader *reader, QXmlSimpleReader *simpleReader,
+ QString *errorMsg, int *errorLine, int *errorColumn);
+
+ // Attributes
+ QDomDocumentTypePrivate *doctype() { return type.data(); }
+ QDomImplementationPrivate *implementation() { return impl.data(); }
+ QDomElementPrivate *documentElement();
+
+ // Factories
+ QDomElementPrivate *createElement(const QString &tagName);
+ QDomElementPrivate *createElementNS(const QString &nsURI, const QString &qName);
+ QDomDocumentFragmentPrivate *createDocumentFragment();
+ QDomTextPrivate *createTextNode(const QString &data);
+ QDomCommentPrivate *createComment(const QString &data);
+ QDomCDATASectionPrivate *createCDATASection(const QString &data);
+ QDomProcessingInstructionPrivate *createProcessingInstruction(const QString &target,
+ const QString &data);
+ QDomAttrPrivate *createAttribute(const QString &name);
+ QDomAttrPrivate *createAttributeNS(const QString &nsURI, const QString &qName);
+ QDomEntityReferencePrivate *createEntityReference(const QString &name);
+
+ QDomNodePrivate *importNode(QDomNodePrivate *importedNode, bool deep);
+
+ // Reimplemented from QDomNodePrivate
+ QDomNodePrivate *cloneNode(bool deep = true) override;
+ QDomNode::NodeType nodeType() const override { return QDomNode::DocumentNode; }
+ void clear() override;
+
+ // Variables
+ QExplicitlySharedDataPointer<QDomImplementationPrivate> impl;
+ QExplicitlySharedDataPointer<QDomDocumentTypePrivate> type;
+
+ void saveDocument(QTextStream &stream, const int indent,
+ QDomNode::EncodingPolicy encUsed) const;
+
+ /* \internal
+ Counter for the QDomNodeListPrivate timestamps.
+
+ This is a cache optimization, that might in some cases be effective. The
+ dilemma is that QDomNode::childNodes() returns a list, but the
+ implementation stores the children in a linked list. Hence, in order to
+ get the children out through childNodes(), a list must be populated each
+ time, which is O(N).
+
+ DOM has the requirement of node references being live, see DOM Core
+ Level 3, 1.1.1 The DOM Structure Model, which means that changes to the
+ underlying documents must be reflected in node lists.
+
+ This mechanism, nodeListTime, is a caching optimization that reduces the
+ amount of times the node list is rebuilt, by only doing so when the
+ document actually changes. However, a change to anywhere in any document
+ invalidate all lists, since no dependency tracking is done.
+
+ It functions by that all modifying functions(insertBefore() and so on)
+ increment the count; each QDomNodeListPrivate copies nodeListTime on
+ construction, and compares its own value to nodeListTime in order to
+ determine whether it needs to rebuild.
+
+ This is reentrant. The nodeListTime may overflow, but that's ok since we
+ check for equalness, not whether nodeListTime is smaller than the list's
+ stored timestamp.
+ */
+ long nodeListTime;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDOMHELPERS_P_H
diff --git a/src/xml/dom/qdomhelpers.cpp b/src/xml/dom/qdomhelpers.cpp
new file mode 100644
index 0000000000..74d2c8c124
--- /dev/null
+++ b/src/xml/dom/qdomhelpers.cpp
@@ -0,0 +1,247 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdomhelpers_p.h"
+#include "qdom_p.h"
+#include "private/qxml_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/**************************************************************
+ *
+ * QDomHandler
+ *
+ **************************************************************/
+
+QDomHandler::QDomHandler(QDomDocumentPrivate *adoc, QXmlSimpleReader *areader,
+ bool namespaceProcessing)
+ : errorLine(0),
+ errorColumn(0),
+ doc(adoc),
+ node(adoc),
+ cdata(false),
+ nsProcessing(namespaceProcessing),
+ locator(nullptr),
+ reader(areader)
+{
+}
+
+QDomHandler::~QDomHandler() {}
+
+bool QDomHandler::endDocument()
+{
+ // ### is this really necessary? (rms)
+ if (node != doc)
+ return false;
+ return true;
+}
+
+bool QDomHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId)
+{
+ doc->doctype()->name = name;
+ doc->doctype()->publicId = publicId;
+ doc->doctype()->systemId = systemId;
+ return true;
+}
+
+bool QDomHandler::startElement(const QString &nsURI, const QString &, const QString &qName,
+ const QXmlAttributes &atts)
+{
+ // tag name
+ QDomNodePrivate *n;
+ if (nsProcessing) {
+ n = doc->createElementNS(nsURI, qName);
+ } else {
+ n = doc->createElement(qName);
+ }
+
+ if (!n)
+ return false;
+
+ n->setLocation(locator->lineNumber(), locator->columnNumber());
+
+ node->appendChild(n);
+ node = n;
+
+ // attributes
+ for (int i = 0; i < atts.length(); i++) {
+ if (nsProcessing) {
+ ((QDomElementPrivate *)node)->setAttributeNS(atts.uri(i), atts.qName(i), atts.value(i));
+ } else {
+ ((QDomElementPrivate *)node)->setAttribute(atts.qName(i), atts.value(i));
+ }
+ }
+
+ return true;
+}
+
+bool QDomHandler::endElement(const QString &, const QString &, const QString &)
+{
+ if (!node || node == doc)
+ return false;
+ node = node->parent();
+
+ return true;
+}
+
+bool QDomHandler::characters(const QString &ch)
+{
+ // No text as child of some document
+ if (node == doc)
+ return false;
+
+ QScopedPointer<QDomNodePrivate> n;
+ if (cdata) {
+ n.reset(doc->createCDATASection(ch));
+ } else if (!entityName.isEmpty()) {
+ QScopedPointer<QDomEntityPrivate> e(
+ new QDomEntityPrivate(doc, nullptr, entityName, QString(), QString(), QString()));
+ e->value = ch;
+ e->ref.deref();
+ doc->doctype()->appendChild(e.data());
+ e.take();
+ n.reset(doc->createEntityReference(entityName));
+ } else {
+ n.reset(doc->createTextNode(ch));
+ }
+ n->setLocation(locator->lineNumber(), locator->columnNumber());
+ node->appendChild(n.data());
+ n.take();
+
+ return true;
+}
+
+bool QDomHandler::processingInstruction(const QString &target, const QString &data)
+{
+ QDomNodePrivate *n;
+ n = doc->createProcessingInstruction(target, data);
+ if (n) {
+ n->setLocation(locator->lineNumber(), locator->columnNumber());
+ node->appendChild(n);
+ return true;
+ } else
+ return false;
+}
+
+bool QDomHandler::skippedEntity(const QString &name)
+{
+ // we can only handle inserting entity references into content
+ if (reader && !reader->d_ptr->skipped_entity_in_content)
+ return true;
+
+ QDomNodePrivate *n = doc->createEntityReference(name);
+ n->setLocation(locator->lineNumber(), locator->columnNumber());
+ node->appendChild(n);
+ return true;
+}
+
+bool QDomHandler::fatalError(const QXmlParseException &exception)
+{
+ errorMsg = exception.message();
+ errorLine = exception.lineNumber();
+ errorColumn = exception.columnNumber();
+ return QXmlDefaultHandler::fatalError(exception);
+}
+
+bool QDomHandler::startCDATA()
+{
+ cdata = true;
+ return true;
+}
+
+bool QDomHandler::endCDATA()
+{
+ cdata = false;
+ return true;
+}
+
+bool QDomHandler::startEntity(const QString &name)
+{
+ entityName = name;
+ return true;
+}
+
+bool QDomHandler::endEntity(const QString &)
+{
+ entityName.clear();
+ return true;
+}
+
+bool QDomHandler::comment(const QString &ch)
+{
+ QDomNodePrivate *n;
+ n = doc->createComment(ch);
+ n->setLocation(locator->lineNumber(), locator->columnNumber());
+ node->appendChild(n);
+ return true;
+}
+
+bool QDomHandler::unparsedEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId, const QString &notationName)
+{
+ QDomEntityPrivate *e =
+ new QDomEntityPrivate(doc, nullptr, name, publicId, systemId, notationName);
+ // keep the refcount balanced: appendChild() does a ref anyway.
+ e->ref.deref();
+ doc->doctype()->appendChild(e);
+ return true;
+}
+
+bool QDomHandler::externalEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ return unparsedEntityDecl(name, publicId, systemId, QString());
+}
+
+bool QDomHandler::notationDecl(const QString &name, const QString &publicId,
+ const QString &systemId)
+{
+ QDomNotationPrivate *n = new QDomNotationPrivate(doc, nullptr, name, publicId, systemId);
+ // keep the refcount balanced: appendChild() does a ref anyway.
+ n->ref.deref();
+ doc->doctype()->appendChild(n);
+ return true;
+}
+
+void QDomHandler::setDocumentLocator(QXmlLocator *locator)
+{
+ this->locator = locator;
+}
+
+QT_END_NAMESPACE
diff --git a/src/xml/dom/qdomhelpers_p.h b/src/xml/dom/qdomhelpers_p.h
new file mode 100644
index 0000000000..ee81f1f9ce
--- /dev/null
+++ b/src/xml/dom/qdomhelpers_p.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtXml module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QDOMHELPERS_P_H
+#define QDOMHELPERS_P_H
+
+#include <qglobal.h>
+#include <qxml.h>
+
+QT_BEGIN_NAMESPACE
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience of
+// qxml.cpp and qdom.cpp. This header file may change from version to version without
+// notice, or even be removed.
+//
+// We mean it.
+//
+
+class QDomDocumentPrivate;
+class QDomNodePrivate;
+
+/**************************************************************
+ *
+ * QDomHandler
+ *
+ **************************************************************/
+
+class QDomHandler : public QXmlDefaultHandler
+{
+public:
+ QDomHandler(QDomDocumentPrivate *d, QXmlSimpleReader *reader, bool namespaceProcessing);
+ ~QDomHandler();
+
+ // content handler
+ bool endDocument() override;
+ bool startElement(const QString &nsURI, const QString &localName, const QString &qName,
+ const QXmlAttributes &atts) override;
+ bool endElement(const QString &nsURI, const QString &localName, const QString &qName) override;
+ bool characters(const QString &ch) override;
+ bool processingInstruction(const QString &target, const QString &data) override;
+ bool skippedEntity(const QString &name) override;
+
+ // error handler
+ bool fatalError(const QXmlParseException &exception) override;
+
+ // lexical handler
+ bool startCDATA() override;
+ bool endCDATA() override;
+ bool startEntity(const QString &) override;
+ bool endEntity(const QString &) override;
+ bool startDTD(const QString &name, const QString &publicId, const QString &systemId) override;
+ bool comment(const QString &ch) override;
+
+ // decl handler
+ bool externalEntityDecl(const QString &name, const QString &publicId,
+ const QString &systemId) override;
+
+ // DTD handler
+ bool notationDecl(const QString &name, const QString &publicId,
+ const QString &systemId) override;
+ bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId,
+ const QString &notationName) override;
+
+ void setDocumentLocator(QXmlLocator *locator) override;
+
+ QString errorMsg;
+ int errorLine;
+ int errorColumn;
+
+private:
+ QDomDocumentPrivate *doc;
+ QDomNodePrivate *node;
+ QString entityName;
+ bool cdata;
+ bool nsProcessing;
+ QXmlLocator *locator;
+ QXmlSimpleReader *reader;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDOMHELPERS_P_H