diff --git a/cocos/scripting/lua-bindings/CMakeLists.txt b/cocos/scripting/lua-bindings/CMakeLists.txt index 4fa9a9f766..aa4ede0df1 100644 --- a/cocos/scripting/lua-bindings/CMakeLists.txt +++ b/cocos/scripting/lua-bindings/CMakeLists.txt @@ -42,6 +42,7 @@ if(MACOSX) ${cocos_root}/external/lua/luasocket/inet.c ${cocos_root}/external/lua/luasocket/io.c ${cocos_root}/external/lua/luasocket/luasocket.c + ${cocos_root}/external/lua/luasocket/luasocket_scripts.c ${cocos_root}/external/lua/luasocket/mime.c ${cocos_root}/external/lua/luasocket/options.c ${cocos_root}/external/lua/luasocket/select.c diff --git a/cocos/scripting/lua-bindings/manual/network/lua_extensions.c b/cocos/scripting/lua-bindings/manual/network/lua_extensions.c index 986036c640..2dccce23c5 100644 --- a/cocos/scripting/lua-bindings/manual/network/lua_extensions.c +++ b/cocos/scripting/lua-bindings/manual/network/lua_extensions.c @@ -6,6 +6,7 @@ extern "C" { #endif // socket #include "luasocket/luasocket.h" +#include "luasocket/luasocket_scripts.h" #include "luasocket/mime.h" static luaL_Reg luax_exts[] = { @@ -26,6 +27,8 @@ void luaopen_lua_extensions(lua_State *L) lua_setfield(L, -2, lib->name); } lua_pop(L, 2); + + luaopen_luasocket_scripts(L); } #if __cplusplus diff --git a/cocos/scripting/lua-bindings/proj.android/Android.mk b/cocos/scripting/lua-bindings/proj.android/Android.mk index 738ca92611..debbd280f2 100644 --- a/cocos/scripting/lua-bindings/proj.android/Android.mk +++ b/cocos/scripting/lua-bindings/proj.android/Android.mk @@ -51,6 +51,7 @@ LOCAL_SRC_FILES += ../manual/network/lua_cocos2dx_network_manual.cpp \ ../../../../external/lua/luasocket/inet.c \ ../../../../external/lua/luasocket/io.c \ ../../../../external/lua/luasocket/luasocket.c \ + ../../../../external/lua/luasocket/luasocket_scripts.c \ ../../../../external/lua/luasocket/mime.c \ ../../../../external/lua/luasocket/options.c \ ../../../../external/lua/luasocket/select.c \ @@ -76,13 +77,19 @@ LOCAL_SRC_FILES += ../manual/spine/lua_cocos2dx_spine_manual.cpp \ ../manual/spine/LuaSkeletonAnimation.cpp \ ../auto/lua_cocos2dx_spine_auto.cpp - #ui LOCAL_SRC_FILES += ../manual/ui/lua_cocos2dx_experimental_video_manual.cpp \ ../manual/ui/lua_cocos2dx_ui_manual.cpp \ ../auto/lua_cocos2dx_experimental_video_auto.cpp \ ../auto/lua_cocos2dx_ui_auto.cpp +#quick +LOCAL_SRC_FILES += ../../../../external/lua/quick/lua_cocos2dx_quick_manual.cpp \ + ../../../../external/lua/quick/LuaEventNode.cpp \ + ../../../../external/lua/quick/LuaNodeManager.cpp \ + ../../../../external/lua/quick/LuaTouchEventManager.cpp \ + ../../../../external/lua/quick/LuaTouchTargetNode.cpp + #extension LOCAL_SRC_FILES += ../manual/extension/lua_cocos2dx_extension_manual.cpp \ ../auto/lua_cocos2dx_extension_auto.cpp \ @@ -113,7 +120,8 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../external/lua/tolua \ $(LOCAL_PATH)/../manual/platform/android/jni \ $(LOCAL_PATH)/../../../../external/xxtea \ $(LOCAL_PATH)/../../../.. \ - $(LOCAL_PATH)/../../../../external/lua + $(LOCAL_PATH)/../../../../external/lua \ + $(LOCAL_PATH)/../../../../external/lua/quick @@ -131,6 +139,7 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../external/lua/tolua \ $(LOCAL_PATH)/../manual/spine \ $(LOCAL_PATH)/../manual/extension \ $(LOCAL_PATH)/../manual/ui \ + $(LOCAL_PATH)/../../../../external/lua/quick \ $(LOCAL_PATH)/../../../.. diff --git a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj index 85095f3068..d1ebf2ed11 100644 --- a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj +++ b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj @@ -248,6 +248,30 @@ 566F016019B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 566F015D19B5EB0F00FCA620 /* CustomGUIReader.cpp */; }; 566F016119B5EB0F00FCA620 /* CustomGUIReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */; }; 566F016219B5EB0F00FCA620 /* CustomGUIReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */; }; + F4FE0D5719ECD00100B8B12B /* luasocket_scripts.c in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */; }; + F4FE0D5819ECD00100B8B12B /* luasocket_scripts.c in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */; }; + F4FE0D5919ECD00100B8B12B /* luasocket_scripts.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */; }; + F4FE0D5A19ECD00100B8B12B /* luasocket_scripts.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */; }; + F4FE0D6619ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */; }; + F4FE0D6719ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */; }; + F4FE0D6819ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */; }; + F4FE0D6919ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */; }; + F4FE0D6A19ECD02400B8B12B /* LuaEventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */; }; + F4FE0D6B19ECD02400B8B12B /* LuaEventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */; }; + F4FE0D6C19ECD02400B8B12B /* LuaEventNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */; }; + F4FE0D6D19ECD02400B8B12B /* LuaEventNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */; }; + F4FE0D6E19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */; }; + F4FE0D6F19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */; }; + F4FE0D7019ECD02400B8B12B /* LuaNodeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */; }; + F4FE0D7119ECD02400B8B12B /* LuaNodeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */; }; + F4FE0D7219ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */; }; + F4FE0D7319ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */; }; + F4FE0D7419ECD02400B8B12B /* LuaTouchEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */; }; + F4FE0D7519ECD02400B8B12B /* LuaTouchEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */; }; + F4FE0D7619ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */; }; + F4FE0D7719ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */; }; + F4FE0D7819ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */; }; + F4FE0D7919ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -383,6 +407,18 @@ 566F015D19B5EB0F00FCA620 /* CustomGUIReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CustomGUIReader.cpp; sourceTree = ""; }; 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomGUIReader.h; sourceTree = ""; }; C0D9BAFA1974D30000EC35BB /* liblua.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblua.a; path = ../../../../external/lua/lua/prebuilt/ios/liblua.a; sourceTree = ""; }; + F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = luasocket_scripts.c; sourceTree = ""; }; + F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = luasocket_scripts.h; sourceTree = ""; }; + F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_cocos2dx_quick_manual.cpp; sourceTree = ""; }; + F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua_cocos2dx_quick_manual.hpp; sourceTree = ""; }; + F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaEventNode.cpp; sourceTree = ""; }; + F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaEventNode.h; sourceTree = ""; }; + F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaNodeManager.cpp; sourceTree = ""; }; + F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaNodeManager.h; sourceTree = ""; }; + F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaTouchEventManager.cpp; sourceTree = ""; }; + F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaTouchEventManager.h; sourceTree = ""; }; + F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaTouchTargetNode.cpp; sourceTree = ""; }; + F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaTouchTargetNode.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -618,10 +654,11 @@ 1ABCA1E218CD8F230087CE3A /* external */ = { isa = PBXGroup; children = ( - 1540AF54193EC30500717D8E /* xxtea */, 1ABCA1E318CD8F2D0087CE3A /* luajit */, 1ABCA20E18CD8F7D0087CE3A /* luasocket */, + F4FE0D5B19ECD02400B8B12B /* quick */, 1ABCA1E418CD8F330087CE3A /* tolua */, + 1540AF54193EC30500717D8E /* xxtea */, ); name = external; sourceTree = ""; @@ -693,6 +730,8 @@ 15415A8E19A71A53004F1E71 /* inet.h */, 15415A8F19A71A53004F1E71 /* io.c */, 15415A9019A71A53004F1E71 /* io.h */, + F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */, + F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */, 15415A9119A71A53004F1E71 /* luasocket.c */, 15415A9219A71A53004F1E71 /* luasocket.h */, 15415A9319A71A53004F1E71 /* mime.c */, @@ -727,6 +766,24 @@ path = audioengine; sourceTree = ""; }; + F4FE0D5B19ECD02400B8B12B /* quick */ = { + isa = PBXGroup; + children = ( + F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */, + F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */, + F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */, + F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */, + F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */, + F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */, + F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */, + F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */, + F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */, + F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */, + ); + name = quick; + path = ../../../../external/lua/quick; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -752,6 +809,7 @@ 15AC69DF1987711400D17520 /* lua.h in Headers */, 15AC69E01987711400D17520 /* luaconf.h in Headers */, 155C7DF819A71C4400F08B25 /* lua_cocos2dx_cocosdenshion_manual.h in Headers */, + F4FE0D7419ECD02400B8B12B /* LuaTouchEventManager.h in Headers */, 15415AAF19A71A53004F1E71 /* except.h in Headers */, 150906F319D556D1002C4D97 /* lua_cocos2dx_audioengine_manual.h in Headers */, 155C7E0419A71C6D00F08B25 /* lua_cocos2dx_cocosbuilder_manual.h in Headers */, @@ -777,7 +835,10 @@ 15C1C2D5198749BC00A46ACC /* LuaOpengl.h in Headers */, 155C7E2819A71CE600F08B25 /* lua_cocos2dx_ui_manual.hpp in Headers */, 15C1C2D6198749BC00A46ACC /* lua_cocos2dx_deprecated.h in Headers */, + F4FE0D6C19ECD02400B8B12B /* LuaEventNode.h in Headers */, 15C1C2D7198749BC00A46ACC /* lua_cocos2dx_experimental_manual.hpp in Headers */, + F4FE0D7019ECD02400B8B12B /* LuaNodeManager.h in Headers */, + F4FE0D6819ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */, 15C1C2D8198749BC00A46ACC /* lua_cocos2dx_manual.hpp in Headers */, 155C7E0819A71C7B00F08B25 /* lua_cocos2dx_extension_manual.h in Headers */, 155C7E1819A71CB300F08B25 /* lua_xml_http_request.h in Headers */, @@ -786,10 +847,12 @@ 15C1C2DA198749BC00A46ACC /* LuaScriptHandlerMgr.h in Headers */, 15AC69D619876EA200D17520 /* lua_cocos2dx_physics_auto.hpp in Headers */, 155C7E0019A71C6000F08B25 /* CCBProxy.h in Headers */, + F4FE0D7819ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */, 15415AC719A71A53004F1E71 /* select.h in Headers */, 155C7E1C19A71CC200F08B25 /* lua_cocos2dx_spine_manual.hpp in Headers */, 15C1C2D41987499F00A46ACC /* lua_cocos2dx_auto.hpp in Headers */, 150906F119D556C8002C4D97 /* lua_cocos2dx_audioengine_auto.hpp in Headers */, + F4FE0D5919ECD00100B8B12B /* luasocket_scripts.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -815,6 +878,7 @@ 15EFA64B198B3320000C57D3 /* tolua_event.h in Headers */, 15EFA64C198B3320000C57D3 /* tolua++.h in Headers */, 155C7DF919A71C4500F08B25 /* lua_cocos2dx_cocosdenshion_manual.h in Headers */, + F4FE0D7519ECD02400B8B12B /* LuaTouchEventManager.h in Headers */, 15415AB019A71A53004F1E71 /* except.h in Headers */, 3E2BDB0B19C5E6100055CDCD /* lua_cocos2dx_audioengine_manual.h in Headers */, 155C7E0519A71C6F00F08B25 /* lua_cocos2dx_cocosbuilder_manual.h in Headers */, @@ -840,7 +904,10 @@ 15EFA62C198B3220000C57D3 /* lua_cocos2dx_deprecated.h in Headers */, 155C7E2919A71CE800F08B25 /* lua_cocos2dx_ui_manual.hpp in Headers */, 15EFA62D198B3220000C57D3 /* lua_cocos2dx_experimental_manual.hpp in Headers */, + F4FE0D6D19ECD02400B8B12B /* LuaEventNode.h in Headers */, 15EFA62E198B3220000C57D3 /* lua_cocos2dx_manual.hpp in Headers */, + F4FE0D7119ECD02400B8B12B /* LuaNodeManager.h in Headers */, + F4FE0D6919ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */, 15EFA62F198B3220000C57D3 /* lua_cocos2dx_physics_manual.hpp in Headers */, 155C7E0919A71C8500F08B25 /* lua_cocos2dx_extension_manual.h in Headers */, 155C7E1919A71CB500F08B25 /* lua_xml_http_request.h in Headers */, @@ -849,10 +916,12 @@ 15EFA622198B2E74000C57D3 /* lua_cocos2dx_experimental_auto.hpp in Headers */, 15EFA623198B2E74000C57D3 /* lua_cocos2dx_auto.hpp in Headers */, 155C7E0119A71C6300F08B25 /* CCBProxy.h in Headers */, + F4FE0D7919ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */, 15415AC819A71A53004F1E71 /* select.h in Headers */, 155C7E1D19A71CC300F08B25 /* lua_cocos2dx_spine_manual.hpp in Headers */, 15EFA624198B2E74000C57D3 /* lua_cocos2dx_physics_auto.hpp in Headers */, 3E2BDB0619C5E5FE0055CDCD /* lua_cocos2dx_audioengine_auto.hpp in Headers */, + F4FE0D5A19ECD00100B8B12B /* luasocket_scripts.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -947,6 +1016,7 @@ 155C7E1619A71CAD00F08B25 /* lua_xml_http_request.cpp in Sources */, 15C1C2E419874C7C00A46ACC /* tolua_fix.cpp in Sources */, 15C1C2E219874BA100A46ACC /* LuaBasicConversions.cpp in Sources */, + F4FE0D5719ECD00100B8B12B /* luasocket_scripts.c in Sources */, 15415AC519A71A53004F1E71 /* select.c in Sources */, 155C7DFE19A71C5A00F08B25 /* CCBProxy.cpp in Sources */, 15415AD919A71A53004F1E71 /* unix.c in Sources */, @@ -956,6 +1026,8 @@ 15415AC919A71A53004F1E71 /* serial.c in Sources */, 155C7E0219A71C6700F08B25 /* lua_cocos2dx_cocosbuilder_manual.cpp in Sources */, 15C1C2DF19874B8800A46ACC /* CCLuaStack.cpp in Sources */, + F4FE0D6619ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */, + F4FE0D6E19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */, 15C1C2E019874B8800A46ACC /* CCLuaValue.cpp in Sources */, 155C7DF219A71C3200F08B25 /* lua_cocos2dx_3d_manual.cpp in Sources */, 15415AB119A71A53004F1E71 /* inet.c in Sources */, @@ -970,12 +1042,15 @@ 566F015F19B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */, 15415AC119A71A53004F1E71 /* options.c in Sources */, 150906F019D556C5002C4D97 /* lua_cocos2dx_audioengine_auto.cpp in Sources */, + F4FE0D7619ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */, 155C7E0A19A71C8B00F08B25 /* lua_cocos2dx_network_manual.cpp in Sources */, 15415AD119A71A53004F1E71 /* timeout.c in Sources */, 15C1C2CF1987498B00A46ACC /* lua_cocos2dx_deprecated.cpp in Sources */, 155C7E2219A71CD300F08B25 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */, 155C7DFA19A71C4C00F08B25 /* lua_cocos2dx_coco_studio_manual.cpp in Sources */, 155C7E2619A71CDD00F08B25 /* lua_cocos2dx_ui_manual.cpp in Sources */, + F4FE0D6A19ECD02400B8B12B /* LuaEventNode.cpp in Sources */, + F4FE0D7219ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */, 15415A7019A71768004F1E71 /* lua_cocos2dx_extension_auto.cpp in Sources */, 155C7DF619A71C3E00F08B25 /* lua_cocos2dx_cocosdenshion_manual.cpp in Sources */, 15415AA519A71A53004F1E71 /* auxiliar.c in Sources */, @@ -1017,6 +1092,7 @@ 155C7E1719A71CAF00F08B25 /* lua_xml_http_request.cpp in Sources */, 15415ACE19A71A53004F1E71 /* tcp.c in Sources */, 15415AD219A71A53004F1E71 /* timeout.c in Sources */, + F4FE0D5819ECD00100B8B12B /* luasocket_scripts.c in Sources */, 15EFA639198B328B000C57D3 /* tolua_fix.cpp in Sources */, 155C7DFF19A71C5C00F08B25 /* CCBProxy.cpp in Sources */, 155C7DF019A71C1E00F08B25 /* lua_cocos2dx_spine_auto.cpp in Sources */, @@ -1026,6 +1102,8 @@ 15EFA627198B31FB000C57D3 /* lua_cocos2dx_experimental_manual.cpp in Sources */, 155C7E0319A71C6900F08B25 /* lua_cocos2dx_cocosbuilder_manual.cpp in Sources */, 15415ABE19A71A53004F1E71 /* mime.c in Sources */, + F4FE0D6719ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */, + F4FE0D6F19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */, 15415ADA19A71A53004F1E71 /* unix.c in Sources */, 155C7DF319A71C3400F08B25 /* lua_cocos2dx_3d_manual.cpp in Sources */, 15415ADE19A71A53004F1E71 /* usocket.c in Sources */, @@ -1040,12 +1118,15 @@ 566F016019B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */, 155C7DF119A71C2300F08B25 /* lua_cocos2dx_studio_auto.cpp in Sources */, 3E2BDB0519C5E5FE0055CDCD /* lua_cocos2dx_audioengine_auto.cpp in Sources */, + F4FE0D7719ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */, 155C7E0B19A71C8D00F08B25 /* lua_cocos2dx_network_manual.cpp in Sources */, 15415AAE19A71A53004F1E71 /* except.c in Sources */, 15415AAA19A71A53004F1E71 /* buffer.c in Sources */, 155C7E2319A71CD500F08B25 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */, 155C7DFB19A71C4E00F08B25 /* lua_cocos2dx_coco_studio_manual.cpp in Sources */, 155C7E2719A71CDE00F08B25 /* lua_cocos2dx_ui_manual.cpp in Sources */, + F4FE0D6B19ECD02400B8B12B /* LuaEventNode.cpp in Sources */, + F4FE0D7319ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */, 15415AB619A71A53004F1E71 /* io.c in Sources */, 155C7DF719A71C4000F08B25 /* lua_cocos2dx_cocosdenshion_manual.cpp in Sources */, 155C7DEF19A71C0900F08B25 /* lua_cocos2dx_ui_auto.cpp in Sources */, diff --git a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj index d5ddaf47ac..1270229906 100644 --- a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj +++ b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj @@ -1,4 +1,4 @@ - + @@ -17,6 +17,7 @@ + @@ -24,6 +25,11 @@ + + + + + @@ -81,6 +87,7 @@ + @@ -89,6 +96,11 @@ + + + + + @@ -318,4 +330,4 @@ xcopy /Y /Q "$(ProjectDir)..\..\..\..\external\lua\luajit\prebuilt\win32\*.*" "$ - + \ No newline at end of file diff --git a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters index 1f8c61573d..6342a52931 100644 --- a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters +++ b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters @@ -70,6 +70,9 @@ {617e3909-01ff-4c11-bae5-790787963c34} + + {e6d6c5da-e7da-40cf-bde0-f383f9dd9dbe} + @@ -222,6 +225,9 @@ luasocket + + luasocket + luasocket @@ -246,6 +252,21 @@ manual\cocostudio + + quick + + + quick + + + quick + + + quick + + + quick + @@ -401,6 +422,9 @@ luasocket + + luasocket + luasocket @@ -428,6 +452,21 @@ manual\cocostudio + + quick + + + quick + + + quick + + + quick + + + quick + diff --git a/external/lua/luasocket/luasocket_scripts.c b/external/lua/luasocket/luasocket_scripts.c new file mode 100644 index 0000000000..a9b15453cb --- /dev/null +++ b/external/lua/luasocket/luasocket_scripts.c @@ -0,0 +1,2195 @@ + +/* luasocket_scripts.c */ + +#include "lua.h" +#include "lauxlib.h" +#include "luasocket_scripts.h" + +/* ltn12 */ +static const char *lua_m_ltn12 = +"-----------------------------------------------------------------------------\n" +"-- LTN12 - Filters, sources, sinks and pumps.\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module\n" +"-----------------------------------------------------------------------------\n" +"local string = require(\"string\")\n" +"local table = require(\"table\")\n" +"local base = _G\n" +"local _M = {}\n" +"if module then -- heuristic for exporting a global package table\n" +" ltn12 = _M\n" +"end\n" +"local filter,source,sink,pump = {},{},{},{}\n" +"\n" +"_M.filter = filter\n" +"_M.source = source\n" +"_M.sink = sink\n" +"_M.pump = pump\n" +"\n" +"-- 2048 seems to be better in windows...\n" +"_M.BLOCKSIZE = 2048\n" +"_M._VERSION = \"LTN12 1.0.3\"\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Filter stuff\n" +"-----------------------------------------------------------------------------\n" +"-- returns a high level filter that cycles a low-level filter\n" +"function filter.cycle(low, ctx, extra)\n" +" base.assert(low)\n" +" return function(chunk)\n" +" local ret\n" +" ret, ctx = low(ctx, chunk, extra)\n" +" return ret\n" +" end\n" +"end\n" +"\n" +"-- chains a bunch of filters together\n" +"-- (thanks to Wim Couwenberg)\n" +"function filter.chain(...)\n" +" local arg = {...}\n" +" local n = select('#',...)\n" +" local top, index = 1, 1\n" +" local retry = \"\"\n" +" return function(chunk)\n" +" retry = chunk and retry\n" +" while true do\n" +" if index == top then\n" +" chunk = arg[index](chunk)\n" +" if chunk == \"\" or top == n then return chunk\n" +" elseif chunk then index = index + 1\n" +" else\n" +" top = top+1\n" +" index = top\n" +" end\n" +" else\n" +" chunk = arg[index](chunk or \"\")\n" +" if chunk == \"\" then\n" +" index = index - 1\n" +" chunk = retry\n" +" elseif chunk then\n" +" if index == n then return chunk\n" +" else index = index + 1 end\n" +" else base.error(\"filter returned inappropriate nil\") end\n" +" end\n" +" end\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Source stuff\n" +"-----------------------------------------------------------------------------\n" +"-- create an empty source\n" +"local function empty()\n" +" return nil\n" +"end\n" +"\n" +"function source.empty()\n" +" return empty\n" +"end\n" +"\n" +"-- returns a source that just outputs an error\n" +"function source.error(err)\n" +" return function()\n" +" return nil, err\n" +" end\n" +"end\n" +"\n" +"-- creates a file source\n" +"function source.file(handle, io_err)\n" +" if handle then\n" +" return function()\n" +" local chunk = handle:read(_M.BLOCKSIZE)\n" +" if not chunk then handle:close() end\n" +" return chunk\n" +" end\n" +" else return source.error(io_err or \"unable to open file\") end\n" +"end\n" +"\n" +"-- turns a fancy source into a simple source\n" +"function source.simplify(src)\n" +" base.assert(src)\n" +" return function()\n" +" local chunk, err_or_new = src()\n" +" src = err_or_new or src\n" +" if not chunk then return nil, err_or_new\n" +" else return chunk end\n" +" end\n" +"end\n" +"\n" +"-- creates string source\n" +"function source.string(s)\n" +" if s then\n" +" local i = 1\n" +" return function()\n" +" local chunk = string.sub(s, i, i+_M.BLOCKSIZE-1)\n" +" i = i + _M.BLOCKSIZE\n" +" if chunk ~= \"\" then return chunk\n" +" else return nil end\n" +" end\n" +" else return source.empty() end\n" +"end\n" +"\n" +"-- creates rewindable source\n" +"function source.rewind(src)\n" +" base.assert(src)\n" +" local t = {}\n" +" return function(chunk)\n" +" if not chunk then\n" +" chunk = table.remove(t)\n" +" if not chunk then return src()\n" +" else return chunk end\n" +" else\n" +" table.insert(t, chunk)\n" +" end\n" +" end\n" +"end\n" +"\n" +"function source.chain(src, f)\n" +" base.assert(src and f)\n" +" local last_in, last_out = \"\", \"\"\n" +" local state = \"feeding\"\n" +" local err\n" +" return function()\n" +" if not last_out then\n" +" base.error('source is empty!', 2)\n" +" end\n" +" while true do\n" +" if state == \"feeding\" then\n" +" last_in, err = src()\n" +" if err then return nil, err end\n" +" last_out = f(last_in)\n" +" if not last_out then\n" +" if last_in then\n" +" base.error('filter returned inappropriate nil')\n" +" else\n" +" return nil\n" +" end\n" +" elseif last_out ~= \"\" then\n" +" state = \"eating\"\n" +" if last_in then last_in = \"\" end\n" +" return last_out\n" +" end\n" +" else\n" +" last_out = f(last_in)\n" +" if last_out == \"\" then\n" +" if last_in == \"\" then\n" +" state = \"feeding\"\n" +" else\n" +" base.error('filter returned \"\"')\n" +" end\n" +" elseif not last_out then\n" +" if last_in then\n" +" base.error('filter returned inappropriate nil')\n" +" else\n" +" return nil\n" +" end\n" +" else\n" +" return last_out\n" +" end\n" +" end\n" +" end\n" +" end\n" +"end\n" +"\n" +"-- creates a source that produces contents of several sources, one after the\n" +"-- other, as if they were concatenated\n" +"-- (thanks to Wim Couwenberg)\n" +"function source.cat(...)\n" +" local arg = {...}\n" +" local src = table.remove(arg, 1)\n" +" return function()\n" +" while src do\n" +" local chunk, err = src()\n" +" if chunk then return chunk end\n" +" if err then return nil, err end\n" +" src = table.remove(arg, 1)\n" +" end\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Sink stuff\n" +"-----------------------------------------------------------------------------\n" +"-- creates a sink that stores into a table\n" +"function sink.table(t)\n" +" t = t or {}\n" +" local f = function(chunk, err)\n" +" if chunk then table.insert(t, chunk) end\n" +" return 1\n" +" end\n" +" return f, t\n" +"end\n" +"\n" +"-- turns a fancy sink into a simple sink\n" +"function sink.simplify(snk)\n" +" base.assert(snk)\n" +" return function(chunk, err)\n" +" local ret, err_or_new = snk(chunk, err)\n" +" if not ret then return nil, err_or_new end\n" +" snk = err_or_new or snk\n" +" return 1\n" +" end\n" +"end\n" +"\n" +"-- creates a file sink\n" +"function sink.file(handle, io_err)\n" +" if handle then\n" +" return function(chunk, err)\n" +" if not chunk then\n" +" handle:close()\n" +" return 1\n" +" else return handle:write(chunk) end\n" +" end\n" +" else return sink.error(io_err or \"unable to open file\") end\n" +"end\n" +"\n" +"-- creates a sink that discards data\n" +"local function null()\n" +" return 1\n" +"end\n" +"\n" +"function sink.null()\n" +" return null\n" +"end\n" +"\n" +"-- creates a sink that just returns an error\n" +"function sink.error(err)\n" +" return function()\n" +" return nil, err\n" +" end\n" +"end\n" +"\n" +"-- chains a sink with a filter\n" +"function sink.chain(f, snk)\n" +" base.assert(f and snk)\n" +" return function(chunk, err)\n" +" if chunk ~= \"\" then\n" +" local filtered = f(chunk)\n" +" local done = chunk and \"\"\n" +" while true do\n" +" local ret, snkerr = snk(filtered, err)\n" +" if not ret then return nil, snkerr end\n" +" if filtered == done then return 1 end\n" +" filtered = f(done)\n" +" end\n" +" else return 1 end\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Pump stuff\n" +"-----------------------------------------------------------------------------\n" +"-- pumps one chunk from the source to the sink\n" +"function pump.step(src, snk)\n" +" local chunk, src_err = src()\n" +" local ret, snk_err = snk(chunk, src_err)\n" +" if chunk and ret then return 1\n" +" else return nil, src_err or snk_err end\n" +"end\n" +"\n" +"-- pumps all data from a source to a sink, using a step function\n" +"function pump.all(src, snk, step)\n" +" base.assert(src and snk)\n" +" step = step or pump.step\n" +" while true do\n" +" local ret, err = step(src, snk)\n" +" if not ret then\n" +" if err then return nil, err\n" +" else return 1 end\n" +" end\n" +" end\n" +"end\n" +"\n" +"return _M\n" +"\n"; + +/* mime */ +static const char *lua_m_mime = +"-----------------------------------------------------------------------------\n" +"-- MIME support for the Lua language.\n" +"-- Author: Diego Nehab\n" +"-- Conforming to RFCs 2045-2049\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-----------------------------------------------------------------------------\n" +"local base = _G\n" +"local ltn12 = require(\"ltn12\")\n" +"local mime = require(\"mime.core\")\n" +"local io = require(\"io\")\n" +"local string = require(\"string\")\n" +"local _M = mime\n" +"\n" +"-- encode, decode and wrap algorithm tables\n" +"local encodet, decodet, wrapt = {},{},{}\n" +"\n" +"_M.encodet = encodet\n" +"_M.decodet = decodet\n" +"_M.wrapt = wrapt \n" +"\n" +"-- creates a function that chooses a filter by name from a given table\n" +"local function choose(table)\n" +" return function(name, opt1, opt2)\n" +" if base.type(name) ~= \"string\" then\n" +" name, opt1, opt2 = \"default\", name, opt1\n" +" end\n" +" local f = table[name or \"nil\"]\n" +" if not f then \n" +" base.error(\"unknown key (\" .. base.tostring(name) .. \")\", 3)\n" +" else return f(opt1, opt2) end\n" +" end\n" +"end\n" +"\n" +"-- define the encoding filters\n" +"encodet['base64'] = function()\n" +" return ltn12.filter.cycle(_M.b64, \"\")\n" +"end\n" +"\n" +"encodet['quoted-printable'] = function(mode)\n" +" return ltn12.filter.cycle(_M.qp, \"\",\n" +" (mode == \"binary\") and \"=0D=0A\" or \"\r\n\")\n" +"end\n" +"\n" +"-- define the decoding filters\n" +"decodet['base64'] = function()\n" +" return ltn12.filter.cycle(_M.unb64, \"\")\n" +"end\n" +"\n" +"decodet['quoted-printable'] = function()\n" +" return ltn12.filter.cycle(_M.unqp, \"\")\n" +"end\n" +"\n" +"local function format(chunk)\n" +" if chunk then\n" +" if chunk == \"\" then return \"''\"\n" +" else return string.len(chunk) end\n" +" else return \"nil\" end\n" +"end\n" +"\n" +"-- define the line-wrap filters\n" +"wrapt['text'] = function(length)\n" +" length = length or 76\n" +" return ltn12.filter.cycle(_M.wrp, length, length)\n" +"end\n" +"wrapt['base64'] = wrapt['text']\n" +"wrapt['default'] = wrapt['text']\n" +"\n" +"wrapt['quoted-printable'] = function()\n" +" return ltn12.filter.cycle(_M.qpwrp, 76, 76)\n" +"end\n" +"\n" +"-- function that choose the encoding, decoding or wrap algorithm\n" +"_M.encode = choose(encodet)\n" +"_M.decode = choose(decodet)\n" +"_M.wrap = choose(wrapt)\n" +"\n" +"-- define the end-of-line normalization filter\n" +"function _M.normalize(marker)\n" +" return ltn12.filter.cycle(_M.eol, 0, marker)\n" +"end\n" +"\n" +"-- high level stuffing filter\n" +"function _M.stuff()\n" +" return ltn12.filter.cycle(_M.dot, 2)\n" +"end\n" +"\n" +"return _M\n"; + +/* socket.ftp */ +static const char *lua_m_socket_ftp = +"-----------------------------------------------------------------------------\n" +"-- FTP support for the Lua language\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-----------------------------------------------------------------------------\n" +"local base = _G\n" +"local table = require(\"table\")\n" +"local string = require(\"string\")\n" +"local math = require(\"math\")\n" +"local socket = require(\"socket.socket\")\n" +"local url = require(\"socket.url\")\n" +"local tp = require(\"socket.tp\")\n" +"local ltn12 = require(\"ltn12\")\n" +"socket.ftp = {}\n" +"local _M = socket.ftp\n" +"-----------------------------------------------------------------------------\n" +"-- Program constants\n" +"-----------------------------------------------------------------------------\n" +"-- timeout in seconds before the program gives up on a connection\n" +"_M.TIMEOUT = 60\n" +"-- default port for ftp service\n" +"_M.PORT = 21\n" +"-- this is the default anonymous password. used when no password is\n" +"-- provided in url. should be changed to your e-mail.\n" +"_M.USER = \"ftp\"\n" +"_M.PASSWORD = \"anonymous@anonymous.org\"\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Low level FTP API\n" +"-----------------------------------------------------------------------------\n" +"local metat = { __index = {} }\n" +"\n" +"function _M.open(server, port, create)\n" +" local tp = socket.try(tp.connect(server, port or _M.PORT, _M.TIMEOUT, create))\n" +" local f = base.setmetatable({ tp = tp }, metat)\n" +" -- make sure everything gets closed in an exception\n" +" f.try = socket.newtry(function() f:close() end)\n" +" return f\n" +"end\n" +"\n" +"function metat.__index:portconnect()\n" +" self.try(self.server:settimeout(_M.TIMEOUT))\n" +" self.data = self.try(self.server:accept())\n" +" self.try(self.data:settimeout(_M.TIMEOUT))\n" +"end\n" +"\n" +"function metat.__index:pasvconnect()\n" +" self.data = self.try(socket.tcp())\n" +" self.try(self.data:settimeout(_M.TIMEOUT))\n" +" self.try(self.data:connect(self.pasvt.ip, self.pasvt.port))\n" +"end\n" +"\n" +"function metat.__index:login(user, password)\n" +" self.try(self.tp:command(\"user\", user or _M.USER))\n" +" local code, reply = self.try(self.tp:check{\"2..\", 331})\n" +" if code == 331 then\n" +" self.try(self.tp:command(\"pass\", password or _M.PASSWORD))\n" +" self.try(self.tp:check(\"2..\"))\n" +" end\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:pasv()\n" +" self.try(self.tp:command(\"pasv\"))\n" +" local code, reply = self.try(self.tp:check(\"2..\"))\n" +" local pattern = \"(%d+)%D(%d+)%D(%d+)%D(%d+)%D(%d+)%D(%d+)\"\n" +" local a, b, c, d, p1, p2 = socket.skip(2, string.find(reply, pattern))\n" +" self.try(a and b and c and d and p1 and p2, reply)\n" +" self.pasvt = {\n" +" ip = string.format(\"%d.%d.%d.%d\", a, b, c, d),\n" +" port = p1*256 + p2\n" +" }\n" +" if self.server then\n" +" self.server:close()\n" +" self.server = nil\n" +" end\n" +" return self.pasvt.ip, self.pasvt.port\n" +"end\n" +"\n" +"function metat.__index:port(ip, port)\n" +" self.pasvt = nil\n" +" if not ip then\n" +" ip, port = self.try(self.tp:getcontrol():getsockname())\n" +" self.server = self.try(socket.bind(ip, 0))\n" +" ip, port = self.try(self.server:getsockname())\n" +" self.try(self.server:settimeout(_M.TIMEOUT))\n" +" end\n" +" local pl = math.mod(port, 256)\n" +" local ph = (port - pl)/256\n" +" local arg = string.gsub(string.format(\"%s,%d,%d\", ip, ph, pl), \"%.\", \",\")\n" +" self.try(self.tp:command(\"port\", arg))\n" +" self.try(self.tp:check(\"2..\"))\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:send(sendt)\n" +" self.try(self.pasvt or self.server, \"need port or pasv first\")\n" +" -- if there is a pasvt table, we already sent a PASV command\n" +" -- we just get the data connection into self.data\n" +" if self.pasvt then self:pasvconnect() end\n" +" -- get the transfer argument and command\n" +" local argument = sendt.argument or\n" +" url.unescape(string.gsub(sendt.path or \"\", \"^[/\\]\", \"\"))\n" +" if argument == \"\" then argument = nil end\n" +" local command = sendt.command or \"stor\"\n" +" -- send the transfer command and check the reply\n" +" self.try(self.tp:command(command, argument))\n" +" local code, reply = self.try(self.tp:check{\"2..\", \"1..\"})\n" +" -- if there is not a a pasvt table, then there is a server\n" +" -- and we already sent a PORT command\n" +" if not self.pasvt then self:portconnect() end\n" +" -- get the sink, source and step for the transfer\n" +" local step = sendt.step or ltn12.pump.step\n" +" local readt = {self.tp.c}\n" +" local checkstep = function(src, snk)\n" +" -- check status in control connection while downloading\n" +" local readyt = socket.select(readt, nil, 0)\n" +" if readyt[tp] then code = self.try(self.tp:check(\"2..\")) end\n" +" return step(src, snk)\n" +" end\n" +" local sink = socket.sink(\"close-when-done\", self.data)\n" +" -- transfer all data and check error\n" +" self.try(ltn12.pump.all(sendt.source, sink, checkstep))\n" +" if string.find(code, \"1..\") then self.try(self.tp:check(\"2..\")) end\n" +" -- done with data connection\n" +" self.data:close()\n" +" -- find out how many bytes were sent\n" +" local sent = socket.skip(1, self.data:getstats())\n" +" self.data = nil\n" +" return sent\n" +"end\n" +"\n" +"function metat.__index:receive(recvt)\n" +" self.try(self.pasvt or self.server, \"need port or pasv first\")\n" +" if self.pasvt then self:pasvconnect() end\n" +" local argument = recvt.argument or\n" +" url.unescape(string.gsub(recvt.path or \"\", \"^[/\\]\", \"\"))\n" +" if argument == \"\" then argument = nil end\n" +" local command = recvt.command or \"retr\"\n" +" self.try(self.tp:command(command, argument))\n" +" local code,reply = self.try(self.tp:check{\"1..\", \"2..\"})\n" +" if (code >= 200) and (code <= 299) then\n" +" recvt.sink(reply)\n" +" return 1\n" +" end\n" +" if not self.pasvt then self:portconnect() end\n" +" local source = socket.source(\"until-closed\", self.data)\n" +" local step = recvt.step or ltn12.pump.step\n" +" self.try(ltn12.pump.all(source, recvt.sink, step))\n" +" if string.find(code, \"1..\") then self.try(self.tp:check(\"2..\")) end\n" +" self.data:close()\n" +" self.data = nil\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:cwd(dir)\n" +" self.try(self.tp:command(\"cwd\", dir))\n" +" self.try(self.tp:check(250))\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:type(type)\n" +" self.try(self.tp:command(\"type\", type))\n" +" self.try(self.tp:check(200))\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:greet()\n" +" local code = self.try(self.tp:check{\"1..\", \"2..\"})\n" +" if string.find(code, \"1..\") then self.try(self.tp:check(\"2..\")) end\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:quit()\n" +" self.try(self.tp:command(\"quit\"))\n" +" self.try(self.tp:check(\"2..\"))\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:close()\n" +" if self.data then self.data:close() end\n" +" if self.server then self.server:close() end\n" +" return self.tp:close()\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- High level FTP API\n" +"-----------------------------------------------------------------------------\n" +"local function override(t)\n" +" if t.url then\n" +" local u = url.parse(t.url)\n" +" for i,v in base.pairs(t) do\n" +" u[i] = v\n" +" end\n" +" return u\n" +" else return t end\n" +"end\n" +"\n" +"local function tput(putt)\n" +" putt = override(putt)\n" +" socket.try(putt.host, \"missing hostname\")\n" +" local f = _M.open(putt.host, putt.port, putt.create)\n" +" f:greet()\n" +" f:login(putt.user, putt.password)\n" +" if putt.type then f:type(putt.type) end\n" +" f:pasv()\n" +" local sent = f:send(putt)\n" +" f:quit()\n" +" f:close()\n" +" return sent\n" +"end\n" +"\n" +"local default = {\n" +" path = \"/\",\n" +" scheme = \"ftp\"\n" +"}\n" +"\n" +"local function parse(u)\n" +" local t = socket.try(url.parse(u, default))\n" +" socket.try(t.scheme == \"ftp\", \"wrong scheme '\" .. t.scheme .. \"'\")\n" +" socket.try(t.host, \"missing hostname\")\n" +" local pat = \"^type=(.)$\"\n" +" if t.params then\n" +" t.type = socket.skip(2, string.find(t.params, pat))\n" +" socket.try(t.type == \"a\" or t.type == \"i\",\n" +" \"invalid type '\" .. t.type .. \"'\")\n" +" end\n" +" return t\n" +"end\n" +"\n" +"local function sput(u, body)\n" +" local putt = parse(u)\n" +" putt.source = ltn12.source.string(body)\n" +" return tput(putt)\n" +"end\n" +"\n" +"_M.put = socket.protect(function(putt, body)\n" +" if base.type(putt) == \"string\" then return sput(putt, body)\n" +" else return tput(putt) end\n" +"end)\n" +"\n" +"local function tget(gett)\n" +" gett = override(gett)\n" +" socket.try(gett.host, \"missing hostname\")\n" +" local f = _M.open(gett.host, gett.port, gett.create)\n" +" f:greet()\n" +" f:login(gett.user, gett.password)\n" +" if gett.type then f:type(gett.type) end\n" +" f:pasv()\n" +" f:receive(gett)\n" +" f:quit()\n" +" return f:close()\n" +"end\n" +"\n" +"local function sget(u)\n" +" local gett = parse(u)\n" +" local t = {}\n" +" gett.sink = ltn12.sink.table(t)\n" +" tget(gett)\n" +" return table.concat(t)\n" +"end\n" +"\n" +"_M.command = socket.protect(function(cmdt)\n" +" cmdt = override(cmdt)\n" +" socket.try(cmdt.host, \"missing hostname\")\n" +" socket.try(cmdt.command, \"missing command\")\n" +" local f = open(cmdt.host, cmdt.port, cmdt.create)\n" +" f:greet()\n" +" f:login(cmdt.user, cmdt.password)\n" +" f.try(f.tp:command(cmdt.command, cmdt.argument))\n" +" if cmdt.check then f.try(f.tp:check(cmdt.check)) end\n" +" f:quit()\n" +" return f:close()\n" +"end)\n" +"\n" +"_M.get = socket.protect(function(gett)\n" +" if base.type(gett) == \"string\" then return sget(gett)\n" +" else return tget(gett) end\n" +"end)\n" +"\n" +"return _M\n" +"\n"; + +/* socket.headers */ +static const char *lua_m_socket_headers = +"-----------------------------------------------------------------------------\n" +"-- Canonic header field capitalization\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"local socket = require(\"socket.socket\")\n" +"socket.headers = {}\n" +"local _M = socket.headers\n" +"\n" +"_M.canonic = {\n" +" [\"accept\"] = \"Accept\",\n" +" [\"accept-charset\"] = \"Accept-Charset\",\n" +" [\"accept-encoding\"] = \"Accept-Encoding\",\n" +" [\"accept-language\"] = \"Accept-Language\",\n" +" [\"accept-ranges\"] = \"Accept-Ranges\",\n" +" [\"action\"] = \"Action\",\n" +" [\"alternate-recipient\"] = \"Alternate-Recipient\",\n" +" [\"age\"] = \"Age\",\n" +" [\"allow\"] = \"Allow\",\n" +" [\"arrival-date\"] = \"Arrival-Date\",\n" +" [\"authorization\"] = \"Authorization\",\n" +" [\"bcc\"] = \"Bcc\",\n" +" [\"cache-control\"] = \"Cache-Control\",\n" +" [\"cc\"] = \"Cc\",\n" +" [\"comments\"] = \"Comments\",\n" +" [\"connection\"] = \"Connection\",\n" +" [\"content-description\"] = \"Content-Description\",\n" +" [\"content-disposition\"] = \"Content-Disposition\",\n" +" [\"content-encoding\"] = \"Content-Encoding\",\n" +" [\"content-id\"] = \"Content-ID\",\n" +" [\"content-language\"] = \"Content-Language\",\n" +" [\"content-length\"] = \"Content-Length\",\n" +" [\"content-location\"] = \"Content-Location\",\n" +" [\"content-md5\"] = \"Content-MD5\",\n" +" [\"content-range\"] = \"Content-Range\",\n" +" [\"content-transfer-encoding\"] = \"Content-Transfer-Encoding\",\n" +" [\"content-type\"] = \"Content-Type\",\n" +" [\"cookie\"] = \"Cookie\",\n" +" [\"date\"] = \"Date\",\n" +" [\"diagnostic-code\"] = \"Diagnostic-Code\",\n" +" [\"dsn-gateway\"] = \"DSN-Gateway\",\n" +" [\"etag\"] = \"ETag\",\n" +" [\"expect\"] = \"Expect\",\n" +" [\"expires\"] = \"Expires\",\n" +" [\"final-log-id\"] = \"Final-Log-ID\",\n" +" [\"final-recipient\"] = \"Final-Recipient\",\n" +" [\"from\"] = \"From\",\n" +" [\"host\"] = \"Host\",\n" +" [\"if-match\"] = \"If-Match\",\n" +" [\"if-modified-since\"] = \"If-Modified-Since\",\n" +" [\"if-none-match\"] = \"If-None-Match\",\n" +" [\"if-range\"] = \"If-Range\",\n" +" [\"if-unmodified-since\"] = \"If-Unmodified-Since\",\n" +" [\"in-reply-to\"] = \"In-Reply-To\",\n" +" [\"keywords\"] = \"Keywords\",\n" +" [\"last-attempt-date\"] = \"Last-Attempt-Date\",\n" +" [\"last-modified\"] = \"Last-Modified\",\n" +" [\"location\"] = \"Location\",\n" +" [\"max-forwards\"] = \"Max-Forwards\",\n" +" [\"message-id\"] = \"Message-ID\",\n" +" [\"mime-version\"] = \"MIME-Version\",\n" +" [\"original-envelope-id\"] = \"Original-Envelope-ID\",\n" +" [\"original-recipient\"] = \"Original-Recipient\",\n" +" [\"pragma\"] = \"Pragma\",\n" +" [\"proxy-authenticate\"] = \"Proxy-Authenticate\",\n" +" [\"proxy-authorization\"] = \"Proxy-Authorization\",\n" +" [\"range\"] = \"Range\",\n" +" [\"received\"] = \"Received\",\n" +" [\"received-from-mta\"] = \"Received-From-MTA\",\n" +" [\"references\"] = \"References\",\n" +" [\"referer\"] = \"Referer\",\n" +" [\"remote-mta\"] = \"Remote-MTA\",\n" +" [\"reply-to\"] = \"Reply-To\",\n" +" [\"reporting-mta\"] = \"Reporting-MTA\",\n" +" [\"resent-bcc\"] = \"Resent-Bcc\",\n" +" [\"resent-cc\"] = \"Resent-Cc\",\n" +" [\"resent-date\"] = \"Resent-Date\",\n" +" [\"resent-from\"] = \"Resent-From\",\n" +" [\"resent-message-id\"] = \"Resent-Message-ID\",\n" +" [\"resent-reply-to\"] = \"Resent-Reply-To\",\n" +" [\"resent-sender\"] = \"Resent-Sender\",\n" +" [\"resent-to\"] = \"Resent-To\",\n" +" [\"retry-after\"] = \"Retry-After\",\n" +" [\"return-path\"] = \"Return-Path\",\n" +" [\"sender\"] = \"Sender\",\n" +" [\"server\"] = \"Server\",\n" +" [\"smtp-remote-recipient\"] = \"SMTP-Remote-Recipient\",\n" +" [\"status\"] = \"Status\",\n" +" [\"subject\"] = \"Subject\",\n" +" [\"te\"] = \"TE\",\n" +" [\"to\"] = \"To\",\n" +" [\"trailer\"] = \"Trailer\",\n" +" [\"transfer-encoding\"] = \"Transfer-Encoding\",\n" +" [\"upgrade\"] = \"Upgrade\",\n" +" [\"user-agent\"] = \"User-Agent\",\n" +" [\"vary\"] = \"Vary\",\n" +" [\"via\"] = \"Via\",\n" +" [\"warning\"] = \"Warning\",\n" +" [\"will-retry-until\"] = \"Will-Retry-Until\",\n" +" [\"www-authenticate\"] = \"WWW-Authenticate\",\n" +" [\"x-mailer\"] = \"X-Mailer\",\n" +"}\n" +"\n" +"return _M\n" +"\n"; + +/* socket.http */ +static const char *lua_m_socket_http = +"-----------------------------------------------------------------------------\n" +"-- HTTP/1.1 client support for the Lua language.\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-------------------------------------------------------------------------------\n" +"local socket = require(\"socket.socket\")\n" +"local url = require(\"socket.url\")\n" +"local ltn12 = require(\"socket.ltn12\")\n" +"local mime = require(\"socket.mime\")\n" +"local string = require(\"string\")\n" +"local headers = require(\"socket.headers\")\n" +"local base = _G\n" +"local table = require(\"table\")\n" +"socket.http = {}\n" +"local _M = socket.http\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Program constants\n" +"-----------------------------------------------------------------------------\n" +"-- connection timeout in seconds\n" +"TIMEOUT = 60\n" +"-- default port for document retrieval\n" +"_M.PORT = 80\n" +"-- user agent field sent in request\n" +"_M.USERAGENT = socket._VERSION\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Reads MIME headers from a connection, unfolding where needed\n" +"-----------------------------------------------------------------------------\n" +"local function receiveheaders(sock, headers)\n" +" local line, name, value, err\n" +" headers = headers or {}\n" +" -- get first line\n" +" line, err = sock:receive()\n" +" if err then return nil, err end\n" +" -- headers go until a blank line is found\n" +" while line ~= \"\" do\n" +" -- get field-name and value\n" +" name, value = socket.skip(2, string.find(line, \"^(.-):%s*(.*)\"))\n" +" if not (name and value) then return nil, \"malformed reponse headers\" end\n" +" name = string.lower(name)\n" +" -- get next line (value might be folded)\n" +" line, err = sock:receive()\n" +" if err then return nil, err end\n" +" -- unfold any folded values\n" +" while string.find(line, \"^%s\") do\n" +" value = value .. line\n" +" line = sock:receive()\n" +" if err then return nil, err end\n" +" end\n" +" -- save pair in table\n" +" if headers[name] then headers[name] = headers[name] .. \", \" .. value\n" +" else headers[name] = value end\n" +" end\n" +" return headers\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Extra sources and sinks\n" +"-----------------------------------------------------------------------------\n" +"socket.sourcet[\"http-chunked\"] = function(sock, headers)\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function()\n" +" -- get chunk size, skip extention\n" +" local line, err = sock:receive()\n" +" if err then return nil, err end\n" +" local size = base.tonumber(string.gsub(line, \";.*\", \"\"), 16)\n" +" if not size then return nil, \"invalid chunk size\" end\n" +" -- was it the last chunk?\n" +" if size > 0 then\n" +" -- if not, get chunk and skip terminating CRLF\n" +" local chunk, err, part = sock:receive(size)\n" +" if chunk then sock:receive() end\n" +" return chunk, err\n" +" else\n" +" -- if it was, read trailers into headers table\n" +" headers, err = receiveheaders(sock, headers)\n" +" if not headers then return nil, err end\n" +" end\n" +" end\n" +" })\n" +"end\n" +"\n" +"socket.sinkt[\"http-chunked\"] = function(sock)\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function(self, chunk, err)\n" +" if not chunk then return sock:send(\"0\r\n\r\n\") end\n" +" local size = string.format(\"%X\r\n\", string.len(chunk))\n" +" return sock:send(size .. chunk .. \"\r\n\")\n" +" end\n" +" })\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Low level HTTP API\n" +"-----------------------------------------------------------------------------\n" +"local metat = { __index = {} }\n" +"\n" +"function _M.open(host, port, create)\n" +" -- create socket with user connect function, or with default\n" +" local c = socket.try((create or socket.tcp)())\n" +" local h = base.setmetatable({ c = c }, metat)\n" +" -- create finalized try\n" +" h.try = socket.newtry(function() h:close() end)\n" +" -- set timeout before connecting\n" +" h.try(c:settimeout(_M.TIMEOUT))\n" +" h.try(c:connect(host, port or _M.PORT))\n" +" -- here everything worked\n" +" return h\n" +"end\n" +"\n" +"function metat.__index:sendrequestline(method, uri)\n" +" local reqline = string.format(\"%s %s HTTP/1.1\r\n\", method or \"GET\", uri)\n" +" return self.try(self.c:send(reqline))\n" +"end\n" +"\n" +"function metat.__index:sendheaders(tosend)\n" +" local canonic = headers.canonic\n" +" local h = \"\r\n\"\n" +" for f, v in base.pairs(tosend) do\n" +" h = (canonic[f] or f) .. \": \" .. v .. \"\r\n\" .. h\n" +" end\n" +" self.try(self.c:send(h))\n" +" return 1\n" +"end\n" +"\n" +"function metat.__index:sendbody(headers, source, step)\n" +" source = source or ltn12.source.empty()\n" +" step = step or ltn12.pump.step\n" +" -- if we don't know the size in advance, send chunked and hope for the best\n" +" local mode = \"http-chunked\"\n" +" if headers[\"content-length\"] then mode = \"keep-open\" end\n" +" return self.try(ltn12.pump.all(source, socket.sink(mode, self.c), step))\n" +"end\n" +"\n" +"function metat.__index:receivestatusline()\n" +" local status = self.try(self.c:receive(5))\n" +" -- identify HTTP/0.9 responses, which do not contain a status line\n" +" -- this is just a heuristic, but is what the RFC recommends\n" +" if status ~= \"HTTP/\" then return nil, status end\n" +" -- otherwise proceed reading a status line\n" +" status = self.try(self.c:receive(\"*l\", status))\n" +" local code = socket.skip(2, string.find(status, \"HTTP/%d*%.%d* (%d%d%d)\"))\n" +" return self.try(base.tonumber(code), status)\n" +"end\n" +"\n" +"function metat.__index:receiveheaders()\n" +" return self.try(receiveheaders(self.c))\n" +"end\n" +"\n" +"function metat.__index:receivebody(headers, sink, step)\n" +" sink = sink or ltn12.sink.null()\n" +" step = step or ltn12.pump.step\n" +" local length = base.tonumber(headers[\"content-length\"])\n" +" local t = headers[\"transfer-encoding\"] -- shortcut\n" +" local mode = \"default\" -- connection close\n" +" if t and t ~= \"identity\" then mode = \"http-chunked\"\n" +" elseif base.tonumber(headers[\"content-length\"]) then mode = \"by-length\" end\n" +" return self.try(ltn12.pump.all(socket.source(mode, self.c, length),\n" +" sink, step))\n" +"end\n" +"\n" +"function metat.__index:receive09body(status, sink, step)\n" +" local source = ltn12.source.rewind(socket.source(\"until-closed\", self.c))\n" +" source(status)\n" +" return self.try(ltn12.pump.all(source, sink, step))\n" +"end\n" +"\n" +"function metat.__index:close()\n" +" return self.c:close()\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- High level HTTP API\n" +"-----------------------------------------------------------------------------\n" +"local function adjusturi(reqt)\n" +" local u = reqt\n" +" -- if there is a proxy, we need the full url. otherwise, just a part.\n" +" if not reqt.proxy and not PROXY then\n" +" u = {\n" +" path = socket.try(reqt.path, \"invalid path 'nil'\"),\n" +" params = reqt.params,\n" +" query = reqt.query,\n" +" fragment = reqt.fragment\n" +" }\n" +" end\n" +" return url.build(u)\n" +"end\n" +"\n" +"local function adjustproxy(reqt)\n" +" local proxy = reqt.proxy or PROXY\n" +" if proxy then\n" +" proxy = url.parse(proxy)\n" +" return proxy.host, proxy.port or 3128\n" +" else\n" +" return reqt.host, reqt.port\n" +" end\n" +"end\n" +"\n" +"local function adjustheaders(reqt)\n" +" -- default headers\n" +" local lower = {\n" +" [\"user-agent\"] = _M.USERAGENT,\n" +" [\"host\"] = reqt.host,\n" +" [\"connection\"] = \"close, TE\",\n" +" [\"te\"] = \"trailers\"\n" +" }\n" +" -- if we have authentication information, pass it along\n" +" if reqt.user and reqt.password then\n" +" lower[\"authorization\"] =\n" +" \"Basic \" .. (mime.b64(reqt.user .. \":\" .. reqt.password))\n" +" end\n" +" -- override with user headers\n" +" for i,v in base.pairs(reqt.headers or lower) do\n" +" lower[string.lower(i)] = v\n" +" end\n" +" return lower\n" +"end\n" +"\n" +"-- default url parts\n" +"local default = {\n" +" host = \"\",\n" +" port = _M.PORT,\n" +" path =\"/\",\n" +" scheme = \"http\"\n" +"}\n" +"\n" +"local function adjustrequest(reqt)\n" +" -- parse url if provided\n" +" local nreqt = reqt.url and url.parse(reqt.url, default) or {}\n" +" -- explicit components override url\n" +" for i,v in base.pairs(reqt) do nreqt[i] = v end\n" +" if nreqt.port == \"\" then nreqt.port = 80 end\n" +" socket.try(nreqt.host and nreqt.host ~= \"\",\n" +" \"invalid host '\" .. base.tostring(nreqt.host) .. \"'\")\n" +" -- compute uri if user hasn't overriden\n" +" nreqt.uri = reqt.uri or adjusturi(nreqt)\n" +" -- ajust host and port if there is a proxy\n" +" nreqt.host, nreqt.port = adjustproxy(nreqt)\n" +" -- adjust headers in request\n" +" nreqt.headers = adjustheaders(nreqt)\n" +" return nreqt\n" +"end\n" +"\n" +"local function shouldredirect(reqt, code, headers)\n" +" return headers.location and\n" +" string.gsub(headers.location, \"%s\", \"\") ~= \"\" and\n" +" (reqt.redirect ~= false) and\n" +" (code == 301 or code == 302 or code == 303 or code == 307) and\n" +" (not reqt.method or reqt.method == \"GET\" or reqt.method == \"HEAD\")\n" +" and (not reqt.nredirects or reqt.nredirects < 5)\n" +"end\n" +"\n" +"local function shouldreceivebody(reqt, code)\n" +" if reqt.method == \"HEAD\" then return nil end\n" +" if code == 204 or code == 304 then return nil end\n" +" if code >= 100 and code < 200 then return nil end\n" +" return 1\n" +"end\n" +"\n" +"-- forward declarations\n" +"local trequest, tredirect\n" +"\n" +"--[[local]] function tredirect(reqt, location)\n" +" local result, code, headers, status = trequest {\n" +" -- the RFC says the redirect URL has to be absolute, but some\n" +" -- servers do not respect that\n" +" url = url.absolute(reqt.url, location),\n" +" source = reqt.source,\n" +" sink = reqt.sink,\n" +" headers = reqt.headers,\n" +" proxy = reqt.proxy,\n" +" nredirects = (reqt.nredirects or 0) + 1,\n" +" create = reqt.create\n" +" }\n" +" -- pass location header back as a hint we redirected\n" +" headers = headers or {}\n" +" headers.location = headers.location or location\n" +" return result, code, headers, status\n" +"end\n" +"\n" +"--[[local]] function trequest(reqt)\n" +" -- we loop until we get what we want, or\n" +" -- until we are sure there is no way to get it\n" +" local nreqt = adjustrequest(reqt)\n" +" local h = _M.open(nreqt.host, nreqt.port, nreqt.create)\n" +" -- send request line and headers\n" +" h:sendrequestline(nreqt.method, nreqt.uri)\n" +" h:sendheaders(nreqt.headers)\n" +" -- if there is a body, send it\n" +" if nreqt.source then\n" +" h:sendbody(nreqt.headers, nreqt.source, nreqt.step)\n" +" end\n" +" local code, status = h:receivestatusline()\n" +" -- if it is an HTTP/0.9 server, simply get the body and we are done\n" +" if not code then\n" +" h:receive09body(status, nreqt.sink, nreqt.step)\n" +" return 1, 200\n" +" end\n" +" local headers\n" +" -- ignore any 100-continue messages\n" +" while code == 100 do\n" +" headers = h:receiveheaders()\n" +" code, status = h:receivestatusline()\n" +" end\n" +" headers = h:receiveheaders()\n" +" -- at this point we should have a honest reply from the server\n" +" -- we can't redirect if we already used the source, so we report the error\n" +" if shouldredirect(nreqt, code, headers) and not nreqt.source then\n" +" h:close()\n" +" return tredirect(reqt, headers.location)\n" +" end\n" +" -- here we are finally done\n" +" if shouldreceivebody(nreqt, code) then\n" +" h:receivebody(headers, nreqt.sink, nreqt.step)\n" +" end\n" +" h:close()\n" +" return 1, code, headers, status\n" +"end\n" +"\n" +"local function srequest(u, b)\n" +" local t = {}\n" +" local reqt = {\n" +" url = u,\n" +" sink = ltn12.sink.table(t)\n" +" }\n" +" if b then\n" +" reqt.source = ltn12.source.string(b)\n" +" reqt.headers = {\n" +" [\"content-length\"] = string.len(b),\n" +" [\"content-type\"] = \"application/x-www-form-urlencoded\"\n" +" }\n" +" reqt.method = \"POST\"\n" +" end\n" +" local code, headers, status = socket.skip(1, trequest(reqt))\n" +" return table.concat(t), code, headers, status\n" +"end\n" +"\n" +"_M.request = socket.protect(function(reqt, body)\n" +" if base.type(reqt) == \"string\" then return srequest(reqt, body)\n" +" else return trequest(reqt) end\n" +"end)\n" +"\n" +"return _M\n" +"\n"; + +/* socket.mbox */ +static const char *lua_m_socket_mbox = +"local _M = {}\n" +"\n" +"if module then\n" +" mbox = _M\n" +"end \n" +"\n" +"function _M.split_message(message_s)\n" +" local message = {}\n" +" message_s = string.gsub(message_s, \"\r\n\", \"\n\")\n" +" string.gsub(message_s, \"^(.-\n)\n\", function (h) message.headers = h end)\n" +" string.gsub(message_s, \"^.-\n\n(.*)\", function (b) message.body = b end)\n" +" if not message.body then\n" +" string.gsub(message_s, \"^\n(.*)\", function (b) message.body = b end)\n" +" end\n" +" if not message.headers and not message.body then\n" +" message.headers = message_s\n" +" end\n" +" return message.headers or \"\", message.body or \"\"\n" +"end\n" +"\n" +"function _M.split_headers(headers_s)\n" +" local headers = {}\n" +" headers_s = string.gsub(headers_s, \"\r\n\", \"\n\")\n" +" headers_s = string.gsub(headers_s, \"\n[ ]+\", \" \")\n" +" string.gsub(\"\n\" .. headers_s, \"\n([^\n]+)\", function (h) table.insert(headers, h) end)\n" +" return headers\n" +"end\n" +"\n" +"function _M.parse_header(header_s)\n" +" header_s = string.gsub(header_s, \"\n[ ]+\", \" \")\n" +" header_s = string.gsub(header_s, \"\n+\", \"\")\n" +" local _, __, name, value = string.find(header_s, \"([^%s:]-):%s*(.*)\")\n" +" return name, value\n" +"end\n" +"\n" +"function _M.parse_headers(headers_s)\n" +" local headers_t = _M.split_headers(headers_s)\n" +" local headers = {}\n" +" for i = 1, #headers_t do\n" +" local name, value = _M.parse_header(headers_t[i])\n" +" if name then\n" +" name = string.lower(name)\n" +" if headers[name] then\n" +" headers[name] = headers[name] .. \", \" .. value\n" +" else headers[name] = value end\n" +" end\n" +" end\n" +" return headers\n" +"end\n" +"\n" +"function _M.parse_from(from)\n" +" local _, __, name, address = string.find(from, \"^%s*(.-)%s*%<(.-)%>\")\n" +" if not address then\n" +" _, __, address = string.find(from, \"%s*(.+)%s*\")\n" +" end\n" +" name = name or \"\"\n" +" address = address or \"\"\n" +" if name == \"\" then name = address end\n" +" name = string.gsub(name, '\"', \"\")\n" +" return name, address\n" +"end\n" +"\n" +"function _M.split_mbox(mbox_s)\n" +" mbox = {}\n" +" mbox_s = string.gsub(mbox_s, \"\r\n\", \"\n\") ..\"\n\nFrom \n\"\n" +" local nj, i, j = 1, 1, 1\n" +" while 1 do\n" +" i, nj = string.find(mbox_s, \"\n\nFrom .-\n\", j)\n" +" if not i then break end\n" +" local message = string.sub(mbox_s, j, i-1)\n" +" table.insert(mbox, message)\n" +" j = nj+1\n" +" end\n" +" return mbox\n" +"end\n" +"\n" +"function _M.parse(mbox_s)\n" +" local mbox = _M.split_mbox(mbox_s)\n" +" for i = 1, #mbox do\n" +" mbox[i] = _M.parse_message(mbox[i])\n" +" end\n" +" return mbox\n" +"end\n" +"\n" +"function _M.parse_message(message_s)\n" +" local message = {}\n" +" message.headers, message.body = _M.split_message(message_s)\n" +" message.headers = _M.parse_headers(message.headers)\n" +" return message\n" +"end\n" +"\n" +"return _M\n" +"\n"; + +/* socket.smtp */ +static const char *lua_m_socket_smtp = +"-----------------------------------------------------------------------------\n" +"-- SMTP client support for the Lua language.\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-----------------------------------------------------------------------------\n" +"local base = _G\n" +"local coroutine = require(\"coroutine\")\n" +"local string = require(\"string\")\n" +"local math = require(\"math\")\n" +"local os = require(\"os\")\n" +"local socket = require(\"socket.socket\")\n" +"local tp = require(\"socket.tp\")\n" +"local ltn12 = require(\"socket.ltn12\")\n" +"local headers = require(\"socket.headers\")\n" +"local mime = require(\"socket.mime\")\n" +"\n" +"socket.smtp = {}\n" +"local _M = socket.smtp\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Program constants\n" +"-----------------------------------------------------------------------------\n" +"-- timeout for connection\n" +"_M.TIMEOUT = 60\n" +"-- default server used to send e-mails\n" +"_M.SERVER = \"localhost\"\n" +"-- default port\n" +"_M.PORT = 25\n" +"-- domain used in HELO command and default sendmail\n" +"-- If we are under a CGI, try to get from environment\n" +"_M.DOMAIN = os.getenv(\"SERVER_NAME\") or \"localhost\"\n" +"-- default time zone (means we don't know)\n" +"_M.ZONE = \"-0000\"\n" +"\n" +"---------------------------------------------------------------------------\n" +"-- Low level SMTP API\n" +"-----------------------------------------------------------------------------\n" +"local metat = { __index = {} }\n" +"\n" +"function metat.__index:greet(domain)\n" +" self.try(self.tp:check(\"2..\"))\n" +" self.try(self.tp:command(\"EHLO\", domain or _M.DOMAIN))\n" +" return socket.skip(1, self.try(self.tp:check(\"2..\")))\n" +"end\n" +"\n" +"function metat.__index:mail(from)\n" +" self.try(self.tp:command(\"MAIL\", \"FROM:\" .. from))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:rcpt(to)\n" +" self.try(self.tp:command(\"RCPT\", \"TO:\" .. to))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:data(src, step)\n" +" self.try(self.tp:command(\"DATA\"))\n" +" self.try(self.tp:check(\"3..\"))\n" +" self.try(self.tp:source(src, step))\n" +" self.try(self.tp:send(\"\r\n.\r\n\"))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:quit()\n" +" self.try(self.tp:command(\"QUIT\"))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:close()\n" +" return self.tp:close()\n" +"end\n" +"\n" +"function metat.__index:login(user, password)\n" +" self.try(self.tp:command(\"AUTH\", \"LOGIN\"))\n" +" self.try(self.tp:check(\"3..\"))\n" +" self.try(self.tp:send(mime.b64(user) .. \"\r\n\"))\n" +" self.try(self.tp:check(\"3..\"))\n" +" self.try(self.tp:send(mime.b64(password) .. \"\r\n\"))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:plain(user, password)\n" +" local auth = \"PLAIN \" .. mime.b64(\"\0\" .. user .. \"\0\" .. password)\n" +" self.try(self.tp:command(\"AUTH\", auth))\n" +" return self.try(self.tp:check(\"2..\"))\n" +"end\n" +"\n" +"function metat.__index:auth(user, password, ext)\n" +" if not user or not password then return 1 end\n" +" if string.find(ext, \"AUTH[^\n]+LOGIN\") then\n" +" return self:login(user, password)\n" +" elseif string.find(ext, \"AUTH[^\n]+PLAIN\") then\n" +" return self:plain(user, password)\n" +" else\n" +" self.try(nil, \"authentication not supported\")\n" +" end\n" +"end\n" +"\n" +"-- send message or throw an exception\n" +"function metat.__index:send(mailt)\n" +" self:mail(mailt.from)\n" +" if base.type(mailt.rcpt) == \"table\" then\n" +" for i,v in base.ipairs(mailt.rcpt) do\n" +" self:rcpt(v)\n" +" end\n" +" else\n" +" self:rcpt(mailt.rcpt)\n" +" end\n" +" self:data(ltn12.source.chain(mailt.source, mime.stuff()), mailt.step)\n" +"end\n" +"\n" +"function _M.open(server, port, create)\n" +" local tp = socket.try(tp.connect(server or _M.SERVER, port or _M.PORT,\n" +" _M.TIMEOUT, create))\n" +" local s = base.setmetatable({tp = tp}, metat)\n" +" -- make sure tp is closed if we get an exception\n" +" s.try = socket.newtry(function()\n" +" s:close()\n" +" end)\n" +" return s\n" +"end\n" +"\n" +"-- convert headers to lowercase\n" +"local function lower_headers(headers)\n" +" local lower = {}\n" +" for i,v in base.pairs(headers or lower) do\n" +" lower[string.lower(i)] = v\n" +" end\n" +" return lower\n" +"end\n" +"\n" +"---------------------------------------------------------------------------\n" +"-- Multipart message source\n" +"-----------------------------------------------------------------------------\n" +"-- returns a hopefully unique mime boundary\n" +"local seqno = 0\n" +"local function newboundary()\n" +" seqno = seqno + 1\n" +" return string.format('%s%05d==%05u', os.date('%d%m%Y%H%M%S'),\n" +" math.random(0, 99999), seqno)\n" +"end\n" +"\n" +"-- send_message forward declaration\n" +"local send_message\n" +"\n" +"-- yield the headers all at once, it's faster\n" +"local function send_headers(tosend)\n" +" local canonic = headers.canonic\n" +" local h = \"\r\n\"\n" +" for f,v in base.pairs(tosend) do\n" +" h = (canonic[f] or f) .. ': ' .. v .. \"\r\n\" .. h\n" +" end\n" +" coroutine.yield(h)\n" +"end\n" +"\n" +"-- yield multipart message body from a multipart message table\n" +"local function send_multipart(mesgt)\n" +" -- make sure we have our boundary and send headers\n" +" local bd = newboundary()\n" +" local headers = lower_headers(mesgt.headers or {})\n" +" headers['content-type'] = headers['content-type'] or 'multipart/mixed'\n" +" headers['content-type'] = headers['content-type'] ..\n" +" '; boundary=\"' .. bd .. '\"'\n" +" send_headers(headers)\n" +" -- send preamble\n" +" if mesgt.body.preamble then\n" +" coroutine.yield(mesgt.body.preamble)\n" +" coroutine.yield(\"\r\n\")\n" +" end\n" +" -- send each part separated by a boundary\n" +" for i, m in base.ipairs(mesgt.body) do\n" +" coroutine.yield(\"\r\n--\" .. bd .. \"\r\n\")\n" +" send_message(m)\n" +" end\n" +" -- send last boundary\n" +" coroutine.yield(\"\r\n--\" .. bd .. \"--\r\n\r\n\")\n" +" -- send epilogue\n" +" if mesgt.body.epilogue then\n" +" coroutine.yield(mesgt.body.epilogue)\n" +" coroutine.yield(\"\r\n\")\n" +" end\n" +"end\n" +"\n" +"-- yield message body from a source\n" +"local function send_source(mesgt)\n" +" -- make sure we have a content-type\n" +" local headers = lower_headers(mesgt.headers or {})\n" +" headers['content-type'] = headers['content-type'] or\n" +" 'text/plain; charset=\"iso-8859-1\"'\n" +" send_headers(headers)\n" +" -- send body from source\n" +" while true do\n" +" local chunk, err = mesgt.body()\n" +" if err then coroutine.yield(nil, err)\n" +" elseif chunk then coroutine.yield(chunk)\n" +" else break end\n" +" end\n" +"end\n" +"\n" +"-- yield message body from a string\n" +"local function send_string(mesgt)\n" +" -- make sure we have a content-type\n" +" local headers = lower_headers(mesgt.headers or {})\n" +" headers['content-type'] = headers['content-type'] or\n" +" 'text/plain; charset=\"iso-8859-1\"'\n" +" send_headers(headers)\n" +" -- send body from string\n" +" coroutine.yield(mesgt.body)\n" +"end\n" +"\n" +"-- message source\n" +"function send_message(mesgt)\n" +" if base.type(mesgt.body) == \"table\" then send_multipart(mesgt)\n" +" elseif base.type(mesgt.body) == \"function\" then send_source(mesgt)\n" +" else send_string(mesgt) end\n" +"end\n" +"\n" +"-- set defaul headers\n" +"local function adjust_headers(mesgt)\n" +" local lower = lower_headers(mesgt.headers)\n" +" lower[\"date\"] = lower[\"date\"] or\n" +" os.date(\"!%a, %d %b %Y %H:%M:%S \") .. (mesgt.zone or _M.ZONE)\n" +" lower[\"x-mailer\"] = lower[\"x-mailer\"] or socket._VERSION\n" +" -- this can't be overriden\n" +" lower[\"mime-version\"] = \"1.0\"\n" +" return lower\n" +"end\n" +"\n" +"function _M.message(mesgt)\n" +" mesgt.headers = adjust_headers(mesgt)\n" +" -- create and return message source\n" +" local co = coroutine.create(function() send_message(mesgt) end)\n" +" return function()\n" +" local ret, a, b = coroutine.resume(co)\n" +" if ret then return a, b\n" +" else return nil, a end\n" +" end\n" +"end\n" +"\n" +"---------------------------------------------------------------------------\n" +"-- High level SMTP API\n" +"-----------------------------------------------------------------------------\n" +"_M.send = socket.protect(function(mailt)\n" +" local s = _M.open(mailt.server, mailt.port, mailt.create)\n" +" local ext = s:greet(mailt.domain)\n" +" s:auth(mailt.user, mailt.password, ext)\n" +" s:send(mailt)\n" +" s:quit()\n" +" return s:close()\n" +"end)\n" +"\n" +"return _M\n" +"\n"; + +/* socket.tp */ +static const char *lua_m_socket_tp = +"-----------------------------------------------------------------------------\n" +"-- Unified SMTP/FTP subsystem\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-----------------------------------------------------------------------------\n" +"local base = _G\n" +"local string = require(\"string\")\n" +"local socket = require(\"socket.socket\")\n" +"local ltn12 = require(\"socket.ltn12\")\n" +"\n" +"socket.tp = {}\n" +"local _M = socket.tp\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Program constants\n" +"-----------------------------------------------------------------------------\n" +"_M.TIMEOUT = 60\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Implementation\n" +"-----------------------------------------------------------------------------\n" +"-- gets server reply (works for SMTP and FTP)\n" +"local function get_reply(c)\n" +" local code, current, sep\n" +" local line, err = c:receive()\n" +" local reply = line\n" +" if err then return nil, err end\n" +" code, sep = socket.skip(2, string.find(line, \"^(%d%d%d)(.?)\"))\n" +" if not code then return nil, \"invalid server reply\" end\n" +" if sep == \"-\" then -- reply is multiline\n" +" repeat\n" +" line, err = c:receive()\n" +" if err then return nil, err end\n" +" current, sep = socket.skip(2, string.find(line, \"^(%d%d%d)(.?)\"))\n" +" reply = reply .. \"\n\" .. line\n" +" -- reply ends with same code\n" +" until code == current and sep == \" \"\n" +" end\n" +" return code, reply\n" +"end\n" +"\n" +"-- metatable for sock object\n" +"local metat = { __index = {} }\n" +"\n" +"function metat.__index:check(ok)\n" +" local code, reply = get_reply(self.c)\n" +" if not code then return nil, reply end\n" +" if base.type(ok) ~= \"function\" then\n" +" if base.type(ok) == \"table\" then\n" +" for i, v in base.ipairs(ok) do\n" +" if string.find(code, v) then\n" +" return base.tonumber(code), reply\n" +" end\n" +" end\n" +" return nil, reply\n" +" else\n" +" if string.find(code, ok) then return base.tonumber(code), reply\n" +" else return nil, reply end\n" +" end\n" +" else return ok(base.tonumber(code), reply) end\n" +"end\n" +"\n" +"function metat.__index:command(cmd, arg)\n" +" cmd = string.upper(cmd)\n" +" if arg then\n" +" return self.c:send(cmd .. \" \" .. arg.. \"\r\n\")\n" +" else\n" +" return self.c:send(cmd .. \"\r\n\")\n" +" end\n" +"end\n" +"\n" +"function metat.__index:sink(snk, pat)\n" +" local chunk, err = c:receive(pat)\n" +" return snk(chunk, err)\n" +"end\n" +"\n" +"function metat.__index:send(data)\n" +" return self.c:send(data)\n" +"end\n" +"\n" +"function metat.__index:receive(pat)\n" +" return self.c:receive(pat)\n" +"end\n" +"\n" +"function metat.__index:getfd()\n" +" return self.c:getfd()\n" +"end\n" +"\n" +"function metat.__index:dirty()\n" +" return self.c:dirty()\n" +"end\n" +"\n" +"function metat.__index:getcontrol()\n" +" return self.c\n" +"end\n" +"\n" +"function metat.__index:source(source, step)\n" +" local sink = socket.sink(\"keep-open\", self.c)\n" +" local ret, err = ltn12.pump.all(source, sink, step or ltn12.pump.step)\n" +" return ret, err\n" +"end\n" +"\n" +"-- closes the underlying c\n" +"function metat.__index:close()\n" +" self.c:close()\n" +" return 1\n" +"end\n" +"\n" +"-- connect with server and return c object\n" +"function _M.connect(host, port, timeout, create)\n" +" local c, e = (create or socket.tcp)()\n" +" if not c then return nil, e end\n" +" c:settimeout(timeout or _M.TIMEOUT)\n" +" local r, e = c:connect(host, port)\n" +" if not r then\n" +" c:close()\n" +" return nil, e\n" +" end\n" +" return base.setmetatable({c = c}, metat)\n" +"end\n" +"\n" +"return _M\n" +"\n"; + +/* socket.url */ +static const char *lua_m_socket_url = +"-----------------------------------------------------------------------------\n" +"-- URI parsing, composition and relative URL resolution\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module\n" +"-----------------------------------------------------------------------------\n" +"local string = require(\"string\")\n" +"local base = _G\n" +"local table = require(\"table\")\n" +"local socket = require(\"socket.socket\")\n" +"\n" +"socket.url = {}\n" +"local _M = socket.url\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Module version\n" +"-----------------------------------------------------------------------------\n" +"_M._VERSION = \"URL 1.0.3\"\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Encodes a string into its escaped hexadecimal representation\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"function _M.escape(s)\n" +" return (string.gsub(s, \"([^A-Za-z0-9_])\", function(c)\n" +" return string.format(\"%%%02x\", string.byte(c))\n" +" end))\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Protects a path segment, to prevent it from interfering with the\n" +"-- url parsing.\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"local function make_set(t)\n" +" local s = {}\n" +" for i,v in base.ipairs(t) do\n" +" s[t[i]] = 1\n" +" end\n" +" return s\n" +"end\n" +"\n" +"-- these are allowed withing a path segment, along with alphanum\n" +"-- other characters must be escaped\n" +"local segment_set = make_set {\n" +" \"-\", \"_\", \".\", \"!\", \"~\", \"*\", \"'\", \"(\",\n" +" \")\", \":\", \"@\", \"&\", \"=\", \"+\", \"$\", \",\",\n" +"}\n" +"\n" +"local function protect_segment(s)\n" +" return string.gsub(s, \"([^A-Za-z0-9_])\", function (c)\n" +" if segment_set[c] then return c\n" +" else return string.format(\"%%%02x\", string.byte(c)) end\n" +" end)\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Encodes a string into its escaped hexadecimal representation\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"function _M.unescape(s)\n" +" return (string.gsub(s, \"%%(%x%x)\", function(hex)\n" +" return string.char(base.tonumber(hex, 16))\n" +" end))\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a path from a base path and a relative path\n" +"-- Input\n" +"-- base_path\n" +"-- relative_path\n" +"-- Returns\n" +"-- corresponding absolute path\n" +"-----------------------------------------------------------------------------\n" +"local function absolute_path(base_path, relative_path)\n" +" if string.sub(relative_path, 1, 1) == \"/\" then return relative_path end\n" +" local path = string.gsub(base_path, \"[^/]*$\", \"\")\n" +" path = path .. relative_path\n" +" path = string.gsub(path, \"([^/]*%./)\", function (s)\n" +" if s ~= \"./\" then return s else return \"\" end\n" +" end)\n" +" path = string.gsub(path, \"/%.$\", \"/\")\n" +" local reduced\n" +" while reduced ~= path do\n" +" reduced = path\n" +" path = string.gsub(reduced, \"([^/]*/%.%./)\", function (s)\n" +" if s ~= \"../../\" then return \"\" else return s end\n" +" end)\n" +" end\n" +" path = string.gsub(reduced, \"([^/]*/%.%.)$\", function (s)\n" +" if s ~= \"../..\" then return \"\" else return s end\n" +" end)\n" +" return path\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Parses a url and returns a table with all its parts according to RFC 2396\n" +"-- The following grammar describes the names given to the URL parts\n" +"-- ::= :///;?#\n" +"-- ::= @:\n" +"-- ::= [:]\n" +"-- :: = {/}\n" +"-- Input\n" +"-- url: uniform resource locator of request\n" +"-- default: table with default values for each field\n" +"-- Returns\n" +"-- table with the following fields, where RFC naming conventions have\n" +"-- been preserved:\n" +"-- scheme, authority, userinfo, user, password, host, port,\n" +"-- path, params, query, fragment\n" +"-- Obs:\n" +"-- the leading '/' in {/} is considered part of \n" +"-----------------------------------------------------------------------------\n" +"function _M.parse(url, default)\n" +" -- initialize default parameters\n" +" local parsed = {}\n" +" for i,v in base.pairs(default or parsed) do parsed[i] = v end\n" +" -- empty url is parsed to nil\n" +" if not url or url == \"\" then return nil, \"invalid url\" end\n" +" -- remove whitespace\n" +" -- url = string.gsub(url, \"%s\", \"\")\n" +" -- get fragment\n" +" url = string.gsub(url, \"#(.*)$\", function(f)\n" +" parsed.fragment = f\n" +" return \"\"\n" +" end)\n" +" -- get scheme\n" +" url = string.gsub(url, \"^([%w][%w%+%-%.]*)%:\",\n" +" function(s) parsed.scheme = s; return \"\" end)\n" +" -- get authority\n" +" url = string.gsub(url, \"^//([^/]*)\", function(n)\n" +" parsed.authority = n\n" +" return \"\"\n" +" end)\n" +" -- get query string\n" +" url = string.gsub(url, \"%?(.*)\", function(q)\n" +" parsed.query = q\n" +" return \"\"\n" +" end)\n" +" -- get params\n" +" url = string.gsub(url, \"%;(.*)\", function(p)\n" +" parsed.params = p\n" +" return \"\"\n" +" end)\n" +" -- path is whatever was left\n" +" if url ~= \"\" then parsed.path = url end\n" +" local authority = parsed.authority\n" +" if not authority then return parsed end\n" +" authority = string.gsub(authority,\"^([^@]*)@\",\n" +" function(u) parsed.userinfo = u; return \"\" end)\n" +" authority = string.gsub(authority, \":([^:%]]*)$\",\n" +" function(p) parsed.port = p; return \"\" end)\n" +" if authority ~= \"\" then\n" +" -- IPv6?\n" +" parsed.host = string.match(authority, \"^%[(.+)%]$\") or authority\n" +" end\n" +" local userinfo = parsed.userinfo\n" +" if not userinfo then return parsed end\n" +" userinfo = string.gsub(userinfo, \":([^:]*)$\",\n" +" function(p) parsed.password = p; return \"\" end)\n" +" parsed.user = userinfo\n" +" return parsed\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Rebuilds a parsed URL from its components.\n" +"-- Components are protected if any reserved or unallowed characters are found\n" +"-- Input\n" +"-- parsed: parsed URL, as returned by parse\n" +"-- Returns\n" +"-- a stringing with the corresponding URL\n" +"-----------------------------------------------------------------------------\n" +"function _M.build(parsed)\n" +" local ppath = _M.parse_path(parsed.path or \"\")\n" +" local url = _M.build_path(ppath)\n" +" if parsed.params then url = url .. \";\" .. parsed.params end\n" +" if parsed.query then url = url .. \"?\" .. parsed.query end\n" +" local authority = parsed.authority\n" +" if parsed.host then\n" +" authority = parsed.host\n" +" if string.find(authority, \":\") then -- IPv6?\n" +" authority = \"[\" .. authority .. \"]\"\n" +" end\n" +" if parsed.port then authority = authority .. \":\" .. parsed.port end\n" +" local userinfo = parsed.userinfo\n" +" if parsed.user then\n" +" userinfo = parsed.user\n" +" if parsed.password then\n" +" userinfo = userinfo .. \":\" .. parsed.password\n" +" end\n" +" end\n" +" if userinfo then authority = userinfo .. \"@\" .. authority end\n" +" end\n" +" if authority then url = \"//\" .. authority .. url end\n" +" if parsed.scheme then url = parsed.scheme .. \":\" .. url end\n" +" if parsed.fragment then url = url .. \"#\" .. parsed.fragment end\n" +" -- url = string.gsub(url, \"%s\", \"\")\n" +" return url\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a absolute URL from a base and a relative URL according to RFC 2396\n" +"-- Input\n" +"-- base_url\n" +"-- relative_url\n" +"-- Returns\n" +"-- corresponding absolute url\n" +"-----------------------------------------------------------------------------\n" +"function _M.absolute(base_url, relative_url)\n" +" if base.type(base_url) == \"table\" then\n" +" base_parsed = base_url\n" +" base_url = _M.build(base_parsed)\n" +" else\n" +" base_parsed = _M.parse(base_url)\n" +" end\n" +" local relative_parsed = _M.parse(relative_url)\n" +" if not base_parsed then return relative_url\n" +" elseif not relative_parsed then return base_url\n" +" elseif relative_parsed.scheme then return relative_url\n" +" else\n" +" relative_parsed.scheme = base_parsed.scheme\n" +" if not relative_parsed.authority then\n" +" relative_parsed.authority = base_parsed.authority\n" +" if not relative_parsed.path then\n" +" relative_parsed.path = base_parsed.path\n" +" if not relative_parsed.params then\n" +" relative_parsed.params = base_parsed.params\n" +" if not relative_parsed.query then\n" +" relative_parsed.query = base_parsed.query\n" +" end\n" +" end\n" +" else\n" +" relative_parsed.path = absolute_path(base_parsed.path or \"\",\n" +" relative_parsed.path)\n" +" end\n" +" end\n" +" return _M.build(relative_parsed)\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Breaks a path into its segments, unescaping the segments\n" +"-- Input\n" +"-- path\n" +"-- Returns\n" +"-- segment: a table with one entry per segment\n" +"-----------------------------------------------------------------------------\n" +"function _M.parse_path(path)\n" +" local parsed = {}\n" +" path = path or \"\"\n" +" --path = string.gsub(path, \"%s\", \"\")\n" +" string.gsub(path, \"([^/]+)\", function (s) table.insert(parsed, s) end)\n" +" for i = 1, #parsed do\n" +" parsed[i] = _M.unescape(parsed[i])\n" +" end\n" +" if string.sub(path, 1, 1) == \"/\" then parsed.is_absolute = 1 end\n" +" if string.sub(path, -1, -1) == \"/\" then parsed.is_directory = 1 end\n" +" return parsed\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a path component from its segments, escaping protected characters.\n" +"-- Input\n" +"-- parsed: path segments\n" +"-- unsafe: if true, segments are not protected before path is built\n" +"-- Returns\n" +"-- path: corresponding path stringing\n" +"-----------------------------------------------------------------------------\n" +"function _M.build_path(parsed, unsafe)\n" +" local path = \"\"\n" +" local n = #parsed\n" +" if unsafe then\n" +" for i = 1, n-1 do\n" +" path = path .. parsed[i]\n" +" path = path .. \"/\"\n" +" end\n" +" if n > 0 then\n" +" path = path .. parsed[n]\n" +" if parsed.is_directory then path = path .. \"/\" end\n" +" end\n" +" else\n" +" for i = 1, n-1 do\n" +" path = path .. protect_segment(parsed[i])\n" +" path = path .. \"/\"\n" +" end\n" +" if n > 0 then\n" +" path = path .. protect_segment(parsed[n])\n" +" if parsed.is_directory then path = path .. \"/\" end\n" +" end\n" +" end\n" +" if parsed.is_absolute then path = \"/\" .. path end\n" +" return path\n" +"end\n" +"\n" +"return _M\n" +"\n"; + +/* socket */ +static const char *lua_m_socket = +"-----------------------------------------------------------------------------\n" +"-- LuaSocket helper module\n" +"-- Author: Diego Nehab\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module and import dependencies\n" +"-----------------------------------------------------------------------------\n" +"local base = _G\n" +"local string = require(\"string\")\n" +"local math = require(\"math\")\n" +"local socket = require(\"socket.core\")\n" +"\n" +"local _M = socket\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Exported auxiliar functions\n" +"-----------------------------------------------------------------------------\n" +"function _M.connect4(address, port, laddress, lport)\n" +" return socket.connect(address, port, laddress, lport, \"inet\")\n" +"end\n" +"\n" +"function _M.connect6(address, port, laddress, lport)\n" +" return socket.connect(address, port, laddress, lport, \"inet6\")\n" +"end\n" +"\n" +"function _M.bind(host, port, backlog)\n" +" if host == \"*\" then host = \"0.0.0.0\" end\n" +" local addrinfo, err = socket.dns.getaddrinfo(host);\n" +" if not addrinfo then return nil, err end\n" +" local sock, res\n" +" err = \"no info on address\"\n" +" for i, alt in base.ipairs(addrinfo) do\n" +" if alt.family == \"inet\" then\n" +" sock, err = socket.tcp()\n" +" else\n" +" sock, err = socket.tcp6()\n" +" end\n" +" if not sock then return nil, err end\n" +" sock:setoption(\"reuseaddr\", true)\n" +" res, err = sock:bind(alt.addr, port)\n" +" if not res then \n" +" sock:close()\n" +" else \n" +" res, err = sock:listen(backlog)\n" +" if not res then \n" +" sock:close()\n" +" else\n" +" return sock\n" +" end\n" +" end \n" +" end\n" +" return nil, err\n" +"end\n" +"\n" +"_M.try = _M.newtry()\n" +"\n" +"function _M.choose(table)\n" +" return function(name, opt1, opt2)\n" +" if base.type(name) ~= \"string\" then\n" +" name, opt1, opt2 = \"default\", name, opt1\n" +" end\n" +" local f = table[name or \"nil\"]\n" +" if not f then base.error(\"unknown key (\".. base.tostring(name) ..\")\", 3)\n" +" else return f(opt1, opt2) end\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Socket sources and sinks, conforming to LTN12\n" +"-----------------------------------------------------------------------------\n" +"-- create namespaces inside LuaSocket namespace\n" +"local sourcet, sinkt = {}, {}\n" +"_M.sourcet = sourcet\n" +"_M.sinkt = sinkt\n" +"\n" +"_M.BLOCKSIZE = 2048\n" +"\n" +"sinkt[\"close-when-done\"] = function(sock)\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function(self, chunk, err)\n" +" if not chunk then\n" +" sock:close()\n" +" return 1\n" +" else return sock:send(chunk) end\n" +" end\n" +" })\n" +"end\n" +"\n" +"sinkt[\"keep-open\"] = function(sock)\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function(self, chunk, err)\n" +" if chunk then return sock:send(chunk)\n" +" else return 1 end\n" +" end\n" +" })\n" +"end\n" +"\n" +"sinkt[\"default\"] = sinkt[\"keep-open\"]\n" +"\n" +"_M.sink = _M.choose(sinkt)\n" +"\n" +"sourcet[\"by-length\"] = function(sock, length)\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function()\n" +" if length <= 0 then return nil end\n" +" local size = math.min(socket.BLOCKSIZE, length)\n" +" local chunk, err = sock:receive(size)\n" +" if err then return nil, err end\n" +" length = length - string.len(chunk)\n" +" return chunk\n" +" end\n" +" })\n" +"end\n" +"\n" +"sourcet[\"until-closed\"] = function(sock)\n" +" local done\n" +" return base.setmetatable({\n" +" getfd = function() return sock:getfd() end,\n" +" dirty = function() return sock:dirty() end\n" +" }, {\n" +" __call = function()\n" +" if done then return nil end\n" +" local chunk, err, partial = sock:receive(socket.BLOCKSIZE)\n" +" if not err then return chunk\n" +" elseif err == \"closed\" then\n" +" sock:close()\n" +" done = 1\n" +" return partial\n" +" else return nil, err end\n" +" end\n" +" })\n" +"end\n" +"\n" +"\n" +"sourcet[\"default\"] = sourcet[\"until-closed\"]\n" +"\n" +"_M.source = _M.choose(sourcet)\n" +"\n" +"return _M\n" +"\n"; + + + +int luaopen_lua_m_ltn12(lua_State *L) { + luaL_loadstring(L, lua_m_ltn12); + return 1; +} + + +int luaopen_lua_m_mime(lua_State *L) { + luaL_loadstring(L, lua_m_mime); + return 1; +} + + +int luaopen_lua_m_socket_ftp(lua_State *L) { + luaL_loadstring(L, lua_m_socket_ftp); + return 1; +} + + +int luaopen_lua_m_socket_headers(lua_State *L) { + luaL_loadstring(L, lua_m_socket_headers); + return 1; +} + + +int luaopen_lua_m_socket_http(lua_State *L) { + luaL_loadstring(L, lua_m_socket_http); + return 1; +} + + +int luaopen_lua_m_socket_mbox(lua_State *L) { + luaL_loadstring(L, lua_m_socket_mbox); + return 1; +} + + +int luaopen_lua_m_socket_smtp(lua_State *L) { + luaL_loadstring(L, lua_m_socket_smtp); + return 1; +} + + +int luaopen_lua_m_socket_tp(lua_State *L) { + luaL_loadstring(L, lua_m_socket_tp); + return 1; +} + + +int luaopen_lua_m_socket_url(lua_State *L) { + luaL_loadstring(L, lua_m_socket_url); + return 1; +} + + +int luaopen_lua_m_socket(lua_State *L) { + luaL_loadstring(L, lua_m_socket); + return 1; +} + + +static luaL_Reg luasocket_scripts_modules[] = { + {"ltn12", luaopen_lua_m_ltn12}, + {"mime", luaopen_lua_m_mime}, + {"socket.ftp", luaopen_lua_m_socket_ftp}, + {"socket.headers", luaopen_lua_m_socket_headers}, + {"socket.http", luaopen_lua_m_socket_http}, + {"socket.mbox", luaopen_lua_m_socket_mbox}, + {"socket.smtp", luaopen_lua_m_socket_smtp}, + {"socket.tp", luaopen_lua_m_socket_tp}, + {"socket.url", luaopen_lua_m_socket_url}, + {"socket", luaopen_lua_m_socket}, + {NULL, NULL} +}; + +void luaopen_luasocket_scripts(lua_State* L) +{ + luaL_Reg* lib = luasocket_scripts_modules; + lua_getglobal(L, "package"); + lua_getfield(L, -1, "preload"); + for (; lib->func; lib++) + { + lib->func(L); + lua_setfield(L, -2, lib->name); + } + lua_pop(L, 2); +} diff --git a/external/lua/luasocket/luasocket_scripts.h b/external/lua/luasocket/luasocket_scripts.h new file mode 100644 index 0000000000..463d9f9792 --- /dev/null +++ b/external/lua/luasocket/luasocket_scripts.h @@ -0,0 +1,32 @@ + +/* luasocket_scripts.h.h */ + +#ifndef __LUA_MODULES_7381EB5AEEAEA2DF0F25EF8827143F4A_H_ +#define __LUA_MODULES_7381EB5AEEAEA2DF0F25EF8827143F4A_H_ + +#if __cplusplus +extern "C" { +#endif + +#include "lua.h" + +void luaopen_luasocket_scripts(lua_State* L); + +/* +int luaopen_lua_m_ltn12(lua_State* L); +int luaopen_lua_m_mime(lua_State* L); +int luaopen_lua_m_socket_ftp(lua_State* L); +int luaopen_lua_m_socket_headers(lua_State* L); +int luaopen_lua_m_socket_http(lua_State* L); +int luaopen_lua_m_socket_mbox(lua_State* L); +int luaopen_lua_m_socket_smtp(lua_State* L); +int luaopen_lua_m_socket_tp(lua_State* L); +int luaopen_lua_m_socket_url(lua_State* L); +int luaopen_lua_m_socket(lua_State* L); +*/ + +#if __cplusplus +} +#endif + +#endif /* __LUA_MODULES_7381EB5AEEAEA2DF0F25EF8827143F4A_H_ */ diff --git a/templates/cocos2dx_files.json b/templates/cocos2dx_files.json index 2eb2742e74..6276d25090 100644 --- a/templates/cocos2dx_files.json +++ b/templates/cocos2dx_files.json @@ -4979,38 +4979,40 @@ "external/lua/luasocket/buffer.h", "external/lua/luasocket/except.c", "external/lua/luasocket/except.h", - "external/lua/luasocket/ftp.lua", - "external/lua/luasocket/headers.lua", - "external/lua/luasocket/http.lua", "external/lua/luasocket/inet.c", "external/lua/luasocket/inet.h", "external/lua/luasocket/io.c", "external/lua/luasocket/io.h", - "external/lua/luasocket/ltn12.lua", "external/lua/luasocket/luasocket.c", "external/lua/luasocket/luasocket.h", - "external/lua/luasocket/mbox.lua", + "external/lua/luasocket/luasocket_scripts.c", + "external/lua/luasocket/luasocket_scripts.h", "external/lua/luasocket/mime.c", "external/lua/luasocket/mime.h", - "external/lua/luasocket/mime.lua", "external/lua/luasocket/options.c", "external/lua/luasocket/options.h", + "external/lua/luasocket/script/ltn12.lua", + "external/lua/luasocket/script/mime.lua", + "external/lua/luasocket/script/socket.lua", + "external/lua/luasocket/script/socket/ftp.lua", + "external/lua/luasocket/script/socket/headers.lua", + "external/lua/luasocket/script/socket/http.lua", + "external/lua/luasocket/script/socket/mbox.lua", + "external/lua/luasocket/script/socket/smtp.lua", + "external/lua/luasocket/script/socket/tp.lua", + "external/lua/luasocket/script/socket/url.lua", "external/lua/luasocket/select.c", "external/lua/luasocket/select.h", "external/lua/luasocket/serial.c", - "external/lua/luasocket/smtp.lua", "external/lua/luasocket/socket.h", - "external/lua/luasocket/socket.lua", "external/lua/luasocket/tcp.c", "external/lua/luasocket/tcp.h", "external/lua/luasocket/timeout.c", "external/lua/luasocket/timeout.h", - "external/lua/luasocket/tp.lua", "external/lua/luasocket/udp.c", "external/lua/luasocket/udp.h", "external/lua/luasocket/unix.c", "external/lua/luasocket/unix.h", - "external/lua/luasocket/url.lua", "external/lua/luasocket/usocket.c", "external/lua/luasocket/usocket.h", "external/lua/luasocket/wsocket.c", @@ -5115,4 +5117,4 @@ "tools/tolua/cocos2dx_ui.ini", "tools/tolua/genbindings.py" ] -} \ No newline at end of file +} diff --git a/templates/lua-template-default/cocos-project-template.json b/templates/lua-template-default/cocos-project-template.json index 2a4a631992..fa03173624 100644 --- a/templates/lua-template-default/cocos-project-template.json +++ b/templates/lua-template-default/cocos-project-template.json @@ -8,46 +8,6 @@ "from": "cocos/scripting/lua-bindings/script", "to": "src/cocos", "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "src/cocos/cocos2d", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "src/cocos/cocosbuilder", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "src/cocos/cocosdenshion", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosstudio", - "to": "src/cocos/cocosstudio", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/controller", - "to": "src/cocos/controller", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "src/cocos/extension", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "src/cocos/network", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "src/cocos/ui", - "exclude": [] } ] }, diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp index 5db5d224a0..95b4147a41 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -35,6 +35,10 @@ bool AppDelegate::applicationDidFinishLaunching() ScriptEngineManager::getInstance()->setScriptEngine(engine); lua_State* L = engine->getLuaStack()->getLuaState(); lua_module_register(L); + + // If you want to use Quick-Cocos2d-X, please uncomment below code + // register_all_quick_manual(L); + if (engine->executeScriptFile("src/main.lua")) { return false; } diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h b/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h index 40dd7dd00f..202e56e99a 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h @@ -10,6 +10,7 @@ #include "spine/lua_cocos2dx_spine_manual.hpp" #include "3d/lua_cocos2dx_3d_manual.h" #include "audioengine/lua_cocos2dx_audioengine_manual.h" +#include "lua/quick/lua_cocos2dx_quick_manual.hpp" int lua_module_register(lua_State* L) { diff --git a/templates/lua-template-runtime/cocos-project-template.json b/templates/lua-template-runtime/cocos-project-template.json index 070e2e8b45..8a65e15732 100644 --- a/templates/lua-template-runtime/cocos-project-template.json +++ b/templates/lua-template-runtime/cocos-project-template.json @@ -14,194 +14,9 @@ }, "append_dir": [ { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", + "from": "cocos/scripting/lua-bindings/script", + "to": "src/cocos", "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "include": [ - "*.lua" - ] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "include": [ - "*.lua" - ] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/win32", - "include": [ - "*.lua" - ] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "external/win32-specific/gles/prebuilt", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/win32-specific/zlib/prebuilt", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/win32-specific/icon/prebuilt", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/curl/prebuilt/win32", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/lua/luajit/prebuilt/win32", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/websockets/prebuilt/win32", - "to": "runtime/win32", - "include": [ - "*.dll" - ] - }, - { - "from": "external/tiff/prebuilt/win32", - "to": "runtime/win32", - "include": [ - "*.dll" - ] } ] }, diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp index 54190dbd03..af616c011e 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -58,6 +58,9 @@ bool AppDelegate::applicationDidFinishLaunching() lua_State* L = engine->getLuaStack()->getLuaState(); lua_module_register(L); + // If you want to use Quick-Cocos2d-X, please uncomment below code + // register_all_quick_manual(L); + LuaStack* stack = engine->getLuaStack(); stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h index f6945cd797..88d03e1eda 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h @@ -10,6 +10,7 @@ #include "spine/lua_cocos2dx_spine_manual.hpp" #include "3d/lua_cocos2dx_3d_manual.h" #include "audioengine/lua_cocos2dx_audioengine_manual.h" +#include "lua/quick/lua_cocos2dx_quick_manual.hpp" int lua_module_register(lua_State* L) { diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c index cf7bf2a55a..7b66e1c7c3 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c @@ -1,3123 +1,3497 @@ -/* debugger.c */ -#if __cplusplus -extern "C"{ -#endif +/* lua_debugger.c */ + #include "lua.h" #include "lauxlib.h" #include "lua_debugger.h" -#if __cplusplus -} -#endif -/* ldt_debugger */ -static const char lua_m_ldt_debugger[] = { - 0x1b,0x4c,0x4a,0x01,0x02,0x87,0x01,0x00,0x01,0x0c,0x00,0x06,0x02,0x18,0x32,0x01, - 0x00,0x00,0x34,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x3e,0x02, - 0x02,0x02,0x27,0x03,0x01,0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x4c,0x00,0x49,0x03, - 0x0b,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00,0x07,0x10,0x09,0x02,0x00,0x37,0x08, - 0x02,0x02,0x10,0x0a,0x06,0x00,0x14,0x0b,0x01,0x06,0x3e,0x08,0x04,0x02,0x25,0x09, - 0x03,0x00,0x24,0x08,0x09,0x08,0x39,0x08,0x07,0x01,0x4b,0x03,0xf5,0x7f,0x34,0x03, - 0x04,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x01,0x00,0x40,0x03,0x02,0x00,0x0b,0x63, - 0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x0d,0x0a,0x08,0x73, - 0x75,0x62,0x08,0x62,0x36,0x34,0x09,0x6d,0x69,0x6d,0x65,0x02,0x96,0x01,0x2b,0x00, - 0x03,0x07,0x00,0x02,0x00,0x06,0x37,0x03,0x00,0x00,0x10,0x04,0x03,0x00,0x37,0x03, - 0x01,0x03,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x0c,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x08,0x73,0x6b,0x74,0x24,0x00,0x02,0x05,0x00,0x02, - 0x00,0x05,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x10,0x04, - 0x01,0x00,0x40,0x02,0x03,0x00,0x09,0x72,0x65,0x61,0x64,0x08,0x73,0x6b,0x74,0x25, - 0x00,0x02,0x05,0x00,0x02,0x00,0x05,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37, - 0x02,0x01,0x02,0x10,0x04,0x01,0x00,0x40,0x02,0x03,0x00,0x0a,0x77,0x72,0x69,0x74, - 0x65,0x08,0x73,0x6b,0x74,0x21,0x00,0x01,0x03,0x00,0x02,0x00,0x04,0x37,0x01,0x00, - 0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x40,0x01,0x02,0x00,0x0a,0x63,0x6c, - 0x6f,0x73,0x65,0x08,0x73,0x6b,0x74,0x8a,0x01,0x00,0x02,0x06,0x00,0x04,0x02,0x19, - 0x0b,0x01,0x00,0x00,0x54,0x02,0x06,0x80,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00, - 0x37,0x02,0x01,0x02,0x29,0x04,0x02,0x00,0x3e,0x02,0x03,0x01,0x54,0x02,0x10,0x80, - 0x09,0x01,0x00,0x00,0x54,0x02,0x06,0x80,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00, - 0x37,0x02,0x01,0x02,0x29,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x54,0x02,0x08,0x80, - 0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x34,0x04,0x02,0x00, - 0x37,0x04,0x03,0x04,0x16,0x05,0x01,0x01,0x3e,0x04,0x02,0x00,0x3d,0x02,0x01,0x01, - 0x47,0x00,0x01,0x00,0x0a,0x66,0x6c,0x6f,0x6f,0x72,0x09,0x6d,0x61,0x74,0x68,0x10, - 0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x5f,0x73,0x65,0x74,0x08,0x73,0x6b,0x74,0x00, - 0x80,0x89,0x7a,0x69,0x00,0x00,0x05,0x02,0x05,0x00,0x0e,0x2b,0x00,0x00,0x00,0x37, - 0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x03,0x0e,0x00,0x00,0x00,0x54, - 0x02,0x03,0x80,0x29,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x46,0x02,0x03,0x00,0x34, - 0x02,0x02,0x00,0x33,0x03,0x03,0x00,0x3a,0x00,0x04,0x03,0x2b,0x04,0x01,0x00,0x40, - 0x02,0x03,0x00,0x00,0xc0,0x01,0xc0,0x08,0x73,0x6b,0x74,0x01,0x00,0x00,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x08,0x74,0x63,0x70,0x12, - 0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x63,0x72,0x65,0x61,0x74,0x65,0x9c,0x01,0x00, - 0x01,0x0c,0x01,0x06,0x02,0x1b,0x32,0x01,0x00,0x00,0x35,0x01,0x00,0x00,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x27,0x02, - 0x01,0x00,0x13,0x03,0x01,0x00,0x27,0x04,0x4c,0x00,0x49,0x02,0x0d,0x80,0x34,0x06, - 0x00,0x00,0x34,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x10,0x09, - 0x01,0x00,0x37,0x08,0x02,0x01,0x10,0x0a,0x05,0x00,0x14,0x0b,0x01,0x05,0x3e,0x08, - 0x04,0x02,0x25,0x09,0x03,0x00,0x24,0x08,0x09,0x08,0x39,0x08,0x07,0x06,0x4b,0x02, - 0xf3,0x7f,0x34,0x02,0x04,0x00,0x37,0x02,0x05,0x02,0x34,0x03,0x00,0x00,0x40,0x02, - 0x02,0x00,0x00,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c, - 0x65,0x07,0x0d,0x0a,0x08,0x73,0x75,0x62,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f, - 0x65,0x6e,0x63,0x6f,0x64,0x65,0x06,0x74,0x02,0x96,0x01,0x8a,0x02,0x03,0x00,0x04, - 0x00,0x1a,0x00,0x1e,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, - 0x31,0x01,0x02,0x00,0x35,0x01,0x03,0x00,0x33,0x01,0x05,0x00,0x31,0x02,0x04,0x00, - 0x3a,0x02,0x06,0x01,0x31,0x02,0x07,0x00,0x3a,0x02,0x08,0x01,0x31,0x02,0x09,0x00, - 0x3a,0x02,0x0a,0x01,0x31,0x02,0x0b,0x00,0x3a,0x02,0x0c,0x01,0x31,0x02,0x0d,0x00, - 0x3a,0x02,0x0e,0x01,0x3a,0x01,0x0f,0x01,0x33,0x02,0x11,0x00,0x31,0x03,0x10,0x00, - 0x3a,0x03,0x12,0x02,0x37,0x03,0x13,0x00,0x3a,0x03,0x13,0x02,0x31,0x03,0x14,0x00, - 0x3a,0x03,0x15,0x02,0x37,0x03,0x16,0x00,0x3a,0x03,0x17,0x02,0x37,0x03,0x18,0x00, - 0x3a,0x03,0x19,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x0a,0x75,0x6e,0x62, - 0x36,0x34,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x64,0x65,0x63,0x6f,0x64,0x65, - 0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x65, - 0x6e,0x63,0x6f,0x64,0x65,0x08,0x62,0x36,0x34,0x00,0x0a,0x73,0x6c,0x65,0x65,0x70, - 0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00,0x00,0x0c,0x5f,0x5f,0x69,0x6e, - 0x64,0x65,0x78,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x00,0x09,0x73,0x65,0x6e,0x64,0x00,0x0c,0x72,0x65,0x63, - 0x65,0x69,0x76,0x65,0x00,0x0c,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x01,0x00,0x00, - 0x00,0x0d,0x62,0x36,0x34,0x5f,0x77,0x72,0x61,0x70,0x00,0x08,0x61,0x70,0x72,0x0c, - 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x17,0x00,0x01,0x02,0x00,0x00,0x00,0x04,0x0d, - 0x01,0x00,0x00,0x54,0x01,0x01,0x80,0x13,0x01,0x00,0x00,0x48,0x01,0x02,0x00,0xe0, - 0x01,0x00,0x01,0x09,0x02,0x0c,0x00,0x23,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x02,0x02,0x25,0x03,0x03,0x00, - 0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x25,0x04,0x03,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x01,0x01,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02, - 0x37,0x02,0x06,0x02,0x3e,0x02,0x01,0x03,0x2b,0x04,0x00,0x00,0x37,0x04,0x07,0x04, - 0x37,0x04,0x08,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x09,0x05,0x37,0x05,0x0a,0x05, - 0x10,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x00,0x00,0x37,0x06,0x05,0x06, - 0x37,0x06,0x01,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x00, - 0x3d,0x04,0x01,0x01,0x34,0x04,0x06,0x00,0x37,0x04,0x0b,0x04,0x10,0x05,0x03,0x00, - 0x40,0x04,0x02,0x00,0x02,0xc0,0x01,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x08,0x61,0x6c, - 0x6c,0x09,0x70,0x75,0x6d,0x70,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x73,0x69,0x6e, - 0x6b,0x09,0x77,0x72,0x61,0x70,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0b,0x65,0x6e, - 0x63,0x6f,0x64,0x65,0x0a,0x63,0x68,0x61,0x69,0x6e,0x0b,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x21,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x01,0xc0,0x08, - 0x62,0x36,0x34,0x23,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37, - 0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x01, - 0xc0,0x0a,0x75,0x6e,0x62,0x36,0x34,0xf4,0x01,0x03,0x00,0x06,0x00,0x15,0x00,0x1f, - 0x34,0x00,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x00,0x03,0x80,0x34,0x00,0x02,0x00, - 0x31,0x01,0x04,0x00,0x3a,0x01,0x03,0x00,0x34,0x00,0x05,0x00,0x25,0x01,0x06,0x00, - 0x3e,0x00,0x02,0x02,0x34,0x01,0x05,0x00,0x25,0x02,0x07,0x00,0x3e,0x01,0x02,0x02, - 0x34,0x02,0x05,0x00,0x25,0x03,0x08,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x09,0x00, - 0x37,0x03,0x0a,0x03,0x3e,0x03,0x01,0x02,0x33,0x04,0x0c,0x00,0x37,0x05,0x0b,0x00, - 0x3a,0x05,0x0d,0x04,0x37,0x05,0x0e,0x00,0x3a,0x05,0x0e,0x04,0x31,0x05,0x0f,0x00, - 0x3a,0x05,0x10,0x04,0x31,0x05,0x11,0x00,0x3a,0x05,0x12,0x04,0x31,0x05,0x13,0x00, - 0x3a,0x05,0x14,0x04,0x30,0x00,0x00,0x80,0x48,0x04,0x02,0x00,0x0a,0x75,0x6e,0x62, - 0x36,0x34,0x00,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x00,0x08,0x62,0x36,0x34,0x00, - 0x0a,0x73,0x6c,0x65,0x65,0x70,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00, - 0x08,0x74,0x63,0x70,0x10,0x67,0x65,0x74,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79, - 0x0a,0x64,0x65,0x62,0x75,0x67,0x0a,0x6c,0x74,0x6e,0x31,0x32,0x09,0x6d,0x69,0x6d, - 0x65,0x0b,0x73,0x6f,0x63,0x6b,0x65,0x74,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65, - 0x00,0x09,0x67,0x65,0x74,0x6e,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0c,0x4c,0x75,0x61, - 0x20,0x35,0x2e,0x32,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x21,0x00,0x03, - 0x07,0x01,0x01,0x00,0x05,0x2b,0x03,0x00,0x00,0x37,0x04,0x00,0x00,0x10,0x05,0x01, - 0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x05,0xc0,0x08,0x73,0x6b,0x74,0x1d, - 0x00,0x02,0x05,0x01,0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10, - 0x04,0x01,0x00,0x40,0x02,0x03,0x00,0x06,0xc0,0x08,0x73,0x6b,0x74,0x1d,0x00,0x02, - 0x05,0x01,0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x01, - 0x00,0x40,0x02,0x03,0x00,0x07,0xc0,0x08,0x73,0x6b,0x74,0x1d,0x00,0x02,0x05,0x01, - 0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x40, - 0x02,0x03,0x00,0x08,0xc0,0x08,0x73,0x6b,0x74,0x19,0x00,0x01,0x03,0x01,0x01,0x00, - 0x03,0x2b,0x01,0x00,0x00,0x37,0x02,0x00,0x00,0x40,0x01,0x02,0x00,0x09,0xc0,0x08, - 0x73,0x6b,0x74,0x3b,0x00,0x00,0x03,0x02,0x03,0x00,0x07,0x34,0x00,0x00,0x00,0x33, - 0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x3a,0x02,0x02,0x01,0x2b, - 0x02,0x01,0x00,0x40,0x00,0x03,0x00,0x03,0xc0,0x0a,0xc0,0x08,0x73,0x6b,0x74,0x01, - 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0xe0, - 0x01,0x00,0x01,0x09,0x02,0x0c,0x00,0x23,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x02,0x02,0x25,0x03,0x03,0x00, - 0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x25,0x04,0x03,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x01,0x01,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02, - 0x37,0x02,0x06,0x02,0x3e,0x02,0x01,0x03,0x2b,0x04,0x00,0x00,0x37,0x04,0x07,0x04, - 0x37,0x04,0x08,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x09,0x05,0x37,0x05,0x0a,0x05, - 0x10,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x00,0x00,0x37,0x06,0x05,0x06, - 0x37,0x06,0x01,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x00, - 0x3d,0x04,0x01,0x01,0x34,0x04,0x06,0x00,0x37,0x04,0x0b,0x04,0x10,0x05,0x03,0x00, - 0x40,0x04,0x02,0x00,0x0c,0xc0,0x0b,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x08,0x61,0x6c, - 0x6c,0x09,0x70,0x75,0x6d,0x70,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x73,0x69,0x6e, - 0x6b,0x09,0x77,0x72,0x61,0x70,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0b,0x65,0x6e, - 0x63,0x6f,0x64,0x65,0x0a,0x63,0x68,0x61,0x69,0x6e,0x0b,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x21,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x0b,0xc0,0x08, - 0x62,0x36,0x34,0x23,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37, - 0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x0b, - 0xc0,0x0a,0x75,0x6e,0x62,0x36,0x34,0xac,0x04,0x03,0x00,0x11,0x00,0x28,0x00,0x48, - 0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00, - 0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x37,0x02,0x03,0x01,0x3e,0x02,0x01,0x02, - 0x37,0x03,0x04,0x00,0x37,0x04,0x05,0x00,0x37,0x05,0x06,0x02,0x37,0x05,0x07,0x05, - 0x37,0x05,0x08,0x05,0x37,0x06,0x09,0x02,0x37,0x06,0x07,0x06,0x37,0x06,0x0a,0x06, - 0x37,0x07,0x09,0x02,0x37,0x07,0x07,0x07,0x37,0x07,0x0b,0x07,0x37,0x08,0x06,0x02, - 0x37,0x08,0x07,0x08,0x37,0x08,0x0c,0x08,0x37,0x09,0x06,0x02,0x37,0x09,0x07,0x09, - 0x37,0x09,0x0d,0x09,0x33,0x0a,0x0f,0x00,0x31,0x0b,0x0e,0x00,0x3a,0x0b,0x08,0x0a, - 0x31,0x0b,0x10,0x00,0x3a,0x0b,0x0a,0x0a,0x31,0x0b,0x11,0x00,0x3a,0x0b,0x0b,0x0a, - 0x31,0x0b,0x12,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x13,0x00,0x3a,0x0b,0x0d,0x0a, - 0x3a,0x0a,0x07,0x0a,0x34,0x0b,0x00,0x00,0x25,0x0c,0x14,0x00,0x3e,0x0b,0x02,0x02, - 0x34,0x0c,0x00,0x00,0x25,0x0d,0x15,0x00,0x3e,0x0c,0x02,0x02,0x34,0x0d,0x16,0x00, - 0x37,0x0e,0x17,0x01,0x10,0x0f,0x03,0x00,0x25,0x10,0x18,0x00,0x3e,0x0e,0x03,0x02, - 0x37,0x0e,0x19,0x0e,0x06,0x0e,0x1a,0x00,0x54,0x0e,0x02,0x80,0x29,0x0e,0x01,0x00, - 0x54,0x0f,0x01,0x80,0x29,0x0e,0x02,0x00,0x25,0x0f,0x1b,0x00,0x3e,0x0d,0x03,0x01, - 0x34,0x0d,0x1c,0x00,0x37,0x0d,0x1d,0x0d,0x29,0x0e,0x00,0x00,0x3a,0x0e,0x1e,0x0d, - 0x33,0x0d,0x20,0x00,0x31,0x0e,0x1f,0x00,0x3a,0x0e,0x21,0x0d,0x3a,0x04,0x05,0x0d, - 0x31,0x0e,0x22,0x00,0x3a,0x0e,0x23,0x0d,0x31,0x0e,0x24,0x00,0x3a,0x0e,0x25,0x0d, - 0x31,0x0e,0x26,0x00,0x3a,0x0e,0x27,0x0d,0x30,0x00,0x00,0x80,0x48,0x0d,0x02,0x00, - 0x0a,0x75,0x6e,0x62,0x36,0x34,0x00,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x00,0x08, - 0x62,0x36,0x34,0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00,0x00,0x0b, - 0x73,0x6f,0x63,0x6b,0x65,0x74,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0c,0x70,0x61, - 0x63,0x6b,0x61,0x67,0x65,0x33,0x54,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x20,0x6e,0x65,0x65,0x64,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x61, - 0x6c,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, - 0x6e,0x73,0x20,0x21,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67,0x65, - 0x74,0x69,0x6e,0x66,0x6f,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x6c,0x74,0x6e, - 0x31,0x32,0x09,0x6d,0x69,0x6d,0x65,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74, - 0x09,0x73,0x65,0x6e,0x64,0x0c,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x10,0x74,0x63, - 0x70,0x7b,0x63,0x6c,0x69,0x65,0x6e,0x74,0x7d,0x0c,0x63,0x6f,0x6e,0x6e,0x65,0x63, - 0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x10,0x74,0x63,0x70,0x7b,0x6d,0x61, - 0x73,0x74,0x65,0x72,0x7d,0x0a,0x73,0x6c,0x65,0x65,0x70,0x08,0x74,0x63,0x70,0x10, - 0x67,0x65,0x74,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79,0x0a,0x64,0x65,0x62,0x75, - 0x67,0x10,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2e,0x63,0x6f,0x72,0x65,0x0c,0x72,0x65, - 0x71,0x75,0x69,0x72,0x65,0x9c,0x02,0x00,0x02,0x07,0x03,0x0b,0x00,0x26,0x0f,0x00, - 0x01,0x00,0x54,0x02,0x22,0x80,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x27,0x03, - 0x8f,0x01,0x2b,0x04,0x01,0x00,0x37,0x04,0x01,0x04,0x37,0x04,0x02,0x04,0x34,0x05, - 0x03,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x36,0x04,0x05,0x04,0x25,0x05, - 0x04,0x00,0x3e,0x02,0x04,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x00,0x03,0x27,0x04, - 0x8f,0x01,0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x10,0x06,0x02,0x00,0x3e,0x05, - 0x02,0x02,0x07,0x05,0x07,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x01,0x00,0x54,0x06, - 0x01,0x80,0x29,0x05,0x02,0x00,0x25,0x06,0x08,0x00,0x3e,0x03,0x04,0x01,0x37,0x03, - 0x09,0x00,0x38,0x03,0x01,0x03,0x04,0x02,0x03,0x00,0x54,0x03,0x04,0x80,0x2b,0x03, - 0x02,0x00,0x37,0x03,0x0a,0x03,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x37,0x02, - 0x09,0x00,0x48,0x02,0x02,0x00,0x04,0xc0,0x03,0xc0,0x05,0xc0,0x12,0x46,0x6f,0x72, - 0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x16, - 0x43,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x73,0x20,0x64,0x65,0x61, - 0x64,0x09,0x64,0x65,0x61,0x64,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0e,0x63,0x6f, - 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74,0x69,0x76, - 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0b,0x61,0x73,0x73, - 0x65,0x72,0x74,0xc3,0x01,0x00,0x02,0x07,0x02,0x0a,0x00,0x11,0x25,0x02,0x01,0x00, - 0x3a,0x02,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x03,0x02,0x37,0x03,0x04,0x00, - 0x33,0x04,0x05,0x00,0x33,0x05,0x06,0x00,0x37,0x06,0x07,0x01,0x3a,0x06,0x08,0x05, - 0x3a,0x05,0x09,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00, - 0x03,0xc0,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, - 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x02,0x0c,0x73,0x75, - 0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0a, - 0x62,0x72,0x65,0x61,0x6b,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73, - 0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78, - 0x6d,0x6c,0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62,0x72,0x65, - 0x61,0x6b,0x0a,0x73,0x74,0x61,0x74,0x65,0x95,0x01,0x00,0x02,0x07,0x01,0x09,0x00, - 0x0c,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x00,0x33,0x04,0x02, - 0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x00,0x3a,0x06,0x05,0x05,0x37,0x06,0x06, - 0x01,0x3a,0x06,0x07,0x05,0x3a,0x05,0x08,0x04,0x3e,0x02,0x03,0x01,0x47,0x00,0x01, - 0x00,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x0b,0x73,0x74,0x61,0x74,0x75,0x73, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x01,0x00,0x02,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e, - 0x64,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e,0x07, - 0x6f,0x6b,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0xbb, - 0x01,0x00,0x02,0x07,0x01,0x0a,0x00,0x12,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x37,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01, - 0x3a,0x06,0x05,0x05,0x3a,0x05,0x06,0x04,0x3e,0x02,0x03,0x01,0x37,0x02,0x01,0x00, - 0x10,0x03,0x02,0x00,0x37,0x02,0x07,0x02,0x3e,0x02,0x02,0x01,0x34,0x02,0x08,0x00, - 0x37,0x02,0x09,0x02,0x27,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00, - 0x04,0xc0,0x09,0x65,0x78,0x69,0x74,0x07,0x6f,0x73,0x0a,0x63,0x6c,0x6f,0x73,0x65, - 0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f, - 0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x03,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e, - 0x64,0x09,0x73,0x74,0x6f,0x70,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e,0x07,0x6f,0x6b, - 0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0c,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x88,0x02,0x00,0x02, - 0x09,0x03,0x0e,0x01,0x1f,0x37,0x02,0x00,0x01,0x2b,0x03,0x00,0x00,0x37,0x03,0x01, - 0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x01, - 0x00,0x36,0x03,0x02,0x03,0x11,0x03,0x03,0x00,0x11,0x03,0x03,0x00,0x2b,0x04,0x02, - 0x00,0x37,0x04,0x02,0x04,0x37,0x05,0x03,0x00,0x33,0x06,0x04,0x00,0x33,0x07,0x05, - 0x00,0x3a,0x02,0x06,0x07,0x0f,0x00,0x03,0x00,0x54,0x08,0x02,0x80,0x25,0x08,0x07, - 0x00,0x54,0x09,0x01,0x80,0x25,0x08,0x08,0x00,0x3a,0x08,0x09,0x07,0x37,0x08,0x0a, - 0x01,0x3a,0x08,0x0b,0x07,0x3a,0x07,0x0c,0x06,0x34,0x07,0x0d,0x00,0x10,0x08,0x03, - 0x00,0x3e,0x07,0x02,0x00,0x3c,0x07,0x00,0x00,0x3e,0x04,0x03,0x01,0x47,0x00,0x01, - 0x00,0x05,0xc0,0x0a,0xc0,0x04,0xc0,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, - 0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f, - 0x6e,0x5f,0x69,0x64,0x06,0x69,0x0e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64, - 0x06,0x30,0x06,0x31,0x11,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x6e,0x61,0x6d, - 0x65,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e, - 0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6e, - 0x03,0x80,0x80,0xc0,0x99,0x04,0x2e,0x00,0x00,0x03,0x03,0x01,0x00,0x06,0x2b,0x00, - 0x00,0x00,0x37,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x39,0x02, - 0x01,0x00,0x47,0x00,0x01,0x00,0x00,0x00,0x02,0xc0,0x03,0xc0,0x0d,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x73,0xcc,0x01,0x01,0x02,0x0a,0x02,0x0d,0x00,0x17,0x37,0x02, - 0x00,0x01,0x37,0x03,0x01,0x01,0x34,0x04,0x02,0x00,0x31,0x05,0x03,0x00,0x3e,0x04, - 0x02,0x02,0x2b,0x05,0x01,0x00,0x37,0x05,0x04,0x05,0x37,0x06,0x05,0x00,0x33,0x07, - 0x06,0x00,0x33,0x08,0x07,0x00,0x3a,0x02,0x08,0x08,0x0f,0x00,0x04,0x00,0x54,0x09, - 0x02,0x80,0x27,0x09,0x01,0x00,0x54,0x0a,0x01,0x80,0x27,0x09,0x00,0x00,0x3a,0x09, - 0x09,0x08,0x37,0x09,0x0a,0x01,0x3a,0x09,0x0b,0x08,0x3a,0x08,0x0c,0x07,0x3e,0x05, - 0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00,0x05,0xc0,0x04,0xc0,0x09,0x61, - 0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f, - 0x69,0x64,0x06,0x69,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x0c,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10, - 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x01,0x00,0x01,0x08,0x74, - 0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x06, - 0x76,0x06,0x6e,0x49,0x00,0x03,0x05,0x00,0x06,0x00,0x07,0x33,0x03,0x00,0x00,0x33, - 0x04,0x01,0x00,0x3a,0x00,0x02,0x04,0x3a,0x01,0x03,0x04,0x3a,0x02,0x04,0x04,0x3a, - 0x04,0x05,0x03,0x48,0x03,0x02,0x00,0x09,0x61,0x74,0x74,0x73,0x0d,0x78,0x73,0x69, - 0x3a,0x74,0x79,0x70,0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x6e,0x61,0x6d,0x65,0x01, - 0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x08,0x6d,0x61,0x70,0xc9,0x04,0x01, - 0x02,0x0a,0x01,0x1b,0x01,0x40,0x31,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x01,0x03,0x37,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x33,0x06,0x04,0x00,0x37,0x07, - 0x05,0x01,0x3a,0x07,0x06,0x06,0x3a,0x06,0x07,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x08,0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x01,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x0a,0x00,0x25,0x08,0x0b,0x00,0x25,0x09,0x0c,0x00,0x3e,0x06, - 0x04,0x02,0x3b,0x06,0x02,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x0d,0x00,0x25,0x08, - 0x0e,0x00,0x25,0x09,0x0f,0x00,0x3e,0x06,0x04,0x02,0x3b,0x06,0x03,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x10,0x00,0x25,0x08,0x10,0x00,0x25,0x09,0x11,0x00,0x3e,0x06, - 0x04,0x02,0x3b,0x06,0x04,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x12,0x00,0x25,0x08, - 0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x05,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x14,0x00,0x25,0x08,0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x06,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x15,0x00,0x25,0x08,0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06, - 0x07,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x16,0x00,0x25,0x08,0x17,0x00,0x3e,0x06, - 0x03,0x02,0x3b,0x06,0x08,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x18,0x00,0x25,0x08, - 0x19,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x09,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x1a,0x00,0x25,0x08,0x19,0x00,0x3e,0x06,0x03,0x00,0x3c,0x06,0x00,0x00,0x3e,0x03, - 0x03,0x01,0x47,0x00,0x01,0x00,0x04,0xc0,0x0d,0x6d,0x75,0x6c,0x74,0x69,0x76,0x61, - 0x6c,0x0a,0x61,0x72,0x72,0x61,0x79,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65, - 0x09,0x68,0x61,0x73,0x68,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x74,0x68,0x72,0x65, - 0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x0d,0x72,0x65,0x73,0x6f, - 0x75,0x72,0x63,0x65,0x0d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0f,0x78,0x73, - 0x64,0x3a,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e, - 0x78,0x73,0x64,0x3a,0x66,0x6c,0x6f,0x61,0x74,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x0b, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x10,0x78,0x73,0x64,0x3a,0x62,0x6f,0x6f,0x6c,0x65, - 0x61,0x6e,0x09,0x62,0x6f,0x6f,0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x09, - 0x6e,0x75,0x6c,0x6c,0x08,0x6e,0x69,0x6c,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72, - 0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00, - 0x03,0x0e,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x73,0x64,0x25,0x68,0x74,0x74,0x70, - 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30, - 0x30,0x31,0x2f,0x58,0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d,0x61,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f,0x67,0x65,0x74, - 0x0e,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x73,0x69,0x2e,0x68,0x74,0x74,0x70,0x3a, - 0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30, - 0x31,0x2f,0x58,0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d,0x61,0x2d,0x69,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, - 0x6c,0x00,0x15,0x80,0x80,0xc0,0x99,0x04,0x2d,0x00,0x01,0x03,0x01,0x01,0x00,0x05, - 0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00,0x3a,0x02,0x00,0x01,0x29,0x01,0x02,0x00, - 0x48,0x01,0x02,0x00,0x03,0xc0,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61, - 0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x3a,0x00,0x01,0x03,0x01,0x03,0x00,0x07,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x25,0x02,0x02,0x00,0x3e,0x01, - 0x02,0x01,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x03,0xc0,0x09,0x6f,0x76,0x65, - 0x72,0x0d,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x0b,0x65,0x76,0x65,0x6e,0x74, - 0x73,0x39,0x00,0x01,0x03,0x01,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x37,0x01,0x01,0x01,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x01,0x29,0x01,0x02, - 0x00,0x48,0x01,0x02,0x00,0x03,0xc0,0x08,0x6f,0x75,0x74,0x0d,0x72,0x65,0x67,0x69, - 0x73,0x74,0x65,0x72,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x3a,0x00,0x01,0x03,0x01, - 0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x25, - 0x02,0x02,0x00,0x3e,0x01,0x02,0x01,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x03, - 0xc0,0x09,0x69,0x6e,0x74,0x6f,0x0d,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x0b, - 0x65,0x76,0x65,0x6e,0x74,0x73,0x28,0x00,0x00,0x02,0x02,0x01,0x00,0x05,0x2b,0x00, - 0x00,0x00,0x37,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x3e,0x01,0x01,0x00,0x3f,0x00, - 0x00,0x00,0x02,0x00,0x07,0x80,0x0d,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0xaf, - 0x04,0x01,0x03,0x15,0x05,0x15,0x01,0x5e,0x2b,0x03,0x00,0x00,0x25,0x04,0x00,0x00, - 0x25,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x2a,0x03,0x05,0x00,0x37,0x06,0x02,0x00,0x37,0x07,0x03,0x00,0x27,0x08,0x00,0x00, - 0x3e,0x06,0x03,0x02,0x2b,0x07,0x01,0x00,0x37,0x07,0x04,0x07,0x25,0x08,0x05,0x00, - 0x10,0x09,0x02,0x00,0x24,0x08,0x09,0x08,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x03, - 0x0e,0x00,0x07,0x00,0x54,0x09,0x07,0x80,0x2b,0x09,0x01,0x00,0x37,0x09,0x04,0x09, - 0x10,0x0a,0x02,0x00,0x10,0x0b,0x06,0x00,0x3e,0x09,0x03,0x03,0x10,0x08,0x0a,0x00, - 0x10,0x07,0x09,0x00,0x0f,0x00,0x07,0x00,0x54,0x09,0x08,0x80,0x34,0x09,0x06,0x00, - 0x31,0x0a,0x07,0x00,0x3e,0x09,0x02,0x03,0x10,0x03,0x0a,0x00,0x10,0x05,0x09,0x00, - 0x0e,0x00,0x05,0x00,0x54,0x09,0x01,0x80,0x10,0x08,0x03,0x00,0x33,0x09,0x08,0x00, - 0x33,0x0a,0x09,0x00,0x37,0x0b,0x0a,0x01,0x3a,0x0b,0x0b,0x0a,0x3a,0x0a,0x0c,0x09, - 0x0e,0x00,0x08,0x00,0x54,0x0a,0x22,0x80,0x37,0x0a,0x0d,0x03,0x09,0x0a,0x00,0x00, - 0x54,0x0b,0x01,0x80,0x38,0x03,0x01,0x03,0x29,0x0b,0x00,0x00,0x27,0x0c,0x00,0x00, - 0x01,0x0c,0x0a,0x00,0x54,0x0c,0x08,0x80,0x2b,0x0c,0x03,0x00,0x37,0x0c,0x0e,0x0c, - 0x27,0x0d,0xff,0xff,0x36,0x0c,0x0d,0x0c,0x36,0x0c,0x0c,0x06,0x13,0x0d,0x0c,0x00, - 0x14,0x0b,0x00,0x0d,0x39,0x03,0x0b,0x0c,0x2b,0x0c,0x02,0x00,0x37,0x0c,0x0f,0x0c, - 0x27,0x0d,0xff,0xff,0x10,0x0e,0x03,0x00,0x0c,0x0f,0x0b,0x00,0x54,0x0f,0x01,0x80, - 0x25,0x0f,0x10,0x00,0x29,0x10,0x00,0x00,0x27,0x11,0x01,0x00,0x27,0x12,0x40,0x1f, - 0x27,0x13,0x00,0x00,0x29,0x14,0x00,0x00,0x3e,0x0c,0x09,0x02,0x3b,0x0c,0x01,0x09, - 0x37,0x0c,0x0c,0x09,0x27,0x0d,0x01,0x00,0x3a,0x0d,0x11,0x0c,0x54,0x0a,0x09,0x80, - 0x37,0x0a,0x0c,0x09,0x27,0x0b,0x00,0x00,0x3a,0x0b,0x11,0x0a,0x2b,0x0a,0x04,0x00, - 0x37,0x0a,0x12,0x0a,0x27,0x0b,0xce,0x00,0x10,0x0c,0x08,0x00,0x3e,0x0a,0x03,0x02, - 0x3b,0x0a,0x01,0x09,0x2b,0x0a,0x04,0x00,0x37,0x0a,0x13,0x0a,0x37,0x0b,0x14,0x00, - 0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00, - 0x09,0xc0,0x05,0xc0,0x07,0xc0,0x08,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72, - 0x6f,0x72,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x05,0x12,0x6d,0x61,0x6b,0x65, - 0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78, - 0x74,0x06,0x6e,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x09,0x65,0x76,0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x00,0x0a,0x70,0x63,0x61,0x6c,0x6c, - 0x0c,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x09, - 0x63,0x6f,0x72,0x6f,0x0a,0x73,0x74,0x61,0x63,0x6b,0x13,0x47,0x6f,0x69,0x6e,0x67, - 0x20,0x74,0x6f,0x20,0x65,0x76,0x61,0x6c,0x20,0x0a,0x44,0x45,0x42,0x55,0x47,0x02, - 0xf9,0x06,0x00,0x03,0x0c,0x03,0x2e,0x00,0x73,0x37,0x03,0x00,0x01,0x0f,0x00,0x03, - 0x00,0x54,0x04,0x0e,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x03,0x02, - 0x03,0x37,0x04,0x00,0x01,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x03,0x07, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0xc8,0x00,0x25,0x05,0x04, - 0x00,0x37,0x06,0x00,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x37,0x03,0x05, - 0x01,0x34,0x04,0x06,0x00,0x37,0x05,0x07,0x01,0x3e,0x04,0x02,0x02,0x10,0x06,0x03, - 0x00,0x37,0x05,0x08,0x03,0x2b,0x07,0x02,0x00,0x37,0x07,0x09,0x07,0x27,0x08,0x01, - 0x00,0x29,0x09,0x02,0x00,0x3e,0x05,0x05,0x02,0x0e,0x00,0x05,0x00,0x54,0x05,0x0b, - 0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0a,0x05,0x37,0x06,0x0b,0x00,0x33,0x07,0x0c, - 0x00,0x33,0x08,0x0d,0x00,0x37,0x09,0x0e,0x01,0x3a,0x09,0x0f,0x08,0x3a,0x08,0x10, - 0x07,0x3e,0x05,0x03,0x01,0x29,0x05,0x00,0x00,0x48,0x05,0x02,0x00,0x33,0x05,0x12, - 0x00,0x37,0x06,0x11,0x01,0x3a,0x06,0x13,0x05,0x37,0x06,0x14,0x01,0x0e,0x00,0x06, - 0x00,0x54,0x07,0x01,0x80,0x25,0x06,0x15,0x00,0x3a,0x06,0x16,0x05,0x37,0x06,0x17, - 0x01,0x06,0x06,0x18,0x00,0x54,0x06,0x02,0x80,0x29,0x06,0x01,0x00,0x54,0x07,0x01, - 0x80,0x29,0x06,0x02,0x00,0x3a,0x06,0x19,0x05,0x3a,0x03,0x1a,0x05,0x3a,0x04,0x1b, - 0x05,0x34,0x06,0x06,0x00,0x37,0x07,0x1c,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01, - 0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02,0x3a,0x06,0x1d,0x05,0x37,0x06,0x00, - 0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x25,0x06,0x1e,0x00,0x3a,0x06,0x1f, - 0x05,0x37,0x06,0x11,0x01,0x07,0x06,0x20,0x00,0x54,0x06,0x0d,0x80,0x3a,0x02,0x21, - 0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x23,0x06,0x27,0x07,0xcf,0x00,0x34,0x08,0x24, - 0x00,0x25,0x09,0x25,0x00,0x10,0x0a,0x02,0x00,0x25,0x0b,0x26,0x00,0x24,0x09,0x0b, - 0x09,0x3e,0x08,0x02,0x00,0x3d,0x06,0x01,0x02,0x3a,0x06,0x22,0x05,0x54,0x06,0x0b, - 0x80,0x37,0x06,0x11,0x01,0x06,0x06,0x27,0x00,0x54,0x06,0x08,0x80,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x03,0x06,0x27,0x07,0xc9,0x00,0x25,0x08,0x28,0x00,0x37,0x09,0x11, - 0x01,0x25,0x0a,0x29,0x00,0x24,0x08,0x0a,0x08,0x3e,0x06,0x03,0x01,0x2b,0x06,0x00, - 0x00,0x37,0x06,0x01,0x06,0x37,0x06,0x2a,0x06,0x10,0x07,0x05,0x00,0x3e,0x06,0x02, - 0x02,0x2b,0x07,0x01,0x00,0x37,0x07,0x0a,0x07,0x37,0x08,0x0b,0x00,0x33,0x09,0x2b, - 0x00,0x33,0x0a,0x2c,0x00,0x37,0x0b,0x0e,0x01,0x3a,0x0b,0x0f,0x0a,0x37,0x0b,0x16, - 0x05,0x3a,0x0b,0x16,0x0a,0x3a,0x06,0x2d,0x0a,0x3a,0x0a,0x10,0x09,0x3e,0x07,0x03, - 0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x06,0xc0,0x07,0x69,0x64,0x01,0x00, - 0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x13,0x62,0x72,0x65,0x61,0x6b,0x70, - 0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x17, - 0x20,0x6e,0x6f,0x74,0x20,0x79,0x65,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74, - 0x65,0x64,0x0d,0x42,0x50,0x20,0x74,0x79,0x70,0x65,0x20,0x09,0x6c,0x69,0x6e,0x65, - 0x06,0x29,0x0d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x0f,0x6c,0x6f,0x61,0x64, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0e,0x63,0x6f, - 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69, - 0x6f,0x6e,0x10,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x12,0x68, - 0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x07,0x3e,0x3d,0x0e, - 0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x06,0x68,0x0b,0x6c,0x69,0x6e,0x65, - 0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0e,0x74,0x65,0x6d,0x70, - 0x6f,0x72,0x61,0x72,0x79,0x06,0x31,0x06,0x72,0x0a,0x73,0x74,0x61,0x74,0x65,0x0c, - 0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x06,0x73,0x09,0x74,0x79,0x70,0x65,0x01,0x00, - 0x01,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x03,0x00,0x06,0x74,0x09, - 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x62,0x61,0x73, - 0x65,0x5f,0x64,0x69,0x72,0x09,0x66,0x69,0x6e,0x64,0x06,0x6e,0x0d,0x74,0x6f,0x6e, - 0x75,0x6d,0x62,0x65,0x72,0x06,0x66,0x25,0x49,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20, - 0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x70, - 0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x13,0x68, - 0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x06,0x6f,0xdc,0x01,0x00,0x02,0x0a, - 0x02,0x0c,0x01,0x16,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x00, - 0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01,0x3a,0x06,0x05,0x05, - 0x3a,0x05,0x06,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x07,0x05,0x27,0x06,0xcd,0x00, - 0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x07,0x09,0x07,0x34,0x08,0x0a,0x00, - 0x37,0x09,0x0b,0x01,0x3e,0x08,0x02,0x00,0x3d,0x07,0x00,0x00,0x3d,0x05,0x01,0x00, - 0x3c,0x05,0x00,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x04,0xc0,0x03,0xc0, - 0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0c,0x67,0x65,0x74,0x5f, - 0x78,0x6d,0x6c,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0b, - 0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e, - 0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c, - 0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, - 0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f, - 0x78,0x6d,0x6c,0x03,0x80,0x80,0xc0,0x99,0x04,0xe8,0x01,0x00,0x02,0x0b,0x02,0x0b, - 0x01,0x1c,0x33,0x02,0x00,0x00,0x33,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x3a,0x04, - 0x03,0x03,0x3a,0x03,0x04,0x02,0x34,0x03,0x05,0x00,0x2b,0x04,0x00,0x00,0x37,0x04, - 0x06,0x04,0x37,0x04,0x07,0x04,0x3e,0x04,0x01,0x00,0x3d,0x03,0x00,0x04,0x44,0x06, - 0x08,0x80,0x13,0x08,0x02,0x00,0x14,0x08,0x00,0x08,0x2b,0x09,0x00,0x00,0x37,0x09, - 0x06,0x09,0x37,0x09,0x08,0x09,0x10,0x0a,0x06,0x00,0x3e,0x09,0x02,0x02,0x39,0x09, - 0x08,0x02,0x42,0x06,0x03,0x03,0x4e,0x06,0xf6,0x7f,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x09,0x03,0x37,0x04,0x0a,0x00,0x10,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00, - 0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f, - 0x78,0x6d,0x6c,0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x08,0x67,0x65,0x74,0x10, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0a,0x70,0x61,0x69,0x72, - 0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, - 0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61, - 0x6e,0x64,0x14,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x69, - 0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x02,0xcf,0x04,0x00,0x02,0x09,0x02,0x18,0x00,0x57,0x2b,0x02,0x00,0x00, - 0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x34,0x03,0x02,0x00,0x37,0x04,0x03,0x01, - 0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x07,0x80, - 0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x27,0x04,0xcd,0x00,0x25,0x05,0x05,0x00, - 0x37,0x06,0x03,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x37,0x03,0x06,0x01, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x0e,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x00,0x03, - 0x37,0x03,0x07,0x03,0x37,0x04,0x06,0x01,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x07,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x27,0x04,0xc8,0x00, - 0x25,0x05,0x08,0x00,0x37,0x06,0x06,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x33,0x03,0x09,0x00,0x33,0x04,0x0a,0x00,0x37,0x05,0x0b,0x01,0x3a,0x05,0x0c,0x04, - 0x3a,0x04,0x0d,0x03,0x29,0x04,0x01,0x00,0x37,0x05,0x0e,0x02,0x34,0x06,0x02,0x00, - 0x37,0x07,0x0f,0x01,0x3e,0x06,0x02,0x02,0x34,0x07,0x02,0x00,0x37,0x08,0x0e,0x02, - 0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00,0x54,0x06,0x01,0x80,0x29,0x04,0x02,0x00, - 0x37,0x06,0x11,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x37,0x06,0x10,0x02, - 0x3a,0x06,0x10,0x02,0x34,0x06,0x02,0x00,0x37,0x07,0x0f,0x01,0x0e,0x00,0x07,0x00, - 0x54,0x08,0x01,0x80,0x37,0x07,0x0e,0x02,0x3e,0x06,0x02,0x02,0x3a,0x06,0x0e,0x02, - 0x34,0x06,0x02,0x00,0x37,0x07,0x13,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80, - 0x37,0x07,0x12,0x02,0x3e,0x06,0x02,0x02,0x3a,0x06,0x12,0x02,0x37,0x06,0x06,0x01, - 0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x37,0x06,0x14,0x02,0x3a,0x06,0x14,0x02, - 0x0f,0x00,0x04,0x00,0x54,0x06,0x06,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06, - 0x37,0x06,0x15,0x06,0x10,0x07,0x05,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x01, - 0x2b,0x06,0x01,0x00,0x37,0x06,0x16,0x06,0x37,0x07,0x17,0x00,0x10,0x08,0x03,0x00, - 0x3e,0x06,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0b,0x75,0x70,0x64,0x61,0x74,0x65, - 0x12,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x06,0x68, - 0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x06,0x73,0x0a,0x73,0x74,0x61, - 0x74,0x65,0x06,0x6e,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x61,0x74,0x74,0x72, - 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, - 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x16,0x62,0x72,0x65, - 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x75,0x70,0x64,0x61,0x74,0x65,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x25,0x49, - 0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69, - 0x74,0x69,0x6f,0x6e,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x13, - 0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x06,0x6f, - 0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x69, - 0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x08,0x67,0x65,0x74,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, - 0x69,0x6e,0x74,0x73,0x8a,0x02,0x00,0x02,0x07,0x02,0x0d,0x00,0x1e,0x33,0x02,0x00, - 0x00,0x33,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x3a,0x04,0x03,0x03,0x3a,0x03,0x04, - 0x02,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x10,0x80,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x06,0x03,0x37,0x03,0x07,0x03,0x34,0x04,0x08,0x00,0x37,0x05,0x05, - 0x01,0x3e,0x04,0x02,0x00,0x3d,0x03,0x00,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x07, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x09,0x03,0x27,0x04,0xcd,0x00,0x25,0x05,0x0a, - 0x00,0x37,0x06,0x05,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x2b,0x03,0x01, - 0x00,0x37,0x03,0x0b,0x03,0x37,0x04,0x0c,0x00,0x10,0x05,0x02,0x00,0x3e,0x03,0x03, - 0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62, - 0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x10, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x06,0x64,0x09,0x61,0x74, - 0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, - 0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x16,0x62, - 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65, - 0xa4,0x02,0x00,0x02,0x0c,0x02,0x10,0x01,0x27,0x27,0x02,0x00,0x00,0x2b,0x03,0x00, - 0x00,0x10,0x04,0x00,0x00,0x37,0x05,0x00,0x01,0x3e,0x03,0x03,0x02,0x27,0x04,0x00, - 0x00,0x34,0x05,0x01,0x00,0x37,0x05,0x02,0x05,0x27,0x06,0x01,0x00,0x49,0x04,0x12, - 0x80,0x10,0x09,0x03,0x00,0x37,0x08,0x03,0x03,0x10,0x0a,0x07,0x00,0x25,0x0b,0x04, - 0x00,0x3e,0x08,0x04,0x02,0x0e,0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x54,0x04,0x0a, - 0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x05,0x08,0x0f,0x00,0x09,0x00,0x54,0x0a,0x01, - 0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x06,0x08,0x07,0x09,0x07,0x00,0x54,0x09,0x01, - 0x80,0x54,0x04,0x01,0x80,0x4b,0x04,0xee,0x7f,0x2b,0x04,0x01,0x00,0x37,0x04,0x08, - 0x04,0x37,0x05,0x09,0x00,0x33,0x06,0x0a,0x00,0x33,0x07,0x0b,0x00,0x37,0x08,0x0c, - 0x01,0x3a,0x08,0x0d,0x07,0x3a,0x02,0x0e,0x07,0x3a,0x07,0x0f,0x06,0x3e,0x04,0x03, - 0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x0a,0x64, - 0x65,0x70,0x74,0x68,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x09,0x77, - 0x68,0x61,0x74,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c,0x07,0x53, - 0x74,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x68,0x75,0x67,0x65,0x09,0x6d, - 0x61,0x74,0x68,0x06,0x6f,0x02,0xe9,0x01,0x00,0x02,0x06,0x02,0x0d,0x00,0x1d,0x33, - 0x02,0x00,0x00,0x3a,0x01,0x01,0x02,0x37,0x03,0x02,0x00,0x3a,0x03,0x03,0x02,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x37,0x04,0x05,0x00,0x3e,0x03,0x02,0x02,0x0f, - 0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x37,0x04,0x06,0x00,0x0f,0x00,0x04,0x00,0x54, - 0x05,0x04,0x80,0x3a,0x03,0x07,0x02,0x37,0x04,0x06,0x00,0x3a,0x04,0x08,0x02,0x54, - 0x04,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x05,0x09,0x00,0x36,0x04,0x05,0x04,0x0e, - 0x00,0x04,0x00,0x54,0x05,0x01,0x80,0x25,0x04,0x0a,0x00,0x3a,0x04,0x07,0x02,0x27, - 0x04,0xff,0xff,0x3a,0x04,0x08,0x02,0x33,0x04,0x0b,0x00,0x3a,0x02,0x0c,0x04,0x48, - 0x04,0x02,0x00,0x00,0x00,0x02,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0e,0x75,0x6e,0x6b,0x6e,0x6f,0x77, - 0x6e,0x3a,0x2f,0x09,0x77,0x68,0x61,0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d, - 0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x10,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, - 0x6c,0x69,0x6e,0x65,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x5f, - 0x75,0x72,0x69,0x0a,0x77,0x68,0x65,0x72,0x65,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x6c, - 0x65,0x76,0x65,0x6c,0x01,0x00,0x01,0x09,0x74,0x79,0x70,0x65,0x09,0x66,0x69,0x6c, - 0x65,0x92,0x04,0x01,0x02,0x0f,0x03,0x17,0x01,0x47,0x33,0x02,0x00,0x00,0x31,0x03, - 0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01,0x3a,0x06, - 0x05,0x05,0x3a,0x05,0x06,0x04,0x2b,0x05,0x01,0x00,0x10,0x06,0x00,0x00,0x37,0x07, - 0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x01,0x0f,0x00,0x06,0x00,0x54,0x07, - 0x0f,0x80,0x34,0x06,0x09,0x00,0x37,0x07,0x08,0x01,0x3e,0x06,0x02,0x02,0x13,0x07, - 0x04,0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x03,0x00,0x10,0x0a,0x05,0x00,0x37,0x09, - 0x0a,0x05,0x10,0x0b,0x06,0x00,0x25,0x0c,0x0b,0x00,0x3e,0x09,0x04,0x02,0x10,0x0a, - 0x06,0x00,0x3e,0x08,0x03,0x02,0x39,0x08,0x07,0x04,0x54,0x06,0x23,0x80,0x27,0x06, - 0x00,0x00,0x34,0x07,0x0c,0x00,0x37,0x07,0x0d,0x07,0x27,0x08,0x01,0x00,0x49,0x06, - 0x1e,0x80,0x10,0x0b,0x05,0x00,0x37,0x0a,0x0a,0x05,0x10,0x0c,0x09,0x00,0x25,0x0d, - 0x0e,0x00,0x3e,0x0a,0x04,0x02,0x0e,0x00,0x0a,0x00,0x54,0x0b,0x01,0x80,0x54,0x06, - 0x16,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b,0x00,0x0b,0x10,0x0c,0x03,0x00,0x10,0x0d, - 0x0a,0x00,0x10,0x0e,0x09,0x00,0x3e,0x0c,0x03,0x02,0x39,0x0c,0x0b,0x04,0x37,0x0b, - 0x0f,0x0a,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x07,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b, - 0x00,0x0b,0x33,0x0c,0x10,0x00,0x33,0x0d,0x11,0x00,0x3a,0x09,0x12,0x0d,0x3a,0x0d, - 0x06,0x0c,0x39,0x0c,0x0b,0x04,0x37,0x0b,0x13,0x0a,0x07,0x0b,0x14,0x00,0x54,0x0b, - 0x01,0x80,0x54,0x06,0x01,0x80,0x4b,0x06,0xe2,0x7f,0x2b,0x06,0x02,0x00,0x37,0x06, - 0x15,0x06,0x37,0x07,0x16,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x01,0x30,0x00, - 0x00,0x80,0x47,0x00,0x01,0x00,0x06,0xc0,0x0b,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x09,0x77, - 0x68,0x61,0x74,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x03,0x09,0x74,0x79,0x70, - 0x65,0x09,0x66,0x69,0x6c,0x65,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x11, - 0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e,0x3a,0x2f,0x0b,0x6c,0x69,0x6e, - 0x65,0x6e,0x6f,0x03,0xff,0xff,0xff,0xff,0x0f,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0a,0x73,0x74,0x61,0x63,0x6b,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c, - 0x6c,0x09,0x6e,0x53,0x6c,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68, - 0x08,0x6e,0x53,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x6e, - 0x75,0x6d,0x62,0x65,0x72,0x06,0x64,0x06,0x6f,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0e,0x73,0x74,0x61,0x63,0x6b, - 0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x00,0x01,0x00,0x02,0x06,0x43,0x0c,0x63,0x63,0x6f,0x64,0x65, - 0x3a,0x2f,0x09,0x74,0x61,0x69,0x6c,0x11,0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x3a,0x2f,0x02,0xd1,0x02,0x00,0x02,0x0e,0x02,0x14,0x01,0x28,0x37,0x02, - 0x00,0x00,0x38,0x02,0x01,0x02,0x33,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x37,0x05, - 0x03,0x01,0x3a,0x05,0x04,0x04,0x3a,0x04,0x05,0x03,0x34,0x04,0x06,0x00,0x2b,0x05, - 0x00,0x00,0x37,0x05,0x07,0x05,0x37,0x05,0x08,0x05,0x3e,0x04,0x02,0x04,0x44,0x07, - 0x13,0x80,0x06,0x07,0x09,0x00,0x54,0x09,0x11,0x80,0x13,0x09,0x03,0x00,0x14,0x09, - 0x00,0x09,0x33,0x0a,0x0a,0x00,0x33,0x0b,0x0b,0x00,0x3a,0x07,0x0c,0x0b,0x34,0x0c, - 0x0d,0x00,0x10,0x0d,0x08,0x00,0x3e,0x0c,0x02,0x02,0x3a,0x0c,0x0e,0x0b,0x05,0x08, - 0x02,0x00,0x54,0x0c,0x02,0x80,0x25,0x0c,0x0f,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c, - 0x10,0x00,0x3a,0x0c,0x11,0x0b,0x3a,0x0b,0x05,0x0a,0x39,0x0a,0x09,0x03,0x42,0x07, - 0x03,0x03,0x4e,0x07,0xeb,0x7f,0x2b,0x04,0x01,0x00,0x37,0x04,0x12,0x04,0x37,0x05, - 0x13,0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0, - 0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c, - 0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x06,0x30,0x06,0x31,0x09,0x6e,0x61,0x6d,0x65, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x07,0x69,0x64,0x01,0x00,0x00,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x06,0x6e,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74,0x69,0x76, - 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0a,0x70,0x61,0x69, - 0x72,0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74, - 0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d, - 0x61,0x6e,0x64,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x5f,0x6c,0x69, - 0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x09,0x63,0x6f,0x72,0x6f,0x02,0xbf,0x03,0x00,0x02,0x09,0x02,0x15,0x00, - 0x31,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x04,0x00,0x01,0x3e,0x02,0x03, - 0x02,0x34,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x0e,0x00,0x04,0x00,0x54,0x05,0x01, - 0x80,0x27,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10,0x05,0x02,0x00,0x37,0x04,0x03, - 0x02,0x10,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x3e,0x04,0x04,0x02,0x0e,0x00,0x04, - 0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x04,0x05,0x04,0x27,0x05,0x2d, - 0x01,0x25,0x06,0x06,0x00,0x34,0x07,0x07,0x00,0x10,0x08,0x03,0x00,0x3e,0x07,0x02, - 0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02,0x33,0x05,0x08,0x00,0x33,0x06,0x09, - 0x00,0x37,0x07,0x0a,0x01,0x3a,0x07,0x0b,0x06,0x3a,0x06,0x0c,0x05,0x33,0x06,0x0d, - 0x00,0x33,0x07,0x0e,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x01,0x05,0x33,0x06,0x0f, - 0x00,0x33,0x07,0x10,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x02,0x05,0x33,0x06,0x11, - 0x00,0x33,0x07,0x12,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x03,0x05,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x13,0x06,0x37,0x07,0x14,0x00,0x10,0x08,0x05,0x00,0x3e,0x06,0x03, - 0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x01,0x00,0x02,0x07,0x69,0x64,0x03,0x01,0x09,0x6e, - 0x61,0x6d,0x65,0x0b,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01,0x00,0x02,0x07,0x69,0x64,0x03, - 0x02,0x09,0x6e,0x61,0x6d,0x65,0x0c,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01,0x00,0x02, - 0x07,0x69,0x64,0x03,0x00,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x4c,0x6f,0x63,0x61,0x6c, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x09, - 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x06,0x64,0x0d,0x74, - 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x6f,0xba,0x04,0x00,0x02,0x18,0x05,0x18, - 0x01,0x54,0x34,0x02,0x00,0x00,0x37,0x03,0x01,0x01,0x0e,0x00,0x03,0x00,0x54,0x04, - 0x01,0x80,0x27,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x02,0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x09,0x80,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0x2e,0x01,0x25,0x05,0x04,0x00,0x34,0x06, - 0x05,0x00,0x10,0x07,0x02,0x00,0x3e,0x06,0x02,0x02,0x24,0x05,0x06,0x05,0x3e,0x03, - 0x03,0x02,0x34,0x04,0x00,0x00,0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x01,0x80,0x27,0x05,0x00,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x02,0x00,0x10,0x06, - 0x00,0x00,0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x00,0x10,0x07, - 0x05,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02,0x33,0x07,0x09,0x00,0x33,0x08, - 0x0a,0x00,0x37,0x09,0x0b,0x01,0x3a,0x09,0x0c,0x08,0x2b,0x09,0x00,0x00,0x3a,0x09, - 0x0d,0x08,0x3a,0x08,0x0e,0x07,0x09,0x02,0x00,0x00,0x54,0x08,0x03,0x80,0x34,0x08, - 0x0f,0x00,0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80,0x34,0x08,0x10,0x00,0x36,0x09, - 0x03,0x06,0x3e,0x08,0x02,0x02,0x37,0x08,0x11,0x08,0x36,0x09,0x03,0x06,0x29,0x0a, - 0x00,0x00,0x54,0x0b,0x17,0x80,0x13,0x0d,0x07,0x00,0x14,0x0d,0x00,0x0d,0x2b,0x0e, - 0x03,0x00,0x37,0x0e,0x12,0x0e,0x10,0x0f,0x02,0x00,0x10,0x10,0x0c,0x00,0x10,0x11, - 0x0b,0x00,0x29,0x12,0x00,0x00,0x27,0x13,0x00,0x00,0x2b,0x14,0x04,0x00,0x37,0x14, - 0x13,0x14,0x37,0x14,0x14,0x14,0x27,0x15,0x00,0x00,0x2b,0x16,0x04,0x00,0x37,0x16, - 0x13,0x16,0x37,0x16,0x15,0x16,0x09,0x02,0x00,0x00,0x54,0x17,0x02,0x80,0x29,0x17, - 0x01,0x00,0x54,0x18,0x01,0x80,0x29,0x17,0x02,0x00,0x3e,0x0e,0x0a,0x02,0x39,0x0e, - 0x0d,0x07,0x41,0x0b,0x03,0x03,0x4e,0x0b,0xe7,0x7f,0x2b,0x08,0x01,0x00,0x37,0x08, - 0x16,0x08,0x37,0x09,0x17,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03,0x01,0x47,0x00, - 0x01,0x00,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x07,0xc0,0x05,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61, - 0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d, - 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0x0d,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x11, - 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x6e,0x65,0x78, - 0x74,0x09,0x61,0x74,0x74,0x72,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, - 0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f,0x06,0x64, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63, - 0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f, - 0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x02,0x20,0x00,0x02,0x04,0x00,0x01,0x00,0x03,0x34,0x02,0x00, - 0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x11,0x67,0x65,0x74,0x6d,0x65,0x74, - 0x61,0x74,0x61,0x62,0x6c,0x65,0x24,0x00,0x03,0x06,0x00,0x01,0x00,0x04,0x34,0x03, - 0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0xa8,0x06,0x00,0x02,0x15, - 0x06,0x24,0x00,0x7a,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03, - 0x37,0x04,0x02,0x01,0x3e,0x03,0x02,0x02,0x10,0x04,0x03,0x00,0x37,0x03,0x03,0x03, - 0x25,0x05,0x04,0x00,0x3e,0x03,0x03,0x00,0x3d,0x02,0x00,0x03,0x34,0x04,0x05,0x00, - 0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x10,0x05,0x02,0x00, - 0x3e,0x04,0x02,0x02,0x10,0x02,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x07,0x04, - 0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x02,0x00, - 0x37,0x04,0x08,0x04,0x27,0x05,0x2e,0x01,0x25,0x06,0x09,0x00,0x34,0x07,0x0a,0x00, - 0x10,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02, - 0x34,0x05,0x05,0x00,0x37,0x06,0x0b,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80, - 0x27,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x03,0x00,0x10,0x07,0x00,0x00, - 0x37,0x08,0x0c,0x01,0x3e,0x06,0x03,0x02,0x34,0x07,0x05,0x00,0x37,0x08,0x0d,0x01, - 0x0e,0x00,0x08,0x00,0x54,0x09,0x03,0x80,0x2b,0x08,0x00,0x00,0x37,0x08,0x0e,0x08, - 0x37,0x08,0x0f,0x08,0x3e,0x07,0x02,0x02,0x27,0x08,0x00,0x00,0x01,0x07,0x08,0x00, - 0x54,0x08,0x01,0x80,0x29,0x07,0x00,0x00,0x34,0x08,0x05,0x00,0x37,0x09,0x10,0x01, - 0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x27,0x09,0x00,0x00,0x3e,0x08,0x02,0x02, - 0x37,0x09,0x11,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x05,0x00,0x3e,0x09,0x03,0x02, - 0x2b,0x0a,0x02,0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00,0x00, - 0x37,0x0c,0x12,0x0c,0x25,0x0d,0x13,0x00,0x10,0x0e,0x03,0x00,0x24,0x0d,0x0e,0x0d, - 0x2b,0x0e,0x04,0x00,0x3e,0x0c,0x03,0x00,0x3d,0x0a,0x01,0x02,0x34,0x0b,0x14,0x00, - 0x27,0x0c,0x02,0x00,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x00,0x0d,0x27,0x0e,0x2c,0x01, - 0x34,0x0f,0x15,0x00,0x10,0x10,0x0a,0x00,0x36,0x11,0x04,0x09,0x3e,0x0f,0x03,0x00, - 0x3d,0x0d,0x01,0x00,0x3d,0x0b,0x01,0x02,0x2b,0x0c,0x05,0x00,0x37,0x0c,0x16,0x0c, - 0x10,0x0d,0x02,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x03,0x00,0x10,0x10,0x03,0x00, - 0x2b,0x11,0x00,0x00,0x37,0x11,0x0e,0x11,0x37,0x11,0x17,0x11,0x2b,0x12,0x00,0x00, - 0x37,0x12,0x0e,0x12,0x37,0x12,0x18,0x12,0x10,0x13,0x08,0x00,0x10,0x14,0x07,0x00, - 0x3e,0x0c,0x09,0x02,0x10,0x0e,0x03,0x00,0x37,0x0d,0x03,0x03,0x25,0x0f,0x19,0x00, - 0x3e,0x0d,0x03,0x02,0x05,0x0d,0x03,0x00,0x54,0x0d,0x03,0x80,0x37,0x0d,0x1a,0x0c, - 0x25,0x0e,0x1c,0x00,0x3a,0x0e,0x1b,0x0d,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1d,0x0d, - 0x37,0x0e,0x1e,0x00,0x33,0x0f,0x1f,0x00,0x33,0x10,0x20,0x00,0x37,0x11,0x21,0x01, - 0x3a,0x11,0x22,0x10,0x2b,0x11,0x01,0x00,0x3a,0x11,0x23,0x10,0x3a,0x10,0x1a,0x0f, - 0x3b,0x0c,0x01,0x0f,0x3e,0x0d,0x03,0x01,0x47,0x00,0x01,0x00,0x05,0xc0,0x08,0xc0, - 0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x07,0xc0,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, - 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, - 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x11,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74, - 0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x17,0x5e,0x5b,0x25,0x77,0x5f,0x5d,0x2b, - 0x25,0x5b,0x2e,0x2d,0x25,0x62,0x5b,0x5d,0x25,0x5d,0x24,0x11,0x6d,0x61,0x78,0x5f, - 0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70, - 0x74,0x68,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x73,0x74,0x61, - 0x63,0x6b,0x06,0x70,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x0d,0x66,0x65, - 0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6d,0x06,0x6f,0x06,0x64,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a,0x29,0x24, - 0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62,0x36,0x34,0x0b,0x61, - 0x73,0x73,0x65,0x72,0x74,0x38,0x00,0x02,0x05,0x01,0x02,0x00,0x08,0x27,0x02,0xff, - 0xff,0x3a,0x02,0x00,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00, - 0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x0a,0xc0,0x11, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x06,0x6d,0xf7,0x04, - 0x00,0x03,0x13,0x05,0x1d,0x00,0x62,0x34,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x01,0x04,0x37,0x05,0x02,0x01,0x3e,0x04,0x02,0x02,0x10,0x05,0x04,0x00,0x37, - 0x04,0x03,0x04,0x25,0x06,0x04,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x03,0x34, - 0x05,0x05,0x00,0x37,0x06,0x06,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x10, - 0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x10,0x03,0x05,0x00,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x07,0x05,0x36,0x05,0x03,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x09,0x80,0x2b, - 0x05,0x02,0x00,0x37,0x05,0x08,0x05,0x27,0x06,0x2e,0x01,0x25,0x07,0x09,0x00,0x34, - 0x08,0x0a,0x00,0x10,0x09,0x03,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e, - 0x05,0x03,0x02,0x34,0x06,0x05,0x00,0x37,0x07,0x0b,0x01,0x0e,0x00,0x07,0x00,0x54, - 0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x03,0x00,0x10, - 0x08,0x00,0x00,0x37,0x09,0x0c,0x01,0x3e,0x07,0x03,0x02,0x37,0x08,0x0d,0x00,0x10, - 0x09,0x07,0x00,0x10,0x0a,0x06,0x00,0x3e,0x08,0x03,0x02,0x34,0x09,0x0e,0x00,0x27, - 0x0a,0x02,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00,0x0b,0x27,0x0c,0xce,0x00,0x34, - 0x0d,0x0f,0x00,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x00,0x0e,0x27,0x0f,0xce,0x00,0x2b, - 0x10,0x00,0x00,0x37,0x10,0x10,0x10,0x25,0x11,0x11,0x00,0x10,0x12,0x02,0x00,0x24, - 0x11,0x12,0x11,0x10,0x12,0x08,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0e,0x01,0x00,0x3d, - 0x0d,0x00,0x00,0x3d,0x0b,0x01,0x00,0x3d,0x09,0x01,0x02,0x2b,0x0a,0x02,0x00,0x37, - 0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x10,0x0c,0x10, - 0x0d,0x04,0x00,0x25,0x0e,0x12,0x00,0x24,0x0d,0x0e,0x0d,0x34,0x0e,0x13,0x00,0x33, - 0x0f,0x14,0x00,0x3a,0x09,0x15,0x0f,0x2b,0x10,0x04,0x00,0x3e,0x0e,0x03,0x00,0x3d, - 0x0c,0x01,0x00,0x3d,0x0a,0x01,0x02,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00,0x0b,0x27, - 0x0c,0xce,0x00,0x34,0x0d,0x0f,0x00,0x10,0x0e,0x0a,0x00,0x36,0x0f,0x05,0x08,0x3e, - 0x0d,0x03,0x00,0x3d,0x0b,0x01,0x01,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x16,0x0b,0x37, - 0x0c,0x17,0x00,0x33,0x0d,0x18,0x00,0x33,0x0e,0x19,0x00,0x37,0x0f,0x1a,0x01,0x3a, - 0x0f,0x1b,0x0e,0x3a,0x0e,0x1c,0x0d,0x3e,0x0b,0x03,0x01,0x47,0x00,0x01,0x00,0x05, - 0xc0,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0a,0x76,0x61,0x6c,0x75,0x65,0x01, - 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0d, - 0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x0c,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65, - 0x6c,0x65,0x63,0x74,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f,0x06,0x64,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c, - 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a, - 0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62,0x36,0x34, - 0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xfd,0x05,0x00,0x02,0x10,0x03,0x26,0x02,0x7c, - 0x29,0x02,0x00,0x00,0x37,0x03,0x00,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x06,0x80, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x04,0x00,0x01,0x3e,0x03,0x02,0x02, - 0x10,0x02,0x03,0x00,0x54,0x03,0x18,0x80,0x37,0x03,0x02,0x00,0x10,0x04,0x03,0x00, - 0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x04,0x00,0x3e,0x03,0x04,0x02, - 0x37,0x02,0x05,0x03,0x34,0x03,0x06,0x00,0x10,0x05,0x02,0x00,0x37,0x04,0x07,0x02, - 0x27,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x3e,0x04,0x04,0x02,0x06,0x04,0x08,0x00, - 0x54,0x04,0x02,0x80,0x29,0x04,0x01,0x00,0x54,0x05,0x01,0x80,0x29,0x04,0x02,0x00, - 0x3e,0x03,0x02,0x01,0x10,0x04,0x02,0x00,0x37,0x03,0x07,0x02,0x27,0x05,0x02,0x00, - 0x3e,0x03,0x03,0x02,0x10,0x02,0x03,0x00,0x34,0x03,0x09,0x00,0x37,0x03,0x0a,0x03, - 0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x05,0x06,0x80, - 0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x10,0x07,0x04,0x00, - 0x33,0x08,0x0c,0x00,0x3e,0x05,0x04,0x01,0x10,0x06,0x03,0x00,0x37,0x05,0x0d,0x03, - 0x27,0x07,0x01,0x00,0x3e,0x05,0x03,0x02,0x07,0x05,0x0e,0x00,0x54,0x05,0x08,0x80, - 0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x37,0x07,0x00,0x01, - 0x25,0x08,0x0f,0x00,0x24,0x07,0x08,0x07,0x33,0x08,0x10,0x00,0x3e,0x05,0x04,0x01, - 0x10,0x06,0x03,0x00,0x37,0x05,0x11,0x03,0x25,0x07,0x12,0x00,0x27,0x08,0x00,0x00, - 0x3e,0x05,0x04,0x01,0x32,0x05,0x00,0x00,0x34,0x06,0x13,0x00,0x37,0x07,0x14,0x01, - 0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02, - 0x34,0x07,0x13,0x00,0x37,0x08,0x15,0x01,0x0e,0x00,0x08,0x00,0x54,0x09,0x02,0x80, - 0x34,0x08,0x16,0x00,0x37,0x08,0x17,0x08,0x3e,0x07,0x02,0x02,0x27,0x08,0x00,0x00, - 0x10,0x0a,0x03,0x00,0x37,0x09,0x18,0x03,0x3e,0x09,0x02,0x04,0x54,0x0c,0x0c,0x80, - 0x14,0x08,0x00,0x08,0x03,0x06,0x08,0x00,0x54,0x0d,0x06,0x80,0x03,0x08,0x07,0x00, - 0x54,0x0d,0x04,0x80,0x13,0x0d,0x05,0x00,0x14,0x0d,0x00,0x0d,0x39,0x0c,0x0d,0x05, - 0x54,0x0d,0x03,0x80,0x03,0x07,0x08,0x00,0x54,0x0d,0x01,0x80,0x54,0x09,0x02,0x80, - 0x41,0x0c,0x03,0x02,0x4e,0x0c,0xf2,0x7f,0x10,0x0a,0x03,0x00,0x37,0x09,0x19,0x03, - 0x3e,0x09,0x02,0x01,0x13,0x09,0x05,0x00,0x14,0x09,0x00,0x09,0x25,0x0a,0x1a,0x00, - 0x39,0x0a,0x09,0x05,0x2b,0x09,0x01,0x00,0x37,0x09,0x1b,0x09,0x37,0x0a,0x1c,0x00, - 0x33,0x0b,0x1d,0x00,0x33,0x0c,0x1e,0x00,0x37,0x0d,0x1f,0x01,0x3a,0x0d,0x20,0x0c, - 0x3a,0x0c,0x21,0x0b,0x2b,0x0c,0x02,0x00,0x37,0x0c,0x22,0x0c,0x34,0x0d,0x23,0x00, - 0x37,0x0d,0x24,0x0d,0x10,0x0e,0x05,0x00,0x25,0x0f,0x25,0x00,0x3e,0x0d,0x03,0x00, - 0x3d,0x0c,0x00,0x00,0x3c,0x0c,0x01,0x00,0x3e,0x09,0x03,0x01,0x47,0x00,0x01,0x00, - 0x06,0xc0,0x04,0xc0,0x05,0xc0,0x06,0x0a,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a, - 0x74,0x61,0x62,0x6c,0x65,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x02,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x01,0x00,0x01,0x08,0x74, - 0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x05,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x0a, - 0x6c,0x69,0x6e,0x65,0x73,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x06, - 0x65,0x06,0x62,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x08,0x73,0x65,0x74, - 0x09,0x73,0x65,0x65,0x6b,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73, - 0x03,0x00,0x11,0x20,0x69,0x73,0x20,0x62,0x79,0x74,0x65,0x63,0x6f,0x64,0x65,0x06, - 0x21,0x09,0x72,0x65,0x61,0x64,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73, - 0x73,0x03,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x09,0x6f,0x70,0x65,0x6e,0x07,0x69, - 0x6f,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0b,0x73, - 0x6f,0x75,0x72,0x63,0x65,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09, - 0x63,0x6f,0x72,0x6f,0x0d,0x67,0x65,0x74,0x5f,0x70,0x61,0x74,0x68,0x06,0x66,0x02, - 0x03,0x80,0x80,0xc0,0x99,0x04,0xbc,0x02,0x00,0x02,0x07,0x03,0x12,0x00,0x2a,0x37, - 0x02,0x00,0x01,0x07,0x02,0x01,0x00,0x54,0x02,0x08,0x80,0x34,0x02,0x02,0x00,0x2b, - 0x03,0x00,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x03,0x04,0x2b,0x05,0x00,0x00,0x36, - 0x04,0x05,0x04,0x39,0x04,0x03,0x02,0x54,0x02,0x13,0x80,0x34,0x02,0x02,0x00,0x2b, - 0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x33,0x05,0x06,0x00,0x37,0x06,0x05,0x00,0x3a, - 0x06,0x05,0x05,0x2b,0x06,0x00,0x00,0x3a,0x06,0x07,0x05,0x37,0x06,0x00,0x01,0x07, - 0x06,0x08,0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x09,0x06,0x0e, - 0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0a,0x06,0x3e, - 0x04,0x03,0x02,0x39,0x04,0x03,0x02,0x2b,0x02,0x02,0x00,0x37,0x02,0x0b,0x02,0x37, - 0x03,0x05,0x00,0x33,0x04,0x0c,0x00,0x33,0x05,0x0d,0x00,0x2b,0x06,0x00,0x00,0x3a, - 0x06,0x0e,0x05,0x37,0x06,0x0f,0x01,0x3a,0x06,0x10,0x05,0x3a,0x05,0x11,0x04,0x3e, - 0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x00,0xc0,0x00,0x00,0x01,0x00,0x09,0x61,0x74, - 0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, - 0x64,0x06,0x69,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x01,0x00,0x01,0x0c,0x73, - 0x75,0x63,0x63,0x65,0x73,0x73,0x06,0x31,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, - 0x6c,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75, - 0x74,0x10,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x06,0x31,0x09, - 0x6d,0x6f,0x64,0x65,0x01,0x00,0x00,0x08,0x73,0x6b,0x74,0x11,0x73,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f, - 0x06,0x30,0x06,0x63,0x18,0x01,0x01,0x02,0x02,0x01,0x00,0x03,0x31,0x01,0x00,0x00, - 0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x03,0xc0,0x04,0xc0,0x00,0xc9,0x07,0x03, - 0x00,0x11,0x00,0x4d,0x00,0x68,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x34,0x01, - 0x00,0x00,0x37,0x01,0x02,0x01,0x34,0x02,0x03,0x00,0x25,0x03,0x04,0x00,0x3e,0x02, - 0x02,0x02,0x34,0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02,0x02,0x34,0x04, - 0x03,0x00,0x25,0x05,0x06,0x00,0x3e,0x04,0x02,0x02,0x34,0x05,0x03,0x00,0x25,0x06, - 0x07,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x03,0x00,0x25,0x07,0x08,0x00,0x3e,0x06, - 0x02,0x02,0x34,0x07,0x03,0x00,0x25,0x08,0x09,0x00,0x3e,0x07,0x02,0x02,0x34,0x08, - 0x03,0x00,0x25,0x09,0x0a,0x00,0x3e,0x08,0x02,0x02,0x37,0x09,0x0b,0x05,0x32,0x0a, - 0x00,0x00,0x31,0x0b,0x0c,0x00,0x31,0x0c,0x0e,0x00,0x3a,0x0c,0x0d,0x0a,0x31,0x0c, - 0x10,0x00,0x3a,0x0c,0x0f,0x0a,0x31,0x0c,0x12,0x00,0x3a,0x0c,0x11,0x0a,0x31,0x0c, - 0x14,0x00,0x3a,0x0c,0x13,0x0a,0x31,0x0c,0x16,0x00,0x3a,0x0c,0x15,0x0a,0x31,0x0c, - 0x18,0x00,0x3a,0x0c,0x17,0x0a,0x31,0x0c,0x1a,0x00,0x3a,0x0c,0x19,0x0a,0x31,0x0c, - 0x1c,0x00,0x3a,0x0c,0x1b,0x0a,0x31,0x0c,0x1e,0x00,0x3a,0x0c,0x1d,0x0a,0x31,0x0c, - 0x20,0x00,0x3a,0x0c,0x1f,0x0a,0x31,0x0c,0x22,0x00,0x3a,0x0c,0x21,0x0a,0x31,0x0c, - 0x24,0x00,0x3a,0x0c,0x23,0x0a,0x31,0x0c,0x26,0x00,0x3a,0x0c,0x25,0x0a,0x31,0x0c, - 0x28,0x00,0x3a,0x0c,0x27,0x0a,0x31,0x0c,0x2a,0x00,0x3a,0x0c,0x29,0x0a,0x31,0x0c, - 0x2c,0x00,0x3a,0x0c,0x2b,0x0a,0x31,0x0c,0x2e,0x00,0x3a,0x0c,0x2d,0x0a,0x31,0x0c, - 0x30,0x00,0x3a,0x0c,0x2f,0x0a,0x31,0x0c,0x32,0x00,0x3a,0x0c,0x31,0x0a,0x31,0x0c, - 0x34,0x00,0x3a,0x0c,0x33,0x0a,0x31,0x0c,0x36,0x00,0x3a,0x0c,0x35,0x0a,0x33,0x0c, - 0x38,0x00,0x37,0x0d,0x37,0x07,0x3a,0x0d,0x37,0x0c,0x34,0x0d,0x39,0x00,0x32,0x0e, - 0x00,0x00,0x33,0x0f,0x3b,0x00,0x31,0x10,0x3a,0x00,0x3a,0x10,0x3c,0x0f,0x31,0x10, - 0x3d,0x00,0x3a,0x10,0x3e,0x0f,0x3e,0x0d,0x03,0x02,0x3a,0x0d,0x3f,0x0c,0x37,0x0d, - 0x40,0x05,0x3a,0x0d,0x41,0x0c,0x3a,0x0c,0x3c,0x0c,0x31,0x0d,0x43,0x00,0x3a,0x0d, - 0x42,0x0a,0x31,0x0d,0x45,0x00,0x3a,0x0d,0x44,0x0a,0x31,0x0d,0x47,0x00,0x3a,0x0d, - 0x46,0x0a,0x31,0x0d,0x49,0x00,0x3a,0x0d,0x48,0x0a,0x31,0x0d,0x4a,0x00,0x10,0x0e, - 0x0d,0x00,0x25,0x0f,0x4b,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4b,0x0a,0x10,0x0e, - 0x0d,0x00,0x25,0x0f,0x4c,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4c,0x0a,0x30,0x00, - 0x00,0x80,0x48,0x0a,0x02,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74, - 0x64,0x6f,0x75,0x74,0x00,0x00,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x00,0x11,0x70, - 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x73,0x65,0x74,0x00,0x13,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x76,0x61,0x6c,0x75,0x65,0x00,0x11,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x10,0x65,0x6e,0x76,0x69,0x72,0x6f, - 0x6e,0x6d,0x65,0x6e,0x74,0x0d,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e,0x76,0x0e,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e, - 0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x01,0x00,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01,0x00,0x00, - 0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x00,0x10,0x63,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x00,0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, - 0x5f,0x6e,0x61,0x6d,0x65,0x73,0x00,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x5f,0x6c,0x69,0x73,0x74,0x00,0x0e,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65, - 0x74,0x00,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x00,0x16, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f,0x76, - 0x65,0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x75,0x70, - 0x64,0x61,0x74,0x65,0x00,0x14,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, - 0x5f,0x6c,0x69,0x73,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e, - 0x74,0x5f,0x67,0x65,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e, - 0x74,0x5f,0x73,0x65,0x74,0x00,0x09,0x65,0x76,0x61,0x6c,0x00,0x0e,0x73,0x74,0x65, - 0x70,0x5f,0x69,0x6e,0x74,0x6f,0x00,0x0d,0x73,0x74,0x65,0x70,0x5f,0x6f,0x75,0x74, - 0x00,0x0e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x76,0x65,0x72,0x00,0x08,0x72,0x75,0x6e, - 0x00,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f,0x67,0x65,0x74,0x00,0x10,0x66, - 0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x00,0x10,0x66,0x65,0x61,0x74, - 0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x00,0x09,0x73,0x74,0x6f,0x70,0x00,0x0b,0x73, - 0x74,0x61,0x74,0x75,0x73,0x00,0x0a,0x62,0x72,0x65,0x61,0x6b,0x00,0x08,0x6c,0x6f, - 0x67,0x15,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72, - 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x16,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x12,0x64,0x65,0x62,0x75, - 0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x72,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c,0x72,0x65,0x71,0x75, - 0x69,0x72,0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70,0x0e,0x63, - 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x1b,0x00,0x01,0x03,0x00,0x01,0x00,0x03, - 0x34,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x40,0x01,0x02,0x00,0x0c,0x67,0x65,0x74, - 0x66,0x65,0x6e,0x76,0x7e,0x00,0x02,0x04,0x03,0x01,0x00,0x1b,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x00,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x01, - 0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x0e,0x80,0x2b,0x02,0x02,0x00, - 0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x00,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x01, - 0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02,0x00,0x00, - 0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x09,0x5f, - 0x45,0x4e,0x56,0x83,0x01,0x00,0x02,0x04,0x04,0x00,0x00,0x1d,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02,0x01,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00, - 0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x2b,0x02,0x02,0x00, - 0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02,0x01,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x00, - 0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x03,0x00, - 0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00, - 0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0,0x77,0x00,0x03,0x05,0x04,0x00,0x00,0x1a, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04,0x03, - 0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03,0x0e,0x80,0x2b,0x03,0x02,0x00, - 0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04,0x03,0x36,0x03,0x01,0x03, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00, - 0x39,0x02,0x01,0x03,0x54,0x03,0x03,0x80,0x2b,0x03,0x03,0x00,0x36,0x03,0x03,0x00, - 0x39,0x02,0x01,0x03,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0, - 0xd1,0x02,0x00,0x01,0x0f,0x03,0x0a,0x01,0x41,0x33,0x01,0x00,0x00,0x34,0x02,0x01, - 0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04, - 0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00, - 0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02, - 0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0b,0x02, - 0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x00,0x00,0x36,0x0e,0x0e, - 0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24,0x08,0x0e, - 0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x13,0x02,0x01, - 0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x07,0x00,0x39,0x03,0x02,0x01,0x34,0x02,0x01, - 0x00,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04, - 0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00, - 0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02, - 0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0b,0x02, - 0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x02,0x00,0x36,0x0e,0x0e, - 0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24,0x08,0x0e, - 0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x34,0x02,0x08, - 0x00,0x37,0x02,0x09,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x03,0xc0,0x07, - 0xc0,0x04,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65, - 0x10,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x3a,0x20,0x0a,0x06,0x0a,0x07,0x29, - 0x3d,0x06,0x28,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x09,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x01,0x02,0x00,0x00,0x0e,0x4c,0x6f,0x63,0x61,0x6c,0x73,0x3a, - 0x20,0x0a,0x02,0xb2,0x01,0x00,0x02,0x0a,0x02,0x08,0x00,0x18,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80, - 0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00,0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01, - 0x2b,0x03,0x01,0x00,0x36,0x03,0x03,0x00,0x34,0x04,0x04,0x00,0x27,0x05,0x02,0x00, - 0x37,0x06,0x05,0x03,0x10,0x07,0x06,0x00,0x37,0x06,0x06,0x06,0x37,0x08,0x07,0x03, - 0x10,0x09,0x02,0x00,0x3e,0x06,0x04,0x00,0x3f,0x04,0x01,0x00,0x07,0xc0,0x08,0xc0, - 0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09, - 0x63,0x6f,0x72,0x6f,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x16,0x20,0x64,0x6f,0x65, - 0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x73,0x74,0x73,0x2e,0x0d,0x74,0x6f, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c, - 0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8b,0x01,0x00,0x03,0x0a,0x02,0x05,0x00,0x15, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00, - 0x54,0x04,0x0a,0x80,0x2b,0x04,0x01,0x00,0x36,0x04,0x04,0x00,0x37,0x05,0x00,0x04, - 0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x37,0x07,0x02,0x04,0x10,0x08,0x03,0x00, - 0x10,0x09,0x02,0x00,0x3e,0x05,0x05,0x01,0x54,0x04,0x05,0x80,0x34,0x04,0x03,0x00, - 0x25,0x05,0x04,0x00,0x10,0x06,0x01,0x00,0x24,0x05,0x06,0x05,0x3e,0x04,0x02,0x01, - 0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x16,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20, - 0x73,0x65,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72, - 0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09, - 0x63,0x6f,0x72,0x6f,0x46,0x00,0x02,0x06,0x01,0x01,0x00,0x0e,0x34,0x02,0x00,0x00, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x03, - 0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04,0x02,0x00,0x36,0x05,0x02,0x00, - 0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00, - 0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78,0x74,0xa8,0x01,0x00,0x02,0x08, - 0x02,0x07,0x00,0x16,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02, - 0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00, - 0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00, - 0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01,0x34,0x03,0x04,0x00,0x27,0x04,0x02,0x00, - 0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x2b,0x06,0x01,0x00,0x36,0x06,0x06,0x00, - 0x10,0x07,0x02,0x00,0x3e,0x05,0x03,0x00,0x3f,0x03,0x01,0x00,0x07,0xc0,0x08,0xc0, - 0x0f,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75, - 0x67,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x17,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e, - 0x6f,0x74,0x20,0x65,0x78,0x69,0x74,0x73,0x74,0x73,0x2e,0x0d,0x74,0x6f,0x73,0x74, - 0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x82,0x01,0x00,0x03,0x08,0x02,0x04,0x00,0x13,0x2b,0x03, - 0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x08,0x80,0x34,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x2b,0x05,0x01,0x00,0x36,0x05, - 0x05,0x00,0x10,0x06,0x03,0x00,0x10,0x07,0x02,0x00,0x3e,0x04,0x04,0x01,0x54,0x04, - 0x05,0x80,0x34,0x04,0x02,0x00,0x25,0x05,0x03,0x00,0x10,0x06,0x01,0x00,0x24,0x05, - 0x06,0x05,0x3e,0x04,0x02,0x01,0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x18,0x43, - 0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x76,0x61,0x6c,0x75, - 0x65,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61, - 0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x46,0x00,0x02,0x06,0x01,0x01,0x00, - 0x0e,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04,0x01, - 0x00,0x3e,0x02,0x03,0x03,0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04,0x02, - 0x00,0x36,0x05,0x02,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00, - 0x00,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78,0x74, - 0xe9,0x04,0x00,0x03,0x10,0x08,0x14,0x00,0x6e,0x32,0x03,0x00,0x00,0x32,0x04,0x00, - 0x00,0x27,0x05,0x00,0x00,0x01,0x02,0x05,0x00,0x54,0x05,0x09,0x80,0x2b,0x05,0x00, - 0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34,0x08,0x02, - 0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x05,0x03, - 0x01,0x10,0x06,0x01,0x00,0x37,0x05,0x03,0x01,0x10,0x07,0x02,0x00,0x25,0x08,0x04, - 0x00,0x3e,0x05,0x04,0x02,0x0e,0x00,0x05,0x00,0x54,0x06,0x09,0x80,0x2b,0x05,0x00, - 0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34,0x08,0x02, - 0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x05,0x03, - 0x02,0x37,0x05,0x05,0x05,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37,0x07,0x07, - 0x07,0x27,0x08,0x01,0x00,0x49,0x06,0x12,0x80,0x10,0x0b,0x01,0x00,0x37,0x0a,0x08, - 0x01,0x10,0x0c,0x02,0x00,0x10,0x0d,0x09,0x00,0x3e,0x0a,0x04,0x03,0x0e,0x00,0x0a, - 0x00,0x54,0x0c,0x02,0x80,0x54,0x06,0x0a,0x80,0x54,0x0c,0x08,0x80,0x10,0x0d,0x0a, - 0x00,0x37,0x0c,0x09,0x0a,0x27,0x0e,0x01,0x00,0x27,0x0f,0x01,0x00,0x3e,0x0c,0x04, - 0x02,0x06,0x0c,0x0a,0x00,0x54,0x0c,0x01,0x80,0x39,0x09,0x0a,0x03,0x4b,0x06,0xee, - 0x7f,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37,0x07,0x07,0x07,0x27,0x08,0x01, - 0x00,0x49,0x06,0x0a,0x80,0x34,0x0a,0x0b,0x00,0x37,0x0a,0x0c,0x0a,0x10,0x0b,0x05, - 0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x03,0x0e,0x00,0x0a,0x00,0x54,0x0c,0x01, - 0x80,0x54,0x06,0x02,0x80,0x39,0x09,0x0a,0x04,0x4b,0x06,0xf6,0x7f,0x34,0x06,0x0d, - 0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x03,0x08,0x07,0x2b,0x08,0x02, - 0x00,0x33,0x09,0x0e,0x00,0x3a,0x02,0x0f,0x09,0x3a,0x01,0x10,0x09,0x39,0x09,0x08, - 0x07,0x37,0x08,0x11,0x00,0x3e,0x06,0x03,0x02,0x10,0x03,0x06,0x00,0x34,0x06,0x0d, - 0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x04,0x08,0x07,0x2b,0x08,0x02, - 0x00,0x39,0x05,0x08,0x07,0x37,0x08,0x12,0x00,0x3e,0x06,0x03,0x02,0x10,0x04,0x06, - 0x00,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x10,0x2b,0x08,0x03,0x00,0x39,0x03,0x08, - 0x07,0x2b,0x08,0x04,0x00,0x39,0x04,0x08,0x07,0x2b,0x08,0x05,0x00,0x32,0x09,0x00, - 0x00,0x39,0x09,0x08,0x07,0x10,0x08,0x00,0x00,0x3e,0x06,0x03,0x02,0x34,0x07,0x13, - 0x00,0x10,0x08,0x06,0x00,0x2b,0x09,0x06,0x00,0x2b,0x0a,0x07,0x00,0x10,0x0b,0x05, - 0x00,0x10,0x0c,0x06,0x00,0x3e,0x0a,0x03,0x00,0x3d,0x07,0x02,0x01,0x48,0x06,0x02, - 0x00,0x01,0xc0,0x07,0xc0,0x08,0xc0,0x03,0xc0,0x04,0xc0,0x06,0xc0,0x05,0xc0,0x09, - 0x80,0x0b,0x72,0x61,0x77,0x73,0x65,0x74,0x11,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x11,0x4c,0x6f,0x63,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x09,0x63,0x6f,0x72,0x6f,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x67,0x65, - 0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x06,0x28, - 0x08,0x73,0x75,0x62,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09,0x68,0x75, - 0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x09,0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67, - 0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x1a, - 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65, - 0x76,0x65,0x6c,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x77,0x00,0x02,0x09,0x02, - 0x02,0x00,0x18,0x38,0x02,0x01,0x00,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x29, - 0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54, - 0x04,0x03,0x80,0x32,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x39,0x03,0x02,0x04,0x36, - 0x04,0x01,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x00,0x05,0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x10,0x07,0x00,0x00,0x10, - 0x08,0x01,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00,0x39,0x04,0x01,0x03,0x48, - 0x04,0x02,0x00,0x00,0xc0,0x00,0x00,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x1a,0x01,0x00,0x02,0x01,0x01,0x00,0x04,0x32,0x00,0x00,0x00,0x31, - 0x01,0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x00,0xc0,0x00,0xa8,0x03, - 0x03,0x00,0x0d,0x00,0x20,0x00,0x3b,0x32,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x25, - 0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x02,0x00,0x3e, - 0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x32,0x04,0x00,0x00,0x32,0x05,0x00,0x00,0x32, - 0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x32,0x08,0x00,0x00,0x29,0x09,0x00,0x00,0x34, - 0x0a,0x03,0x00,0x07,0x0a,0x04,0x00,0x54,0x0a,0x02,0x80,0x31,0x09,0x05,0x00,0x54, - 0x0a,0x04,0x80,0x34,0x0a,0x03,0x00,0x07,0x0a,0x06,0x00,0x54,0x0a,0x01,0x80,0x31, - 0x09,0x07,0x00,0x33,0x0a,0x09,0x00,0x3b,0x03,0x00,0x0a,0x3b,0x05,0x01,0x0a,0x3b, - 0x04,0x02,0x0a,0x27,0x0b,0xff,0xff,0x39,0x06,0x0b,0x0a,0x3a,0x07,0x0a,0x0a,0x31, - 0x0b,0x0b,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x0d,0x00,0x3a,0x0b,0x0e,0x0a,0x31, - 0x0b,0x0f,0x00,0x3a,0x0b,0x10,0x0a,0x33,0x0b,0x12,0x00,0x31,0x0c,0x11,0x00,0x3a, - 0x0c,0x0c,0x0b,0x31,0x0c,0x13,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x14,0x00,0x3a, - 0x0c,0x15,0x0b,0x3a,0x0b,0x16,0x0a,0x33,0x0b,0x18,0x00,0x31,0x0c,0x17,0x00,0x3a, - 0x0c,0x0c,0x0b,0x31,0x0c,0x19,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x1a,0x00,0x3a, - 0x0c,0x15,0x0b,0x3a,0x0b,0x1b,0x0a,0x31,0x0b,0x1c,0x00,0x3a,0x0b,0x1d,0x0a,0x3a, - 0x0a,0x08,0x00,0x31,0x0a,0x1f,0x00,0x3a,0x0a,0x1e,0x00,0x30,0x00,0x00,0x80,0x48, - 0x00,0x02,0x00,0x00,0x13,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e,0x61, - 0x67,0x65,0x72,0x08,0x6e,0x65,0x77,0x00,0x11,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x4c,0x6f,0x63,0x61, - 0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0d,0x69,0x74,0x65,0x72,0x61,0x74,0x6f, - 0x72,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x00,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c, - 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x00,0x0a,0x53,0x54,0x4f,0x52,0x45,0x01,0x00, - 0x00,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35, - 0x2e,0x32,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52, - 0x53,0x49,0x4f,0x4e,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74, - 0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70, - 0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x43,0x00,0x01,0x08,0x00,0x02,0x00,0x0a, - 0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00, - 0x3e,0x02,0x03,0x04,0x54,0x05,0x01,0x80,0x39,0x06,0x05,0x01,0x41,0x05,0x03,0x03, - 0x4e,0x05,0xfd,0x7f,0x48,0x01,0x02,0x00,0x11,0x25,0x2d,0x28,0x25,0x77,0x29,0x20, - 0x28,0x25,0x53,0x2b,0x29,0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0xe1,0x01,0x00,0x01, - 0x09,0x02,0x07,0x00,0x23,0x2a,0x01,0x03,0x00,0x10,0x05,0x00,0x00,0x37,0x04,0x00, - 0x00,0x25,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x29,0x08,0x02,0x00,0x3e,0x04,0x05, - 0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x10,0x05,0x00,0x00,0x37,0x04,0x02, - 0x00,0x25,0x06,0x03,0x00,0x3e,0x04,0x03,0x04,0x10,0x03,0x06,0x00,0x10,0x02,0x05, - 0x00,0x10,0x01,0x04,0x00,0x2b,0x04,0x00,0x00,0x37,0x04,0x04,0x04,0x10,0x05,0x03, - 0x00,0x3e,0x04,0x02,0x02,0x10,0x03,0x04,0x00,0x54,0x04,0x06,0x80,0x10,0x05,0x00, - 0x00,0x37,0x04,0x02,0x00,0x25,0x06,0x05,0x00,0x3e,0x04,0x03,0x03,0x10,0x02,0x05, - 0x00,0x10,0x01,0x04,0x00,0x10,0x04,0x01,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x06, - 0x05,0x10,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x10,0x06,0x03,0x00,0x46,0x04,0x04, - 0x00,0x00,0xc0,0x08,0xc0,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x13, - 0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e,0x2a,0x29,0x24,0x0a,0x75, - 0x6e,0x62,0x36,0x34,0x21,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e, - 0x2a,0x29,0x25,0x73,0x2b,0x25,0x2d,0x25,0x2d,0x25,0x73,0x2a,0x28,0x2e,0x2a,0x29, - 0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x07,0x2d,0x2d,0x09,0x66,0x69,0x6e,0x64,0x68, - 0x00,0x01,0x06,0x01,0x02,0x01,0x15,0x32,0x01,0x00,0x00,0x51,0x02,0x10,0x80,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x3e,0x02,0x03,0x03,0x0e, - 0x00,0x02,0x00,0x54,0x04,0x03,0x80,0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46, - 0x04,0x03,0x00,0x07,0x02,0x01,0x00,0x54,0x04,0x01,0x80,0x54,0x02,0x04,0x80,0x13, - 0x04,0x01,0x00,0x14,0x04,0x00,0x04,0x39,0x02,0x04,0x01,0x54,0x02,0xef,0x7f,0x2b, - 0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x07,0xc0,0x06,0x00,0x0c, - 0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x02,0x71,0x00,0x03,0x07,0x03,0x05,0x00,0x0f, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x33,0x05,0x00,0x00,0x3a,0x00,0x01,0x05, - 0x3a,0x01,0x02,0x05,0x0c,0x06,0x02,0x00,0x54,0x06,0x01,0x80,0x32,0x06,0x00,0x00, - 0x3a,0x06,0x03,0x05,0x2b,0x06,0x02,0x00,0x37,0x06,0x04,0x06,0x3e,0x04,0x03,0x02, - 0x27,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x02,0xc0, - 0x08,0xc0,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41, - 0x54,0x41,0x42,0x4c,0x45,0x09,0x61,0x74,0x74,0x72,0x0c,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x37,0x02,0x02,0x05,0x01,0x01, - 0x00,0x0a,0x0e,0x00,0x01,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x00,0x02,0x10,0x03,0x00,0x00,0x43,0x04,0x02,0x02,0x3e,0x02,0x03,0x01,0x10,0x02, - 0x01,0x00,0x43,0x03,0x02,0x00,0x45,0x02,0x01,0x00,0x08,0xc0,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x86,0x04,0x00,0x01,0x0e,0x07,0x0f,0x01,0x6c,0x2b,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x00,0x00,0x37, - 0x04,0x01,0x00,0x24,0x03,0x04,0x03,0x39,0x03,0x02,0x01,0x2b,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x02,0x00,0x39, - 0x03,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x02,0x03,0x00,0x0e,0x00,0x02,0x00,0x54, - 0x03,0x01,0x80,0x32,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x44,0x04,0x1c,0x80,0x2b, - 0x06,0x02,0x00,0x10,0x07,0x04,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x04,0x00,0x54, - 0x06,0x17,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14, - 0x07,0x00,0x07,0x10,0x08,0x04,0x00,0x25,0x09,0x05,0x00,0x2b,0x0a,0x03,0x00,0x10, - 0x0b,0x05,0x00,0x3e,0x0a,0x02,0x02,0x10,0x0b,0x0a,0x00,0x37,0x0a,0x06,0x0a,0x25, - 0x0c,0x07,0x00,0x2b,0x0d,0x04,0x00,0x3e,0x0a,0x04,0x02,0x25,0x0b,0x08,0x00,0x24, - 0x08,0x0b,0x08,0x39,0x08,0x07,0x06,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13, - 0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x39,0x08,0x07,0x06,0x42, - 0x04,0x03,0x03,0x4e,0x04,0xe2,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x02,0x01,0x38,0x01,0x01,0x00,0x0f, - 0x00,0x01,0x00,0x54,0x02,0x2a,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x09,0x00,0x39,0x03,0x02,0x01,0x2b, - 0x01,0x05,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x54,0x04,0x14,0x80,0x2b, - 0x06,0x02,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x0a,0x00,0x54, - 0x06,0x04,0x80,0x2b,0x06,0x06,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02,0x01,0x54, - 0x06,0x0b,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14, - 0x07,0x00,0x07,0x25,0x08,0x0b,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e, - 0x09,0x02,0x02,0x25,0x0a,0x0c,0x00,0x24,0x08,0x0a,0x08,0x39,0x08,0x07,0x06,0x41, - 0x04,0x03,0x03,0x4e,0x04,0xea,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x0d,0x00,0x37,0x04,0x01,0x00,0x25, - 0x05,0x09,0x00,0x24,0x03,0x05,0x03,0x39,0x03,0x02,0x01,0x54,0x01,0x06,0x80,0x2b, - 0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25, - 0x03,0x0e,0x00,0x39,0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x00,0x00,0x01, - 0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x02,0xc0,0x07,0x2f,0x3e,0x07,0x3c,0x2f,0x08, - 0x5d,0x5d,0x3e,0x0e,0x3c,0x21,0x5b,0x43,0x44,0x41,0x54,0x41,0x5b,0x0a,0x74,0x61, - 0x62,0x6c,0x65,0x06,0x3e,0x06,0x22,0x0a,0x5b,0x22,0x26,0x3c,0x5d,0x09,0x67,0x73, - 0x75,0x62,0x07,0x3d,0x22,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61,0x74,0x74, - 0x72,0x06,0x20,0x08,0x74,0x61,0x67,0x06,0x3c,0x02,0x38,0x01,0x01,0x05,0x06,0x01, - 0x00,0x09,0x32,0x01,0x00,0x00,0x31,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x10,0x04, - 0x00,0x00,0x3e,0x03,0x02,0x01,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00,0x30,0x00, - 0x00,0x80,0x40,0x03,0x02,0x00,0x04,0xc0,0x03,0xc0,0x06,0xc0,0x09,0xc0,0x05,0xc0, - 0x07,0xc0,0x00,0xf9,0x01,0x00,0x02,0x09,0x03,0x0a,0x00,0x20,0x37,0x02,0x00,0x01, - 0x0e,0x00,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02,0x00,0x00,0x3a,0x02,0x00,0x01, - 0x37,0x02,0x00,0x01,0x25,0x03,0x02,0x00,0x3a,0x03,0x01,0x02,0x25,0x02,0x03,0x00, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x02, - 0x24,0x02,0x03,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x05,0x03,0x25,0x04,0x06,0x00, - 0x25,0x05,0x07,0x00,0x10,0x06,0x02,0x00,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x10,0x04,0x00,0x00,0x37,0x03,0x08,0x00,0x2b,0x05,0x02,0x00,0x13,0x06,0x02,0x00, - 0x3e,0x05,0x02,0x02,0x25,0x06,0x09,0x00,0x10,0x07,0x02,0x00,0x25,0x08,0x09,0x00, - 0x24,0x05,0x08,0x05,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x08,0xc0,0x00,0xc0, - 0x06,0xc0,0x06,0x00,0x09,0x73,0x65,0x6e,0x64,0x0a,0x53,0x65,0x6e,0x64,0x20,0x0a, - 0x44,0x45,0x42,0x55,0x47,0x08,0x6c,0x6f,0x67,0x0c,0x6c,0x6f,0x6d,0x32,0x73,0x74, - 0x72,0x2d,0x3c,0x3f,0x78,0x6d,0x6c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d, - 0x22,0x31,0x2e,0x30,0x22,0x20,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x3d,0x22, - 0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x3f,0x3e,0x0a,0x1d,0x75,0x72,0x6e,0x3a,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c, - 0x5f,0x76,0x31,0x0a,0x78,0x6d,0x6c,0x6e,0x73,0x09,0x61,0x74,0x74,0x72,0x66,0x00, - 0x02,0x06,0x01,0x05,0x00,0x0d,0x33,0x02,0x00,0x00,0x33,0x03,0x01,0x00,0x3a,0x00, - 0x02,0x03,0x3a,0x03,0x03,0x02,0x0f,0x00,0x01,0x00,0x54,0x03,0x06,0x80,0x33,0x03, - 0x04,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x3b,0x04, - 0x01,0x03,0x3b,0x03,0x01,0x02,0x48,0x02,0x02,0x00,0x06,0xc0,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0c,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x61,0x74,0x74,0x72, - 0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0xd5,0x02,0x03,0x00,0x0b,0x00,0x1b,0x00,0x21,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02, - 0x03,0x00,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34,0x06, - 0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x32,0x08,0x00,0x00,0x31,0x09, - 0x0b,0x00,0x3a,0x09,0x0a,0x08,0x31,0x09,0x0d,0x00,0x3a,0x09,0x0c,0x08,0x31,0x09, - 0x0f,0x00,0x3a,0x09,0x0e,0x08,0x32,0x09,0x00,0x00,0x3a,0x09,0x10,0x08,0x31,0x09, - 0x11,0x00,0x3a,0x09,0x02,0x08,0x31,0x09,0x13,0x00,0x3a,0x09,0x12,0x08,0x33,0x09, - 0x14,0x00,0x31,0x0a,0x16,0x00,0x3a,0x0a,0x15,0x08,0x31,0x0a,0x18,0x00,0x3a,0x0a, - 0x17,0x08,0x31,0x0a,0x1a,0x00,0x3a,0x0a,0x19,0x08,0x30,0x00,0x00,0x80,0x48,0x08, - 0x02,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x00,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0c,0x6c,0x6f,0x6d,0x32,0x73,0x74, - 0x72,0x01,0x00,0x03,0x06,0x3c,0x09,0x26,0x6c,0x74,0x3b,0x06,0x26,0x0a,0x26,0x61, - 0x6d,0x70,0x3b,0x06,0x22,0x0b,0x26,0x71,0x75,0x6f,0x74,0x3b,0x00,0x0b,0x61,0x73, - 0x73,0x65,0x72,0x74,0x00,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d, - 0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x00,0x10,0x72,0x65,0x61,0x64,0x5f,0x70, - 0x61,0x63,0x6b,0x65,0x74,0x00,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61,0x72,0x73,0x65, - 0x00,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x0b,0x63,0x6f,0x6e,0x63, - 0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, - 0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x74, - 0x79,0x70,0x65,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, - 0x0a,0x65,0x72,0x72,0x6f,0x72,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, - 0x75,0x74,0x69,0x6c,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x10,0x00,0x00,0x01, - 0x00,0x01,0x00,0x02,0x25,0x00,0x00,0x00,0x48,0x00,0x02,0x00,0x05,0x22,0x00,0x01, - 0x03,0x01,0x00,0x01,0x06,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02, - 0x00,0x14,0x02,0x00,0x02,0x39,0x00,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0xc0,0x02, - 0x5e,0x00,0x04,0x09,0x02,0x02,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04, - 0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x36,0x04,0x05,0x04, - 0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04, - 0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00, - 0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x14,0xc0,0x04,0xc0,0x0c,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x46, - 0x00,0x04,0x0a,0x03,0x01,0x00,0x0c,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10, - 0x05,0x00,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x2b, - 0x07,0x02,0x00,0x10,0x08,0x01,0x00,0x3e,0x07,0x02,0x02,0x10,0x08,0x02,0x00,0x10, - 0x09,0x03,0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x04,0xc0,0x03,0xc0,0x0d,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0xd0,0x02,0x00,0x04,0x0f,0x04,0x09,0x00,0x3f,0x2b, - 0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x00,0x05,0x36,0x05,0x04,0x05,0x0f,0x00,0x05,0x00,0x54,0x06,0x08,0x80,0x10, - 0x06,0x05,0x00,0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00,0x10, - 0x0a,0x03,0x00,0x3e,0x06,0x05,0x02,0x29,0x07,0x02,0x00,0x46,0x06,0x03,0x00,0x27, - 0x06,0x01,0x00,0x2b,0x07,0x02,0x00,0x13,0x07,0x07,0x00,0x27,0x08,0x01,0x00,0x49, - 0x06,0x0d,0x80,0x2b,0x0a,0x02,0x00,0x36,0x0a,0x09,0x0a,0x10,0x0b,0x00,0x00,0x10, - 0x0c,0x01,0x00,0x10,0x0d,0x02,0x00,0x10,0x0e,0x03,0x00,0x3e,0x0a,0x05,0x02,0x0f, - 0x00,0x0a,0x00,0x54,0x0b,0x03,0x80,0x10,0x0b,0x0a,0x00,0x29,0x0c,0x02,0x00,0x46, - 0x0b,0x03,0x00,0x4b,0x06,0xf3,0x7f,0x2b,0x05,0x03,0x00,0x10,0x06,0x00,0x00,0x10, - 0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e,0x05,0x05,0x02,0x0f, - 0x00,0x04,0x00,0x54,0x06,0x12,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x10,0x80,0x2b, - 0x06,0x01,0x00,0x37,0x06,0x01,0x06,0x25,0x07,0x02,0x00,0x10,0x08,0x04,0x00,0x10, - 0x09,0x05,0x00,0x25,0x0a,0x03,0x00,0x37,0x0b,0x04,0x05,0x37,0x0b,0x05,0x0b,0x25, - 0x0c,0x06,0x00,0x24,0x0a,0x0c,0x0a,0x3e,0x06,0x05,0x02,0x0f,0x00,0x06,0x00,0x54, - 0x07,0x03,0x80,0x37,0x07,0x04,0x06,0x25,0x08,0x08,0x00,0x3a,0x08,0x07,0x07,0x10, - 0x06,0x05,0x00,0x29,0x07,0x01,0x00,0x46,0x06,0x03,0x00,0x08,0xc0,0x14,0xc0,0x13, - 0xc0,0x15,0xc0,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65, - 0x06,0x5d,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72, - 0x0f,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5b,0x0e,0x6d,0x65,0x74,0x61, - 0x74,0x61,0x62,0x6c,0x65,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0f,0x69,0x6e, - 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0xa5,0x01,0x00,0x02,0x0a,0x02,0x07,0x01, - 0x1b,0x32,0x02,0x00,0x00,0x27,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x27,0x05,0x01, - 0x00,0x49,0x03,0x07,0x80,0x2b,0x07,0x00,0x00,0x37,0x07,0x01,0x07,0x10,0x08,0x00, - 0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x02,0x39,0x07,0x06,0x02,0x4b,0x03,0xf9, - 0x7f,0x37,0x03,0x02,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x13,0x03,0x02, - 0x00,0x14,0x03,0x00,0x03,0x25,0x04,0x03,0x00,0x39,0x04,0x03,0x02,0x25,0x03,0x04, - 0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x25,0x06,0x05,0x00,0x3e,0x04,0x03, - 0x02,0x25,0x05,0x06,0x00,0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x00,0xc0,0x11, - 0xc0,0x06,0x29,0x07,0x2c,0x20,0x0e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, - 0x08,0x2e,0x2e,0x2e,0x0d,0x69,0x73,0x76,0x61,0x72,0x61,0x72,0x67,0x0d,0x67,0x65, - 0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x02,0x63, - 0x00,0x01,0x05,0x03,0x04,0x00,0x12,0x25,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x06,0x80,0x2b, - 0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x3e,0x02,0x03,0x02,0x0e, - 0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x25,0x03,0x03,0x00,0x24,0x01,0x03,0x01,0x48,0x01,0x02,0x00,0x04, - 0xc0,0x10,0xc0,0x03,0xc0,0x06,0x5d,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e, - 0x67,0x06,0x5b,0xd2,0x01,0x00,0x01,0x06,0x04,0x08,0x01,0x24,0x2b,0x01,0x00,0x00, - 0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07,0x01,0x00,0x00,0x54,0x02,0x05,0x80, - 0x2b,0x02,0x01,0x00,0x25,0x03,0x01,0x00,0x10,0x04,0x00,0x00,0x40,0x02,0x03,0x00, - 0x54,0x02,0x19,0x80,0x06,0x01,0x02,0x00,0x54,0x02,0x02,0x80,0x07,0x01,0x03,0x00, - 0x54,0x02,0x04,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x40,0x02,0x02,0x00, - 0x54,0x02,0x11,0x80,0x2b,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02, - 0x2b,0x03,0x03,0x00,0x37,0x03,0x04,0x03,0x39,0x00,0x02,0x03,0x2b,0x03,0x03,0x00, - 0x37,0x03,0x04,0x03,0x14,0x04,0x00,0x02,0x3a,0x04,0x05,0x03,0x25,0x03,0x06,0x00, - 0x2b,0x04,0x02,0x00,0x10,0x05,0x02,0x00,0x3e,0x04,0x02,0x02,0x25,0x05,0x07,0x00, - 0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x47,0x00,0x01,0x00,0x04,0xc0,0x10,0xc0, - 0x03,0xc0,0x14,0xc0,0x06,0x5d,0x0f,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65, - 0x5b,0x06,0x6e,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x0c,0x62,0x6f, - 0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x07,0x25,0x71,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x2d,0x00,0x02,0x06,0x01,0x02,0x00,0x08,0x10, - 0x02,0x00,0x00,0x25,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e, - 0x04,0x02,0x02,0x25,0x05,0x01,0x00,0x24,0x02,0x05,0x02,0x48,0x02,0x02,0x00,0x19, - 0xc0,0x06,0x5d,0x06,0x5b,0x25,0x00,0x04,0x09,0x01,0x00,0x00,0x07,0x2b,0x04,0x00, - 0x00,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03, - 0x00,0x3e,0x04,0x05,0x02,0x48,0x04,0x02,0x00,0x16,0xc0,0x69,0x00,0x04,0x0b,0x02, - 0x06,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x00,0x00,0x25, - 0x06,0x01,0x00,0x2b,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x10,0x09,0x01,0x00,0x3e, - 0x07,0x03,0x02,0x10,0x08,0x07,0x00,0x37,0x07,0x03,0x07,0x25,0x09,0x04,0x00,0x25, - 0x0a,0x05,0x00,0x3e,0x07,0x04,0x02,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x40, - 0x04,0x06,0x00,0x14,0xc0,0x10,0xc0,0x07,0x5c,0x6e,0x07,0x5c,0x0a,0x09,0x67,0x73, - 0x75,0x62,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0xb6,0x04,0x00,0x04,0x0e,0x06,0x16,0x00,0x61,0x2b,0x04, - 0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x01,0x00,0x25,0x06,0x01,0x00,0x3e,0x04, - 0x03,0x02,0x29,0x05,0x00,0x00,0x37,0x06,0x02,0x04,0x06,0x06,0x03,0x00,0x54,0x06, - 0x2b,0x80,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x06,0x80,0x2b,0x06, - 0x01,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02,0x0e,0x00, - 0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x01,0x00,0x3e,0x06, - 0x02,0x02,0x37,0x07,0x05,0x04,0x10,0x08,0x07,0x00,0x37,0x07,0x06,0x07,0x27,0x09, - 0x01,0x00,0x27,0x0a,0x01,0x00,0x3e,0x07,0x04,0x02,0x07,0x07,0x07,0x00,0x54,0x07, - 0x0d,0x80,0x10,0x07,0x06,0x00,0x25,0x08,0x08,0x00,0x2b,0x09,0x03,0x00,0x37,0x09, - 0x09,0x09,0x25,0x0a,0x07,0x00,0x37,0x0b,0x05,0x04,0x24,0x0a,0x0b,0x0a,0x3e,0x09, - 0x02,0x02,0x25,0x0a,0x08,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0c,0x0a,0x04,0x3e,0x0b, - 0x02,0x02,0x24,0x06,0x0b,0x07,0x2b,0x07,0x04,0x00,0x37,0x07,0x0b,0x07,0x10,0x08, - 0x00,0x00,0x25,0x09,0x0c,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00,0x10,0x0c, - 0x03,0x00,0x3e,0x07,0x06,0x02,0x10,0x05,0x07,0x00,0x54,0x06,0x0b,0x80,0x2b,0x06, - 0x04,0x00,0x37,0x06,0x0b,0x06,0x10,0x07,0x00,0x00,0x25,0x08,0x0d,0x00,0x2b,0x09, - 0x02,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x02,0x00,0x10,0x0b, - 0x03,0x00,0x3e,0x06,0x06,0x02,0x10,0x05,0x06,0x00,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x05,0x00,0x0f,0x00, - 0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x05,0x00,0x10,0x07,0x01,0x00,0x3e,0x06, - 0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x15,0x80,0x2b,0x07,0x05,0x00,0x27,0x08, - 0x00,0x00,0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00,0x54,0x07,0x10,0x80,0x2b,0x07, - 0x04,0x00,0x37,0x07,0x0e,0x07,0x25,0x08,0x0f,0x00,0x10,0x09,0x06,0x00,0x10,0x0a, - 0x05,0x00,0x25,0x0b,0x10,0x00,0x37,0x0c,0x11,0x05,0x37,0x0c,0x12,0x0c,0x25,0x0d, - 0x13,0x00,0x24,0x0b,0x0d,0x0b,0x3e,0x07,0x05,0x02,0x0f,0x00,0x07,0x00,0x54,0x08, - 0x03,0x80,0x37,0x08,0x11,0x07,0x25,0x09,0x15,0x00,0x3a,0x09,0x14,0x08,0x48,0x05, - 0x02,0x00,0x00,0xc0,0x17,0xc0,0x03,0xc0,0x01,0xc0,0x14,0xc0,0x0a,0xc0,0x0c,0x73, - 0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65,0x06,0x5d,0x0d,0x66,0x75, - 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72,0x11,0x65,0x6e,0x76,0x69, - 0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x5b,0x10,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e, - 0x6d,0x65,0x6e,0x74,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0d,0x66,0x75,0x6e, - 0x63,0x74,0x69,0x6f,0x6e,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28, - 0x4c,0x75,0x61,0x29,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x10,0x6c,0x69, - 0x6e,0x65,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72, - 0x69,0x06,0x0a,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65, - 0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x0a, - 0x6e,0x53,0x66,0x6c,0x75,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0xff,0x01,0x00, - 0x04,0x14,0x06,0x04,0x01,0x34,0x2b,0x04,0x00,0x00,0x10,0x05,0x00,0x00,0x10,0x06, - 0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x3e,0x04,0x05,0x03,0x0f,0x00, - 0x04,0x00,0x54,0x06,0x02,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x48,0x04, - 0x02,0x00,0x29,0x06,0x02,0x00,0x27,0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x10,0x09, - 0x01,0x00,0x29,0x0a,0x00,0x00,0x44,0x0b,0x18,0x80,0x2b,0x0d,0x02,0x00,0x37,0x0d, - 0x00,0x0d,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0b,0x00,0x3e,0x0e,0x02,0x02,0x10,0x0f, - 0x0c,0x00,0x10,0x10,0x04,0x00,0x2b,0x11,0x04,0x00,0x10,0x12,0x03,0x00,0x10,0x13, - 0x0b,0x00,0x3e,0x11,0x03,0x00,0x3d,0x0d,0x03,0x01,0x0f,0x00,0x06,0x00,0x54,0x0d, - 0x09,0x80,0x2b,0x0d,0x05,0x00,0x10,0x0e,0x01,0x00,0x10,0x0f,0x07,0x00,0x3e,0x0d, - 0x03,0x02,0x0b,0x0d,0x00,0x00,0x54,0x0d,0x02,0x80,0x29,0x06,0x01,0x00,0x54,0x0d, - 0x01,0x80,0x29,0x06,0x02,0x00,0x14,0x07,0x00,0x07,0x42,0x0b,0x03,0x03,0x4e,0x0b, - 0xe6,0x7f,0x0f,0x00,0x06,0x00,0x54,0x08,0x06,0x80,0x27,0x08,0x01,0x00,0x01,0x08, - 0x07,0x00,0x54,0x08,0x03,0x80,0x37,0x08,0x01,0x04,0x25,0x09,0x03,0x00,0x3a,0x09, - 0x02,0x08,0x48,0x04,0x02,0x00,0x16,0xc0,0x06,0xc0,0x14,0xc0,0x18,0xc0,0x1a,0xc0, - 0x07,0xc0,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x09,0x74,0x79,0x70,0x65, - 0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x02,0xd9,0x01, - 0x00,0x04,0x11,0x02,0x07,0x01,0x2b,0x37,0x04,0x00,0x01,0x09,0x04,0x00,0x00,0x54, - 0x04,0x08,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x38, - 0x06,0x01,0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x54, - 0x04,0x1f,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x00,0x00,0x25, - 0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e, - 0x04,0x06,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x00,0x00,0x48, - 0x05,0x02,0x00,0x27,0x05,0x01,0x00,0x37,0x06,0x00,0x01,0x27,0x07,0x01,0x00,0x49, - 0x05,0x0e,0x80,0x2b,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x2b,0x0a,0x01,0x00,0x10, - 0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x36,0x0b,0x08,0x01,0x10,0x0c,0x04,0x00,0x10, - 0x0d,0x03,0x00,0x25,0x0e,0x05,0x00,0x10,0x0f,0x08,0x00,0x25,0x10,0x06,0x00,0x24, - 0x0d,0x10,0x0d,0x3e,0x09,0x05,0x01,0x4b,0x05,0xf2,0x7f,0x48,0x04,0x02,0x00,0x47, - 0x00,0x01,0x00,0x14,0xc0,0x18,0xc0,0x06,0x5d,0x06,0x5b,0x05,0x0d,0x6d,0x75,0x6c, - 0x74,0x69,0x76,0x61,0x6c,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0c,0x69, - 0x6e,0x73,0x70,0x65,0x63,0x74,0x06,0x6e,0x02,0x46,0x02,0x00,0x05,0x03,0x03,0x01, - 0x0b,0x2b,0x00,0x00,0x00,0x33,0x01,0x01,0x00,0x2b,0x02,0x01,0x00,0x25,0x03,0x00, - 0x00,0x43,0x04,0x00,0x00,0x3d,0x02,0x01,0x02,0x3a,0x02,0x02,0x01,0x43,0x02,0x00, - 0x00,0x3c,0x02,0x00,0x00,0x2b,0x02,0x02,0x00,0x40,0x00,0x03,0x00,0x09,0xc0,0x0b, - 0xc0,0x12,0xc0,0x06,0x6e,0x01,0x00,0x00,0x06,0x23,0x03,0x80,0x80,0xc0,0x99,0x04, - 0x33,0x00,0x00,0x05,0x04,0x01,0x00,0x07,0x2b,0x00,0x00,0x00,0x37,0x00,0x00,0x00, - 0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x2b,0x04,0x03,0x00, - 0x40,0x00,0x05,0x00,0x03,0x00,0x02,0x80,0x01,0xc0,0x03,0x80,0x0c,0x69,0x6e,0x73, - 0x70,0x65,0x63,0x74,0xef,0x05,0x01,0x09,0x1b,0x09,0x13,0x02,0x90,0x01,0x0e,0x00, - 0x03,0x00,0x54,0x09,0x06,0x80,0x25,0x09,0x00,0x00,0x2b,0x0a,0x00,0x00,0x10,0x0b, - 0x02,0x00,0x3e,0x0a,0x02,0x02,0x25,0x0b,0x01,0x00,0x24,0x03,0x0b,0x09,0x0e,0x00, - 0x08,0x00,0x54,0x09,0x04,0x80,0x2b,0x09,0x01,0x00,0x10,0x0a,0x02,0x00,0x3e,0x09, - 0x02,0x02,0x10,0x02,0x09,0x00,0x2b,0x09,0x02,0x00,0x31,0x0a,0x02,0x00,0x3e,0x09, - 0x02,0x02,0x32,0x0a,0x00,0x00,0x29,0x0b,0x00,0x00,0x29,0x0c,0x02,0x00,0x20,0x0d, - 0x05,0x06,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x00,0x00,0x3e,0x0e,0x02,0x02,0x25,0x0f, - 0x03,0x00,0x24,0x0e,0x0f,0x0e,0x51,0x0f,0x73,0x80,0x2b,0x0f,0x05,0x00,0x2b,0x10, - 0x06,0x00,0x10,0x11,0x09,0x00,0x0f,0x00,0x0c,0x00,0x54,0x12,0x04,0x80,0x13,0x12, - 0x0a,0x00,0x36,0x12,0x12,0x0a,0x0e,0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x29,0x12, - 0x00,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0f,0x00,0x07,0x13,0x15,0x0a,0x00,0x36,0x15, - 0x15,0x0a,0x04,0x15,0x13,0x00,0x54,0x15,0x10,0x80,0x51,0x15,0x0f,0x80,0x13,0x15, - 0x0a,0x00,0x36,0x15,0x15,0x0a,0x37,0x16,0x04,0x15,0x2b,0x17,0x07,0x00,0x37,0x17, - 0x06,0x17,0x10,0x18,0x0e,0x00,0x37,0x19,0x04,0x15,0x37,0x19,0x05,0x19,0x24,0x18, - 0x19,0x18,0x3e,0x17,0x02,0x02,0x3a,0x17,0x05,0x16,0x13,0x16,0x0a,0x00,0x29,0x17, - 0x00,0x00,0x39,0x17,0x16,0x0a,0x54,0x15,0xec,0x7f,0x2b,0x15,0x08,0x00,0x10,0x16, - 0x09,0x00,0x3e,0x15,0x02,0x02,0x07,0x15,0x07,0x00,0x54,0x15,0x01,0x80,0x54,0x0f, - 0x4d,0x80,0x33,0x15,0x08,0x00,0x33,0x16,0x09,0x00,0x3a,0x05,0x0a,0x16,0x0f,0x00, - 0x13,0x00,0x54,0x17,0x02,0x80,0x27,0x17,0x00,0x00,0x54,0x18,0x01,0x80,0x10,0x17, - 0x06,0x00,0x3a,0x17,0x0b,0x16,0x3a,0x11,0x0c,0x16,0x3a,0x10,0x0d,0x16,0x3a,0x14, - 0x05,0x16,0x13,0x17,0x12,0x00,0x3a,0x17,0x0e,0x16,0x3a,0x16,0x04,0x15,0x2b,0x16, - 0x07,0x00,0x37,0x16,0x0f,0x16,0x0f,0x00,0x07,0x00,0x54,0x17,0x07,0x80,0x10,0x18, - 0x12,0x00,0x37,0x17,0x10,0x12,0x27,0x19,0x01,0x00,0x10,0x1a,0x07,0x00,0x3e,0x17, - 0x04,0x02,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80,0x10,0x17,0x12,0x00,0x3e,0x16, - 0x02,0x00,0x3c,0x16,0x00,0x00,0x0f,0x00,0x13,0x00,0x54,0x16,0x28,0x80,0x37,0x16, - 0x04,0x13,0x27,0x17,0x01,0x00,0x3a,0x17,0x11,0x16,0x37,0x16,0x04,0x13,0x37,0x17, - 0x04,0x13,0x37,0x17,0x12,0x17,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80,0x27,0x17, - 0x00,0x00,0x14,0x17,0x01,0x17,0x3a,0x17,0x12,0x16,0x13,0x16,0x13,0x00,0x03,0x16, - 0x05,0x00,0x54,0x16,0x03,0x80,0x13,0x16,0x0a,0x00,0x02,0x16,0x04,0x00,0x54,0x16, - 0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16,0x01,0x80,0x29,0x0c,0x02,0x00,0x05,0x13, - 0x0b,0x00,0x54,0x16,0x09,0x80,0x0f,0x00,0x0c,0x00,0x54,0x16,0x06,0x80,0x27,0x16, - 0x00,0x00,0x02,0x0d,0x16,0x00,0x54,0x16,0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16, - 0x01,0x80,0x29,0x0c,0x02,0x00,0x15,0x0d,0x01,0x0d,0x0f,0x00,0x0c,0x00,0x54,0x16, - 0x99,0x7f,0x13,0x16,0x13,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x13,0x13,0x16, - 0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x0a,0x54,0x16,0x92,0x7f,0x10,0x0b, - 0x15,0x00,0x29,0x0c,0x02,0x00,0x13,0x16,0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15, - 0x16,0x0a,0x54,0x0f,0x8c,0x7f,0x30,0x00,0x00,0x80,0x48,0x0b,0x02,0x00,0x19,0xc0, - 0x18,0xc0,0x0d,0xc0,0x14,0xc0,0x03,0xc0,0x05,0xc0,0x0f,0xc0,0x02,0xc0,0x0e,0xc0, - 0x10,0x6e,0x75,0x6d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d,0x63,0x68,0x69, - 0x6c,0x64,0x72,0x65,0x6e,0x08,0x73,0x75,0x62,0x08,0x62,0x36,0x34,0x09,0x73,0x69, - 0x7a,0x65,0x09,0x6e,0x61,0x6d,0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x70,0x61,0x67, - 0x65,0x0d,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x01,0x00,0x02,0x0d,0x63,0x68, - 0x69,0x6c,0x64,0x72,0x65,0x6e,0x03,0x00,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e, - 0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x64,0x65,0x61,0x64,0x0b,0x72,0x61, - 0x77,0x62,0x36,0x34,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74, - 0x74,0x72,0x06,0x7c,0x00,0x06,0x5d,0x0b,0x28,0x2e,0x2e,0x2e,0x29,0x5b,0x03,0x80, - 0x80,0xc0,0x99,0x04,0x02,0xf0,0x05,0x03,0x00,0x1d,0x00,0x3a,0x00,0x58,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25,0x02, - 0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e,0x02, - 0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34,0x06, - 0x07,0x00,0x34,0x07,0x08,0x00,0x34,0x08,0x09,0x00,0x34,0x09,0x0a,0x00,0x34,0x0a, - 0x0b,0x00,0x34,0x0b,0x0c,0x00,0x34,0x0c,0x0d,0x00,0x37,0x0c,0x0e,0x0c,0x34,0x0d, - 0x0d,0x00,0x37,0x0d,0x0f,0x0d,0x34,0x0e,0x0d,0x00,0x37,0x0e,0x10,0x0e,0x34,0x0f, - 0x0d,0x00,0x37,0x0f,0x11,0x0f,0x34,0x10,0x12,0x00,0x37,0x10,0x13,0x10,0x34,0x11, - 0x14,0x00,0x37,0x11,0x15,0x11,0x33,0x12,0x17,0x00,0x31,0x13,0x16,0x00,0x3a,0x13, - 0x18,0x12,0x32,0x13,0x00,0x00,0x32,0x14,0x00,0x00,0x32,0x15,0x00,0x00,0x3a,0x15, - 0x19,0x14,0x3a,0x0c,0x1a,0x14,0x31,0x15,0x1c,0x00,0x3a,0x15,0x1b,0x14,0x31,0x15, - 0x1e,0x00,0x3a,0x15,0x1d,0x14,0x31,0x15,0x1f,0x00,0x31,0x16,0x20,0x00,0x31,0x17, - 0x21,0x00,0x31,0x18,0x22,0x00,0x3a,0x18,0x23,0x14,0x10,0x19,0x09,0x00,0x33,0x1a, - 0x25,0x00,0x33,0x1b,0x26,0x00,0x3e,0x19,0x03,0x02,0x3a,0x19,0x24,0x14,0x31,0x19, - 0x27,0x00,0x31,0x1a,0x28,0x00,0x3a,0x1a,0x29,0x14,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2a,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2b,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2c,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2d,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2e,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2f,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c, - 0x30,0x00,0x3a,0x1c,0x2d,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x31,0x00,0x3a,0x1c, - 0x12,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x33,0x00,0x3a,0x1c,0x32,0x1b,0x37,0x1b, - 0x19,0x14,0x31,0x1c,0x34,0x00,0x3a,0x1c,0x14,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c, - 0x35,0x00,0x39,0x1c,0x12,0x1b,0x31,0x1b,0x37,0x00,0x3a,0x1b,0x36,0x14,0x31,0x1b, - 0x39,0x00,0x3a,0x1b,0x38,0x14,0x30,0x00,0x00,0x80,0x48,0x14,0x02,0x00,0x00,0x12, - 0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x00,0x0d,0x4d, - 0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x00,0x00,0x00,0x0d,0x66,0x75,0x6e,0x63,0x74, - 0x69,0x6f,0x6e,0x00,0x00,0x0c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x0b,0x74,0x68, - 0x72,0x65,0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x08,0x6e,0x69, - 0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x12,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x00,0x00, - 0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x01,0x00,0x01,0x06, - 0x6e,0x03,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x1b,0x67,0x65, - 0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65, - 0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x00,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63, - 0x74,0x00,0x0e,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f,0x62,0x65,0x0d,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73, - 0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x01,0x00,0x00,0x00,0x0b, - 0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f,0x72, - 0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x72,0x65,0x73,0x75,0x6d, - 0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0a, - 0x79,0x69,0x65,0x6c,0x64,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x0b, - 0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x11,0x67,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0b,0x72,0x61,0x77,0x67,0x65,0x74,0x09, - 0x6e,0x65,0x78,0x74,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74,0x79,0x70,0x65, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x16,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c, - 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x84,0x05,0x00,0x01,0x06,0x02,0x20,0x02,0x6b, - 0x37,0x01,0x00,0x00,0x07,0x01,0x01,0x00,0x54,0x02,0x12,0x80,0x37,0x02,0x02,0x00, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x01,0x02,0x00,0x54,0x02,0x56,0x80, - 0x37,0x02,0x03,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x02,0x04,0x00, - 0x54,0x03,0x01,0x80,0x25,0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x37,0x04,0x05,0x00, - 0x16,0x04,0x00,0x04,0x3e,0x03,0x02,0x02,0x25,0x04,0x06,0x00,0x24,0x01,0x04,0x02, - 0x54,0x02,0x49,0x80,0x07,0x01,0x07,0x00,0x54,0x02,0x0a,0x80,0x37,0x02,0x05,0x00, - 0x09,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x08,0x00,0x54,0x02,0x42,0x80, - 0x37,0x02,0x05,0x00,0x09,0x02,0x01,0x00,0x54,0x02,0x3f,0x80,0x25,0x01,0x09,0x00, - 0x54,0x02,0x3d,0x80,0x06,0x01,0x0a,0x00,0x54,0x02,0x04,0x80,0x06,0x01,0x0b,0x00, - 0x54,0x02,0x02,0x80,0x07,0x01,0x0c,0x00,0x54,0x02,0x0d,0x80,0x37,0x02,0x0d,0x00, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x10,0x02,0x01,0x00,0x25,0x03,0x0e,0x00, - 0x37,0x04,0x0d,0x00,0x24,0x02,0x04,0x02,0x0c,0x01,0x02,0x00,0x54,0x03,0x03,0x80, - 0x25,0x02,0x0f,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x2a,0x80, - 0x07,0x01,0x10,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x11,0x00,0x54,0x02,0x26,0x80, - 0x07,0x01,0x12,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x13,0x00, - 0x3e,0x02,0x02,0x02,0x25,0x03,0x14,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x1e,0x80, - 0x07,0x01,0x15,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x13,0x00, - 0x3e,0x02,0x02,0x02,0x25,0x03,0x16,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x16,0x80, - 0x07,0x01,0x17,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x18,0x00, - 0x40,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x07,0x01,0x19,0x00,0x54,0x02,0x0e,0x80, - 0x37,0x02,0x18,0x00,0x37,0x02,0x03,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80, - 0x25,0x02,0x03,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x1a,0x00,0x25,0x03,0x1b,0x00, - 0x2b,0x04,0x00,0x00,0x37,0x05,0x05,0x00,0x16,0x05,0x00,0x05,0x3e,0x04,0x02,0x02, - 0x24,0x01,0x04,0x02,0x37,0x00,0x18,0x00,0x37,0x02,0x1c,0x00,0x0f,0x00,0x02,0x00, - 0x54,0x03,0x03,0x80,0x25,0x02,0x1d,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02, - 0x37,0x02,0x1e,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02,0x1f,0x00, - 0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x48,0x01,0x02,0x00,0x03,0xc0,0x0a,0xc0, - 0x0e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20,0x0d,0x76,0x6f,0x6c,0x61,0x74, - 0x69,0x6c,0x65,0x0b,0x63,0x6f,0x6e,0x73,0x74,0x20,0x0a,0x63,0x6f,0x6e,0x73,0x74, - 0x06,0x3a,0x0b,0x73,0x69,0x67,0x6e,0x65,0x64,0x0d,0x62,0x69,0x74,0x66,0x69,0x65, - 0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0a,0x66,0x69,0x65,0x6c,0x64,0x06,0x26,0x08, - 0x72,0x65,0x66,0x06,0x2a,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79, - 0x70,0x65,0x08,0x70,0x74,0x72,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, - 0x28,0x46,0x46,0x49,0x29,0x09,0x66,0x75,0x6e,0x63,0x0f,0x61,0x6e,0x6f,0x6e,0x79, - 0x6d,0x6f,0x75,0x73,0x20,0x06,0x20,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x75,0x6e,0x69, - 0x6f,0x6e,0x09,0x65,0x6e,0x75,0x6d,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x10,0x6c, - 0x6f,0x6e,0x67,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x0b,0x64,0x6f,0x75,0x62,0x6c, - 0x65,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x07,0x5f,0x74,0x09,0x73,0x69,0x7a,0x65,0x09, - 0x75,0x69,0x6e,0x74,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x09,0x62,0x6f, - 0x6f,0x6c,0x08,0x69,0x6e,0x74,0x09,0x77,0x68,0x61,0x74,0x10,0x20,0x9b,0x01,0x00, - 0x05,0x0b,0x04,0x04,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x3e,0x05, - 0x02,0x02,0x07,0x05,0x00,0x00,0x54,0x05,0x08,0x80,0x2b,0x05,0x01,0x00,0x10,0x06, - 0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x10,0x0a, - 0x04,0x00,0x40,0x05,0x06,0x00,0x54,0x05,0x0f,0x80,0x2b,0x05,0x02,0x00,0x37,0x05, - 0x01,0x05,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09, - 0x03,0x00,0x3e,0x05,0x05,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x05,0x80,0x37,0x06, - 0x02,0x05,0x2b,0x07,0x03,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x3a,0x07, - 0x03,0x06,0x48,0x05,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0xc0,0x0c,0x80,0x00,0xc0, - 0x0a,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73, - 0x70,0x65,0x63,0x74,0x0a,0x63,0x64,0x61,0x74,0x61,0xb4,0x01,0x00,0x05,0x13,0x05, - 0x04,0x00,0x22,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b, - 0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x10, - 0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x3e, - 0x05,0x06,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x13,0x80,0x10,0x07,0x04,0x00,0x37, - 0x06,0x01,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x0d,0x80,0x37,0x0a,0x02,0x09,0x2b, - 0x0b,0x03,0x00,0x10,0x0c,0x0a,0x00,0x36,0x0d,0x0a,0x01,0x10,0x0e,0x05,0x00,0x10, - 0x0f,0x03,0x00,0x2b,0x10,0x04,0x00,0x25,0x11,0x03,0x00,0x10,0x12,0x0a,0x00,0x3e, - 0x10,0x03,0x02,0x24,0x0f,0x10,0x0f,0x10,0x10,0x09,0x00,0x3e,0x0b,0x06,0x01,0x41, - 0x09,0x03,0x02,0x4e,0x09,0xf1,0x7f,0x48,0x05,0x02,0x00,0x00,0xc0,0x0a,0xc0,0x03, - 0xc0,0x0d,0xc0,0x07,0xc0,0x09,0x5b,0x25,0x71,0x5d,0x09,0x6e,0x61,0x6d,0x65,0x0c, - 0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0xb6,0x02,0x00,0x05,0x14,0x05,0x08,0x01,0x3e,0x37,0x05,0x00,0x04,0x37,0x06,0x01, - 0x04,0x06,0x06,0x02,0x00,0x54,0x06,0x03,0x80,0x37,0x06,0x01,0x04,0x0e,0x00,0x06, - 0x00,0x54,0x07,0x04,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x03,0x06,0x10,0x07,0x01, - 0x00,0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x37,0x07,0x01, - 0x05,0x21,0x06,0x07,0x06,0x2b,0x07,0x01,0x00,0x10,0x08,0x05,0x00,0x3e,0x07,0x02, - 0x02,0x2b,0x08,0x02,0x00,0x37,0x08,0x04,0x08,0x10,0x09,0x00,0x00,0x10,0x0a,0x07, - 0x00,0x25,0x0b,0x05,0x00,0x2b,0x0c,0x03,0x00,0x10,0x0d,0x06,0x00,0x3e,0x0c,0x02, - 0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c,0x06,0x00,0x25,0x0d,0x07, - 0x00,0x24,0x0a,0x0d,0x0a,0x2b,0x0b,0x03,0x00,0x10,0x0c,0x01,0x00,0x3e,0x0b,0x02, - 0x02,0x10,0x0c,0x02,0x00,0x10,0x0d,0x03,0x00,0x3e,0x08,0x06,0x02,0x0f,0x00,0x08, - 0x00,0x54,0x09,0x16,0x80,0x0f,0x00,0x06,0x00,0x54,0x09,0x14,0x80,0x27,0x09,0x00, - 0x00,0x15,0x0a,0x00,0x06,0x27,0x0b,0x01,0x00,0x49,0x09,0x10,0x80,0x25,0x0d,0x05, - 0x00,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e,0x0e,0x02,0x02,0x25,0x0f,0x07, - 0x00,0x24,0x0d,0x0f,0x0d,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x0d,0x00,0x36,0x10,0x0c, - 0x01,0x10,0x11,0x08,0x00,0x10,0x12,0x03,0x00,0x10,0x13,0x0d,0x00,0x24,0x12,0x13, - 0x12,0x10,0x13,0x05,0x00,0x3e,0x0e,0x06,0x01,0x4b,0x09,0xf0,0x7f,0x48,0x08,0x02, - 0x00,0x02,0xc0,0x0a,0xc0,0x00,0xc0,0x03,0xc0,0x0d,0xc0,0x06,0x5d,0x05,0x06,0x5b, - 0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0b,0x73,0x69,0x7a,0x65,0x6f,0x66, - 0x09,0x6e,0x6f,0x6e,0x65,0x09,0x73,0x69,0x7a,0x65,0x11,0x65,0x6c,0x65,0x6d,0x65, - 0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0xff,0x01,0x00,0x05,0x0e,0x03,0x0b,0x01, - 0x2d,0x32,0x05,0x00,0x00,0x10,0x07,0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02, - 0x04,0x54,0x09,0x09,0x80,0x13,0x0a,0x05,0x00,0x14,0x0a,0x00,0x0a,0x2b,0x0b,0x00, - 0x00,0x37,0x0c,0x01,0x09,0x3e,0x0b,0x02,0x02,0x25,0x0c,0x02,0x00,0x37,0x0d,0x03, - 0x09,0x24,0x0b,0x0d,0x0b,0x39,0x0b,0x0a,0x05,0x41,0x09,0x03,0x02,0x4e,0x09,0xf5, - 0x7f,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x04,0x80,0x13,0x06,0x05, - 0x00,0x14,0x06,0x00,0x06,0x25,0x07,0x05,0x00,0x39,0x07,0x06,0x05,0x2b,0x06,0x00, - 0x00,0x37,0x07,0x06,0x04,0x3e,0x06,0x02,0x02,0x25,0x07,0x02,0x00,0x37,0x08,0x03, - 0x04,0x25,0x09,0x07,0x00,0x2b,0x0a,0x01,0x00,0x10,0x0b,0x05,0x00,0x25,0x0c,0x08, - 0x00,0x3e,0x0a,0x03,0x02,0x25,0x0b,0x09,0x00,0x24,0x06,0x0b,0x06,0x2b,0x07,0x02, - 0x00,0x37,0x07,0x0a,0x07,0x10,0x08,0x00,0x00,0x2b,0x09,0x00,0x00,0x10,0x0a,0x04, - 0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00,0x10,0x0c,0x03, - 0x00,0x40,0x07,0x06,0x00,0x0a,0xc0,0x08,0xc0,0x00,0xc0,0x0d,0x70,0x72,0x6f,0x70, - 0x65,0x72,0x74,0x79,0x06,0x29,0x07,0x2c,0x20,0x06,0x28,0x10,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x08,0x2e,0x2e,0x2e,0x0b,0x76,0x61,0x72,0x61, - 0x72,0x67,0x09,0x6e,0x61,0x6d,0x65,0x06,0x20,0x09,0x74,0x79,0x70,0x65,0x0e,0x61, - 0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x02,0x92,0x01,0x00,0x05,0x0c,0x04,0x04, - 0x00,0x1a,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x10,0x07, - 0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x05,0x80,0x37,0x0a, - 0x01,0x09,0x05,0x0a,0x05,0x00,0x54,0x0a,0x02,0x80,0x37,0x05,0x02,0x09,0x54,0x06, - 0x02,0x80,0x41,0x09,0x03,0x02,0x4e,0x09,0xf9,0x7f,0x2b,0x06,0x01,0x00,0x37,0x06, - 0x03,0x06,0x10,0x07,0x00,0x00,0x2b,0x08,0x02,0x00,0x10,0x09,0x04,0x00,0x3e,0x08, - 0x02,0x02,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a, - 0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x04,0xc0,0x00,0xc0,0x0a,0xc0, - 0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x6e,0x61,0x6d,0x65, - 0x0a,0x76,0x61,0x6c,0x75,0x65,0x0b,0x76,0x61,0x6c,0x75,0x65,0x73,0xb8,0x01,0x00, - 0x05,0x0c,0x05,0x05,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x04,0x00,0x3e,0x05, - 0x02,0x02,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06,0x0e,0x00,0x06,0x00,0x54,0x06, - 0x0a,0x80,0x2b,0x06,0x02,0x00,0x37,0x06,0x01,0x06,0x10,0x07,0x00,0x00,0x10,0x08, - 0x05,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a, - 0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x2b,0x06,0x04,0x00,0x10,0x07, - 0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x37,0x0b, - 0x02,0x04,0x3e,0x06,0x06,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x37,0x07, - 0x03,0x06,0x3a,0x05,0x04,0x07,0x48,0x06,0x02,0x00,0x0a,0xc0,0x09,0xc0,0x00,0xc0, - 0x03,0xc0,0x0d,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x11,0x65, - 0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x0d,0x70,0x72,0x6f,0x70, - 0x65,0x72,0x74,0x79,0x17,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f,0x72,0x65,0x66, - 0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x50,0x00,0x05,0x0b,0x04,0x01,0x00,0x0e,0x2b, - 0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01,0x00,0x10, - 0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x2b,0x09,0x03,0x00,0x10, - 0x0a,0x01,0x00,0x3e,0x09,0x02,0x00,0x3d,0x08,0x00,0x02,0x10,0x09,0x02,0x00,0x10, - 0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x04,0xc0,0x0d, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x46,0x00,0x05,0x0b,0x03,0x01,0x00,0x0c, - 0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01,0x00, - 0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x10,0x09,0x01,0x00, - 0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00, - 0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2a, - 0x00,0x05,0x0b,0x01,0x01,0x00,0x07,0x2b,0x05,0x00,0x00,0x10,0x06,0x00,0x00,0x10, - 0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x37,0x0a,0x00,0x04,0x40, - 0x05,0x06,0x00,0x0c,0x80,0x09,0x74,0x79,0x70,0x65,0xba,0x01,0x00,0x05,0x0b,0x06, - 0x04,0x00,0x23,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x04,0x05,0x01,0x00,0x54,0x05,0x13,0x80,0x0e,0x00,0x04,0x00,0x54, - 0x05,0x05,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x10,0x04,0x05,0x00,0x2b,0x05,0x02,0x00,0x37,0x06,0x01,0x04,0x36, - 0x05,0x06,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x2b,0x05,0x03,0x00,0x10, - 0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x10, - 0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x2b,0x05,0x04,0x00,0x37,0x05,0x02,0x05,0x10, - 0x06,0x00,0x00,0x25,0x07,0x03,0x00,0x2b,0x08,0x05,0x00,0x10,0x09,0x01,0x00,0x3e, - 0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x02, - 0xc0,0x01,0xc0,0x0e,0xc0,0x0b,0xc0,0x00,0xc0,0x03,0xc0,0x0a,0x63,0x74,0x79,0x70, - 0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x77,0x68,0x61,0x74,0x0b, - 0x74,0x79,0x70,0x65,0x6f,0x66,0xcb,0x03,0x03,0x00,0x10,0x00,0x27,0x00,0x35,0x34, - 0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25, - 0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e, - 0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34, - 0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x34,0x08,0x0a,0x00,0x37, - 0x08,0x0b,0x08,0x32,0x09,0x00,0x00,0x29,0x0a,0x02,0x00,0x3a,0x0a,0x0c,0x09,0x31, - 0x0a,0x0d,0x00,0x37,0x0b,0x0e,0x00,0x37,0x0b,0x0f,0x0b,0x29,0x0c,0x00,0x00,0x31, - 0x0d,0x10,0x00,0x33,0x0e,0x12,0x00,0x31,0x0f,0x11,0x00,0x3a,0x0f,0x13,0x0e,0x31, - 0x0f,0x14,0x00,0x3a,0x0f,0x15,0x0e,0x31,0x0f,0x16,0x00,0x3a,0x0f,0x17,0x0e,0x31, - 0x0f,0x18,0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x1a,0x00,0x3a,0x0f,0x1b,0x0e,0x31, - 0x0f,0x1c,0x00,0x3a,0x0f,0x1d,0x0e,0x31,0x0f,0x1e,0x00,0x3a,0x0f,0x1f,0x0e,0x37, - 0x0f,0x13,0x0e,0x3a,0x0f,0x20,0x0e,0x37,0x0f,0x1d,0x0e,0x3a,0x0f,0x21,0x0e,0x31, - 0x0f,0x23,0x00,0x3a,0x0f,0x22,0x0e,0x37,0x0f,0x22,0x0e,0x3a,0x0f,0x24,0x0e,0x31, - 0x0c,0x25,0x00,0x37,0x0f,0x0e,0x00,0x3a,0x0c,0x26,0x0f,0x30,0x00,0x00,0x80,0x48, - 0x09,0x02,0x00,0x0a,0x63,0x64,0x61,0x74,0x61,0x00,0x0d,0x62,0x69,0x74,0x66,0x69, - 0x65,0x6c,0x64,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x08,0x70,0x74,0x72,0x00,0x08,0x69,0x6e,0x74,0x00, - 0x08,0x72,0x65,0x66,0x00,0x09,0x65,0x6e,0x75,0x6d,0x00,0x09,0x66,0x75,0x6e,0x63, - 0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x01, - 0x00,0x00,0x00,0x00,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0f,0x69,0x6e,0x73,0x70, - 0x65,0x63,0x74,0x6f,0x72,0x73,0x00,0x17,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f, - 0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x0b,0x63,0x6f,0x6e,0x63,0x61, - 0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x0b,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74,0x79,0x70, - 0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0d,0x74,0x6f,0x73,0x74,0x72, - 0x69,0x6e,0x67,0x08,0x66,0x66,0x69,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e, - 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0c,0x72,0x65,0x71,0x75, - 0x69,0x72,0x65,0x55,0x00,0x01,0x05,0x01,0x03,0x02,0x0d,0x08,0x00,0x00,0x00,0x54, - 0x01,0x0a,0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x01,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x14, - 0x03,0x01,0x01,0x38,0x04,0x03,0x01,0x40,0x02,0x03,0x00,0x47,0x00,0x01,0x00,0x00, - 0xc0,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f, - 0x74,0x2a,0x09,0x63,0x61,0x73,0x74,0x00,0x08,0x4c,0x00,0x01,0x05,0x00,0x04,0x00, - 0x0a,0x34,0x01,0x00,0x00,0x34,0x02,0x01,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02, - 0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x02,0x02,0x25,0x04,0x03,0x00,0x3e,0x02,0x03, - 0x02,0x27,0x03,0x10,0x00,0x40,0x01,0x03,0x00,0x09,0x25,0x78,0x2a,0x24,0x0a,0x6d, - 0x61,0x74,0x63,0x68,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d,0x74,0x6f, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x47,0x00, - 0x01,0x00,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03, - 0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44,0x4f,0x3a, - 0x20,0x43,0x54,0x41,0x5f,0x4e,0x4f,0x4e,0x45,0x0a,0x65,0x72,0x72,0x6f,0x72,0x2c, - 0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e, - 0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54, - 0x41,0x5f,0x51,0x55,0x41,0x4c,0x0a,0x65,0x72,0x72,0x6f,0x72,0x44,0x00,0x02,0x04, - 0x00,0x04,0x00,0x07,0x37,0x02,0x00,0x00,0x27,0x03,0x02,0x00,0x23,0x00,0x02,0x03, - 0x3a,0x00,0x01,0x01,0x37,0x02,0x02,0x01,0x3a,0x00,0x03,0x02,0x47,0x00,0x01,0x00, - 0x0a,0x61,0x6c,0x69,0x67,0x6e,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x73,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x76,0x61,0x6c,0x75, - 0x65,0x45,0x00,0x02,0x04,0x00,0x04,0x00,0x06,0x29,0x02,0x02,0x00,0x3a,0x02,0x00, - 0x01,0x37,0x02,0x01,0x01,0x37,0x03,0x03,0x01,0x3a,0x03,0x02,0x02,0x47,0x00,0x01, - 0x00,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x0c,0x73,0x75,0x62,0x74,0x79,0x70,0x65, - 0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x10,0x74,0x72,0x61,0x6e, - 0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x21,0x00,0x02,0x03,0x00,0x02,0x00,0x03,0x37, - 0x02,0x01,0x00,0x3a,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x09,0x6e,0x61,0x6d,0x65, - 0x0d,0x73,0x79,0x6d,0x5f,0x6e,0x61,0x6d,0x65,0x2b,0x00,0x02,0x04,0x00,0x02,0x00, - 0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01, - 0x00,0x12,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x42,0x41,0x44,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x8a,0x09,0x00,0x01,0x0d,0x09,0x1e,0x03,0xe9,0x01,0x2b, - 0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x01,0x02,0x37,0x03,0x02,0x01,0x27,0x04,0x1c,0x00,0x3e,0x02,0x03,0x02,0x2b, - 0x03,0x02,0x00,0x36,0x03,0x02,0x03,0x38,0x04,0x01,0x03,0x34,0x05,0x03,0x00,0x33, - 0x06,0x04,0x00,0x3a,0x04,0x05,0x06,0x3a,0x00,0x06,0x06,0x2b,0x07,0x03,0x00,0x37, - 0x08,0x07,0x01,0x3e,0x07,0x02,0x02,0x3a,0x07,0x07,0x06,0x2b,0x07,0x04,0x00,0x36, - 0x07,0x04,0x07,0x3e,0x05,0x03,0x02,0x27,0x06,0x05,0x00,0x13,0x07,0x03,0x00,0x27, - 0x08,0x01,0x00,0x49,0x06,0x15,0x80,0x2b,0x0a,0x01,0x00,0x37,0x0a,0x08,0x0a,0x37, - 0x0b,0x02,0x01,0x36,0x0c,0x09,0x03,0x38,0x0c,0x01,0x0c,0x3e,0x0a,0x03,0x02,0x08, - 0x0a,0x00,0x00,0x54,0x0a,0x0c,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x03,0x0a,0x07, - 0x0a,0x09,0x00,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02,0x0a,0x3a, - 0x0a,0x05,0x05,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02,0x0a,0x29, - 0x0b,0x02,0x00,0x39,0x0b,0x0a,0x05,0x4b,0x06,0xeb,0x7f,0x27,0x06,0x05,0x00,0x03, - 0x02,0x06,0x00,0x54,0x06,0x0f,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0b,0x06,0x27, - 0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x08,0x08,0x2b,0x09,0x01,0x00,0x37, - 0x09,0x01,0x09,0x37,0x0a,0x02,0x01,0x27,0x0b,0x10,0x00,0x3e,0x09,0x03,0x02,0x27, - 0x0a,0x0f,0x00,0x3e,0x08,0x03,0x00,0x3d,0x06,0x01,0x02,0x3a,0x06,0x0a,0x05,0x54, - 0x06,0x0e,0x80,0x07,0x04,0x0c,0x00,0x54,0x06,0x0c,0x80,0x2b,0x06,0x05,0x00,0x2b, - 0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37, - 0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0x03,0x00,0x3e, - 0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x3a,0x06,0x0d,0x05,0x38,0x06,0x02,0x03,0x06, - 0x06,0x0e,0x00,0x54,0x06,0x13,0x80,0x38,0x06,0x02,0x03,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x28,0x09,0x01,0x00,0x3e,0x07,0x03,0x02,0x2b, - 0x08,0x06,0x00,0x36,0x08,0x06,0x08,0x0f,0x00,0x08,0x00,0x54,0x09,0x08,0x80,0x09, - 0x07,0x00,0x00,0x54,0x08,0x02,0x80,0x29,0x07,0x00,0x00,0x54,0x08,0x04,0x80,0x2b, - 0x08,0x07,0x00,0x10,0x09,0x07,0x00,0x3e,0x08,0x02,0x02,0x10,0x07,0x08,0x00,0x39, - 0x07,0x06,0x05,0x38,0x06,0x03,0x03,0x06,0x06,0x0e,0x00,0x54,0x06,0x0d,0x80,0x38, - 0x06,0x03,0x03,0x37,0x07,0x0f,0x01,0x39,0x07,0x06,0x05,0x07,0x06,0x0f,0x00,0x54, - 0x07,0x08,0x80,0x2b,0x07,0x01,0x00,0x37,0x07,0x10,0x07,0x36,0x08,0x06,0x05,0x3e, - 0x07,0x02,0x02,0x09,0x07,0x00,0x00,0x54,0x07,0x02,0x80,0x25,0x07,0x11,0x00,0x39, - 0x07,0x06,0x05,0x07,0x04,0x12,0x00,0x54,0x06,0x1b,0x80,0x2b,0x06,0x08,0x00,0x2b, - 0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37, - 0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0xff,0x00,0x3e, - 0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x37,0x07,0x13,0x05,0x0f,0x00,0x07,0x00,0x54, - 0x08,0x0b,0x80,0x37,0x07,0x13,0x05,0x32,0x08,0x00,0x00,0x3a,0x08,0x14,0x07,0x10, - 0x08,0x06,0x00,0x10,0x09,0x05,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03,0x01,0x37, - 0x08,0x06,0x05,0x3a,0x08,0x06,0x07,0x10,0x05,0x07,0x00,0x54,0x07,0x31,0x80,0x3a, - 0x06,0x15,0x05,0x54,0x06,0x2f,0x80,0x07,0x04,0x16,0x00,0x54,0x06,0x2d,0x80,0x37, - 0x06,0x17,0x05,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x27, - 0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x17,0x07,0x02,0x07,0x1e,0x06,0x07,0x06,0x3a, - 0x06,0x17,0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x08,0x06,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x01,0x07,0x37,0x08,0x02,0x01,0x27,0x09,0x08,0x00,0x3e,0x07,0x03,0x02,0x27, - 0x08,0x7f,0x00,0x3e,0x06,0x03,0x02,0x17,0x06,0x02,0x06,0x3a,0x06,0x0f,0x05,0x33, - 0x06,0x18,0x00,0x37,0x07,0x19,0x05,0x3a,0x07,0x19,0x06,0x37,0x07,0x1a,0x05,0x3a, - 0x07,0x1a,0x06,0x37,0x07,0x1b,0x05,0x3a,0x07,0x1b,0x06,0x37,0x07,0x1c,0x05,0x3a, - 0x07,0x1c,0x06,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37, - 0x08,0x01,0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27, - 0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x13,0x05,0x2a, - 0x06,0x09,0x00,0x3a,0x09,0x1c,0x05,0x3a,0x08,0x1b,0x05,0x3a,0x07,0x1a,0x05,0x3a, - 0x06,0x19,0x05,0x38,0x06,0x04,0x03,0x0f,0x00,0x06,0x00,0x54,0x07,0x24,0x80,0x37, - 0x06,0x1d,0x01,0x08,0x06,0x00,0x00,0x54,0x06,0x21,0x80,0x51,0x06,0x20,0x80,0x2b, - 0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x37,0x07,0x1d,0x01,0x36,0x06,0x07,0x06,0x2b, - 0x07,0x02,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02,0x06,0x27, - 0x0a,0x1c,0x00,0x3e,0x08,0x03,0x02,0x36,0x07,0x08,0x07,0x38,0x07,0x01,0x07,0x06, - 0x07,0x12,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x11,0x80,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x08,0x07,0x37,0x08,0x02,0x06,0x28,0x09,0x01,0x00,0x3e,0x07,0x03,0x02,0x08, - 0x07,0x00,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x09,0x80,0x2b,0x07,0x07,0x00,0x37, - 0x08,0x1d,0x01,0x3e,0x07,0x02,0x02,0x10,0x09,0x07,0x00,0x37,0x08,0x15,0x07,0x10, - 0x0a,0x05,0x00,0x3e,0x08,0x03,0x01,0x10,0x01,0x06,0x00,0x54,0x06,0xdc,0x7f,0x48, - 0x05,0x02,0x00,0x05,0x80,0x01,0xc0,0x07,0xc0,0x03,0xc0,0x09,0xc0,0x0b,0xc0,0x08, - 0xc0,0x0c,0xc0,0x0a,0xc0,0x08,0x73,0x69,0x62,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e, - 0x65,0x64,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x00,0x01,0x09,0x77,0x68,0x61,0x74,0x08,0x69, - 0x6e,0x74,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x0d,0x62,0x69,0x74,0x66,0x69,0x65, - 0x6c,0x64,0x08,0x43,0x54,0x41,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x73,0x09,0x74,0x79,0x70,0x65,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x6e,0x6f, - 0x6e,0x65,0x09,0x62,0x6e,0x6f,0x74,0x09,0x73,0x69,0x7a,0x65,0x05,0x0f,0x63,0x6f, - 0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x09,0x66,0x75,0x6e,0x63,0x0b,0x6c,0x73, - 0x68,0x69,0x66,0x74,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x0c,0x73, - 0x75,0x62,0x77,0x68,0x61,0x74,0x09,0x62,0x61,0x6e,0x64,0x09,0x6e,0x61,0x6d,0x65, - 0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x09,0x77,0x68,0x61,0x74,0x01,0x00,0x00,0x11, - 0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x69,0x6e,0x66, - 0x6f,0x0b,0x72,0x73,0x68,0x69,0x66,0x74,0x08,0x74,0x61,0x62,0x00,0xfe,0xff,0x07, - 0x10,0x6b,0x00,0x02,0x05,0x02,0x05,0x01,0x11,0x51,0x02,0x0f,0x80,0x2b,0x02,0x00, - 0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x02, - 0x02,0x09,0x03,0x00,0x00,0x54,0x03,0x01,0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x01, - 0x00,0x37,0x04,0x02,0x02,0x3e,0x03,0x02,0x02,0x10,0x01,0x03,0x00,0x37,0x03,0x03, - 0x01,0x06,0x03,0x04,0x00,0x54,0x03,0xf0,0x7f,0x48,0x01,0x02,0x00,0x05,0x80,0x0c, - 0xc0,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x77,0x68,0x61,0x74,0x08,0x73,0x69, - 0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61,0x62,0x00,0x83,0x01,0x00, - 0x01,0x04,0x03,0x05,0x00,0x15,0x37,0x01,0x00,0x00,0x0f,0x00,0x01,0x00,0x54,0x02, - 0x0e,0x80,0x51,0x01,0x0d,0x80,0x2b,0x01,0x00,0x00,0x37,0x02,0x00,0x00,0x37,0x02, - 0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02, - 0x02,0x02,0x37,0x03,0x03,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x04,0x02,0x3e,0x01, - 0x02,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xef,0x7f,0x2b,0x01,0x02,0x00,0x29,0x02, - 0x00,0x00,0x10,0x03,0x00,0x00,0x46,0x01,0x04,0x00,0x0c,0xc0,0x05,0x80,0x0d,0xc0, - 0x08,0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61,0x62,0x0c, - 0x73,0x75,0x62,0x74,0x79,0x70,0x65,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x73,0x84,0x01,0x00,0x02,0x09,0x01,0x02,0x01,0x1b,0x34,0x02,0x00,0x00,0x10, - 0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x0b,0x80,0x2b, - 0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04,0x80,0x09, - 0x02,0x00,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x15,0x02,0x00,0x02,0x41, - 0x06,0x03,0x02,0x4e,0x06,0xfa,0x7f,0x54,0x03,0x0a,0x80,0x2b,0x03,0x00,0x00,0x10, - 0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04,0x80,0x37,0x07,0x01,0x06,0x05, - 0x07,0x01,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x41,0x06,0x03,0x02,0x4e, - 0x06,0xfa,0x7f,0x47,0x00,0x01,0x00,0x0e,0xc0,0x09,0x6e,0x61,0x6d,0x65,0x0d,0x74, - 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x3b,0x00,0x01,0x05,0x02,0x02,0x00,0x08, - 0x2b,0x01,0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x01,0x03, - 0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x00,0x3f,0x01,0x00,0x00, - 0x0c,0xc0,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x43,0x00,0x01,0x05,0x02,0x02,0x00,0x0a,0x2b,0x01,0x00,0x00, - 0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x01,0x03,0x10,0x04,0x00,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x12,0x02,0x02,0x00,0x36,0x01,0x02,0x01, - 0x48,0x01,0x02,0x00,0x06,0x80,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x97,0x12,0x03,0x00,0x12,0x00,0x5c,0x01, - 0xe9,0x01,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01, - 0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x37,0x03, - 0x03,0x00,0x25,0x04,0x04,0x00,0x3e,0x03,0x02,0x01,0x31,0x03,0x05,0x00,0x31,0x04, - 0x06,0x00,0x29,0x05,0x00,0x00,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06,0x31,0x07, - 0x09,0x00,0x3e,0x06,0x02,0x02,0x37,0x07,0x0a,0x00,0x25,0x08,0x0b,0x00,0x3e,0x07, - 0x02,0x02,0x37,0x08,0x0c,0x00,0x10,0x09,0x07,0x00,0x37,0x0a,0x0c,0x00,0x10,0x0b, - 0x07,0x00,0x10,0x0c,0x04,0x00,0x10,0x0d,0x06,0x00,0x3e,0x0c,0x02,0x00,0x3d,0x0a, - 0x01,0x02,0x38,0x0a,0x02,0x0a,0x3e,0x08,0x03,0x02,0x37,0x09,0x0c,0x00,0x25,0x0a, - 0x0d,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x0e,0x00,0x25,0x0d,0x0f,0x00,0x3e,0x0b, - 0x03,0x00,0x3d,0x09,0x01,0x02,0x27,0x0a,0x00,0x00,0x34,0x0b,0x10,0x00,0x37,0x0b, - 0x11,0x0b,0x34,0x0c,0x12,0x00,0x36,0x0d,0x0a,0x08,0x1f,0x0d,0x09,0x0d,0x3e,0x0c, - 0x02,0x00,0x3d,0x0b,0x00,0x02,0x27,0x0c,0x40,0x00,0x01,0x0c,0x0b,0x00,0x54,0x0b, - 0x03,0x80,0x51,0x0b,0x02,0x80,0x14,0x0a,0x00,0x0a,0x54,0x0b,0xf3,0x7f,0x51,0x0b, - 0x0c,0x80,0x15,0x0a,0x00,0x0a,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x13,0x00,0x36,0x0d, - 0x0a,0x08,0x3e,0x0b,0x03,0x02,0x10,0x05,0x0b,0x00,0x37,0x0b,0x0c,0x00,0x10,0x0c, - 0x07,0x00,0x37,0x0d,0x14,0x05,0x3e,0x0b,0x03,0x02,0x05,0x0b,0x08,0x00,0x54,0x0b, - 0xf3,0x7f,0x29,0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x3b,0x07,0x00,0x07,0x37,0x08, - 0x0c,0x00,0x25,0x09,0x0b,0x00,0x10,0x0a,0x04,0x00,0x10,0x0b,0x07,0x00,0x3e,0x0a, - 0x02,0x00,0x3d,0x08,0x01,0x02,0x38,0x08,0x02,0x08,0x37,0x09,0x0c,0x00,0x25,0x0a, - 0x0b,0x00,0x10,0x0b,0x08,0x00,0x3e,0x09,0x03,0x02,0x37,0x0a,0x15,0x00,0x25,0x0b, - 0x16,0x00,0x3e,0x0a,0x02,0x02,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x02,0x80,0x27,0x0a, - 0x00,0x00,0x54,0x0b,0x01,0x80,0x27,0x0a,0x01,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c, - 0x0d,0x00,0x37,0x0d,0x0c,0x00,0x25,0x0e,0x17,0x00,0x37,0x0f,0x18,0x05,0x3e,0x0d, - 0x03,0x00,0x3d,0x0b,0x01,0x02,0x39,0x0b,0x0a,0x09,0x38,0x06,0x00,0x07,0x32,0x07, - 0x0e,0x00,0x33,0x08,0x19,0x00,0x33,0x09,0x1a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x1b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x1c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x1d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x1e,0x00,0x3b,0x09,0x09,0x08,0x33,0x09, - 0x1f,0x00,0x3b,0x09,0x0a,0x08,0x3b,0x08,0x00,0x07,0x33,0x08,0x20,0x00,0x33,0x09, - 0x21,0x00,0x3b,0x09,0x05,0x08,0x33,0x09,0x22,0x00,0x3b,0x09,0x06,0x08,0x33,0x09, - 0x23,0x00,0x3b,0x09,0x07,0x08,0x33,0x09,0x24,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08, - 0x01,0x07,0x33,0x08,0x25,0x00,0x33,0x09,0x26,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x27,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x28,0x00,0x3b,0x09,0x07,0x08,0x3b,0x08, - 0x02,0x07,0x33,0x08,0x29,0x00,0x33,0x09,0x2a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x2b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x2c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x2d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x2e,0x00,0x3b,0x09,0x09,0x08,0x3b,0x08, - 0x03,0x07,0x33,0x08,0x2f,0x00,0x33,0x09,0x30,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x31,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x04,0x07,0x33,0x08,0x32,0x00,0x3b,0x08, - 0x05,0x07,0x33,0x08,0x33,0x00,0x33,0x09,0x34,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x35,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x06,0x07,0x33,0x08,0x36,0x00,0x3b,0x08, - 0x07,0x07,0x33,0x08,0x37,0x00,0x3b,0x08,0x08,0x07,0x33,0x08,0x38,0x00,0x3b,0x08, - 0x09,0x07,0x33,0x08,0x39,0x00,0x33,0x09,0x3a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x3b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x3c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x3d,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08,0x0a,0x07,0x33,0x08,0x3e,0x00,0x33,0x09, - 0x3f,0x00,0x3b,0x09,0x05,0x08,0x3b,0x08,0x0b,0x07,0x33,0x08,0x40,0x00,0x3b,0x08, - 0x0c,0x07,0x33,0x08,0x41,0x00,0x3b,0x08,0x0d,0x07,0x33,0x08,0x42,0x00,0x32,0x09, - 0x00,0x00,0x34,0x0a,0x43,0x00,0x10,0x0b,0x07,0x00,0x3e,0x0a,0x02,0x04,0x54,0x0d, - 0x05,0x80,0x38,0x0f,0x01,0x0e,0x33,0x10,0x44,0x00,0x32,0x11,0x00,0x00,0x3a,0x11, - 0x0f,0x10,0x39,0x10,0x0f,0x09,0x41,0x0d,0x03,0x03,0x4e,0x0d,0xf9,0x7f,0x32,0x0a, - 0x06,0x00,0x31,0x0b,0x45,0x00,0x3b,0x0b,0x00,0x0a,0x31,0x0b,0x46,0x00,0x3b,0x0b, - 0x01,0x0a,0x31,0x0b,0x47,0x00,0x3b,0x0b,0x02,0x0a,0x31,0x0b,0x48,0x00,0x3b,0x0b, - 0x03,0x0a,0x31,0x0b,0x49,0x00,0x3b,0x0b,0x04,0x0a,0x31,0x0b,0x4a,0x00,0x3b,0x0b, - 0x05,0x0a,0x33,0x0b,0x4b,0x00,0x31,0x0c,0x4c,0x00,0x31,0x0d,0x4d,0x00,0x31,0x0e, - 0x4e,0x00,0x37,0x0f,0x4f,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x50,0x0f,0x37,0x0f, - 0x51,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x52,0x0f,0x37,0x0f,0x53,0x09,0x37,0x0f, - 0x0f,0x0f,0x3a,0x0e,0x54,0x0f,0x31,0x0f,0x55,0x00,0x37,0x10,0x4f,0x09,0x37,0x10, - 0x0f,0x10,0x3a,0x0f,0x56,0x10,0x37,0x10,0x51,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f, - 0x57,0x10,0x37,0x10,0x53,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f,0x58,0x10,0x31,0x10, - 0x59,0x00,0x3a,0x10,0x0a,0x02,0x31,0x10,0x5b,0x00,0x3a,0x10,0x5a,0x02,0x30,0x00, - 0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74, - 0x61,0x62,0x6c,0x65,0x00,0x0a,0x76,0x61,0x6c,0x75,0x65,0x0d,0x61,0x72,0x67,0x75, - 0x6d,0x65,0x6e,0x74,0x0b,0x6d,0x65,0x6d,0x62,0x65,0x72,0x00,0x0b,0x76,0x61,0x6c, - 0x75,0x65,0x73,0x09,0x65,0x6e,0x75,0x6d,0x0e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e, - 0x74,0x73,0x09,0x66,0x75,0x6e,0x63,0x0c,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0b, - 0x73,0x74,0x72,0x75,0x63,0x74,0x00,0x00,0x00,0x01,0x04,0x00,0x0a,0x63,0x64,0x65, - 0x63,0x6c,0x0d,0x74,0x68,0x69,0x73,0x63,0x61,0x6c,0x6c,0x0d,0x66,0x61,0x73,0x74, - 0x63,0x61,0x6c,0x6c,0x0c,0x73,0x74,0x64,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x01,0x00,0x00,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x01,0x00,0x04,0x11, - 0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0x0f,0x76,0x61, - 0x6c,0x75,0x65,0x5f,0x74,0x79,0x70,0x65,0x02,0x09,0x74,0x79,0x70,0x65,0x02,0x10, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x02,0x01,0x04,0x00,0x00, - 0x07,0x6b,0x77,0x08,0x54,0x4f,0x4b,0x09,0x73,0x69,0x7a,0x65,0x01,0x05,0x00,0x00, - 0x0b,0x65,0x78,0x74,0x65,0x72,0x6e,0x08,0x43,0x49,0x44,0x05,0x02,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05,0x00,0x00, - 0x0d,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x09,0x74,0x79,0x70,0x65,0x0a,0x76, - 0x61,0x6c,0x75,0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75, - 0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08, - 0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80, - 0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80, - 0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x0d,0x62,0x69,0x74,0x66,0x69, - 0x65,0x6c,0x64,0x05,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x02,0x01,0x05,0x00,0x00, - 0x0a,0x66,0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0b,0x6f,0x66,0x66,0x73, - 0x65,0x74,0x02,0x01,0x05,0x00,0x00,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x74, - 0x79,0x70,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x02,0x01,0x05,0x00,0x00,0x0c,0x74, - 0x79,0x70,0x65,0x64,0x65,0x66,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74, - 0x79,0x70,0x65,0x05,0x01,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x13,0x73, - 0x73,0x65,0x5f,0x72,0x65,0x67,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x04,0x0b,0x76,0x61,0x72,0x61,0x72,0x67,0x01,0x05,0x00, - 0x00,0x09,0x66,0x75,0x6e,0x63,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79, - 0x70,0x65,0x0a,0x6e,0x61,0x72,0x67,0x73,0x02,0x01,0x05,0x00,0x00,0x09,0x65,0x6e, - 0x75,0x6d,0x09,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x02,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01, - 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05, - 0x00,0x00,0x09,0x76,0x6f,0x69,0x64,0x05,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x03,0x00,0x00,0x03,0x80, - 0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00, - 0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00,0x00,0x03, - 0x80,0x80,0x80,0x20,0x0c,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x01,0x03,0x00,0x00, - 0x03,0x80,0x80,0x80,0x40,0x0b,0x76,0x65,0x63,0x74,0x6f,0x72,0x01,0x05,0x00,0x00, - 0x0a,0x61,0x72,0x72,0x61,0x79,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74, - 0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x04,0x00,0x00,0x03,0x80,0x80, - 0x80,0x04,0x08,0x72,0x65,0x66,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01, - 0x05,0x00,0x00,0x08,0x70,0x74,0x72,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f, - 0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x03,0x00,0x00,0x03,0x80, - 0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0a, - 0x75,0x6e,0x69,0x6f,0x6e,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01, - 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05, - 0x00,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x05,0x09,0x73,0x69,0x7a,0x65,0x02, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x09,0x6c,0x6f,0x6e,0x67,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69, - 0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x20,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80, - 0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x08,0x69,0x6e,0x74,0x05,0x09, - 0x73,0x69,0x7a,0x65,0x01,0x0c,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x0e,0x75,0x69, - 0x6e,0x74,0x70,0x74,0x72,0x5f,0x74,0x07,0x6c,0x65,0x08,0x61,0x62,0x69,0x06,0x67, - 0x0d,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2a,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x08,0x61,0x62,0x73,0x09,0x6d,0x61,0x74,0x68,0x0c,0x5f,0x5f,0x69,0x6e, - 0x64,0x65,0x78,0x10,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x2a,0x0d, - 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x09,0x63,0x61,0x73,0x74,0x0e,0x75,0x69, - 0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x00,0x0b, - 0x63,0x72,0x65,0x61,0x74,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x00,0x00,0xac,0x02,0x20,0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x73,0x69,0x7a, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f,0x74,0x20, - 0x73,0x69,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f, - 0x74,0x20,0x6e,0x65,0x78,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74, - 0x33,0x32,0x5f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x7d,0x20,0x43, - 0x54,0x79,0x70,0x65,0x3b,0x0a,0x20,0x20,0x0a,0x20,0x20,0x74,0x79,0x70,0x65,0x64, - 0x65,0x66,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x53,0x74,0x61,0x74, - 0x65,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x2a,0x74, - 0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74, - 0x20,0x74,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32, - 0x5f,0x74,0x20,0x73,0x69,0x7a,0x65,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x6f,0x69,0x64,0x20,0x2a,0x4c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69, - 0x64,0x20,0x2a,0x67,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a, - 0x66,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x6f,0x69,0x64,0x20,0x2a,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x3b,0x0a,0x20,0x20, - 0x7d,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x3b,0x0a,0x09,0x63,0x64,0x65,0x66, - 0x08,0x62,0x69,0x74,0x08,0x66,0x66,0x69,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65, - 0x02,0x6f,0x00,0x02,0x0a,0x00,0x06,0x00,0x13,0x32,0x02,0x00,0x00,0x10,0x04,0x00, - 0x00,0x37,0x03,0x00,0x00,0x25,0x05,0x01,0x00,0x0c,0x06,0x01,0x00,0x54,0x06,0x01, - 0x80,0x25,0x06,0x02,0x00,0x25,0x07,0x03,0x00,0x24,0x05,0x07,0x05,0x3e,0x03,0x03, - 0x04,0x54,0x06,0x05,0x80,0x34,0x07,0x04,0x00,0x37,0x07,0x05,0x07,0x10,0x08,0x02, - 0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x41,0x06,0x03,0x02,0x4e,0x06,0xf9, - 0x7f,0x48,0x02,0x02,0x00,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x07,0x5d,0x2b,0x06,0x2f,0x07,0x5b,0x5e,0x0b,0x67,0x6d,0x61,0x74,0x63, - 0x68,0x40,0x00,0x01,0x08,0x00,0x02,0x00,0x0b,0x32,0x01,0x00,0x00,0x10,0x03,0x00, - 0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x02, - 0x80,0x29,0x06,0x02,0x00,0x39,0x06,0x05,0x01,0x41,0x05,0x03,0x02,0x4e,0x05,0xfc, - 0x7f,0x48,0x01,0x02,0x00,0x0a,0x5b,0x5e,0x3b,0x5d,0x2b,0x0b,0x67,0x6d,0x61,0x74, - 0x63,0x68,0xe0,0x01,0x00,0x01,0x0b,0x01,0x04,0x01,0x2e,0x10,0x02,0x00,0x00,0x37, - 0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x06,0x00,0x3e,0x01,0x04,0x02,0x07, - 0x01,0x01,0x00,0x54,0x01,0x06,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27, - 0x03,0x08,0x00,0x3e,0x01,0x03,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0x20,0x80,0x2b, - 0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34, - 0x01,0x03,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x3e,0x01,0x02,0x04,0x44, - 0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54, - 0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x02,0x06,0x10,0x08,0x00,0x00,0x37, - 0x07,0x00,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36, - 0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37, - 0x06,0x00,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10, - 0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48, - 0x00,0x02,0x00,0x02,0xc0,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72, - 0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x0b,0x61,0x73,0x73,0x65,0x74,0x73,0x08, - 0x73,0x75,0x62,0x02,0xa5,0x01,0x00,0x01,0x0b,0x01,0x03,0x01,0x21,0x2b,0x01,0x00, - 0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34,0x01,0x01, - 0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x3e,0x01,0x02,0x04,0x44,0x04,0x15, - 0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54,0x06,0x11, - 0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x10,0x08,0x00,0x00,0x37,0x07,0x02, - 0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36,0x06,0x07, - 0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37,0x06,0x02, - 0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10,0x00,0x06, - 0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02, - 0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65, - 0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x02,0xa5,0x01,0x00,0x01,0x0b, - 0x01,0x03,0x01,0x21,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00, - 0x54,0x02,0x1c,0x80,0x34,0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x3e,0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00, - 0x01,0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06, - 0x10,0x08,0x00,0x00,0x37,0x07,0x02,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00, - 0x3e,0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80, - 0x10,0x07,0x00,0x00,0x37,0x06,0x02,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08, - 0x3e,0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03, - 0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68, - 0x73,0x02,0xda,0x02,0x00,0x01,0x06,0x05,0x09,0x01,0x43,0x29,0x01,0x00,0x00,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e, - 0x02,0x04,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x15,0x80,0x10,0x03,0x00,0x00,0x37, - 0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03,0x02,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x02,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x01,0x00,0x10, - 0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x03,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x04,0x04,0x10,0x05,0x03,0x00,0x40,0x04,0x02,0x00,0x54,0x02,0x25,0x80,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x13,0x04,0x00,0x00,0x15,0x04,0x00,0x04,0x27, - 0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x05,0x02,0x3e, - 0x02,0x02,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x18,0x80,0x2b,0x02,0x02,0x00,0x07, - 0x02,0x07,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x07,0x80,0x2b,0x02,0x02,0x00,0x07, - 0x02,0x08,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x04,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x03,0x02,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10, - 0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x48, - 0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0xc0,0x03,0x80,0x07,0xc0,0x08, - 0xc0,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x09,0x2e,0x6c, - 0x75,0x61,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65, - 0x5f,0x75,0x72,0x69,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x0d,0x62, - 0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x06,0x40,0x08,0x73,0x75,0x62,0x06,0x19,0x00, - 0x01,0x03,0x00,0x01,0x00,0x04,0x25,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x24,0x01, - 0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x25,0x98,0x04,0x01,0x01,0x12,0x02,0x16,0x00, - 0x5e,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x01, - 0x00,0x3e,0x01,0x04,0x02,0x07,0x01,0x01,0x00,0x54,0x01,0x54,0x80,0x29,0x01,0x00, - 0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03, - 0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02, - 0x02,0x2b,0x04,0x01,0x00,0x34,0x05,0x03,0x00,0x37,0x05,0x04,0x05,0x25,0x06,0x05, - 0x00,0x3e,0x04,0x03,0x02,0x2b,0x05,0x00,0x00,0x37,0x05,0x06,0x05,0x10,0x06,0x02, - 0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06,0x10,0x07,0x04, - 0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x01,0x34,0x06,0x0a,0x00,0x10,0x07,0x04, - 0x00,0x3e,0x06,0x02,0x04,0x54,0x09,0x30,0x80,0x2b,0x0b,0x00,0x00,0x37,0x0b,0x06, - 0x0b,0x10,0x0c,0x0a,0x00,0x3e,0x0b,0x02,0x02,0x05,0x0b,0x05,0x00,0x54,0x0b,0x2a, - 0x80,0x34,0x0b,0x0b,0x00,0x37,0x0b,0x0c,0x0b,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x02, - 0x0c,0x10,0x0d,0x0a,0x00,0x3e,0x0c,0x02,0x02,0x25,0x0d,0x0d,0x00,0x31,0x0e,0x0e, - 0x00,0x3e,0x0b,0x04,0x02,0x34,0x0c,0x0b,0x00,0x37,0x0c,0x0c,0x0c,0x10,0x0d,0x0b, - 0x00,0x25,0x0e,0x0f,0x00,0x25,0x0f,0x10,0x00,0x3e,0x0c,0x04,0x02,0x34,0x0d,0x0b, - 0x00,0x37,0x0d,0x11,0x0d,0x10,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e,0x0d,0x03, - 0x02,0x0f,0x00,0x0d,0x00,0x54,0x0e,0x14,0x80,0x34,0x0e,0x0b,0x00,0x37,0x0e,0x0c, - 0x0e,0x10,0x0f,0x0d,0x00,0x25,0x10,0x12,0x00,0x25,0x11,0x13,0x00,0x3e,0x0e,0x04, - 0x02,0x10,0x0d,0x0e,0x00,0x0f,0x00,0x01,0x00,0x54,0x0e,0x0a,0x80,0x34,0x0e,0x0b, - 0x00,0x37,0x0e,0x14,0x0e,0x10,0x0f,0x01,0x00,0x3e,0x0e,0x02,0x02,0x34,0x0f,0x0b, - 0x00,0x37,0x0f,0x14,0x0f,0x10,0x10,0x0d,0x00,0x3e,0x0f,0x02,0x02,0x01,0x0f,0x0e, - 0x00,0x54,0x0e,0x01,0x80,0x10,0x01,0x0d,0x00,0x41,0x09,0x03,0x03,0x4e,0x09,0xce, - 0x7f,0x0f,0x00,0x01,0x00,0x54,0x06,0x05,0x80,0x25,0x06,0x15,0x00,0x10,0x07,0x01, - 0x00,0x24,0x06,0x07,0x06,0x30,0x00,0x00,0x80,0x48,0x06,0x02,0x00,0x29,0x01,0x01, - 0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0xc0,0x0f,0x6d,0x6f, - 0x64,0x75,0x6c,0x65,0x3a,0x2f,0x2f,0x2f,0x08,0x6c,0x65,0x6e,0x06,0x2e,0x06,0x2f, - 0x0a,0x6d,0x61,0x74,0x63,0x68,0x09,0x28,0x2e,0x2b,0x29,0x09,0x25,0x25,0x25,0x3f, - 0x00,0x1f,0x5b,0x25,0x5e,0x25,0x24,0x25,0x28,0x25,0x29,0x25,0x25,0x25,0x2e,0x25, - 0x5b,0x25,0x5d,0x25,0x2a,0x25,0x2b,0x25,0x2d,0x25,0x3f,0x5d,0x09,0x67,0x73,0x75, - 0x62,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a, - 0x3f,0x2e,0x6c,0x75,0x61,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c, - 0x75,0x74,0x65,0x06,0x3b,0x09,0x70,0x61,0x74,0x68,0x0c,0x70,0x61,0x63,0x6b,0x61, - 0x67,0x65,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x06,0x40,0x08,0x73, - 0x75,0x62,0x93,0x01,0x00,0x01,0x04,0x04,0x03,0x00,0x1c,0x2b,0x01,0x00,0x00,0x36, - 0x01,0x00,0x01,0x0a,0x01,0x00,0x00,0x54,0x02,0x01,0x80,0x48,0x01,0x02,0x00,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x07,0x02,0x02,0x00,0x54, - 0x02,0x0b,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10, - 0x01,0x02,0x00,0x0e,0x00,0x01,0x00,0x54,0x02,0x09,0x80,0x2b,0x02,0x03,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x54,0x02,0x04,0x80,0x2b, - 0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x2b, - 0x02,0x00,0x00,0x39,0x01,0x00,0x02,0x48,0x01,0x02,0x00,0x04,0xc0,0x01,0xc0,0x0b, - 0xc0,0x0a,0xc0,0x0b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x08,0x75,0x72,0x69,0x0d,0x66, - 0x65,0x61,0x74,0x75,0x72,0x65,0x73,0xd6,0x01,0x00,0x01,0x0c,0x03,0x08,0x00,0x27, - 0x34,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x00,0x3d,0x01,0x00,0x02,0x37,0x02,0x02,0x01,0x07,0x02,0x03,0x00, - 0x54,0x02,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00, - 0x40,0x02,0x02,0x00,0x54,0x02,0x18,0x80,0x34,0x02,0x05,0x00,0x2b,0x03,0x02,0x00, - 0x3e,0x02,0x02,0x04,0x44,0x05,0x12,0x80,0x05,0x06,0x00,0x00,0x54,0x07,0x10,0x80, - 0x34,0x07,0x00,0x00,0x10,0x09,0x05,0x00,0x37,0x08,0x06,0x05,0x27,0x0a,0x01,0x00, - 0x27,0x0b,0x01,0x00,0x3e,0x08,0x04,0x02,0x06,0x08,0x07,0x00,0x54,0x08,0x02,0x80, - 0x29,0x08,0x01,0x00,0x54,0x09,0x01,0x80,0x29,0x08,0x02,0x00,0x3e,0x07,0x02,0x01, - 0x10,0x08,0x05,0x00,0x37,0x07,0x06,0x05,0x27,0x09,0x02,0x00,0x40,0x07,0x03,0x00, - 0x42,0x05,0x03,0x03,0x4e,0x05,0xec,0x7f,0x47,0x00,0x01,0x00,0x00,0xc0,0x02,0xc0, - 0x04,0xc0,0x06,0x40,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c,0x74, - 0x6f,0x5f,0x70,0x61,0x74,0x68,0x09,0x66,0x69,0x6c,0x65,0x0b,0x73,0x63,0x68,0x65, - 0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xe4, - 0x01,0x00,0x01,0x09,0x00,0x0b,0x01,0x2a,0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00, - 0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x11,0x80, - 0x07,0x05,0x02,0x00,0x54,0x06,0x08,0x80,0x13,0x06,0x01,0x00,0x08,0x06,0x00,0x00, - 0x54,0x06,0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06,0x04,0x06,0x10,0x07,0x01,0x00, - 0x3e,0x06,0x02,0x01,0x54,0x06,0x07,0x80,0x06,0x05,0x05,0x00,0x54,0x06,0x05,0x80, - 0x34,0x06,0x03,0x00,0x37,0x06,0x06,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x05,0x00, - 0x3e,0x06,0x03,0x01,0x41,0x05,0x03,0x02,0x4e,0x05,0xed,0x7f,0x10,0x03,0x00,0x00, - 0x37,0x02,0x07,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02, - 0x07,0x02,0x08,0x00,0x54,0x02,0x02,0x80,0x25,0x02,0x08,0x00,0x54,0x03,0x01,0x80, - 0x25,0x02,0x09,0x00,0x34,0x03,0x03,0x00,0x37,0x03,0x0a,0x03,0x10,0x04,0x01,0x00, - 0x25,0x05,0x08,0x00,0x3e,0x03,0x03,0x02,0x24,0x02,0x03,0x02,0x48,0x02,0x02,0x00, - 0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x05,0x06,0x2f,0x08,0x73,0x75,0x62,0x0b,0x69, - 0x6e,0x73,0x65,0x72,0x74,0x06,0x2e,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74, - 0x61,0x62,0x6c,0x65,0x07,0x2e,0x2e,0x0a,0x5b,0x5e,0x2f,0x5d,0x2b,0x0b,0x67,0x6d, - 0x61,0x74,0x63,0x68,0x00,0x87,0x01,0x00,0x00,0x04,0x00,0x07,0x00,0x15,0x34,0x00, - 0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02,0x0f,0x00, - 0x00,0x00,0x54,0x01,0x0d,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00,0x25,0x03, - 0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00,0x3e,0x02, - 0x02,0x01,0x06,0x01,0x06,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03, - 0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x29,0x01,0x01,0x00,0x48,0x01, - 0x02,0x00,0x0f,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x5f,0x4e,0x54,0x0a,0x63,0x6c, - 0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61,0x64,0x0e,0x65,0x63,0x68,0x6f, - 0x20,0x25,0x6f,0x73,0x25,0x0a,0x70,0x6f,0x70,0x65,0x6e,0x07,0x69,0x6f,0x79,0x00, - 0x01,0x04,0x01,0x06,0x01,0x0f,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x10,0x02, - 0x00,0x00,0x25,0x03,0x02,0x00,0x3e,0x01,0x03,0x02,0x08,0x01,0x00,0x00,0x54,0x01, - 0x03,0x80,0x25,0x01,0x02,0x00,0x10,0x02,0x00,0x00,0x24,0x00,0x02,0x01,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x03,0x01,0x33,0x02,0x04,0x00,0x3a,0x00,0x05,0x02,0x40,0x01, - 0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x01,0x00,0x02,0x0b,0x73,0x63,0x68, - 0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x06,0x2f,0x09,0x66,0x69,0x6e,0x64, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x39,0x00,0x01,0x05,0x00,0x02,0x00,0x0b, - 0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x01,0x00, - 0x3e,0x01,0x04,0x02,0x06,0x01,0x01,0x00,0x54,0x01,0x02,0x80,0x29,0x01,0x01,0x00, - 0x54,0x02,0x01,0x80,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x06,0x2f,0x08,0x73, - 0x75,0x62,0x27,0x00,0x01,0x03,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x37,0x01, - 0x00,0x01,0x37,0x02,0x01,0x00,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74, - 0x68,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x23,0x00,0x01,0x04,0x00,0x02, - 0x00,0x04,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x25,0x03,0x01,0x00,0x40,0x01, - 0x03,0x00,0x0a,0x5e,0x25,0x61,0x3a,0x2f,0x0a,0x6d,0x61,0x74,0x63,0x68,0x50,0x00, - 0x01,0x05,0x01,0x04,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x33,0x02, - 0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x24,0x03,0x04,0x03,0x3a,0x03, - 0x03,0x02,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x06,0x2f,0x01, - 0x00,0x02,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x44, - 0x00,0x01,0x05,0x01,0x05,0x00,0x09,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37, - 0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x10,0x02,0x01,0x00,0x37,0x01,0x02,0x01,0x25, - 0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x40,0x01,0x04,0x00,0x02,0x00,0x05,0x07,0x5e, - 0x2f,0x09,0x67,0x73,0x75,0x62,0x09,0x70,0x61,0x74,0x68,0x0d,0x75,0x6e,0x65,0x73, - 0x63,0x61,0x70,0x65,0x40,0x00,0x01,0x06,0x01,0x04,0x00,0x0a,0x2b,0x01,0x00,0x00, - 0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x25,0x05,0x02,0x00, - 0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x03,0x02,0x3e,0x02,0x02,0x00, - 0x3f,0x01,0x00,0x00,0x03,0xc0,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x06,0x2f,0x06,0x5c, - 0x09,0x67,0x73,0x75,0x62,0x7c,0x00,0x00,0x04,0x01,0x07,0x00,0x12,0x34,0x00,0x00, - 0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02,0x0f,0x00,0x00, - 0x00,0x54,0x01,0x0b,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00,0x25,0x03,0x04, - 0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00,0x3e,0x02,0x02, - 0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x06,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02, - 0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61,0x64,0x0e, - 0x65,0x63,0x68,0x6f,0x20,0x25,0x63,0x64,0x25,0x0a,0x70,0x6f,0x70,0x65,0x6e,0x07, - 0x69,0x6f,0xd1,0x05,0x01,0x03,0x08,0x04,0x20,0x00,0x6b,0x0f,0x00,0x00,0x00,0x54, - 0x03,0x0b,0x80,0x06,0x00,0x00,0x00,0x54,0x03,0x09,0x80,0x06,0x00,0x01,0x00,0x54, - 0x03,0x07,0x80,0x06,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x06,0x00,0x03,0x00,0x54, - 0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02,0x01,0x0f, - 0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x2c,0x00,0x00,0x00,0x54,0x03,0x0b,0x80,0x31, - 0x03,0x06,0x00,0x34,0x04,0x07,0x00,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x03,0x0f, - 0x00,0x04,0x00,0x54,0x06,0x04,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x02,0x80,0x2d, - 0x00,0x01,0x00,0x54,0x06,0x01,0x80,0x2d,0x00,0x00,0x00,0x2b,0x03,0x00,0x00,0x06, - 0x03,0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x06,0x03,0x02,0x00,0x54, - 0x03,0x03,0x80,0x2b,0x03,0x00,0x00,0x07,0x03,0x03,0x00,0x54,0x03,0x15,0x80,0x2b, - 0x03,0x01,0x00,0x25,0x04,0x09,0x00,0x3a,0x04,0x08,0x03,0x2b,0x03,0x01,0x00,0x0c, - 0x04,0x01,0x00,0x54,0x04,0x04,0x80,0x34,0x04,0x0b,0x00,0x37,0x04,0x0c,0x04,0x25, - 0x05,0x0d,0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x01,0x00,0x31, - 0x04,0x0f,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x11,0x00,0x3a, - 0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x13,0x00,0x3a,0x04,0x12,0x03,0x54, - 0x03,0x19,0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x14,0x00,0x3a,0x04,0x08,0x03,0x2b, - 0x03,0x01,0x00,0x31,0x04,0x15,0x00,0x3a,0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31, - 0x04,0x16,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x17,0x00,0x3a, - 0x04,0x12,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x18,0x03,0x2b,0x04,0x01,0x00,0x31, - 0x05,0x19,0x00,0x3a,0x05,0x18,0x04,0x31,0x04,0x1a,0x00,0x2b,0x05,0x01,0x00,0x0c, - 0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x10,0x06,0x04,0x00,0x3e,0x06,0x01,0x02,0x3a, - 0x06,0x0a,0x05,0x30,0x03,0x00,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00,0x37, - 0x04,0x0a,0x04,0x10,0x05,0x04,0x00,0x37,0x04,0x1b,0x04,0x25,0x06,0x1c,0x00,0x25, - 0x07,0x1d,0x00,0x3e,0x04,0x04,0x02,0x3a,0x04,0x0a,0x03,0x0f,0x00,0x02,0x00,0x54, - 0x03,0x05,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x03,0x00,0x10,0x05,0x02,0x00,0x3e, - 0x04,0x02,0x02,0x3a,0x04,0x1e,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x0a,0x03,0x0e, - 0x00,0x03,0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x1f,0x00,0x3e, - 0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x03,0x80,0x02,0xc0,0x00,0xc0,0x06,0xc0,0x2f, - 0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x64,0x65,0x74,0x65,0x72,0x6d, - 0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20, - 0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2e,0x11,0x73,0x65,0x61,0x72,0x63, - 0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x09,0x25,0x25,0x32,0x30,0x06,0x20,0x09,0x67, - 0x73,0x75,0x62,0x00,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00, - 0x00,0x00,0x06,0x5c,0x00,0x0c,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x00,0x15,0x69, - 0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x00, - 0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x08,0x50,0x57,0x44, - 0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x0d,0x62,0x61,0x73,0x65,0x5f, - 0x64,0x69,0x72,0x06,0x2f,0x0d,0x70,0x61,0x74,0x68,0x5f,0x73,0x65,0x70,0x0a,0x70, - 0x63,0x61,0x6c,0x6c,0x00,0x59,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20, - 0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x20,0x70,0x6c,0x61,0x74,0x66, - 0x6f,0x72,0x6d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x3a,0x20,0x65,0x78,0x65, - 0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x27,0x75,0x6e,0x69,0x78,0x27, - 0x20,0x6f,0x72,0x20,0x27,0x77,0x69,0x6e,0x27,0x2e,0x0a,0x65,0x72,0x72,0x6f,0x72, - 0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x08,0x77,0x69,0x6e, - 0x09,0x75,0x6e,0x69,0x78,0xbd,0x01,0x03,0x00,0x0d,0x00,0x12,0x00,0x1a,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25,0x02, - 0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x29,0x03,0x00,0x00,0x32,0x04, - 0x00,0x00,0x31,0x05,0x03,0x00,0x31,0x06,0x04,0x00,0x31,0x07,0x05,0x00,0x31,0x08, - 0x06,0x00,0x31,0x09,0x07,0x00,0x31,0x0a,0x08,0x00,0x31,0x0b,0x09,0x00,0x31,0x0c, - 0x0b,0x00,0x3a,0x0c,0x0a,0x02,0x31,0x0c,0x0d,0x00,0x3a,0x0c,0x0c,0x02,0x31,0x0c, - 0x0f,0x00,0x3a,0x0c,0x0e,0x02,0x31,0x0c,0x11,0x00,0x3a,0x0c,0x10,0x02,0x30,0x00, - 0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x09,0x69,0x6e,0x69,0x74,0x00,0x0e,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00,0x0d,0x67,0x65,0x74,0x5f,0x70,0x61,0x74, - 0x68,0x00,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x11, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x0c,0x72,0x65,0x71, - 0x75,0x69,0x72,0x65,0x3c,0x00,0x01,0x04,0x02,0x02,0x00,0x07,0x34,0x01,0x00,0x00, - 0x2b,0x02,0x01,0x00,0x36,0x02,0x00,0x02,0x25,0x03,0x01,0x00,0x3e,0x01,0x03,0x02, - 0x2c,0x00,0x01,0x00,0x48,0x00,0x02,0x00,0x02,0x80,0x01,0xc0,0x12,0x4e,0x6f,0x20, - 0x73,0x75,0x63,0x68,0x20,0x6c,0x65,0x76,0x65,0x6c,0x0b,0x61,0x73,0x73,0x65,0x72, - 0x74,0xf1,0x01,0x00,0x03,0x0a,0x00,0x09,0x00,0x22,0x34,0x03,0x00,0x00,0x10,0x04, - 0x00,0x00,0x3e,0x03,0x02,0x02,0x37,0x04,0x01,0x03,0x37,0x05,0x02,0x03,0x36,0x05, - 0x01,0x05,0x36,0x06,0x01,0x04,0x0b,0x06,0x00,0x00,0x54,0x06,0x07,0x80,0x34,0x06, - 0x03,0x00,0x25,0x07,0x04,0x00,0x34,0x08,0x05,0x00,0x10,0x09,0x01,0x00,0x3e,0x08, - 0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x06,0x02,0x01,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x08,0x80,0x34,0x06,0x03,0x00,0x25,0x07,0x06,0x00,0x34,0x08,0x05,0x00,0x10,0x09, - 0x01,0x00,0x3e,0x08,0x02,0x02,0x25,0x09,0x07,0x00,0x24,0x07,0x09,0x07,0x3e,0x06, - 0x02,0x01,0x34,0x06,0x08,0x00,0x10,0x07,0x05,0x00,0x10,0x08,0x02,0x00,0x3e,0x07, - 0x02,0x00,0x3d,0x06,0x00,0x02,0x10,0x02,0x06,0x00,0x39,0x02,0x01,0x04,0x47,0x00, - 0x01,0x00,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12,0x20,0x69,0x73,0x20,0x72,0x65, - 0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x11,0x54,0x68,0x65,0x20,0x66,0x65,0x61,0x74, - 0x75,0x72,0x65,0x20,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x15,0x4e,0x6f, - 0x20,0x73,0x75,0x63,0x68,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x0a,0x65, - 0x72,0x72,0x6f,0x72,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x73,0x0c, - 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74, - 0x61,0x62,0x6c,0x65,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03,0x00,0x00, - 0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00, - 0x03,0xc0,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03,0x00,0x00,0x38,0x04, - 0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0, - 0x21,0x00,0x04,0x09,0x01,0x00,0x00,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01,0x00, - 0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00, - 0x05,0xc0,0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00,0x32,0x02, - 0x03,0x00,0x3b,0x00,0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00,0x06,0xc0, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x1e,0x00,0x03, - 0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00, - 0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x03,0xc0,0x04,0x1e,0x00,0x03,0x07, - 0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00,0x01, - 0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0,0x04,0x22,0x00,0x04,0x09,0x01, - 0x00,0x01,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01,0x00,0x14,0x06,0x00,0x01,0x10, - 0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x05,0xc0,0x04,0x2a,0x00, - 0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00,0x32,0x02,0x03,0x00,0x3b,0x00, - 0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00,0x07,0xc0,0x11,0x73,0x65,0x74, - 0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x3a,0x00,0x03,0x0b,0x01,0x03,0x01, - 0x0a,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00,0x01,0x10,0x07,0x02, - 0x00,0x37,0x06,0x00,0x02,0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a,0x01, - 0x00,0x3e,0x06,0x05,0x00,0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09,0x67, - 0x73,0x75,0x62,0x04,0x39,0x00,0x03,0x0b,0x01,0x03,0x00,0x0a,0x2b,0x03,0x00,0x00, - 0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x07,0x02,0x00,0x37,0x06,0x00,0x02, - 0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a,0x01,0x00,0x3e,0x06,0x05,0x00, - 0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x8d,0x01, - 0x00,0x01,0x0a,0x00,0x08,0x00,0x16,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x3e, - 0x01,0x01,0x02,0x27,0x02,0x02,0x00,0x34,0x03,0x02,0x00,0x37,0x03,0x03,0x03,0x27, - 0x04,0x01,0x00,0x49,0x02,0x0d,0x80,0x34,0x06,0x04,0x00,0x34,0x07,0x00,0x00,0x37, - 0x07,0x05,0x07,0x10,0x08,0x05,0x00,0x25,0x09,0x06,0x00,0x3e,0x07,0x03,0x00,0x3d, - 0x06,0x00,0x02,0x37,0x06,0x07,0x06,0x05,0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x1e, - 0x06,0x00,0x05,0x48,0x06,0x02,0x00,0x4b,0x02,0xf3,0x7f,0x47,0x00,0x01,0x00,0x09, - 0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0b,0x61, - 0x73,0x73,0x65,0x72,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x0c, - 0x67,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0a,0x64,0x65,0x62,0x75,0x67,0x44,0x00,0x03, - 0x0a,0x02,0x03,0x01,0x0c,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01, - 0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10,0x06,0x02,0x00,0x37,0x05,0x00, - 0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x27,0x09,0x01,0x00,0x3e,0x05,0x05, - 0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75, - 0x62,0x02,0x28,0x00,0x03,0x06,0x02,0x00,0x01,0x07,0x2b,0x03,0x00,0x00,0x2b,0x04, - 0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10,0x05, - 0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x02,0x2c,0x00,0x04,0x08,0x02, - 0x00,0x01,0x08,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x15,0x05,0x00,0x05,0x10,0x06,0x02,0x00,0x10,0x07,0x03,0x00,0x40, - 0x04,0x04,0x00,0x05,0xc0,0x0d,0xc0,0x02,0x3f,0x00,0x03,0x0a,0x02,0x03,0x00,0x0b, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, - 0x10,0x06,0x02,0x00,0x37,0x05,0x00,0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00, - 0x27,0x09,0x01,0x00,0x3e,0x05,0x05,0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0, - 0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x23,0x00,0x03,0x06,0x02,0x00,0x00,0x06, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, - 0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x27,0x00,0x04,0x08, - 0x02,0x00,0x00,0x07,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x02,0x10,0x06,0x02,0x00,0x10,0x07,0x03,0x00,0x40,0x04,0x04,0x00, - 0x05,0xc0,0x0d,0xc0,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x0f,0x00,0x00,0x00, - 0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02, - 0x0e,0x00,0x01,0x00,0x54,0x02,0x01,0x80,0x2b,0x01,0x01,0x00,0x48,0x01,0x02,0x00, - 0x0e,0xc0,0x0c,0x80,0x4f,0x00,0x02,0x07,0x02,0x00,0x00,0x11,0x2b,0x02,0x00,0x00, - 0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x03,0x0e,0x00,0x02,0x00,0x54,0x04,0x04,0x80, - 0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x07,0x80, - 0x0d,0x04,0x02,0x00,0x54,0x04,0x04,0x80,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00, - 0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x02,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00, - 0x08,0xc0,0x0a,0xc0,0x15,0x00,0x02,0x04,0x01,0x00,0x00,0x03,0x2b,0x02,0x00,0x00, - 0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x09,0xc0,0x19,0x00,0x03,0x06,0x01,0x00, - 0x00,0x04,0x2b,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x40,0x03, - 0x03,0x00,0x0a,0xc0,0x3e,0x00,0x03,0x07,0x01,0x00,0x01,0x0d,0x0f,0x00,0x00,0x00, - 0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x05,0x01,0x00, - 0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x00,0x00, - 0x14,0x04,0x00,0x01,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x47,0x00,0x01,0x00, - 0x09,0xc0,0x02,0x1d,0x00,0x02,0x07,0x01,0x00,0x00,0x05,0x2b,0x02,0x00,0x00,0x10, - 0x03,0x00,0x00,0x2a,0x04,0x05,0x00,0x10,0x06,0x01,0x00,0x40,0x02,0x05,0x00,0x08, - 0xc0,0xcf,0x01,0x02,0x02,0x08,0x02,0x09,0x00,0x22,0x2b,0x02,0x00,0x00,0x36,0x02, - 0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x27,0x02,0xff,0xff,0x2b,0x03, - 0x01,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x01,0x80,0x47,0x00,0x01,0x00,0x34,0x02, - 0x00,0x00,0x25,0x03,0x01,0x00,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02,0x27,0x03, - 0x00,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x05,0x80,0x10,0x03,0x01,0x00,0x37,0x02, - 0x02,0x01,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02,0x10,0x01,0x02,0x00,0x34,0x02, - 0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02,0x10,0x03,0x02,0x00,0x37,0x02, - 0x06,0x02,0x34,0x04,0x07,0x00,0x37,0x04,0x02,0x04,0x25,0x05,0x08,0x00,0x10,0x06, - 0x00,0x00,0x10,0x07,0x01,0x00,0x3e,0x04,0x04,0x00,0x3d,0x02,0x01,0x01,0x47,0x00, - 0x01,0x00,0x01,0xc0,0x02,0x80,0x14,0x44,0x45,0x42,0x55,0x47,0x47,0x45,0x52,0x09, - 0x25,0x73,0x09,0x25,0x73,0x0a,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x77,0x72, - 0x69,0x74,0x65,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x09,0x62,0x61,0x73,0x65,0x07, - 0x69,0x6f,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x06,0x23,0x0b,0x73,0x65,0x6c,0x65, - 0x63,0x74,0xc7,0x09,0x03,0x00,0x13,0x00,0x47,0x00,0x7d,0x32,0x00,0x00,0x00,0x33, - 0x01,0x00,0x00,0x37,0x02,0x01,0x01,0x34,0x03,0x03,0x00,0x32,0x04,0x00,0x00,0x33, - 0x05,0x10,0x00,0x33,0x06,0x04,0x00,0x34,0x07,0x05,0x00,0x3a,0x07,0x06,0x06,0x34, - 0x07,0x07,0x00,0x3a,0x07,0x08,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x09,0x06,0x34, - 0x07,0x05,0x00,0x3a,0x07,0x0a,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0b,0x06,0x34, - 0x07,0x05,0x00,0x3a,0x07,0x0c,0x06,0x34,0x07,0x07,0x00,0x3a,0x07,0x0d,0x06,0x31, - 0x07,0x0e,0x00,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x11,0x05,0x33,0x06,0x12,0x00,0x34, - 0x07,0x13,0x00,0x3a,0x07,0x14,0x06,0x3a,0x06,0x15,0x05,0x31,0x06,0x16,0x00,0x3a, - 0x06,0x17,0x05,0x3e,0x03,0x03,0x02,0x3a,0x03,0x02,0x00,0x34,0x03,0x18,0x00,0x37, - 0x03,0x19,0x03,0x34,0x04,0x18,0x00,0x37,0x04,0x1a,0x04,0x34,0x05,0x18,0x00,0x37, - 0x05,0x1b,0x05,0x33,0x06,0x1d,0x00,0x31,0x07,0x1c,0x00,0x3a,0x07,0x19,0x06,0x31, - 0x07,0x1e,0x00,0x3a,0x07,0x1a,0x06,0x31,0x07,0x1f,0x00,0x3a,0x07,0x1b,0x06,0x3a, - 0x06,0x15,0x06,0x31,0x07,0x21,0x00,0x3a,0x07,0x20,0x00,0x33,0x07,0x23,0x00,0x31, - 0x08,0x22,0x00,0x3a,0x08,0x19,0x07,0x31,0x08,0x24,0x00,0x3a,0x08,0x1a,0x07,0x31, - 0x08,0x25,0x00,0x3a,0x08,0x1b,0x07,0x3a,0x07,0x15,0x07,0x31,0x08,0x27,0x00,0x3a, - 0x08,0x26,0x00,0x34,0x08,0x13,0x00,0x07,0x08,0x28,0x00,0x54,0x08,0x31,0x80,0x34, - 0x08,0x29,0x00,0x34,0x09,0x2a,0x00,0x34,0x0a,0x2b,0x00,0x34,0x0b,0x18,0x00,0x37, - 0x0b,0x19,0x0b,0x29,0x0c,0x00,0x00,0x31,0x0d,0x2c,0x00,0x3a,0x0d,0x19,0x07,0x31, - 0x0d,0x2d,0x00,0x3a,0x0d,0x19,0x06,0x31,0x0d,0x2e,0x00,0x34,0x0e,0x2f,0x00,0x34, - 0x0f,0x30,0x00,0x25,0x10,0x31,0x00,0x3e,0x0e,0x03,0x02,0x0f,0x00,0x0e,0x00,0x54, - 0x0f,0x09,0x80,0x33,0x0e,0x32,0x00,0x31,0x0f,0x33,0x00,0x3a,0x0f,0x19,0x0e,0x31, - 0x0f,0x34,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x35,0x00,0x3a,0x0f,0x1b,0x0e,0x10, - 0x0c,0x0e,0x00,0x54,0x0e,0x08,0x80,0x33,0x0e,0x36,0x00,0x31,0x0f,0x37,0x00,0x3a, - 0x0f,0x19,0x0e,0x31,0x0f,0x38,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x39,0x00,0x3a, - 0x0f,0x1b,0x0e,0x10,0x0c,0x0e,0x00,0x37,0x0e,0x26,0x00,0x31,0x0f,0x3a,0x00,0x3a, - 0x0f,0x26,0x00,0x31,0x0f,0x3c,0x00,0x3a,0x0f,0x3b,0x00,0x34,0x0f,0x03,0x00,0x32, - 0x10,0x00,0x00,0x33,0x11,0x3f,0x00,0x31,0x12,0x3e,0x00,0x3a,0x12,0x15,0x11,0x31, - 0x12,0x40,0x00,0x3a,0x12,0x17,0x11,0x3e,0x0f,0x03,0x02,0x3a,0x0f,0x3d,0x00,0x30, - 0x08,0x0b,0x80,0x34,0x08,0x13,0x00,0x07,0x08,0x41,0x00,0x54,0x08,0x08,0x80,0x34, - 0x08,0x42,0x00,0x34,0x09,0x18,0x00,0x37,0x09,0x19,0x09,0x31,0x0a,0x43,0x00,0x3a, - 0x0a,0x19,0x00,0x31,0x0a,0x44,0x00,0x3a,0x0a,0x3b,0x00,0x30,0x08,0x00,0x80,0x31, - 0x08,0x46,0x00,0x3a,0x08,0x45,0x00,0x30,0x00,0x00,0x80,0x48,0x00,0x02,0x00,0x00, - 0x08,0x6c,0x6f,0x67,0x00,0x00,0x09,0x6c,0x6f,0x61,0x64,0x0c,0x4c,0x75,0x61,0x20, - 0x35,0x2e,0x32,0x00,0x01,0x00,0x00,0x00,0x0d,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e, - 0x76,0x00,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x00,0x00,0x00,0x00,0x01,0x02,0x00, - 0x00,0x09,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x09,0x6d,0x61, - 0x69,0x6e,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61,0x77,0x67,0x65,0x74, - 0x00,0x00,0x00,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0c,0x67,0x65,0x74,0x66, - 0x65,0x6e,0x76,0x0f,0x6c,0x6f,0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x4c, - 0x75,0x61,0x20,0x35,0x2e,0x31,0x00,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54, - 0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x12,0x46,0x6f,0x72, - 0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00,0x00, - 0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63, - 0x61,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0a,0x64,0x65,0x62,0x75,0x67, - 0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69, - 0x6e,0x64,0x65,0x78,0x15,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x76,0x65, - 0x72,0x73,0x69,0x6f,0x6e,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x01,0x00, - 0x0f,0x12,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x08, - 0x4c,0x75,0x61,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0a,0x55,0x54,0x46, - 0x2d,0x38,0x1e,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x73,0x75,0x70,0x70, - 0x6f,0x72,0x74,0x73,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x03,0x00,0x10,0x73, - 0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x03,0x01,0x08,0x75,0x72,0x69, - 0x09,0x66,0x69,0x6c,0x65,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x0c, - 0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x13,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73, - 0x5f,0x61,0x73,0x79,0x6e,0x63,0x03,0x01,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c, - 0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x03,0x00,0x0d,0x6d,0x61,0x78, - 0x5f,0x64,0x61,0x74,0x61,0x03,0xff,0xff,0x03,0x12,0x64,0x61,0x74,0x61,0x5f,0x65, - 0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0e,0x6d, - 0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x03,0x01,0x19,0x62,0x72,0x65,0x61,0x6b, - 0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x73,0x08, - 0x4c,0x75,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e, - 0x03,0x20,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73, - 0x69,0x6f,0x6e,0x03,0x01,0x15,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, - 0x5f,0x74,0x79,0x70,0x65,0x73,0x15,0x6c,0x69,0x6e,0x65,0x20,0x63,0x6f,0x6e,0x64, - 0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f, - 0x72,0x73,0x01,0x00,0x00,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x00, - 0x08,0x75,0x72,0x69,0x10,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e, - 0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x0d,0x6d,0x61,0x78,0x5f,0x64, - 0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e, - 0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73, - 0x69,0x6f,0x6e,0x73,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x01,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0d,0x66,0x65, - 0x61,0x74,0x75,0x72,0x65,0x73,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x01,0x00, - 0x05,0x09,0x49,0x4e,0x46,0x4f,0x03,0x02,0x0b,0x44,0x45,0x54,0x41,0x49,0x4c,0x03, - 0x03,0x0a,0x44,0x45,0x42,0x55,0x47,0x03,0x04,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e, - 0x47,0x03,0x01,0x0a,0x45,0x52,0x52,0x4f,0x52,0x03,0x00,0x3c,0x00,0x01,0x05,0x01, - 0x03,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01,0x00,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3f, - 0x01,0x01,0x00,0x00,0x00,0x09,0x62,0x79,0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32, - 0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3b,0x01,0x01,0x05,0x01,0x03,0x00,0x07, - 0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00, - 0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x00,0x14, - 0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09, - 0x67,0x73,0x75,0x62,0x40,0x00,0x01,0x09,0x01,0x01,0x00,0x0c,0x32,0x01,0x00,0x00, - 0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x04, - 0x54,0x05,0x03,0x80,0x36,0x07,0x05,0x00,0x27,0x08,0x01,0x00,0x39,0x08,0x07,0x01, - 0x41,0x05,0x03,0x03,0x4e,0x05,0xfb,0x7f,0x48,0x01,0x02,0x00,0x01,0xc0,0x0b,0x69, - 0x70,0x61,0x69,0x72,0x73,0x5a,0x00,0x01,0x05,0x02,0x03,0x00,0x0f,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x02,0x80,0x48,0x00,0x02, - 0x00,0x54,0x01,0x08,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01, - 0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x00,0x3f,0x01,0x01,0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x09,0x62,0x79, - 0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32,0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74, - 0x3d,0x01,0x01,0x05,0x02,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80, - 0x40,0x01,0x04,0x00,0x00,0xc0,0x05,0xc0,0x00,0x14,0x28,0x5b,0x5e,0x41,0x2d,0x5a, - 0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09,0x67,0x73,0x75,0x62,0x39,0x00, - 0x01,0x05,0x02,0x02,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x2b,0x02, - 0x01,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x10,0x00,0x3e,0x02, - 0x03,0x00,0x3f,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x0d,0x74,0x6f,0x6e,0x75,0x6d, - 0x62,0x65,0x72,0x09,0x63,0x68,0x61,0x72,0x36,0x01,0x01,0x05,0x02,0x03,0x00,0x07, - 0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00, - 0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x01,0xc0, - 0x00,0x0d,0x25,0x25,0x28,0x25,0x78,0x25,0x78,0x29,0x09,0x67,0x73,0x75,0x62,0x27, - 0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54,0x01,0x02,0x80,0x48, - 0x00,0x02,0x00,0x54,0x01,0x02,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x47, - 0x00,0x01,0x00,0x05,0x07,0x2e,0x2f,0x2b,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06, - 0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x54, - 0x01,0x01,0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0b,0x2e,0x2e,0x2f, - 0x2e,0x2e,0x2f,0x2a,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54, - 0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x54,0x01,0x01,0x80,0x48, - 0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0a,0x2e,0x2e,0x2f,0x2e,0x2e,0xa7,0x02, - 0x01,0x02,0x08,0x01,0x0c,0x00,0x37,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10, - 0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02,0x07, - 0x02,0x01,0x00,0x54,0x02,0x01,0x80,0x30,0x00,0x2d,0x80,0x2b,0x02,0x00,0x00,0x37, - 0x02,0x02,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x03,0x00,0x25,0x05,0x04,0x00,0x3e, - 0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x10,0x04,0x01,0x00,0x24,0x02,0x04,0x03,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x05,0x00,0x31, - 0x06,0x06,0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x07,0x00,0x25,0x06,0x01,0x00,0x3e, - 0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x29,0x03,0x00,0x00,0x04,0x03,0x02,0x00,0x54, - 0x04,0x0a,0x80,0x51,0x04,0x09,0x80,0x10,0x03,0x02,0x00,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08,0x00,0x31,0x07,0x09,0x00,0x3e, - 0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x54,0x04,0xf4,0x7f,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x0a,0x00,0x31,0x07,0x0b,0x00,0x3e, - 0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x48, - 0x01,0x02,0x00,0x00,0xc0,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f,0x25,0x2e, - 0x25,0x2e,0x29,0x24,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f,0x25,0x2e,0x25, - 0x2e,0x2f,0x29,0x09,0x2f,0x25,0x2e,0x24,0x00,0x0f,0x28,0x5b,0x5e,0x2f,0x5d,0x2a, - 0x25,0x2e,0x2f,0x29,0x05,0x0b,0x5b,0x5e,0x2f,0x5d,0x2a,0x24,0x09,0x67,0x73,0x75, - 0x62,0x06,0x2f,0x08,0x73,0x75,0x62,0x23,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b, - 0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02, - 0xc0,0x05,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x21,0x00,0x01,0x02,0x01, - 0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48, - 0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x24,0x00,0x01, - 0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01, - 0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x20,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00, - 0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0a,0x71,0x75, - 0x65,0x72,0x79,0x21,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a, - 0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x23,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00, - 0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05, - 0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x1f,0x00,0x01,0x02,0x01,0x02,0x00, - 0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x02,0xc0,0x05,0x09,0x70,0x6f,0x72,0x74,0x23,0x00,0x01,0x02,0x01,0x02,0x00, - 0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x02,0xc0,0x05,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x8e,0x04,0x01, - 0x02,0x09,0x02,0x18,0x00,0x5e,0x32,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x00,0x03,0x0c,0x04,0x01,0x00,0x54,0x04,0x01,0x80,0x10,0x04,0x02,0x00,0x3e,0x03, - 0x02,0x04,0x54,0x06,0x01,0x80,0x39,0x07,0x06,0x02,0x41,0x06,0x03,0x03,0x4e,0x06, - 0xfd,0x7f,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x01,0x00,0x54,0x03, - 0x03,0x80,0x29,0x03,0x00,0x00,0x25,0x04,0x02,0x00,0x30,0x00,0x4b,0x80,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x04,0x00,0x31,0x06, - 0x05,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x06,0x00,0x31,0x06,0x07,0x00,0x3e,0x03, - 0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04, - 0x00,0x00,0x25,0x05,0x08,0x00,0x31,0x06,0x09,0x00,0x3e,0x03,0x04,0x02,0x10,0x00, - 0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05, - 0x0a,0x00,0x31,0x06,0x0b,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x0c,0x00,0x31,0x06, - 0x0d,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x06,0x00,0x01,0x00,0x54,0x03, - 0x01,0x80,0x3a,0x00,0x0e,0x02,0x37,0x03,0x0f,0x02,0x0e,0x00,0x03,0x00,0x54,0x04, - 0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x2b,0x04,0x01,0x00,0x37,0x04, - 0x03,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x10,0x00,0x31,0x07,0x11,0x00,0x3e,0x04, - 0x04,0x02,0x10,0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x03,0x04,0x10,0x05, - 0x03,0x00,0x25,0x06,0x12,0x00,0x31,0x07,0x13,0x00,0x3e,0x04,0x04,0x02,0x10,0x03, - 0x04,0x00,0x06,0x03,0x01,0x00,0x54,0x04,0x01,0x80,0x3a,0x03,0x14,0x02,0x37,0x04, - 0x15,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02, - 0x02,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x03,0x05,0x10,0x06,0x04,0x00,0x25,0x07, - 0x12,0x00,0x31,0x08,0x16,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00,0x3a,0x04, - 0x17,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x46,0x03,0x03,0x00,0x01,0xc0, - 0x00,0xc0,0x09,0x75,0x73,0x65,0x72,0x00,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66, - 0x6f,0x09,0x68,0x6f,0x73,0x74,0x00,0x0e,0x3a,0x28,0x5b,0x5e,0x3a,0x5d,0x2a,0x29, - 0x24,0x00,0x0e,0x5e,0x28,0x5b,0x5e,0x40,0x5d,0x2a,0x29,0x40,0x0e,0x61,0x75,0x74, - 0x68,0x6f,0x72,0x69,0x74,0x79,0x09,0x70,0x61,0x74,0x68,0x00,0x0b,0x25,0x3b,0x28, - 0x2e,0x2a,0x29,0x00,0x0b,0x25,0x3f,0x28,0x2e,0x2a,0x29,0x00,0x0f,0x5e,0x2f,0x2f, - 0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x29,0x00,0x19,0x5e,0x28,0x5b,0x25,0x77,0x5d,0x5b, - 0x25,0x77,0x25,0x2b,0x25,0x2d,0x25,0x2e,0x5d,0x2a,0x29,0x25,0x3a,0x00,0x0b,0x23, - 0x28,0x2e,0x2a,0x29,0x24,0x09,0x67,0x73,0x75,0x62,0x10,0x69,0x6e,0x76,0x61,0x6c, - 0x69,0x64,0x20,0x75,0x72,0x6c,0x05,0x0a,0x70,0x61,0x69,0x72,0x73,0xa0,0x03,0x00, - 0x01,0x08,0x00,0x14,0x00,0x4a,0x34,0x01,0x00,0x00,0x37,0x02,0x01,0x00,0x0e,0x00, - 0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02, - 0x03,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x37,0x03,0x04,0x00,0x0f,0x00, - 0x03,0x00,0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x05,0x00,0x37,0x05, - 0x04,0x00,0x24,0x02,0x05,0x03,0x37,0x03,0x06,0x00,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x07,0x00,0x37,0x05,0x06,0x00,0x24,0x02, - 0x05,0x03,0x37,0x03,0x08,0x00,0x37,0x04,0x09,0x00,0x0f,0x00,0x04,0x00,0x54,0x05, - 0x1a,0x80,0x37,0x03,0x09,0x00,0x37,0x04,0x0a,0x00,0x0f,0x00,0x04,0x00,0x54,0x05, - 0x04,0x80,0x10,0x04,0x03,0x00,0x25,0x05,0x0b,0x00,0x37,0x06,0x0a,0x00,0x24,0x03, - 0x06,0x04,0x37,0x04,0x0c,0x00,0x37,0x05,0x0d,0x00,0x0f,0x00,0x05,0x00,0x54,0x06, - 0x08,0x80,0x37,0x04,0x0d,0x00,0x37,0x05,0x0e,0x00,0x0f,0x00,0x05,0x00,0x54,0x06, - 0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06,0x0b,0x00,0x37,0x07,0x0e,0x00,0x24,0x04, - 0x07,0x05,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06, - 0x0f,0x00,0x10,0x07,0x03,0x00,0x24,0x03,0x07,0x05,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x04,0x80,0x25,0x04,0x10,0x00,0x10,0x05,0x03,0x00,0x10,0x06,0x02,0x00,0x24,0x02, - 0x06,0x04,0x37,0x04,0x11,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x37,0x04, - 0x11,0x00,0x25,0x05,0x0b,0x00,0x10,0x06,0x02,0x00,0x24,0x02,0x06,0x04,0x37,0x04, - 0x12,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x04,0x02,0x00,0x25,0x05, - 0x13,0x00,0x37,0x06,0x12,0x00,0x24,0x02,0x06,0x04,0x48,0x02,0x02,0x00,0x06,0x23, - 0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65, - 0x07,0x2f,0x2f,0x06,0x40,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x09,0x75, - 0x73,0x65,0x72,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x06,0x3a,0x09,0x70, - 0x6f,0x72,0x74,0x09,0x68,0x6f,0x73,0x74,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x06,0x3f,0x0a,0x71,0x75,0x65,0x72,0x79,0x06,0x3b,0x0b,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68,0x05,0x09, - 0x70,0x61,0x74,0x68,0x0f,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0xfa, - 0x02,0x00,0x02,0x06,0x02,0x0b,0x00,0x4a,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x06,0x80, - 0x35,0x00,0x02,0x00,0x34,0x02,0x03,0x00,0x34,0x03,0x02,0x00,0x3e,0x02,0x02,0x02, - 0x10,0x00,0x02,0x00,0x54,0x02,0x04,0x80,0x34,0x02,0x04,0x00,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x02,0x35,0x02,0x02,0x00,0x34,0x02,0x04,0x00,0x10,0x03,0x01,0x00, - 0x3e,0x02,0x02,0x02,0x34,0x03,0x02,0x00,0x0e,0x00,0x03,0x00,0x54,0x03,0x02,0x80, - 0x48,0x01,0x02,0x00,0x54,0x03,0x31,0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x02,0x80, - 0x48,0x00,0x02,0x00,0x54,0x03,0x2d,0x80,0x37,0x03,0x05,0x02,0x0f,0x00,0x03,0x00, - 0x54,0x04,0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03,0x28,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x05,0x03,0x3a,0x03,0x05,0x02,0x37,0x03,0x06,0x02,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x1f,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x06,0x03,0x3a,0x03,0x06,0x02, - 0x37,0x03,0x07,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x10,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x07,0x03,0x3a,0x03,0x07,0x02,0x37,0x03,0x08,0x02,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x13,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x08,0x03,0x3a,0x03,0x08,0x02, - 0x37,0x03,0x09,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x0d,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x09,0x03,0x3a,0x03,0x09,0x02,0x54,0x03,0x09,0x80,0x2b,0x03,0x01,0x00, - 0x34,0x04,0x02,0x00,0x37,0x04,0x07,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x01,0x80, - 0x25,0x04,0x0a,0x00,0x37,0x05,0x07,0x02,0x3e,0x03,0x03,0x02,0x3a,0x03,0x07,0x02, - 0x34,0x03,0x03,0x00,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x47,0x00,0x01,0x00, - 0x01,0xc0,0x07,0xc0,0x05,0x0a,0x71,0x75,0x65,0x72,0x79,0x0b,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x09,0x70,0x61,0x74,0x68,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74, - 0x79,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0a,0x62, - 0x75,0x69,0x6c,0x64,0x10,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64, - 0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x2a,0x00,0x01,0x04,0x02, - 0x01,0x00,0x06,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x01,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0x00,0x01,0xc0,0x0b, - 0x69,0x6e,0x73,0x65,0x72,0x74,0xe6,0x01,0x01,0x01,0x08,0x02,0x09,0x00,0x29,0x32, - 0x01,0x00,0x00,0x0e,0x00,0x00,0x00,0x54,0x02,0x01,0x80,0x25,0x00,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x02,0x00,0x31, - 0x05,0x03,0x00,0x3e,0x02,0x04,0x01,0x27,0x02,0x01,0x00,0x13,0x03,0x01,0x00,0x27, - 0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x04,0x00,0x36,0x07,0x05,0x01,0x3e, - 0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x2b,0x02,0x00,0x00,0x37, - 0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e, - 0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a, - 0x02,0x07,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27, - 0x04,0xff,0xff,0x27,0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54, - 0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a,0x02,0x08,0x01,0x30,0x00,0x00,0x80,0x48, - 0x01,0x02,0x00,0x00,0xc0,0x02,0xc0,0x11,0x69,0x73,0x5f,0x64,0x69,0x72,0x65,0x63, - 0x74,0x6f,0x72,0x79,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65, - 0x06,0x2f,0x08,0x73,0x75,0x62,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x00, - 0x0c,0x28,0x5b,0x5e,0x2f,0x5d,0x2b,0x29,0x09,0x67,0x73,0x75,0x62,0x05,0x9e,0x02, - 0x00,0x02,0x0b,0x01,0x04,0x01,0x3e,0x25,0x02,0x00,0x00,0x13,0x03,0x00,0x00,0x0f, - 0x00,0x01,0x00,0x54,0x04,0x18,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00,0x03,0x27, - 0x06,0x01,0x00,0x49,0x04,0x07,0x80,0x10,0x08,0x02,0x00,0x36,0x09,0x07,0x00,0x24, - 0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25,0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b, - 0x04,0xf9,0x7f,0x27,0x04,0x00,0x00,0x01,0x04,0x03,0x00,0x54,0x04,0x25,0x80,0x10, - 0x04,0x02,0x00,0x36,0x05,0x03,0x00,0x24,0x02,0x05,0x04,0x37,0x04,0x02,0x00,0x0f, - 0x00,0x04,0x00,0x54,0x05,0x1f,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01,0x00,0x24, - 0x02,0x05,0x04,0x54,0x04,0x1b,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00,0x03,0x27, - 0x06,0x01,0x00,0x49,0x04,0x09,0x80,0x10,0x08,0x02,0x00,0x2b,0x09,0x00,0x00,0x36, - 0x0a,0x07,0x00,0x3e,0x09,0x02,0x02,0x24,0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25, - 0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b,0x04,0xf7,0x7f,0x27,0x04,0x00,0x00,0x01, - 0x04,0x03,0x00,0x54,0x04,0x0b,0x80,0x10,0x04,0x02,0x00,0x2b,0x05,0x00,0x00,0x36, - 0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x24,0x02,0x05,0x04,0x37,0x04,0x02,0x00,0x0f, - 0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01,0x00,0x24, - 0x02,0x05,0x04,0x37,0x04,0x03,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x25, - 0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x24,0x02,0x05,0x04,0x48,0x02,0x02,0x00,0x06, - 0xc0,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x11,0x69,0x73, - 0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x06,0x2f,0x05,0x02,0xbf,0x02, - 0x03,0x00,0x09,0x00,0x19,0x00,0x27,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e, - 0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e, - 0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x0f,0x00,0x04,0x00,0x54, - 0x05,0x04,0x80,0x34,0x04,0x04,0x00,0x27,0x05,0x01,0x00,0x10,0x06,0x03,0x00,0x3e, - 0x04,0x03,0x01,0x25,0x04,0x05,0x00,0x35,0x04,0x06,0x00,0x31,0x04,0x07,0x00,0x35, - 0x04,0x08,0x00,0x31,0x04,0x09,0x00,0x10,0x05,0x04,0x00,0x33,0x06,0x0a,0x00,0x3e, - 0x05,0x02,0x02,0x31,0x06,0x0b,0x00,0x31,0x07,0x0c,0x00,0x35,0x07,0x0d,0x00,0x31, - 0x07,0x0e,0x00,0x31,0x08,0x0f,0x00,0x35,0x08,0x10,0x00,0x31,0x08,0x11,0x00,0x35, - 0x08,0x12,0x00,0x31,0x08,0x13,0x00,0x35,0x08,0x14,0x00,0x31,0x08,0x15,0x00,0x35, - 0x08,0x16,0x00,0x31,0x08,0x17,0x00,0x35,0x08,0x18,0x00,0x30,0x00,0x00,0x80,0x48, - 0x03,0x02,0x00,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68,0x00,0x0f, - 0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x00,0x0d,0x61,0x62,0x73,0x6f, - 0x6c,0x75,0x74,0x65,0x00,0x0a,0x62,0x75,0x69,0x6c,0x64,0x00,0x0a,0x70,0x61,0x72, - 0x73,0x65,0x00,0x00,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x00,0x00,0x01, - 0x11,0x00,0x00,0x06,0x2d,0x06,0x5f,0x06,0x2e,0x06,0x21,0x06,0x7e,0x06,0x2a,0x06, - 0x27,0x06,0x28,0x06,0x29,0x06,0x3a,0x06,0x40,0x06,0x26,0x06,0x3d,0x06,0x2b,0x06, - 0x24,0x06,0x2c,0x00,0x0b,0x65,0x73,0x63,0x61,0x70,0x65,0x00,0x0d,0x5f,0x56,0x45, - 0x52,0x53,0x49,0x4f,0x4e,0x0e,0x55,0x52,0x4c,0x20,0x31,0x2e,0x30,0x2e,0x31,0x0c, - 0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x5f,0x47, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x1d, - 0x00,0x02,0x06,0x01,0x00,0x00,0x05,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x27, - 0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x40,0x02,0x04,0x00,0x14,0xc0,0x3d,0x00,0x01, - 0x03,0x00,0x04,0x00,0x08,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x37,0x01,0x02, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x34,0x01,0x00,0x00,0x37,0x01,0x03, - 0x01,0x48,0x01,0x02,0x00,0x0b,0x73,0x74,0x64,0x6f,0x75,0x74,0x0b,0x6f,0x75,0x74, - 0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0b,0x00,0x00,0x01,0x00, - 0x00,0x00,0x01,0x47,0x00,0x01,0x00,0x8b,0x02,0x02,0x01,0x08,0x02,0x10,0x01,0x28, - 0x32,0x01,0x03,0x00,0x43,0x02,0x01,0x00,0x3c,0x02,0x00,0x00,0x27,0x02,0x01,0x00, - 0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x43,0x05,0x01,0x00,0x3d,0x03,0x01,0x02, - 0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x02,0x00,0x36,0x07,0x05,0x01, - 0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x34,0x02,0x03,0x00, - 0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x10,0x03,0x02,0x00, - 0x37,0x02,0x05,0x02,0x25,0x04,0x06,0x00,0x25,0x05,0x07,0x00,0x3e,0x02,0x04,0x02, - 0x10,0x01,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x08,0x02,0x37,0x03,0x09,0x00, - 0x33,0x04,0x0a,0x00,0x33,0x05,0x0c,0x00,0x37,0x06,0x0b,0x00,0x3a,0x06,0x0d,0x05, - 0x3a,0x05,0x0e,0x04,0x2b,0x05,0x01,0x00,0x37,0x05,0x0f,0x05,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x00,0x3c,0x05,0x00,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00, - 0x05,0xc0,0x03,0xc0,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72,0x09,0x74,0x79, - 0x70,0x65,0x01,0x00,0x00,0x09,0x6d,0x6f,0x64,0x65,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0b,0x73,0x74,0x72,0x65,0x61,0x6d,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e, - 0x64,0x5f,0x78,0x6d,0x6c,0x07,0x0d,0x0a,0x06,0x0a,0x09,0x67,0x73,0x75,0x62,0x0b, - 0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x06,0x23,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x03,0x80, - 0x80,0xc0,0x99,0x04,0x68,0x02,0x01,0x04,0x01,0x05,0x00,0x0f,0x2b,0x01,0x00,0x00, - 0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x43,0x03,0x01,0x00, - 0x3d,0x01,0x01,0x01,0x34,0x01,0x02,0x00,0x37,0x01,0x03,0x01,0x37,0x02,0x04,0x00, - 0x36,0x01,0x02,0x01,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00, - 0x3d,0x01,0x01,0x01,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0x6d,0x6f,0x64,0x65,0x09, - 0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0a,0x77,0x72,0x69,0x74,0x65,0x14,0x72,0x65, - 0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x25,0x02,0x01, - 0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01, - 0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a,0x66,0x6c,0x75,0x73,0x68,0x08, - 0x6f,0x75,0x74,0x25,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10, - 0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x08,0x6f,0x75,0x74,0x27,0x02,0x01,0x04,0x00,0x02,0x00, - 0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01, - 0x00,0x3f,0x01,0x01,0x00,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x08,0x6f,0x75, - 0x74,0x24,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01, - 0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x09,0x73,0x65, - 0x65,0x6b,0x08,0x6f,0x75,0x74,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06,0x02,0x01, - 0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02, - 0x02,0x00,0x48,0x02,0x02,0x00,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06,0x04,0x00, - 0x01,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02, - 0x02,0x00,0x48,0x02,0x02,0x00,0x24,0x00,0x02,0x03,0x00,0x00,0x01,0x07,0x22,0x02, - 0x01,0x00,0x08,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03, - 0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x00,0x42,0x00,0x01,0x03,0x01, - 0x00,0x01,0x0e,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0b,0x01,0x00,0x00,0x54, - 0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x27,0x02,0x01,0x00,0x39,0x02,0x00,0x01,0x54, - 0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x36,0x02,0x00,0x02,0x14, - 0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x1b,0xc0,0x02,0x56,0x00, - 0x01,0x03,0x01,0x00,0x01,0x13,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0e,0x00, - 0x01,0x00,0x54,0x01,0x0b,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x27,0x02, - 0x01,0x00,0x01,0x02,0x01,0x00,0x54,0x01,0x06,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02, - 0x00,0x00,0x36,0x02,0x00,0x02,0x15,0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x54,0x01, - 0x03,0x80,0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x47,0x00, - 0x01,0x00,0x1b,0xc0,0x02,0x15,0x00,0x01,0x02,0x01,0x00,0x00,0x03,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x48,0x01,0x02,0x00,0x1b,0xc0,0xe4,0x01,0x00,0x02,0x0d, - 0x03,0x06,0x00,0x2c,0x37,0x02,0x00,0x01,0x10,0x03,0x00,0x00,0x2b,0x04,0x00,0x00, - 0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x00,0x00, - 0x48,0x05,0x02,0x00,0x36,0x05,0x03,0x04,0x0e,0x00,0x05,0x00,0x54,0x06,0x02,0x80, - 0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x00,0x00, - 0x3e,0x06,0x02,0x01,0x27,0x06,0x01,0x00,0x13,0x07,0x05,0x00,0x27,0x08,0x01,0x00, - 0x49,0x06,0x0c,0x80,0x36,0x0a,0x09,0x05,0x37,0x0a,0x01,0x0a,0x37,0x0b,0x01,0x01, - 0x05,0x0a,0x0b,0x00,0x54,0x0a,0x06,0x80,0x34,0x0a,0x02,0x00,0x37,0x0a,0x03,0x0a, - 0x10,0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x01,0x54,0x06,0x01,0x80, - 0x4b,0x06,0xf4,0x7f,0x32,0x05,0x00,0x00,0x2b,0x06,0x02,0x00,0x37,0x07,0x04,0x01, - 0x3e,0x06,0x02,0x01,0x34,0x06,0x02,0x00,0x37,0x06,0x05,0x06,0x10,0x07,0x05,0x00, - 0x10,0x08,0x01,0x00,0x3e,0x06,0x03,0x01,0x37,0x06,0x04,0x01,0x39,0x05,0x06,0x04, - 0x47,0x00,0x01,0x00,0x16,0xc0,0x1d,0xc0,0x1c,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72, - 0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a, - 0x74,0x61,0x62,0x6c,0x65,0x07,0x69,0x64,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, - 0x65,0xa0,0x02,0x00,0x01,0x08,0x06,0x0b,0x01,0x2f,0x2b,0x01,0x00,0x00,0x14,0x02, - 0x00,0x01,0x2c,0x00,0x02,0x00,0x3a,0x01,0x00,0x00,0x2b,0x02,0x01,0x00,0x37,0x02, - 0x01,0x02,0x37,0x03,0x02,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x03,0x03,0x33,0x04,0x05,0x00,0x37,0x05,0x04,0x02,0x3a,0x05,0x04,0x04,0x2b,0x05, - 0x02,0x00,0x37,0x05,0x06,0x05,0x37,0x06,0x07,0x02,0x3e,0x05,0x02,0x02,0x3a,0x05, - 0x07,0x04,0x3e,0x03,0x02,0x02,0x3a,0x03,0x02,0x00,0x2b,0x03,0x03,0x00,0x37,0x04, - 0x02,0x00,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x32,0x03, - 0x00,0x00,0x2b,0x04,0x03,0x00,0x37,0x05,0x02,0x00,0x39,0x03,0x05,0x04,0x37,0x04, - 0x08,0x00,0x36,0x04,0x04,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x32,0x04, - 0x00,0x00,0x37,0x05,0x08,0x00,0x39,0x04,0x05,0x03,0x2b,0x05,0x04,0x00,0x37,0x06, - 0x08,0x00,0x3e,0x05,0x02,0x01,0x34,0x05,0x09,0x00,0x37,0x05,0x0a,0x05,0x10,0x06, - 0x04,0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x01,0x2b,0x05,0x05,0x00,0x39,0x00, - 0x01,0x05,0x48,0x01,0x02,0x00,0x1a,0x80,0x08,0xc0,0x04,0xc0,0x16,0xc0,0x1c,0xc0, - 0x17,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b, - 0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x70,0x61,0x74,0x68,0x0e,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x01,0x00,0x01,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x62,0x75,0x69,0x6c,0x64, - 0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x07, - 0x69,0x64,0x02,0x91,0x05,0x00,0x02,0x14,0x06,0x17,0x01,0x69,0x10,0x03,0x00,0x00, - 0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x13,0x04,0x04,0x00,0x14,0x04,0x00,0x04, - 0x3e,0x02,0x03,0x02,0x34,0x03,0x02,0x00,0x2b,0x04,0x00,0x00,0x3e,0x03,0x02,0x04, - 0x44,0x06,0x0c,0x80,0x10,0x09,0x06,0x00,0x37,0x08,0x03,0x06,0x10,0x0a,0x02,0x00, - 0x3e,0x08,0x03,0x03,0x35,0x09,0x04,0x00,0x35,0x08,0x05,0x00,0x34,0x08,0x04,0x00, - 0x13,0x09,0x06,0x00,0x05,0x08,0x09,0x00,0x54,0x08,0x02,0x80,0x10,0x00,0x06,0x00, - 0x54,0x03,0x02,0x80,0x42,0x06,0x03,0x03,0x4e,0x06,0xf2,0x7f,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x00,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x03,0x80,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x00,0x03,0x36,0x03,0x01,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x02,0x80, - 0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x29,0x04,0x01,0x00,0x34,0x05,0x02,0x00, - 0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x04,0x44,0x08,0x3e,0x80,0x37,0x0a,0x06,0x09, - 0x07,0x0a,0x07,0x00,0x54,0x0a,0x3b,0x80,0x29,0x0a,0x02,0x00,0x37,0x0b,0x08,0x09, - 0x0f,0x00,0x0b,0x00,0x54,0x0c,0x1f,0x80,0x2b,0x0b,0x01,0x00,0x37,0x0b,0x09,0x0b, - 0x10,0x0c,0x0b,0x00,0x37,0x0b,0x0a,0x0b,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x0b,0x0d, - 0x27,0x0e,0x00,0x00,0x3e,0x0b,0x04,0x02,0x2b,0x0c,0x03,0x00,0x37,0x0d,0x08,0x09, - 0x10,0x0e,0x0b,0x00,0x3e,0x0c,0x03,0x01,0x34,0x0c,0x0c,0x00,0x37,0x0d,0x08,0x09, - 0x3e,0x0c,0x02,0x03,0x0e,0x00,0x0c,0x00,0x54,0x0e,0x07,0x80,0x2b,0x0e,0x04,0x00, - 0x25,0x0f,0x0d,0x00,0x25,0x10,0x0e,0x00,0x10,0x11,0x00,0x00,0x10,0x12,0x01,0x00, - 0x10,0x13,0x0d,0x00,0x3e,0x0e,0x06,0x01,0x0f,0x00,0x0c,0x00,0x54,0x0e,0x04,0x80, - 0x10,0x0a,0x0d,0x00,0x54,0x0e,0x03,0x80,0x29,0x0a,0x01,0x00,0x54,0x0e,0x01,0x80, - 0x29,0x0a,0x02,0x00,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x16,0x80,0x37,0x0b,0x0f,0x09, - 0x14,0x0b,0x00,0x0b,0x3a,0x0b,0x0f,0x09,0x2b,0x0b,0x05,0x00,0x37,0x0b,0x10,0x0b, - 0x37,0x0b,0x11,0x0b,0x37,0x0c,0x12,0x09,0x36,0x0b,0x0c,0x0b,0x37,0x0c,0x0f,0x09, - 0x37,0x0d,0x13,0x09,0x3e,0x0b,0x03,0x02,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x09,0x80, - 0x37,0x0b,0x14,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x05,0x80,0x2b,0x0b,0x05,0x00, - 0x37,0x0b,0x10,0x0b,0x37,0x0b,0x15,0x0b,0x37,0x0c,0x16,0x09,0x3e,0x0b,0x02,0x01, - 0x29,0x04,0x02,0x00,0x42,0x08,0x03,0x03,0x4e,0x08,0xc0,0x7f,0x48,0x04,0x02,0x00, - 0x16,0xc0,0x07,0xc0,0x12,0x80,0x13,0x80,0x09,0xc0,0x02,0xc0,0x07,0x69,0x64,0x0b, - 0x72,0x65,0x6d,0x6f,0x76,0x65,0x0e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x79, - 0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x12,0x68,0x69,0x74,0x5f,0x63, - 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x13,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e, - 0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x73,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3c,0x43,0x6f, - 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x20,0x66,0x6f,0x72,0x20,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x61,0x74,0x20,0x25,0x73,0x3a,0x25, - 0x64,0x3a,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f,0x52,0x0a,0x70,0x63,0x61,0x6c, - 0x6c,0x09,0x63,0x6f,0x72,0x6f,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0c,0x65,0x6e,0x61, - 0x62,0x6c,0x65,0x64,0x0a,0x73,0x74,0x61,0x74,0x65,0x06,0x69,0x06,0x6a,0x09,0x66, - 0x69,0x6e,0x64,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c,0x66,0x69,0x6c,0x65,0x3a,0x2f, - 0x2f,0x08,0x73,0x75,0x62,0x02,0x2d,0x00,0x01,0x02,0x01,0x00,0x00,0x09,0x0f,0x00, - 0x00,0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x48,0x01, - 0x02,0x00,0x54,0x01,0x02,0x80,0x2b,0x01,0x00,0x00,0x48,0x01,0x02,0x00,0x47,0x00, - 0x01,0x00,0x17,0xc0,0x8b,0x02,0x00,0x01,0x0a,0x03,0x05,0x00,0x37,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x31,0x80,0x2b,0x02,0x00, - 0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b,0x02,0x01,0x00,0x37,0x03,0x00, - 0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x27,0x03,0x01, - 0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x01,0x00,0x49,0x03,0x0a,0x80,0x36,0x07,0x06, - 0x02,0x05,0x07,0x01,0x00,0x54,0x07,0x06,0x80,0x34,0x07,0x02,0x00,0x37,0x07,0x03, - 0x07,0x10,0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x54,0x03,0x01, - 0x80,0x4b,0x03,0xf6,0x7f,0x2b,0x03,0x02,0x00,0x37,0x04,0x01,0x01,0x3e,0x03,0x02, - 0x01,0x34,0x03,0x04,0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x0e,0x00,0x03, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x36,0x03,0x04, - 0x03,0x37,0x04,0x01,0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x34,0x03,0x04, - 0x00,0x2b,0x04,0x01,0x00,0x37,0x05,0x00,0x01,0x36,0x04,0x05,0x04,0x3e,0x03,0x02, - 0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x01,0x00,0x37,0x04,0x00, - 0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x29,0x03,0x02,0x00,0x48,0x03,0x02, - 0x00,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x17,0xc0,0x16,0xc0,0x1d,0xc0,0x09, - 0x6e,0x65,0x78,0x74,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74,0x61,0x62,0x6c, - 0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, - 0x65,0x91,0x02,0x00,0x01,0x09,0x01,0x09,0x00,0x27,0x2b,0x01,0x00,0x00,0x36,0x01, - 0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x02,0x07,0x80,0x29,0x02,0x00,0x00,0x25,0x03, - 0x00,0x00,0x34,0x04,0x01,0x00,0x10,0x05,0x00,0x00,0x3e,0x04,0x02,0x02,0x24,0x03, - 0x04,0x03,0x46,0x02,0x03,0x00,0x33,0x02,0x02,0x00,0x32,0x03,0x00,0x00,0x3a,0x03, - 0x03,0x02,0x34,0x03,0x04,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x04,0x44,0x06, - 0x02,0x80,0x37,0x08,0x03,0x02,0x39,0x07,0x06,0x08,0x42,0x06,0x03,0x03,0x4e,0x06, - 0xfc,0x7f,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x33,0x03, - 0x06,0x00,0x37,0x04,0x05,0x01,0x3b,0x04,0x01,0x03,0x3b,0x03,0x01,0x02,0x37,0x03, - 0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x37,0x03,0x03,0x02,0x29,0x04, - 0x00,0x00,0x3a,0x04,0x07,0x03,0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04, - 0x08,0x03,0x48,0x02,0x02,0x00,0x17,0xc0,0x0e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61, - 0x72,0x79,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0f,0x65, - 0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0a,0x70,0x61,0x69,0x72,0x73,0x09, - 0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0f,0x62,0x72,0x65,0x61, - 0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19, - 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x3a,0x20,0xae,0x01,0x00,0x01,0x08,0x05,0x05,0x00,0x19,0x2b,0x01,0x00, - 0x00,0x37,0x01,0x00,0x01,0x38,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x25,0x03,0x01, - 0x00,0x25,0x04,0x02,0x00,0x10,0x05,0x00,0x00,0x34,0x06,0x03,0x00,0x10,0x07,0x01, - 0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x02,0x00,0x36,0x07,0x01,0x07,0x3e,0x02,0x06, - 0x01,0x07,0x00,0x04,0x00,0x54,0x02,0x02,0x80,0x2f,0x03,0x02,0x00,0x54,0x02,0x07, - 0x80,0x2b,0x02,0x04,0x00,0x32,0x03,0x03,0x00,0x3b,0x00,0x01,0x03,0x2b,0x04,0x02, - 0x00,0x36,0x04,0x01,0x04,0x3b,0x04,0x02,0x03,0x39,0x03,0x01,0x02,0x47,0x00,0x01, - 0x00,0x12,0x80,0x09,0xc0,0x15,0xc0,0x19,0x80,0x18,0xc0,0x09,0x69,0x6e,0x74,0x6f, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x24,0x52,0x65,0x67,0x69,0x73,0x74, - 0x65,0x72,0x65,0x64,0x20,0x25,0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x66,0x6f, - 0x72,0x20,0x25,0x73,0x20,0x28,0x25,0x64,0x29,0x0a,0x44,0x45,0x42,0x55,0x47,0x09, - 0x63,0x6f,0x72,0x6f,0xf8,0x01,0x00,0x01,0x0a,0x06,0x07,0x00,0x2a,0x2b,0x01,0x00, - 0x00,0x0f,0x00,0x01,0x00,0x54,0x02,0x06,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x00, - 0x01,0x04,0x01,0x00,0x00,0x54,0x01,0x02,0x80,0x29,0x01,0x02,0x00,0x48,0x01,0x02, - 0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x01,0x01,0x38,0x01,0x01,0x01,0x2b,0x02,0x03, - 0x00,0x36,0x02,0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x18,0x80,0x34,0x03,0x02, - 0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x2b,0x05,0x04,0x00,0x36,0x05,0x01, - 0x05,0x07,0x03,0x03,0x00,0x54,0x06,0x06,0x80,0x03,0x05,0x04,0x00,0x54,0x06,0x04, - 0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06,0x05,0x06,0x00,0x00,0x54,0x06,0x04, - 0x80,0x07,0x03,0x04,0x00,0x54,0x06,0x09,0x80,0x01,0x05,0x04,0x00,0x54,0x06,0x07, - 0x80,0x2b,0x06,0x05,0x00,0x25,0x07,0x05,0x00,0x25,0x08,0x06,0x00,0x10,0x09,0x03, - 0x00,0x3e,0x06,0x04,0x01,0x29,0x06,0x02,0x00,0x48,0x06,0x02,0x00,0x29,0x03,0x01, - 0x00,0x48,0x03,0x02,0x00,0x19,0x80,0x02,0xc0,0x12,0x80,0x18,0xc0,0x15,0xc0,0x09, - 0xc0,0x16,0x45,0x76,0x65,0x6e,0x74,0x20,0x25,0x73,0x20,0x6d,0x61,0x74,0x63,0x68, - 0x65,0x64,0x21,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6f,0x75,0x74,0x09,0x6f,0x76, - 0x65,0x72,0x0b,0x75,0x6e,0x70,0x61,0x63,0x6b,0x09,0x63,0x6f,0x72,0x6f,0x14,0x70, - 0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x32,0x00, - 0x00,0x03,0x03,0x01,0x00,0x08,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x37,0x01, - 0x00,0x01,0x38,0x01,0x01,0x01,0x29,0x02,0x00,0x00,0x39,0x02,0x01,0x00,0x2f,0x02, - 0x00,0x00,0x47,0x00,0x01,0x00,0x18,0xc0,0x12,0x80,0x19,0x80,0x09,0x63,0x6f,0x72, - 0x6f,0x9b,0x01,0x00,0x02,0x06,0x01,0x09,0x00,0x12,0x37,0x02,0x00,0x00,0x37,0x03, - 0x02,0x00,0x3a,0x03,0x01,0x02,0x37,0x02,0x00,0x00,0x0c,0x03,0x01,0x00,0x54,0x03, - 0x01,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x05,0x02,0x37,0x03,0x06,0x00,0x33,0x04,0x07,0x00,0x37,0x05,0x00,0x00,0x3a,0x05, - 0x08,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x00,0x00,0x3a,0x02,0x00,0x00,0x47,0x00, - 0x01,0x00,0x05,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x6f,0x6b,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x15,0x70,0x72, - 0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0xcf,0x01, - 0x00,0x00,0x07,0x04,0x08,0x00,0x1e,0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x3a,0x03,0x02,0x01,0x3a,0x02,0x01,0x00,0x34, - 0x00,0x03,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x37,0x01,0x05,0x01,0x3e, - 0x00,0x02,0x04,0x44,0x03,0x04,0x80,0x2b,0x05,0x03,0x00,0x37,0x05,0x06,0x05,0x10, - 0x06,0x04,0x00,0x3e,0x05,0x02,0x01,0x42,0x03,0x03,0x03,0x4e,0x03,0xfa,0x7f,0x2b, - 0x00,0x03,0x00,0x37,0x00,0x06,0x00,0x3e,0x00,0x01,0x01,0x2b,0x00,0x02,0x00,0x37, - 0x00,0x04,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x32,0x02,0x00,0x00,0x32, - 0x03,0x00,0x00,0x3a,0x03,0x07,0x01,0x3a,0x02,0x05,0x00,0x47,0x00,0x01,0x00,0x0e, - 0xc0,0x0c,0xc0,0x02,0xc0,0x01,0xc0,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, - 0x6f,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, - 0x64,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, - 0x6e,0x65,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x77,0x72,0x61,0x70,0x0b,0x72, - 0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x23, - 0x00,0x00,0x04,0x04,0x00,0x00,0x05,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b, - 0x02,0x02,0x00,0x2b,0x03,0x03,0x00,0x40,0x00,0x04,0x00,0x07,0xc0,0x00,0xc0,0x05, - 0xc0,0x06,0xc0,0xb7,0x08,0x01,0x02,0x14,0x07,0x26,0x01,0xa5,0x01,0x37,0x02,0x00, - 0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x29,0x04,0x00,0x00,0x3e,0x02,0x03, - 0x01,0x0b,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01, - 0x80,0x29,0x02,0x02,0x00,0x37,0x03,0x02,0x00,0x0f,0x00,0x03,0x00,0x54,0x04,0x08, - 0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03, - 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x01,0x2b,0x03,0x01,0x00,0x37,0x03,0x07,0x03,0x37,0x04,0x08,0x00,0x3e,0x03,0x02, - 0x02,0x3a,0x03,0x06,0x00,0x51,0x03,0x7f,0x80,0x0c,0x03,0x01,0x00,0x54,0x03,0x04, - 0x80,0x2b,0x03,0x02,0x00,0x37,0x03,0x09,0x03,0x37,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x02,0x0e,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x2b,0x04,0x03,0x00,0x25,0x05,0x0a, - 0x00,0x25,0x06,0x0b,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x04,0x00,0x3e,0x04,0x01, - 0x01,0x30,0x03,0x70,0x80,0x29,0x01,0x00,0x00,0x2b,0x04,0x03,0x00,0x25,0x05,0x0c, - 0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x02,0x00,0x37,0x04,0x0d, - 0x04,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x04,0x2b,0x07,0x05,0x00,0x36,0x07,0x04, - 0x07,0x0f,0x00,0x07,0x00,0x54,0x08,0x4e,0x80,0x34,0x08,0x0e,0x00,0x31,0x09,0x0f, - 0x00,0x2b,0x0a,0x06,0x00,0x37,0x0a,0x10,0x0a,0x3e,0x08,0x03,0x03,0x0e,0x00,0x08, - 0x00,0x54,0x0a,0x34,0x80,0x2a,0x0a,0x0c,0x00,0x34,0x0d,0x11,0x00,0x10,0x0e,0x09, - 0x00,0x3e,0x0d,0x02,0x02,0x07,0x0d,0x12,0x00,0x54,0x0d,0x0d,0x80,0x34,0x0d,0x13, - 0x00,0x10,0x0e,0x09,0x00,0x3e,0x0d,0x02,0x02,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x14, - 0x0e,0x05,0x0d,0x0e,0x00,0x54,0x0d,0x06,0x80,0x37,0x0d,0x15,0x09,0x37,0x0e,0x16, - 0x09,0x37,0x0c,0x17,0x09,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x54,0x0d,0x07, - 0x80,0x27,0x0d,0xe6,0x03,0x34,0x0e,0x18,0x00,0x10,0x0f,0x09,0x00,0x3e,0x0e,0x02, - 0x02,0x32,0x0c,0x00,0x00,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x2b,0x0d,0x03, - 0x00,0x25,0x0e,0x19,0x00,0x25,0x0f,0x1a,0x00,0x10,0x10,0x04,0x00,0x10,0x11,0x0a, - 0x00,0x34,0x12,0x18,0x00,0x10,0x13,0x0b,0x00,0x3e,0x12,0x02,0x00,0x3d,0x0d,0x04, - 0x01,0x10,0x0d,0x04,0x00,0x37,0x0e,0x1d,0x05,0x3a,0x0e,0x1c,0x0c,0x3a,0x0d,0x1b, - 0x0c,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1e,0x0d,0x37,0x0e,0x00,0x00,0x33,0x0f,0x1f, - 0x00,0x3a,0x0c,0x17,0x0f,0x2b,0x10,0x02,0x00,0x37,0x10,0x20,0x10,0x10,0x11,0x0a, - 0x00,0x10,0x12,0x0b,0x00,0x3e,0x10,0x03,0x00,0x3c,0x10,0x00,0x00,0x3e,0x0d,0x03, - 0x01,0x54,0x0a,0x27,0x80,0x0f,0x00,0x09,0x00,0x54,0x0a,0x07,0x80,0x33,0x0a,0x21, - 0x00,0x3a,0x04,0x1b,0x0a,0x37,0x0b,0x1d,0x05,0x3a,0x0b,0x1c,0x0a,0x3a,0x0a,0x02, - 0x00,0x30,0x03,0x20,0x80,0x54,0x0a,0x1e,0x80,0x0b,0x09,0x00,0x00,0x54,0x0a,0x04, - 0x80,0x0f,0x00,0x02,0x00,0x54,0x0a,0x02,0x80,0x30,0x03,0x1a,0x80,0x54,0x0a,0x18, - 0x80,0x0b,0x09,0x01,0x00,0x54,0x0a,0x16,0x80,0x29,0x02,0x01,0x00,0x54,0x08,0x14, - 0x80,0x2b,0x08,0x03,0x00,0x25,0x09,0x22,0x00,0x10,0x0a,0x04,0x00,0x24,0x09,0x0a, - 0x09,0x3e,0x08,0x02,0x01,0x2b,0x08,0x02,0x00,0x37,0x08,0x1e,0x08,0x37,0x09,0x00, - 0x00,0x33,0x0a,0x23,0x00,0x33,0x0b,0x24,0x00,0x3a,0x04,0x1b,0x0b,0x37,0x0c,0x1d, - 0x05,0x3a,0x0c,0x1c,0x0b,0x3a,0x0b,0x17,0x0a,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x20, - 0x0b,0x27,0x0c,0x04,0x00,0x3e,0x0b,0x02,0x00,0x3c,0x0b,0x00,0x00,0x3e,0x08,0x03, - 0x01,0x30,0x03,0x80,0x7f,0x29,0x03,0x00,0x00,0x3a,0x03,0x06,0x00,0x25,0x03,0x25, - 0x00,0x3a,0x03,0x03,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x03,0x00,0x37,0x03,0x01, - 0x03,0x27,0x05,0x00,0x00,0x3e,0x03,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01, - 0x00,0x02,0xc0,0x07,0xc0,0x05,0xc0,0x09,0xc0,0x16,0xc0,0x06,0xc0,0x01,0xc0,0x0c, - 0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x1a,0x47,0x6f,0x74,0x20,0x75, - 0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x3a,0x20, - 0x01,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x69,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, - 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x1f,0x43,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x25,0x73,0x20,0x63,0x61,0x75,0x73, - 0x65,0x64,0x3a,0x20,0x28,0x25,0x64,0x29,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f, - 0x52,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x17,0x44,0x42,0x47, - 0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x11, - 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x0e,0x74,0x72,0x61,0x63,0x65,0x62,0x61,0x63, - 0x6b,0x00,0x0b,0x78,0x70,0x63,0x61,0x6c,0x6c,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61, - 0x72,0x73,0x65,0x0a,0x44,0x45,0x42,0x55,0x47,0x1d,0x6c,0x6f,0x73,0x74,0x20,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x10,0x72,0x65,0x61,0x64,0x5f, - 0x70,0x61,0x63,0x6b,0x65,0x74,0x09,0x63,0x6f,0x72,0x6f,0x13,0x43,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x0a,0x73,0x74,0x61,0x63,0x6b, - 0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, - 0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62,0x72,0x65,0x61,0x6b, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x15,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f, - 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f, - 0x75,0x74,0x08,0x73,0x6b,0x74,0x03,0x80,0x80,0xc0,0x99,0x04,0xf5,0x03,0x00,0x01, - 0x09,0x08,0x11,0x00,0x53,0x2a,0x01,0x02,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x00, - 0x03,0x04,0x03,0x00,0x00,0x54,0x03,0x21,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01, - 0x03,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x0a,0x03,0x00, - 0x00,0x54,0x03,0x1a,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x03, - 0x00,0x37,0x03,0x04,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x05,0x00,0x3e,0x03,0x04, - 0x02,0x2b,0x04,0x02,0x00,0x37,0x04,0x06,0x04,0x37,0x05,0x07,0x03,0x3e,0x04,0x02, - 0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x2b,0x05,0x03,0x00,0x04,0x04,0x05, - 0x00,0x54,0x05,0x0a,0x80,0x2b,0x05,0x04,0x00,0x04,0x04,0x05,0x00,0x54,0x05,0x07, - 0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x01,0x05,0x37,0x05,0x08,0x05,0x10,0x06,0x04, - 0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x02,0x10,0x01,0x05,0x00,0x0e,0x00,0x01, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x09,0x03,0x37,0x03,0x0a, - 0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10,0x01,0x03,0x00,0x0f,0x00,0x01, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x3a,0x00,0x00,0x03,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x09,0x03,0x37,0x03,0x0b,0x03,0x3e,0x03,0x01,0x01,0x0e,0x00,0x01, - 0x00,0x54,0x03,0x09,0x80,0x2b,0x03,0x05,0x00,0x37,0x03,0x0c,0x03,0x2b,0x04,0x01, - 0x00,0x37,0x04,0x0d,0x04,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x0f,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x29,0x01,0x02,0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x0f, - 0x80,0x2b,0x03,0x00,0x00,0x3a,0x00,0x00,0x03,0x34,0x03,0x0e,0x00,0x2b,0x04,0x06, - 0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x3e,0x03,0x04,0x03,0x0e,0x00,0x03, - 0x00,0x54,0x05,0x06,0x80,0x2b,0x05,0x07,0x00,0x25,0x06,0x0f,0x00,0x25,0x07,0x10, - 0x00,0x10,0x08,0x04,0x00,0x24,0x07,0x08,0x07,0x3e,0x05,0x03,0x01,0x47,0x00,0x01, - 0x00,0x02,0xc0,0x12,0x80,0x04,0xc0,0x10,0x80,0x11,0x80,0x05,0xc0,0x17,0xc0,0x09, - 0xc0,0x1d,0x45,0x72,0x72,0x6f,0x72,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x64,0x65, - 0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x0a,0x45,0x52,0x52,0x4f,0x52, - 0x0a,0x70,0x63,0x61,0x6c,0x6c,0x08,0x73,0x6b,0x74,0x10,0x72,0x65,0x61,0x64,0x5f, - 0x70,0x61,0x63,0x6b,0x65,0x74,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73, - 0x07,0x61,0x74,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x5f,0x75, - 0x72,0x69,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x63,0x6f,0x72, - 0x6f,0x0a,0x67,0x75,0x65,0x73,0x73,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x73,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c, - 0x69,0x6e,0x65,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x51,0x01,0x07,0x80,0x2b, - 0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x2b,0x01,0x01,0x00,0x3e, - 0x01,0x01,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xf8,0x7f,0x47,0x00,0x01,0x00,0x18, - 0xc0,0x0d,0xc0,0xa7,0x02,0x00,0x02,0x07,0x07,0x08,0x01,0x34,0x2b,0x02,0x00,0x00, - 0x3e,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00, - 0x07,0x00,0x01,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00, - 0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x26,0x80, - 0x07,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x54,0x03,0x23,0x80,0x06,0x00,0x03,0x00, - 0x54,0x03,0x02,0x80,0x07,0x00,0x04,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00, - 0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04,0x15,0x04,0x00,0x04,0x39,0x04,0x02,0x03, - 0x54,0x03,0x19,0x80,0x2b,0x03,0x02,0x00,0x2b,0x04,0x03,0x00,0x37,0x04,0x06,0x04, - 0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02,0x3a,0x04,0x05,0x03, - 0x2b,0x03,0x02,0x00,0x37,0x03,0x05,0x03,0x38,0x03,0x01,0x03,0x07,0x03,0x00,0x00, - 0x54,0x03,0x04,0x80,0x2b,0x03,0x04,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x01, - 0x54,0x03,0x06,0x80,0x34,0x03,0x07,0x00,0x2b,0x04,0x05,0x00,0x2b,0x05,0x06,0x00, - 0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01,0x2b,0x03,0x02,0x00, - 0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x47,0x00,0x01,0x00,0x0a,0xc0,0x15,0xc0, - 0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61,0x73,0x73,0x65,0x72, - 0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x09, - 0x63,0x6f,0x72,0x6f,0x10,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x0e,0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c, - 0x6c,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02,0xfc,0x02,0x00,0x02, - 0x07,0x08,0x0d,0x02,0x45,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x0e,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x03,0x0f, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x27,0x04,0x02,0x00,0x25,0x05,0x03, - 0x00,0x3e,0x03,0x03,0x02,0x37,0x03,0x04,0x03,0x07,0x03,0x05,0x00,0x54,0x03,0x01, - 0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x02,0x00,0x2b,0x04,0x02,0x00,0x36,0x04,0x02, - 0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x2e,0x80,0x06,0x00,0x06, - 0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x07,0x00,0x54,0x03,0x0f,0x80,0x27,0x03,0x02, - 0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08, - 0x00,0x3e,0x04,0x03,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x51,0x04,0x02, - 0x80,0x14,0x03,0x00,0x03,0x54,0x04,0xf6,0x7f,0x2b,0x04,0x02,0x00,0x15,0x05,0x01, - 0x03,0x39,0x05,0x02,0x04,0x54,0x03,0x1b,0x80,0x07,0x00,0x09,0x00,0x54,0x03,0x19, - 0x80,0x2b,0x03,0x03,0x00,0x2b,0x04,0x04,0x00,0x37,0x04,0x0b,0x04,0x2b,0x05,0x00, - 0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x03, - 0x00,0x37,0x03,0x0a,0x03,0x38,0x03,0x01,0x03,0x07,0x03,0x00,0x00,0x54,0x03,0x04, - 0x80,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x01,0x54,0x03,0x06, - 0x80,0x34,0x03,0x0c,0x00,0x2b,0x04,0x06,0x00,0x2b,0x05,0x07,0x00,0x10,0x06,0x01, - 0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01,0x2b,0x03,0x03,0x00,0x29,0x04,0x00, - 0x00,0x3a,0x04,0x0a,0x03,0x47,0x00,0x01,0x00,0x0a,0xc0,0x01,0xc0,0x15,0xc0,0x12, - 0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61,0x73,0x73,0x65,0x72,0x74, - 0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63, - 0x6f,0x72,0x6f,0x09,0x6c,0x69,0x6e,0x65,0x06,0x66,0x10,0x74,0x61,0x69,0x6c,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x06,0x43,0x09, - 0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x63, - 0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02,0x04,0x96,0x01,0x02,0x01,0x04,0x03, - 0x04,0x00,0x18,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07, - 0x01,0x00,0x00,0x54,0x01,0x11,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x01,0x01,0x37, - 0x01,0x02,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37, - 0x02,0x03,0x02,0x29,0x03,0x00,0x00,0x39,0x03,0x01,0x02,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x01,0x02,0x37,0x02,0x02,0x02,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b, - 0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x43,0x01,0x01,0x00,0x45, - 0x01,0x00,0x00,0x0c,0x00,0x0d,0x00,0x07,0x00,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, - 0x64,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x16,0x61,0x63,0x74,0x69, - 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x09,0x64,0x65, - 0x61,0x64,0xea,0x01,0x02,0x01,0x06,0x06,0x06,0x01,0x29,0x2b,0x01,0x00,0x00,0x36, - 0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x01,0x1e,0x80,0x2b,0x01,0x00,0x00,0x27, - 0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x14,0x02,0x00,0x02,0x3a, - 0x02,0x01,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x02,0x01,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39,0x00,0x02,0x01,0x2b, - 0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x03,0x01,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39,0x02,0x00,0x01,0x2b,0x01,0x02,0x00,0x37, - 0x01,0x04,0x01,0x10,0x02,0x00,0x00,0x2b,0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e, - 0x01,0x04,0x01,0x2b,0x01,0x04,0x00,0x10,0x02,0x00,0x00,0x2b,0x03,0x05,0x00,0x10, - 0x04,0x00,0x00,0x43,0x05,0x01,0x00,0x3d,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x07, - 0x00,0x0d,0x00,0x04,0x00,0x0b,0x00,0x15,0xc0,0x0e,0x00,0x08,0x72,0x6c,0x63,0x0c, - 0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, - 0x6f,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x06,0x6e,0x16,0x61,0x63,0x74,0x69, - 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x02,0x29,0x02, - 0x01,0x03,0x00,0x01,0x00,0x07,0x0e,0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x34,0x01, - 0x00,0x00,0x43,0x02,0x01,0x02,0x3e,0x01,0x02,0x01,0x43,0x01,0x01,0x00,0x45,0x01, - 0x00,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x38,0x02,0x00,0x04,0x02,0x02,0x00,0x07, - 0x2b,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00, - 0x43,0x03,0x00,0x00,0x3d,0x01,0x01,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x01,0xc0, - 0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x37,0x01,0x01,0x03,0x01,0x03,0x00,0x07,0x34,0x01,0x00,0x00,0x37,0x01,0x01, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x31,0x02,0x02,0x00,0x30,0x00,0x00, - 0x80,0x48,0x02,0x02,0x00,0x16,0xc0,0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0e, - 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x93,0x0d,0x01,0x07,0x1a,0x0f,0x3f, - 0x01,0xf4,0x01,0x0c,0x07,0x00,0x00,0x54,0x07,0x07,0x80,0x34,0x07,0x00,0x00,0x37, - 0x07,0x01,0x07,0x25,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x0e,0x00,0x07,0x00,0x54, - 0x08,0x01,0x80,0x25,0x07,0x03,0x00,0x0c,0x08,0x01,0x00,0x54,0x08,0x07,0x80,0x34, - 0x08,0x00,0x00,0x37,0x08,0x01,0x08,0x25,0x09,0x04,0x00,0x3e,0x08,0x02,0x02,0x0e, - 0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x25,0x08,0x05,0x00,0x0c,0x09,0x02,0x00,0x54, - 0x09,0x07,0x80,0x34,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x25,0x0a,0x06,0x00,0x3e, - 0x09,0x02,0x02,0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x25,0x09,0x07,0x00,0x0c, - 0x0a,0x04,0x00,0x54,0x0a,0x07,0x80,0x34,0x0a,0x00,0x00,0x37,0x0a,0x01,0x0a,0x25, - 0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x0e,0x00,0x0a,0x00,0x54,0x0b,0x01,0x80,0x29, - 0x0a,0x00,0x00,0x0c,0x0b,0x05,0x00,0x54,0x0b,0x07,0x80,0x34,0x0b,0x00,0x00,0x37, - 0x0b,0x01,0x0b,0x25,0x0c,0x09,0x00,0x3e,0x0b,0x02,0x02,0x0e,0x00,0x0b,0x00,0x54, - 0x0c,0x01,0x80,0x29,0x0b,0x00,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x0a,0x0c,0x10, - 0x0d,0x0a,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x06,0x00,0x3e,0x0c,0x04,0x01,0x0c, - 0x0c,0x03,0x00,0x54,0x0c,0x07,0x80,0x34,0x0c,0x00,0x00,0x37,0x0c,0x01,0x0c,0x25, - 0x0d,0x0b,0x00,0x3e,0x0c,0x02,0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25, - 0x0c,0x0c,0x00,0x34,0x0d,0x0d,0x00,0x10,0x0e,0x0c,0x00,0x3e,0x0d,0x02,0x02,0x2b, - 0x0e,0x01,0x00,0x2b,0x0f,0x01,0x00,0x2b,0x10,0x01,0x00,0x37,0x11,0x0e,0x0d,0x37, - 0x12,0x0f,0x0d,0x37,0x13,0x10,0x0d,0x3a,0x13,0x10,0x10,0x3a,0x12,0x0f,0x0f,0x3a, - 0x11,0x0e,0x0e,0x34,0x0e,0x11,0x00,0x37,0x0f,0x12,0x0d,0x3e,0x0f,0x01,0x00,0x3d, - 0x0e,0x00,0x02,0x10,0x10,0x0e,0x00,0x37,0x0f,0x13,0x0e,0x29,0x11,0x00,0x00,0x3e, - 0x0f,0x03,0x01,0x2a,0x0f,0x10,0x00,0x34,0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37, - 0x12,0x16,0x12,0x25,0x13,0x17,0x00,0x2b,0x14,0x02,0x00,0x3e,0x12,0x03,0x00,0x3d, - 0x11,0x00,0x01,0x34,0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25, - 0x13,0x18,0x00,0x10,0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x3e,0x12,0x04,0x00,0x3d, - 0x11,0x00,0x01,0x10,0x12,0x0e,0x00,0x37,0x11,0x19,0x0e,0x10,0x13,0x07,0x00,0x10, - 0x14,0x08,0x00,0x3e,0x11,0x04,0x03,0x10,0x10,0x12,0x00,0x10,0x0f,0x11,0x00,0x27, - 0x11,0x01,0x00,0x27,0x12,0x04,0x00,0x27,0x13,0x01,0x00,0x49,0x11,0x1a,0x80,0x0f, - 0x00,0x0f,0x00,0x54,0x15,0x05,0x80,0x34,0x15,0x14,0x00,0x25,0x16,0x1a,0x00,0x3e, - 0x15,0x02,0x01,0x54,0x11,0x14,0x80,0x54,0x15,0x12,0x80,0x37,0x15,0x1b,0x0d,0x28, - 0x16,0x00,0x00,0x3e,0x15,0x02,0x01,0x34,0x15,0x14,0x00,0x34,0x16,0x15,0x00,0x37, - 0x16,0x16,0x16,0x25,0x17,0x1c,0x00,0x10,0x18,0x07,0x00,0x10,0x19,0x08,0x00,0x3e, - 0x16,0x04,0x00,0x3d,0x15,0x00,0x01,0x10,0x16,0x0e,0x00,0x37,0x15,0x19,0x0e,0x10, - 0x17,0x07,0x00,0x10,0x18,0x08,0x00,0x3e,0x15,0x04,0x03,0x10,0x10,0x16,0x00,0x10, - 0x0f,0x15,0x00,0x4b,0x11,0xe6,0x7f,0x0f,0x00,0x10,0x00,0x54,0x11,0x09,0x80,0x34, - 0x11,0x1d,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25,0x13,0x1e,0x00,0x10, - 0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x10,0x16,0x10,0x00,0x3e,0x12,0x05,0x00,0x3d, - 0x11,0x00,0x01,0x2b,0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b,0x12,0x04,0x00,0x37, - 0x12,0x20,0x12,0x27,0x13,0x01,0x00,0x3e,0x12,0x02,0x02,0x37,0x12,0x21,0x12,0x3e, - 0x11,0x02,0x02,0x2c,0x03,0x11,0x00,0x2b,0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b, - 0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x37,0x13,0x12,0x0d,0x3e,0x12,0x02,0x02,0x37, - 0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c,0x05,0x11,0x00,0x29,0x11,0x00,0x00,0x27, - 0x12,0x02,0x00,0x34,0x13,0x22,0x00,0x37,0x13,0x23,0x13,0x27,0x14,0x01,0x00,0x49, - 0x12,0x0e,0x80,0x2b,0x16,0x04,0x00,0x37,0x16,0x20,0x16,0x10,0x17,0x15,0x00,0x3e, - 0x16,0x02,0x02,0x0e,0x00,0x16,0x00,0x54,0x17,0x01,0x80,0x54,0x12,0x07,0x80,0x2b, - 0x17,0x00,0x00,0x37,0x17,0x1f,0x17,0x37,0x18,0x21,0x16,0x3e,0x17,0x02,0x02,0x0c, - 0x11,0x17,0x00,0x54,0x18,0x00,0x80,0x4b,0x12,0xf2,0x7f,0x0e,0x00,0x11,0x00,0x54, - 0x12,0x01,0x80,0x25,0x11,0x24,0x00,0x2b,0x12,0x06,0x00,0x3e,0x12,0x01,0x02,0x0e, - 0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x25,0x12,0x25,0x00,0x2b,0x13,0x07,0x00,0x27, - 0x14,0x01,0x00,0x39,0x14,0x12,0x13,0x34,0x13,0x26,0x00,0x34,0x14,0x00,0x00,0x37, - 0x14,0x27,0x14,0x3e,0x14,0x01,0x00,0x3d,0x13,0x00,0x02,0x25,0x14,0x28,0x00,0x34, - 0x15,0x26,0x00,0x10,0x16,0x12,0x00,0x3e,0x15,0x02,0x02,0x24,0x13,0x15,0x13,0x2b, - 0x14,0x08,0x00,0x37,0x14,0x29,0x14,0x10,0x15,0x0e,0x00,0x33,0x16,0x2a,0x00,0x33, - 0x17,0x2b,0x00,0x3a,0x09,0x2c,0x17,0x3a,0x13,0x2d,0x17,0x34,0x18,0x26,0x00,0x10, - 0x19,0x12,0x00,0x3e,0x18,0x02,0x02,0x3a,0x18,0x2e,0x17,0x3a,0x11,0x2f,0x17,0x3a, - 0x17,0x30,0x16,0x3e,0x14,0x03,0x01,0x33,0x14,0x31,0x00,0x3a,0x0e,0x32,0x14,0x3a, - 0x13,0x33,0x14,0x2b,0x15,0x01,0x00,0x37,0x15,0x34,0x15,0x2b,0x16,0x06,0x00,0x3e, - 0x15,0x02,0x02,0x3a,0x15,0x35,0x14,0x2c,0x09,0x14,0x00,0x2b,0x15,0x0a,0x00,0x10, - 0x16,0x14,0x00,0x3e,0x15,0x02,0x01,0x2b,0x15,0x04,0x00,0x37,0x15,0x36,0x15,0x2b, - 0x16,0x0b,0x00,0x25,0x17,0x37,0x00,0x3e,0x15,0x03,0x01,0x31,0x15,0x38,0x00,0x34, - 0x16,0x39,0x00,0x31,0x17,0x3b,0x00,0x3a,0x17,0x3a,0x16,0x31,0x16,0x3c,0x00,0x34, - 0x17,0x39,0x00,0x31,0x18,0x3e,0x00,0x3a,0x18,0x3d,0x17,0x30,0x00,0x00,0x80,0x48, - 0x14,0x02,0x00,0x04,0xc0,0x03,0xc0,0x00,0xc0,0x10,0x80,0x01,0xc0,0x11,0x80,0x0a, - 0xc0,0x15,0xc0,0x05,0xc0,0x12,0x80,0x17,0xc0,0x1a,0x80,0x0f,0xc0,0x02,0xc0,0x0e, - 0xc0,0x00,0x09,0x77,0x72,0x61,0x70,0x00,0x00,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65, - 0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x00,0x08,0x72,0x6c,0x63,0x0c, - 0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x09,0x63,0x6f,0x72,0x6f,0x12,0x43,0x75,0x72, - 0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x07,0x69,0x64,0x08,0x73,0x6b, - 0x74,0x01,0x00,0x01,0x0a,0x73,0x74,0x61,0x74,0x65,0x0d,0x73,0x74,0x61,0x72,0x74, - 0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c,0x66,0x69,0x6c,0x65,0x75,0x72,0x69, - 0x0b,0x74,0x68,0x72,0x65,0x61,0x64,0x0c,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0b, - 0x69,0x64,0x65,0x6b,0x65,0x79,0x01,0x00,0x04,0x0d,0x6c,0x61,0x6e,0x67,0x75,0x61, - 0x67,0x65,0x08,0x4c,0x75,0x61,0x0b,0x70,0x61,0x72,0x65,0x6e,0x74,0x05,0x0a,0x61, - 0x70,0x70,0x69,0x64,0x0d,0x4c,0x75,0x61,0x20,0x44,0x42,0x47,0x70,0x15,0x70,0x72, - 0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x08,0x31, - 0x2e,0x30,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x09,0x69,0x6e,0x69,0x74,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x5f,0x09,0x74,0x69,0x6d,0x65,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x6d,0x61,0x69,0x6e,0x0e,0x75,0x6e,0x6b, - 0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68, - 0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0c, - 0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x21,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x64,0x20, - 0x3a,0x20,0x25,0x73,0x0a,0x65,0x72,0x72,0x6f,0x72,0x30,0x44,0x65,0x62,0x75,0x67, - 0x67,0x65,0x72,0x3a,0x20,0x52,0x65,0x74,0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f, - 0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25, - 0x73,0x20,0x2e,0x2e,0x2e,0x20,0x0a,0x73,0x6c,0x65,0x65,0x70,0x22,0x44,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x73,0x75,0x63,0x63,0x65,0x65,0x64,0x2e,0x0c,0x63,0x6f,0x6e,0x6e,0x65, - 0x63,0x74,0x2e,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x54,0x72,0x79, - 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74, - 0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x11,0x44,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x20,0x76,0x25,0x73,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x70,0x72,0x69,0x6e,0x74,0x0f,0x73,0x65, - 0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0b, - 0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x75,0x6e,0x62,0x36,0x34,0x0b,0x72,0x61,0x77, - 0x62,0x36,0x34,0x08,0x62,0x36,0x34,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x21, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f, - 0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x13,0x44,0x42,0x47, - 0x50,0x5f,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x52,0x54,0x09,0x69,0x6e,0x69,0x74, - 0x14,0x44,0x42,0x47,0x50,0x5f,0x57,0x4f,0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52, - 0x12,0x44,0x42,0x47,0x50,0x5f,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52,0x4d,0x0e,0x6c, - 0x75,0x61,0x69,0x64,0x65,0x6b,0x65,0x79,0x10,0x44,0x42,0x47,0x50,0x5f,0x49,0x44, - 0x45,0x4b,0x45,0x59,0x0a,0x31,0x30,0x30,0x30,0x30,0x11,0x44,0x42,0x47,0x50,0x5f, - 0x49,0x44,0x45,0x50,0x4f,0x52,0x54,0x0e,0x31,0x32,0x37,0x2e,0x30,0x2e,0x30,0x2e, - 0x31,0x11,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x48,0x4f,0x53,0x54,0x0b,0x67, - 0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x01,0x80,0x80,0x80,0xff,0x03,0x9a,0x0e, - 0x03,0x00,0x20,0x00,0x7e,0x00,0xef,0x01,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x03,0x00,0x3a,0x01,0x02,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x05,0x00,0x3a,0x01,0x04,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x07,0x00,0x3a,0x01,0x06,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x09,0x00,0x3a,0x01,0x08,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0b,0x00,0x3a,0x01,0x0a,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0d,0x00,0x3a,0x01,0x0c,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0f,0x00,0x3a,0x01,0x0e,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x11,0x00,0x3a,0x01,0x10,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x13,0x00,0x3a,0x01,0x12,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x15,0x00,0x3a,0x01,0x14,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x17,0x00,0x3a,0x01,0x16,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x19,0x00,0x3a,0x01,0x18,0x00,0x25,0x00,0x1a,0x00,0x34,0x01,0x1b,0x00, - 0x25,0x02,0x1c,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x34,0x03,0x00,0x00, - 0x37,0x03,0x1d,0x03,0x3a,0x02,0x1e,0x03,0x34,0x03,0x1b,0x00,0x25,0x04,0x16,0x00, - 0x3e,0x03,0x02,0x02,0x34,0x04,0x1b,0x00,0x25,0x05,0x14,0x00,0x3e,0x04,0x02,0x02, - 0x34,0x05,0x1b,0x00,0x25,0x06,0x0c,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x1b,0x00, - 0x25,0x07,0x08,0x00,0x3e,0x06,0x02,0x02,0x34,0x07,0x1b,0x00,0x25,0x08,0x0a,0x00, - 0x3e,0x07,0x02,0x02,0x34,0x08,0x1b,0x00,0x25,0x09,0x18,0x00,0x3e,0x08,0x02,0x02, - 0x37,0x09,0x1f,0x03,0x34,0x0a,0x20,0x00,0x37,0x0a,0x21,0x0a,0x34,0x0b,0x20,0x00, - 0x37,0x0b,0x22,0x0b,0x34,0x0c,0x20,0x00,0x37,0x0c,0x23,0x0c,0x34,0x0d,0x20,0x00, - 0x37,0x0d,0x24,0x0d,0x34,0x0e,0x20,0x00,0x37,0x0e,0x25,0x0e,0x34,0x0f,0x20,0x00, - 0x37,0x0f,0x26,0x0f,0x2a,0x10,0x12,0x00,0x33,0x13,0x28,0x00,0x34,0x14,0x29,0x00, - 0x32,0x15,0x00,0x00,0x33,0x16,0x2a,0x00,0x3e,0x14,0x03,0x02,0x3a,0x14,0x2b,0x13, - 0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00,0x33,0x16,0x2c,0x00,0x3e,0x14,0x03,0x02, - 0x3a,0x14,0x2d,0x13,0x3a,0x13,0x27,0x02,0x29,0x13,0x00,0x00,0x3a,0x13,0x2e,0x02, - 0x29,0x13,0x00,0x00,0x34,0x14,0x2f,0x00,0x07,0x14,0x30,0x00,0x54,0x14,0x03,0x80, - 0x34,0x14,0x31,0x00,0x10,0x13,0x14,0x00,0x54,0x14,0x0b,0x80,0x34,0x14,0x2f,0x00, - 0x07,0x14,0x32,0x00,0x54,0x14,0x03,0x80,0x37,0x14,0x33,0x01,0x31,0x13,0x34,0x00, - 0x30,0x14,0x05,0x80,0x34,0x14,0x35,0x00,0x34,0x15,0x2f,0x00,0x25,0x16,0x36,0x00, - 0x24,0x15,0x16,0x15,0x3e,0x14,0x02,0x01,0x34,0x14,0x37,0x00,0x33,0x15,0x3a,0x00, - 0x34,0x16,0x37,0x00,0x37,0x16,0x39,0x16,0x3a,0x16,0x39,0x15,0x34,0x16,0x37,0x00, - 0x37,0x16,0x3b,0x16,0x3a,0x16,0x3b,0x15,0x34,0x16,0x37,0x00,0x37,0x16,0x3c,0x16, - 0x3a,0x16,0x3c,0x15,0x34,0x16,0x37,0x00,0x37,0x16,0x3d,0x16,0x3a,0x16,0x3d,0x15, - 0x3a,0x15,0x38,0x14,0x34,0x14,0x37,0x00,0x31,0x15,0x3e,0x00,0x3a,0x15,0x39,0x14, - 0x31,0x14,0x3f,0x00,0x33,0x15,0x42,0x00,0x31,0x16,0x41,0x00,0x3a,0x16,0x43,0x15, - 0x3a,0x14,0x44,0x15,0x3a,0x14,0x45,0x15,0x3a,0x14,0x46,0x15,0x3a,0x14,0x47,0x15, - 0x3a,0x15,0x40,0x02,0x37,0x15,0x40,0x02,0x37,0x16,0x40,0x02,0x3a,0x16,0x48,0x15, - 0x33,0x15,0x4b,0x00,0x31,0x16,0x4a,0x00,0x3a,0x16,0x43,0x15,0x31,0x16,0x4c,0x00, - 0x3a,0x16,0x44,0x15,0x31,0x16,0x4d,0x00,0x3a,0x16,0x45,0x15,0x31,0x16,0x4e,0x00, - 0x3a,0x16,0x46,0x15,0x31,0x16,0x4f,0x00,0x3a,0x16,0x47,0x15,0x3a,0x15,0x49,0x02, - 0x37,0x15,0x49,0x02,0x37,0x16,0x49,0x02,0x3a,0x16,0x48,0x15,0x34,0x15,0x29,0x00, - 0x32,0x16,0x00,0x00,0x33,0x17,0x50,0x00,0x3e,0x15,0x03,0x02,0x33,0x16,0x59,0x00, - 0x33,0x17,0x53,0x00,0x31,0x18,0x52,0x00,0x3a,0x18,0x54,0x17,0x31,0x18,0x55,0x00, - 0x3a,0x18,0x56,0x17,0x31,0x18,0x57,0x00,0x3a,0x18,0x58,0x17,0x3a,0x17,0x5a,0x16, - 0x3a,0x16,0x51,0x02,0x32,0x16,0x00,0x00,0x3a,0x16,0x5b,0x02,0x32,0x16,0x00,0x00, - 0x32,0x17,0x00,0x00,0x32,0x18,0x00,0x00,0x29,0x19,0x00,0x00,0x27,0x1a,0x00,0x00, - 0x32,0x1b,0x00,0x00,0x31,0x1c,0x5c,0x00,0x31,0x1d,0x5d,0x00,0x37,0x1e,0x51,0x02, - 0x31,0x1f,0x5f,0x00,0x3a,0x1f,0x5e,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x61,0x00, - 0x3a,0x1f,0x60,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x63,0x00,0x3a,0x1f,0x62,0x1e, - 0x37,0x1e,0x51,0x02,0x31,0x1f,0x65,0x00,0x3a,0x1f,0x64,0x1e,0x37,0x1e,0x51,0x02, - 0x31,0x1f,0x67,0x00,0x3a,0x1f,0x66,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x69,0x00, - 0x3a,0x1f,0x68,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x6b,0x00,0x3a,0x1f,0x6a,0x1e, - 0x37,0x1e,0x5b,0x02,0x31,0x1f,0x6d,0x00,0x3a,0x1f,0x6c,0x1e,0x37,0x1e,0x5b,0x02, - 0x31,0x1f,0x6f,0x00,0x3a,0x1f,0x6e,0x1e,0x37,0x1e,0x5b,0x02,0x31,0x1f,0x71,0x00, - 0x3a,0x1f,0x70,0x1e,0x30,0x16,0x00,0x80,0x31,0x16,0x73,0x00,0x3a,0x16,0x72,0x02, - 0x31,0x16,0x74,0x00,0x31,0x17,0x75,0x00,0x31,0x18,0x76,0x00,0x10,0x19,0x0b,0x00, - 0x31,0x1a,0x77,0x00,0x3e,0x19,0x02,0x02,0x31,0x1a,0x78,0x00,0x34,0x1b,0x79,0x00, - 0x34,0x1c,0x7a,0x00,0x25,0x1d,0x7b,0x00,0x3e,0x1b,0x03,0x02,0x0f,0x00,0x1b,0x00, - 0x54,0x1c,0x01,0x80,0x31,0x1a,0x7c,0x00,0x31,0x1b,0x7d,0x00,0x30,0x00,0x00,0x80, - 0x48,0x1b,0x02,0x00,0x00,0x00,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61, - 0x77,0x67,0x65,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x70,0x72,0x65,0x76,0x69, - 0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x00,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x00,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x00,0x0d,0x72,0x65,0x67,0x69,0x73, - 0x74,0x65,0x72,0x00,0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x00,0x0b,0x72,0x65, - 0x6d,0x6f,0x76,0x65,0x00,0x08,0x67,0x65,0x74,0x00,0x07,0x61,0x74,0x00,0x0b,0x69, - 0x6e,0x73,0x65,0x72,0x74,0x00,0x0b,0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x0a,0x67, - 0x75,0x65,0x73,0x73,0x00,0x00,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x13,0x68,0x69, - 0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x01,0x00,0x00,0x06, - 0x25,0x00,0x07,0x3d,0x3d,0x00,0x07,0x3e,0x3d,0x01,0x00,0x00,0x00,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d, - 0x6f,0x64,0x65,0x06,0x6b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x63,0x6f, - 0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65, - 0x78,0x09,0x73,0x65,0x65,0x6b,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x0a,0x63, - 0x6c,0x6f,0x73,0x65,0x0a,0x66,0x6c,0x75,0x73,0x68,0x0a,0x77,0x72,0x69,0x74,0x65, - 0x01,0x00,0x00,0x00,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x00,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74, - 0x64,0x6f,0x75,0x74,0x0a,0x73,0x74,0x64,0x69,0x6e,0x01,0x00,0x00,0x0b,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x16,0x69,0x73,0x20, - 0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x2e,0x0a,0x65, - 0x72,0x72,0x6f,0x72,0x00,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f, - 0x4e,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e, - 0x65,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x01,0x00,0x01,0x0b,0x5f, - 0x5f,0x6d,0x6f,0x64,0x65,0x06,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x01, - 0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x11,0x73,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01,0x00,0x01,0x06,0x6e,0x03,0x00,0x16, - 0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x73,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0a, - 0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70,0x0b,0x63,0x72,0x65,0x61,0x74, - 0x65,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74, - 0x69,0x6e,0x65,0x08,0x6c,0x6f,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x72,0x65,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0a,0x64,0x65,0x62, - 0x75,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x0a,0x31,0x2e,0x31,0x2e,0x30, - 0x00,0x11,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x00,0x12, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, - 0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69, - 0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x00,0x19, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73, - 0x2e,0x66,0x66,0x69,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69, - 0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x00,0x12,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x00,0x15,0x64,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73, - 0x00,0x27,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73, - 0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x73, - 0x63,0x68,0x65,0x64,0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74, - 0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b, - 0x65,0x74,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, - 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x61,0x70,0x72,0x0c,0x70,0x72,0x65,0x6c,0x6f, - 0x61,0x64,0x0c,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x00, -}; + +/* debugger */ +static const char *lua_m_debugger = +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Debugger using DBGp protocol.\n" +"-------------------------------------------------------------------------------\n" +"-- The module returns a single init function which takes 6 parameters (IDEHOST, IDEPORT, IDEKEY, TRANSPORT, PLATFORM, WORKINGDIR).\n" +"--\n" +"-- IDEHOST: the host name or the ip address of the DBGP server (so your ide)\n" +"-- if HOST is nil, the DBGP_IDEHOST env var is used.\n" +"-- if the env var is nil, the default value '127.0.0.1' is used.\n" +"--\n" +"-- IDEPORT: the port of the DBGP server (must be configure in the IDE)\n" +"-- if PORT is nil, the DBGP_IDEPORT env var is used.\n" +"-- if the env var is nil, the default value '10000' is used.\n" +"--\n" +"-- IDEIDEKEY: a string which is used as session key\n" +"-- if IDEKEY is nil, the DBGP_IDEKEY env var is used.\n" +"-- if the env var is nil, the default value 'luaidekey' is used.\n" +"--\n" +"-- TRANSPORT: (advanced optional parameter) the module name of which implement the transport interface used to do the connection with the server.\n" +"-- by default the debugger use an internal implementation based on luasocket, but if can not use it, you could implement or use another transport layer implementation.\n" +"-- if TRANSPORT is nil, the DBGP_TRANSPORT env var is used.\n" +"-- if the env var is nil, the default value 'debugger.transport.luasocket' is used : this is the default implementation based on luasocket.\n" +"--\n" +"-- PLATFORM: (advanced optional parameter) 'unix' or 'win32' string which define the kind of platform on which the program to debug is executed.\n" +"-- by default the debugger will try to guess it and surely success, if for some reasons it fails you could help it by precise the execution platform.\n" +"-- if PLATFORM is nil, the DBGP_PLATFORM env var is used.\n" +"-- if the env var is nil, the debugger will try to guess it.\n" +"--\n" +"-- WORKINGDIR: (advanced optional parameter) the working directory in which the program to debug is executed.\n" +"-- by default the debugger will try to guess it and surely success, if for some reasons it fails you could help it by precise the working directory.\n" +"-- if WORKINGDIR is nil, the DBGP_WORKINGDIR env var is used.\n" +"-- if the env var is nil, the debugger will try to guess it.\n" +"--\n" +"-------------------------------------------------------------------------------\n" +"-- Known Issues:\n" +"-- * Functions cannot be created using the debugger and then called in program because their environment is mapped directly to\n" +"-- a debugger internal structure which cannot be persisted (i.e. used outside of the debug_hook).\n" +"-- * The DLTK client implementation does not handle context for properties. As a workaround, the context is encoded into the\n" +"-- fullname attribute of each property and is used likewise in property_get commands. The syntax is \"|\"\n" +"-- * Dynamic code (compiled with load or loadstring) is not handled (the debugger will step over it, like C code)\n" +"-- Design notes:\n" +"-- * The whole debugger state is kept in a (currently) unique session table in order to ease eventual adaptation to a multi-threaded\n" +"-- model, as DBGp needs one connection per thread.\n" +"-- * Full names of properties are base64 encoded because they can contain arbitrary data (spaces, escape characters, ...), this makes\n" +"-- command parsing munch easier and faster\n" +"-- * This debugger supports asynchronous commands: any command can be done at any time, but some of them (continuations) can lead to\n" +"-- inconsistent states. In addition, this have a quite big overhead (~66%), if performance is an issue, a custom command to disable\n" +"-- async mode could be done.\n" +"-- * All commands are implemented in table commands, see this comments on this table to additional details about commands implementation\n" +"-- * The environments in which are evaluated user code (property_* and eval commands, conditional breakpoints, ...) is a read/write\n" +"-- mapping of the local environment of a given stack level (can be accessed with variable names). See Context for additional details.\n" +"-- Context instantiation is pooled inside a debugging loop with ContextManager (each stack level is instantiated only once).\n" +"-- * Output redirection is done by redefining print and some values inside the io table. See \"Output redirection handling\" for details.\n" +"-- Todo list:\n" +"-- * Override I/O in init function instead of on module loading.\n" +"-- * Allow to break programatically (debugger.break()).\n" +"-- * Break-on-error feature (break if an error is thrown and there is no pcall in stack to handle it).\n" +"-- * Use new 5.2 facilities to provide informations about function (arguments names, vararg, ...)\n" +"-- * Allow to see ... content for vararg functions (5.2 only)\n" +"-- * Inspect LuaJIT C data (http://lua-users.org/lists/lua-l/2011-02/msg01012.html)-- /!\ This file is auto-generated. Do not alter manually /!\\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Submodules body\n" +"--------------------------------------------------------------------------------\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.transport.apr\n" +"package.preload[\"debugger.transport.apr\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Apache Portable Runtime backend for DBGP debugger.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local apr = require \"apr\"\n" +"\n" +"-- base 64 wrapping\n" +"function b64_wrap(src)\n" +" local t = {}\n" +" local b64_src = mime.b64(src)\n" +" for i=1, #b64_src, 76 do t[#t+1] = b64_src:sub(i, i+75)..\"\r\n\" end\n" +" return table.concat(t)\n" +"end\n" +"\n" +"-- implements a subset of LuaSocket API using APR\n" +"local SOCKET_MT = {\n" +" connect = function(self, address, port) return self.skt:connect(address, port) end,\n" +" receive = function(self, n) return self.skt:read(n) end, -- only numeric read is used\n" +" send = function(self, data) return self.skt:write(data) end,\n" +" close = function(self) return self.skt:close() end,\n" +" settimeout = function(self, sec)\n" +" if sec == nil then self.skt:timeout_set(true)\n" +" elseif sec == 0 then self.skt:timeout_set(false)\n" +" else self.skt:timeout_set(math.floor(sec * 1000000)) end\n" +" end\n" +"}\n" +"SOCKET_MT.__index = SOCKET_MT\n" +"\n" +"return {\n" +" create = function()\n" +" local skt, err = apr.socket_create('tcp')\n" +" if not skt then return nil, err end\n" +" return setmetatable({skt = skt}, SOCKET_MT)\n" +" end,\n" +" sleep = apr.sleep, -- exact same API as LuaSocket\n" +"\n" +" -- Base64 related functions\n" +" --- Encodes a string into Base64 with line wrapping\n" +" -- @param data (string) data to encode\n" +" -- @return base64 encoded string\n" +" b64 = function(data)\n" +" t = {}\n" +" local b64_data = apr.base64_encode(data)\n" +" for i=1, #b64_data, 76 do t[#t+1] = b64_data:sub(i, i+75)..\"\r\n\" end\n" +" return table.concat(t)\n" +" end,\n" +"\n" +" --- Encodes a string into Base64, without any extra parsing (wrapping, ...)\n" +" -- @param data (string) data to encode\n" +" -- @return decoded string\n" +" rawb64 = apr.base64_encode,\n" +"\n" +" --- Decodes base64 data\n" +" -- @param data (string) base64 encoded data\n" +" -- @return decoded string\n" +" unb64 = apr.base64_decode,\n" +"}\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.transport.apr\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.transport.luasocket\n" +"package.preload[\"debugger.transport.luasocket\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- LuaSocket backend for DBGP debugger.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"-- in order to be as lightweight as possible with Luasocket, core API is used\n" +"-- directly (to no add yet another layer)\n" +"\n" +"--FIXME: remove this hack as soon as luasocket officially support 5.2\n" +"if _VERSION == \"Lua 5.2\" then\n" +" table.getn = function(t) return t and #t end\n" +"end\n" +"\n" +"local socket = require \"socket\"\n" +"local mime = require \"mime\"\n" +"local ltn12 = require \"ltn12\"\n" +"local reg = debug.getregistry()\n" +"\n" +"\n" +"return {\n" +" create = socket.tcp,\n" +" sleep = socket.sleep,\n" +"\n" +" -- Base64 related functions\n" +" --- Encodes a string into Base64 with line wrapping\n" +" -- @param data (string) data to encode\n" +" -- @return base64 encoded string\n" +" b64 = function(data)\n" +" local filter = ltn12.filter.chain(mime.encode(\"base64\"), mime.wrap(\"base64\"))\n" +" local sink, output = ltn12.sink.table()\n" +" ltn12.pump.all(ltn12.source.string(data), ltn12.sink.chain(filter, sink))\n" +" return table.concat(output)\n" +" end,\n" +"\n" +" --- Encodes a string into Base64, without any extra parsing (wrapping, ...)\n" +" -- @param data (string) data to encode\n" +" -- @return decoded string\n" +" rawb64 = function(data)\n" +" return (mime.b64(data)) -- first result of the low-level function is fine here\n" +" end,\n" +"\n" +" --- Decodes base64 data\n" +" -- @param data (string) base64 encoded data\n" +" -- @return decoded string\n" +" unb64 = function(data)\n" +" return (mime.unb64(data)) -- first result of the low-level function is fine here\n" +" end,\n" +"}\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.transport.luasocket\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.transport.luasocket_sched\n" +"package.preload[\"debugger.transport.luasocket_sched\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- LuaSocket with LuaSched backend for DBGP debugger.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"-- As LuaShed totally hides blocking functions, this module MUST be loaded on the very start of the program\n" +"-- (before loading sched) to catch references to blocking functions.\n" +"\n" +"local socketcore = require\"socket.core\"\n" +"local debug = require \"debug\"\n" +"local reg = debug.getregistry()\n" +"\n" +"local blockingcreate = socketcore.tcp\n" +"local blockingsleep = socketcore.sleep\n" +"\n" +"local blockingconnect = reg[\"tcp{master}\"].__index.connect\n" +"local blockingreceive = reg[\"tcp{client}\"].__index.receive\n" +"local blockingsend = reg[\"tcp{client}\"].__index.send\n" +"local blockingsettimeout = reg[\"tcp{master}\"].__index.settimeout\n" +"local blockingclose = reg[\"tcp{master}\"].__index.close\n" +"\n" +"-- we cannot set a new metatable directly on socket object, so wrap it into a new table\n" +"-- and forward all calls.\n" +"local blockingtcp = {\n" +" connect = function(self, address, port) return blockingconnect(self.skt, address, port) end,\n" +" receive = function(self, n) return blockingreceive(self.skt, n) end,\n" +" send = function(self, data) return blockingsend(self.skt, data) end,\n" +" settimeout = function(self, sec) return blockingsettimeout(self.skt, sec) end,\n" +" close = function(self) return blockingclose(self.skt) end,\n" +"}\n" +"\n" +"blockingtcp.__index = blockingtcp\n" +"\n" +"local mime = require \"mime\"\n" +"local ltn12 = require \"ltn12\"\n" +"\n" +"-- verify that the socket function are the real ones and not sched not blocking versions\n" +"assert(debug.getinfo(blockingcreate, \"S\").what == \"C\", \"The debugger needs the real socket functions !\")\n" +"-- cleanup the package.loaded table (socket.core adds socket field into it)\n" +"package.loaded.socket = nil\n" +"\n" +"return {\n" +" create = function() return setmetatable({ skt = blockingcreate() }, blockingtcp) end,\n" +" sleep = blockingsleep,\n" +"\n" +" -- Base64 related functions\n" +" --- Encodes a string into Base64 with line wrapping\n" +" -- @param data (string) data to encode\n" +" -- @return base64 encoded string\n" +" b64 = function(data)\n" +" local filter = ltn12.filter.chain(mime.encode(\"base64\"), mime.wrap(\"base64\"))\n" +" local sink, output = ltn12.sink.table()\n" +" ltn12.pump.all(ltn12.source.string(data), ltn12.sink.chain(filter, sink))\n" +" return table.concat(output)\n" +" end,\n" +"\n" +" --- Encodes a string into Base64, without any extra parsing (wrapping, ...)\n" +" -- @param data (string) data to encode\n" +" -- @return decoded string\n" +" rawb64 = function(data)\n" +" return (mime.b64(data)) -- first result of the low-level function is fine here\n" +" end,\n" +"\n" +" --- Decodes base64 data\n" +" -- @param data (string) base64 encoded data\n" +" -- @return decoded string\n" +" unb64 = function(data)\n" +" return (mime.unb64(data)) -- first result of the low-level function is fine here\n" +" end,\n" +"}\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.transport.luasocket_sched\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.commands\n" +"package.preload[\"debugger.commands\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Commands handlers for DBGp protocol.\n" +"-------------------------------------------------------------------------------\n" +"-- Debugger command functions. Each function handle a different command.\n" +"-- A command function is called with 3 arguments\n" +"-- 1. the debug session instance\n" +"-- 2. the command arguments as table\n" +"-- 3. the command data, if any\n" +"-- The result is either :\n" +"-- * true (or any value evaluated to true) : the debugger will resume the execution of the application (continuation command)\n" +"-- * false : only in async mode, the debugger WILL wait for further commands instead of continuing (typically, break command)\n" +"-- * nil/no return : in sync mode, the debugger will wait for another command. In async mode the debugger will continue the execution\n" +"\n" +"local cowrap, coyield = coroutine.wrap, coroutine.yield\n" +"local debug = require \"debug\"\n" +"\n" +"local core = require \"debugger.core\"\n" +"local dbgp = require \"debugger.dbgp\"\n" +"local util = require \"debugger.util\"\n" +"local platform = require \"debugger.platform\"\n" +"local introspection = require \"debugger.introspection\"\n" +"local context = require \"debugger.context\"\n" +"local log = util.log\n" +"\n" +"local M = { } -- command handlers table\n" +"\n" +"--- Gets the coroutine behind an id\n" +"-- Throws errors on unknown identifiers\n" +"-- @param coro_id (string or nil) Coroutine identifier or nil (current coroutine)\n" +"-- @return Coroutine instance or nil (if coro_id was nil or if coroutine is the current coroutine)\n" +"local function get_coroutine(self, coro_id)\n" +" if coro_id then\n" +" local coro = dbgp.assert(399, core.active_coroutines.from_id[tonumber(coro_id)], \"No such coroutine\")\n" +" dbgp.assert(399, coroutine.status(coro) ~= \"dead\", \"Coroutine is dead\")\n" +" if coro ~= self.coro[1] then return util.ForeignThread(coro) end\n" +" end\n" +" return self.coro\n" +"end\n" +"\n" +"M[\"break\"] = function(self, args)\n" +" self.state = \"break\"\n" +" -- send response to previous command\n" +" core.previous_context_response(self)\n" +" -- and then response to break command itself\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = \"break\", transaction_id = args.i, success = 1 } } )\n" +" return false\n" +"end\n" +"\n" +"function M.status(self, args)\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = {\n" +" command = \"status\",\n" +" reason = \"ok\",\n" +" status = self.state,\n" +" transaction_id = args.i } } )\n" +"end\n" +"\n" +"function M.stop(self, args)\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = {\n" +" command = \"stop\",\n" +" reason = \"ok\",\n" +" status = \"stopped\",\n" +" transaction_id = args.i } } )\n" +" self.skt:close()\n" +" os.exit(1)\n" +"end\n" +"\n" +"function M.feature_get(self, args)\n" +" local name = args.n\n" +" local response = util.features[name] or (not not M[name])\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = {\n" +" command = \"feature_get\",\n" +" feature_name = name,\n" +" supported = response and \"1\" or \"0\",\n" +" transaction_id = args.i },\n" +" tostring(response) } )\n" +"end\n" +"\n" +"function M.feature_set(self, args)\n" +" local name, value = args.n, args.v\n" +" local success = pcall(function() util.features[name] = value end)\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = {\n" +" command = \"feature_set\",\n" +" feature = name,\n" +" success = success and 1 or 0,\n" +" transaction_id = args.i\n" +" } } )\n" +"end\n" +"\n" +"function M.typemap_get(self, args)\n" +" local function gentype(name, type, xsdtype)\n" +" return { tag = \"map\", atts = { name = name, type = type, [\"xsi:type\"] = xsdtype } }\n" +" end\n" +"\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = {\n" +" command = \"typemap_get\",\n" +" transaction_id = args.i,\n" +" [\"xmlns:xsi\"] = \"http://www.w3.org/2001/XMLSchema-instance\",\n" +" [\"xmlns:xsd\"] = \"http://www.w3.org/2001/XMLSchema\",\n" +" },\n" +" gentype(\"nil\", \"null\"),\n" +" gentype(\"boolean\", \"bool\", \"xsd:boolean\"),\n" +" gentype(\"number\", \"float\", \"xsd:float\"),\n" +" gentype(\"string\", \"string\", \"xsd:string\"),\n" +" gentype(\"function\", \"resource\"),\n" +" gentype(\"userdata\", \"resource\"),\n" +" gentype(\"thread\", \"resource\"),\n" +" gentype(\"table\", \"hash\"),\n" +" gentype(\"sequence\", \"array\"), -- artificial type to represent sequences (1-n continuous indexes)\n" +" gentype(\"multival\", \"array\"), -- used to represent return values\n" +" } )\n" +"end\n" +"\n" +"function M.run(self)\n" +" core.prev_break_line = nil\n" +" return true\n" +"end\n" +"\n" +"function M.step_over(self)\n" +" core.events.register(\"over\")\n" +" return true\n" +"end\n" +"\n" +"function M.step_out(self)\n" +" core.events.register(\"out\")\n" +" return true\n" +"end\n" +"\n" +"function M.step_into(self)\n" +" core.events.register(\"into\")\n" +" return true\n" +"end\n" +"\n" +"function M.eval(self, args, data)\n" +" log(\"DEBUG\", \"Going to eval \"..data)\n" +" local result, err, success\n" +" local env = self.stack(self.coro, 0)\n" +" -- first, try to load as expression\n" +" -- DBGp does not support stack level here, see http://bugs.activestate.com/show_bug.cgi?id=81178\n" +" local func, err = util.loadin(\"return \"..data, env)\n" +"\n" +" -- if it is not an expression, try as statement (assignment, ...)\n" +" if not func then\n" +" func, err = util.loadin(data, env)\n" +" end\n" +"\n" +" if func then\n" +" success, result = pcall(function() return introspection.Multival(func()) end)\n" +" if not success then err = result end\n" +" end\n" +"\n" +" local response = { tag = \"response\", attr = { command = \"eval\", transaction_id = args.i } }\n" +" if not err then\n" +" local nresults = result.n\n" +" if nresults == 1 then result = result[1] end\n" +"\n" +" -- store result for further use (property_*)\n" +" -- TODO: this could be optimized: this is only used for Expressions view and totally useless for interactive console,\n" +" -- so storing result or not could be set by an argument\n" +" local idx\n" +" if nresults > 0 then\n" +" local cache = env[context.Context[-1]]\n" +" idx = #cache + 1\n" +" cache[idx] = result\n" +" end\n" +"\n" +" -- As of Lua 5.1, the maximum stack size (and result count) is 8000, this limit is used to fit all results in one page\n" +" response[1] = introspection.make_property(-1, result, idx or \"\", nil, 1, 8000, 0, nil)\n" +" response.attr.success = 1\n" +" else\n" +" response.attr.success = 0\n" +" response[1] = dbgp.make_error(206, err)\n" +" end\n" +" dbgp.send_xml(self.skt, response)\n" +"end\n" +"\n" +"function M.breakpoint_set(self, args, data)\n" +" if args.o and not core.breakpoints.hit_conditions[args.o] then dbgp.error(200, \"Invalid hit_condition operator: \"..args.o) end\n" +" local filename, lineno = args.f, tonumber(args.n)\n" +" --if it is not in current project path, ignore the breakpoint_set command, send empty response to avoid blocking (add by guanyu)\n" +" if not filename:find(platform.base_dir,1,true) then\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = \"breakpoint_set\", transaction_id = args.i} } )\n" +" return nil;\n" +" end\n" +" local bp = {\n" +" type = args.t,\n" +" state = args.s or \"enabled\",\n" +" temporary = args.r == \"1\", -- \"0\" or nil makes this property false\n" +" hit_count = 0,\n" +" filename = filename,\n" +" lineno = lineno,\n" +" hit_value = tonumber(args.h or 0),\n" +" hit_condition = args.o or \">=\",\n" +" }\n" +"\n" +" if args.t == \"conditional\" then\n" +" bp.expression = data\n" +" -- the expression is compiled only once\n" +" bp.condition = dbgp.assert(207, loadstring(\"return (\" .. data .. \")\"))\n" +" elseif args.t ~= \"line\" then dbgp.error(201, \"BP type \" .. args.t .. \" not yet supported\") end\n" +"\n" +" local bpid = core.breakpoints.insert(bp)\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = \"breakpoint_set\", transaction_id = args.i, state = bp.state, id = bpid } } )\n" +"end\n" +"\n" +"function M.breakpoint_get(self, args)\n" +" dbgp.send_xml(self.skt, { tag = \"response\",\n" +" attr = { command = \"breakpoint_get\", transaction_id = args.i },\n" +" dbgp.assert(205, core.breakpoints.get_xml(tonumber(args.d))) })\n" +"end\n" +"\n" +"function M.breakpoint_list(self, args)\n" +" local bps = { tag = \"response\", attr = { command = \"breakpoint_list\", transaction_id = args.i } }\n" +" for id, bp in pairs(core.breakpoints.get()) do bps[#bps + 1] = core.breakpoints.get_xml(id) end\n" +" dbgp.send_xml(self.skt, bps)\n" +"end\n" +"\n" +"function M.breakpoint_update(self, args)\n" +" local bp = core.breakpoints.get(tonumber(args.d))\n" +" if not bp then dbgp.error(205, \"No such breakpint \"..args.d) end\n" +" if args.o and not core.breakpoints.hit_conditions[args.o] then dbgp.error(200, \"Invalid hit_condition operator: \"..args.o) end\n" +" local response = { tag = \"response\", attr = { command = \"breakpoint_update\", transaction_id = args.i } }\n" +" local needUpdate = false\n" +" local oldline = bp.lineno\n" +" if tonumber(args.n) ~= tonumber(bp.lineno) then\n" +" needUpdate = true\n" +" end\n" +" bp.state = args.s or bp.state\n" +" bp.lineno = tonumber(args.n or bp.lineno)\n" +" bp.hit_value = tonumber(args.h or bp.hit_value)\n" +" bp.hit_condition = args.o or bp.hit_condition\n" +" if needUpdate then\n" +" core.breakpoints.update(oldline, bp)\n" +" end\n" +" dbgp.send_xml(self.skt, response)\n" +"end\n" +"\n" +"function M.breakpoint_remove(self, args)\n" +" local response = { tag = \"response\", attr = { command = \"breakpoint_remove\", transaction_id = args.i } }\n" +" -- args.d may be nil, because the breakpoint does not belong to current project (add by guanyu)\n" +" if args.d and not core.breakpoints.remove(tonumber(args.d)) then dbgp.error(205, \"No such breakpint \"..args.d) end\n" +" dbgp.send_xml(self.skt, response)\n" +"end\n" +"\n" +"function M.stack_depth(self, args)\n" +" local depth = 0\n" +" local coro = get_coroutine(self, args.o)\n" +" for level = 0, math.huge do\n" +" local info = coro:getinfo(level, \"St\")\n" +" if not info then break end -- end of stack\n" +" depth = depth + 1\n" +" if info.istailcall then depth = depth + 1 end -- a 'fake' level is added in that case\n" +" if info.what == \"main\" then break end -- levels below main chunk are not interesting\n" +" end\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = \"stack_depth\", transaction_id = args.i, depth = depth} } )\n" +"end\n" +"\n" +"function M.stack_get(self, args) -- TODO: dynamic code\n" +" -- special URIs to identify unreachable stack levels\n" +" local what2uri = {\n" +" tail = \"tailreturn:/\",\n" +" C = \"ccode:/\",\n" +" }\n" +"\n" +" local function make_level(info, level)\n" +" local attr = { level = level, where = info.name, type=\"file\" }\n" +" local uri = platform.get_uri(info.source)\n" +" if uri and info.currentline then -- reachable level\n" +" attr.filename = uri\n" +" attr.lineno = info.currentline\n" +" else\n" +" attr.filename = what2uri[info.what] or \"unknown:/\"\n" +" attr.lineno = -1\n" +" end\n" +" return { tag = \"stack\", attr = attr }\n" +" end\n" +"\n" +" local node = { tag = \"response\", attr = { command = \"stack_get\", transaction_id = args.i} }\n" +" local coro = get_coroutine(self, args.o)\n" +"\n" +" if args.d then\n" +" local stack_level = tonumber(args.d)\n" +" node[#node+1] = make_level(coro:getinfo(stack_level, \"nSl\"), stack_level)\n" +" else\n" +" for i=0, math.huge do\n" +" local info = coro:getinfo(i, \"nSlt\")\n" +" if not info then break end\n" +" node[#node+1] = make_level(info, i)\n" +" -- add a fake level of stack for tail calls (tells user that the function has not been called directly)\n" +" if info.istailcall then\n" +" node[#node+1] = { tag = \"stack\", attr = { level=i, type=\"file\", filename=\"tailreturn:/\", lineno=-1 } }\n" +" end\n" +" if info.what == \"main\" then break end -- levels below main chunk are not interesting\n" +" end\n" +" end\n" +"\n" +" dbgp.send_xml(self.skt, node)\n" +"end\n" +"\n" +"--- Lists all active coroutines.\n" +"-- Returns a list of active coroutines with their id (an arbitrary string) to query stack and properties. The id is\n" +"-- guaranteed to be unique and stable for all coroutine life (they can be reused as long as coroutine exists).\n" +"-- Others commands such as stack_get or property_* commands takes an additional -o switch to query a particular cOroutine.\n" +"-- If the switch is not given, running coroutine will be used.\n" +"-- In case of error on coroutines (most likely coroutine not found or dead), an error 399 is thrown.\n" +"-- Note there is an important limitation due to Lua 5.1 coroutine implementation: you cannot query main \"coroutine\" from\n" +"-- another one, so main coroutine is not in returned list (this will change with Lua 5.2).\n" +"--\n" +"-- This is a non-standard command. The returned XML has the following strucuture:\n" +"-- \n" +"-- \" id=\"\" running=\"0|1\" />\n" +"-- ...\n" +"-- \n" +"function M.coroutine_list(self, args)\n" +" local running = self.coro[1]\n" +" local coroutines = { tag = \"response\", attr = { command = \"coroutine_list\", transaction_id = args.i } }\n" +" -- as any operation on main coroutine will fail, it is not yet listed\n" +" -- coroutines[1] = { name = \"coroutine\", attr = { id = 0, name = \"main\", running = (running == nil) and \"1\" or \"0\" } }\n" +" for id, coro in pairs(core.active_coroutines.from_id) do\n" +" if id ~= \"n\" then\n" +" coroutines[#coroutines + 1] = { tag = \"coroutine\", attr = { id = id, name = tostring(coro), running = (coro == running) and \"1\" or \"0\" } }\n" +" end\n" +" end\n" +" dbgp.send_xml(self.skt, coroutines)\n" +"end\n" +"\n" +"function M.context_names(self, args)\n" +" local coro = get_coroutine(self, args.o)\n" +" local level = tonumber(args.d or 0)\n" +" local info = coro:getinfo(level, \"f\") or dbgp.error(301, \"No such stack level \"..tostring(level))\n" +"\n" +" -- All contexts are always passed, even if empty. This is how DLTK expect context, what about others ?\n" +" local contexts = {\n" +" tag = \"response\", attr = { command = \"context_names\", transaction_id = args.i },\n" +" { tag = \"context\", attr = { name = \"Local\", id = 0 } },\n" +" { tag = \"context\", attr = { name = \"Upvalue\", id = 2 } },\n" +" { tag = \"context\", attr = { name = \"Global\", id = 1 } },\n" +" }\n" +"\n" +" dbgp.send_xml(self.skt, contexts)\n" +"end\n" +"\n" +"function M.context_get(self, args)\n" +" local cxt_num = tonumber(args.c or 0)\n" +" local cxt_id = context.Context[cxt_num] or dbgp.error(302, \"No such context: \"..tostring(cxt_num))\n" +" local level = tonumber(args.d or 0)\n" +" local coro = get_coroutine(self, args.o)\n" +" local cxt = self.stack(coro, level)\n" +"\n" +" local properties = { tag = \"response\", attr = { command = \"context_get\", transaction_id = args.i, context = context} }\n" +" -- iteration over global is different (this could be unified in Lua 5.2 thanks to __pairs metamethod)\n" +" for name, val in (cxt_num == 1 and next or getmetatable(cxt[cxt_id]).iterator), cxt[cxt_id], nil do\n" +" -- the DBGp specification is not clear about the depth of a context_get, but a recursive get could be *really* slow in Lua\n" +" properties[#properties + 1] = introspection.make_property(cxt_num, val, name, nil, 0, util.features.max_children, 0,\n" +" util.features.max_data, cxt_num ~= 1)\n" +" end\n" +"\n" +" dbgp.send_xml(self.skt, properties)\n" +"end\n" +"\n" +"-------------------------------------------------------------------------------\n" +"-- Property_* commands\n" +"-------------------------------------------------------------------------------\n" +"-- This in the environment in which properties are get or set.\n" +"-- It notably contain a collection of proxy table which handle transparentely get/set operations on special fields\n" +"-- and the cache of complex keys.\n" +"local property_evaluation_environment = {\n" +" key_cache = introspection.key_cache,\n" +" metatable = setmetatable({ }, {\n" +" __index = function(self, tbl) return getmetatable(tbl) end,\n" +" __newindex = function(self, tbl, mt) return setmetatable(tbl, mt) end,\n" +" }),\n" +" environment = util.eval_env,\n" +"}\n" +"-- to allows to be set as metatable\n" +"property_evaluation_environment.__index = property_evaluation_environment\n" +"\n" +"function M.property_get(self, args)\n" +" --TODO BUG ECLIPSE TOOLSLINUX-99 352316\n" +" local cxt_num, name = assert(util.unb64(args.n):match(\"^(%-?%d+)|(.*)$\"))\n" +" cxt_num = tonumber(args.c or cxt_num)\n" +" local cxt_id = context.Context[cxt_num] or dbgp.error(302, \"No such context: \"..tostring(cxt_num))\n" +" local level = tonumber(args.d or 0)\n" +" local coro = get_coroutine(self, args.o)\n" +" local size = tonumber(args.m or util.features.max_data)\n" +" if size < 0 then size = nil end -- call from property_value\n" +" local page = tonumber(args.p or 0)\n" +" local cxt = self.stack(coro, level)\n" +" local chunk = dbgp.assert(206, util.loadin(\"return \"..name, property_evaluation_environment))\n" +" local prop = select(2, dbgp.assert(300, pcall(chunk, cxt[cxt_id])))\n" +" local response = introspection.make_property(cxt_num, prop, name, name, util.features.max_depth, util.features.max_children, page, size)\n" +" -- make_property is not able to flag special variables as such when they are at root of property\n" +" -- special variables queries are in the form \"[(...)[a][b]<...>]\"\n" +" -- TODO: such parsing is far from perfect\n" +" if name:match(\"^[%w_]+%[.-%b[]%]$\") == name then response.attr.type = \"special\" end\n" +" dbgp.send_xml(self.skt, { tag = \"response\",\n" +" attr = { command = \"property_get\", transaction_id = args.i, context = context},\n" +" response } )\n" +"end\n" +"\n" +"function M.property_value(self, args)\n" +" args.m = -1\n" +" M.property_get(self, args)\n" +"end\n" +"\n" +"function M.property_set(self, args, data)\n" +" local cxt_num, name = assert(util.unb64(args.n):match(\"^(%-?%d+)|(.*)$\"))\n" +" cxt_num = tonumber(args.c or cxt_num)\n" +" local cxt_id = context.Context[cxt_num] or dbgp.error(302, \"No such context: \"..tostring(cxt_num))\n" +" local level = tonumber(args.d or 0)\n" +" local coro = get_coroutine(self, args.o)\n" +" local cxt = self.stack(coro, level)\n" +"\n" +" -- evaluate the new value in the local context\n" +" local value = select(2, dbgp.assert(206, pcall(dbgp.assert(206, util.loadin(\"return \"..data, cxt)))))\n" +"\n" +" local chunk = dbgp.assert(206, util.loadin(name .. \" = value\", setmetatable({ value = value }, property_evaluation_environment)))\n" +" dbgp.assert(206, pcall(chunk, cxt[cxt_id]))\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { success = 1, transaction_id = args.i } } )\n" +"end\n" +"\n" +"--TODO dynamic code handling\n" +"-- The DBGp specification is not clear about the line number meaning, this implementation is 1-based and numbers are inclusive\n" +"function M.source(self, args)\n" +" local path\n" +" if args.f then\n" +" path = platform.get_path(args.f)\n" +" else\n" +" path = self.coro:getinfo(0, \"S\").source\n" +" assert(path:sub(1,1) == \"@\")\n" +" path = path:sub(2)\n" +" end\n" +" local file, err = io.open(path)\n" +" if not file then dbgp.error(100, err, { success = 0 }) end\n" +" -- Try to identify compiled files\n" +" if file:read(1) == \"\033\" then dbgp.error(100, args.f..\" is bytecode\", { success = 0 }) end\n" +" file:seek(\"set\", 0)\n" +"\n" +"\n" +" local srclines = { }\n" +" local beginline, endline, currentline = tonumber(args.b or 0), tonumber(args.e or math.huge), 0\n" +" for line in file:lines() do\n" +" currentline = currentline + 1\n" +" if currentline >= beginline and currentline <= endline then\n" +" srclines[#srclines + 1] = line\n" +" elseif currentline >= endline then break end\n" +" end\n" +" file:close()\n" +" srclines[#srclines + 1] = \"\" -- to add a trailing \n\n" +"\n" +" dbgp.send_xml(self.skt, { tag = \"response\",\n" +" attr = { command = \"source\", transaction_id = args.i, success = 1},\n" +" util.b64(table.concat(srclines, \"\n\")) })\n" +"end\n" +"\n" +"-- Factory for both stdout and stderr commands, change file descriptor in io\n" +"local function output_command_handler_factory(mode)\n" +" return function(self, args)\n" +" if args.c == \"0\" then -- disable\n" +" io[mode] = io.base[mode]\n" +" else\n" +" io[mode] = setmetatable({ skt = self.skt, mode = mode }, args.c == \"1\" and core.copy_output or core.redirect_output)\n" +" end\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = mode, transaction_id = args.i, success = \"1\" } } )\n" +" end\n" +"end\n" +"\n" +"M.stdout = output_command_handler_factory(\"stdout\")\n" +"M.stderr = output_command_handler_factory(\"stderr\")\n" +"\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.commands\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.context\n" +"package.preload[\"debugger.context\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Context handling: allows to evaluate code snippets in the context of a function\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local M = { }\n" +"\n" +"local dbgp = require \"debugger.dbgp\"\n" +"local util = require \"debugger.util\"\n" +"\n" +"-- make unique object to access contexts\n" +"local LOCAL, UPVAL, GLOBAL, EVAL, STORE, HANDLE = {}, {}, {}, {}, {}, {}\n" +"\n" +"local getglobals\n" +"if _VERSION == \"Lua 5.1\" then\n" +" getglobals = function(f) return getfenv(f) end\n" +"elseif _VERSION == \"Lua 5.2\" then\n" +" getglobals = function(f, cxt)\n" +" -- 'global' environment: this is either the local _ENV or upvalue _ENV. A special case happen when a\n" +" -- function does not reference any global variable: the upvalue _ENV may not exist at all. In this case,\n" +" -- global environment is not relevant so it is fixed to an empty table. Another solution would be to set it\n" +" -- to the environment from above stack level but it would require some overhead (especially if multiple\n" +" -- levels must be instantiated)\n" +" if cxt[LOCAL][STORE][\"_ENV\"] then return cxt[LOCAL][\"_ENV\"]\n" +" elseif cxt[UPVAL][STORE][\"_ENV\"] then return cxt[UPVAL][\"_ENV\"]\n" +" else return { } end\n" +" end\n" +"end\n" +"\n" +"--- Captures variables for given stack level. The capture contains local, upvalues and global variables.\n" +"-- The capture can be seen as a proxy table to the stack level: any value can be queried or set no matter\n" +"-- it is a local or an upvalue.\n" +"-- The individual local and upvalues context are also available and can be queried and modified with indexed notation too.\n" +"-- These objects are NOT persistant and must not be used outside the debugger loop which instanciated them !\n" +"M.Context = {\n" +" -- Context identifiers can be accessed by their DBGp context ID\n" +" [0] = LOCAL,\n" +" [1] = GLOBAL, -- DLTK internal ID for globals is 1\n" +" [2] = UPVAL,\n" +" -- EVAL is used to keep results from eval in cache in order to browse or modify them, results are stored as sequence\n" +" [-1] = EVAL,\n" +" STORE = STORE,\n" +"\n" +" -- gets a variable by name with correct handling of Lua scope chain\n" +" -- the or chain does not work here beacause __index metamethod would raise an error instead of returning nil\n" +" __index = function(self, k)\n" +" if self[LOCAL][STORE][k] then return self[LOCAL][k]\n" +" elseif self[UPVAL][STORE][k] then return self[UPVAL][k]\n" +" else return self[GLOBAL][k] end\n" +" end,\n" +" __newindex = function(self, k, v)\n" +" if self[LOCAL][STORE][k] then self[LOCAL][k] = v\n" +" elseif self[UPVAL][STORE][k] then self[UPVAL][k] = v\n" +" else self[GLOBAL][k] = v end\n" +" end,\n" +"\n" +" -- debug only !!\n" +" __tostring = function(self)\n" +" local buf = { \"Locals: \n\" }\n" +" for k,v in pairs(self[LOCAL][STORE]) do\n" +" buf[#buf+1] = \"\t\"..tostring(k)..\"(\"..tostring(v)..\")=\"..tostring(self[LOCAL][k])..\"\n\"\n" +" end\n" +" buf[#buf+1] = \"Upvalues: \n\"\n" +" for k,v in pairs(self[UPVAL][STORE]) do\n" +" buf[#buf+1] = \"\t\"..tostring(k)..\"(\"..tostring(v)..\")=\"..tostring(self[UPVAL][k])..\"\n\"\n" +" end\n" +" return table.concat(buf)\n" +" end,\n" +"\n" +" LocalContext = {\n" +" __index = function(self, k)\n" +" local index = self[STORE][k]\n" +" if not index then error(\"The local \"..tostring(k)..\" does not exists.\") end\n" +" local handle = self[HANDLE]\n" +" return select(2, handle.coro:getlocal(handle.level, index))\n" +" end,\n" +" __newindex = function(self, k, v)\n" +" local index = self[STORE][k]\n" +" if index then\n" +" local handle = self[HANDLE]\n" +" handle.coro:setlocal(handle.level, index, v)\n" +" else error(\"Cannot set local \" .. k) end\n" +" end,\n" +" -- Lua 5.2 ready :)\n" +" --__pairs = function(self) return getmetatable(self).iterator, self, nil end,\n" +" iterator = function(self, prev)\n" +" local key, index = next(self[STORE], prev)\n" +" if key then return key, self[key] else return nil end\n" +" end,\n" +" },\n" +"\n" +" UpvalContext = {\n" +" __index = function(self, k)\n" +" local index = self[STORE][k]\n" +" if not index then error(\"The local \"..tostring(k)..\" does not exitsts.\") end\n" +" return select(2, debug.getupvalue(self[HANDLE], index))\n" +" end,\n" +" __newindex = function(self, k, v)\n" +" local index = self[STORE][k]\n" +" if index then debug.setupvalue(self[HANDLE], index, v)\n" +" else error(\"Cannot set upvalue \" .. k) end\n" +" end,\n" +" -- Lua 5.2 ready :)\n" +" -- __pairs = function(self) return getmetatable(self).iterator, self, nil end,\n" +" iterator = function(self, prev)\n" +" local key, index = next(self[STORE], prev)\n" +" if key then return key, self[key] else return nil end\n" +" end,\n" +" },\n" +"\n" +" --- Context constructor\n" +" -- @param coro (util.*Thread instance) coroutine to map to\n" +" -- @param level (number) stack level do dump (script stack level)\n" +" new = function(cls, coro, level)\n" +" local locals, upvalues = {}, {}\n" +" if level < 0 then dbgp.error(301, \"No such stack level: \"..tostring(level)) end\n" +" local func = (coro:getinfo(level, \"f\") or dbgp.error(301, \"No such stack level: \"..tostring(level))).func\n" +"\n" +" -- local variables\n" +" for i=1, math.huge do\n" +" local name, val = coro:getlocal(level, i)\n" +" if not name then break\n" +" elseif name:sub(1,1) ~= \"(\" then -- skip internal values\n" +" locals[name] = i\n" +" end\n" +" end\n" +"\n" +" -- upvalues\n" +" for i=1, math.huge do\n" +" local name, val = debug.getupvalue(func, i)\n" +" if not name then break end\n" +" upvalues[name] = i\n" +" end\n" +"\n" +" locals = setmetatable({ [STORE] = locals, [HANDLE] = { level = level, coro = coro } }, cls.LocalContext)\n" +" upvalues = setmetatable({ [STORE] = upvalues, [HANDLE] = func }, cls.UpvalContext)\n" +"\n" +" local result = setmetatable({ [LOCAL] = locals, [UPVAL] = upvalues, [EVAL] = {} }, cls)\n" +" rawset(result, GLOBAL, getglobals(func, result))\n" +" return result\n" +" end,\n" +"}\n" +"\n" +"--- Handle caching of all instantiated context.\n" +"-- Returns a function which takes 2 parameters: thread and stack level and returns the corresponding context. If this\n" +"-- context has been already queried there is no new instantiation. A ContextManager is valid only during the debug loop\n" +"-- on which it has been instantiated. References to a ContextManager must be lost after the end of debug loop (so\n" +"-- threads can be collected).\n" +"-- If a context cannot be instantiated, an 301 DBGP error is thrown.\n" +"function M.ContextManager()\n" +" local cache = { }\n" +" return function(thread, level)\n" +" -- the real coroutine is used as key (not the wrapped instance as its unicity is not guaranteed)\n" +" -- otherwise, true is used to identify current thread (as nil is not a valid table key)\n" +" local key = thread[1] or true\n" +" local thread_contexts = cache[key]\n" +" if not thread_contexts then\n" +" thread_contexts = { }\n" +" cache[key] = thread_contexts\n" +" end\n" +"\n" +" local context = thread_contexts[level]\n" +" if not context then\n" +" context = M.Context:new(thread, level)\n" +" thread_contexts[level] = context\n" +" end\n" +"\n" +" return context\n" +" end\n" +"end\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.context\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.dbgp\n" +"package.preload[\"debugger.dbgp\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- DBGp protocol utility function (parsing, error handling, XML generation).\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local util = require \"debugger.util\"\n" +"\n" +"local error, setmetatable, type, pairs, ipairs, tostring, tconcat =\n" +" error, setmetatable, type, pairs, ipairs, tostring, table.concat\n" +"\n" +"local M = { }\n" +"\n" +"--- Parses the DBGp command arguments and returns it as a Lua table with key/value pairs.\n" +"-- For example, the sequence -i 5 -j foo will result in {i=5, j=foo}\n" +"-- @param cmd_args (string) sequence of arguments\n" +"-- @return table described above\n" +"function M.arg_parse(cmd_args)\n" +" local args = {}\n" +" for arg, val in cmd_args:gmatch(\"%-(%w) (%S+)\") do\n" +" args[arg] = val\n" +" end\n" +" return args\n" +"end\n" +"\n" +"--- Parses a command line\n" +"-- @return commande name (string)\n" +"-- @retrun arguments (table)\n" +"-- @return data (string, optional)\n" +"function M.cmd_parse(cmd)\n" +" local cmd_name, args, data\n" +" if cmd:find(\"--\", 1, true) then -- there is a data part\n" +" cmd_name, args, data = cmd:match(\"^(%S+)%s+(.*)%s+%-%-%s*(.*)$\")\n" +" data = util.unb64(data)\n" +" else\n" +" cmd_name, args = cmd:match(\"^(%S+)%s+(.*)$\")\n" +" end\n" +" return cmd_name, M.arg_parse(args), data\n" +"end\n" +"\n" +"--- Returns the packet read from socket, or nil followed by an error message on errors.\n" +"function M.read_packet(skt)\n" +" local size = {}\n" +" while true do\n" +" local byte, err = skt:receive(1)\n" +" if not byte then return nil, err end\n" +" if byte == \"\000\" then break end\n" +" size[#size+1] = byte\n" +" end\n" +" return tconcat(size)\n" +"end\n" +"\n" +"M.DBGP_ERR_METATABLE = {} -- unique object used to identify DBGp errors\n" +"\n" +"--- Throws a correct DBGp error which result in a fine tuned error message to the server.\n" +"-- It is intended to be called into a command to make a useful error message, a standard Lua error\n" +"-- result in a code 998 error (internal debugger error).\n" +"-- @param code numerical error code\n" +"-- @param message message string (optional)\n" +"-- @param attr extra attributes to add to the response tag (optional)\n" +"function M.error(code, message, attr)\n" +" error(setmetatable({ code = code, message = message, attr = attr or {} }, M.DBGP_ERR_METATABLE), 2)\n" +"end\n" +"\n" +"--- Like core assert but throws a DBGp error if condition is not met.\n" +"-- @param code numerical error code thrown if condition is not met.\n" +"-- @param message condition to test\n" +"-- @param ... will be used as error message if test fails.\n" +"function M.assert(code, success, ...)\n" +" if not success then M.error(code, (...)) end\n" +" return success, ...\n" +"end\n" +"\n" +"-- -----------------\n" +"-- Outgoing data\n" +"-- -----------------\n" +"local xmlattr_specialchars = { ['\"'] = \""\", [\"<\"] = \"<\", [\"&\"] = \"&\" }\n" +"--- Very basic XML generator\n" +"-- Generates a XML string from a Lua Object Model (LOM) table.\n" +"-- See http://matthewwild.co.uk/projects/luaexpat/lom.html\n" +"function M.lom2str(xml)\n" +" local pieces = { } -- string buffer\n" +"\n" +" local function generate(node)\n" +" pieces[#pieces + 1] = \"<\"..node.tag\n" +" pieces[#pieces + 1] = \" \"\n" +" -- attribute ordering is not honored here\n" +" for attr, val in pairs(node.attr or {}) do\n" +" if type(attr) == \"string\" then\n" +" pieces[#pieces + 1] = attr .. '=\"' .. tostring(val):gsub('[\"&<]', xmlattr_specialchars) .. '\"'\n" +" pieces[#pieces + 1] = \" \"\n" +" end\n" +" end\n" +" pieces[#pieces] = nil -- remove the last separator (useless)\n" +"\n" +" if node[1] then\n" +" pieces[#pieces + 1] = \">\"\n" +" for _, child in ipairs(node) do\n" +" if type(child) == \"table\" then generate(child)\n" +" else pieces[#pieces + 1] = \"\" end\n" +" end\n" +" pieces[#pieces + 1] = \"\"\n" +" else\n" +" pieces[#pieces + 1] = \"/>\"\n" +" end\n" +" end\n" +"\n" +" generate(xml)\n" +" return tconcat(pieces)\n" +"end\n" +"\n" +"function M.send_xml(skt, resp)\n" +" if not resp.attr then resp.attr = {} end\n" +" resp.attr.xmlns = \"urn:debugger_protocol_v1\"\n" +"\n" +" local data = '\n'..M.lom2str(resp)\n" +" util.log(\"DEBUG\", \"Send \" .. data)\n" +" skt:send(tostring(#data)..\"\000\"..data..\"\000\")\n" +"end\n" +"\n" +"--- Return an XML tag describing a debugger error, with an optional message\n" +"-- @param code (number) error code (see DBGp specification)\n" +"-- @param msg (string, optional) textual description of error\n" +"-- @return table, suitable to be converted into XML\n" +"function M.make_error(code, msg)\n" +" local elem = { tag = \"error\", attr = { code = code } }\n" +" if msg then\n" +" elem[1] = { tostring(msg), tag = \"message\" }\n" +" end\n" +" return elem\n" +"end\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.dbgp\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.introspection\n" +"package.preload[\"debugger.introspection\"] = function(...)\n" +"-- ----------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Julien Desgats - initial API and implementation\n" +"-- ----------------------------------------------------------------------------\n" +"-- Properties generation. Generate a LOM table with data from introspection.\n" +"-- ----------------------------------------------------------------------------\n" +"\n" +"local debug = require \"debug\"\n" +"local platform = require \"debugger.platform\"\n" +"local util = require \"debugger.util\"\n" +"\n" +"local tostring, type, assert, next, rawget, getmetatable, setmetatable, getfenv, select, coyield, cocreate, costatus, coresume, sformat, tconcat =\n" +" tostring, type, assert, next, rawget, getmetatable, setmetatable, getfenv, select, coroutine.yield, coroutine.create, coroutine.status, coroutine.resume, string.format, table.concat\n" +"\n" +"local MULTIVAL_MT = { __tostring = function() return \"\" end }\n" +"local probes = { }\n" +"\n" +"-- ---------- --\n" +"-- Public API --\n" +"-- ---------- --\n" +"\n" +"---\n" +"-- Introspection logic. This module implements Lua objects introspection and\n" +"-- generates a [DBGP](http://xdebug.org/docs-dbgp.php) compatible\n" +"-- [LOM](http://matthewwild.co.uk/projects/luaexpat/lom.html) data scructure.\n" +"-- @module debugger.introspection\n" +"local M = { }\n" +"\n" +"---\n" +"-- Represent the actual data to send to the debugger.\n" +"-- Full XML specification can be found in [DBGP specification](http://xdebug.org/docs-dbgp.php#properties-variables-and-values).\n" +"-- Modifying properties after their generation is possible (as actual data serialization/sending is delayed)\n" +"-- but should be used with care. The XML structure uses the [LOM](http://matthewwild.co.uk/projects/luaexpat/lom.html)\n" +"-- format, refer to these documents to get more informations about fields.\n" +"--\n" +"-- In addition to table fields, it has an array part, `[1]` being the string representation (base64 encoded),\n" +"-- possibly followed by chlid properties (@{#DBGPProperty} themselves)\n" +"--\n" +"-- @field #string tag Always \"property\"\n" +"-- @field #table attr XML attributes, see DBGP specification\n" +"-- @type DBGPProperty\n" +"\n" +"---\n" +"-- Inpectors table, contain all inspector functions.\n" +"-- Keys are either type names (`string`, `number`, ...) or metatables\n" +"-- that have a custom inspector attached.\n" +"-- @field [parent=#debugger.introspection] #table inspectors\n" +"M.inspectors = { }\n" +"\n" +"---\n" +"-- Generate a DBGP property if needed. If data is in data pagination and recursion depth ranges,\n" +"-- and send a property to the debugger, otherwise drop current property.\n" +"-- @param #string name Property name (displayed in IDE)\n" +"-- @param #string typename Type name (displayed in IDE)\n" +"-- @param #string repr Value string representation\n" +"-- @param #DBGPProperty parent Parent property\n" +"-- @param #string fullname Lua expression used to get value back in further calls\n" +"-- @return #table description\n" +"-- @function [parent=#debugger.introspection] property\n" +"M.property = coyield\n" +"\n" +"---\n" +"-- Adds a probe that will be called for every unknown table/userdata.\n" +"-- @param #function probe Inspector function to call.\n" +"-- @function [parent=#debugger.introspection] add_probe\n" +"M.add_probe = function(probe) probes[#probes + 1] = probe end\n" +"\n" +"---\n" +"-- Inspects a Lua value by dispatching it to correct inspector. Inspector functions have the same API.\n" +"-- @param #string name Property name (will be displayed by IDE)\n" +"-- @param value Value to inspect\n" +"-- @param #table parent Parent property (LOM table of the )\n" +"-- @param #string fullname Expression used to retrieve `value` for further debugger calls\n" +"-- @return #DBGPProperty The inspected value as returned by @{debugger.introspection#debugger.introspection.property}.\n" +"-- @return #nil If the value has not been inspected\n" +"-- @function [parent=#debugger.introspection] inspect\n" +"M.inspect = function(name, value, parent, fullname)\n" +" return (M.inspectors[type(value)] or M.inspectors.default)(name, value, parent, fullname)\n" +"end\n" +"\n" +"-- ----------------- --\n" +"-- Utility functions --\n" +"-- ----------------- --\n" +"\n" +"local function default_inspector(name, value, parent, fullname)\n" +" return M.property(name, type(value), tostring(value), parent, fullname)\n" +"end\n" +"\n" +"-- Inspects types that can have a metatable (table and userdata). Returns\n" +"-- 1) generated property\n" +"-- 2) boolean indicating whether a custom inspector has been called (in that case, do not process value any further)\n" +"local function metatable_inspector(name, value, parent, fullname)\n" +" local mt = getmetatable(value)\n" +" do\n" +" -- find by metatable\n" +" local custom = M.inspectors[mt]\n" +" if custom then return custom(name, value, parent, fullname), true end\n" +" -- or else call probes\n" +" for i=1, #probes do\n" +" local prop = probes[i](name, value, parent, fullname)\n" +" if prop then return prop, true end\n" +" end\n" +" end\n" +"\n" +" local prop = default_inspector(name, value, parent, fullname)\n" +" if mt and prop then\n" +" local mtprop = M.inspect(\"metatable\", mt, prop, \"metatable[\"..prop.attr.fullname..\"]\")\n" +" if mtprop then mtprop.attr.type = \"special\" end\n" +" end\n" +" return prop, false\n" +"end\n" +"\n" +"local function fancy_func_repr(f, info)\n" +" local args = {}\n" +" for i=1, info.nparams do\n" +" args[i] = debug.getlocal(f, i)\n" +" end\n" +"\n" +" if info.isvararg then\n" +" args[#args+1] = \"...\"\n" +" end\n" +"\n" +" return \"function(\" .. tconcat(args, \", \") .. \")\"\n" +"end\n" +"\n" +"--- Generate a name siutable for table index syntax\n" +"-- @param name Key name\n" +"-- @return #string A table index style index\n" +"-- @usage generate_printable_key('foo') => '[\"foo\"]'\n" +"-- @usage generate_printable_key(12) => '[12]'\n" +"-- @usage generate_printable_key({}) => '[table: 0x12345678]\n" +"-- @function [parent=#debugger.introspection] generate_printable_key\n" +"local function generate_printable_key(name)\n" +" return \"[\" .. (type(name) == \"string\" and sformat(\"%q\", name) or tostring(name)) .. \"]\"\n" +"end\n" +"M.generate_printable_key = generate_printable_key\n" +"\n" +"-- Used to store complex keys (other than string and number) as they cannot be passed in text\n" +"-- For these keys, the resulting expression will not be the key itself but \"key_cache[...]\"\n" +"-- where key_cache must be mapped to this table to resolve key correctly.\n" +"M.key_cache = setmetatable({ n=0 }, { __mode = \"v\" })\n" +"\n" +"local function generate_key(name)\n" +" local tname = type(name)\n" +" if tname == \"string\" then return sformat(\"%q\", name)\n" +" elseif tname == \"number\" or tname == \"boolean\" then return tostring(name)\n" +" else -- complex key, use key_cache for lookup\n" +" local i = M.key_cache.n\n" +" M.key_cache[i] = name\n" +" M.key_cache.n = i+1\n" +" return \"key_cache[\"..tostring(i)..\"]\"\n" +" end\n" +"end\n" +"\n" +"--- Generate a usable fullname for a value.\n" +"-- Based on parent fullname and key value, return a valid Lua expression.\n" +"-- Key can be any value (as anything can act as table key). If it cannot\n" +"-- be serialized (only string, number and boolean can), it will be temporarly\n" +"-- stored in an internal cache to be retrieved later.\n" +"-- @param #string parent Parent fullname\n" +"-- @param key The child key to generate fullname for\n" +"-- @return #string A valid fullname expression\n" +"-- @function [parent=#debugger.introspection] make_fullname\n" +"local function make_fullname(parent, key)\n" +" return parent .. \"[\" .. generate_key(key) .. \"]\"\n" +"end\n" +"M.make_fullname = make_fullname\n" +"\n" +"-- ---------- --\n" +"-- Inspectors --\n" +"-- ---------- --\n" +"\n" +"M.inspectors.number = default_inspector\n" +"M.inspectors.boolean = default_inspector\n" +"M.inspectors[\"nil\"] = default_inspector\n" +"M.inspectors.userdata = default_inspector\n" +"M.inspectors.thread = default_inspector\n" +"M.inspectors.default = default_inspector -- allows 3rd party inspectors to use the default inspector if needed\n" +"\n" +"M.inspectors.userdata = function(name, value, parent, fullname)\n" +" return (metatable_inspector(name, value, parent, fullname)) -- drop second return value\n" +"end\n" +"\n" +"M.inspectors.string = function(name, value, parent, fullname)\n" +" -- escape linebreaks as \n and not as \<0x0A> like %q does\n" +" return M.property(name, \"string\", sformat(\"%q\", value):gsub(\"\\\n\", \"\\n\"), parent, fullname)\n" +"end\n" +"\n" +"M.inspectors[\"function\"] = function(name, value, parent, fullname)\n" +" local info = debug.getinfo(value, \"nSflu\")\n" +" local prop\n" +" if info.what ~= \"C\" then\n" +" -- try to create a fancy representation if possible\n" +" local repr = info.nparams and fancy_func_repr(value, info) or tostring(value)\n" +" if info.source:sub(1,1) == \"@\" then\n" +" repr = repr .. \"\n\" .. platform.get_uri(\"@\" .. info.source) .. \"\n\" .. tostring(info.linedefined)\n" +" end\n" +" prop = M.property(name, \"function (Lua)\", repr, parent, fullname)\n" +" else\n" +" prop = M.property(name, \"function\", tostring(value), parent, fullname)\n" +" end\n" +" if not prop then return nil end\n" +"\n" +" -- (5.1 only) environment is dumped only if it is different from global environment\n" +" -- TODO: this is not a correct behavior: environment should be dumped if is different from current stack level one\n" +" local fenv = getfenv and getfenv(value)\n" +" if fenv and fenv ~= getfenv(0) then\n" +" local fenvprop = M.inspect(\"environment\", fenv, prop, \"environment[\"..prop.attr.fullname..\"]\")\n" +" if fenvprop then fenvprop.attr.type = \"special\" end\n" +" end\n" +"\n" +" return prop\n" +"end\n" +"\n" +"\n" +"M.inspectors.table = function(name, value, parent, fullname)\n" +" local prop, iscustom = metatable_inspector(name, value, parent, fullname)\n" +" if not prop or iscustom then return prop end\n" +"\n" +" -- iterate over table values and detect arrays at the same time\n" +" -- next is used to circumvent __pairs metamethod in 5.2\n" +" local isarray, i = true, 1\n" +" for k,v in next, value, nil do\n" +" M.inspect(generate_printable_key(k), v, prop, make_fullname(fullname, k))\n" +" -- array detection: keys should be accessible by 1..n keys\n" +" isarray = isarray and rawget(value, i) ~= nil\n" +" i = i + 1\n" +" end\n" +" -- empty tables are considered as tables\n" +" if isarray and i > 1 then prop.attr.type = \"sequence\" end\n" +"\n" +" return prop\n" +"end\n" +"\n" +"M.inspectors[MULTIVAL_MT] = function(name, value, parent, fullname)\n" +" if value.n == 1 then\n" +" -- return directly the value as result\n" +" return M.inspect(name, value[1], parent, fullname)\n" +" else\n" +" -- wrap values inside a multival container\n" +" local prop = M.property(name, \"multival\", \"\", parent, fullname)\n" +" if not prop then return nil end\n" +" for i=1, value.n do\n" +" M.inspect(generate_printable_key(i), value[i], prop, fullname .. \"[\" .. i .. \"]\")\n" +" end\n" +" return prop\n" +" end\n" +"end\n" +"\n" +"-- ------------ --\n" +"-- Internal API --\n" +"-- ------------ --\n" +"\n" +"-- Used to inspect \"multival\" or \"vararg\" values. The typical use is to pack function result(s) in a single\n" +"-- value to inspect. The Multival instances can be passed to make_property as a single value, they will be\n" +"-- correctly reported to debugger\n" +"function M.Multival(...)\n" +" return setmetatable({ n=select(\"#\", ...), ... }, MULTIVAL_MT)\n" +"end\n" +"\n" +"--- Makes a property form a name/value pair (and fullname). This is an **internal** function, and should not be used by 3rd party inspectors.\n" +"-- @param #number cxt_id Context ID in which this value resides (workaround bug 352316)\n" +"-- @param value The value to debug\n" +"-- @param name The name associated with value, passed through tostring, so it can be anything\n" +"-- @param #string fullname A Lua expression to eval to get that property again (if nil, computed automatically)\n" +"-- @param #number depth The maximum property depth (recursive calls)\n" +"-- @param #number pagesize maximum children to include\n" +"-- @param #number page The page to generate (0 based)\n" +"-- @param #number size_limit Optional, if set, the maximum size of the string representation (in bytes)\n" +"-- @param #boolean safe_name If true, does not encode the name as table key\n" +"-- @return #DBGPProperty root property\n" +"-- @function [parent=#debugger.introspection] make_property\n" +"--TODO BUG ECLIPSE TOOLSLINUX-99 352316 : as a workaround, context is encoded into the fullname property\n" +"M.make_property = function(cxt_id, value, name, fullname, depth, pagesize, page, size_limit, safe_name)\n" +" fullname = fullname or \"(...)[\" .. generate_key(name) .. \"]\"\n" +" if not safe_name then name = generate_printable_key(name) end\n" +"\n" +" local generator = cocreate(function() return M.inspect(name, value, nil, fullname) end)\n" +" local propstack = { }\n" +" local rootnode\n" +" local catchthis = true\n" +" local nodestoskip = page * pagesize -- nodes to skip at root level to respect pagination\n" +" local fullname_prefix = tostring(cxt_id)..\"|\"\n" +"\n" +" while true do\n" +" local succes, name, datatype, repr, parent, fullname = assert(coresume(generator, catchthis and propstack[#propstack] or nil))\n" +" -- finalize and pop all finished properties\n" +" while propstack[#propstack] ~= parent do\n" +" local topop = propstack[#propstack]\n" +" topop.attr.fullname = util.rawb64(fullname_prefix .. topop.attr.fullname)\n" +" propstack[#propstack] = nil\n" +" end\n" +" if costatus(generator) == \"dead\" then break end\n" +"\n" +" local prop = {\n" +" tag = \"property\",\n" +" attr = {\n" +" children = 0,\n" +" pagesize = pagesize,\n" +" page = parent and 0 or page,\n" +" type = datatype,\n" +" name = name,\n" +" fullname = fullname,\n" +" encoding = \"base64\",\n" +" size = #repr,\n" +" },\n" +" util.b64(size_limit and repr:sub(1, size_limit) or repr)\n" +" }\n" +"\n" +" if parent then\n" +" parent.attr.children = 1\n" +" parent.attr.numchildren = (parent.attr.numchildren or 0) + 1\n" +" -- take pagination into accont to know if node needs to be catched\n" +" catchthis = #parent <= pagesize and #propstack <= depth\n" +" if parent == rootnode then\n" +" catchthis = catchthis and nodestoskip <= 0\n" +" nodestoskip = nodestoskip - 1\n" +" end\n" +" -- add node to tree\n" +" if catchthis then\n" +" parent[#parent + 1] = prop\n" +" propstack[#propstack + 1] = prop\n" +" end\n" +" else\n" +" rootnode = prop\n" +" catchthis = true\n" +" propstack[#propstack + 1] = prop\n" +" end\n" +" end\n" +"\n" +" return rootnode\n" +"end\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.introspection\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.plugins.ffi\n" +"package.preload[\"debugger.plugins.ffi\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2012-2013 Julien Desgats\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Julien Desgats - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- LuaJIT cdata introspection library.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"-- known issues:\n" +"-- * references are de-referenced event if inspect_references is unset\n" +"-- * is automatic pointer and reference de-referencing is possible ?\n" +"-- (only for first item in case of arrays). Possible leads:\n" +"-- http://stackoverflow.com/questions/7134590/how-to-test-if-an-address-is-readable-in-linux-userspace-app\n" +"-- http://www.softwareverify.com/blog/?p=319\n" +"-- * when setting a value from Eclipse, the type is sometimes changed (e.g. int => number)\n" +"\n" +"local introspection = require \"debugger.introspection\"\n" +"local reflect = require \"debugger.plugins.ffi.reflect\"\n" +"local ffi = require \"ffi\"\n" +"\n" +"local tostring, tonumber, type, assert, sformat, tconcat = tostring, tonumber, type, assert, string.format, table.concat\n" +"\n" +"local M = { }\n" +"\n" +"--- Whether the reference types are inspected. Usually references should be safe (at least a bit\n" +"-- safer than pointers) so they are inspected. If a reference points to unsafe memory, the whole\n" +"-- program could crash !\n" +"-- If this feature is disabled, deeply nested C types will not be displayed correctly as evaluation\n" +"-- has a recursion limit, any further evaluation is done through references.\n" +"M.inspect_references = true\n" +"\n" +"local function make_typename(refct)\n" +" local t = refct.what\n" +" if t == \"int\" then\n" +" if refct.bool then t = \"bool\"\n" +" else\n" +" -- use C99 type notation to give more details about acutal type\n" +" t = (refct.unsigned and \"uint\" or \"int\") .. tostring(refct.size * 8) .. \"_t\"\n" +" end\n" +" elseif t == \"float\" then\n" +" -- assume IEEE754\n" +" if refct.size == 8 then t = \"double\"\n" +" elseif refct.size == 16 then t = \"long double\" -- not really sure this one is always true\n" +" end\n" +" elseif t == \"struct\" or t == \"enum\" or t == \"union\" then\n" +" t = refct.name and (t .. \" \" .. refct.name) or (\"anonymous \"..t)\n" +" elseif t == \"func\" then\n" +" t = \"function (FFI)\"\n" +" elseif t == \"ptr\" then\n" +" t = make_typename(refct.element_type) .. \"*\"\n" +" elseif t == \"ref\" then\n" +" t = make_typename(refct.element_type) .. \"&\"\n" +" elseif t == \"field\" then\n" +" return make_typename(refct.type)\n" +" elseif t == \"bitfield\" then\n" +" t = (refct.type.unsigned and \"unsigned\" or \"signed\") .. \":\" .. tostring(refct.size * 8)\n" +" refct = refct.type\n" +" end\n" +"\n" +" if refct.const then t = \"const \" .. t end\n" +" if refct.volatile then t = \"volatile \" .. t end\n" +" return t\n" +"end\n" +"\n" +"-- if cdatakind is unknown, this one will be called\n" +"local default_inspector = introspection.inspectors.number\n" +"local inspect\n" +"\n" +"-- recursion must be handled with some care: if we call regular introspection.inspect\n" +"-- we may create boxed references or Lua native objects which will be inspected as such\n" +"-- (leading to wrong type names).\n" +"local function recurse(name, value, parent, fullname, refct)\n" +" if type(value) == \"cdata\" then\n" +" return inspect(name, value, parent, fullname, refct)\n" +" else\n" +" local prop = introspection.inspect(name, value, parent, fullname)\n" +" if prop then\n" +" prop.attr.type = make_typename(refct)\n" +" end\n" +" return prop\n" +" end\n" +"end\n" +"\n" +"-- cdata specific inspectors\n" +"local inspectors = {\n" +" struct = function(name, value, parent, fullname, refct)\n" +" local prop = introspection.property(name, make_typename(refct), tostring(value), parent, fullname)\n" +"\n" +" -- inspect children, if needed\n" +" if prop then\n" +" for member in refct:members() do\n" +" local mname = member.name\n" +" recurse(mname, value[mname], prop, fullname .. sformat('[%q]', mname), member)\n" +" end\n" +" end\n" +" return prop\n" +" end,\n" +"\n" +" array = function(name, value, parent, fullname, refct)\n" +" local etype = refct.element_type\n" +" -- for VLAs, reflect does not give size\n" +" local size = refct.size ~= \"none\" and refct.size or ffi.sizeof(value)\n" +" size = size and (size / etype.size) -- we've got the byte size, not element count\n" +"\n" +" local typename = make_typename(etype)\n" +" local prop = introspection.property(name, typename .. \"[\" .. (tostring(size) or \"\") .. \"]\", tostring(value), parent, fullname)\n" +"\n" +" if prop and size then\n" +" for i=0, size-1 do\n" +" local idx = \"[\"..tostring(i)..\"]\"\n" +" recurse(idx, value[i], prop, fullname .. idx, etype)\n" +" end\n" +" end\n" +" return prop\n" +" end,\n" +"\n" +" func = function(name, value, parent, fullname, refct)\n" +" local args = { }\n" +" for arg in refct:arguments() do\n" +" args[#args + 1] = make_typename(arg.type) .. \" \" .. arg.name\n" +" end\n" +"\n" +" if refct.vararg then\n" +" args[#args + 1] = \"...\"\n" +" end\n" +"\n" +" local repr = make_typename(refct.return_type) .. \" \" .. refct.name .. \"(\" .. tconcat(args, \", \") .. \")\"\n" +" return introspection.property(name, make_typename(refct), repr, parent, fullname)\n" +" end,\n" +"\n" +" enum = function(name, value, parent, fullname, refct)\n" +" local repr = tonumber(value)\n" +" -- try to convert numeric value into enum name\n" +" --TODO: is there a faster method to make it ?\n" +" for val in refct:values() do\n" +" if val.value == repr then\n" +" repr = val.name\n" +" break\n" +" end\n" +" end\n" +"\n" +" return introspection.property(name, make_typename(refct), tostring(repr), parent, fullname)\n" +" end,\n" +"\n" +" ref = function(name, value, parent, fullname, refct)\n" +" -- this may be unsafe, see inspect_references setting\n" +" local typename = make_typename(refct)\n" +" if not M.inspect_references then\n" +" return introspection.property(name, typename, tostring(value), parent, fullname)\n" +" end\n" +"\n" +" local prop = recurse(name, value, parent, fullname, refct.element_type)\n" +" if prop then\n" +" prop.attr.type = typename\n" +" end\n" +" return prop\n" +" end,\n" +"\n" +" int = function(name, value, parent, fullname, refct)\n" +" return introspection.property(name, make_typename(refct), tostring(tonumber(value)), parent, fullname)\n" +" end,\n" +"\n" +" -- pointers are too unsafe, do not inspect them\n" +" ptr = function(name, value, parent, fullname, refct)\n" +" return introspection.property(name, make_typename(refct), tostring(value), parent, fullname)\n" +" end,\n" +"}\n" +"\n" +"inspectors.union = inspectors.struct\n" +"inspectors.float = inspectors.int\n" +"\n" +"-- for struct/union fields, the actual type is nested into the refct\n" +"inspectors.field = function(name, value, parent, fullname, refct)\n" +" return inspect(name, value, parent, fullname, refct.type)\n" +"end\n" +"inspectors.bitfield = inspectors.field\n" +"\n" +"inspect = function(name, value, parent, fullname, refct)\n" +" -- inspect only values, not ctypes\n" +" --FIXME: this cause references to be dereferenced and crash the process if they are wrong !\n" +" if ffi.typeof(value) ~= value then\n" +" refct = refct or reflect.typeof(value)\n" +" return (inspectors[refct.what] or default_inspector)(name, value, parent, fullname, refct)\n" +" end\n" +"\n" +" -- return a simple property for ctypes\n" +" return introspection.property(name, \"ctype\", tostring(value), parent, fullname)\n" +"end\n" +"\n" +"introspection.inspectors.cdata = inspect\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.plugins.ffi\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.plugins.ffi.reflect\n" +"package.preload[\"debugger.plugins.ffi.reflect\"] = function(...)\n" +"--[[ LuaJIT FFI reflection Library ]]--\n" +"--[[ Copyright (C) 2013 Peter Cawley . All rights reserved.\n" +"\n" +"Permission is hereby granted, free of charge, to any person obtaining a copy\n" +"of this software and associated documentation files (the \"Software\"), to deal\n" +"in the Software without restriction, including without limitation the rights\n" +"to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n" +"copies of the Software, and to permit persons to whom the Software is\n" +"furnished to do so, subject to the following conditions:\n" +"\n" +"The above copyright notice and this permission notice shall be included in\n" +"all copies or substantial portions of the Software.\n" +"\n" +"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" +"IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" +"FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n" +"AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" +"LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" +"OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n" +"THE SOFTWARE.\n" +"--]]\n" +"local ffi = require \"ffi\"\n" +"local bit = require \"bit\"\n" +"local reflect = {}\n" +"\n" +"-- Relevant minimal definitions from lj_ctype.h\n" +"ffi.cdef [[\n" +" typedef struct CType {\n" +" uint32_t info;\n" +" uint32_t size;\n" +" uint16_t sib;\n" +" uint16_t next;\n" +" uint32_t name;\n" +" } CType;\n" +"\n" +" typedef struct CTState {\n" +" CType *tab;\n" +" uint32_t top;\n" +" uint32_t sizetab;\n" +" void *L;\n" +" void *g;\n" +" void *finalizer;\n" +" void *miscmap;\n" +" } CTState;\n" +"]]\n" +"\n" +"local function gc_str(gcref) -- Convert a GCref (to a GCstr) into a string\n" +" if gcref ~= 0 then\n" +" local ts = ffi.cast(\"uint32_t*\", gcref)\n" +" return ffi.string(ts + 4, ts[3])\n" +" end\n" +"end\n" +"\n" +"local function memptr(gcobj)\n" +" return tonumber(tostring(gcobj):match\"%x*$\", 16)\n" +"end\n" +"\n" +"-- Acquire a pointer to this Lua universe's CTState\n" +"local CTState do\n" +" local co = coroutine.create(function()end) -- Any live coroutine will do.\n" +" local uint32_ptr = ffi.typeof(\"uint32_t*\")\n" +" local G = ffi.cast(uint32_ptr, ffi.cast(uint32_ptr, memptr(co))[2])\n" +" -- In global_State, `MRef ctype_state` is immediately before `GCRef gcroot[GCROOT_MAX]`.\n" +" -- We first find (an entry in) gcroot by looking for a metamethod name string.\n" +" local anchor = ffi.cast(\"uint32_t\", ffi.cast(\"const char*\", \"__index\"))\n" +" local i = 0\n" +" while math.abs(tonumber(G[i] - anchor)) > 64 do\n" +" i = i + 1\n" +" end\n" +" -- We then work backwards looking for something resembling ctype_state.\n" +" repeat\n" +" i = i - 1\n" +" CTState = ffi.cast(\"CTState*\", G[i])\n" +" until ffi.cast(uint32_ptr, CTState.g) == G\n" +"end\n" +"\n" +"-- Acquire the CTState's miscmap table as a Lua variable\n" +"local miscmap do\n" +" local t = {}; t[0] = t\n" +" local tvalue = ffi.cast(\"uint32_t*\", memptr(t))[2]\n" +" ffi.cast(\"uint32_t*\", tvalue)[ffi.abi\"le\" and 0 or 1] = ffi.cast(\"uint32_t\", ffi.cast(\"uintptr_t\", CTState.miscmap))\n" +" miscmap = t[0]\n" +"end\n" +"\n" +"-- Information for unpacking a `struct CType`.\n" +"-- One table per CT_* constant, containing:\n" +"-- * A name for that CT_\n" +"-- * Roles of the cid and size fields.\n" +"-- * Whether the sib field is meaningful.\n" +"-- * Zero or more applicable boolean flags.\n" +"local CTs = {[0] =\n" +" {\"int\",\n" +" \"\", \"size\", false,\n" +" {0x08000000, \"bool\"},\n" +" {0x04000000, \"float\", \"subwhat\"},\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" {0x00800000, \"unsigned\"},\n" +" {0x00400000, \"long\"},\n" +" },\n" +" {\"struct\",\n" +" \"\", \"size\", true,\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" {0x00800000, \"union\", \"subwhat\"},\n" +" {0x00100000, \"vla\"},\n" +" },\n" +" {\"ptr\",\n" +" \"element_type\", \"size\", false,\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" {0x00800000, \"ref\", \"subwhat\"},\n" +" },\n" +" {\"array\",\n" +" \"element_type\", \"size\", false,\n" +" {0x08000000, \"vector\"},\n" +" {0x04000000, \"complex\"},\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" {0x00100000, \"vla\"},\n" +" },\n" +" {\"void\",\n" +" \"\", \"size\", false,\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" },\n" +" {\"enum\",\n" +" \"type\", \"size\", true,\n" +" },\n" +" {\"func\",\n" +" \"return_type\", \"nargs\", true,\n" +" {0x00800000, \"vararg\"},\n" +" {0x00400000, \"sse_reg_params\"},\n" +" },\n" +" {\"typedef\", -- Not seen\n" +" \"element_type\", \"\", false,\n" +" },\n" +" {\"attrib\", -- Only seen internally\n" +" \"type\", \"value\", true,\n" +" },\n" +" {\"field\",\n" +" \"type\", \"offset\", true,\n" +" },\n" +" {\"bitfield\",\n" +" \"\", \"offset\", true,\n" +" {0x08000000, \"bool\"},\n" +" {0x02000000, \"const\"},\n" +" {0x01000000, \"volatile\"},\n" +" {0x00800000, \"unsigned\"},\n" +" },\n" +" {\"constant\",\n" +" \"type\", \"value\", true,\n" +" {0x02000000, \"const\"},\n" +" },\n" +" {\"extern\", -- Not seen\n" +" \"CID\", \"\", true,\n" +" },\n" +" {\"kw\", -- Not seen\n" +" \"TOK\", \"size\",\n" +" },\n" +"}\n" +"\n" +"-- Set of CType::cid roles which are a CTypeID.\n" +"local type_keys = {\n" +" element_type = true,\n" +" return_type = true,\n" +" value_type = true,\n" +" type = true,\n" +"}\n" +"\n" +"-- Create a metatable for each CT.\n" +"local metatables = {\n" +"}\n" +"for _, CT in ipairs(CTs) do\n" +" local what = CT[1]\n" +" local mt = {__index = {}}\n" +" metatables[what] = mt\n" +"end\n" +"\n" +"-- Logic for merging an attribute CType onto the annotated CType.\n" +"local CTAs = {[0] =\n" +" function(a, refct) error(\"TODO: CTA_NONE\") end,\n" +" function(a, refct) error(\"TODO: CTA_QUAL\") end,\n" +" function(a, refct)\n" +" a = 2^a.value\n" +" refct.alignment = a\n" +" refct.attributes.align = a\n" +" end,\n" +" function(a, refct)\n" +" refct.transparent = true\n" +" refct.attributes.subtype = refct.typeid\n" +" end,\n" +" function(a, refct) refct.sym_name = a.name end,\n" +" function(a, refct) error(\"TODO: CTA_BAD\") end,\n" +"}\n" +"\n" +"-- C function calling conventions (CTCC_* constants in lj_refct.h)\n" +"local CTCCs = {[0] =\n" +" \"cdecl\",\n" +" \"thiscall\",\n" +" \"fastcall\",\n" +" \"stdcall\",\n" +"}\n" +"\n" +"local function refct_from_id(id) -- refct = refct_from_id(CTypeID)\n" +" local ctype = CTState.tab[id]\n" +" local CT_code = bit.rshift(ctype.info, 28)\n" +" local CT = CTs[CT_code]\n" +" local what = CT[1]\n" +" local refct = setmetatable({\n" +" what = what,\n" +" typeid = id,\n" +" name = gc_str(ctype.name),\n" +" }, metatables[what])\n" +"\n" +" -- Interpret (most of) the CType::info field\n" +" for i = 5, #CT do\n" +" if bit.band(ctype.info, CT[i][1]) ~= 0 then\n" +" if CT[i][3] == \"subwhat\" then\n" +" refct.what = CT[i][2]\n" +" else\n" +" refct[CT[i][2]] = true\n" +" end\n" +" end\n" +" end\n" +" if CT_code <= 5 then\n" +" refct.alignment = bit.lshift(1, bit.band(bit.rshift(ctype.info, 16), 15))\n" +" elseif what == \"func\" then\n" +" refct.convention = CTCCs[bit.band(bit.rshift(ctype.info, 16), 3)]\n" +" end\n" +"\n" +" if CT[2] ~= \"\" then -- Interpret the CType::cid field\n" +" local k = CT[2]\n" +" local cid = bit.band(ctype.info, 0xffff)\n" +" if type_keys[k] then\n" +" if cid == 0 then\n" +" cid = nil\n" +" else\n" +" cid = refct_from_id(cid)\n" +" end\n" +" end\n" +" refct[k] = cid\n" +" end\n" +"\n" +" if CT[3] ~= \"\" then -- Interpret the CType::size field\n" +" local k = CT[3]\n" +" refct[k] = ctype.size\n" +" if k == \"size\" and bit.bnot(refct[k]) == 0 then\n" +" refct[k] = \"none\"\n" +" end\n" +" end\n" +"\n" +" if what == \"attrib\" then\n" +" -- Merge leading attributes onto the type being decorated.\n" +" local CTA = CTAs[bit.band(bit.rshift(ctype.info, 16), 0xff)]\n" +" if refct.type then\n" +" local ct = refct.type\n" +" ct.attributes = {}\n" +" CTA(refct, ct)\n" +" ct.typeid = refct.typeid\n" +" refct = ct\n" +" else\n" +" refct.CTA = CTA\n" +" end\n" +" elseif what == \"bitfield\" then\n" +" -- Decode extra bitfield fields, and make it look like a normal field.\n" +" refct.offset = refct.offset + bit.band(ctype.info, 127) / 8\n" +" refct.size = bit.band(bit.rshift(ctype.info, 8), 127) / 8\n" +" refct.type = {\n" +" what = \"int\",\n" +" bool = refct.bool,\n" +" const = refct.const,\n" +" volatile = refct.volatile,\n" +" unsigned = refct.unsigned,\n" +" size = bit.band(bit.rshift(ctype.info, 16), 127),\n" +" }\n" +" refct.bool, refct.const, refct.volatile, refct.unsigned = nil\n" +" end\n" +"\n" +" if CT[4] then -- Merge sibling attributes onto this type.\n" +" while ctype.sib ~= 0 do\n" +" local entry = CTState.tab[ctype.sib]\n" +" if CTs[bit.rshift(entry.info, 28)][1] ~= \"attrib\" then break end\n" +" if bit.band(entry.info, 0xffff) ~= 0 then break end\n" +" local sib = refct_from_id(ctype.sib)\n" +" sib:CTA(refct)\n" +" ctype = entry\n" +" end\n" +" end\n" +"\n" +" return refct\n" +"end\n" +"\n" +"local function sib_iter(s, refct)\n" +" repeat\n" +" local ctype = CTState.tab[refct.typeid]\n" +" if ctype.sib == 0 then return end\n" +" refct = refct_from_id(ctype.sib)\n" +" until refct.what ~= \"attrib\" -- Pure attribs are skipped.\n" +" return refct\n" +"end\n" +"\n" +"local function siblings(refct)\n" +" -- Follow to the end of the attrib chain, if any.\n" +" while refct.attributes do\n" +" refct = refct_from_id(refct.attributes.subtype or CTState.tab[refct.typeid].sib)\n" +" end\n" +"\n" +" return sib_iter, nil, refct\n" +"end\n" +"\n" +"metatables.struct.__index.members = siblings\n" +"metatables.func.__index.arguments = siblings\n" +"metatables.enum.__index.values = siblings\n" +"\n" +"local function find_sibling(refct, name)\n" +" local num = tonumber(name)\n" +" if num then\n" +" for sib in siblings(refct) do\n" +" if num == 1 then\n" +" return sib\n" +" end\n" +" num = num - 1\n" +" end\n" +" else\n" +" for sib in siblings(refct) do\n" +" if sib.name == name then\n" +" return sib\n" +" end\n" +" end\n" +" end\n" +"end\n" +"\n" +"metatables.struct.__index.member = find_sibling\n" +"metatables.func.__index.argument = find_sibling\n" +"metatables.enum.__index.value = find_sibling\n" +"\n" +"function reflect.typeof(x) -- refct = reflect.typeof(ct)\n" +" return refct_from_id(tonumber(ffi.typeof(x)))\n" +"end\n" +"\n" +"function reflect.getmetatable(x) -- mt = reflect.getmetatable(ct)\n" +" return miscmap[-tonumber(ffi.typeof(x))]\n" +"end\n" +"\n" +"return reflect\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.plugins.ffi.reflect\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.platform\n" +"package.preload[\"debugger.platform\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Platform/OS specific features and path handling.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local url = require \"debugger.url\"\n" +"local util = require \"debugger.util\"\n" +"\n" +"local M = { }\n" +"\n" +"-- Execution plaform (could be win or unix)\n" +"-- Used to manage file path difference between the 2 platform\n" +"local platform = nil\n" +"\n" +"-- keep all computed URIs in cache (as they are quite long to compute)\n" +"local uri_cache = { }\n" +"\n" +"-- parse a normalized path and return a table of each segment\n" +"-- you could precise the path seperator.\n" +"local function split(path,sep)\n" +" local t = {}\n" +" for w in path:gmatch(\"[^\"..(sep or \"/\")..\"]+\")do\n" +" table.insert(t, w)\n" +" end\n" +" return t\n" +"end\n" +"\n" +"-- return a table: key=searchpathname,value=true (add by guanyu)\n" +"local function convert_to_search_paths(searchpaths)\n" +" local t = {}\n" +" for w in searchpaths:gmatch(\"[^;]+\") do\n" +" t[w] = true\n" +" end\n" +" return t;\n" +"end\n" +"\n" +"-- return a relative uri to M.base_dir for a given source, for android device (added by guanyu)\n" +"local function convert_to_android_file_uri(source)\n" +" if source:sub(1,6) == \"assets\" then -- replace assets\n" +" source = source:sub(8)\n" +" elseif M.search_paths then -- replace /mnt/sdcard/packagename/ with empty string\n" +" for k, v in pairs(M.search_paths) do\n" +" if #source > #k and M.search_paths[source:sub(1,#k)] then\n" +" source = source:sub(#k+1)\n" +" break\n" +" end\n" +" end\n" +" end\n" +" return source\n" +"end\n" +"\n" +"-- return a relative uri to M.base_dir for a given source, , for ios simulator/device? (added by guanyu\n" +"local function convert_to_ios_file_uri(source)\n" +" if M.search_paths then\n" +" for k, v in pairs(M.search_paths) do\n" +" if #source > #k and M.search_paths[source:sub(1,#k)] then\n" +" source = source:sub(#k+1)\n" +" break\n" +" end\n" +" end\n" +" end\n" +" return source\n" +"end\n" +"\n" +"local function convert_to_relative_file_uri(source)\n" +" if M.search_paths then\n" +" for k, v in pairs(M.search_paths) do\n" +" if #source > #k and M.search_paths[source:sub(1,#k)] then\n" +" source = source:sub(#k+1)\n" +" break\n" +" end\n" +" end\n" +" end\n" +" return source\n" +"end\n" +"\n" +"--- Returns a RFC2396 compliant URI for given source, or false if the mapping failed\n" +"local function get_abs_file_uri (source)\n" +" local uri\n" +" if source:sub(1,1) == \"@\" then -- real source file\n" +" local sourcepath = source:sub(2)\n" +" if M.base_dir then\n" +" sourcepath = convert_to_relative_file_uri(sourcepath)\n" +" end\n" +" local normalizedpath = M.normalize(sourcepath)\n" +"-- if not M.is_path_absolute(normalizedpath) then\n" +"-- normalizedpath = M.normalize(M.base_dir .. \"/\" .. normalizedpath)--M.base_dir .. \"/src/\" .. normalizedpath\n" +"-- end\n" +" return M.to_file_uri(normalizedpath)\n" +" elseif source:sub(#source-3,-1):lower() == \".lua\" then -- loadstring relative path source file (added by guanyu)\n" +" -- android\n" +" if platform == \"android\" then\n" +" source = convert_to_android_file_uri(source)\n" +" -- ios ???\n" +" elseif platform == \"ios\" then\n" +" source = convert_to_ios_file_uri(source)\n" +" end\n" +" local normalizedpath = M.normalize(source)\n" +"-- if not M.is_path_absolute(normalizedpath) then\n" +"-- normalizedpath = M.normalize(M.base_dir .. \"/\" .. normalizedpath)--M.base_dir .. \"/src/\" .. normalizedpath\n" +"-- end\n" +" return M.to_file_uri(normalizedpath)\n" +" else -- dynamic code, stripped bytecode, tail return, ...\n" +" return false\n" +" end\n" +"end\n" +"\n" +"--FIXME: as result is cached, changes in package.path that modify the module name are missed\n" +"-- (mostly affect main module when Lua interpreter is launched with an absolute path)\n" +"local function get_module_uri (source)\n" +" if source:sub(1,1) == \"@\" then -- real source file\n" +" local uri\n" +" local sourcepath = source:sub(2)\n" +" local normalizedpath = M.normalize(sourcepath)\n" +" local luapathtable = split (package.path, \";\")\n" +" local is_source_absolute = M.is_path_absolute(sourcepath)\n" +" -- workarround : Add always the ?.lua entry to support\n" +" -- the case where file was loaded by : \"lua myfile.lua\"\n" +" table.insert(luapathtable,\"?.lua\")\n" +" for i,var in ipairs(luapathtable) do\n" +" -- avoid relative patterns matching absolute ones (e.g. ?.lua matches anything)\n" +" if M.is_path_absolute(var) == is_source_absolute then\n" +" local escaped = string.gsub(M.normalize(var),\"[%^%$%(%)%%%.%[%]%*%+%-%?]\",function(c) return \"%\"..c end)\n" +" local pattern = string.gsub(escaped,\"%%%?\",\"(.+)\")\n" +" local modulename = string.match(normalizedpath,pattern)\n" +" if modulename then\n" +" modulename = string.gsub(modulename,\"/\",\".\");\n" +" -- if we find more than 1 possible modulename return the shorter\n" +" if not uri or string.len(uri)>string.len(modulename) then\n" +" uri = modulename\n" +" end\n" +" end\n" +" end\n" +" end\n" +" if uri then return \"module:///\"..uri end\n" +" end\n" +" return false\n" +"end\n" +"\n" +"function M.get_uri (source)\n" +" -- search in cache\n" +" local uri = uri_cache[source]\n" +" if uri ~= nil then return uri end\n" +"\n" +" -- not found, create uri\n" +" if util.features.uri == \"module\" then\n" +" uri = get_module_uri(source)\n" +" if not uri then uri = get_abs_file_uri (source) end\n" +" else\n" +" uri = get_abs_file_uri (source)\n" +" end\n" +"\n" +" uri_cache[source] = uri\n" +" return uri\n" +"end\n" +"\n" +"-- get path file from uri\n" +"function M.get_path (uri)\n" +" local parsed_path = assert(url.parse(uri))\n" +" if parsed_path.scheme == \"file\" then\n" +" return M.to_path(parsed_path)\n" +" else\n" +" -- search in cache\n" +" -- we should surely calculate it instead of find in cache\n" +" for k,v in pairs(uri_cache)do\n" +" if v == uri then\n" +" assert(k:sub(1,1) == \"@\")\n" +" return k:sub(2)\n" +" end\n" +" end\n" +" end\n" +"end\n" +"\n" +"function M.normalize(path)\n" +" local parts = { }\n" +" for w in path:gmatch(\"[^/]+\") do\n" +" if w == \"..\" and #parts ~=0 then table.remove(parts)\n" +" elseif w ~= \".\" then table.insert(parts, w)\n" +" end\n" +" end\n" +" return (path:sub(1,1) == \"/\" and \"/\" or \"\") .. table.concat(parts, \"/\")\n" +"end\n" +"\n" +"function M.init(executionplatform,workingdirectory,searchpaths)\n" +" --------------------------\n" +" -- define current platform\n" +" --------------------------\n" +" -- check parameter\n" +" if executionplatform and executionplatform ~= \"unix\" and executionplatform ~=\"win\" and executionplatform ~=\"android\" and executionplatform ~=\"ios\"then\n" +" error(\"Unable to initialize platform module : execution platform should be 'unix' or 'win'.\")\n" +" end\n" +"\n" +" -- use parameter as current platform\n" +" if executionplatform then\n" +" platform = executionplatform\n" +" else\n" +" --if not define try to guess it.\n" +" local function iswindows()\n" +" local p = io.popen(\"echo %os%\")\n" +" if p then\n" +" local result =p:read(\"*l\")\n" +" p:close()\n" +" return result == \"Windows_NT\"\n" +" end\n" +" return false\n" +" end\n" +"\n" +" local status, iswin = pcall(iswindows)\n" +" if status and iswin then\n" +" platform = \"win\"\n" +" else\n" +" platform = \"unix\"\n" +" end\n" +" end\n" +"\n" +" --------------------------\n" +" -- platform dependent function\n" +" --------------------------\n" +" if platform == \"unix\" or platform == \"android\" or platform == \"ios\" then\n" +" -- The Path separator character\n" +" M.path_sep = \"/\"\n" +"\n" +" -- TODO the way to get the absolute path can be wrong if the program loads new source files by relative path after a cd.\n" +" -- currently, the directory is registered on start, this allows program to load any source file and then change working dir,\n" +" -- which is the most common use case.\n" +" M.base_dir = workingdirectory or os.getenv(\"PWD\")\n" +"\n" +" -- convert parsed URL table to file path for the current OS (see url.parse from luasocket)\n" +" M.to_file_uri = function (path)\n" +" if string.find(path,\"/\") ~= 1 then\n" +" path=\"/\"..path\n" +" end\n" +" return url.build{scheme=\"file\",authority=\"\", path=path}\n" +" end\n" +"\n" +" -- return true is the path is absolute\n" +" -- the path must be normalized\n" +" M.is_path_absolute = function (path) return path:sub(1,1) == \"/\" end\n" +"\n" +" -- convert absolute normalized path file to uri\n" +" M.to_path = function (parsed_url) return url.unescape(parsed_url.path) end\n" +" else\n" +" -- Implementations for Windows, see UNIX versions for documentation.\n" +" M.path_sep = \"\\\"\n" +" M.is_path_absolute = function (path) return path:match(\"^%a:/\") end\n" +" M.to_file_uri = function (path) return url.build{scheme=\"file\",authority=\"\", path=\"/\"..path} end\n" +" M.to_path = function (parsed_url) return url.unescape(parsed_url.path):gsub(\"^/\", \"\") end\n" +"\n" +" local unixnormalize = M.normalize\n" +" M.normalize = function(path) return unixnormalize(path:gsub(\"\\\",\"/\"):lower()) end\n" +"\n" +" -- determine base dir\n" +" local function getworkingdirectory()\n" +" local p = io.popen(\"echo %cd%\")\n" +" if p then\n" +" local res = p:read(\"*l\")\n" +" p:close()\n" +" return M.normalize(res)\n" +" end\n" +" end\n" +" M.base_dir = workingdirectory or getworkingdirectory()\n" +"\n" +" end\n" +" --fix bug: can not break when project path contains blank\n" +" --replace blank with %20 (add by guanyu)\n" +" M.base_dir = M.base_dir:gsub(\" \",\"%%20\")\n" +" -- the js/lua script searchpath if has more then one, split them with a semicolon \";\" (added by guanyu)\n" +" if searchpaths then M.search_paths = convert_to_search_paths(searchpaths) end\n" +" if not M.base_dir then error(\"Unable to determine the working directory.\") end\n" +"end\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.platform\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.util\n" +"package.preload[\"debugger.util\"] = function(...)\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"-- Utility functions.\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local M = { }\n" +"\n" +"-- log system\n" +"local LEVELS = { ERROR = 0, WARNING = 1, INFO = 2, DETAIL = 3, DEBUG = 4 }\n" +"local LOG_LEVEL = LEVELS.WARNING\n" +"\n" +"-- Debugger features handling. Any feature can be get like any regular table, setting features result in\n" +"-- error for unknown or read-only features.\n" +"M.features = setmetatable({ }, {\n" +" -- functions that format/validate data. If function is not provided, the feature cannot be modified.\n" +" validators = {\n" +" multiple_sessions = tonumber,\n" +" encoding = tostring,\n" +" max_children = tonumber,\n" +" max_data = tonumber,\n" +" max_depth = tonumber,\n" +" show_hidden = tonumber,\n" +" uri = tostring,\n" +" log_level = function(level_name)\n" +" -- set numerical index in internal var\n" +" LOG_LEVEL = assert(LEVELS[level_name], \"No such level\")\n" +" return level_name -- the displayed level is still the name\n" +" end,\n" +" },\n" +" __index = {\n" +" multiple_sessions = 0,\n" +" encoding =\"UTF-8\",\n" +" max_children = 32,\n" +" max_data = 0xFFFF,\n" +" max_depth = 1,\n" +" show_hidden = 1,\n" +" uri = \"file\",\n" +" log_level = \"WARNING\",\n" +" -- read only features\n" +" language_supports_threads = 0,\n" +" language_name = \"Lua\",\n" +" language_version = _VERSION,\n" +" protocol_version = 1,\n" +" supports_async = 1,\n" +" data_encoding = \"base64\",\n" +" breakpoint_languages = \"Lua\",\n" +" breakpoint_types = \"line conditional\",\n" +" },\n" +" __newindex = function(self, k, v)\n" +" local mt = getmetatable(self)\n" +" local values, validator = mt.__index, mt.validators[k]\n" +" if values[k] == nil then error(\"No such feature \" .. tostring(k)) end\n" +" if not validator then error(\"The feature \" .. tostring(k) .. \" is read-only\") end\n" +" v = assert(validator(v))\n" +" values[k] = v\n" +" end,\n" +"})\n" +"\n" +"-- Wraps debug function and an attached thread\n" +"-- also handle stack & coroutine management differencies between Lua versions\n" +"local getinfo, getlocal, setlocal = debug.getinfo, debug.getlocal, debug.setlocal\n" +"\n" +"-- Foreign thread is used to debug paused thread\n" +"local ForeignThreadMT = {\n" +" getinfo = function(self, level, what) return getinfo(self[1], level, what) end,\n" +" getlocal = function(self, level, idx) return getlocal(self[1], level, idx) end,\n" +" setlocal = function(self, level, idx, val) return setlocal(self[1], level, idx, val) end,\n" +"}\n" +"ForeignThreadMT.__index = ForeignThreadMT\n" +"function M.ForeignThread(coro) return setmetatable({ coro }, ForeignThreadMT) end\n" +"\n" +"-- Current thread is used to debug the thread that caused the hook\n" +"-- intended to be used *ONLY* in debug loop (executed in a new thread)\n" +"local CurrentThreadMT = {\n" +" getinfo = function(self, level, what) return getinfo(self[1], level + 2, what) end,\n" +" getlocal = function(self, level, idx) return getlocal(self[1], level + 2, idx) end,\n" +" setlocal = function(self, level, idx, val) return setlocal(self[1], level + 2, idx, val) end,\n" +"}\n" +"CurrentThreadMT.__index = CurrentThreadMT\n" +"function M.CurrentThread(coro) return setmetatable({ coro }, CurrentThreadMT) end\n" +"\n" +"\n" +"-- Some version dependant functions\n" +"if _VERSION == \"Lua 5.1\" then\n" +" local loadstring, getfenv, setfenv, debug_getinfo, MainThread =\n" +" loadstring, getfenv, setfenv, debug.getinfo, nil\n" +"\n" +" -- in 5.1 \"t\" flag does not exist and trigger an error so remove it from what\n" +" CurrentThreadMT.getinfo = function(self, level, what) return getinfo(self[1], level + 2, what:gsub(\"t\", \"\", 1)) end\n" +" ForeignThreadMT.getinfo = function(self, level, what) return getinfo(self[1], level, what:gsub(\"t\", \"\", 1)) end\n" +"\n" +" -- when we're forced to start debug loop on top of program stack (when on main coroutine)\n" +" -- this requires some hackery to get right stack level\n" +"\n" +" -- Fallback method to inspect running thread (only for main thread in 5.1 or for conditional breakpoints)\n" +" --- Gets a script stack level with additional debugger logic added\n" +" -- @param l (number) stack level to get for debugged script (0 based)\n" +" -- @return real Lua stack level suitable to be passed through deubg functions\n" +" local function get_script_level(l)\n" +" local hook = debug.gethook()\n" +" for i=2, math.huge do\n" +" if assert(debug.getinfo(i, \"f\")).func == hook then\n" +" return i + l -- the script to level is just below, but because of the extra call to this function, the level is ok for callee\n" +" end\n" +" end\n" +" end\n" +"\n" +" if rawget(_G, \"jit\") then\n" +" MainThread = {\n" +" [1] = \"main\", -- as the raw thread object is used as table keys, provide a replacement.\n" +" -- LuaJIT completely eliminates tail calls from stack, so get_script_level retunrs wrong result in this case\n" +" getinfo = function(self, level, what) return getinfo(get_script_level(level) - 1, what:gsub(\"t\", \"\", 1)) end,\n" +" getlocal = function(self, level, idx) return getlocal(get_script_level(level) - 1, idx) end,\n" +" setlocal = function(self, level, idx, val) return setlocal(get_script_level(level) - 1, idx, val) end,\n" +" }\n" +" else\n" +" MainThread = {\n" +" [1] = \"main\",\n" +" getinfo = function(self, level, what) return getinfo(get_script_level(level) , what:gsub(\"t\", \"\", 1)) end,\n" +" getlocal = function(self, level, idx) return getlocal(get_script_level(level), idx) end,\n" +" setlocal = function(self, level, idx, val) return setlocal(get_script_level(level), idx, val) end,\n" +" }\n" +" end\n" +"\n" +"\n" +"\n" +" -- If the VM is vanilla Lua 5.1 or LuaJIT 2 without 5.2 compatibility, there is no way to get a reference to\n" +" -- the main coroutine, so fall back to direct mode: the debugger loop is started on the top of main thread\n" +" -- and the actual level is recomputed each time\n" +" local oldCurrentThread = M.CurrentThread\n" +" M.CurrentThread = function(coro) return coro and oldCurrentThread(coro) or MainThread end\n" +"\n" +" -- load a piece of code alog with its environment\n" +" function M.loadin(code, env)\n" +" local f,err = loadstring(code)\n" +" if not f then\n" +" return nil, err\n" +" else\n" +" return f and setfenv(f, env)\n" +" end\n" +" end\n" +"\n" +" -- table that maps [gs]et environment to index\n" +" M.eval_env = setmetatable({ }, {\n" +" __index = function(self, func) return getfenv(func) end,\n" +" __newindex = function(self, func, env) return setfenv(func, env) end,\n" +" })\n" +"elseif _VERSION == \"Lua 5.2\" then\n" +" local load, debug_getinfo = load, debug.getinfo\n" +" function M.getinfo(coro, level, what)\n" +" if coro then return debug_getinfo(coro, level, what)\n" +" else return debug_getinfo(level + 1, what) end\n" +" end\n" +"\n" +" function M.loadin(code, env) return load(code, nil, nil, env) end\n" +"\n" +" -- no eval_env for 5.2 as functions does not have environments anymore\n" +"end\n" +"\n" +"-- ----------------------------------------------------------------------------\n" +"-- Bare minimal log system.\n" +"-- ----------------------------------------------------------------------------\n" +"function M.log(level, msg, ...)\n" +" if (LEVELS[level] or -1) > LOG_LEVEL then return end\n" +" if select(\"#\", ...) > 0 then msg = msg:format(...) end\n" +" io.base.stderr:write(string.format(\"DEBUGGER\t%s\t%s\n\", level, msg))\n" +"end\n" +"\n" +"return M\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.util\n" +"--------------------------------------------------------------------------------\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Module debugger.url\n" +"package.preload[\"debugger.url\"] = function(...)\n" +"-----------------------------------------------------------------------------\n" +"-- URI parsing, composition and relative URL resolution\n" +"-- LuaSocket toolkit.\n" +"-- Author: Diego Nehab\n" +"-- RCS ID: $Id: url.lua,v 1.38 2006/04/03 04:45:42 diego Exp $\n" +"-----------------------------------------------------------------------------\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Declare module\n" +"-----------------------------------------------------------------------------\n" +"local string = require(\"string\")\n" +"local base = _G\n" +"local table = require(\"table\")\n" +"\n" +"local _ENV = { }\n" +"if setfenv then setfenv(1, _ENV) end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Module version\n" +"-----------------------------------------------------------------------------\n" +"_VERSION = \"URL 1.0.1\"\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Encodes a string into its escaped hexadecimal representation\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"function escape(s)\n" +" return string.gsub(s, \"([^A-Za-z0-9_])\", function(c)\n" +" return string.format(\"%%%02x\", string.byte(c))\n" +" end)\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Protects a path segment, to prevent it from interfering with the\n" +"-- url parsing.\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"local function make_set(t)\n" +" local s = {}\n" +" for i,v in base.ipairs(t) do\n" +" s[t[i]] = 1\n" +" end\n" +" return s\n" +"end\n" +"\n" +"-- these are allowed withing a path segment, along with alphanum\n" +"-- other characters must be escaped\n" +"local segment_set = make_set {\n" +" \"-\", \"_\", \".\", \"!\", \"~\", \"*\", \"'\", \"(\",\n" +" \")\", \":\", \"@\", \"&\", \"=\", \"+\", \"$\", \",\",\n" +"}\n" +"\n" +"local function protect_segment(s)\n" +" return string.gsub(s, \"([^A-Za-z0-9_])\", function (c)\n" +" if segment_set[c] then return c\n" +" else return string.format(\"%%%02x\", string.byte(c)) end\n" +" end)\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Encodes a string into its escaped hexadecimal representation\n" +"-- Input\n" +"-- s: binary string to be encoded\n" +"-- Returns\n" +"-- escaped representation of string binary\n" +"-----------------------------------------------------------------------------\n" +"function unescape(s)\n" +" return string.gsub(s, \"%%(%x%x)\", function(hex)\n" +" return string.char(base.tonumber(hex, 16))\n" +" end)\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a path from a base path and a relative path\n" +"-- Input\n" +"-- base_path\n" +"-- relative_path\n" +"-- Returns\n" +"-- corresponding absolute path\n" +"-----------------------------------------------------------------------------\n" +"local function absolute_path(base_path, relative_path)\n" +" if string.sub(relative_path, 1, 1) == \"/\" then return relative_path end\n" +" local path = string.gsub(base_path, \"[^/]*$\", \"\")\n" +" path = path .. relative_path\n" +" path = string.gsub(path, \"([^/]*%./)\", function (s)\n" +" if s ~= \"./\" then return s else return \"\" end\n" +" end)\n" +" path = string.gsub(path, \"/%.$\", \"/\")\n" +" local reduced\n" +" while reduced ~= path do\n" +" reduced = path\n" +" path = string.gsub(reduced, \"([^/]*/%.%./)\", function (s)\n" +" if s ~= \"../../\" then return \"\" else return s end\n" +" end)\n" +" end\n" +" path = string.gsub(reduced, \"([^/]*/%.%.)$\", function (s)\n" +" if s ~= \"../..\" then return \"\" else return s end\n" +" end)\n" +" return path\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Parses a url and returns a table with all its parts according to RFC 2396\n" +"-- The following grammar describes the names given to the URL parts\n" +"-- ::= :///;?#\n" +"-- ::= @:\n" +"-- ::= [:]\n" +"-- :: = {/}\n" +"-- Input\n" +"-- url: uniform resource locator of request\n" +"-- default: table with default values for each field\n" +"-- Returns\n" +"-- table with the following fields, where RFC naming conventions have\n" +"-- been preserved:\n" +"-- scheme, authority, userinfo, user, password, host, port,\n" +"-- path, params, query, fragment\n" +"-- Obs:\n" +"-- the leading '/' in {/} is considered part of \n" +"-----------------------------------------------------------------------------\n" +"function parse(url, default)\n" +" -- initialize default parameters\n" +" local parsed = {}\n" +" for i,v in base.pairs(default or parsed) do parsed[i] = v end\n" +" -- empty url is parsed to nil\n" +" if not url or url == \"\" then return nil, \"invalid url\" end\n" +" -- remove whitespace\n" +" -- url = string.gsub(url, \"%s\", \"\")\n" +" -- get fragment\n" +" url = string.gsub(url, \"#(.*)$\", function(f)\n" +" parsed.fragment = f\n" +" return \"\"\n" +" end)\n" +" -- get scheme\n" +" url = string.gsub(url, \"^([%w][%w%+%-%.]*)%:\",\n" +" function(s) parsed.scheme = s; return \"\" end)\n" +" -- get authority\n" +" url = string.gsub(url, \"^//([^/]*)\", function(n)\n" +" parsed.authority = n\n" +" return \"\"\n" +" end)\n" +" -- get query stringing\n" +" url = string.gsub(url, \"%?(.*)\", function(q)\n" +" parsed.query = q\n" +" return \"\"\n" +" end)\n" +" -- get params\n" +" url = string.gsub(url, \"%;(.*)\", function(p)\n" +" parsed.params = p\n" +" return \"\"\n" +" end)\n" +" -- path is whatever was left\n" +" if url ~= \"\" then parsed.path = url end\n" +" local authority = parsed.authority\n" +" if not authority then return parsed end\n" +" authority = string.gsub(authority,\"^([^@]*)@\",\n" +" function(u) parsed.userinfo = u; return \"\" end)\n" +" authority = string.gsub(authority, \":([^:]*)$\",\n" +" function(p) parsed.port = p; return \"\" end)\n" +" if authority ~= \"\" then parsed.host = authority end\n" +" local userinfo = parsed.userinfo\n" +" if not userinfo then return parsed end\n" +" userinfo = string.gsub(userinfo, \":([^:]*)$\",\n" +" function(p) parsed.password = p; return \"\" end)\n" +" parsed.user = userinfo\n" +" return parsed\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Rebuilds a parsed URL from its components.\n" +"-- Components are protected if any reserved or unallowed characters are found\n" +"-- Input\n" +"-- parsed: parsed URL, as returned by parse\n" +"-- Returns\n" +"-- a stringing with the corresponding URL\n" +"-----------------------------------------------------------------------------\n" +"function build(parsed)\n" +" local ppath = parse_path(parsed.path or \"\")\n" +" local url = build_path(ppath)\n" +" if parsed.params then url = url .. \";\" .. parsed.params end\n" +" if parsed.query then url = url .. \"?\" .. parsed.query end\n" +" local authority = parsed.authority\n" +" if parsed.host then\n" +" authority = parsed.host\n" +" if parsed.port then authority = authority .. \":\" .. parsed.port end\n" +" local userinfo = parsed.userinfo\n" +" if parsed.user then\n" +" userinfo = parsed.user\n" +" if parsed.password then\n" +" userinfo = userinfo .. \":\" .. parsed.password\n" +" end\n" +" end\n" +" if userinfo then authority = userinfo .. \"@\" .. authority end\n" +" end\n" +" if authority then url = \"//\" .. authority .. url end\n" +" if parsed.scheme then url = parsed.scheme .. \":\" .. url end\n" +" if parsed.fragment then url = url .. \"#\" .. parsed.fragment end\n" +" -- url = string.gsub(url, \"%s\", \"\")\n" +" return url\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a absolute URL from a base and a relative URL according to RFC 2396\n" +"-- Input\n" +"-- base_url\n" +"-- relative_url\n" +"-- Returns\n" +"-- corresponding absolute url\n" +"-----------------------------------------------------------------------------\n" +"function absolute(base_url, relative_url)\n" +" if base.type(base_url) == \"table\" then\n" +" base_parsed = base_url\n" +" base_url = build(base_parsed)\n" +" else\n" +" base_parsed = parse(base_url)\n" +" end\n" +" local relative_parsed = parse(relative_url)\n" +" if not base_parsed then return relative_url\n" +" elseif not relative_parsed then return base_url\n" +" elseif relative_parsed.scheme then return relative_url\n" +" else\n" +" relative_parsed.scheme = base_parsed.scheme\n" +" if not relative_parsed.authority then\n" +" relative_parsed.authority = base_parsed.authority\n" +" if not relative_parsed.path then\n" +" relative_parsed.path = base_parsed.path\n" +" if not relative_parsed.params then\n" +" relative_parsed.params = base_parsed.params\n" +" if not relative_parsed.query then\n" +" relative_parsed.query = base_parsed.query\n" +" end\n" +" end\n" +" else\n" +" relative_parsed.path = absolute_path(base_parsed.path or \"\",\n" +" relative_parsed.path)\n" +" end\n" +" end\n" +" return build(relative_parsed)\n" +" end\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Breaks a path into its segments, unescaping the segments\n" +"-- Input\n" +"-- path\n" +"-- Returns\n" +"-- segment: a table with one entry per segment\n" +"-----------------------------------------------------------------------------\n" +"function parse_path(path)\n" +" local parsed = {}\n" +" path = path or \"\"\n" +" --path = string.gsub(path, \"%s\", \"\")\n" +" string.gsub(path, \"([^/]+)\", function (s) table.insert(parsed, s) end)\n" +" for i = 1, #parsed do\n" +" parsed[i] = unescape(parsed[i])\n" +" end\n" +" if string.sub(path, 1, 1) == \"/\" then parsed.is_absolute = 1 end\n" +" if string.sub(path, -1, -1) == \"/\" then parsed.is_directory = 1 end\n" +" return parsed\n" +"end\n" +"\n" +"-----------------------------------------------------------------------------\n" +"-- Builds a path component from its segments, escaping protected characters.\n" +"-- Input\n" +"-- parsed: path segments\n" +"-- unsafe: if true, segments are not protected before path is built\n" +"-- Returns\n" +"-- path: corresponding path stringing\n" +"-----------------------------------------------------------------------------\n" +"function build_path(parsed, unsafe)\n" +" local path = \"\"\n" +" local n = #parsed\n" +" if unsafe then\n" +" for i = 1, n-1 do\n" +" path = path .. parsed[i]\n" +" path = path .. \"/\"\n" +" end\n" +" if n > 0 then\n" +" path = path .. parsed[n]\n" +" if parsed.is_directory then path = path .. \"/\" end\n" +" end\n" +" else\n" +" for i = 1, n-1 do\n" +" path = path .. protect_segment(parsed[i])\n" +" path = path .. \"/\"\n" +" end\n" +" if n > 0 then\n" +" path = path .. protect_segment(parsed[n])\n" +" if parsed.is_directory then path = path .. \"/\" end\n" +" end\n" +" end\n" +" if parsed.is_absolute then path = \"/\" .. path end\n" +" return path\n" +"end\n" +"\n" +"return _ENV\n" +"\n" +"end\n" +"--------------------------------------------------------------------------------\n" +"-- End of moduledebugger.url\n" +"--------------------------------------------------------------------------------\n" +"\n" +"\n" +"--------------------------------------------------------------------------------\n" +"-- Main content\n" +"--------------------------------------------------------------------------------\n" +"\n" +"-------------------------------------------------------------------------------\n" +"-- Copyright (c) 2011-2012 Sierra Wireless and others.\n" +"-- All rights reserved. This program and the accompanying materials\n" +"-- are made available under the terms of the Eclipse Public License v1.0\n" +"-- which accompanies this distribution, and is available at\n" +"-- http://www.eclipse.org/legal/epl-v10.html\n" +"--\n" +"-- Contributors:\n" +"-- Sierra Wireless - initial API and implementation\n" +"-------------------------------------------------------------------------------\n" +"\n" +"local DBGP_CLIENT_VERSION = \"1.1.0\"\n" +"\n" +"local debug = require \"debug\"\n" +"\n" +"-- To avoid cyclic dependency, internal state of the debugger that must be accessed\n" +"-- elsewhere (in commands most likely) will be stored in a fake module \"debugger.core\"\n" +"local core = { }\n" +"package.loaded[\"debugger.core\"] = core\n" +"\n" +"local util = require \"debugger.util\"\n" +"local platform = require \"debugger.platform\"\n" +"local dbgp = require \"debugger.dbgp\"\n" +"local commands = require \"debugger.commands\"\n" +"local context = require \"debugger.context\"\n" +"local url = require \"debugger.url\"\n" +"\n" +"local log = util.log\n" +"\n" +"\n" +"-- TODO complete the stdlib access\n" +"local corunning, cocreate, cowrap, coyield, coresume, costatus = coroutine.running, coroutine.create, coroutine.wrap, coroutine.yield, coroutine.resume, coroutine.status\n" +"\n" +"\n" +"-- register the URI of the debugger, to not jump into with redefined function or coroutine bootstrap stuff\n" +"local debugger_uri = nil -- set in init function\n" +"local transportmodule_uri = nil -- set in init function\n" +"\n" +"-- will contain the session object, and possibly a list of all sessions if a multi-threaded model is adopted\n" +"-- this is only used for async commands.\n" +"local active_session = nil\n" +"\n" +"-- tracks all active coroutines and associate an id to them, the table from_id is the id=>coro mapping, the table from_coro is the reverse\n" +"core.active_coroutines = { n = 0, from_id = setmetatable({ }, { __mode = \"v\" }), from_coro = setmetatable({ }, { __mode = \"k\" }) }\n" +"\n" +"core.prev_break_line = nil -- set in line_hook function\n" +"\n" +"-- \"BEGIN VERSION DEPENDENT CODE\"\n" +"local setbpenv -- set environment of a breakpoint (compiled function)\n" +"if _VERSION == \"Lua 5.1\" then\n" +" local setfenv = setfenv\n" +" setbpenv = setfenv\n" +"elseif _VERSION == \"Lua 5.2\" then\n" +" local setupvalue = debug.setupvalue\n" +" -- _ENV is the first upvalue\n" +" setbpenv = function(f, t) return setupvalue(f, 1, t) end\n" +"else error(_VERSION .. \"is not supported.\") end\n" +"-- \"END VERSION DEPENDENT CODE\"\n" +"\n" +"-------------------------------------------------------------------------------\n" +"-- Output redirection handling\n" +"-------------------------------------------------------------------------------\n" +"-- Override standard output functions & constants to redirect data written to these files to IDE too.\n" +"-- This works only for output done in Lua, output written by C extensions is still go to system output file.\n" +"\n" +"-- references to native values\n" +"io.base = { output = io.output, stdin = io.stdin, stdout = io.stdout, stderr = io.stderr }\n" +"\n" +"-- comment out by guanyu_yan, not redirect io.\n" +"-- function print(...)\n" +"-- local buf = {...}\n" +"-- for i=1, select(\"#\", ...) do\n" +"-- buf[i] = tostring(buf[i])\n" +"-- end\n" +"-- io.stdout:write(table.concat(buf, \"\t\") .. \"\n\")\n" +"-- end\n" +"\n" +"-- Actually change standard output file but still return the \"fake\" stdout\n" +"function io.output(output)\n" +" io.base.output(output)\n" +" return io.stdout\n" +"end\n" +"\n" +"local dummy = function() end\n" +"\n" +"-- metatable for redirecting output (not printed at all in actual output)\n" +"core.redirect_output = {\n" +" write = function(self, ...)\n" +" local buf = {...}\n" +" for i=1, select(\"#\", ...) do buf[i] = tostring(buf[i]) end\n" +" buf = table.concat(buf):gsub(\"\n\", \"\r\n\")\n" +" dbgp.send_xml(self.skt, { tag = \"stream\", attr = { type=self.mode }, util.b64(buf) } )\n" +" end,\n" +" flush = dummy,\n" +" close = dummy,\n" +" setvbuf = dummy,\n" +" seek = dummy\n" +"}\n" +"core.redirect_output.__index = core.redirect_output\n" +"\n" +"-- metatable for cloning output (outputs to actual system and send to IDE)\n" +"core.copy_output = {\n" +" write = function(self, ...)\n" +" core.redirect_output.write(self, ...)\n" +" io.base[self.mode]:write(...)\n" +" end,\n" +" flush = function(self, ...) return self.out:flush(...) end,\n" +" close = function(self, ...) return self.out:close(...) end,\n" +" setvbuf = function(self, ...) return self.out:setvbuf(...) end,\n" +" seek = function(self, ...) return self.out:seek(...) end,\n" +"}\n" +"core.copy_output.__index = core.copy_output\n" +"\n" +"-------------------------------------------------------------------------------\n" +"-- Breakpoint registry\n" +"-------------------------------------------------------------------------------\n" +"-- Registry of current stack levels of all running threads\n" +"local stack_levels = setmetatable( { }, { __mode = \"k\" } )\n" +"\n" +"-- File/line mapping for breakpoints (BP). For a given file/line, a list of BP is associated (DBGp specification section 7.6.1\n" +"-- require that multiple BP at same place must be handled)\n" +"-- A BP is a table with all additional properties (type, condition, ...) the id is the string representation of the table.\n" +"core.breakpoints = {\n" +" -- functions to call to match hit conditions\n" +" hit_conditions = {\n" +" [\">=\"] = function(value, target) return value >= target end,\n" +" [\"==\"] = function(value, target) return value == target end,\n" +" [\"%\"] = function(value, target) return (value % target) == 0 end,\n" +" }\n" +"}\n" +"\n" +"-- tracks events such as step_into or step_over\n" +"core.events = { }\n" +"\n" +"do\n" +" local file_mapping = { }\n" +" local id_mapping = { }\n" +" local waiting_sessions = { } -- sessions that wait for an event (over, into, out)\n" +" local step_into = nil -- session that registered a step_into event, if any\n" +" local sequence = 0 -- used to generate breakpoint IDs\n" +" local line_mapping = {} -- use to record the line of bp\n" +"\n" +" local function insert_line_mapping(line)\n" +" if line_mapping[line] == nil then\n" +" line_mapping[line] = 1\n" +" else\n" +" line_mapping[line] = line_mapping[line] + 1\n" +" end\n" +" end\n" +"\n" +" local function remove_line_mapping(line)\n" +" if not line_mapping[line] and line_mapping[line] > 1 then\n" +" line_mapping[line] = line_mapping[line] - 1\n" +" else\n" +" line_mapping[line] = nil\n" +" end\n" +" end\n" +"\n" +" function core.breakpoints.guess(line)\n" +" return line_mapping[line]\n" +" end\n" +"\n" +" function core.breakpoints.update(oldline,newbp)\n" +" local file = newbp.filename\n" +" local line = oldline\n" +" local filereg = file_mapping[file]\n" +" if not filereg then return nil end\n" +" local linereg = filereg[line]\n" +" if not linereg then return nil end\n" +" remove_line_mapping(oldline)\n" +" for i=1, #linereg do\n" +" if linereg[i].id == newbp.id then\n" +" table.remove(linereg, i)\n" +" break\n" +" end\n" +" end\n" +" linereg = {}\n" +" insert_line_mapping(newbp.lineno)\n" +" table.insert(linereg, newbp)\n" +" filereg[newbp.lineno] = linereg\n" +" end\n" +"\n" +" --- Inserts a new breakpoint into registry\n" +" -- @param bp (table) breakpoint data\n" +" -- @param uri (string, optional) Absolute file URI, for line breakpoints\n" +" -- @param line (number, optional) Line where breakpoint stops, for line breakpoints\n" +" -- @return breakpoint identifier\n" +" function core.breakpoints.insert(bp)\n" +" local bpid = sequence\n" +" sequence = bpid + 1\n" +" bp.id = bpid\n" +" -- re-encode the URI to avoid any mismatch (with authority for example)\n" +" local uri = url.parse(bp.filename)\n" +" bp.filename = url.build{ scheme=uri.scheme, authority=\"\", path=platform.normalize(uri.path)}\n" +"\n" +" local filereg = file_mapping[bp.filename]\n" +" if not filereg then\n" +" filereg = { }\n" +" file_mapping[bp.filename] = filereg\n" +" end\n" +"\n" +" local linereg = filereg[bp.lineno]\n" +" if not linereg then\n" +" linereg = {}\n" +" filereg[bp.lineno] = linereg\n" +" end\n" +" insert_line_mapping(bp.lineno)\n" +"\n" +" table.insert(linereg, bp)\n" +"\n" +" id_mapping[bpid] = bp\n" +" return bpid\n" +" end\n" +"\n" +" --- If breakpoint(s) exists for given file/line, uptates breakpoint counters\n" +" -- and returns whether a breakpoint has matched (boolean)\n" +" function core.breakpoints.at(file, line)\n" +" local temp = file:sub(#\"file://\"+1)\n" +" for k, _ in pairs(file_mapping) do\n" +" i,j = k:find(temp)\n" +" if(j == #k) then\n" +" file = k\n" +" break;\n" +" end\n" +" end\n" +" local bps = file_mapping[file] and file_mapping[file][line]\n" +" if not bps then return nil end\n" +"\n" +" local do_break = false\n" +" for _, bp in pairs(bps) do\n" +" if bp.state == \"enabled\" then\n" +" local match = true\n" +" if bp.condition then\n" +" -- TODO: this is not the optimal solution because Context can be instantiated twice if the breakpoint matches\n" +" local cxt = context.Context:new(active_session.coro, 0)\n" +" setbpenv(bp.condition, cxt)\n" +" local success, result = pcall(bp.condition)\n" +" if not success then log(\"ERROR\", \"Condition evaluation failed for breakpoint at %s:%d: %s\", file, line, result) end\n" +" -- debugger always stops if an error occurs\n" +" match = (not success) or result\n" +" end\n" +" if match then\n" +" bp.hit_count = bp.hit_count + 1\n" +" if core.breakpoints.hit_conditions[bp.hit_condition](bp.hit_count, bp.hit_value) then\n" +" if bp.temporary then\n" +" core.breakpoints.remove(bp.id)\n" +" end\n" +" do_break = true\n" +" -- there is no break to handle multiple breakpoints: all hit counts must be updated\n" +" end\n" +" end\n" +" end\n" +" end\n" +" return do_break\n" +" end\n" +"\n" +" function core.breakpoints.get(id)\n" +" if id then return id_mapping[id]\n" +" else return id_mapping end\n" +" end\n" +"\n" +" function core.breakpoints.remove(id)\n" +" local bp = id_mapping[id]\n" +" if bp then\n" +" id_mapping[id] = nil\n" +" local linereg = file_mapping[bp.filename][bp.lineno]\n" +" for i=1, #linereg do\n" +" if linereg[i] == bp then\n" +" table.remove(linereg, i)\n" +" break\n" +" end\n" +" end\n" +"\n" +" remove_line_mapping(bp.lineno)\n" +"\n" +" -- cleanup file_mapping\n" +" if not next(linereg) then file_mapping[bp.filename][bp.lineno] = nil end\n" +" if not next(file_mapping[bp.filename]) then file_mapping[bp.filename] = nil end\n" +" return true\n" +" end\n" +" return false\n" +" end\n" +"\n" +" --- Returns an XML data structure that describes given breakpoint\n" +" -- @param id (number) breakpoint ID\n" +" -- @return Table describing a tag or nil followed by an error message\n" +" function core.breakpoints.get_xml(id)\n" +" local bp = id_mapping[id]\n" +" if not bp then return nil, \"No such breakpoint: \"..tostring(id) end\n" +"\n" +" local response = { tag = \"breakpoint\", attr = { } }\n" +" for k,v in pairs(bp) do response.attr[k] = v end\n" +" if bp.expression then\n" +" response[1] = { tag = \"expression\", bp.expression }\n" +" end\n" +"\n" +" -- internal use only\n" +" response.attr.expression = nil\n" +" response.attr.condition = nil\n" +" response.attr.temporary = nil -- TODO: the specification is not clear whether this should be provided, see other implementations\n" +" return response\n" +" end\n" +"\n" +" --- Register an event to be triggered.\n" +" -- @param event event name to register (must be \"over\", \"out\" or \"into\")\n" +" function core.events.register(event)\n" +" local thread = active_session.coro[1]\n" +" log(\"DEBUG\", \"Registered %s event for %s (%d)\", event, tostring(thread), stack_levels[thread])\n" +" if event == \"into\" then\n" +" step_into = true\n" +" else\n" +" waiting_sessions[thread] = { event, stack_levels[thread] }\n" +" end\n" +" end\n" +"\n" +" --- Returns if an event (step into, over, out) is triggered.\n" +" -- Does *not* discard events (even if they match) as event must be discarded manually if a breakpoint match before anyway.\n" +" -- @return true if an event has matched, false otherwise\n" +" function core.events.does_match(line)\n" +" if step_into and core.prev_break_line ~= line then return true end\n" +"\n" +" local thread = active_session.coro[1]\n" +" local event = waiting_sessions[thread]\n" +" if event then\n" +" local event_type, target_level = unpack(event)\n" +" local current_level = stack_levels[thread]\n" +"\n" +" if (event_type == \"over\" and current_level <= target_level and core.prev_break_line ~= line) or -- step over\n" +" (event_type == \"out\" and current_level < target_level) then -- step out\n" +" log(\"DEBUG\", \"Event %s matched!\", event_type)\n" +" return true\n" +" end\n" +" end\n" +" return false\n" +" end\n" +"\n" +" --- Discards event for current thread (if any)\n" +" function core.events.discard()\n" +" waiting_sessions[active_session.coro[1]] = nil\n" +" step_into = nil\n" +" end\n" +"end\n" +"\n" +"-------------------------------------------------------------------------------\n" +"-- Debugger main loop\n" +"-------------------------------------------------------------------------------\n" +"\n" +"--- Send the XML response to the previous continuation command and clear the previous context\n" +"function core.previous_context_response(self, reason)\n" +" self.previous_context.status = self.state\n" +" self.previous_context.reason = reason or \"ok\"\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = self.previous_context } )\n" +" self.previous_context = nil\n" +"end\n" +"\n" +"local function cleanup()\n" +" coroutine.resume, coroutine.wrap = coresume, cowrap\n" +" for _, coro in pairs(core.active_coroutines.from_id) do\n" +" debug.sethook(coro)\n" +" end\n" +" -- to remove hook on the main coroutine, it must be the current one (otherwise, this is a no-op) and this function\n" +" -- have to be called adain later on the main thread to finish cleaup\n" +" debug.sethook()\n" +" core.active_coroutines.from_id, core.active_coroutines.from_coro = { }, { }\n" +"end\n" +"\n" +"--- This function handles the debugger commands while the execution is paused. This does not use coroutines because there is no\n" +"-- way to get main coro in Lua 5.1 (only in 5.2)\n" +"local function debugger_loop(self, async_packet)\n" +" self.skt:settimeout(nil) -- set socket blocking\n" +"\n" +" -- in async mode, the debugger does not wait for another command before continuing and does not modify previous_context\n" +" local async_mode = async_packet ~= nil\n" +"\n" +" if self.previous_context and not async_mode then\n" +" self.state = \"break\"\n" +" core.previous_context_response(self)\n" +" end\n" +" self.stack = context.ContextManager(self.coro) -- will be used to mutualize context allocation for each loop\n" +"\n" +" while true do\n" +" -- reads packet\n" +" local packet = async_packet or dbgp.read_packet(self.skt)\n" +" if not packet then\n" +" log(\"WARNING\", \"lost debugger connection\")\n" +" cleanup()\n" +" break\n" +" end\n" +"\n" +" async_packet = nil\n" +" log(\"DEBUG\", packet)\n" +" local cmd, args, data = dbgp.cmd_parse(packet)\n" +"\n" +" -- FIXME: command such as continuations sent in async mode could lead both engine and IDE in inconsistent state :\n" +" -- make a blacklist/whitelist of forbidden or allowed commands in async ?\n" +" -- invoke function\n" +" local func = commands[cmd]\n" +" if func then\n" +" local ok, cont = xpcall(function() return func(self, args, data) end, debug.traceback)\n" +" if not ok then -- internal exception\n" +" local code, msg, attr\n" +" if type(cont) == \"table\" and getmetatable(cont) == dbgp.DBGP_ERR_METATABLE then\n" +" code, msg, attr = cont.code, cont.message, cont.attr\n" +" else\n" +" code, msg, attr = 998, tostring(cont), { }\n" +" end\n" +" log(\"ERROR\", \"Command %s caused: (%d) %s\", cmd, code, tostring(msg))\n" +" attr.command, attr.transaction_id = cmd, args.i\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = attr, dbgp.make_error(code, msg) } )\n" +" elseif cont then\n" +" self.previous_context = { command = cmd, transaction_id = args.i }\n" +" break\n" +" elseif cont == nil and async_mode then\n" +" break\n" +" elseif cont == false then -- In case of commands that fully resumes debugger loop, the mode is sync\n" +" async_mode = false\n" +" end\n" +" else\n" +" log(\"Got unknown command: \"..cmd)\n" +" dbgp.send_xml(self.skt, { tag = \"response\", attr = { command = cmd, transaction_id = args.i, }, dbgp.make_error(4) } )\n" +" end\n" +" end\n" +"\n" +" self.stack = nil -- free allocated contexts\n" +" self.state = \"running\"\n" +" self.skt:settimeout(0) -- reset socket to async\n" +"end\n" +"\n" +"-- Stack handling can be pretty complex sometimes, especially with LuaJIT (as tail-call optimization are\n" +"-- more aggressive as stock Lua). So all debugger stuff is done in another coroutine, which leave the program\n" +"-- stack in a clean state and allow faster and clearer stack operations (no need to remove all debugger calls\n" +"-- from stack for each operation).\n" +"-- However, this does not always work with stock Lua 5.1 as the main coroutine cannot be referenced\n" +"-- (coroutine.running() return nil). For this particular case, the debugger loop is started on the top of\n" +"-- program stack and every stack operation is relative the the hook level (see MainThread in util.lua).\n" +"local function line_hook(line)\n" +" local do_break, packet = nil, nil\n" +"\n" +" if (core.prev_break_line ~= line) then\n" +" if core.breakpoints.guess(line) ~= nil then\n" +" local info = active_session.coro:getinfo(0, \"S\")\n" +" local uri = platform.get_uri(info.source)\n" +" if uri and uri ~= debugger_uri and uri ~= transportmodule_uri then -- the debugger does not break if the source is not known\n" +" do_break = core.breakpoints.at(uri, line) --or core.events.does_match()\n" +" end\n" +" end\n" +" end\n" +"\n" +" if not do_break then\n" +" do_break = core.events.does_match(line)\n" +" end\n" +" if do_break then\n" +" core.prev_break_line = line\n" +" core.events.discard()\n" +" end\n" +" -- check for async commands\n" +" if not do_break then\n" +" packet = dbgp.read_packet(active_session.skt)\n" +" if packet then do_break = true end\n" +" end\n" +" if do_break then\n" +" core.prev_break_line = line\n" +" local success, err = pcall(debugger_loop, active_session, packet)\n" +" if not success then log(\"ERROR\", \"Error while debug loop: \"..err) end\n" +" end\n" +"end\n" +"\n" +"local line_hook_coro = cocreate(function(line)\n" +" while true do\n" +" line_hook(line)\n" +" line = coyield()\n" +" end\n" +"end)\n" +"\n" +"local function debugger_hook(event, line)\n" +" local thread = corunning() or \"main\"\n" +" if event == \"call\" then\n" +" stack_levels[thread] = stack_levels[thread] + 1\n" +" elseif event == \"tail call\" then\n" +" -- tail calls has no effects on stack handling: it is only used only for step commands but a such even does not\n" +" -- interfere with any of them\n" +" elseif event == \"return\" or event == \"tail return\" then\n" +" stack_levels[thread] = stack_levels[thread] - 1\n" +" else -- line event: check for breakpoint\n" +" active_session.coro = util.CurrentThread(corunning())\n" +" if active_session.coro[1] == \"main\" then\n" +" line_hook(line)\n" +" else\n" +" -- run the debugger loop in another thread on the other cases (simplifies stack handling)\n" +" assert(coresume(line_hook_coro, line))\n" +" end\n" +" active_session.coro = nil\n" +" end\n" +"end\n" +"\n" +"if rawget(_G, \"jit\") then\n" +" debugger_hook = function(event, line)\n" +" local thread = corunning() or \"main\"\n" +" if event == \"call\" then\n" +" if debug.getinfo(2, \"S\").what == \"C\" then return end\n" +" stack_levels[thread] = stack_levels[thread] + 1\n" +" elseif event == \"return\" or event == \"tail return\" then\n" +" -- Return hooks are not called for tail calls in JIT (but unlike 5.2 there is no way to know whether a call is tail or not).\n" +" -- So the only reliable way to know stack depth is to walk it.\n" +" local depth = 2\n" +" -- TODO: find the fastest way to call getinfo ('what' parameter)\n" +" while debug.getinfo(depth, \"f\") do depth = depth + 1 end\n" +" stack_levels[thread] = depth - 2\n" +" elseif event == \"line\" then\n" +" active_session.coro = util.CurrentThread(corunning())\n" +" if active_session.coro[1] == \"main\" then\n" +" line_hook(line)\n" +" else\n" +" -- run the debugger loop in another thread on the other cases (simplifies stack handling)\n" +" assert(coresume(line_hook_coro, line))\n" +" end\n" +" active_session.coro = nil\n" +" end\n" +" end\n" +"end\n" +"\n" +"local function init(host, port, idekey, transport, executionplatform, workingdirectory, searchpaths)\n" +" -- get connection data\n" +" local host = host or os.getenv \"DBGP_IDEHOST\" or \"127.0.0.1\"\n" +" local port = port or os.getenv \"DBGP_IDEPORT\" or \"10000\"\n" +" local idekey = idekey or os.getenv(\"DBGP_IDEKEY\") or \"luaidekey\"\n" +"\n" +" -- init plaform module\n" +" local executionplatform = executionplatform or os.getenv(\"DBGP_PLATFORM\") or nil\n" +" local workingdirectory = workingdirectory or os.getenv(\"DBGP_WORKINGDIR\") or nil\n" +" platform.init(executionplatform,workingdirectory,searchpaths)\n" +"\n" +" -- get transport layer\n" +" local transportpath = transport or os.getenv(\"DBGP_TRANSPORT\") or \"debugger.transport.luasocket\"\n" +" local transport = require(transportpath)\n" +"\n" +" -- install base64 functions into util\n" +" util.b64, util.rawb64, util.unb64 = transport.b64, transport.rawb64, transport.unb64\n" +"\n" +" local skt = assert(transport.create())\n" +" skt:settimeout(nil)\n" +"\n" +" -- try to connect several times: if IDE launches both process and server at same time, first connect attempts may fail\n" +" local ok, err\n" +" print(string.format(\"Debugger v%s\", DBGP_CLIENT_VERSION))\n" +" print(string.format(\"Debugger: Trying to connect to %s:%s ... \", host, port))\n" +" ok, err = skt:connect(host, port)\n" +" for i=1, 4 do\n" +" if ok then\n" +" print(\"Debugger: Connection succeed.\")\n" +" break\n" +" else\n" +" -- wait\n" +" transport.sleep(0.5)\n" +" -- then retry.\n" +" print(string.format(\"Debugger: Retrying to connect to %s:%s ... \", host, port))\n" +" ok, err = skt:connect(host, port)\n" +" end\n" +" end\n" +" if err then error(string.format(\"Cannot connect to %s:%d : %s\", host, port, err)) end\n" +"\n" +" -- get the debugger and transport layer URI\n" +" debugger_uri = platform.get_uri(debug.getinfo(1).source)\n" +" transportmodule_uri = platform.get_uri(debug.getinfo(transport.create).source)\n" +"\n" +" -- get the root script path (the highest possible stack index)\n" +" local source\n" +" for i=2, math.huge do\n" +" local info = debug.getinfo(i)\n" +" if not info then break end\n" +" source = platform.get_uri(info.source) or source\n" +" end\n" +" if not source then source = \"unknown:/\" end -- when loaded before actual script (with a command line switch)\n" +"\n" +" -- generate some kind of thread identifier\n" +" local thread = corunning() or \"main\"\n" +" stack_levels[thread] = 1 -- the return event will set the counter to 0\n" +" local sessionid = tostring(os.time()) .. \"_\" .. tostring(thread)\n" +"\n" +" dbgp.send_xml(skt, { tag = \"init\", attr = {\n" +" appid = \"Lua DBGp\",\n" +" idekey = idekey,\n" +" session = sessionid,\n" +" thread = tostring(thread),\n" +" parent = \"\",\n" +" language = \"Lua\",\n" +" protocol_version = \"1.0\",\n" +" fileuri = source\n" +" } })\n" +"\n" +" --FIXME util.CurrentThread(corunning) => util.CurrentThread(corunning()) WHAT DOES IT FIXES ??\n" +" local sess = { skt = skt, state = \"starting\", id = sessionid, coro = util.CurrentThread(corunning) }\n" +" active_session = sess\n" +" debugger_loop(sess)\n" +"\n" +" -- set debug hooks\n" +" debug.sethook(debugger_hook, \"rlc\")\n" +"\n" +" -- install coroutine collecting functions.\n" +" -- TODO: maintain a list of *all* coroutines can be overkill (for example, the ones created by copcall), make a extension point to\n" +" -- customize debugged coroutines\n" +" -- coroutines are referenced during their first resume (so we are sure that they always have a stack frame)\n" +" local function resume_handler(coro, ...)\n" +" if costatus(coro) == \"dead\" then\n" +" local coro_id = core.active_coroutines.from_coro[coro]\n" +" core.active_coroutines.from_id[coro_id] = nil\n" +" core.active_coroutines.from_coro[coro] = nil\n" +" stack_levels[coro] = nil\n" +" end\n" +" return ...\n" +" end\n" +"\n" +" function coroutine.resume(coro, ...)\n" +" if not stack_levels[coro] then\n" +" -- first time referenced\n" +" stack_levels[coro] = 0\n" +" core.active_coroutines.n = core.active_coroutines.n + 1\n" +" core.active_coroutines.from_id[core.active_coroutines.n] = coro\n" +" core.active_coroutines.from_coro[coro] = core.active_coroutines.n\n" +" debug.sethook(coro, debugger_hook, \"rlc\")\n" +" end\n" +" return resume_handler(coro, coresume(coro, ...))\n" +" end\n" +"\n" +" -- coroutine.wrap uses directly C API for coroutines and does not trigger our overridden coroutine.resume\n" +" -- so this is an implementation of wrap in pure Lua\n" +" local function wrap_handler(status, ...)\n" +" if not status then error((...)) end\n" +" return ...\n" +" end\n" +"\n" +" function coroutine.wrap(f)\n" +" local coro = coroutine.create(f)\n" +" return function(...)\n" +" return wrap_handler(coroutine.resume(coro, ...))\n" +" end\n" +" end\n" +"\n" +" return sess\n" +"end\n" +"\n" +"return init\n" +"\n"; -int luaopen_lua_m_ldt_debugger(lua_State *L) { - luaL_loadbuffer(L, - (const char*)lua_m_ldt_debugger, - sizeof(lua_m_ldt_debugger), - "debugger"); +int luaopen_lua_m_debugger(lua_State *L) { + luaL_loadstring(L, lua_m_debugger); return 1; } -static luaL_Reg debugger_modules[] = { - {"debugger", luaopen_lua_m_ldt_debugger}, +static luaL_Reg lua_debugger_modules[] = { + {"debugger", luaopen_lua_m_debugger}, {NULL, NULL} }; void luaopen_debugger(lua_State* L) { - luaL_Reg* lib = debugger_modules; + luaL_Reg* lib = lua_debugger_modules; lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); for (; lib->func; lib++) diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h index 39b1579e6f..48ab184ecf 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h @@ -1,8 +1,8 @@ -/* debugger.h.h */ +/* lua_debugger.h.h */ -#ifndef __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ -#define __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ +#ifndef __LUA_MODULES_6138519995EA0D10EABE8E26B195D5DB_H_ +#define __LUA_MODULES_6138519995EA0D10EABE8E26B195D5DB_H_ #if __cplusplus extern "C" { @@ -13,11 +13,11 @@ extern "C" { void luaopen_debugger(lua_State* L); /* -int luaopen_lua_m_ldt_debugger(lua_State* L); +int luaopen_lua_m_debugger(lua_State* L); */ #if __cplusplus } #endif -#endif /* __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ */ +#endif /* __LUA_MODULES_6138519995EA0D10EABE8E26B195D5DB_H_ */ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json index 9b557cd7ab..f1a55fd365 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json @@ -16,41 +16,6 @@ } ], "must_copy_resources": [ - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui", - "to": "" - }, - { - "from": "../../cocos2d-x/external/lua/luasocket", - "to": "", - "include": [ - "*.lua" - ] - }, { "from": "../../../config.json", "to": "" diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj index 05783661e6..ed80163ffe 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj @@ -7,104 +7,14 @@ objects = { /* Begin PBXBuildFile section */ - 152A3432199CE585004B68DC /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3430199CE585004B68DC /* CCBReaderLoad.lua */; }; - 152A3433199CE585004B68DC /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3430199CE585004B68DC /* CCBReaderLoad.lua */; }; - 152A3434199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */; }; - 152A3435199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */; }; - 152A345C199CE5A7004B68DC /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3458199CE5A7004B68DC /* CocoStudio.lua */; }; - 152A345D199CE5A7004B68DC /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3458199CE5A7004B68DC /* CocoStudio.lua */; }; - 152A345E199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */; }; - 152A345F199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */; }; - 152A3460199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */; }; - 152A3461199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */; }; - 152A3462199CE5A7004B68DC /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345B199CE5A7004B68DC /* StudioConstants.lua */; }; - 152A3463199CE5A7004B68DC /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345B199CE5A7004B68DC /* StudioConstants.lua */; }; - 152A3468199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */; }; - 152A3469199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */; }; - 152A346A199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */; }; - 152A346B199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */; }; - 152A346C199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */; }; - 152A346D199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */; }; - 152A346E199CE5B9004B68DC /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */; }; - 152A346F199CE5B9004B68DC /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */; }; - 152A3474199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */; }; - 152A3475199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */; }; - 152A3476199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */; }; - 152A3477199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */; }; - 152A3478199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */; }; - 152A3479199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */; }; - 152A347A199CE5CE004B68DC /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3473199CE5CE004B68DC /* GuiConstants.lua */; }; - 152A347B199CE5CE004B68DC /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3473199CE5CE004B68DC /* GuiConstants.lua */; }; 15427CD3198F221400DC375D /* libcocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4251834BDA200142BE0 /* libcocos2d iOS.a */; }; 15427CD5198F222200DC375D /* libluacocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15427CD2198F220600DC375D /* libluacocos2d iOS.a */; }; 15427CEC198F24A600DC375D /* libluacocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15427CC2198F220600DC375D /* libluacocos2d Mac.a */; }; 15427CEE198F24AF00DC375D /* libcocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4171834BDA200142BE0 /* libcocos2d Mac.a */; }; 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810C17EBBCAC00990C9B /* Icon-114.png */; }; 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4871834C90E00142BE0 /* libcurl.dylib */; }; - 15AA7D52199B51F000725633 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D48199B51F000725633 /* ftp.lua */; }; - 15AA7D53199B51F000725633 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D48199B51F000725633 /* ftp.lua */; }; - 15AA7D54199B51F000725633 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D49199B51F000725633 /* headers.lua */; }; - 15AA7D55199B51F000725633 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D49199B51F000725633 /* headers.lua */; }; - 15AA7D56199B51F000725633 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4A199B51F000725633 /* http.lua */; }; - 15AA7D57199B51F000725633 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4A199B51F000725633 /* http.lua */; }; - 15AA7D58199B51F000725633 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4B199B51F000725633 /* ltn12.lua */; }; - 15AA7D59199B51F000725633 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4B199B51F000725633 /* ltn12.lua */; }; - 15AA7D5A199B51F000725633 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4C199B51F000725633 /* mbox.lua */; }; - 15AA7D5B199B51F000725633 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4C199B51F000725633 /* mbox.lua */; }; - 15AA7D5C199B51F000725633 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4D199B51F000725633 /* mime.lua */; }; - 15AA7D5D199B51F000725633 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4D199B51F000725633 /* mime.lua */; }; - 15AA7D5E199B51F000725633 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4E199B51F000725633 /* smtp.lua */; }; - 15AA7D5F199B51F000725633 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4E199B51F000725633 /* smtp.lua */; }; - 15AA7D60199B51F000725633 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4F199B51F000725633 /* socket.lua */; }; - 15AA7D61199B51F000725633 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4F199B51F000725633 /* socket.lua */; }; - 15AA7D62199B51F000725633 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D50199B51F000725633 /* tp.lua */; }; - 15AA7D63199B51F000725633 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D50199B51F000725633 /* tp.lua */; }; - 15AA7D64199B51F000725633 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D51199B51F000725633 /* url.lua */; }; - 15AA7D65199B51F000725633 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D51199B51F000725633 /* url.lua */; }; - 15AA9632199B525400725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */; }; - 15AA9633199B525400725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */; }; - 15AA9634199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA9635199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA9636199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA9637199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA9638199B525400725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9631199B525400725633 /* NetworkConstants.lua */; }; - 15AA9639199B525400725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9631199B525400725633 /* NetworkConstants.lua */; }; 15AA9648199B6D4600725633 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 15AA9646199B6D4600725633 /* lua_debugger.c */; }; 15AA9649199B6D4600725633 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 15AA9646199B6D4600725633 /* lua_debugger.c */; }; - 15D1FDF81998714100302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEA1998714100302043 /* bitExtend.lua */; }; - 15D1FDF91998714100302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEA1998714100302043 /* bitExtend.lua */; }; - 15D1FDFA1998714100302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEB1998714100302043 /* Cocos2d.lua */; }; - 15D1FDFB1998714100302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEB1998714100302043 /* Cocos2d.lua */; }; - 15D1FDFC1998714100302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */; }; - 15D1FDFD1998714100302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */; }; - 15D1FDFE1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FDFF1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FE001998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE011998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE021998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE031998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE041998714100302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE051998714100302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE061998714100302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF11998714100302043 /* DrawPrimitives.lua */; }; - 15D1FE071998714100302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF11998714100302043 /* DrawPrimitives.lua */; }; - 15D1FE081998714100302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF21998714100302043 /* extern.lua */; }; - 15D1FE091998714100302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF21998714100302043 /* extern.lua */; }; - 15D1FE0A1998714100302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF31998714100302043 /* json.lua */; }; - 15D1FE0B1998714100302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF31998714100302043 /* json.lua */; }; - 15D1FE0C1998714100302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF41998714100302043 /* luaj.lua */; }; - 15D1FE0D1998714100302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF41998714100302043 /* luaj.lua */; }; - 15D1FE0E1998714100302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF51998714100302043 /* luaoc.lua */; }; - 15D1FE0F1998714100302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF51998714100302043 /* luaoc.lua */; }; - 15D1FE101998714100302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF61998714100302043 /* Opengl.lua */; }; - 15D1FE111998714100302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF61998714100302043 /* Opengl.lua */; }; - 15D1FE121998714100302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF71998714100302043 /* OpenglConstants.lua */; }; - 15D1FE131998714100302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF71998714100302043 /* OpenglConstants.lua */; }; - 15D1FE171998715500302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE141998715500302043 /* AudioEngine.lua */; }; - 15D1FE181998715500302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE141998715500302043 /* AudioEngine.lua */; }; - 15D1FE191998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE1A1998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE1B1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */; }; - 15D1FE1C1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */; }; 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; 3EB5152C19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; 3EB5152D19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; @@ -190,7 +100,6 @@ C06C3796191A1D1E00617BED /* ConfigParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06C3794191A1D1E00617BED /* ConfigParser.cpp */; }; C06C3797191A1D1E00617BED /* ConfigParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06C3794191A1D1E00617BED /* ConfigParser.cpp */; }; C07828F818B4D72E00BD2287 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C07828F418B4D72E00BD2287 /* main.m */; }; - C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C07828F518B4D72E00BD2287 /* MainMenu.xib */; }; C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07828F718B4D72E00BD2287 /* SimulatorApp.mm */; }; D6B061351803AC000077942B /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B061341803AC000077942B /* CoreMotion.framework */; }; F293B3CD15EB7BE500256477 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3CC15EB7BE500256477 /* QuartzCore.framework */; }; @@ -200,6 +109,7 @@ F293B3D915EB7BE500256477 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D815EB7BE500256477 /* Foundation.framework */; }; F293B3DB15EB7BE500256477 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3DA15EB7BE500256477 /* CoreGraphics.framework */; }; F293BB9C15EB831F00256477 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F293BB7E15EB831F00256477 /* AppDelegate.cpp */; }; + F405C6C919ED14AA005AD31C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F405C6CB19ED14AA005AD31C /* MainMenu.xib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -262,57 +172,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 152A3430199CE585004B68DC /* CCBReaderLoad.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CCBReaderLoad.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/CCBReaderLoad.lua"; sourceTree = ""; }; - 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosBuilderClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/DeprecatedCocosBuilderClass.lua"; sourceTree = ""; }; - 152A3458199CE5A7004B68DC /* CocoStudio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CocoStudio.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua"; sourceTree = ""; }; - 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioClass.lua"; sourceTree = ""; }; - 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua"; sourceTree = ""; }; - 152A345B199CE5A7004B68DC /* StudioConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = StudioConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua"; sourceTree = ""; }; - 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionClass.lua"; sourceTree = ""; }; - 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionEnum.lua"; sourceTree = ""; }; - 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua"; sourceTree = ""; }; - 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ExtensionConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua"; sourceTree = ""; }; - 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua"; sourceTree = ""; }; - 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua"; sourceTree = ""; }; - 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = experimentalUIConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/experimentalUIConstants.lua"; sourceTree = ""; }; - 152A3473199CE5CE004B68DC /* GuiConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = GuiConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua"; sourceTree = ""; }; 15427CE2198F237300DC375D /* lua_module_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lua_module_register.h; path = ../Classes/lua_module_register.h; sourceTree = ""; }; 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = "../../cocos2d-x/build/cocos2d_libs.xcodeproj"; sourceTree = ""; }; 15A8A4871834C90E00142BE0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; - 15AA7D48199B51F000725633 /* ftp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ftp.lua; path = "../../cocos2d-x/external/lua/luasocket/ftp.lua"; sourceTree = ""; }; - 15AA7D49199B51F000725633 /* headers.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = headers.lua; path = "../../cocos2d-x/external/lua/luasocket/headers.lua"; sourceTree = ""; }; - 15AA7D4A199B51F000725633 /* http.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.lua; path = "../../cocos2d-x/external/lua/luasocket/http.lua"; sourceTree = ""; }; - 15AA7D4B199B51F000725633 /* ltn12.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ltn12.lua; path = "../../cocos2d-x/external/lua/luasocket/ltn12.lua"; sourceTree = ""; }; - 15AA7D4C199B51F000725633 /* mbox.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mbox.lua; path = "../../cocos2d-x/external/lua/luasocket/mbox.lua"; sourceTree = ""; }; - 15AA7D4D199B51F000725633 /* mime.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mime.lua; path = "../../cocos2d-x/external/lua/luasocket/mime.lua"; sourceTree = ""; }; - 15AA7D4E199B51F000725633 /* smtp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = smtp.lua; path = "../../cocos2d-x/external/lua/luasocket/smtp.lua"; sourceTree = ""; }; - 15AA7D4F199B51F000725633 /* socket.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = socket.lua; path = "../../cocos2d-x/external/lua/luasocket/socket.lua"; sourceTree = ""; }; - 15AA7D50199B51F000725633 /* tp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tp.lua; path = "../../cocos2d-x/external/lua/luasocket/tp.lua"; sourceTree = ""; }; - 15AA7D51199B51F000725633 /* url.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = url.lua; path = "../../cocos2d-x/external/lua/luasocket/url.lua"; sourceTree = ""; }; - 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkClass.lua"; sourceTree = ""; }; - 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkEnum.lua"; sourceTree = ""; }; - 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua"; sourceTree = ""; }; - 15AA9631199B525400725633 /* NetworkConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua"; sourceTree = ""; }; 15AA9646199B6D4600725633 /* lua_debugger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lua_debugger.c; sourceTree = ""; }; 15AA9647199B6D4600725633 /* lua_debugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_debugger.h; sourceTree = ""; }; 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; }; - 15D1FDEA1998714100302043 /* bitExtend.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = bitExtend.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua"; sourceTree = ""; }; - 15D1FDEB1998714100302043 /* Cocos2d.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2d.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua"; sourceTree = ""; }; - 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2dConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua"; sourceTree = ""; }; - 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dClass.lua"; sourceTree = ""; }; - 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua"; sourceTree = ""; }; - 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua"; sourceTree = ""; }; - 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedOpenglEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedOpenglEnum.lua"; sourceTree = ""; }; - 15D1FDF11998714100302043 /* DrawPrimitives.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DrawPrimitives.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua"; sourceTree = ""; }; - 15D1FDF21998714100302043 /* extern.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = extern.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/extern.lua"; sourceTree = ""; }; - 15D1FDF31998714100302043 /* json.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = json.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/json.lua"; sourceTree = ""; }; - 15D1FDF41998714100302043 /* luaj.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaj.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaj.lua"; sourceTree = ""; }; - 15D1FDF51998714100302043 /* luaoc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaoc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaoc.lua"; sourceTree = ""; }; - 15D1FDF61998714100302043 /* Opengl.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Opengl.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua"; sourceTree = ""; }; - 15D1FDF71998714100302043 /* OpenglConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OpenglConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua"; sourceTree = ""; }; - 15D1FE141998715500302043 /* AudioEngine.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = AudioEngine.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua"; sourceTree = ""; }; - 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionClass.lua"; sourceTree = ""; }; - 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua"; sourceTree = ""; }; 1AF4C402178663F200122817 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 3EB51526195187AF006966AA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 3EB5152A19528284006966AA /* Protos.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Protos.pb.cc; sourceTree = ""; }; @@ -405,7 +270,6 @@ C06C3794191A1D1E00617BED /* ConfigParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConfigParser.cpp; path = ../Classes/ConfigParser.cpp; sourceTree = ""; }; C06C3795191A1D1E00617BED /* ConfigParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConfigParser.h; path = ../Classes/ConfigParser.h; sourceTree = ""; }; C07828F418B4D72E00BD2287 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - C07828F518B4D72E00BD2287 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; C07828F618B4D72E00BD2287 /* SimulatorApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimulatorApp.h; sourceTree = ""; }; C07828F718B4D72E00BD2287 /* SimulatorApp.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimulatorApp.mm; sourceTree = ""; }; D6B061341803AC000077942B /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; }; @@ -420,6 +284,7 @@ F293B3DA15EB7BE500256477 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; F293BB7E15EB831F00256477 /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AppDelegate.cpp; path = ../Classes/AppDelegate.cpp; sourceTree = ""; }; F293BB7F15EB831F00256477 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ../Classes/AppDelegate.h; sourceTree = ""; }; + F405C6CA19ED14AA005AD31C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -475,58 +340,6 @@ name = Products; sourceTree = ""; }; - 1A0227A417A3AA1A00B867AD /* Lua Common */ = { - isa = PBXGroup; - children = ( - 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */, - 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */, - 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */, - 152A3473199CE5CE004B68DC /* GuiConstants.lua */, - 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */, - 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */, - 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */, - 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */, - 152A3458199CE5A7004B68DC /* CocoStudio.lua */, - 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */, - 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */, - 152A345B199CE5A7004B68DC /* StudioConstants.lua */, - 152A3430199CE585004B68DC /* CCBReaderLoad.lua */, - 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */, - 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */, - 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */, - 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */, - 15AA9631199B525400725633 /* NetworkConstants.lua */, - 15AA7D48199B51F000725633 /* ftp.lua */, - 15AA7D49199B51F000725633 /* headers.lua */, - 15AA7D4A199B51F000725633 /* http.lua */, - 15AA7D4B199B51F000725633 /* ltn12.lua */, - 15AA7D4C199B51F000725633 /* mbox.lua */, - 15AA7D4D199B51F000725633 /* mime.lua */, - 15AA7D4E199B51F000725633 /* smtp.lua */, - 15AA7D4F199B51F000725633 /* socket.lua */, - 15AA7D50199B51F000725633 /* tp.lua */, - 15AA7D51199B51F000725633 /* url.lua */, - 15D1FE141998715500302043 /* AudioEngine.lua */, - 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */, - 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */, - 15D1FDEA1998714100302043 /* bitExtend.lua */, - 15D1FDEB1998714100302043 /* Cocos2d.lua */, - 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */, - 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */, - 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */, - 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */, - 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */, - 15D1FDF11998714100302043 /* DrawPrimitives.lua */, - 15D1FDF21998714100302043 /* extern.lua */, - 15D1FDF31998714100302043 /* json.lua */, - 15D1FDF41998714100302043 /* luaj.lua */, - 15D1FDF51998714100302043 /* luaoc.lua */, - 15D1FDF61998714100302043 /* Opengl.lua */, - 15D1FDF71998714100302043 /* OpenglConstants.lua */, - ); - name = "Lua Common"; - sourceTree = ""; - }; 3EB5152E1952865D006966AA /* protobuf-lite */ = { isa = PBXGroup; children = ( @@ -627,7 +440,7 @@ children = ( 5023817217EBBE3400990C9B /* Icon.icns */, C07828F418B4D72E00BD2287 /* main.m */, - C07828F518B4D72E00BD2287 /* MainMenu.xib */, + F405C6CB19ED14AA005AD31C /* MainMenu.xib */, C07828F618B4D72E00BD2287 /* SimulatorApp.h */, C07828F718B4D72E00BD2287 /* SimulatorApp.mm */, 5023817317EBBE3400990C9B /* Info.plist */, @@ -695,7 +508,6 @@ 5023817117EBBE3400990C9B /* mac */, F293BB7C15EB830F00256477 /* Classes */, F293B3CB15EB7BE500256477 /* Frameworks */, - 1A0227A417A3AA1A00B867AD /* Lua Common */, F293B3C915EB7BE500256477 /* Products */, F293BC4615EB859D00256477 /* Resources */, ); @@ -882,56 +694,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 152A3469199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */, - 152A345F199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */, - 15AA7D5F199B51F000725633 /* smtp.lua in Resources */, - 15AA7D63199B51F000725633 /* tp.lua in Resources */, - 15AA7D5D199B51F000725633 /* mime.lua in Resources */, - 15AA9635199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */, - 152A346B199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */, - 152A3475199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */, - 152A3435199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */, C03781BA18BF655400FE4F13 /* res in Resources */, - 15D1FE131998714100302043 /* OpenglConstants.lua in Resources */, - 15D1FE071998714100302043 /* DrawPrimitives.lua in Resources */, C03781BC18BF655400FE4F13 /* src in Resources */, - 15D1FE111998714100302043 /* Opengl.lua in Resources */, - C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */, - 152A345D199CE5A7004B68DC /* CocoStudio.lua in Resources */, - 15D1FE0D1998714100302043 /* luaj.lua in Resources */, - 15AA7D65199B51F000725633 /* url.lua in Resources */, - 15AA7D5B199B51F000725633 /* mbox.lua in Resources */, - 15D1FE051998714100302043 /* DeprecatedOpenglEnum.lua in Resources */, - 152A3479199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */, + F405C6C919ED14AA005AD31C /* MainMenu.xib in Resources */, 5023817617EBBE3400990C9B /* Icon.icns in Resources */, - 152A3463199CE5A7004B68DC /* StudioConstants.lua in Resources */, - 15D1FE031998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15AA7D59199B51F000725633 /* ltn12.lua in Resources */, - 15D1FDFF1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15AA7D53199B51F000725633 /* ftp.lua in Resources */, - 152A346D199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */, - 15D1FE1C1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15D1FDF91998714100302043 /* bitExtend.lua in Resources */, - 15D1FE011998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 152A3461199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */, - 152A3477199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */, - 15D1FE0B1998714100302043 /* json.lua in Resources */, - 15AA9639199B525400725633 /* NetworkConstants.lua in Resources */, - 15D1FE091998714100302043 /* extern.lua in Resources */, - 15AA7D61199B51F000725633 /* socket.lua in Resources */, - 15AA9637199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */, - 15D1FE1A1998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */, C05D1C131923449100B808A4 /* config.json in Resources */, - 15AA9633199B525400725633 /* DeprecatedNetworkClass.lua in Resources */, - 152A346F199CE5B9004B68DC /* ExtensionConstants.lua in Resources */, - 15D1FE0F1998714100302043 /* luaoc.lua in Resources */, - 15AA7D57199B51F000725633 /* http.lua in Resources */, - 152A347B199CE5CE004B68DC /* GuiConstants.lua in Resources */, - 15D1FDFD1998714100302043 /* Cocos2dConstants.lua in Resources */, - 15D1FDFB1998714100302043 /* Cocos2d.lua in Resources */, - 15D1FE181998715500302043 /* AudioEngine.lua in Resources */, - 15AA7D55199B51F000725633 /* headers.lua in Resources */, - 152A3433199CE585004B68DC /* CCBReaderLoad.lua in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -939,70 +706,25 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 152A345C199CE5A7004B68DC /* CocoStudio.lua in Resources */, - 15D1FDF81998714100302043 /* bitExtend.lua in Resources */, - 15AA7D52199B51F000725633 /* ftp.lua in Resources */, - 15AA7D58199B51F000725633 /* ltn12.lua in Resources */, - 15AA7D5A199B51F000725633 /* mbox.lua in Resources */, 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */, - 152A3478199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */, 5023811D17EBBCAC00990C9B /* Icon-120.png in Resources */, 5091733B17ECE17A00D62437 /* Icon-100.png in Resources */, - 152A346E199CE5B9004B68DC /* ExtensionConstants.lua in Resources */, - 15AA7D54199B51F000725633 /* headers.lua in Resources */, 5023811B17EBBCAC00990C9B /* Default@2x.png in Resources */, - 15D1FDFE1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */, 5091733617ECE17A00D62437 /* Icon-29.png in Resources */, - 15AA7D60199B51F000725633 /* socket.lua in Resources */, - 15D1FE061998714100302043 /* DrawPrimitives.lua in Resources */, - 15AA7D56199B51F000725633 /* http.lua in Resources */, - 15D1FE191998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */, - 152A3476199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */, - 15D1FDFA1998714100302043 /* Cocos2d.lua in Resources */, 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */, - 15D1FE0C1998714100302043 /* luaj.lua in Resources */, 5091733917ECE17A00D62437 /* Icon-58.png in Resources */, - 15D1FE121998714100302043 /* OpenglConstants.lua in Resources */, - 152A3474199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */, - 15D1FE021998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */, 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */, 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */, - 15D1FE001998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */, C03781B918BF655400FE4F13 /* res in Resources */, - 15AA9634199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */, - 15D1FE1B1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, 5023812217EBBCAC00990C9B /* Icon-76.png in Resources */, 5091733A17ECE17A00D62437 /* Icon-80.png in Resources */, - 152A347A199CE5CE004B68DC /* GuiConstants.lua in Resources */, - 15D1FE0A1998714100302043 /* json.lua in Resources */, - 15AA7D5C199B51F000725633 /* mime.lua in Resources */, - 152A3462199CE5A7004B68DC /* StudioConstants.lua in Resources */, - 15D1FE041998714100302043 /* DeprecatedOpenglEnum.lua in Resources */, - 152A3468199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */, 5091733717ECE17A00D62437 /* Icon-40.png in Resources */, 5023811E17EBBCAC00990C9B /* Icon-144.png in Resources */, 5023811A17EBBCAC00990C9B /* Default.png in Resources */, - 15AA7D5E199B51F000725633 /* smtp.lua in Resources */, - 152A3434199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */, - 15AA9632199B525400725633 /* DeprecatedNetworkClass.lua in Resources */, - 15D1FE171998715500302043 /* AudioEngine.lua in Resources */, C03781BB18BF655400FE4F13 /* src in Resources */, - 15AA9636199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */, 5091733817ECE17A00D62437 /* Icon-50.png in Resources */, - 15D1FE081998714100302043 /* extern.lua in Resources */, 5023812117EBBCAC00990C9B /* Icon-72.png in Resources */, - 15AA7D62199B51F000725633 /* tp.lua in Resources */, - 15D1FDFC1998714100302043 /* Cocos2dConstants.lua in Resources */, - 152A3432199CE585004B68DC /* CCBReaderLoad.lua in Resources */, - 15AA9638199B525400725633 /* NetworkConstants.lua in Resources */, - 15AA7D64199B51F000725633 /* url.lua in Resources */, - 152A346A199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */, - 152A346C199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */, C05D1C121923449100B808A4 /* config.json in Resources */, - 15D1FE0E1998714100302043 /* luaoc.lua in Resources */, - 152A3460199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */, - 152A345E199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */, - 15D1FE101998714100302043 /* Opengl.lua in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1117,6 +839,17 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + F405C6CB19ED14AA005AD31C /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + F405C6CA19ED14AA005AD31C /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 5023816917EBBCE400990C9B /* Debug */ = { isa = XCBuildConfiguration; diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/MainMenu.xib b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib similarity index 100% rename from templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/MainMenu.xib rename to templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json index 3b2ca1cb79..3182771c29 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json @@ -14,24 +14,5 @@ } ], "must_copy_resources": [ - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../cocos2d-x/external/lua/luasocket", - "to": "", - "include": [ - "*.lua" - ] - } ] } diff --git a/templates/lua-template-runtime/src/GameScene.lua b/templates/lua-template-runtime/src/GameScene.lua index cd817c5ba0..45c6bdbe06 100644 --- a/templates/lua-template-runtime/src/GameScene.lua +++ b/templates/lua-template-runtime/src/GameScene.lua @@ -1,5 +1,3 @@ -require "Cocos2d" -require "Cocos2dConstants" local GameScene = class("GameScene",function() return cc.Scene:create() diff --git a/templates/lua-template-runtime/src/main.lua b/templates/lua-template-runtime/src/main.lua index 1bd792d84e..adca7b390a 100644 --- a/templates/lua-template-runtime/src/main.lua +++ b/templates/lua-template-runtime/src/main.lua @@ -1,6 +1,9 @@ -require "Cocos2d" -require "extern" +cc.FileUtils:getInstance():addSearchPath("src") +cc.FileUtils:getInstance():addSearchPath("res") + +-- CC_USE_DEPRECATED_API = true +require "cocos.init" -- cclog local cclog = function(...)